mapbox-gl 1.13.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 (460) hide show
  1. package/.flowconfig +61 -0
  2. package/CHANGELOG.md +2485 -0
  3. package/LICENSE.txt +84 -0
  4. package/README.md +34 -0
  5. package/build/banner.js +4 -0
  6. package/build/check-bundle-size.js +140 -0
  7. package/build/diff-tarball.js +18 -0
  8. package/build/generate-access-token-script.js +11 -0
  9. package/build/generate-flow-typed-style-spec.js +188 -0
  10. package/build/generate-release-list.js +21 -0
  11. package/build/generate-struct-arrays.js +243 -0
  12. package/build/generate-style-code.js +159 -0
  13. package/build/mapbox-gl.js.flow +3 -0
  14. package/build/print-release-url.js +6 -0
  15. package/build/rollup_plugin_minify_style_spec.js +24 -0
  16. package/build/rollup_plugins.js +80 -0
  17. package/build/run-node +3 -0
  18. package/build/run-tap +8 -0
  19. package/build/test/build-tape.js +19 -0
  20. package/dist/mapbox-gl-csp-worker.js +2 -0
  21. package/dist/mapbox-gl-csp-worker.js.map +1 -0
  22. package/dist/mapbox-gl-csp.js +2 -0
  23. package/dist/mapbox-gl-csp.js.map +1 -0
  24. package/dist/mapbox-gl-dev.js +65889 -0
  25. package/dist/mapbox-gl-dev.js.flow +3 -0
  26. package/dist/mapbox-gl-unminified.js +42889 -0
  27. package/dist/mapbox-gl-unminified.js.map +1 -0
  28. package/dist/mapbox-gl.css +1 -0
  29. package/dist/mapbox-gl.js +42 -0
  30. package/dist/mapbox-gl.js.flow +3 -0
  31. package/dist/mapbox-gl.js.map +1 -0
  32. package/dist/style-spec/index.es.js +15032 -0
  33. package/dist/style-spec/index.es.js.map +1 -0
  34. package/dist/style-spec/index.js +15058 -0
  35. package/dist/style-spec/index.js.map +1 -0
  36. package/flow-typed/gl.js +5 -0
  37. package/flow-typed/jsdom.js +18 -0
  38. package/flow-typed/mapbox-gl-supported.js +9 -0
  39. package/flow-typed/mapbox-unitbezier.js +14 -0
  40. package/flow-typed/offscreen-canvas.js +9 -0
  41. package/flow-typed/pbf.js +25 -0
  42. package/flow-typed/point-geometry.js +44 -0
  43. package/flow-typed/potpack.js +12 -0
  44. package/flow-typed/sinon.js +28 -0
  45. package/flow-typed/vector-tile.js +41 -0
  46. package/package.json +173 -0
  47. package/src/css/mapbox-gl.css +812 -0
  48. package/src/css/svg/mapboxgl-ctrl-attrib.svg +3 -0
  49. package/src/css/svg/mapboxgl-ctrl-compass.svg +4 -0
  50. package/src/css/svg/mapboxgl-ctrl-fullscreen.svg +3 -0
  51. package/src/css/svg/mapboxgl-ctrl-geolocate.svg +5 -0
  52. package/src/css/svg/mapboxgl-ctrl-logo.svg +20 -0
  53. package/src/css/svg/mapboxgl-ctrl-shrink.svg +3 -0
  54. package/src/css/svg/mapboxgl-ctrl-zoom-in.svg +3 -0
  55. package/src/css/svg/mapboxgl-ctrl-zoom-out.svg +3 -0
  56. package/src/data/array_types.js +1135 -0
  57. package/src/data/bucket/circle_attributes.js +9 -0
  58. package/src/data/bucket/circle_bucket.js +201 -0
  59. package/src/data/bucket/fill_attributes.js +9 -0
  60. package/src/data/bucket/fill_bucket.js +229 -0
  61. package/src/data/bucket/fill_extrusion_attributes.js +10 -0
  62. package/src/data/bucket/fill_extrusion_bucket.js +283 -0
  63. package/src/data/bucket/heatmap_bucket.js +17 -0
  64. package/src/data/bucket/line_attributes.js +10 -0
  65. package/src/data/bucket/line_attributes_ext.js +10 -0
  66. package/src/data/bucket/line_bucket.js +594 -0
  67. package/src/data/bucket/pattern_attributes.js +12 -0
  68. package/src/data/bucket/pattern_bucket_features.js +60 -0
  69. package/src/data/bucket/symbol_attributes.js +117 -0
  70. package/src/data/bucket/symbol_bucket.js +937 -0
  71. package/src/data/bucket.js +123 -0
  72. package/src/data/dem_data.js +125 -0
  73. package/src/data/evaluation_feature.js +25 -0
  74. package/src/data/extent.js +18 -0
  75. package/src/data/feature_index.js +322 -0
  76. package/src/data/feature_position_map.js +131 -0
  77. package/src/data/index_array_type.js +16 -0
  78. package/src/data/load_geometry.js +46 -0
  79. package/src/data/pos_attributes.js +6 -0
  80. package/src/data/program_configuration.js +708 -0
  81. package/src/data/raster_bounds_attributes.js +7 -0
  82. package/src/data/segment.js +76 -0
  83. package/src/geo/edge_insets.js +102 -0
  84. package/src/geo/lng_lat.js +168 -0
  85. package/src/geo/lng_lat_bounds.js +276 -0
  86. package/src/geo/mercator_coordinate.js +150 -0
  87. package/src/geo/transform.js +834 -0
  88. package/src/gl/color_mode.js +34 -0
  89. package/src/gl/context.js +302 -0
  90. package/src/gl/cull_face_mode.js +26 -0
  91. package/src/gl/depth_mode.js +29 -0
  92. package/src/gl/framebuffer.js +44 -0
  93. package/src/gl/index_buffer.js +55 -0
  94. package/src/gl/stencil_mode.js +30 -0
  95. package/src/gl/types.js +84 -0
  96. package/src/gl/value.js +520 -0
  97. package/src/gl/vertex_buffer.js +119 -0
  98. package/src/index.js +230 -0
  99. package/src/render/draw_background.js +57 -0
  100. package/src/render/draw_circle.js +113 -0
  101. package/src/render/draw_collision_debug.js +172 -0
  102. package/src/render/draw_custom.js +49 -0
  103. package/src/render/draw_debug.js +127 -0
  104. package/src/render/draw_fill.js +124 -0
  105. package/src/render/draw_fill_extrusion.js +95 -0
  106. package/src/render/draw_heatmap.js +133 -0
  107. package/src/render/draw_hillshade.js +107 -0
  108. package/src/render/draw_line.js +125 -0
  109. package/src/render/draw_raster.js +125 -0
  110. package/src/render/draw_symbol.js +392 -0
  111. package/src/render/glyph_atlas.js +71 -0
  112. package/src/render/glyph_manager.js +182 -0
  113. package/src/render/image_atlas.js +149 -0
  114. package/src/render/image_manager.js +306 -0
  115. package/src/render/line_atlas.js +210 -0
  116. package/src/render/painter.js +654 -0
  117. package/src/render/program/background_program.js +103 -0
  118. package/src/render/program/circle_program.js +69 -0
  119. package/src/render/program/clipping_mask_program.js +20 -0
  120. package/src/render/program/collision_program.js +76 -0
  121. package/src/render/program/debug_program.js +35 -0
  122. package/src/render/program/fill_extrusion_program.js +122 -0
  123. package/src/render/program/fill_program.js +126 -0
  124. package/src/render/program/heatmap_program.js +83 -0
  125. package/src/render/program/hillshade_program.js +119 -0
  126. package/src/render/program/line_program.js +211 -0
  127. package/src/render/program/pattern.js +102 -0
  128. package/src/render/program/program_uniforms.js +42 -0
  129. package/src/render/program/raster_program.js +92 -0
  130. package/src/render/program/symbol_program.js +224 -0
  131. package/src/render/program.js +188 -0
  132. package/src/render/texture.js +122 -0
  133. package/src/render/uniform_binding.js +147 -0
  134. package/src/render/vertex_array_object.js +163 -0
  135. package/src/shaders/README.md +42 -0
  136. package/src/shaders/_prelude.fragment.glsl +17 -0
  137. package/src/shaders/_prelude.vertex.glsl +73 -0
  138. package/src/shaders/background.fragment.glsl +10 -0
  139. package/src/shaders/background.vertex.glsl +7 -0
  140. package/src/shaders/background_pattern.fragment.glsl +28 -0
  141. package/src/shaders/background_pattern.vertex.glsl +20 -0
  142. package/src/shaders/circle.fragment.glsl +39 -0
  143. package/src/shaders/circle.vertex.glsl +64 -0
  144. package/src/shaders/clipping_mask.fragment.glsl +3 -0
  145. package/src/shaders/clipping_mask.vertex.glsl +7 -0
  146. package/src/shaders/collision_box.fragment.glsl +21 -0
  147. package/src/shaders/collision_box.vertex.glsl +27 -0
  148. package/src/shaders/collision_circle.fragment.glsl +17 -0
  149. package/src/shaders/collision_circle.vertex.glsl +59 -0
  150. package/src/shaders/debug.fragment.glsl +9 -0
  151. package/src/shaders/debug.vertex.glsl +12 -0
  152. package/src/shaders/encode_attribute.js +17 -0
  153. package/src/shaders/fill.fragment.glsl +13 -0
  154. package/src/shaders/fill.vertex.glsl +13 -0
  155. package/src/shaders/fill_extrusion.fragment.glsl +9 -0
  156. package/src/shaders/fill_extrusion.vertex.glsl +66 -0
  157. package/src/shaders/fill_extrusion_pattern.fragment.glsl +45 -0
  158. package/src/shaders/fill_extrusion_pattern.vertex.glsl +79 -0
  159. package/src/shaders/fill_outline.fragment.glsl +17 -0
  160. package/src/shaders/fill_outline.vertex.glsl +17 -0
  161. package/src/shaders/fill_outline_pattern.fragment.glsl +43 -0
  162. package/src/shaders/fill_outline_pattern.vertex.glsl +44 -0
  163. package/src/shaders/fill_pattern.fragment.glsl +36 -0
  164. package/src/shaders/fill_pattern.vertex.glsl +39 -0
  165. package/src/shaders/heatmap.fragment.glsl +22 -0
  166. package/src/shaders/heatmap.vertex.glsl +54 -0
  167. package/src/shaders/heatmap_texture.fragment.glsl +14 -0
  168. package/src/shaders/heatmap_texture.vertex.glsl +11 -0
  169. package/src/shaders/hillshade.fragment.glsl +52 -0
  170. package/src/shaders/hillshade.vertex.glsl +11 -0
  171. package/src/shaders/hillshade_prepare.fragment.glsl +75 -0
  172. package/src/shaders/hillshade_prepare.vertex.glsl +15 -0
  173. package/src/shaders/index.js +20 -0
  174. package/src/shaders/line.fragment.glsl +30 -0
  175. package/src/shaders/line.vertex.glsl +85 -0
  176. package/src/shaders/line_gradient.fragment.glsl +34 -0
  177. package/src/shaders/line_gradient.vertex.glsl +88 -0
  178. package/src/shaders/line_pattern.fragment.glsl +74 -0
  179. package/src/shaders/line_pattern.vertex.glsl +99 -0
  180. package/src/shaders/line_sdf.fragment.glsl +45 -0
  181. package/src/shaders/line_sdf.vertex.glsl +98 -0
  182. package/src/shaders/raster.fragment.glsl +52 -0
  183. package/src/shaders/raster.vertex.glsl +21 -0
  184. package/src/shaders/shaders.js +185 -0
  185. package/src/shaders/symbol_icon.fragment.glsl +17 -0
  186. package/src/shaders/symbol_icon.vertex.glsl +94 -0
  187. package/src/shaders/symbol_sdf.fragment.glsl +52 -0
  188. package/src/shaders/symbol_sdf.vertex.glsl +115 -0
  189. package/src/shaders/symbol_text_and_icon.fragment.glsl +68 -0
  190. package/src/shaders/symbol_text_and_icon.vertex.glsl +116 -0
  191. package/src/source/canvas_source.js +238 -0
  192. package/src/source/geojson_source.js +370 -0
  193. package/src/source/geojson_worker_source.js +366 -0
  194. package/src/source/geojson_wrapper.js +94 -0
  195. package/src/source/image_source.js +307 -0
  196. package/src/source/load_tilejson.js +39 -0
  197. package/src/source/pixels_to_tile_units.js +21 -0
  198. package/src/source/query_features.js +208 -0
  199. package/src/source/raster_dem_tile_source.js +138 -0
  200. package/src/source/raster_dem_tile_worker_source.js +62 -0
  201. package/src/source/raster_tile_source.js +169 -0
  202. package/src/source/rtl_text_plugin.js +143 -0
  203. package/src/source/source.js +137 -0
  204. package/src/source/source_cache.js +953 -0
  205. package/src/source/source_state.js +159 -0
  206. package/src/source/tile.js +458 -0
  207. package/src/source/tile_bounds.js +38 -0
  208. package/src/source/tile_cache.js +212 -0
  209. package/src/source/tile_id.js +199 -0
  210. package/src/source/vector_tile_source.js +259 -0
  211. package/src/source/vector_tile_worker_source.js +216 -0
  212. package/src/source/video_source.js +203 -0
  213. package/src/source/worker.js +240 -0
  214. package/src/source/worker_source.js +107 -0
  215. package/src/source/worker_tile.js +224 -0
  216. package/src/style/create_style_layer.js +36 -0
  217. package/src/style/evaluation_parameters.js +62 -0
  218. package/src/style/format_section_override.js +56 -0
  219. package/src/style/light.js +130 -0
  220. package/src/style/load_glyph_range.js +38 -0
  221. package/src/style/load_sprite.js +67 -0
  222. package/src/style/parse_glyph_pbf.js +44 -0
  223. package/src/style/pauseable_placement.js +132 -0
  224. package/src/style/properties.js +753 -0
  225. package/src/style/query_utils.js +43 -0
  226. package/src/style/style.js +1374 -0
  227. package/src/style/style_glyph.js +17 -0
  228. package/src/style/style_image.js +137 -0
  229. package/src/style/style_layer/background_style_layer.js +21 -0
  230. package/src/style/style_layer/background_style_layer_properties.js +40 -0
  231. package/src/style/style_layer/circle_style_layer.js +98 -0
  232. package/src/style/style_layer/circle_style_layer_properties.js +63 -0
  233. package/src/style/style_layer/custom_style_layer.js +223 -0
  234. package/src/style/style_layer/fill_extrusion_style_layer.js +224 -0
  235. package/src/style/style_layer/fill_extrusion_style_layer_properties.js +50 -0
  236. package/src/style/style_layer/fill_style_layer.js +67 -0
  237. package/src/style/style_layer/fill_style_layer_properties.js +55 -0
  238. package/src/style/style_layer/heatmap_style_layer.js +73 -0
  239. package/src/style/style_layer/heatmap_style_layer_properties.js +44 -0
  240. package/src/style/style_layer/hillshade_style_layer.js +25 -0
  241. package/src/style/style_layer/hillshade_style_layer_properties.js +46 -0
  242. package/src/style/style_layer/layer_properties.js.ejs +69 -0
  243. package/src/style/style_layer/line_style_layer.js +150 -0
  244. package/src/style/style_layer/line_style_layer_properties.js +71 -0
  245. package/src/style/style_layer/raster_style_layer.js +21 -0
  246. package/src/style/style_layer/raster_style_layer_properties.js +50 -0
  247. package/src/style/style_layer/symbol_style_layer.js +190 -0
  248. package/src/style/style_layer/symbol_style_layer_properties.js +153 -0
  249. package/src/style/style_layer/typed_style_layer.js +17 -0
  250. package/src/style/style_layer.js +283 -0
  251. package/src/style/style_layer_index.js +80 -0
  252. package/src/style/validate_style.js +42 -0
  253. package/src/style/zoom_history.js +44 -0
  254. package/src/style-spec/.eslintrc +5 -0
  255. package/src/style-spec/CHANGELOG.md +468 -0
  256. package/src/style-spec/README.md +59 -0
  257. package/src/style-spec/bin/gl-style-composite +9 -0
  258. package/src/style-spec/bin/gl-style-format +22 -0
  259. package/src/style-spec/bin/gl-style-migrate +9 -0
  260. package/src/style-spec/bin/gl-style-validate +50 -0
  261. package/src/style-spec/composite.js +50 -0
  262. package/src/style-spec/declass.js +42 -0
  263. package/src/style-spec/deref.js +52 -0
  264. package/src/style-spec/diff.js +393 -0
  265. package/src/style-spec/dist/.gitkeep +0 -0
  266. package/src/style-spec/dist/index.es.js +15032 -0
  267. package/src/style-spec/dist/index.es.js.map +1 -0
  268. package/src/style-spec/dist/index.js +15058 -0
  269. package/src/style-spec/dist/index.js.map +1 -0
  270. package/src/style-spec/empty.js +29 -0
  271. package/src/style-spec/error/parsing_error.js +16 -0
  272. package/src/style-spec/error/validation_error.js +18 -0
  273. package/src/style-spec/expression/compound_expression.js +162 -0
  274. package/src/style-spec/expression/definitions/assertion.js +130 -0
  275. package/src/style-spec/expression/definitions/at.js +70 -0
  276. package/src/style-spec/expression/definitions/case.js +85 -0
  277. package/src/style-spec/expression/definitions/coalesce.js +93 -0
  278. package/src/style-spec/expression/definitions/coercion.js +133 -0
  279. package/src/style-spec/expression/definitions/collator.js +78 -0
  280. package/src/style-spec/expression/definitions/comparison.js +184 -0
  281. package/src/style-spec/expression/definitions/format.js +144 -0
  282. package/src/style-spec/expression/definitions/image.js +52 -0
  283. package/src/style-spec/expression/definitions/in.js +72 -0
  284. package/src/style-spec/expression/definitions/index.js +565 -0
  285. package/src/style-spec/expression/definitions/index_of.js +89 -0
  286. package/src/style-spec/expression/definitions/interpolate.js +267 -0
  287. package/src/style-spec/expression/definitions/length.js +61 -0
  288. package/src/style-spec/expression/definitions/let.js +72 -0
  289. package/src/style-spec/expression/definitions/literal.js +77 -0
  290. package/src/style-spec/expression/definitions/match.js +158 -0
  291. package/src/style-spec/expression/definitions/number_format.js +142 -0
  292. package/src/style-spec/expression/definitions/slice.js +86 -0
  293. package/src/style-spec/expression/definitions/step.js +120 -0
  294. package/src/style-spec/expression/definitions/var.js +46 -0
  295. package/src/style-spec/expression/definitions/within.js +342 -0
  296. package/src/style-spec/expression/evaluation_context.js +59 -0
  297. package/src/style-spec/expression/expression.js +27 -0
  298. package/src/style-spec/expression/index.js +392 -0
  299. package/src/style-spec/expression/is_constant.js +59 -0
  300. package/src/style-spec/expression/parsing_context.js +233 -0
  301. package/src/style-spec/expression/parsing_error.js +13 -0
  302. package/src/style-spec/expression/runtime_error.js +17 -0
  303. package/src/style-spec/expression/scope.js +36 -0
  304. package/src/style-spec/expression/stops.js +39 -0
  305. package/src/style-spec/expression/types/collator.js +61 -0
  306. package/src/style-spec/expression/types/formatted.js +73 -0
  307. package/src/style-spec/expression/types/resolved_image.js +29 -0
  308. package/src/style-spec/expression/types.js +126 -0
  309. package/src/style-spec/expression/values.js +123 -0
  310. package/src/style-spec/feature_filter/README.md +55 -0
  311. package/src/style-spec/feature_filter/convert.js +208 -0
  312. package/src/style-spec/feature_filter/index.js +175 -0
  313. package/src/style-spec/format.js +51 -0
  314. package/src/style-spec/function/convert.js +270 -0
  315. package/src/style-spec/function/index.js +262 -0
  316. package/src/style-spec/group_by_layout.js +75 -0
  317. package/src/style-spec/migrate/expressions.js +39 -0
  318. package/src/style-spec/migrate/v8.js +203 -0
  319. package/src/style-spec/migrate/v9.js +26 -0
  320. package/src/style-spec/migrate.js +36 -0
  321. package/src/style-spec/package.json +41 -0
  322. package/src/style-spec/read_style.js +14 -0
  323. package/src/style-spec/reference/latest.js +3 -0
  324. package/src/style-spec/reference/v8.json +5914 -0
  325. package/src/style-spec/rollup.config.js +65 -0
  326. package/src/style-spec/style-spec.js +124 -0
  327. package/src/style-spec/types.js +432 -0
  328. package/src/style-spec/util/color.js +95 -0
  329. package/src/style-spec/util/color_spaces.js +139 -0
  330. package/src/style-spec/util/deep_equal.js +28 -0
  331. package/src/style-spec/util/extend.js +10 -0
  332. package/src/style-spec/util/get_type.js +17 -0
  333. package/src/style-spec/util/interpolate.js +22 -0
  334. package/src/style-spec/util/properties.js +15 -0
  335. package/src/style-spec/util/ref_properties.js +2 -0
  336. package/src/style-spec/util/result.js +19 -0
  337. package/src/style-spec/util/unbundle_jsonlint.js +24 -0
  338. package/src/style-spec/validate/latest.js +11 -0
  339. package/src/style-spec/validate/validate.js +75 -0
  340. package/src/style-spec/validate/validate_array.js +52 -0
  341. package/src/style-spec/validate/validate_boolean.js +15 -0
  342. package/src/style-spec/validate/validate_color.js +20 -0
  343. package/src/style-spec/validate/validate_constants.js +13 -0
  344. package/src/style-spec/validate/validate_enum.js +21 -0
  345. package/src/style-spec/validate/validate_expression.js +43 -0
  346. package/src/style-spec/validate/validate_filter.js +117 -0
  347. package/src/style-spec/validate/validate_formatted.js +11 -0
  348. package/src/style-spec/validate/validate_function.js +207 -0
  349. package/src/style-spec/validate/validate_glyphs_url.js +21 -0
  350. package/src/style-spec/validate/validate_image.js +11 -0
  351. package/src/style-spec/validate/validate_layer.js +134 -0
  352. package/src/style-spec/validate/validate_layout_property.js +6 -0
  353. package/src/style-spec/validate/validate_light.js +47 -0
  354. package/src/style-spec/validate/validate_number.js +29 -0
  355. package/src/style-spec/validate/validate_object.js +61 -0
  356. package/src/style-spec/validate/validate_paint_property.js +6 -0
  357. package/src/style-spec/validate/validate_property.js +64 -0
  358. package/src/style-spec/validate/validate_source.js +111 -0
  359. package/src/style-spec/validate/validate_string.js +15 -0
  360. package/src/style-spec/validate_mapbox_api_supported.js +171 -0
  361. package/src/style-spec/validate_style.js +39 -0
  362. package/src/style-spec/validate_style.min.js +78 -0
  363. package/src/style-spec/visit.js +77 -0
  364. package/src/symbol/anchor.js +26 -0
  365. package/src/symbol/check_max_angle.js +81 -0
  366. package/src/symbol/clip_line.js +71 -0
  367. package/src/symbol/collision_feature.js +109 -0
  368. package/src/symbol/collision_index.js +373 -0
  369. package/src/symbol/cross_tile_symbol_index.js +301 -0
  370. package/src/symbol/get_anchors.js +167 -0
  371. package/src/symbol/grid_index.js +335 -0
  372. package/src/symbol/mergelines.js +82 -0
  373. package/src/symbol/one_em.js +4 -0
  374. package/src/symbol/opacity_state.js +27 -0
  375. package/src/symbol/path_interpolator.js +61 -0
  376. package/src/symbol/placement.js +1124 -0
  377. package/src/symbol/projection.js +451 -0
  378. package/src/symbol/quads.js +334 -0
  379. package/src/symbol/shaping.js +816 -0
  380. package/src/symbol/symbol_layout.js +796 -0
  381. package/src/symbol/symbol_size.js +113 -0
  382. package/src/symbol/transform_text.js +29 -0
  383. package/src/types/callback.js +17 -0
  384. package/src/types/cancelable.js +3 -0
  385. package/src/types/tilejson.js +17 -0
  386. package/src/types/transferable.js +3 -0
  387. package/src/types/window.js +172 -0
  388. package/src/ui/anchor.js +32 -0
  389. package/src/ui/camera.js +1277 -0
  390. package/src/ui/control/attribution_control.js +212 -0
  391. package/src/ui/control/fullscreen_control.js +147 -0
  392. package/src/ui/control/geolocate_control.js +707 -0
  393. package/src/ui/control/logo_control.js +92 -0
  394. package/src/ui/control/navigation_control.js +257 -0
  395. package/src/ui/control/scale_control.js +142 -0
  396. package/src/ui/default_locale.js +22 -0
  397. package/src/ui/events.js +1301 -0
  398. package/src/ui/handler/box_zoom.js +170 -0
  399. package/src/ui/handler/click_zoom.js +52 -0
  400. package/src/ui/handler/handler_util.js +12 -0
  401. package/src/ui/handler/keyboard.js +208 -0
  402. package/src/ui/handler/map_event.js +156 -0
  403. package/src/ui/handler/mouse.js +171 -0
  404. package/src/ui/handler/scroll_zoom.js +350 -0
  405. package/src/ui/handler/shim/dblclick_zoom.js +62 -0
  406. package/src/ui/handler/shim/drag_pan.js +88 -0
  407. package/src/ui/handler/shim/drag_rotate.js +67 -0
  408. package/src/ui/handler/shim/touch_zoom_rotate.js +108 -0
  409. package/src/ui/handler/tap_drag_zoom.js +103 -0
  410. package/src/ui/handler/tap_recognizer.js +133 -0
  411. package/src/ui/handler/tap_zoom.js +93 -0
  412. package/src/ui/handler/touch_pan.js +101 -0
  413. package/src/ui/handler/touch_zoom_rotate.js +305 -0
  414. package/src/ui/handler_inertia.js +158 -0
  415. package/src/ui/handler_manager.js +531 -0
  416. package/src/ui/hash.js +148 -0
  417. package/src/ui/map.js +2874 -0
  418. package/src/ui/marker.js +672 -0
  419. package/src/ui/popup.js +640 -0
  420. package/src/util/actor.js +212 -0
  421. package/src/util/ajax.js +388 -0
  422. package/src/util/browser/web_worker.js +10 -0
  423. package/src/util/browser/window.js +6 -0
  424. package/src/util/browser.js +70 -0
  425. package/src/util/classify_rings.js +52 -0
  426. package/src/util/color_ramp.js +61 -0
  427. package/src/util/config.js +30 -0
  428. package/src/util/debug.js +28 -0
  429. package/src/util/dictionary_coder.js +30 -0
  430. package/src/util/dispatcher.js +70 -0
  431. package/src/util/dom.js +142 -0
  432. package/src/util/evented.js +174 -0
  433. package/src/util/find_pole_of_inaccessibility.js +129 -0
  434. package/src/util/global_worker_pool.js +35 -0
  435. package/src/util/image.js +142 -0
  436. package/src/util/intersection_tests.js +208 -0
  437. package/src/util/is_char_in_unicode_block.js +311 -0
  438. package/src/util/mapbox.js +491 -0
  439. package/src/util/offscreen_canvas_supported.js +14 -0
  440. package/src/util/performance.js +112 -0
  441. package/src/util/primitives.js +145 -0
  442. package/src/util/resolve_tokens.js +16 -0
  443. package/src/util/script_detection.js +328 -0
  444. package/src/util/sku_token.js +42 -0
  445. package/src/util/smart_wrap.js +55 -0
  446. package/src/util/struct_array.js +243 -0
  447. package/src/util/struct_array.js.ejs +112 -0
  448. package/src/util/struct_array_layout.js.ejs +98 -0
  449. package/src/util/task_queue.js +68 -0
  450. package/src/util/throttle.js +27 -0
  451. package/src/util/throttled_invoker.js +46 -0
  452. package/src/util/tile_request_cache.js +172 -0
  453. package/src/util/util.js +524 -0
  454. package/src/util/vectortile_to_geojson.js +50 -0
  455. package/src/util/verticalize_punctuation.js +114 -0
  456. package/src/util/web_worker.js +91 -0
  457. package/src/util/web_worker_transfer.js +266 -0
  458. package/src/util/webp_supported.js +69 -0
  459. package/src/util/window.js +102 -0
  460. package/src/util/worker_pool.js +57 -0
@@ -0,0 +1,13 @@
1
+ // @flow
2
+
3
+ class ParsingError extends Error {
4
+ key: string;
5
+ message: string;
6
+ constructor(key: string, message: string) {
7
+ super(message);
8
+ this.message = message;
9
+ this.key = key;
10
+ }
11
+ }
12
+
13
+ export default ParsingError;
@@ -0,0 +1,17 @@
1
+ // @flow
2
+
3
+ class RuntimeError {
4
+ name: string;
5
+ message: string;
6
+
7
+ constructor(message: string) {
8
+ this.name = 'ExpressionEvaluationError';
9
+ this.message = message;
10
+ }
11
+
12
+ toJSON() {
13
+ return this.message;
14
+ }
15
+ }
16
+
17
+ export default RuntimeError;
@@ -0,0 +1,36 @@
1
+ // @flow
2
+
3
+ import type {Expression} from './expression';
4
+
5
+ /**
6
+ * Tracks `let` bindings during expression parsing.
7
+ * @private
8
+ */
9
+ class Scope {
10
+ parent: ?Scope;
11
+ bindings: {[_: string]: Expression};
12
+ constructor(parent?: Scope, bindings: Array<[string, Expression]> = []) {
13
+ this.parent = parent;
14
+ this.bindings = {};
15
+ for (const [name, expression] of bindings) {
16
+ this.bindings[name] = expression;
17
+ }
18
+ }
19
+
20
+ concat(bindings: Array<[string, Expression]>) {
21
+ return new Scope(this, bindings);
22
+ }
23
+
24
+ get(name: string): Expression {
25
+ if (this.bindings[name]) { return this.bindings[name]; }
26
+ if (this.parent) { return this.parent.get(name); }
27
+ throw new Error(`${name} not found in scope.`);
28
+ }
29
+
30
+ has(name: string): boolean {
31
+ if (this.bindings[name]) return true;
32
+ return this.parent ? this.parent.has(name) : false;
33
+ }
34
+ }
35
+
36
+ export default Scope;
@@ -0,0 +1,39 @@
1
+ // @flow
2
+
3
+ import RuntimeError from './runtime_error';
4
+
5
+ import type {Expression} from './expression';
6
+
7
+ export type Stops = Array<[number, Expression]>;
8
+
9
+ /**
10
+ * Returns the index of the last stop <= input, or 0 if it doesn't exist.
11
+ * @private
12
+ */
13
+ export function findStopLessThanOrEqualTo(stops: Array<number>, input: number) {
14
+ const lastIndex = stops.length - 1;
15
+ let lowerIndex = 0;
16
+ let upperIndex = lastIndex;
17
+ let currentIndex = 0;
18
+ let currentValue, nextValue;
19
+
20
+ while (lowerIndex <= upperIndex) {
21
+ currentIndex = Math.floor((lowerIndex + upperIndex) / 2);
22
+ currentValue = stops[currentIndex];
23
+ nextValue = stops[currentIndex + 1];
24
+
25
+ if (currentValue <= input) {
26
+ if (currentIndex === lastIndex || input < nextValue) { // Search complete
27
+ return currentIndex;
28
+ }
29
+
30
+ lowerIndex = currentIndex + 1;
31
+ } else if (currentValue > input) {
32
+ upperIndex = currentIndex - 1;
33
+ } else {
34
+ throw new RuntimeError('Input is not a number.');
35
+ }
36
+ }
37
+
38
+ return 0;
39
+ }
@@ -0,0 +1,61 @@
1
+ // @flow
2
+
3
+ // Flow type declarations for Intl cribbed from
4
+ // https://github.com/facebook/flow/issues/1270
5
+
6
+ declare var Intl: {
7
+ Collator: Class<Intl$Collator>
8
+ };
9
+
10
+ declare class Intl$Collator {
11
+ constructor (
12
+ locales?: string | string[],
13
+ options?: CollatorOptions
14
+ ): Intl$Collator;
15
+
16
+ static (
17
+ locales?: string | string[],
18
+ options?: CollatorOptions
19
+ ): Intl$Collator;
20
+
21
+ compare (a: string, b: string): number;
22
+
23
+ resolvedOptions(): any;
24
+ }
25
+
26
+ type CollatorOptions = {
27
+ localeMatcher?: 'lookup' | 'best fit',
28
+ usage?: 'sort' | 'search',
29
+ sensitivity?: 'base' | 'accent' | 'case' | 'variant',
30
+ ignorePunctuation?: boolean,
31
+ numeric?: boolean,
32
+ caseFirst?: 'upper' | 'lower' | 'false'
33
+ }
34
+
35
+ export default class Collator {
36
+ locale: string | null;
37
+ sensitivity: 'base' | 'accent' | 'case' | 'variant';
38
+ collator: Intl$Collator;
39
+
40
+ constructor(caseSensitive: boolean, diacriticSensitive: boolean, locale: string | null) {
41
+ if (caseSensitive)
42
+ this.sensitivity = diacriticSensitive ? 'variant' : 'case';
43
+ else
44
+ this.sensitivity = diacriticSensitive ? 'accent' : 'base';
45
+
46
+ this.locale = locale;
47
+ this.collator = new Intl.Collator(this.locale ? this.locale : [],
48
+ {sensitivity: this.sensitivity, usage: 'search'});
49
+ }
50
+
51
+ compare(lhs: string, rhs: string): number {
52
+ return this.collator.compare(lhs, rhs);
53
+ }
54
+
55
+ resolvedLocale(): string {
56
+ // We create a Collator without "usage: search" because we don't want
57
+ // the search options encoded in our result (e.g. "en-u-co-search")
58
+ return new Intl.Collator(this.locale ? this.locale : [])
59
+ .resolvedOptions().locale;
60
+ }
61
+ }
@@ -0,0 +1,73 @@
1
+ // @flow
2
+ import type Color from '../../util/color';
3
+ import type ResolvedImage from '../types/resolved_image';
4
+
5
+ export class FormattedSection {
6
+ text: string;
7
+ image: ResolvedImage | null;
8
+ scale: number | null;
9
+ fontStack: string | null;
10
+ textColor: Color | null;
11
+
12
+ constructor(text: string, image: ResolvedImage | null, scale: number | null, fontStack: string | null, textColor: Color | null) {
13
+ this.text = text;
14
+ this.image = image;
15
+ this.scale = scale;
16
+ this.fontStack = fontStack;
17
+ this.textColor = textColor;
18
+ }
19
+ }
20
+
21
+ export default class Formatted {
22
+ sections: Array<FormattedSection>;
23
+
24
+ constructor(sections: Array<FormattedSection>) {
25
+ this.sections = sections;
26
+ }
27
+
28
+ static fromString(unformatted: string): Formatted {
29
+ return new Formatted([new FormattedSection(unformatted, null, null, null, null)]);
30
+ }
31
+
32
+ isEmpty(): boolean {
33
+ if (this.sections.length === 0) return true;
34
+ return !this.sections.some(section => section.text.length !== 0 ||
35
+ (section.image && section.image.name.length !== 0));
36
+ }
37
+
38
+ static factory(text: Formatted | string): Formatted {
39
+ if (text instanceof Formatted) {
40
+ return text;
41
+ } else {
42
+ return Formatted.fromString(text);
43
+ }
44
+ }
45
+
46
+ toString(): string {
47
+ if (this.sections.length === 0) return '';
48
+ return this.sections.map(section => section.text).join('');
49
+ }
50
+
51
+ serialize(): Array<mixed> {
52
+ const serialized: Array<mixed> = ["format"];
53
+ for (const section of this.sections) {
54
+ if (section.image) {
55
+ serialized.push(["image", section.image.name]);
56
+ continue;
57
+ }
58
+ serialized.push(section.text);
59
+ const options: { [key: string]: mixed } = {};
60
+ if (section.fontStack) {
61
+ options["text-font"] = ["literal", section.fontStack.split(',')];
62
+ }
63
+ if (section.scale) {
64
+ options["font-scale"] = section.scale;
65
+ }
66
+ if (section.textColor) {
67
+ options["text-color"] = (["rgba"]: Array<mixed>).concat(section.textColor.toArray());
68
+ }
69
+ serialized.push(options);
70
+ }
71
+ return serialized;
72
+ }
73
+ }
@@ -0,0 +1,29 @@
1
+ // @flow
2
+
3
+ export type ResolvedImageOptions = {
4
+ name: string,
5
+ available: boolean
6
+ };
7
+
8
+ export default class ResolvedImage {
9
+ name: string;
10
+ available: boolean;
11
+
12
+ constructor(options: ResolvedImageOptions) {
13
+ this.name = options.name;
14
+ this.available = options.available;
15
+ }
16
+
17
+ toString(): string {
18
+ return this.name;
19
+ }
20
+
21
+ static fromString(name: string): ResolvedImage | null {
22
+ if (!name) return null; // treat empty values as no image
23
+ return new ResolvedImage({name, available: false});
24
+ }
25
+
26
+ serialize(): Array<string> {
27
+ return ["image", this.name];
28
+ }
29
+ }
@@ -0,0 +1,126 @@
1
+ // @flow
2
+
3
+ export type NullTypeT = { kind: 'null' };
4
+ export type NumberTypeT = { kind: 'number' };
5
+ export type StringTypeT = { kind: 'string' };
6
+ export type BooleanTypeT = { kind: 'boolean' };
7
+ export type ColorTypeT = { kind: 'color' };
8
+ export type ObjectTypeT = { kind: 'object' };
9
+ export type ValueTypeT = { kind: 'value' };
10
+ export type ErrorTypeT = { kind: 'error' };
11
+ export type CollatorTypeT = { kind: 'collator' };
12
+ export type FormattedTypeT = { kind: 'formatted' };
13
+ export type ResolvedImageTypeT = { kind: 'resolvedImage' };
14
+
15
+ export type EvaluationKind = 'constant' | 'source' | 'camera' | 'composite';
16
+
17
+ export type Type =
18
+ NullTypeT |
19
+ NumberTypeT |
20
+ StringTypeT |
21
+ BooleanTypeT |
22
+ ColorTypeT |
23
+ ObjectTypeT |
24
+ ValueTypeT |
25
+ ArrayType | // eslint-disable-line no-use-before-define
26
+ ErrorTypeT |
27
+ CollatorTypeT |
28
+ FormattedTypeT |
29
+ ResolvedImageTypeT
30
+
31
+ export type ArrayType = {
32
+ kind: 'array',
33
+ itemType: Type,
34
+ N: ?number
35
+ }
36
+
37
+ export type NativeType = 'number' | 'string' | 'boolean' | 'null' | 'array' | 'object'
38
+
39
+ export const NullType = {kind: 'null'};
40
+ export const NumberType = {kind: 'number'};
41
+ export const StringType = {kind: 'string'};
42
+ export const BooleanType = {kind: 'boolean'};
43
+ export const ColorType = {kind: 'color'};
44
+ export const ObjectType = {kind: 'object'};
45
+ export const ValueType = {kind: 'value'};
46
+ export const ErrorType = {kind: 'error'};
47
+ export const CollatorType = {kind: 'collator'};
48
+ export const FormattedType = {kind: 'formatted'};
49
+ export const ResolvedImageType = {kind: 'resolvedImage'};
50
+
51
+ export function array(itemType: Type, N: ?number): ArrayType {
52
+ return {
53
+ kind: 'array',
54
+ itemType,
55
+ N
56
+ };
57
+ }
58
+
59
+ export function toString(type: Type): string {
60
+ if (type.kind === 'array') {
61
+ const itemType = toString(type.itemType);
62
+ return typeof type.N === 'number' ?
63
+ `array<${itemType}, ${type.N}>` :
64
+ type.itemType.kind === 'value' ? 'array' : `array<${itemType}>`;
65
+ } else {
66
+ return type.kind;
67
+ }
68
+ }
69
+
70
+ const valueMemberTypes = [
71
+ NullType,
72
+ NumberType,
73
+ StringType,
74
+ BooleanType,
75
+ ColorType,
76
+ FormattedType,
77
+ ObjectType,
78
+ array(ValueType),
79
+ ResolvedImageType
80
+ ];
81
+
82
+ /**
83
+ * Returns null if `t` is a subtype of `expected`; otherwise returns an
84
+ * error message.
85
+ * @private
86
+ */
87
+ export function checkSubtype(expected: Type, t: Type): ?string {
88
+ if (t.kind === 'error') {
89
+ // Error is a subtype of every type
90
+ return null;
91
+ } else if (expected.kind === 'array') {
92
+ if (t.kind === 'array' &&
93
+ ((t.N === 0 && t.itemType.kind === 'value') || !checkSubtype(expected.itemType, t.itemType)) &&
94
+ (typeof expected.N !== 'number' || expected.N === t.N)) {
95
+ return null;
96
+ }
97
+ } else if (expected.kind === t.kind) {
98
+ return null;
99
+ } else if (expected.kind === 'value') {
100
+ for (const memberType of valueMemberTypes) {
101
+ if (!checkSubtype(memberType, t)) {
102
+ return null;
103
+ }
104
+ }
105
+ }
106
+
107
+ return `Expected ${toString(expected)} but found ${toString(t)} instead.`;
108
+ }
109
+
110
+ export function isValidType(provided: Type, allowedTypes: Array<Type>): boolean {
111
+ return allowedTypes.some(t => t.kind === provided.kind);
112
+ }
113
+
114
+ export function isValidNativeType(provided: any, allowedTypes: Array<NativeType>): boolean {
115
+ return allowedTypes.some(t => {
116
+ if (t === 'null') {
117
+ return provided === null;
118
+ } else if (t === 'array') {
119
+ return Array.isArray(provided);
120
+ } else if (t === 'object') {
121
+ return provided && !Array.isArray(provided) && typeof provided === 'object';
122
+ } else {
123
+ return t === typeof provided;
124
+ }
125
+ });
126
+ }
@@ -0,0 +1,123 @@
1
+ // @flow
2
+
3
+ import assert from 'assert';
4
+
5
+ import Color from '../util/color';
6
+ import Collator from './types/collator';
7
+ import Formatted from './types/formatted';
8
+ import ResolvedImage from './types/resolved_image';
9
+ import {NullType, NumberType, StringType, BooleanType, ColorType, ObjectType, ValueType, CollatorType, FormattedType, ResolvedImageType, array} from './types';
10
+
11
+ import type {Type} from './types';
12
+
13
+ export function validateRGBA(r: mixed, g: mixed, b: mixed, a?: mixed): string | null {
14
+ if (!(
15
+ typeof r === 'number' && r >= 0 && r <= 255 &&
16
+ typeof g === 'number' && g >= 0 && g <= 255 &&
17
+ typeof b === 'number' && b >= 0 && b <= 255
18
+ )) {
19
+ const value = typeof a === 'number' ? [r, g, b, a] : [r, g, b];
20
+ return `Invalid rgba value [${value.join(', ')}]: 'r', 'g', and 'b' must be between 0 and 255.`;
21
+ }
22
+
23
+ if (!(
24
+ typeof a === 'undefined' || (typeof a === 'number' && a >= 0 && a <= 1)
25
+ )) {
26
+ return `Invalid rgba value [${[r, g, b, a].join(', ')}]: 'a' must be between 0 and 1.`;
27
+ }
28
+
29
+ return null;
30
+ }
31
+
32
+ export type Value = null | string | boolean | number | Color | Collator | Formatted | ResolvedImage | $ReadOnlyArray<Value> | { +[string]: Value }
33
+
34
+ export function isValue(mixed: mixed): boolean {
35
+ if (mixed === null) {
36
+ return true;
37
+ } else if (typeof mixed === 'string') {
38
+ return true;
39
+ } else if (typeof mixed === 'boolean') {
40
+ return true;
41
+ } else if (typeof mixed === 'number') {
42
+ return true;
43
+ } else if (mixed instanceof Color) {
44
+ return true;
45
+ } else if (mixed instanceof Collator) {
46
+ return true;
47
+ } else if (mixed instanceof Formatted) {
48
+ return true;
49
+ } else if (mixed instanceof ResolvedImage) {
50
+ return true;
51
+ } else if (Array.isArray(mixed)) {
52
+ for (const item of mixed) {
53
+ if (!isValue(item)) {
54
+ return false;
55
+ }
56
+ }
57
+ return true;
58
+ } else if (typeof mixed === 'object') {
59
+ for (const key in mixed) {
60
+ if (!isValue(mixed[key])) {
61
+ return false;
62
+ }
63
+ }
64
+ return true;
65
+ } else {
66
+ return false;
67
+ }
68
+ }
69
+
70
+ export function typeOf(value: Value): Type {
71
+ if (value === null) {
72
+ return NullType;
73
+ } else if (typeof value === 'string') {
74
+ return StringType;
75
+ } else if (typeof value === 'boolean') {
76
+ return BooleanType;
77
+ } else if (typeof value === 'number') {
78
+ return NumberType;
79
+ } else if (value instanceof Color) {
80
+ return ColorType;
81
+ } else if (value instanceof Collator) {
82
+ return CollatorType;
83
+ } else if (value instanceof Formatted) {
84
+ return FormattedType;
85
+ } else if (value instanceof ResolvedImage) {
86
+ return ResolvedImageType;
87
+ } else if (Array.isArray(value)) {
88
+ const length = value.length;
89
+ let itemType: Type | typeof undefined;
90
+
91
+ for (const item of value) {
92
+ const t = typeOf(item);
93
+ if (!itemType) {
94
+ itemType = t;
95
+ } else if (itemType === t) {
96
+ continue;
97
+ } else {
98
+ itemType = ValueType;
99
+ break;
100
+ }
101
+ }
102
+
103
+ return array(itemType || ValueType, length);
104
+ } else {
105
+ assert(typeof value === 'object');
106
+ return ObjectType;
107
+ }
108
+ }
109
+
110
+ export function toString(value: Value) {
111
+ const type = typeof value;
112
+ if (value === null) {
113
+ return '';
114
+ } else if (type === 'string' || type === 'number' || type === 'boolean') {
115
+ return String(value);
116
+ } else if (value instanceof Color || value instanceof Formatted || value instanceof ResolvedImage) {
117
+ return value.toString();
118
+ } else {
119
+ return JSON.stringify(value);
120
+ }
121
+ }
122
+
123
+ export {Color, Collator};
@@ -0,0 +1,55 @@
1
+ ## Filter
2
+
3
+ Filter expressions are used to target specific data in a layer. This library implements the semantics specified by the [Mapbox GL JS spec](https://www.mapbox.com/mapbox-gl-style-spec/#filter).
4
+
5
+ ### API
6
+
7
+ `featureFilter(filter)`
8
+
9
+ Given a filter expressed as nested arrays, return a new function
10
+ that evaluates whether a given feature (with a .properties or .tags property)
11
+ passes its test.
12
+
13
+ #### Parameters
14
+
15
+ | parameter | type | description |
16
+ | --------- | ----- | ---------------- |
17
+ | `filter` | Array | mapbox gl filter |
18
+
19
+ **Returns** `Function`, filter-evaluating function
20
+
21
+ ### Usage
22
+
23
+ ``` javascript
24
+ var ff = require('@mapbox/mapbox-gl-style-spec').featureFilter;
25
+
26
+ // will match a feature with class of street_limited,
27
+ // AND an admin_level less than or equal to 3,
28
+ // that's NOT a polygon.
29
+ var filter = [
30
+ "all",
31
+ ["==", "class", "street_limited"],
32
+ ["<=", "admin_level", 3],
33
+ ["!=", "$type", "Polygon"]
34
+ ]
35
+
36
+ // will match a feature that has a class of
37
+ // wetland OR wetland_noveg.
38
+ // ["in", "class", "wetland", "wetland_noveg"]
39
+
40
+ // testFilter will be a function that returns a boolean
41
+ var testFilter = ff(filter);
42
+
43
+ // Layer feature that you're testing. Must have type
44
+ // and properties keys.
45
+ var feature = {
46
+ type: 2,
47
+ properties: {
48
+ class: "street_limited",
49
+ admin_level: 1
50
+ }
51
+ };
52
+
53
+ // will return a boolean based on whether the feature matched the filter
54
+ return testFilter({zoom: 0}, feature);
55
+ ```