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
@@ -11,7 +11,7 @@ import type {
11
11
  GlyphOffsetArray,
12
12
  SymbolLineVertexArray,
13
13
  SymbolDynamicLayoutArray
14
- } from '../data/array_types';
14
+ } from '../data/array_types.g';
15
15
  import {WritingMode} from '../symbol/shaping';
16
16
 
17
17
  export {updateLineLabels, hideGlyphs, getLabelPlaneMatrix, getGlCoordMatrix, project, getPerspectiveRatio, placeFirstAndLastGlyph, placeGlyphAlongLine, xyTransformMat4};
@@ -65,10 +65,10 @@ export {updateLineLabels, hideGlyphs, getLabelPlaneMatrix, getGlCoordMatrix, pro
65
65
  * Returns a matrix for converting from tile units to the correct label coordinate space.
66
66
  */
67
67
  function getLabelPlaneMatrix(posMatrix: mat4,
68
- pitchWithMap: boolean,
69
- rotateWithMap: boolean,
70
- transform: Transform,
71
- pixelsToTileUnits: number) {
68
+ pitchWithMap: boolean,
69
+ rotateWithMap: boolean,
70
+ transform: Transform,
71
+ pixelsToTileUnits: number) {
72
72
  const m = mat4.create();
73
73
  if (pitchWithMap) {
74
74
  mat4.scale(m, m, [1 / pixelsToTileUnits, 1 / pixelsToTileUnits, 1]);
@@ -85,10 +85,10 @@ function getLabelPlaneMatrix(posMatrix: mat4,
85
85
  * Returns a matrix for converting from the correct label coordinate space to gl coords.
86
86
  */
87
87
  function getGlCoordMatrix(posMatrix: mat4,
88
- pitchWithMap: boolean,
89
- rotateWithMap: boolean,
90
- transform: Transform,
91
- pixelsToTileUnits: number) {
88
+ pitchWithMap: boolean,
89
+ rotateWithMap: boolean,
90
+ transform: Transform,
91
+ pixelsToTileUnits: number) {
92
92
  if (pitchWithMap) {
93
93
  const m = mat4.clone(posMatrix);
94
94
  mat4.scale(m, m, [pixelsToTileUnits, pixelsToTileUnits, 1]);
@@ -116,7 +116,7 @@ function getPerspectiveRatio(cameraToCenterDistance: number, signedDistanceFromC
116
116
  }
117
117
 
118
118
  function isVisible(anchorPos: vec4,
119
- clippingBuffer: [number, number]) {
119
+ clippingBuffer: [number, number]) {
120
120
  const x = anchorPos[0] / anchorPos[3];
121
121
  const y = anchorPos[1] / anchorPos[3];
122
122
  const inPaddedViewport = (
@@ -132,13 +132,13 @@ function isVisible(anchorPos: vec4,
132
132
  * This is only run on labels that are aligned with lines. Horizontal labels are handled entirely in the shader.
133
133
  */
134
134
  function updateLineLabels(bucket: SymbolBucket,
135
- posMatrix: mat4,
136
- painter: Painter,
137
- isText: boolean,
138
- labelPlaneMatrix: mat4,
139
- glCoordMatrix: mat4,
140
- pitchWithMap: boolean,
141
- keepUpright: boolean) {
135
+ posMatrix: mat4,
136
+ painter: Painter,
137
+ isText: boolean,
138
+ labelPlaneMatrix: mat4,
139
+ glCoordMatrix: mat4,
140
+ pitchWithMap: boolean,
141
+ keepUpright: boolean) {
142
142
 
143
143
  const sizeData = isText ? bucket.textSizeData : bucket.iconSizeData;
144
144
  const partiallyEvaluatedSize = symbolSize.evaluateSizeForZoom(sizeData, painter.transform.zoom);
@@ -334,19 +334,19 @@ function projectTruncatedLineSegment(previousTilePoint: Point, currentTilePoint:
334
334
  }
335
335
 
336
336
  function placeGlyphAlongLine(offsetX: number,
337
- lineOffsetX: number,
338
- lineOffsetY: number,
339
- flip: boolean,
340
- anchorPoint: Point,
341
- tileAnchorPoint: Point,
342
- anchorSegment: number,
343
- lineStartIndex: number,
344
- lineEndIndex: number,
345
- lineVertexArray: SymbolLineVertexArray,
346
- labelPlaneMatrix: mat4,
347
- projectionCache: {
348
- [_: number]: Point;
349
- }) {
337
+ lineOffsetX: number,
338
+ lineOffsetY: number,
339
+ flip: boolean,
340
+ anchorPoint: Point,
341
+ tileAnchorPoint: Point,
342
+ anchorSegment: number,
343
+ lineStartIndex: number,
344
+ lineEndIndex: number,
345
+ lineVertexArray: SymbolLineVertexArray,
346
+ labelPlaneMatrix: mat4,
347
+ projectionCache: {
348
+ [_: number]: Point;
349
+ }) {
350
350
 
351
351
  const combinedOffsetX = flip ?
352
352
  offsetX - lineOffsetX :
@@ -26,24 +26,24 @@ import {Rect} from '../render/glyph_atlas';
26
26
  * @private
27
27
  */
28
28
  export type SymbolQuad = {
29
- tl: Point;
30
- tr: Point;
31
- bl: Point;
32
- br: Point;
33
- tex: {
34
- x: number;
35
- y: number;
36
- w: number;
37
- h: number;
38
- };
39
- pixelOffsetTL: Point;
40
- pixelOffsetBR: Point;
41
- writingMode: any | void;
42
- glyphOffset: [number, number];
43
- sectionIndex: number;
44
- isSDF: boolean;
45
- minFontScaleX: number;
46
- minFontScaleY: number;
29
+ tl: Point;
30
+ tr: Point;
31
+ bl: Point;
32
+ br: Point;
33
+ tex: {
34
+ x: number;
35
+ y: number;
36
+ w: number;
37
+ h: number;
38
+ };
39
+ pixelOffsetTL: Point;
40
+ pixelOffsetBR: Point;
41
+ writingMode: any | void;
42
+ glyphOffset: [number, number];
43
+ sectionIndex: number;
44
+ isSDF: boolean;
45
+ minFontScaleX: number;
46
+ minFontScaleY: number;
47
47
  };
48
48
 
49
49
  // If you have a 10px icon that isn't perfectly aligned to the pixel grid it will cover 11 actual
@@ -56,10 +56,10 @@ const border = IMAGE_PADDING;
56
56
  * @private
57
57
  */
58
58
  export function getIconQuads(
59
- shapedIcon: PositionedIcon,
60
- iconRotate: number,
61
- isSDFIcon: boolean,
62
- hasIconTextFit: boolean
59
+ shapedIcon: PositionedIcon,
60
+ iconRotate: number,
61
+ isSDFIcon: boolean,
62
+ hasIconTextFit: boolean
63
63
  ): Array<SymbolQuad> {
64
64
  const quads = [];
65
65
 
@@ -220,14 +220,14 @@ function getPxOffset(fixedOffset, fixedSize, stretchOffset, stretchSize) {
220
220
  * @private
221
221
  */
222
222
  export function getGlyphQuads(
223
- anchor: Anchor,
224
- shaping: Shaping,
225
- textOffset: [number, number],
226
- layer: SymbolStyleLayer,
227
- alongLine: boolean,
228
- feature: Feature,
229
- imageMap: {[_: string]: StyleImage},
230
- allowVerticalPlacement: boolean
223
+ anchor: Anchor,
224
+ shaping: Shaping,
225
+ textOffset: [number, number],
226
+ layer: SymbolStyleLayer,
227
+ alongLine: boolean,
228
+ feature: Feature,
229
+ imageMap: {[_: string]: StyleImage},
230
+ allowVerticalPlacement: boolean
231
231
  ): Array<SymbolQuad> {
232
232
 
233
233
  const textRotate = layer.layout.get('text-rotate').evaluate(feature, {}) * Math.PI / 180;
@@ -28,34 +28,34 @@ export {shapeText, shapeIcon, fitIconToText, getAnchorAlignment, WritingMode, SH
28
28
 
29
29
  // The position of a glyph relative to the text's anchor point.
30
30
  export type PositionedGlyph = {
31
- glyph: number;
32
- imageName: string | null;
33
- x: number;
34
- y: number;
35
- vertical: boolean;
36
- scale: number;
37
- fontStack: string;
38
- sectionIndex: number;
39
- metrics: GlyphMetrics;
40
- rect: Rect | null;
31
+ glyph: number;
32
+ imageName: string | null;
33
+ x: number;
34
+ y: number;
35
+ vertical: boolean;
36
+ scale: number;
37
+ fontStack: string;
38
+ sectionIndex: number;
39
+ metrics: GlyphMetrics;
40
+ rect: Rect | null;
41
41
  };
42
42
 
43
43
  export type PositionedLine = {
44
- positionedGlyphs: Array<PositionedGlyph>;
45
- lineOffset: number;
44
+ positionedGlyphs: Array<PositionedGlyph>;
45
+ lineOffset: number;
46
46
  };
47
47
 
48
48
  // A collection of positioned glyphs and some metadata
49
49
  export type Shaping = {
50
- positionedLines: Array<PositionedLine>;
51
- top: number;
52
- bottom: number;
53
- left: number;
54
- right: number;
55
- writingMode: WritingMode.horizontal | WritingMode.vertical;
56
- text: string;
57
- iconsInText: boolean;
58
- verticalizable: boolean;
50
+ positionedLines: Array<PositionedLine>;
51
+ top: number;
52
+ bottom: number;
53
+ left: number;
54
+ right: number;
55
+ writingMode: WritingMode.horizontal | WritingMode.vertical;
56
+ text: string;
57
+ iconsInText: boolean;
58
+ verticalizable: boolean;
59
59
  };
60
60
 
61
61
  function isEmpty(positionedLines: Array<PositionedLine>) {
@@ -236,30 +236,30 @@ function breakLines(input: TaggedString, lineBreakPoints: Array<number>): Array<
236
236
  }
237
237
 
238
238
  function shapeText(
239
- text: Formatted,
240
- glyphMap: {
241
- [_: string]: {
242
- [_: number]: StyleGlyph;
243
- };
244
- },
245
- glyphPositions: {
246
- [_: string]: {
247
- [_: number]: GlyphPosition;
248
- };
249
- },
250
- imagePositions: {[_: string]: ImagePosition},
251
- defaultFontStack: string,
252
- maxWidth: number,
253
- lineHeight: number,
254
- textAnchor: SymbolAnchor,
255
- textJustify: TextJustify,
256
- spacing: number,
257
- translate: [number, number],
258
- writingMode: WritingMode.horizontal | WritingMode.vertical,
259
- allowVerticalPlacement: boolean,
260
- symbolPlacement: string,
261
- layoutTextSize: number,
262
- layoutTextSizeThisZoom: number
239
+ text: Formatted,
240
+ glyphMap: {
241
+ [_: string]: {
242
+ [_: number]: StyleGlyph;
243
+ };
244
+ },
245
+ glyphPositions: {
246
+ [_: string]: {
247
+ [_: number]: GlyphPosition;
248
+ };
249
+ },
250
+ imagePositions: {[_: string]: ImagePosition},
251
+ defaultFontStack: string,
252
+ maxWidth: number,
253
+ lineHeight: number,
254
+ textAnchor: SymbolAnchor,
255
+ textJustify: TextJustify,
256
+ spacing: number,
257
+ translate: [number, number],
258
+ writingMode: WritingMode.horizontal | WritingMode.vertical,
259
+ allowVerticalPlacement: boolean,
260
+ symbolPlacement: string,
261
+ layoutTextSize: number,
262
+ layoutTextSizeThisZoom: number
263
263
  ): Shaping | false {
264
264
  const logicalInput = TaggedString.fromFeature(text, defaultFontStack);
265
265
 
@@ -275,7 +275,7 @@ function shapeText(
275
275
  lines = [];
276
276
  const untaggedLines =
277
277
  processBidirectionalText(logicalInput.toString(),
278
- determineLineBreaks(logicalInput, spacing, maxWidth, glyphMap, imagePositions, symbolPlacement, layoutTextSize));
278
+ determineLineBreaks(logicalInput, spacing, maxWidth, glyphMap, imagePositions, symbolPlacement, layoutTextSize));
279
279
  for (const line of untaggedLines) {
280
280
  const taggedLine = new TaggedString();
281
281
  taggedLine.text = line;
@@ -291,8 +291,8 @@ function shapeText(
291
291
  lines = [];
292
292
  const processedLines =
293
293
  processStyledBidirectionalText(logicalInput.text,
294
- logicalInput.sectionIndex,
295
- determineLineBreaks(logicalInput, spacing, maxWidth, glyphMap, imagePositions, symbolPlacement, layoutTextSize));
294
+ logicalInput.sectionIndex,
295
+ determineLineBreaks(logicalInput, spacing, maxWidth, glyphMap, imagePositions, symbolPlacement, layoutTextSize));
296
296
  for (const line of processedLines) {
297
297
  const taggedLine = new TaggedString();
298
298
  taggedLine.text = line[0];
@@ -327,7 +327,7 @@ function shapeText(
327
327
  /* eslint no-useless-computed-key: 0 */
328
328
 
329
329
  const whitespace: {
330
- [_: number]: boolean;
330
+ [_: number]: boolean;
331
331
  } = {
332
332
  [0x09]: true, // tab
333
333
  [0x0a]: true, // newline
@@ -338,7 +338,7 @@ const whitespace: {
338
338
  };
339
339
 
340
340
  const breakable: {
341
- [_: number]: boolean;
341
+ [_: number]: boolean;
342
342
  } = {
343
343
  [0x0a]: true, // newline
344
344
  [0x20]: true, // space
@@ -360,16 +360,16 @@ const breakable: {
360
360
  };
361
361
 
362
362
  function getGlyphAdvance(
363
- codePoint: number,
364
- section: SectionOptions,
365
- glyphMap: {
366
- [_: string]: {
367
- [_: number]: StyleGlyph;
368
- };
369
- },
370
- imagePositions: {[_: string]: ImagePosition},
371
- spacing: number,
372
- layoutTextSize: number
363
+ codePoint: number,
364
+ section: SectionOptions,
365
+ glyphMap: {
366
+ [_: string]: {
367
+ [_: number]: StyleGlyph;
368
+ };
369
+ },
370
+ imagePositions: {[_: string]: ImagePosition},
371
+ spacing: number,
372
+ layoutTextSize: number
373
373
  ): number {
374
374
  if (!section.imageName) {
375
375
  const positions = glyphMap[section.fontStack];
@@ -384,15 +384,15 @@ function getGlyphAdvance(
384
384
  }
385
385
 
386
386
  function determineAverageLineWidth(logicalInput: TaggedString,
387
- spacing: number,
388
- maxWidth: number,
389
- glyphMap: {
390
- [_: string]: {
391
- [_: number]: StyleGlyph;
392
- };
393
- },
394
- imagePositions: {[_: string]: ImagePosition},
395
- layoutTextSize: number) {
387
+ spacing: number,
388
+ maxWidth: number,
389
+ glyphMap: {
390
+ [_: string]: {
391
+ [_: number]: StyleGlyph;
392
+ };
393
+ },
394
+ imagePositions: {[_: string]: ImagePosition},
395
+ layoutTextSize: number) {
396
396
  let totalWidth = 0;
397
397
 
398
398
  for (let index = 0; index < logicalInput.length(); index++) {
@@ -405,9 +405,9 @@ function determineAverageLineWidth(logicalInput: TaggedString,
405
405
  }
406
406
 
407
407
  function calculateBadness(lineWidth: number,
408
- targetWidth: number,
409
- penalty: number,
410
- isLastBreak: boolean) {
408
+ targetWidth: number,
409
+ penalty: number,
410
+ isLastBreak: boolean) {
411
411
  const raggedness = Math.pow(lineWidth - targetWidth, 2);
412
412
  if (isLastBreak) {
413
413
  // Favor finals lines shorter than average over longer than average
@@ -446,19 +446,19 @@ function calculatePenalty(codePoint: number, nextCodePoint: number, penalizableI
446
446
  }
447
447
 
448
448
  type Break = {
449
- index: number;
450
- x: number;
451
- priorBreak: Break;
452
- badness: number;
449
+ index: number;
450
+ x: number;
451
+ priorBreak: Break;
452
+ badness: number;
453
453
  };
454
454
 
455
455
  function evaluateBreak(
456
- breakIndex: number,
457
- breakX: number,
458
- targetWidth: number,
459
- potentialBreaks: Array<Break>,
460
- penalty: number,
461
- isLastBreak: boolean
456
+ breakIndex: number,
457
+ breakX: number,
458
+ targetWidth: number,
459
+ potentialBreaks: Array<Break>,
460
+ penalty: number,
461
+ isLastBreak: boolean
462
462
  ): Break {
463
463
  // We could skip evaluating breaks where the line length (breakX - priorBreak.x) > maxWidth
464
464
  // ...but in fact we allow lines longer than maxWidth (if there's no break points)
@@ -494,17 +494,17 @@ function leastBadBreaks(lastLineBreak?: Break | null): Array<number> {
494
494
  }
495
495
 
496
496
  function determineLineBreaks(
497
- logicalInput: TaggedString,
498
- spacing: number,
499
- maxWidth: number,
500
- glyphMap: {
501
- [_: string]: {
502
- [_: number]: StyleGlyph;
503
- };
504
- },
505
- imagePositions: {[_: string]: ImagePosition},
506
- symbolPlacement: string,
507
- layoutTextSize: number
497
+ logicalInput: TaggedString,
498
+ spacing: number,
499
+ maxWidth: number,
500
+ glyphMap: {
501
+ [_: string]: {
502
+ [_: number]: StyleGlyph;
503
+ };
504
+ },
505
+ imagePositions: {[_: string]: ImagePosition},
506
+ symbolPlacement: string,
507
+ layoutTextSize: number
508
508
  ): Array<number> {
509
509
  if (symbolPlacement !== 'point')
510
510
  return [];
@@ -556,54 +556,54 @@ function getAnchorAlignment(anchor: SymbolAnchor) {
556
556
  let horizontalAlign = 0.5, verticalAlign = 0.5;
557
557
 
558
558
  switch (anchor) {
559
- case 'right':
560
- case 'top-right':
561
- case 'bottom-right':
562
- horizontalAlign = 1;
563
- break;
564
- case 'left':
565
- case 'top-left':
566
- case 'bottom-left':
567
- horizontalAlign = 0;
568
- break;
559
+ case 'right':
560
+ case 'top-right':
561
+ case 'bottom-right':
562
+ horizontalAlign = 1;
563
+ break;
564
+ case 'left':
565
+ case 'top-left':
566
+ case 'bottom-left':
567
+ horizontalAlign = 0;
568
+ break;
569
569
  }
570
570
 
571
571
  switch (anchor) {
572
- case 'bottom':
573
- case 'bottom-right':
574
- case 'bottom-left':
575
- verticalAlign = 1;
576
- break;
577
- case 'top':
578
- case 'top-right':
579
- case 'top-left':
580
- verticalAlign = 0;
581
- break;
572
+ case 'bottom':
573
+ case 'bottom-right':
574
+ case 'bottom-left':
575
+ verticalAlign = 1;
576
+ break;
577
+ case 'top':
578
+ case 'top-right':
579
+ case 'top-left':
580
+ verticalAlign = 0;
581
+ break;
582
582
  }
583
583
 
584
584
  return {horizontalAlign, verticalAlign};
585
585
  }
586
586
 
587
587
  function shapeLines(shaping: Shaping,
588
- glyphMap: {
589
- [_: string]: {
590
- [_: number]: StyleGlyph;
591
- };
592
- },
593
- glyphPositions: {
594
- [_: string]: {
595
- [_: number]: GlyphPosition;
596
- };
597
- },
598
- imagePositions: {[_: string]: ImagePosition},
599
- lines: Array<TaggedString>,
600
- lineHeight: number,
601
- textAnchor: SymbolAnchor,
602
- textJustify: TextJustify,
603
- writingMode: WritingMode.horizontal | WritingMode.vertical,
604
- spacing: number,
605
- allowVerticalPlacement: boolean,
606
- layoutTextSizeThisZoom: number) {
588
+ glyphMap: {
589
+ [_: string]: {
590
+ [_: number]: StyleGlyph;
591
+ };
592
+ },
593
+ glyphPositions: {
594
+ [_: string]: {
595
+ [_: number]: GlyphPosition;
596
+ };
597
+ },
598
+ imagePositions: {[_: string]: ImagePosition},
599
+ lines: Array<TaggedString>,
600
+ lineHeight: number,
601
+ textAnchor: SymbolAnchor,
602
+ textJustify: TextJustify,
603
+ writingMode: WritingMode.horizontal | WritingMode.vertical,
604
+ spacing: number,
605
+ allowVerticalPlacement: boolean,
606
+ layoutTextSizeThisZoom: number) {
607
607
 
608
608
  let x = 0;
609
609
  let y = SHAPING_DEFAULT_OFFSET;
@@ -613,7 +613,7 @@ function shapeLines(shaping: Shaping,
613
613
 
614
614
  const justify =
615
615
  textJustify === 'right' ? 1 :
616
- textJustify === 'left' ? 0 : 0.5;
616
+ textJustify === 'left' ? 0 : 0.5;
617
617
 
618
618
  let lineIndex = 0;
619
619
  for (const line of lines) {
@@ -736,10 +736,10 @@ function shapeLines(shaping: Shaping,
736
736
 
737
737
  // justify right = 1, left = 0, center = 0.5
738
738
  function justifyLine(positionedGlyphs: Array<PositionedGlyph>,
739
- start: number,
740
- end: number,
741
- justify: 1 | 0 | 0.5,
742
- lineOffset: number) {
739
+ start: number,
740
+ end: number,
741
+ justify: 1 | 0 | 0.5,
742
+ lineOffset: number) {
743
743
  if (!justify && !lineOffset)
744
744
  return;
745
745
 
@@ -754,14 +754,14 @@ function justifyLine(positionedGlyphs: Array<PositionedGlyph>,
754
754
  }
755
755
 
756
756
  function align(positionedLines: Array<PositionedLine>,
757
- justify: number,
758
- horizontalAlign: number,
759
- verticalAlign: number,
760
- maxLineLength: number,
761
- maxLineHeight: number,
762
- lineHeight: number,
763
- blockHeight: number,
764
- lineCount: number) {
757
+ justify: number,
758
+ horizontalAlign: number,
759
+ verticalAlign: number,
760
+ maxLineLength: number,
761
+ maxLineHeight: number,
762
+ lineHeight: number,
763
+ blockHeight: number,
764
+ lineCount: number) {
765
765
  const shiftX = (justify - horizontalAlign) * maxLineLength;
766
766
  let shiftY = 0;
767
767
 
@@ -780,18 +780,18 @@ function align(positionedLines: Array<PositionedLine>,
780
780
  }
781
781
 
782
782
  export type PositionedIcon = {
783
- image: ImagePosition;
784
- top: number;
785
- bottom: number;
786
- left: number;
787
- right: number;
788
- collisionPadding?: [number, number, number, number];
783
+ image: ImagePosition;
784
+ top: number;
785
+ bottom: number;
786
+ left: number;
787
+ right: number;
788
+ collisionPadding?: [number, number, number, number];
789
789
  };
790
790
 
791
791
  function shapeIcon(
792
- image: ImagePosition,
793
- iconOffset: [number, number],
794
- iconAnchor: SymbolAnchor
792
+ image: ImagePosition,
793
+ iconOffset: [number, number],
794
+ iconAnchor: SymbolAnchor
795
795
  ): PositionedIcon {
796
796
  const {horizontalAlign, verticalAlign} = getAnchorAlignment(iconAnchor);
797
797
  const dx = iconOffset[0];
@@ -804,12 +804,12 @@ function shapeIcon(
804
804
  }
805
805
 
806
806
  function fitIconToText(
807
- shapedIcon: PositionedIcon,
808
- shapedText: Shaping,
809
- textFit: string,
810
- padding: [number, number, number, number],
811
- iconOffset: [number, number],
812
- fontScale: number
807
+ shapedIcon: PositionedIcon,
808
+ shapedText: Shaping,
809
+ textFit: string,
810
+ padding: [number, number, number, number],
811
+ iconOffset: [number, number],
812
+ fontScale: number
813
813
  ): PositionedIcon {
814
814
  assert(textFit !== 'none');
815
815
  assert(Array.isArray(padding) && padding.length === 4);