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
@@ -2,59 +2,59 @@ type ExpressionType = 'data-driven' | 'cross-faded' | 'cross-faded-data-driven'
2
2
  type ExpressionParameters = Array<'zoom' | 'feature' | 'feature-state' | 'heatmap-density' | 'line-progress'>;
3
3
 
4
4
  type ExpressionSpecification = {
5
- interpolated: boolean;
6
- parameters: ExpressionParameters;
5
+ interpolated: boolean;
6
+ parameters: ExpressionParameters;
7
7
  };
8
8
 
9
9
  export type StylePropertySpecification = {
10
- type: 'number';
11
- 'property-type': ExpressionType;
12
- expression?: ExpressionSpecification;
13
- transition: boolean;
14
- default?: number;
10
+ type: 'number';
11
+ 'property-type': ExpressionType;
12
+ expression?: ExpressionSpecification;
13
+ transition: boolean;
14
+ default?: number;
15
15
  } | {
16
- type: 'string';
17
- 'property-type': ExpressionType;
18
- expression?: ExpressionSpecification;
19
- transition: boolean;
20
- default?: string;
21
- tokens?: boolean;
16
+ type: 'string';
17
+ 'property-type': ExpressionType;
18
+ expression?: ExpressionSpecification;
19
+ transition: boolean;
20
+ default?: string;
21
+ tokens?: boolean;
22
22
  } | {
23
- type: 'boolean';
24
- 'property-type': ExpressionType;
25
- expression?: ExpressionSpecification;
26
- transition: boolean;
27
- default?: boolean;
23
+ type: 'boolean';
24
+ 'property-type': ExpressionType;
25
+ expression?: ExpressionSpecification;
26
+ transition: boolean;
27
+ default?: boolean;
28
28
  } | {
29
- type: 'enum';
30
- 'property-type': ExpressionType;
31
- expression?: ExpressionSpecification;
32
- values: {[_: string]: {}};
33
- transition: boolean;
34
- default?: string;
29
+ type: 'enum';
30
+ 'property-type': ExpressionType;
31
+ expression?: ExpressionSpecification;
32
+ values: {[_: string]: {}};
33
+ transition: boolean;
34
+ default?: string;
35
35
  } | {
36
- type: 'color';
37
- 'property-type': ExpressionType;
38
- expression?: ExpressionSpecification;
39
- transition: boolean;
40
- default?: string;
41
- overridable: boolean;
36
+ type: 'color';
37
+ 'property-type': ExpressionType;
38
+ expression?: ExpressionSpecification;
39
+ transition: boolean;
40
+ default?: string;
41
+ overridable: boolean;
42
42
  } | {
43
- type: 'array';
44
- value: 'number';
45
- 'property-type': ExpressionType;
46
- expression?: ExpressionSpecification;
47
- length?: number;
48
- transition: boolean;
49
- default?: Array<number>;
43
+ type: 'array';
44
+ value: 'number';
45
+ 'property-type': ExpressionType;
46
+ expression?: ExpressionSpecification;
47
+ length?: number;
48
+ transition: boolean;
49
+ default?: Array<number>;
50
50
  } | {
51
- type: 'array';
52
- value: 'string';
53
- 'property-type': ExpressionType;
54
- expression?: ExpressionSpecification;
55
- length?: number;
56
- transition: boolean;
57
- default?: Array<string>;
51
+ type: 'array';
52
+ value: 'string';
53
+ 'property-type': ExpressionType;
54
+ expression?: ExpressionSpecification;
55
+ length?: number;
56
+ transition: boolean;
57
+ default?: Array<string>;
58
58
  };
59
59
 
60
60
  import v8 from './reference/v8.json';
@@ -3,17 +3,17 @@ import Color from './color';
3
3
  import {number as interpolateNumber} from './interpolate';
4
4
 
5
5
  type LABColor = {
6
- l: number;
7
- a: number;
8
- b: number;
9
- alpha: number;
6
+ l: number;
7
+ a: number;
8
+ b: number;
9
+ alpha: number;
10
10
  };
11
11
 
12
12
  type HCLColor = {
13
- h: number;
14
- c: number;
15
- l: number;
16
- alpha: number;
13
+ h: number;
14
+ c: number;
15
+ l: number;
16
+ alpha: number;
17
17
  };
18
18
 
19
19
  // Constants
@@ -5,11 +5,11 @@
5
5
  * @private
6
6
  */
7
7
  export type Result<T, E> = {
8
- result: 'success';
9
- value: T;
8
+ result: 'success';
9
+ value: T;
10
10
  } | {
11
- result: 'error';
12
- value: E;
11
+ result: 'error';
12
+ value: E;
13
13
  };
14
14
 
15
15
  export function success<T, E>(value: T): Result<T, E> {
@@ -44,74 +44,74 @@ function validateNonExpressionFilter(options) {
44
44
  }));
45
45
 
46
46
  switch (unbundle(value[0])) {
47
- case '<':
48
- case '<=':
49
- case '>':
50
- case '>=':
51
- if (value.length >= 2 && unbundle(value[1]) === '$type') {
52
- errors.push(new ValidationError(key, value, `"$type" cannot be use with operator "${value[0]}"`));
53
- }
47
+ case '<':
48
+ case '<=':
49
+ case '>':
50
+ case '>=':
51
+ if (value.length >= 2 && unbundle(value[1]) === '$type') {
52
+ errors.push(new ValidationError(key, value, `"$type" cannot be use with operator "${value[0]}"`));
53
+ }
54
54
  /* falls through */
55
- case '==':
56
- case '!=':
57
- if (value.length !== 3) {
58
- errors.push(new ValidationError(key, value, `filter array for operator "${value[0]}" must have 3 elements`));
59
- }
55
+ case '==':
56
+ case '!=':
57
+ if (value.length !== 3) {
58
+ errors.push(new ValidationError(key, value, `filter array for operator "${value[0]}" must have 3 elements`));
59
+ }
60
60
  /* falls through */
61
- case 'in':
62
- case '!in':
63
- if (value.length >= 2) {
64
- type = getType(value[1]);
65
- if (type !== 'string') {
66
- errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));
61
+ case 'in':
62
+ case '!in':
63
+ if (value.length >= 2) {
64
+ type = getType(value[1]);
65
+ if (type !== 'string') {
66
+ errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));
67
+ }
68
+ }
69
+ for (let i = 2; i < value.length; i++) {
70
+ type = getType(value[i]);
71
+ if (unbundle(value[1]) === '$type') {
72
+ errors = errors.concat(validateEnum({
73
+ key: `${key}[${i}]`,
74
+ value: value[i],
75
+ valueSpec: styleSpec.geometry_type,
76
+ style: options.style,
77
+ styleSpec: options.styleSpec
78
+ }));
79
+ } else if (type !== 'string' && type !== 'number' && type !== 'boolean') {
80
+ errors.push(new ValidationError(`${key}[${i}]`, value[i], `string, number, or boolean expected, ${type} found`));
81
+ }
67
82
  }
68
- }
69
- for (let i = 2; i < value.length; i++) {
70
- type = getType(value[i]);
71
- if (unbundle(value[1]) === '$type') {
72
- errors = errors.concat(validateEnum({
83
+ break;
84
+
85
+ case 'any':
86
+ case 'all':
87
+ case 'none':
88
+ for (let i = 1; i < value.length; i++) {
89
+ errors = errors.concat(validateNonExpressionFilter({
73
90
  key: `${key}[${i}]`,
74
91
  value: value[i],
75
- valueSpec: styleSpec.geometry_type,
76
92
  style: options.style,
77
93
  styleSpec: options.styleSpec
78
94
  }));
79
- } else if (type !== 'string' && type !== 'number' && type !== 'boolean') {
80
- errors.push(new ValidationError(`${key}[${i}]`, value[i], `string, number, or boolean expected, ${type} found`));
81
95
  }
82
- }
83
- break;
96
+ break;
84
97
 
85
- case 'any':
86
- case 'all':
87
- case 'none':
88
- for (let i = 1; i < value.length; i++) {
89
- errors = errors.concat(validateNonExpressionFilter({
90
- key: `${key}[${i}]`,
91
- value: value[i],
92
- style: options.style,
93
- styleSpec: options.styleSpec
94
- }));
95
- }
96
- break;
97
-
98
- case 'has':
99
- case '!has':
100
- type = getType(value[1]);
101
- if (value.length !== 2) {
102
- errors.push(new ValidationError(key, value, `filter array for "${value[0]}" operator must have 2 elements`));
103
- } else if (type !== 'string') {
104
- errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));
105
- }
106
- break;
107
- case 'within':
108
- type = getType(value[1]);
109
- if (value.length !== 2) {
110
- errors.push(new ValidationError(key, value, `filter array for "${value[0]}" operator must have 2 elements`));
111
- } else if (type !== 'object') {
112
- errors.push(new ValidationError(`${key}[1]`, value[1], `object expected, ${type} found`));
113
- }
114
- break;
98
+ case 'has':
99
+ case '!has':
100
+ type = getType(value[1]);
101
+ if (value.length !== 2) {
102
+ errors.push(new ValidationError(key, value, `filter array for "${value[0]}" operator must have 2 elements`));
103
+ } else if (type !== 'string') {
104
+ errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));
105
+ }
106
+ break;
107
+ case 'within':
108
+ type = getType(value[1]);
109
+ if (value.length !== 2) {
110
+ errors.push(new ValidationError(key, value, `filter array for "${value[0]}" operator must have 2 elements`));
111
+ } else if (type !== 'object') {
112
+ errors.push(new ValidationError(`${key}[1]`, value[1], `object expected, ${type} found`));
113
+ }
114
+ break;
115
115
  }
116
116
  return errors;
117
117
  }
@@ -25,76 +25,76 @@ export default function validateSource(options) {
25
25
  let errors;
26
26
 
27
27
  switch (type) {
28
- case 'vector':
29
- case 'raster':
30
- case 'raster-dem':
31
- errors = validateObject({
32
- key,
33
- value,
34
- valueSpec: styleSpec[`source_${type.replace('-', '_')}`],
35
- style: options.style,
36
- styleSpec,
37
- objectElementValidators
38
- });
39
- return errors;
28
+ case 'vector':
29
+ case 'raster':
30
+ case 'raster-dem':
31
+ errors = validateObject({
32
+ key,
33
+ value,
34
+ valueSpec: styleSpec[`source_${type.replace('-', '_')}`],
35
+ style: options.style,
36
+ styleSpec,
37
+ objectElementValidators
38
+ });
39
+ return errors;
40
40
 
41
- case 'geojson':
42
- errors = validateObject({
43
- key,
44
- value,
45
- valueSpec: styleSpec.source_geojson,
46
- style,
47
- styleSpec,
48
- objectElementValidators
49
- });
50
- if (value.cluster) {
51
- for (const prop in value.clusterProperties) {
52
- const [operator, mapExpr] = value.clusterProperties[prop];
53
- const reduceExpr = typeof operator === 'string' ? [operator, ['accumulated'], ['get', prop]] : operator;
41
+ case 'geojson':
42
+ errors = validateObject({
43
+ key,
44
+ value,
45
+ valueSpec: styleSpec.source_geojson,
46
+ style,
47
+ styleSpec,
48
+ objectElementValidators
49
+ });
50
+ if (value.cluster) {
51
+ for (const prop in value.clusterProperties) {
52
+ const [operator, mapExpr] = value.clusterProperties[prop];
53
+ const reduceExpr = typeof operator === 'string' ? [operator, ['accumulated'], ['get', prop]] : operator;
54
54
 
55
- errors.push(...validateExpression({
56
- key: `${key}.${prop}.map`,
57
- value: mapExpr,
58
- expressionContext: 'cluster-map'
59
- }));
60
- errors.push(...validateExpression({
61
- key: `${key}.${prop}.reduce`,
62
- value: reduceExpr,
63
- expressionContext: 'cluster-reduce'
64
- }));
55
+ errors.push(...validateExpression({
56
+ key: `${key}.${prop}.map`,
57
+ value: mapExpr,
58
+ expressionContext: 'cluster-map'
59
+ }));
60
+ errors.push(...validateExpression({
61
+ key: `${key}.${prop}.reduce`,
62
+ value: reduceExpr,
63
+ expressionContext: 'cluster-reduce'
64
+ }));
65
+ }
65
66
  }
66
- }
67
- return errors;
67
+ return errors;
68
68
 
69
- case 'video':
70
- return validateObject({
71
- key,
72
- value,
73
- valueSpec: styleSpec.source_video,
74
- style,
75
- styleSpec
76
- });
69
+ case 'video':
70
+ return validateObject({
71
+ key,
72
+ value,
73
+ valueSpec: styleSpec.source_video,
74
+ style,
75
+ styleSpec
76
+ });
77
77
 
78
- case 'image':
79
- return validateObject({
80
- key,
81
- value,
82
- valueSpec: styleSpec.source_image,
83
- style,
84
- styleSpec
85
- });
78
+ case 'image':
79
+ return validateObject({
80
+ key,
81
+ value,
82
+ valueSpec: styleSpec.source_image,
83
+ style,
84
+ styleSpec
85
+ });
86
86
 
87
- case 'canvas':
88
- return [new ValidationError(key, null, 'Please use runtime APIs to add canvas sources, rather than including them in stylesheets.', 'source.canvas')];
87
+ case 'canvas':
88
+ return [new ValidationError(key, null, 'Please use runtime APIs to add canvas sources, rather than including them in stylesheets.', 'source.canvas')];
89
89
 
90
- default:
91
- return validateEnum({
92
- key: `${key}.type`,
93
- value: value.type,
94
- valueSpec: {values: ['vector', 'raster', 'raster-dem', 'geojson', 'video', 'image']},
95
- style,
96
- styleSpec
97
- });
90
+ default:
91
+ return validateEnum({
92
+ key: `${key}.type`,
93
+ value: value.type,
94
+ valueSpec: {values: ['vector', 'raster', 'raster-dem', 'geojson', 'video', 'image']},
95
+ style,
96
+ styleSpec
97
+ });
98
98
  }
99
99
  }
100
100
 
@@ -36,22 +36,22 @@ export function eachLayer(style: StyleSpecification, callback: (_: LayerSpecific
36
36
  }
37
37
 
38
38
  type PropertyCallback = (
39
- a: {
40
- path: [string, 'paint' | 'layout', string]; // [layerid, paint/layout, property key],
41
- key: string;
42
- value: PropertyValueSpecification<unknown> | DataDrivenPropertyValueSpecification<unknown>;
43
- reference: StylePropertySpecification;
44
- set: (
45
- a: PropertyValueSpecification<unknown> | DataDrivenPropertyValueSpecification<unknown>
46
- ) => void;
47
- }
39
+ a: {
40
+ path: [string, 'paint' | 'layout', string]; // [layerid, paint/layout, property key],
41
+ key: string;
42
+ value: PropertyValueSpecification<unknown> | DataDrivenPropertyValueSpecification<unknown>;
43
+ reference: StylePropertySpecification;
44
+ set: (
45
+ a: PropertyValueSpecification<unknown> | DataDrivenPropertyValueSpecification<unknown>
46
+ ) => void;
47
+ }
48
48
  ) => void;
49
49
 
50
50
  export function eachProperty(
51
51
  style: StyleSpecification,
52
52
  options: {
53
- paint?: boolean;
54
- layout?: boolean;
53
+ paint?: boolean;
54
+ layout?: boolean;
55
55
  },
56
56
  callback: PropertyCallback
57
57
  ) {
@@ -1,7 +1,7 @@
1
1
  import CollisionFeature from './collision_feature';
2
2
  import Anchor from './anchor';
3
3
  import Point from '@mapbox/point-geometry';
4
- import {CollisionBoxArray} from '../data/array_types';
4
+ import {CollisionBoxArray} from '../data/array_types.g';
5
5
 
6
6
  describe('CollisionFeature', () => {
7
7
 
@@ -1,4 +1,4 @@
1
- import type {CollisionBoxArray} from '../data/array_types';
1
+ import type {CollisionBoxArray} from '../data/array_types.g';
2
2
  import Point from '@mapbox/point-geometry';
3
3
  import type Anchor from './anchor';
4
4
 
@@ -27,15 +27,15 @@ class CollisionFeature {
27
27
  * @private
28
28
  */
29
29
  constructor(collisionBoxArray: CollisionBoxArray,
30
- anchor: Anchor,
31
- featureIndex: number,
32
- sourceLayerIndex: number,
33
- bucketIndex: number,
34
- shaped: any,
35
- boxScale: number,
36
- padding: number,
37
- alignLine: boolean,
38
- rotate: number) {
30
+ anchor: Anchor,
31
+ featureIndex: number,
32
+ sourceLayerIndex: number,
33
+ bucketIndex: number,
34
+ shaped: any,
35
+ boxScale: number,
36
+ padding: number,
37
+ alignLine: boolean,
38
+ rotate: number) {
39
39
 
40
40
  this.boxStartIndex = collisionBoxArray.length;
41
41
 
@@ -15,7 +15,7 @@ import type {SingleCollisionBox} from '../data/bucket/symbol_bucket';
15
15
  import type {
16
16
  GlyphOffsetArray,
17
17
  SymbolLineVertexArray
18
- } from '../data/array_types';
18
+ } from '../data/array_types.g';
19
19
  import type {OverlapMode} from '../style/style_layer/symbol_style_layer';
20
20
 
21
21
  // When a symbol crosses the edge that causes it to be included in
@@ -73,15 +73,15 @@ class CollisionIndex {
73
73
  }
74
74
 
75
75
  placeCollisionBox(
76
- collisionBox: SingleCollisionBox,
77
- overlapMode: OverlapMode,
78
- textPixelRatio: number,
79
- posMatrix: mat4,
80
- collisionGroupPredicate?: (key: FeatureKey) => boolean
76
+ collisionBox: SingleCollisionBox,
77
+ overlapMode: OverlapMode,
78
+ textPixelRatio: number,
79
+ posMatrix: mat4,
80
+ collisionGroupPredicate?: (key: FeatureKey) => boolean
81
81
  ): {
82
- box: Array<number>;
83
- offscreen: boolean;
84
- } {
82
+ box: Array<number>;
83
+ offscreen: boolean;
84
+ } {
85
85
  const projectedPoint = this.projectAndGetPerspectiveRatio(posMatrix, collisionBox.anchorPointX, collisionBox.anchorPointY);
86
86
  const tileToViewport = textPixelRatio * projectedPoint.perspectiveRatio;
87
87
  const tlX = collisionBox.x1 * tileToViewport + projectedPoint.point.x;
@@ -104,24 +104,24 @@ class CollisionIndex {
104
104
  }
105
105
 
106
106
  placeCollisionCircles(
107
- overlapMode: OverlapMode,
108
- symbol: any,
109
- lineVertexArray: SymbolLineVertexArray,
110
- glyphOffsetArray: GlyphOffsetArray,
111
- fontSize: number,
112
- posMatrix: mat4,
113
- labelPlaneMatrix: mat4,
114
- labelToScreenMatrix: mat4,
115
- showCollisionCircles: boolean,
116
- pitchWithMap: boolean,
117
- collisionGroupPredicate: (key: FeatureKey) => boolean,
118
- circlePixelDiameter: number,
119
- textPixelPadding: number
107
+ overlapMode: OverlapMode,
108
+ symbol: any,
109
+ lineVertexArray: SymbolLineVertexArray,
110
+ glyphOffsetArray: GlyphOffsetArray,
111
+ fontSize: number,
112
+ posMatrix: mat4,
113
+ labelPlaneMatrix: mat4,
114
+ labelToScreenMatrix: mat4,
115
+ showCollisionCircles: boolean,
116
+ pitchWithMap: boolean,
117
+ collisionGroupPredicate: (key: FeatureKey) => boolean,
118
+ circlePixelDiameter: number,
119
+ textPixelPadding: number
120
120
  ): {
121
- circles: Array<number>;
122
- offscreen: boolean;
123
- collisionDetected: boolean;
124
- } {
121
+ circles: Array<number>;
122
+ offscreen: boolean;
123
+ collisionDetected: boolean;
124
+ } {
125
125
  const placedCollisionCircles = [];
126
126
 
127
127
  const tileUnitAnchorPoint = new Point(symbol.anchorX, symbol.anchorY);
@@ -1,8 +1,8 @@
1
1
  import EXTENT from '../data/extent';
2
2
 
3
- import {SymbolInstanceArray} from '../data/array_types';
3
+ import {SymbolInstanceArray} from '../data/array_types.g';
4
4
 
5
- import type {SymbolInstance} from '../data/array_types';
5
+ import type {SymbolInstance} from '../data/array_types.g';
6
6
  import type {OverscaledTileID} from '../source/tile_id';
7
7
  import type SymbolBucket from '../data/bucket/symbol_bucket';
8
8
  import type StyleLayer from '../style/style_layer';
@@ -28,13 +28,13 @@ const roundingFactor = 512 / EXTENT / 2;
28
28
  class TileLayerIndex {
29
29
  tileID: OverscaledTileID;
30
30
  indexedSymbolInstances: {
31
- [_: number]: Array<{
32
- crossTileID: number;
33
- coord: {
34
- x: number;
35
- y: number;
36
- };
37
- }>;
31
+ [_: number]: Array<{
32
+ crossTileID: number;
33
+ coord: {
34
+ x: number;
35
+ y: number;
36
+ };
37
+ }>;
38
38
  };
39
39
  bucketInstanceId: number;
40
40
 
@@ -74,7 +74,7 @@ class TileLayerIndex {
74
74
  }
75
75
 
76
76
  findMatches(symbolInstances: SymbolInstanceArray, newTileID: OverscaledTileID, zoomCrossTileIDs: {
77
- [crossTileID: number]: boolean;
77
+ [crossTileID: number]: boolean;
78
78
  }) {
79
79
  const tolerance = this.tileID.canonical.z < newTileID.canonical.z ? 1 : Math.pow(2, this.tileID.canonical.z - newTileID.canonical.z);
80
80
 
@@ -123,14 +123,14 @@ class CrossTileIDs {
123
123
 
124
124
  class CrossTileSymbolLayerIndex {
125
125
  indexes: {
126
- [zoom in string | number]: {
127
- [tileId in string | number]: TileLayerIndex;
128
- };
126
+ [zoom in string | number]: {
127
+ [tileId in string | number]: TileLayerIndex;
128
+ };
129
129
  };
130
130
  usedCrossTileIDs: {
131
- [zoom in string | number]: {
132
- [crossTileID: number]: boolean;
133
- };
131
+ [zoom in string | number]: {
132
+ [crossTileID: number]: boolean;
133
+ };
134
134
  };
135
135
  lng: number;
136
136
 
@@ -234,7 +234,7 @@ class CrossTileSymbolLayerIndex {
234
234
  }
235
235
 
236
236
  removeStaleBuckets(currentIDs: {
237
- [k in string | number]: boolean;
237
+ [k in string | number]: boolean;
238
238
  }) {
239
239
  let tilesChanged = false;
240
240
  for (const z in this.indexes) {