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
@@ -24,8 +24,8 @@ import {
24
24
  type TimePoint = number;
25
25
 
26
26
  export type CrossFaded<T> = {
27
- to: T;
28
- from: T;
27
+ to: T;
28
+ from: T;
29
29
  };
30
30
 
31
31
  /**
@@ -64,14 +64,14 @@ export type CrossFaded<T> = {
64
64
  * @private
65
65
  */
66
66
  export interface Property<T, R> {
67
- specification: StylePropertySpecification;
68
- possiblyEvaluate(
69
- value: PropertyValue<T, R>,
70
- parameters: EvaluationParameters,
71
- canonical?: CanonicalTileID,
72
- availableImages?: Array<string>
73
- ): R;
74
- interpolate(a: R, b: R, t: number): R;
67
+ specification: StylePropertySpecification;
68
+ possiblyEvaluate(
69
+ value: PropertyValue<T, R>,
70
+ parameters: EvaluationParameters,
71
+ canonical?: CanonicalTileID,
72
+ availableImages?: Array<string>
73
+ ): R;
74
+ interpolate(a: R, b: R, t: number): R;
75
75
  }
76
76
 
77
77
  /**
@@ -109,9 +109,9 @@ export class PropertyValue<T, R> {
109
109
  }
110
110
 
111
111
  possiblyEvaluate(
112
- parameters: EvaluationParameters,
113
- canonical?: CanonicalTileID,
114
- availableImages?: Array<string>
112
+ parameters: EvaluationParameters,
113
+ canonical?: CanonicalTileID,
114
+ availableImages?: Array<string>
115
115
  ): R {
116
116
  return this.property.possiblyEvaluate(this, parameters, canonical, availableImages);
117
117
  }
@@ -120,8 +120,8 @@ export class PropertyValue<T, R> {
120
120
  // ------- Transitionable -------
121
121
 
122
122
  export type TransitionParameters = {
123
- now: TimePoint;
124
- transition: TransitionSpecification;
123
+ now: TimePoint;
124
+ transition: TransitionSpecification;
125
125
  };
126
126
 
127
127
  /**
@@ -248,10 +248,10 @@ class TransitioningPropertyValue<T, R> {
248
248
  end: TimePoint;
249
249
 
250
250
  constructor(property: Property<T, R>,
251
- value: PropertyValue<T, R>,
252
- prior: TransitioningPropertyValue<T, R>,
253
- transition: TransitionSpecification,
254
- now: TimePoint) {
251
+ value: PropertyValue<T, R>,
252
+ prior: TransitioningPropertyValue<T, R>,
253
+ transition: TransitionSpecification,
254
+ now: TimePoint) {
255
255
  this.property = property;
256
256
  this.value = value;
257
257
  this.begin = now + transition.delay || 0;
@@ -262,9 +262,9 @@ class TransitioningPropertyValue<T, R> {
262
262
  }
263
263
 
264
264
  possiblyEvaluate(
265
- parameters: EvaluationParameters,
266
- canonical: CanonicalTileID,
267
- availableImages: Array<string>
265
+ parameters: EvaluationParameters,
266
+ canonical: CanonicalTileID,
267
+ availableImages: Array<string>
268
268
  ): R {
269
269
  const now = parameters.now || 0;
270
270
  const finalValue = this.value.possiblyEvaluate(parameters, canonical, availableImages);
@@ -310,9 +310,9 @@ export class Transitioning<Props> {
310
310
  }
311
311
 
312
312
  possiblyEvaluate(
313
- parameters: EvaluationParameters,
314
- canonical?: CanonicalTileID,
315
- availableImages?: Array<string>
313
+ parameters: EvaluationParameters,
314
+ canonical?: CanonicalTileID,
315
+ availableImages?: Array<string>
316
316
  ): PossiblyEvaluated<Props, any> {
317
317
  const result = new PossiblyEvaluated(this._properties); // eslint-disable-line no-use-before-define
318
318
  for (const property of Object.keys(this._values)) {
@@ -373,9 +373,9 @@ export class Layout<Props> {
373
373
  }
374
374
 
375
375
  possiblyEvaluate(
376
- parameters: EvaluationParameters,
377
- canonical?: CanonicalTileID,
378
- availableImages?: Array<string>
376
+ parameters: EvaluationParameters,
377
+ canonical?: CanonicalTileID,
378
+ availableImages?: Array<string>
379
379
  ): PossiblyEvaluated<Props, any> {
380
380
  const result = new PossiblyEvaluated(this._properties); // eslint-disable-line no-use-before-define
381
381
  for (const property of Object.keys(this._values)) {
@@ -409,8 +409,8 @@ export class Layout<Props> {
409
409
  * @private
410
410
  */
411
411
  type PossiblyEvaluatedValue<T> = {
412
- kind: 'constant';
413
- value: T;
412
+ kind: 'constant';
413
+ value: T;
414
414
  } | SourceExpression | CompositeExpression;
415
415
 
416
416
  /**
@@ -445,10 +445,10 @@ export class PossiblyEvaluatedPropertyValue<T> {
445
445
  }
446
446
 
447
447
  evaluate(
448
- feature: Feature,
449
- featureState: FeatureState,
450
- canonical?: CanonicalTileID,
451
- availableImages?: Array<string>
448
+ feature: Feature,
449
+ featureState: FeatureState,
450
+ canonical?: CanonicalTileID,
451
+ availableImages?: Array<string>
452
452
  ): T {
453
453
  return this.property.evaluate(this.value, this.parameters, feature, featureState, canonical, availableImages);
454
454
  }
@@ -519,10 +519,10 @@ export class DataDrivenProperty<T> implements Property<T, PossiblyEvaluatedPrope
519
519
  }
520
520
 
521
521
  possiblyEvaluate(
522
- value: PropertyValue<T, PossiblyEvaluatedPropertyValue<T>>,
523
- parameters: EvaluationParameters,
524
- canonical?: CanonicalTileID,
525
- availableImages?: Array<string>
522
+ value: PropertyValue<T, PossiblyEvaluatedPropertyValue<T>>,
523
+ parameters: EvaluationParameters,
524
+ canonical?: CanonicalTileID,
525
+ availableImages?: Array<string>
526
526
  ): PossiblyEvaluatedPropertyValue<T> {
527
527
  if (value.expression.kind === 'constant' || value.expression.kind === 'camera') {
528
528
  return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: value.expression.evaluate(parameters, null, {}, canonical, availableImages)}, parameters);
@@ -532,9 +532,9 @@ export class DataDrivenProperty<T> implements Property<T, PossiblyEvaluatedPrope
532
532
  }
533
533
 
534
534
  interpolate(
535
- a: PossiblyEvaluatedPropertyValue<T>,
536
- b: PossiblyEvaluatedPropertyValue<T>,
537
- t: number
535
+ a: PossiblyEvaluatedPropertyValue<T>,
536
+ b: PossiblyEvaluatedPropertyValue<T>,
537
+ t: number
538
538
  ): PossiblyEvaluatedPropertyValue<T> {
539
539
  // If either possibly-evaluated value is non-constant, give up: we aren't able to interpolate data-driven values.
540
540
  if (a.value.kind !== 'constant' || b.value.kind !== 'constant') {
@@ -561,12 +561,12 @@ export class DataDrivenProperty<T> implements Property<T, PossiblyEvaluatedPrope
561
561
  }
562
562
 
563
563
  evaluate(
564
- value: PossiblyEvaluatedValue<T>,
565
- parameters: EvaluationParameters,
566
- feature: Feature,
567
- featureState: FeatureState,
568
- canonical?: CanonicalTileID,
569
- availableImages?: Array<string>
564
+ value: PossiblyEvaluatedValue<T>,
565
+ parameters: EvaluationParameters,
566
+ feature: Feature,
567
+ featureState: FeatureState,
568
+ canonical?: CanonicalTileID,
569
+ availableImages?: Array<string>
570
570
  ): T {
571
571
  if (value.kind === 'constant') {
572
572
  return value.value;
@@ -586,10 +586,10 @@ export class DataDrivenProperty<T> implements Property<T, PossiblyEvaluatedPrope
586
586
  export class CrossFadedDataDrivenProperty<T> extends DataDrivenProperty<CrossFaded<T>> {
587
587
 
588
588
  possiblyEvaluate(
589
- value: PropertyValue<CrossFaded<T>, PossiblyEvaluatedPropertyValue<CrossFaded<T>>>,
590
- parameters: EvaluationParameters,
591
- canonical?: CanonicalTileID,
592
- availableImages?: Array<string>
589
+ value: PropertyValue<CrossFaded<T>, PossiblyEvaluatedPropertyValue<CrossFaded<T>>>,
590
+ parameters: EvaluationParameters,
591
+ canonical?: CanonicalTileID,
592
+ availableImages?: Array<string>
593
593
  ): PossiblyEvaluatedPropertyValue<CrossFaded<T>> {
594
594
  if (value.value === undefined) {
595
595
  return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: undefined}, parameters);
@@ -601,10 +601,10 @@ export class CrossFadedDataDrivenProperty<T> extends DataDrivenProperty<CrossFad
601
601
  return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: constant}, parameters);
602
602
  } else if (value.expression.kind === 'camera') {
603
603
  const cameraVal = this._calculate(
604
- value.expression.evaluate({zoom: parameters.zoom - 1.0}),
605
- value.expression.evaluate({zoom: parameters.zoom}),
606
- value.expression.evaluate({zoom: parameters.zoom + 1.0}),
607
- parameters);
604
+ value.expression.evaluate({zoom: parameters.zoom - 1.0}),
605
+ value.expression.evaluate({zoom: parameters.zoom}),
606
+ value.expression.evaluate({zoom: parameters.zoom + 1.0}),
607
+ parameters);
608
608
  return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: cameraVal}, parameters);
609
609
  } else {
610
610
  // source or composite expression
@@ -613,12 +613,12 @@ export class CrossFadedDataDrivenProperty<T> extends DataDrivenProperty<CrossFad
613
613
  }
614
614
 
615
615
  evaluate(
616
- value: PossiblyEvaluatedValue<CrossFaded<T>>,
617
- globals: EvaluationParameters,
618
- feature: Feature,
619
- featureState: FeatureState,
620
- canonical?: CanonicalTileID,
621
- availableImages?: Array<string>
616
+ value: PossiblyEvaluatedValue<CrossFaded<T>>,
617
+ globals: EvaluationParameters,
618
+ feature: Feature,
619
+ featureState: FeatureState,
620
+ canonical?: CanonicalTileID,
621
+ availableImages?: Array<string>
622
622
  ): CrossFaded<T> {
623
623
  if (value.kind === 'source') {
624
624
  const constant = value.evaluate(globals, feature, featureState, canonical, availableImages);
@@ -657,10 +657,10 @@ export class CrossFadedProperty<T> implements Property<T, CrossFaded<T>> {
657
657
  }
658
658
 
659
659
  possiblyEvaluate(
660
- value: PropertyValue<T, CrossFaded<T>>,
661
- parameters: EvaluationParameters,
662
- canonical?: CanonicalTileID,
663
- availableImages?: Array<string>
660
+ value: PropertyValue<T, CrossFaded<T>>,
661
+ parameters: EvaluationParameters,
662
+ canonical?: CanonicalTileID,
663
+ availableImages?: Array<string>
664
664
  ): CrossFaded<T> {
665
665
  if (value.value === undefined) {
666
666
  return undefined;
@@ -703,10 +703,10 @@ export class ColorRampProperty implements Property<Color, boolean> {
703
703
  }
704
704
 
705
705
  possiblyEvaluate(
706
- value: PropertyValue<Color, boolean>,
707
- parameters: EvaluationParameters,
708
- canonical?: CanonicalTileID,
709
- availableImages?: Array<string>
706
+ value: PropertyValue<Color, boolean>,
707
+ parameters: EvaluationParameters,
708
+ canonical?: CanonicalTileID,
709
+ availableImages?: Array<string>
710
710
  ): boolean {
711
711
  return !!value.expression.evaluate(parameters, null, {}, canonical, availableImages);
712
712
  }
@@ -730,7 +730,7 @@ export class Properties<Props> {
730
730
  defaultPropertyValues: {[K in keyof Props]: PropertyValue<unknown, any>};
731
731
  defaultTransitionablePropertyValues: {[K in keyof Props]: TransitionablePropertyValue<unknown, unknown>};
732
732
  defaultTransitioningPropertyValues: {[K in keyof Props]: TransitioningPropertyValue<unknown, unknown>};
733
- defaultPossiblyEvaluatedValues: {[K in keyof Props]: PossiblyEvaluatedPropertyValue<unknown>};;
733
+ defaultPossiblyEvaluatedValues: {[K in keyof Props]: PossiblyEvaluatedPropertyValue<unknown>};
734
734
  overridableProperties: Array<string>;
735
735
 
736
736
  constructor(properties: Props) {
@@ -6,9 +6,9 @@ import type CircleBucket from '../data/bucket/circle_bucket';
6
6
  import type LineBucket from '../data/bucket/line_bucket';
7
7
 
8
8
  export function getMaximumPaintValue(
9
- property: string,
10
- layer: StyleLayer,
11
- bucket: CircleBucket<any> | LineBucket
9
+ property: string,
10
+ layer: StyleLayer,
11
+ bucket: CircleBucket<any> | LineBucket
12
12
  ): number {
13
13
  const value = ((layer.paint as any).get(property) as PossiblyEvaluatedPropertyValue<any>).value;
14
14
  if (value.kind === 'constant') {
@@ -23,10 +23,10 @@ export function translateDistance(translate: [number, number]) {
23
23
  }
24
24
 
25
25
  export function translate(queryGeometry: Array<Point>,
26
- translate: [number, number],
27
- translateAnchor: 'viewport' | 'map',
28
- bearing: number,
29
- pixelsToTileUnits: number) {
26
+ translate: [number, number],
27
+ translateAnchor: 'viewport' | 'map',
28
+ bearing: number,
29
+ pixelsToTileUnits: number) {
30
30
  if (!translate[0] && !translate[1]) {
31
31
  return queryGeometry;
32
32
  }
@@ -12,7 +12,7 @@ import {
12
12
  } from '../source/rtl_text_plugin';
13
13
  import browser from '../util/browser';
14
14
  import {OverscaledTileID} from '../source/tile_id';
15
- import {useFakeXMLHttpRequest, fakeServer} from 'sinon';
15
+ import {fakeXhr, fakeServer} from 'nise';
16
16
  import {WorkerGlobalScopeInterface} from '../util/web_worker';
17
17
  import EvaluationParameters from './evaluation_parameters';
18
18
  import {LayerSpecification, GeoJSONSourceSpecification, FilterSpecification, SourceSpecification} from '../style-spec/types';
@@ -48,6 +48,7 @@ function createGeoJSONSource() {
48
48
  }
49
49
 
50
50
  class StubMap extends Evented {
51
+ style: Style;
51
52
  transform: Transform;
52
53
  private _requestManager: RequestManager;
53
54
 
@@ -60,10 +61,20 @@ class StubMap extends Evented {
60
61
  _getMapId() {
61
62
  return 1;
62
63
  }
64
+
65
+ getPixelRatio() {
66
+ return 1;
67
+ }
63
68
  }
64
69
 
65
70
  const getStubMap = () => new StubMap() as any;
66
71
 
72
+ function createStyle(map = getStubMap()) {
73
+ const style = new Style(map);
74
+ map.style = style;
75
+ return style;
76
+ }
77
+
67
78
  let sinonFakeXMLServer;
68
79
  let sinonFakeServer;
69
80
  let _self;
@@ -72,7 +83,7 @@ let mockConsoleError;
72
83
  beforeEach(() => {
73
84
  global.fetch = null;
74
85
  sinonFakeServer = fakeServer.create();
75
- sinonFakeXMLServer = useFakeXMLHttpRequest();
86
+ sinonFakeXMLServer = fakeXhr.useFakeXMLHttpRequest();
76
87
 
77
88
  _self = {
78
89
  addEventListener() {}
@@ -254,7 +265,7 @@ describe('Style#loadJSON', () => {
254
265
  });
255
266
 
256
267
  test('creates sources', done => {
257
- const style = new Style(getStubMap());
268
+ const style = createStyle();
258
269
 
259
270
  style.on('style.load', () => {
260
271
  expect(style.sourceCaches['mapLibre'] instanceof SourceCache).toBeTruthy();
@@ -272,7 +283,7 @@ describe('Style#loadJSON', () => {
272
283
  });
273
284
 
274
285
  test('creates layers', done => {
275
- const style = new Style(getStubMap());
286
+ const style = createStyle();
276
287
 
277
288
  style.on('style.load', () => {
278
289
  expect(style.getLayer('fill') instanceof StyleLayer).toBeTruthy();
@@ -298,7 +309,7 @@ describe('Style#loadJSON', () => {
298
309
  test('transforms sprite json and image URLs before request', done => {
299
310
  const map = getStubMap();
300
311
  const transformSpy = jest.spyOn(map._requestManager, 'transformRequest');
301
- const style = new Style(map);
312
+ const style = createStyle(map);
302
313
 
303
314
  style.on('style.load', () => {
304
315
  expect(transformSpy).toHaveBeenCalledTimes(2);
@@ -315,7 +326,7 @@ describe('Style#loadJSON', () => {
315
326
  });
316
327
 
317
328
  test('emits an error on non-existant vector source layer', done => {
318
- const style = new Style(getStubMap());
329
+ const style = createStyle();
319
330
  style.loadJSON(createStyleJSON({
320
331
  sources: {
321
332
  '-source-id-': {type: 'vector', tiles: []}
@@ -403,7 +414,7 @@ describe('Style#_remove', () => {
403
414
 
404
415
  describe('Style#update', () => {
405
416
  test('on error', done => {
406
- const style = new Style(getStubMap());
417
+ const style = createStyle();
407
418
  style.loadJSON({
408
419
  'version': 8,
409
420
  'sources': {
@@ -445,7 +456,7 @@ describe('Style#setState', () => {
445
456
  });
446
457
 
447
458
  test('do nothing if there are no changes', done => {
448
- const style = new Style(getStubMap());
459
+ const style = createStyle();
449
460
  style.loadJSON(createStyleJSON());
450
461
  jest.spyOn(style, 'addLayer').mockImplementation(() => done('test failed'));
451
462
  jest.spyOn(style, 'removeLayer').mockImplementation(() => done('test failed'));
@@ -570,7 +581,7 @@ describe('Style#addSource', () => {
570
581
  });
571
582
 
572
583
  test('fires "data" event', done => {
573
- const style = new Style(getStubMap());
584
+ const style = createStyle();
574
585
  style.loadJSON(createStyleJSON());
575
586
  const source = createSource();
576
587
  style.once('data', () => { done(); });
@@ -581,7 +592,7 @@ describe('Style#addSource', () => {
581
592
  });
582
593
 
583
594
  test('throws on duplicates', done => {
584
- const style = new Style(getStubMap());
595
+ const style = createStyle();
585
596
  style.loadJSON(createStyleJSON());
586
597
  const source = createSource();
587
598
  style.on('style.load', () => {
@@ -603,7 +614,7 @@ describe('Style#addSource', () => {
603
614
  done();
604
615
  }
605
616
  };
606
- const style = new Style(getStubMap());
617
+ const style = createStyle();
607
618
  style.loadJSON(createStyleJSON({
608
619
  layers: [{
609
620
  id: 'background',
@@ -791,7 +802,7 @@ describe('Style#addLayer', () => {
791
802
  });
792
803
 
793
804
  test('throws on non-existant vector source layer', done => {
794
- const style = new Style(getStubMap());
805
+ const style = createStyle();
795
806
  style.loadJSON(createStyleJSON({
796
807
  sources: {
797
808
  // At least one source must be added to trigger the load event
@@ -860,7 +871,7 @@ describe('Style#addLayer', () => {
860
871
  });
861
872
 
862
873
  test('reloads source', done => {
863
- const style = new Style(getStubMap());
874
+ const style = createStyle();
864
875
  style.loadJSON(extend(createStyleJSON(), {
865
876
  'sources': {
866
877
  'mapLibre': {
@@ -887,7 +898,7 @@ describe('Style#addLayer', () => {
887
898
  });
888
899
 
889
900
  test('#3895 reloads source (instead of clearing) if adding this layer with the same type, immediately after removing it', done => {
890
- const style = new Style(getStubMap());
901
+ const style = createStyle();
891
902
  style.loadJSON(extend(createStyleJSON(), {
892
903
  'sources': {
893
904
  'mapLibre': {
@@ -924,7 +935,7 @@ describe('Style#addLayer', () => {
924
935
  });
925
936
 
926
937
  test('clears source (instead of reloading) if adding this layer with a different type, immediately after removing it', done => {
927
- const style = new Style(getStubMap());
938
+ const style = createStyle();
928
939
  style.loadJSON(extend(createStyleJSON(), {
929
940
  'sources': {
930
941
  'mapLibre': {
@@ -37,8 +37,8 @@ import {validateCustomStyleLayer} from './style_layer/custom_style_layer';
37
37
  // to continue to allow canvas sources to be added at runtime/updated in
38
38
  // smart setStyle (see https://github.com/mapbox/mapbox-gl-js/pull/6424):
39
39
  const emitValidationErrors = (evented: Evented, errors?: ReadonlyArray<{
40
- message: string;
41
- identifier?: string;
40
+ message: string;
41
+ identifier?: string;
42
42
  }> | null) =>
43
43
  _emitValidationErrors(evented, errors && errors.filter(error => error.identifier !== 'source.canvas'));
44
44
 
@@ -88,12 +88,12 @@ const ignoredDiffOperations = pick(diffOperations, [
88
88
  const empty = emptyStyle() as StyleSpecification;
89
89
 
90
90
  export type StyleOptions = {
91
- validate?: boolean;
92
- localIdeographFontFamily?: string;
91
+ validate?: boolean;
92
+ localIdeographFontFamily?: string;
93
93
  };
94
94
 
95
95
  export type StyleSetterOptions = {
96
- validate?: boolean;
96
+ validate?: boolean;
97
97
  };
98
98
  /**
99
99
  * @private
@@ -203,7 +203,7 @@ class Style extends Evented {
203
203
  }
204
204
 
205
205
  loadURL(url: string, options: {
206
- validate?: boolean;
206
+ validate?: boolean;
207
207
  } = {}) {
208
208
  this.fire(new Event('dataloading', {dataType: 'style'}));
209
209
 
@@ -276,7 +276,7 @@ class Style extends Evented {
276
276
  }
277
277
 
278
278
  _loadSprite(url: string) {
279
- this._spriteRequest = loadSprite(url, this.map._requestManager, (err, images) => {
279
+ this._spriteRequest = loadSprite(url, this.map._requestManager, this.map.getPixelRatio(), (err, images) => {
280
280
  this._spriteRequest = null;
281
281
  if (err) {
282
282
  this.fire(new ErrorEvent(err));
@@ -611,10 +611,10 @@ class Style extends Evented {
611
611
  }
612
612
 
613
613
  /**
614
- * Set the data of a GeoJSON source, given its id.
615
- * @param {string} id id of the source
616
- * @param {GeoJSON|string} data GeoJSON source
617
- */
614
+ * Set the data of a GeoJSON source, given its id.
615
+ * @param {string} id id of the source
616
+ * @param {GeoJSON|string} data GeoJSON source
617
+ */
618
618
  setGeoJSONSourceData(id: string, data: GeoJSON.GeoJSON | string) {
619
619
  this._checkLoaded();
620
620
 
@@ -716,7 +716,7 @@ class Style extends Evented {
716
716
  /**
717
717
  * Moves a layer to a different z-position. The layer will be inserted before the layer with
718
718
  * ID `before`, or appended if `before` is omitted.
719
- * @param {string} id ID of the layer to move
719
+ * @param {string} id ID of the layer to move
720
720
  * @param {string} [before] ID of an existing layer to insert before
721
721
  */
722
722
  moveLayer(id: string, before?: string) {
@@ -913,9 +913,9 @@ class Style extends Evented {
913
913
  }
914
914
 
915
915
  setFeatureState(target: {
916
- source: string;
917
- sourceLayer?: string;
918
- id: string | number;
916
+ source: string;
917
+ sourceLayer?: string;
918
+ id: string | number;
919
919
  }, state: any) {
920
920
  this._checkLoaded();
921
921
  const sourceId = target.source;
@@ -943,9 +943,9 @@ class Style extends Evented {
943
943
  }
944
944
 
945
945
  removeFeatureState(target: {
946
- source: string;
947
- sourceLayer?: string;
948
- id?: string | number;
946
+ source: string;
947
+ sourceLayer?: string;
948
+ id?: string | number;
949
949
  }, key?: string) {
950
950
  this._checkLoaded();
951
951
  const sourceId = target.source;
@@ -973,9 +973,9 @@ class Style extends Evented {
973
973
  }
974
974
 
975
975
  getFeatureState(target: {
976
- source: string;
977
- sourceLayer?: string;
978
- id: string | number;
976
+ source: string;
977
+ sourceLayer?: string;
978
+ id: string | number;
979
979
  }) {
980
980
  this._checkLoaded();
981
981
  const sourceId = target.source;
@@ -1218,7 +1218,7 @@ class Style extends Evented {
1218
1218
  }
1219
1219
 
1220
1220
  _validate(validate: Validator, key: string, value: any, props: any, options: {
1221
- validate?: boolean;
1221
+ validate?: boolean;
1222
1222
  } = {}) {
1223
1223
  if (options && options.validate === false) {
1224
1224
  return false;
@@ -1354,14 +1354,14 @@ class Style extends Evented {
1354
1354
  // Callbacks from web workers
1355
1355
 
1356
1356
  getImages(
1357
- mapId: string,
1358
- params: {
1359
- icons: Array<string>;
1360
- source: string;
1361
- tileID: OverscaledTileID;
1362
- type: string;
1363
- },
1364
- callback: Callback<{[_: string]: StyleImage}>
1357
+ mapId: string,
1358
+ params: {
1359
+ icons: Array<string>;
1360
+ source: string;
1361
+ tileID: OverscaledTileID;
1362
+ type: string;
1363
+ },
1364
+ callback: Callback<{[_: string]: StyleImage}>
1365
1365
  ) {
1366
1366
  this.imageManager.getImages(params.icons, callback);
1367
1367
 
@@ -1,15 +1,15 @@
1
1
  import type {AlphaImage} from '../util/image';
2
2
 
3
3
  export type GlyphMetrics = {
4
- width: number;
5
- height: number;
6
- left: number;
7
- top: number;
8
- advance: number;
4
+ width: number;
5
+ height: number;
6
+ left: number;
7
+ top: number;
8
+ advance: number;
9
9
  };
10
10
 
11
11
  export type StyleGlyph = {
12
- id: number;
13
- bitmap: AlphaImage;
14
- metrics: GlyphMetrics;
12
+ id: number;
13
+ bitmap: AlphaImage;
14
+ metrics: GlyphMetrics;
15
15
  };