maplibre-gl 2.0.5 → 2.1.3

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 (318) 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 +1574 -1022
  15. package/dist/maplibre-gl.js +3 -3
  16. package/dist/maplibre-gl.js.map +1 -1
  17. package/package.json +94 -131
  18. package/src/css/maplibre-gl.css +49 -49
  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 +2 -2
  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 +18 -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 +136 -106
  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 +29 -21
  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/tile_request_cache.ts +3 -3
  303. package/src/util/transferable_grid_index.ts +4 -4
  304. package/src/util/util.ts +8 -8
  305. package/src/util/web_worker.ts +4 -68
  306. package/src/util/web_worker_transfer.test.ts +3 -0
  307. package/src/util/web_worker_transfer.ts +21 -17
  308. package/src/util/worker_pool.ts +1 -1
  309. package/build/.eslintrc +0 -21
  310. package/build/glsl_to_js.js +0 -12
  311. package/build/post-ts-build.js +0 -43
  312. package/build/release-notes.md.ejs +0 -8
  313. package/build/test/build-tape.js +0 -17
  314. package/build/web_worker_replacement.js +0 -5
  315. package/dist/package.json +0 -1
  316. package/src/style-spec/validate_spec.test.ts +0 -29
  317. package/src/symbol/shaping.test.ts +0 -392
  318. package/src/types/glsl.d.ts +0 -4
@@ -19,7 +19,7 @@ import {SIZE_PACK_FACTOR} from './symbol_size';
19
19
  import ONE_EM from './one_em';
20
20
  import type {CanonicalTileID} from '../source/tile_id';
21
21
  import type {Shaping, PositionedIcon, TextJustify} from './shaping';
22
- import type {CollisionBoxArray} from '../data/array_types';
22
+ import type {CollisionBoxArray} from '../data/array_types.g';
23
23
  import type {SymbolFeature} from '../data/bucket/symbol_bucket';
24
24
  import type {StyleImage} from '../style/style_image';
25
25
  import type {StyleGlyph} from '../style/style_glyph';
@@ -46,11 +46,11 @@ import murmur3 from 'murmurhash-js';
46
46
  // (1) and (2) are stored in `bucket.layers[0].layout`. The remainder are below.
47
47
  //
48
48
  type Sizes = {
49
- layoutTextSize: PossiblyEvaluatedPropertyValue<number>; // (3),
50
- layoutIconSize: PossiblyEvaluatedPropertyValue<number>; // (3),
51
- textMaxSize: PossiblyEvaluatedPropertyValue<number>; // (4),
52
- compositeTextSizes: [PossiblyEvaluatedPropertyValue<number>, PossiblyEvaluatedPropertyValue<number>]; // (5),
53
- compositeIconSizes: [PossiblyEvaluatedPropertyValue<number>, PossiblyEvaluatedPropertyValue<number>]; // (5)
49
+ layoutTextSize: PossiblyEvaluatedPropertyValue<number>; // (3),
50
+ layoutIconSize: PossiblyEvaluatedPropertyValue<number>; // (3),
51
+ textMaxSize: PossiblyEvaluatedPropertyValue<number>; // (4),
52
+ compositeTextSizes: [PossiblyEvaluatedPropertyValue<number>, PossiblyEvaluatedPropertyValue<number>]; // (5),
53
+ compositeIconSizes: [PossiblyEvaluatedPropertyValue<number>, PossiblyEvaluatedPropertyValue<number>]; // (5)
54
54
  };
55
55
 
56
56
  type ShapedTextOrientations = {
@@ -76,37 +76,37 @@ export function evaluateVariableOffset(anchor: TextAnchor, offset: [number, numb
76
76
  // solve for r where r^2 + r^2 = radialOffset^2
77
77
  const hypotenuse = radialOffset / Math.sqrt(2);
78
78
  switch (anchor) {
79
- case 'top-right':
80
- case 'top-left':
81
- y = hypotenuse - baselineOffset;
82
- break;
83
- case 'bottom-right':
84
- case 'bottom-left':
85
- y = -hypotenuse + baselineOffset;
86
- break;
87
- case 'bottom':
88
- y = -radialOffset + baselineOffset;
89
- break;
90
- case 'top':
91
- y = radialOffset - baselineOffset;
92
- break;
79
+ case 'top-right':
80
+ case 'top-left':
81
+ y = hypotenuse - baselineOffset;
82
+ break;
83
+ case 'bottom-right':
84
+ case 'bottom-left':
85
+ y = -hypotenuse + baselineOffset;
86
+ break;
87
+ case 'bottom':
88
+ y = -radialOffset + baselineOffset;
89
+ break;
90
+ case 'top':
91
+ y = radialOffset - baselineOffset;
92
+ break;
93
93
  }
94
94
 
95
95
  switch (anchor) {
96
- case 'top-right':
97
- case 'bottom-right':
98
- x = -hypotenuse;
99
- break;
100
- case 'top-left':
101
- case 'bottom-left':
102
- x = hypotenuse;
103
- break;
104
- case 'left':
105
- x = radialOffset;
106
- break;
107
- case 'right':
108
- x = -radialOffset;
109
- break;
96
+ case 'top-right':
97
+ case 'bottom-right':
98
+ x = -hypotenuse;
99
+ break;
100
+ case 'top-left':
101
+ case 'bottom-left':
102
+ x = hypotenuse;
103
+ break;
104
+ case 'left':
105
+ x = radialOffset;
106
+ break;
107
+ case 'right':
108
+ x = -radialOffset;
109
+ break;
110
110
  }
111
111
 
112
112
  return [x, y];
@@ -119,29 +119,29 @@ export function evaluateVariableOffset(anchor: TextAnchor, offset: [number, numb
119
119
  offsetY = Math.abs(offsetY);
120
120
 
121
121
  switch (anchor) {
122
- case 'top-right':
123
- case 'top-left':
124
- case 'top':
125
- y = offsetY - baselineOffset;
126
- break;
127
- case 'bottom-right':
128
- case 'bottom-left':
129
- case 'bottom':
130
- y = -offsetY + baselineOffset;
131
- break;
122
+ case 'top-right':
123
+ case 'top-left':
124
+ case 'top':
125
+ y = offsetY - baselineOffset;
126
+ break;
127
+ case 'bottom-right':
128
+ case 'bottom-left':
129
+ case 'bottom':
130
+ y = -offsetY + baselineOffset;
131
+ break;
132
132
  }
133
133
 
134
134
  switch (anchor) {
135
- case 'top-right':
136
- case 'bottom-right':
137
- case 'right':
138
- x = -offsetX;
139
- break;
140
- case 'top-left':
141
- case 'bottom-left':
142
- case 'left':
143
- x = offsetX;
144
- break;
135
+ case 'top-right':
136
+ case 'bottom-right':
137
+ case 'right':
138
+ x = -offsetX;
139
+ break;
140
+ case 'top-left':
141
+ case 'bottom-left':
142
+ case 'left':
143
+ x = offsetX;
144
+ break;
145
145
  }
146
146
 
147
147
  return [x, y];
@@ -255,7 +255,7 @@ export function performSymbolLayout(
255
255
  // writing mode, thus, default left justification is used. If Latin
256
256
  // scripts would need to be supported, this should take into account other justifications.
257
257
  shapedTextOrientations.vertical = shapeText(text, glyphMap, glyphPositions, imagePositions, fontstack, maxWidth, lineHeight, textAnchor,
258
- 'left', spacingIfAllowed, textOffset, WritingMode.vertical, true, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);
258
+ 'left', spacingIfAllowed, textOffset, WritingMode.vertical, true, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);
259
259
  }
260
260
  };
261
261
 
@@ -277,7 +277,7 @@ export function performSymbolLayout(
277
277
  // If using text-variable-anchor for the layer, we use a center anchor for all shapings and apply
278
278
  // the offsets for the anchor in the placement step.
279
279
  const shaping = shapeText(text, glyphMap, glyphPositions, imagePositions, fontstack, maxWidth, lineHeight, 'center',
280
- justification, spacingIfAllowed, textOffset, WritingMode.horizontal, false, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);
280
+ justification, spacingIfAllowed, textOffset, WritingMode.horizontal, false, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);
281
281
  if (shaping) {
282
282
  shapedTextOrientations.horizontal[justification] = shaping;
283
283
  singleLine = shaping.positionedLines.length === 1;
@@ -293,7 +293,7 @@ export function performSymbolLayout(
293
293
 
294
294
  // Horizontal point or line label.
295
295
  const shaping = shapeText(text, glyphMap, glyphPositions, imagePositions, fontstack, maxWidth, lineHeight, textAnchor, textJustify, spacingIfAllowed,
296
- textOffset, WritingMode.horizontal, false, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);
296
+ textOffset, WritingMode.horizontal, false, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);
297
297
  if (shaping) shapedTextOrientations.horizontal[textJustify] = shaping;
298
298
 
299
299
  // Vertical point label (if allowVerticalPlacement is enabled).
@@ -302,7 +302,7 @@ export function performSymbolLayout(
302
302
  // Verticalized line label.
303
303
  if (allowsVerticalWritingMode(unformattedText) && textAlongLine && keepUpright) {
304
304
  shapedTextOrientations.vertical = shapeText(text, glyphMap, glyphPositions, imagePositions, fontstack, maxWidth, lineHeight, textAnchor, textJustify,
305
- spacingIfAllowed, textOffset, WritingMode.vertical, false, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);
305
+ spacingIfAllowed, textOffset, WritingMode.vertical, false, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);
306
306
  }
307
307
  }
308
308
  }
@@ -346,14 +346,14 @@ export function performSymbolLayout(
346
346
  // Choose the justification that matches the direction of the TextAnchor
347
347
  export function getAnchorJustification(anchor: TextAnchor): TextJustify {
348
348
  switch (anchor) {
349
- case 'right':
350
- case 'top-right':
351
- case 'bottom-right':
352
- return 'right';
353
- case 'left':
354
- case 'top-left':
355
- case 'bottom-left':
356
- return 'left';
349
+ case 'right':
350
+ case 'top-right':
351
+ case 'bottom-right':
352
+ return 'right';
353
+ case 'left':
354
+ case 'top-left':
355
+ case 'bottom-left':
356
+ return 'left';
357
357
  }
358
358
  return 'center';
359
359
  }
@@ -366,15 +366,15 @@ export function getAnchorJustification(anchor: TextAnchor): TextJustify {
366
366
  * @private
367
367
  */
368
368
  function addFeature(bucket: SymbolBucket,
369
- feature: SymbolFeature,
370
- shapedTextOrientations: ShapedTextOrientations,
371
- shapedIcon: PositionedIcon,
372
- imageMap: {[_: string]: StyleImage},
373
- sizes: Sizes,
374
- layoutTextSize: number,
375
- layoutIconSize: number,
376
- textOffset: [number, number],
377
- isSDFIcon: boolean, canonical: CanonicalTileID) {
369
+ feature: SymbolFeature,
370
+ shapedTextOrientations: ShapedTextOrientations,
371
+ shapedIcon: PositionedIcon,
372
+ imageMap: {[_: string]: StyleImage},
373
+ sizes: Sizes,
374
+ layoutTextSize: number,
375
+ layoutIconSize: number,
376
+ textOffset: [number, number],
377
+ isSDFIcon: boolean, canonical: CanonicalTileID) {
378
378
  // To reduce the number of labels that jump around when zooming we need
379
379
  // to use a text-size value that is the same for all zoom levels.
380
380
  // bucket calculates text-size at a high zoom level so that all tiles can
@@ -410,7 +410,7 @@ function addFeature(bucket: SymbolBucket,
410
410
  }
411
411
  if (defaultHorizontalShaping) {
412
412
  shapedIcon = fitIconToText(shapedIcon, defaultHorizontalShaping, iconTextFit,
413
- layout.get('icon-text-fit-padding'), iconOffset, fontScale);
413
+ layout.get('icon-text-fit-padding'), iconOffset, fontScale);
414
414
  }
415
415
  }
416
416
 
@@ -491,25 +491,25 @@ const MAX_PACKED_SIZE = MAX_GLYPH_ICON_SIZE * SIZE_PACK_FACTOR;
491
491
  export {MAX_PACKED_SIZE};
492
492
 
493
493
  function addTextVertices(bucket: SymbolBucket,
494
- anchor: Point,
495
- shapedText: Shaping,
496
- imageMap: {[_: string]: StyleImage},
497
- layer: SymbolStyleLayer,
498
- textAlongLine: boolean,
499
- feature: SymbolFeature,
500
- textOffset: [number, number],
501
- lineArray: {
502
- lineStartIndex: number;
503
- lineLength: number;
504
- },
505
- writingMode: WritingMode,
506
- placementTypes: Array<'vertical' | 'center' | 'left' | 'right'>,
507
- placedTextSymbolIndices: {[_: string]: number},
508
- placedIconIndex: number,
509
- sizes: Sizes,
510
- canonical: CanonicalTileID) {
494
+ anchor: Point,
495
+ shapedText: Shaping,
496
+ imageMap: {[_: string]: StyleImage},
497
+ layer: SymbolStyleLayer,
498
+ textAlongLine: boolean,
499
+ feature: SymbolFeature,
500
+ textOffset: [number, number],
501
+ lineArray: {
502
+ lineStartIndex: number;
503
+ lineLength: number;
504
+ },
505
+ writingMode: WritingMode,
506
+ placementTypes: Array<'vertical' | 'center' | 'left' | 'right'>,
507
+ placedTextSymbolIndices: {[_: string]: number},
508
+ placedIconIndex: number,
509
+ sizes: Sizes,
510
+ canonical: CanonicalTileID) {
511
511
  const glyphQuads = getGlyphQuads(anchor, shapedText, textOffset,
512
- layer, textAlongLine, feature, imageMap, bucket.allowVerticalPlacement);
512
+ layer, textAlongLine, feature, imageMap, bucket.allowVerticalPlacement);
513
513
 
514
514
  const sizeData = bucket.textSizeData;
515
515
  let textSizeData = null;
@@ -555,7 +555,7 @@ function addTextVertices(bucket: SymbolBucket,
555
555
  }
556
556
 
557
557
  function getDefaultHorizontalShaping(
558
- horizontalShaping: Record<TextJustify, Shaping>
558
+ horizontalShaping: Record<TextJustify, Shaping>
559
559
  ): Shaping | null {
560
560
  // We don't care which shaping we get because this is used for collision purposes
561
561
  // and all the justifications have the same collision box
@@ -571,30 +571,30 @@ function getDefaultHorizontalShaping(
571
571
  * @private
572
572
  */
573
573
  function addSymbol(bucket: SymbolBucket,
574
- anchor: Anchor,
575
- line: Array<Point>,
576
- shapedTextOrientations: ShapedTextOrientations,
577
- shapedIcon: PositionedIcon | void,
578
- imageMap: {[_: string]: StyleImage},
579
- verticallyShapedIcon: PositionedIcon | void,
580
- layer: SymbolStyleLayer,
581
- collisionBoxArray: CollisionBoxArray,
582
- featureIndex: number,
583
- sourceLayerIndex: number,
584
- bucketIndex: number,
585
- textBoxScale: number,
586
- textPadding: number,
587
- textAlongLine: boolean,
588
- textOffset: [number, number],
589
- iconBoxScale: number,
590
- iconPadding: number,
591
- iconAlongLine: boolean,
592
- iconOffset: [number, number],
593
- feature: SymbolFeature,
594
- sizes: Sizes,
595
- isSDFIcon: boolean,
596
- canonical: CanonicalTileID,
597
- layoutTextSize: number) {
574
+ anchor: Anchor,
575
+ line: Array<Point>,
576
+ shapedTextOrientations: ShapedTextOrientations,
577
+ shapedIcon: PositionedIcon | void,
578
+ imageMap: {[_: string]: StyleImage},
579
+ verticallyShapedIcon: PositionedIcon | void,
580
+ layer: SymbolStyleLayer,
581
+ collisionBoxArray: CollisionBoxArray,
582
+ featureIndex: number,
583
+ sourceLayerIndex: number,
584
+ bucketIndex: number,
585
+ textBoxScale: number,
586
+ textPadding: number,
587
+ textAlongLine: boolean,
588
+ textOffset: [number, number],
589
+ iconBoxScale: number,
590
+ iconPadding: number,
591
+ iconAlongLine: boolean,
592
+ iconOffset: [number, number],
593
+ feature: SymbolFeature,
594
+ sizes: Sizes,
595
+ isSDFIcon: boolean,
596
+ canonical: CanonicalTileID,
597
+ layoutTextSize: number) {
598
598
  const lineArray = bucket.addToLineVertexArray(anchor, line);
599
599
 
600
600
  let textCollisionFeature, iconCollisionFeature, verticalTextCollisionFeature, verticalIconCollisionFeature;
@@ -11,29 +11,29 @@ const SIZE_PACK_FACTOR = 128;
11
11
  export {getSizeData, evaluateSizeForFeature, evaluateSizeForZoom, SIZE_PACK_FACTOR};
12
12
 
13
13
  export type SizeData = {
14
- kind: 'constant';
15
- layoutSize: number;
14
+ kind: 'constant';
15
+ layoutSize: number;
16
16
  } | {
17
- kind: 'source';
17
+ kind: 'source';
18
18
  } | {
19
- kind: 'camera';
20
- minZoom: number;
21
- maxZoom: number;
22
- minSize: number;
23
- maxSize: number;
24
- interpolationType: InterpolationType;
19
+ kind: 'camera';
20
+ minZoom: number;
21
+ maxZoom: number;
22
+ minSize: number;
23
+ maxSize: number;
24
+ interpolationType: InterpolationType;
25
25
  } | {
26
- kind: 'composite';
27
- minZoom: number;
28
- maxZoom: number;
29
- interpolationType: InterpolationType;
26
+ kind: 'composite';
27
+ minZoom: number;
28
+ maxZoom: number;
29
+ interpolationType: InterpolationType;
30
30
  };
31
31
 
32
32
  // For {text,icon}-size, get the bucket-level data that will be needed by
33
33
  // the painter to set symbol-size-related uniforms
34
34
  function getSizeData(
35
- tileZoom: number,
36
- value: PropertyValue<number, PossiblyEvaluatedPropertyValue<number>>
35
+ tileZoom: number,
36
+ value: PropertyValue<number, PossiblyEvaluatedPropertyValue<number>>
37
37
  ): SizeData {
38
38
  const {expression} = value;
39
39
 
@@ -75,20 +75,20 @@ function getSizeData(
75
75
  }
76
76
 
77
77
  function evaluateSizeForFeature(sizeData: SizeData,
78
- {
79
- uSize,
80
- uSizeT
81
- }: {
82
- uSize: number;
83
- uSizeT: number;
84
- },
85
- {
86
- lowerSize,
87
- upperSize
88
- }: {
89
- lowerSize: number;
90
- upperSize: number;
91
- }) {
78
+ {
79
+ uSize,
80
+ uSizeT
81
+ }: {
82
+ uSize: number;
83
+ uSizeT: number;
84
+ },
85
+ {
86
+ lowerSize,
87
+ upperSize
88
+ }: {
89
+ lowerSize: number;
90
+ upperSize: number;
91
+ }) {
92
92
  if (sizeData.kind === 'source') {
93
93
  return lowerSize / SIZE_PACK_FACTOR;
94
94
  } else if (sizeData.kind === 'composite') {
@@ -1,6 +1,6 @@
1
- import SymbolStyleLayer from '../style/style_layer/symbol_style_layer';
1
+ import SymbolStyleLayer, {getOverlapMode} from '../style/style_layer/symbol_style_layer';
2
2
  import FormatSectionOverride from '../style/format_section_override';
3
- import properties, {SymbolPaintPropsPossiblyEvaluated} from '../style/style_layer/symbol_style_layer_properties';
3
+ import properties, {SymbolPaintPropsPossiblyEvaluated} from '../style/style_layer/symbol_style_layer_properties.g';
4
4
  import ZoomHistory from '../style/zoom_history';
5
5
  import EvaluationParameters from '../style/evaluation_parameters';
6
6
 
@@ -101,3 +101,50 @@ describe('hasPaintOverrides', () => {
101
101
  });
102
102
 
103
103
  });
104
+
105
+ describe('getOverlapMode', () => {
106
+ test('defaults - no props set', () => {
107
+ const props = {};
108
+ const layer = createSymbolLayer(props);
109
+
110
+ expect(getOverlapMode(layer.layout, 'icon-overlap', 'icon-allow-overlap')).toBe('never');
111
+ expect(getOverlapMode(layer.layout, 'text-overlap', 'text-allow-overlap')).toBe('never');
112
+ });
113
+
114
+ test('-allow-overlap set', () => {
115
+ const props = {layout: {'icon-allow-overlap': false, 'text-allow-overlap': true}};
116
+ const layer = createSymbolLayer(props);
117
+
118
+ expect(getOverlapMode(layer.layout, 'icon-overlap', 'icon-allow-overlap')).toBe('never');
119
+ expect(getOverlapMode(layer.layout, 'text-overlap', 'text-allow-overlap')).toBe('always');
120
+ });
121
+
122
+ test('-overlap set', () => {
123
+ let props = {layout: {'icon-overlap': 'never', 'text-overlap': 'always'}};
124
+ let layer = createSymbolLayer(props);
125
+
126
+ expect(getOverlapMode(layer.layout, 'icon-overlap', 'icon-allow-overlap')).toBe('never');
127
+ expect(getOverlapMode(layer.layout, 'text-overlap', 'text-allow-overlap')).toBe('always');
128
+
129
+ props = {layout: {'icon-overlap': 'always', 'text-overlap': 'cooperative'}};
130
+ layer = createSymbolLayer(props);
131
+
132
+ expect(getOverlapMode(layer.layout, 'icon-overlap', 'icon-allow-overlap')).toBe('always');
133
+ expect(getOverlapMode(layer.layout, 'text-overlap', 'text-allow-overlap')).toBe('cooperative');
134
+ });
135
+
136
+ test('-overlap beats -allow-overlap', () => {
137
+ const props = {
138
+ layout: {
139
+ 'icon-overlap': 'never',
140
+ 'icon-allow-overlap': true,
141
+ 'text-overlap': 'cooperative',
142
+ 'text-allow-overlap': false
143
+ }
144
+ };
145
+ const layer = createSymbolLayer(props);
146
+
147
+ expect(getOverlapMode(layer.layout, 'icon-overlap', 'icon-allow-overlap')).toBe('never');
148
+ expect(getOverlapMode(layer.layout, 'text-overlap', 'text-allow-overlap')).toBe('cooperative');
149
+ });
150
+ });
@@ -1,3 +1,3 @@
1
1
  export type Cancelable = {
2
- cancel: () => void;
2
+ cancel: () => void;
3
3
  };
@@ -1,15 +1,15 @@
1
1
  export type TileJSON = {
2
- tilejson: '2.2.0' | '2.1.0' | '2.0.1' | '2.0.0' | '1.0.0';
3
- name?: string;
4
- description?: string;
5
- version?: string;
6
- attribution?: string;
7
- template?: string;
8
- tiles: Array<string>;
9
- grids?: Array<string>;
10
- data?: Array<string>;
11
- minzoom?: number;
12
- maxzoom?: number;
13
- bounds?: [number, number, number, number];
14
- center?: [number, number, number];
2
+ tilejson: '2.2.0' | '2.1.0' | '2.0.1' | '2.0.0' | '1.0.0';
3
+ name?: string;
4
+ description?: string;
5
+ version?: string;
6
+ attribution?: string;
7
+ template?: string;
8
+ tiles: Array<string>;
9
+ grids?: Array<string>;
10
+ data?: Array<string>;
11
+ minzoom?: number;
12
+ maxzoom?: number;
13
+ bounds?: [number, number, number, number];
14
+ center?: [number, number, number];
15
15
  };
package/src/ui/anchor.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export type PositionAnchor = 'center' | 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
2
2
 
3
3
  export const anchorTranslate: {
4
- [_ in PositionAnchor]: string;
4
+ [_ in PositionAnchor]: string;
5
5
  } = {
6
6
  'center': 'translate(-50%,-50%)',
7
7
  'top': 'translate(-50%,0)',
@@ -2,7 +2,7 @@ import Camera from '../ui/camera';
2
2
  import Transform from '../geo/transform';
3
3
  import TaskQueue, {TaskID} from '../util/task_queue';
4
4
  import browser from '../util/browser';
5
- import {fixedLngLat, fixedNum} from '../../test/util/fixed';
5
+ import {fixedLngLat, fixedNum} from '../../test/unit/lib/fixed';
6
6
  import {setMatchMedia} from '../util/test/util';
7
7
 
8
8
  beforeEach(() => {
@@ -747,8 +747,8 @@ describe('#easeTo', () => {
747
747
  });
748
748
 
749
749
  camera.easeTo(
750
- {center: [100, 0], zoom: 3.2, bearing: 90, duration: 0, pitch: 45},
751
- eventData);
750
+ {center: [100, 0], zoom: 3.2, bearing: 90, duration: 0, pitch: 45},
751
+ eventData);
752
752
  done();
753
753
  });
754
754
 
@@ -756,9 +756,9 @@ describe('#easeTo', () => {
756
756
  const camera = createCamera();
757
757
 
758
758
  camera
759
- .on('zoomstart', () => { fail(); })
760
- .on('zoom', () => { fail(); })
761
- .on('zoomend', () => { fail(); })
759
+ .on('zoomstart', () => { done('zoomstart failed'); })
760
+ .on('zoom', () => { done('zoom failed'); })
761
+ .on('zoomend', () => { done('zoomend failed'); })
762
762
  .on('moveend', () => { done(); });
763
763
 
764
764
  camera.easeTo({center: [100, 0], duration: 0});
@@ -1091,8 +1091,8 @@ describe('#flyTo', () => {
1091
1091
  });
1092
1092
 
1093
1093
  camera.flyTo(
1094
- {center: [100, 0], zoom: 3.2, bearing: 90, duration: 0, pitch: 45, animate: false},
1095
- eventData);
1094
+ {center: [100, 0], zoom: 3.2, bearing: 90, duration: 0, pitch: 45, animate: false},
1095
+ eventData);
1096
1096
  done();
1097
1097
  });
1098
1098
 
@@ -1545,7 +1545,7 @@ describe('#flyTo', () => {
1545
1545
  .on('moveend', () => {
1546
1546
  endTime = new Date();
1547
1547
  timeDiff = endTime - startTime;
1548
- expect(timeDiff).toBeLessThan(10);
1548
+ expect(timeDiff).toBeLessThan(30);
1549
1549
  done();
1550
1550
  });
1551
1551