maplibre-gl 2.1.1 → 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 (305) 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} +11 -26
  12. package/dist/maplibre-gl-dev.js +522 -226
  13. package/dist/maplibre-gl.css +1 -1
  14. package/dist/maplibre-gl.d.ts +1536 -1010
  15. package/dist/maplibre-gl.js +3 -3
  16. package/dist/maplibre-gl.js.map +1 -1
  17. package/package.json +40 -61
  18. package/src/data/{array_types.ts → array_types.g.ts} +0 -0
  19. package/src/data/bucket/circle_bucket.ts +1 -1
  20. package/src/data/bucket/fill_bucket.test.ts +1 -1
  21. package/src/data/bucket/fill_bucket.ts +4 -4
  22. package/src/data/bucket/fill_extrusion_bucket.ts +1 -1
  23. package/src/data/bucket/line_bucket.test.ts +1 -1
  24. package/src/data/bucket/line_bucket.ts +6 -6
  25. package/src/data/bucket/symbol_bucket.test.ts +16 -16
  26. package/src/data/bucket/symbol_bucket.ts +53 -53
  27. package/src/data/bucket.ts +43 -43
  28. package/src/data/dem_data.ts +12 -12
  29. package/src/data/evaluation_feature.ts +10 -10
  30. package/src/data/feature_index.ts +37 -37
  31. package/src/data/feature_position_map.ts +5 -5
  32. package/src/data/index_array_type.ts +1 -1
  33. package/src/data/load_geometry.test.ts +1 -1
  34. package/src/data/program_configuration.ts +46 -46
  35. package/src/data/segment.ts +14 -14
  36. package/src/geo/edge_insets.ts +2 -2
  37. package/src/geo/lng_lat.ts +4 -4
  38. package/src/geo/lng_lat_bounds.ts +35 -35
  39. package/src/geo/mercator_coordinate.ts +5 -5
  40. package/src/geo/transform.test.ts +1 -1
  41. package/src/geo/transform.ts +14 -14
  42. package/src/gl/context.ts +3 -3
  43. package/src/gl/types.ts +19 -19
  44. package/src/gl/value.ts +6 -6
  45. package/src/gl/vertex_buffer.test.ts +1 -1
  46. package/src/index.ts +24 -9
  47. package/src/render/draw_circle.ts +8 -8
  48. package/src/render/draw_collision_debug.ts +5 -5
  49. package/src/render/draw_line.ts +4 -4
  50. package/src/render/draw_symbol.ts +21 -21
  51. package/src/render/glyph_atlas.ts +12 -12
  52. package/src/render/glyph_manager.test.ts +10 -21
  53. package/src/render/glyph_manager.ts +33 -32
  54. package/src/render/image_manager.ts +4 -4
  55. package/src/render/painter.ts +11 -11
  56. package/src/render/program/background_program.ts +29 -29
  57. package/src/render/program/circle_program.ts +10 -10
  58. package/src/render/program/clipping_mask_program.ts +1 -1
  59. package/src/render/program/collision_program.ts +9 -9
  60. package/src/render/program/debug_program.ts +4 -4
  61. package/src/render/program/fill_extrusion_program.ts +31 -31
  62. package/src/render/program/fill_program.ts +29 -29
  63. package/src/render/program/heatmap_program.ts +12 -12
  64. package/src/render/program/hillshade_program.ts +12 -12
  65. package/src/render/program/line_program.ts +38 -38
  66. package/src/render/program/pattern.ts +28 -28
  67. package/src/render/program/raster_program.ts +21 -21
  68. package/src/render/program/symbol_program.ts +96 -96
  69. package/src/render/program.ts +25 -25
  70. package/src/render/texture.ts +9 -9
  71. package/src/render/uniform_binding.ts +1 -1
  72. package/src/render/vertex_array_object.ts +13 -13
  73. package/src/shaders/_prelude.fragment.glsl.g.ts +2 -0
  74. package/src/shaders/_prelude.vertex.glsl.g.ts +2 -0
  75. package/src/shaders/background.fragment.glsl.g.ts +2 -0
  76. package/src/shaders/background.vertex.glsl.g.ts +2 -0
  77. package/src/shaders/background_pattern.fragment.glsl.g.ts +2 -0
  78. package/src/shaders/background_pattern.vertex.glsl.g.ts +2 -0
  79. package/src/shaders/circle.fragment.glsl.g.ts +2 -0
  80. package/src/shaders/circle.vertex.glsl.g.ts +2 -0
  81. package/src/shaders/clipping_mask.fragment.glsl.g.ts +2 -0
  82. package/src/shaders/clipping_mask.vertex.glsl.g.ts +2 -0
  83. package/src/shaders/collision_box.fragment.glsl.g.ts +2 -0
  84. package/src/shaders/collision_box.vertex.glsl.g.ts +2 -0
  85. package/src/shaders/collision_circle.fragment.glsl.g.ts +2 -0
  86. package/src/shaders/collision_circle.vertex.glsl.g.ts +2 -0
  87. package/src/shaders/debug.fragment.glsl.g.ts +2 -0
  88. package/src/shaders/debug.vertex.glsl.g.ts +2 -0
  89. package/src/shaders/fill.fragment.glsl.g.ts +2 -0
  90. package/src/shaders/fill.vertex.glsl.g.ts +2 -0
  91. package/src/shaders/fill_extrusion.fragment.glsl.g.ts +2 -0
  92. package/src/shaders/fill_extrusion.vertex.glsl.g.ts +2 -0
  93. package/src/shaders/fill_extrusion_pattern.fragment.glsl.g.ts +2 -0
  94. package/src/shaders/fill_extrusion_pattern.vertex.glsl.g.ts +2 -0
  95. package/src/shaders/fill_outline.fragment.glsl.g.ts +2 -0
  96. package/src/shaders/fill_outline.vertex.glsl.g.ts +2 -0
  97. package/src/shaders/fill_outline_pattern.fragment.glsl.g.ts +2 -0
  98. package/src/shaders/fill_outline_pattern.vertex.glsl.g.ts +2 -0
  99. package/src/shaders/fill_pattern.fragment.glsl.g.ts +2 -0
  100. package/src/shaders/fill_pattern.vertex.glsl.g.ts +2 -0
  101. package/src/shaders/heatmap.fragment.glsl.g.ts +2 -0
  102. package/src/shaders/heatmap.vertex.glsl.g.ts +2 -0
  103. package/src/shaders/heatmap_texture.fragment.glsl.g.ts +2 -0
  104. package/src/shaders/heatmap_texture.vertex.glsl.g.ts +2 -0
  105. package/src/shaders/hillshade.fragment.glsl.g.ts +2 -0
  106. package/src/shaders/hillshade.vertex.glsl.g.ts +2 -0
  107. package/src/shaders/hillshade_prepare.fragment.glsl.g.ts +2 -0
  108. package/src/shaders/hillshade_prepare.vertex.glsl.g.ts +2 -0
  109. package/src/shaders/line.fragment.glsl.g.ts +2 -0
  110. package/src/shaders/line.vertex.glsl.g.ts +2 -0
  111. package/src/shaders/line_gradient.fragment.glsl.g.ts +2 -0
  112. package/src/shaders/line_gradient.vertex.glsl.g.ts +2 -0
  113. package/src/shaders/line_pattern.fragment.glsl.g.ts +2 -0
  114. package/src/shaders/line_pattern.vertex.glsl.g.ts +2 -0
  115. package/src/shaders/line_sdf.fragment.glsl.g.ts +2 -0
  116. package/src/shaders/line_sdf.vertex.glsl.g.ts +2 -0
  117. package/src/shaders/raster.fragment.glsl.g.ts +2 -0
  118. package/src/shaders/raster.vertex.glsl.g.ts +2 -0
  119. package/src/shaders/shaders.ts +52 -55
  120. package/src/shaders/symbol_icon.fragment.glsl.g.ts +2 -0
  121. package/src/shaders/symbol_icon.vertex.glsl.g.ts +2 -0
  122. package/src/shaders/symbol_sdf.fragment.glsl.g.ts +2 -0
  123. package/src/shaders/symbol_sdf.vertex.glsl.g.ts +2 -0
  124. package/src/shaders/symbol_text_and_icon.fragment.glsl.g.ts +2 -0
  125. package/src/shaders/symbol_text_and_icon.vertex.glsl.g.ts +2 -0
  126. package/src/source/canvas_source.test.ts +11 -12
  127. package/src/source/canvas_source.ts +4 -4
  128. package/src/source/geojson_worker_source.ts +23 -23
  129. package/src/source/geojson_wrapper.ts +8 -8
  130. package/src/source/image_source.test.ts +2 -2
  131. package/src/source/image_source.ts +6 -6
  132. package/src/source/pixels_to_tile_units.ts +6 -6
  133. package/src/source/query_features.ts +20 -20
  134. package/src/source/raster_dem_tile_source.test.ts +2 -2
  135. package/src/source/raster_tile_source.test.ts +2 -2
  136. package/src/source/rtl_text_plugin.ts +10 -10
  137. package/src/source/source.ts +29 -29
  138. package/src/source/source_cache.test.ts +32 -0
  139. package/src/source/source_cache.ts +7 -5
  140. package/src/source/source_state.ts +1 -1
  141. package/src/source/tile.test.ts +3 -3
  142. package/src/source/tile.ts +15 -15
  143. package/src/source/tile_cache.ts +6 -6
  144. package/src/source/tile_id.test.ts +0 -1
  145. package/src/source/vector_tile_source.test.ts +3 -3
  146. package/src/source/vector_tile_source.ts +1 -1
  147. package/src/source/vector_tile_worker_source.test.ts +4 -4
  148. package/src/source/vector_tile_worker_source.ts +5 -5
  149. package/src/source/worker.test.ts +1 -1
  150. package/src/source/worker.ts +22 -22
  151. package/src/source/worker_source.ts +56 -56
  152. package/src/source/worker_tile.ts +4 -4
  153. package/src/style/evaluation_parameters.ts +3 -3
  154. package/src/style/format_section_override.test.ts +1 -1
  155. package/src/style/light.ts +10 -10
  156. package/src/style/load_glyph_range.test.ts +3 -3
  157. package/src/style/load_glyph_range.ts +6 -6
  158. package/src/style/load_sprite.ts +4 -4
  159. package/src/style/pauseable_placement.ts +1 -1
  160. package/src/style/properties.ts +69 -69
  161. package/src/style/query_utils.ts +7 -7
  162. package/src/style/style.test.ts +2 -2
  163. package/src/style/style.ts +29 -29
  164. package/src/style/style_glyph.ts +8 -8
  165. package/src/style/style_image.ts +58 -58
  166. package/src/style/style_layer/background_style_layer.ts +2 -2
  167. package/src/style/style_layer/{background_style_layer_properties.ts → background_style_layer_properties.g.ts} +0 -0
  168. package/src/style/style_layer/circle_style_layer.ts +10 -10
  169. package/src/style/style_layer/{circle_style_layer_properties.ts → circle_style_layer_properties.g.ts} +0 -0
  170. package/src/style/style_layer/custom_style_layer.ts +17 -17
  171. package/src/style/style_layer/fill_extrusion_style_layer.ts +10 -10
  172. package/src/style/style_layer/{fill_extrusion_style_layer_properties.ts → fill_extrusion_style_layer_properties.g.ts} +0 -0
  173. package/src/style/style_layer/fill_style_layer.ts +9 -9
  174. package/src/style/style_layer/{fill_style_layer_properties.ts → fill_style_layer_properties.g.ts} +0 -0
  175. package/src/style/style_layer/heatmap_style_layer.ts +2 -2
  176. package/src/style/style_layer/{heatmap_style_layer_properties.ts → heatmap_style_layer_properties.g.ts} +0 -0
  177. package/src/style/style_layer/hillshade_style_layer.ts +2 -2
  178. package/src/style/style_layer/{hillshade_style_layer_properties.ts → hillshade_style_layer_properties.g.ts} +0 -0
  179. package/src/style/style_layer/line_style_layer.ts +9 -9
  180. package/src/style/style_layer/{line_style_layer_properties.ts → line_style_layer_properties.g.ts} +0 -0
  181. package/src/style/style_layer/raster_style_layer.ts +2 -2
  182. package/src/style/style_layer/{raster_style_layer_properties.ts → raster_style_layer_properties.g.ts} +0 -0
  183. package/src/style/style_layer/symbol_style_layer.ts +7 -7
  184. package/src/style/style_layer/{symbol_style_layer_properties.ts → symbol_style_layer_properties.g.ts} +0 -0
  185. package/src/style/style_layer.ts +10 -10
  186. package/src/style/style_layer_index.ts +3 -3
  187. package/src/style/validate_style.ts +15 -15
  188. package/src/style-spec/error/validation_error.ts +1 -1
  189. package/src/style-spec/expression/compound_expression.ts +3 -3
  190. package/src/style-spec/expression/definitions/format.ts +11 -11
  191. package/src/style-spec/expression/definitions/interpolate.ts +5 -5
  192. package/src/style-spec/expression/definitions/match.ts +2 -2
  193. package/src/style-spec/expression/definitions/number_format.ts +11 -11
  194. package/src/style-spec/expression/expression.ts +8 -8
  195. package/src/style-spec/expression/index.ts +97 -97
  196. package/src/style-spec/expression/parsing_context.ts +11 -11
  197. package/src/style-spec/expression/types/collator.ts +9 -9
  198. package/src/style-spec/expression/types/resolved_image.ts +2 -2
  199. package/src/style-spec/expression/types.ts +14 -14
  200. package/src/style-spec/expression/values.ts +1 -1
  201. package/src/style-spec/feature_filter/index.ts +66 -66
  202. package/src/style-spec/function/convert.ts +3 -3
  203. package/src/style-spec/style-spec.ts +44 -44
  204. package/src/style-spec/util/color_spaces.ts +8 -8
  205. package/src/style-spec/util/result.ts +4 -4
  206. package/src/style-spec/validate/validate_filter.ts +58 -58
  207. package/src/style-spec/validate/validate_source.ts +63 -63
  208. package/src/style-spec/visit.ts +11 -11
  209. package/src/symbol/collision_feature.test.ts +1 -1
  210. package/src/symbol/collision_feature.ts +10 -10
  211. package/src/symbol/collision_index.ts +26 -26
  212. package/src/symbol/cross_tile_symbol_index.ts +17 -17
  213. package/src/symbol/get_anchors.ts +16 -16
  214. package/src/symbol/grid_index.ts +7 -7
  215. package/src/symbol/placement.ts +72 -72
  216. package/src/symbol/projection.ts +30 -30
  217. package/src/symbol/quads.ts +30 -30
  218. package/src/symbol/shaping.ts +160 -160
  219. package/src/symbol/symbol_layout.ts +119 -119
  220. package/src/symbol/symbol_size.ts +29 -29
  221. package/src/symbol/symbol_style_layer.test.ts +1 -1
  222. package/src/types/cancelable.ts +1 -1
  223. package/src/types/tilejson.ts +13 -13
  224. package/src/ui/anchor.ts +1 -1
  225. package/src/ui/camera.test.ts +5 -5
  226. package/src/ui/camera.ts +18 -18
  227. package/src/ui/control/attribution_control.test.ts +51 -16
  228. package/src/ui/control/attribution_control.ts +35 -16
  229. package/src/ui/control/control.ts +40 -40
  230. package/src/ui/control/fullscreen_control.ts +1 -1
  231. package/src/ui/control/geolocate_control.test.ts +1 -1
  232. package/src/ui/control/geolocate_control.ts +102 -102
  233. package/src/ui/control/logo_control.test.ts +4 -4
  234. package/src/ui/control/navigation_control.ts +3 -3
  235. package/src/ui/control/scale_control.test.ts +2 -2
  236. package/src/ui/control/scale_control.ts +5 -5
  237. package/src/ui/events.ts +289 -200
  238. package/src/ui/handler/box_zoom.test.ts +1 -1
  239. package/src/ui/handler/box_zoom.ts +1 -1
  240. package/src/ui/handler/dblclick_zoom.test.ts +1 -1
  241. package/src/ui/handler/drag_pan.test.ts +1 -1
  242. package/src/ui/handler/drag_rotate.test.ts +1 -1
  243. package/src/ui/handler/keyboard.test.ts +1 -1
  244. package/src/ui/handler/keyboard.ts +51 -51
  245. package/src/ui/handler/map_event.test.ts +1 -1
  246. package/src/ui/handler/map_event.ts +1 -1
  247. package/src/ui/handler/mouse.ts +1 -1
  248. package/src/ui/handler/mouse_rotate.test.ts +1 -1
  249. package/src/ui/handler/scroll_zoom.test.ts +1 -1
  250. package/src/ui/handler/scroll_zoom.ts +9 -9
  251. package/src/ui/handler/shim/drag_pan.ts +4 -4
  252. package/src/ui/handler/shim/drag_rotate.ts +1 -1
  253. package/src/ui/handler/shim/touch_zoom_rotate.ts +1 -1
  254. package/src/ui/handler/tap_recognizer.ts +4 -4
  255. package/src/ui/handler/touch_pan.ts +2 -2
  256. package/src/ui/handler/touch_zoom_rotate.test.ts +1 -1
  257. package/src/ui/handler/touch_zoom_rotate.ts +1 -1
  258. package/src/ui/handler_inertia.ts +6 -6
  259. package/src/ui/handler_manager.ts +44 -44
  260. package/src/ui/map/isMoving.test.ts +1 -1
  261. package/src/ui/map/isRotating.test.ts +1 -1
  262. package/src/ui/map/isZooming.test.ts +1 -1
  263. package/src/ui/map.test.ts +10 -4
  264. package/src/ui/map.ts +106 -101
  265. package/src/ui/map_events.test.ts +1 -1
  266. package/src/ui/marker.test.ts +12 -12
  267. package/src/ui/marker.ts +37 -37
  268. package/src/ui/popup.test.ts +7 -7
  269. package/src/ui/popup.ts +9 -9
  270. package/src/util/actor.test.ts +41 -10
  271. package/src/util/actor.ts +8 -8
  272. package/src/util/ajax.test.ts +29 -21
  273. package/src/util/ajax.ts +51 -30
  274. package/src/util/browser.ts +1 -1
  275. package/src/util/classify_rings.test.ts +1 -1
  276. package/src/util/color_ramp.ts +5 -5
  277. package/src/util/config.ts +2 -2
  278. package/src/util/dispatcher.ts +1 -1
  279. package/src/util/dom.ts +2 -2
  280. package/src/util/evented.ts +1 -1
  281. package/src/util/find_pole_of_inaccessibility.ts +3 -3
  282. package/src/util/image.ts +5 -5
  283. package/src/util/performance.ts +7 -7
  284. package/src/util/request_manager.ts +4 -4
  285. package/src/util/resolve_tokens.ts +4 -4
  286. package/src/util/struct_array.test.ts +1 -1
  287. package/src/util/struct_array.ts +15 -15
  288. package/src/util/task_queue.ts +3 -3
  289. package/src/util/tile_request_cache.ts +3 -3
  290. package/src/util/transferable_grid_index.ts +4 -4
  291. package/src/util/util.ts +8 -8
  292. package/src/util/web_worker.ts +4 -68
  293. package/src/util/web_worker_transfer.test.ts +3 -0
  294. package/src/util/web_worker_transfer.ts +21 -17
  295. package/src/util/worker_pool.ts +1 -1
  296. package/build/.eslintrc +0 -21
  297. package/build/glsl_to_js.js +0 -12
  298. package/build/post-ts-build.js +0 -43
  299. package/build/release-notes.md.ejs +0 -8
  300. package/build/test/build-tape.js +0 -17
  301. package/build/web_worker_replacement.js +0 -5
  302. package/dist/package.json +0 -1
  303. package/src/style-spec/validate_spec.test.ts +0 -29
  304. package/src/symbol/shaping.test.ts +0 -392
  305. package/src/types/glsl.d.ts +0 -4
@@ -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);