@mapgis/mapbox-gl 1.9.10 → 16.0.0

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 (442) hide show
  1. package/.flowconfig +61 -0
  2. package/LICENSE.txt +84 -0
  3. package/README.md +30 -13
  4. package/build/banner.js +4 -0
  5. package/build/check-bundle-size.js +140 -0
  6. package/build/generate-access-token-script.js +11 -0
  7. package/build/generate-flow-typed-style-spec.js +188 -0
  8. package/build/generate-release-list.js +21 -0
  9. package/build/generate-struct-arrays.js +237 -0
  10. package/build/generate-style-code.js +159 -0
  11. package/build/mapbox-gl.js.flow +3 -0
  12. package/build/print-release-url.js +6 -0
  13. package/build/rollup_plugin_minify_style_spec.js +20 -0
  14. package/build/rollup_plugins.js +80 -0
  15. package/build/run-node +3 -0
  16. package/build/run-tap +8 -0
  17. package/build/test/build-tape.js +19 -0
  18. package/dist/mapbox-gl-csp-worker.js +2 -0
  19. package/dist/mapbox-gl-csp-worker.js.map +1 -0
  20. package/dist/mapbox-gl-csp.js +2 -0
  21. package/dist/mapbox-gl-csp.js.map +1 -0
  22. package/dist/mapbox-gl-dev.js +68798 -0
  23. package/dist/mapbox-gl-unminified.js +45076 -0
  24. package/dist/mapbox-gl-unminified.js.map +1 -0
  25. package/dist/mapbox-gl.js +4 -4
  26. package/dist/mapbox-gl.js.map +1 -0
  27. package/flow-typed/gl.js +5 -0
  28. package/flow-typed/jsdom.js +18 -0
  29. package/flow-typed/mapbox-gl-supported.js +9 -0
  30. package/flow-typed/mapbox-unitbezier.js +14 -0
  31. package/flow-typed/offscreen-canvas.js +9 -0
  32. package/flow-typed/pbf.js +25 -0
  33. package/flow-typed/point-geometry.js +44 -0
  34. package/flow-typed/potpack.js +12 -0
  35. package/flow-typed/sinon.js +28 -0
  36. package/flow-typed/vector-tile.js +41 -0
  37. package/package.json +171 -19
  38. package/src/css/mapbox-gl.css +798 -0
  39. package/src/css/svg/mapboxgl-ctrl-attrib.svg +3 -0
  40. package/src/css/svg/mapboxgl-ctrl-compass.svg +4 -0
  41. package/src/css/svg/mapboxgl-ctrl-fullscreen.svg +3 -0
  42. package/src/css/svg/mapboxgl-ctrl-geolocate.svg +5 -0
  43. package/src/css/svg/mapboxgl-ctrl-logo.svg +20 -0
  44. package/src/css/svg/mapboxgl-ctrl-shrink.svg +3 -0
  45. package/src/css/svg/mapboxgl-ctrl-zoom-in.svg +3 -0
  46. package/src/css/svg/mapboxgl-ctrl-zoom-out.svg +3 -0
  47. package/src/data/array_types.js +1095 -0
  48. package/src/data/bucket/circle_attributes.js +9 -0
  49. package/src/data/bucket/circle_bucket.js +204 -0
  50. package/src/data/bucket/fill_attributes.js +9 -0
  51. package/src/data/bucket/fill_bucket.js +233 -0
  52. package/src/data/bucket/fill_extrusion_attributes.js +10 -0
  53. package/src/data/bucket/fill_extrusion_bucket.js +289 -0
  54. package/src/data/bucket/heatmap_bucket.js +17 -0
  55. package/src/data/bucket/line_attributes.js +10 -0
  56. package/src/data/bucket/line_bucket.js +556 -0
  57. package/src/data/bucket/pattern_attributes.js +10 -0
  58. package/src/data/bucket/pattern_bucket_features.js +60 -0
  59. package/src/data/bucket/symbol_attributes.js +117 -0
  60. package/src/data/bucket/symbol_bucket.js +972 -0
  61. package/src/data/bucket.js +123 -0
  62. package/src/data/dem_data.js +125 -0
  63. package/src/data/extent.js +18 -0
  64. package/src/data/feature_index.js +321 -0
  65. package/src/data/feature_position_map.js +125 -0
  66. package/src/data/index_array_type.js +16 -0
  67. package/src/data/load_geometry.js +48 -0
  68. package/src/data/pos_attributes.js +6 -0
  69. package/src/data/program_configuration.js +687 -0
  70. package/src/data/raster_bounds_attributes.js +7 -0
  71. package/src/data/segment.js +76 -0
  72. package/src/geo/edge_insets.js +102 -0
  73. package/src/geo/lng_lat.js +165 -0
  74. package/src/geo/lng_lat_bounds.js +267 -0
  75. package/src/geo/mercator_coordinate.js +153 -0
  76. package/src/geo/transform.js +864 -0
  77. package/src/gl/color_mode.js +34 -0
  78. package/src/gl/context.js +298 -0
  79. package/src/gl/cull_face_mode.js +26 -0
  80. package/src/gl/depth_mode.js +29 -0
  81. package/src/gl/framebuffer.js +44 -0
  82. package/src/gl/index_buffer.js +55 -0
  83. package/src/gl/stencil_mode.js +30 -0
  84. package/src/gl/types.js +84 -0
  85. package/src/gl/value.js +520 -0
  86. package/src/gl/vertex_buffer.js +119 -0
  87. package/src/index.js +201 -0
  88. package/src/render/draw_background.js +57 -0
  89. package/src/render/draw_circle.js +113 -0
  90. package/src/render/draw_collision_debug.js +49 -0
  91. package/src/render/draw_custom.js +49 -0
  92. package/src/render/draw_debug.js +127 -0
  93. package/src/render/draw_fill.js +126 -0
  94. package/src/render/draw_fill_extrusion.js +96 -0
  95. package/src/render/draw_heatmap.js +140 -0
  96. package/src/render/draw_hillshade.js +108 -0
  97. package/src/render/draw_line.js +98 -0
  98. package/src/render/draw_raster.js +125 -0
  99. package/src/render/draw_symbol.js +394 -0
  100. package/src/render/glyph_atlas.js +71 -0
  101. package/src/render/glyph_manager.js +182 -0
  102. package/src/render/image_atlas.js +149 -0
  103. package/src/render/image_manager.js +306 -0
  104. package/src/render/line_atlas.js +210 -0
  105. package/src/render/painter.js +653 -0
  106. package/src/render/program/background_program.js +103 -0
  107. package/src/render/program/circle_program.js +69 -0
  108. package/src/render/program/clipping_mask_program.js +20 -0
  109. package/src/render/program/collision_program.js +49 -0
  110. package/src/render/program/debug_program.js +35 -0
  111. package/src/render/program/fill_extrusion_program.js +122 -0
  112. package/src/render/program/fill_program.js +126 -0
  113. package/src/render/program/heatmap_program.js +83 -0
  114. package/src/render/program/hillshade_program.js +122 -0
  115. package/src/render/program/line_program.js +207 -0
  116. package/src/render/program/pattern.js +102 -0
  117. package/src/render/program/program_uniforms.js +42 -0
  118. package/src/render/program/raster_program.js +92 -0
  119. package/src/render/program/symbol_program.js +224 -0
  120. package/src/render/program.js +168 -0
  121. package/src/render/texture.js +122 -0
  122. package/src/render/uniform_binding.js +147 -0
  123. package/src/render/vertex_array_object.js +163 -0
  124. package/src/shaders/README.md +42 -0
  125. package/src/shaders/_prelude.fragment.glsl +17 -0
  126. package/src/shaders/_prelude.vertex.glsl +73 -0
  127. package/src/shaders/background.fragment.glsl +10 -0
  128. package/src/shaders/background.vertex.glsl +7 -0
  129. package/src/shaders/background_pattern.fragment.glsl +28 -0
  130. package/src/shaders/background_pattern.vertex.glsl +20 -0
  131. package/src/shaders/circle.fragment.glsl +39 -0
  132. package/src/shaders/circle.vertex.glsl +64 -0
  133. package/src/shaders/clipping_mask.fragment.glsl +3 -0
  134. package/src/shaders/clipping_mask.vertex.glsl +7 -0
  135. package/src/shaders/collision_box.fragment.glsl +21 -0
  136. package/src/shaders/collision_box.vertex.glsl +27 -0
  137. package/src/shaders/collision_circle.fragment.glsl +34 -0
  138. package/src/shaders/collision_circle.vertex.glsl +36 -0
  139. package/src/shaders/debug.fragment.glsl +9 -0
  140. package/src/shaders/debug.vertex.glsl +12 -0
  141. package/src/shaders/encode_attribute.js +17 -0
  142. package/src/shaders/fill.fragment.glsl +13 -0
  143. package/src/shaders/fill.vertex.glsl +13 -0
  144. package/src/shaders/fill_extrusion.fragment.glsl +9 -0
  145. package/src/shaders/fill_extrusion.vertex.glsl +66 -0
  146. package/src/shaders/fill_extrusion_pattern.fragment.glsl +45 -0
  147. package/src/shaders/fill_extrusion_pattern.vertex.glsl +79 -0
  148. package/src/shaders/fill_outline.fragment.glsl +17 -0
  149. package/src/shaders/fill_outline.vertex.glsl +17 -0
  150. package/src/shaders/fill_outline_pattern.fragment.glsl +43 -0
  151. package/src/shaders/fill_outline_pattern.vertex.glsl +44 -0
  152. package/src/shaders/fill_pattern.fragment.glsl +36 -0
  153. package/src/shaders/fill_pattern.vertex.glsl +39 -0
  154. package/src/shaders/heatmap.fragment.glsl +22 -0
  155. package/src/shaders/heatmap.vertex.glsl +54 -0
  156. package/src/shaders/heatmap_texture.fragment.glsl +14 -0
  157. package/src/shaders/heatmap_texture.vertex.glsl +11 -0
  158. package/src/shaders/hillshade.fragment.glsl +52 -0
  159. package/src/shaders/hillshade.vertex.glsl +11 -0
  160. package/src/shaders/hillshade_prepare.fragment.glsl +74 -0
  161. package/src/shaders/hillshade_prepare.vertex.glsl +15 -0
  162. package/src/shaders/index.js +20 -0
  163. package/src/shaders/line.fragment.glsl +30 -0
  164. package/src/shaders/line.vertex.glsl +85 -0
  165. package/src/shaders/line_gradient.fragment.glsl +34 -0
  166. package/src/shaders/line_gradient.vertex.glsl +87 -0
  167. package/src/shaders/line_pattern.fragment.glsl +74 -0
  168. package/src/shaders/line_pattern.vertex.glsl +99 -0
  169. package/src/shaders/line_sdf.fragment.glsl +45 -0
  170. package/src/shaders/line_sdf.vertex.glsl +98 -0
  171. package/src/shaders/raster.fragment.glsl +52 -0
  172. package/src/shaders/raster.vertex.glsl +21 -0
  173. package/src/shaders/shaders.js +180 -0
  174. package/src/shaders/symbol_icon.fragment.glsl +17 -0
  175. package/src/shaders/symbol_icon.vertex.glsl +94 -0
  176. package/src/shaders/symbol_sdf.fragment.glsl +52 -0
  177. package/src/shaders/symbol_sdf.vertex.glsl +115 -0
  178. package/src/shaders/symbol_text_and_icon.fragment.glsl +68 -0
  179. package/src/shaders/symbol_text_and_icon.vertex.glsl +116 -0
  180. package/src/source/canvas_source.js +238 -0
  181. package/src/source/geojson_helper.js +92 -0
  182. package/src/source/geojson_source.js +374 -0
  183. package/src/source/geojson_worker_source.js +357 -0
  184. package/src/source/geojson_wrapper.js +94 -0
  185. package/src/source/image_source.js +307 -0
  186. package/src/source/load_tilejson.js +39 -0
  187. package/src/source/mbtiles_source.js +115 -0
  188. package/src/source/offline_database.js +61 -0
  189. package/src/source/offline_database_root.js +62 -0
  190. package/src/source/pixels_to_tile_units.js +21 -0
  191. package/src/source/query_features.js +208 -0
  192. package/src/source/raster_dem_tile_source.js +138 -0
  193. package/src/source/raster_dem_tile_worker_source.js +62 -0
  194. package/src/source/raster_tile_offline_source.js +136 -0
  195. package/src/source/raster_tile_source.js +177 -0
  196. package/src/source/rtl_text_plugin.js +138 -0
  197. package/src/source/source.js +137 -0
  198. package/src/source/source_cache.js +957 -0
  199. package/src/source/source_state.js +159 -0
  200. package/src/source/tile.js +465 -0
  201. package/src/source/tile_bounds.js +38 -0
  202. package/src/source/tile_cache.js +212 -0
  203. package/src/source/tile_id.js +402 -0
  204. package/src/source/vector_tile_source.js +192 -0
  205. package/src/source/vector_tile_worker_source.js +216 -0
  206. package/src/source/video_source.js +203 -0
  207. package/src/source/worker.js +237 -0
  208. package/src/source/worker_source.js +106 -0
  209. package/src/source/worker_tile.js +224 -0
  210. package/src/style/create_style_layer.js +36 -0
  211. package/src/style/evaluation_parameters.js +62 -0
  212. package/src/style/light.js +130 -0
  213. package/src/style/load_glyph_range.js +38 -0
  214. package/src/style/load_sprite.js +67 -0
  215. package/src/style/parse_glyph_pbf.js +44 -0
  216. package/src/style/pauseable_placement.js +132 -0
  217. package/src/style/properties.js +753 -0
  218. package/src/style/query_utils.js +43 -0
  219. package/src/style/style.js +1361 -0
  220. package/src/style/style_glyph.js +17 -0
  221. package/src/style/style_image.js +137 -0
  222. package/src/style/style_layer/background_style_layer.js +21 -0
  223. package/src/style/style_layer/background_style_layer_properties.js +40 -0
  224. package/src/style/style_layer/circle_style_layer.js +98 -0
  225. package/src/style/style_layer/circle_style_layer_properties.js +63 -0
  226. package/src/style/style_layer/custom_style_layer.js +223 -0
  227. package/src/style/style_layer/fill_extrusion_style_layer.js +224 -0
  228. package/src/style/style_layer/fill_extrusion_style_layer_properties.js +50 -0
  229. package/src/style/style_layer/fill_style_layer.js +67 -0
  230. package/src/style/style_layer/fill_style_layer_properties.js +55 -0
  231. package/src/style/style_layer/heatmap_style_layer.js +69 -0
  232. package/src/style/style_layer/heatmap_style_layer_properties.js +44 -0
  233. package/src/style/style_layer/hillshade_style_layer.js +25 -0
  234. package/src/style/style_layer/hillshade_style_layer_properties.js +46 -0
  235. package/src/style/style_layer/layer_properties.js.ejs +69 -0
  236. package/src/style/style_layer/line_style_layer.js +151 -0
  237. package/src/style/style_layer/line_style_layer_properties.js +71 -0
  238. package/src/style/style_layer/raster_style_layer.js +21 -0
  239. package/src/style/style_layer/raster_style_layer_properties.js +50 -0
  240. package/src/style/style_layer/symbol_style_layer.js +190 -0
  241. package/src/style/style_layer/symbol_style_layer_properties.js +153 -0
  242. package/src/style/style_layer/typed_style_layer.js +17 -0
  243. package/src/style/style_layer.js +281 -0
  244. package/src/style/style_layer_index.js +80 -0
  245. package/src/style/validate_style.js +42 -0
  246. package/src/style/zoom_history.js +44 -0
  247. package/src/style-spec/.eslintrc +5 -0
  248. package/src/style-spec/CHANGELOG.md +438 -0
  249. package/src/style-spec/README.md +59 -0
  250. package/src/style-spec/bin/gl-style-composite +9 -0
  251. package/src/style-spec/bin/gl-style-format +22 -0
  252. package/src/style-spec/bin/gl-style-migrate +9 -0
  253. package/src/style-spec/bin/gl-style-validate +50 -0
  254. package/src/style-spec/composite.js +50 -0
  255. package/src/style-spec/declass.js +42 -0
  256. package/src/style-spec/deref.js +52 -0
  257. package/src/style-spec/diff.js +393 -0
  258. package/src/style-spec/dist/.gitkeep +0 -0
  259. package/src/style-spec/empty.js +29 -0
  260. package/src/style-spec/error/parsing_error.js +16 -0
  261. package/src/style-spec/error/validation_error.js +18 -0
  262. package/src/style-spec/expression/compound_expression.js +162 -0
  263. package/src/style-spec/expression/definitions/assertion.js +130 -0
  264. package/src/style-spec/expression/definitions/at.js +70 -0
  265. package/src/style-spec/expression/definitions/case.js +85 -0
  266. package/src/style-spec/expression/definitions/coalesce.js +93 -0
  267. package/src/style-spec/expression/definitions/coercion.js +133 -0
  268. package/src/style-spec/expression/definitions/collator.js +78 -0
  269. package/src/style-spec/expression/definitions/comparison.js +184 -0
  270. package/src/style-spec/expression/definitions/format.js +144 -0
  271. package/src/style-spec/expression/definitions/format_section_override.js +54 -0
  272. package/src/style-spec/expression/definitions/image.js +52 -0
  273. package/src/style-spec/expression/definitions/in.js +92 -0
  274. package/src/style-spec/expression/definitions/index.js +561 -0
  275. package/src/style-spec/expression/definitions/interpolate.js +267 -0
  276. package/src/style-spec/expression/definitions/length.js +61 -0
  277. package/src/style-spec/expression/definitions/let.js +72 -0
  278. package/src/style-spec/expression/definitions/literal.js +77 -0
  279. package/src/style-spec/expression/definitions/match.js +158 -0
  280. package/src/style-spec/expression/definitions/number_format.js +142 -0
  281. package/src/style-spec/expression/definitions/step.js +120 -0
  282. package/src/style-spec/expression/definitions/var.js +46 -0
  283. package/src/style-spec/expression/definitions/within.js +333 -0
  284. package/src/style-spec/expression/evaluation_context.js +59 -0
  285. package/src/style-spec/expression/expression.js +27 -0
  286. package/src/style-spec/expression/index.js +392 -0
  287. package/src/style-spec/expression/is_constant.js +59 -0
  288. package/src/style-spec/expression/parsing_context.js +233 -0
  289. package/src/style-spec/expression/parsing_error.js +13 -0
  290. package/src/style-spec/expression/runtime_error.js +17 -0
  291. package/src/style-spec/expression/scope.js +36 -0
  292. package/src/style-spec/expression/stops.js +39 -0
  293. package/src/style-spec/expression/types/collator.js +61 -0
  294. package/src/style-spec/expression/types/formatted.js +73 -0
  295. package/src/style-spec/expression/types/resolved_image.js +29 -0
  296. package/src/style-spec/expression/types.js +106 -0
  297. package/src/style-spec/expression/values.js +123 -0
  298. package/src/style-spec/feature_filter/README.md +55 -0
  299. package/src/style-spec/feature_filter/convert.js +208 -0
  300. package/src/style-spec/feature_filter/index.js +165 -0
  301. package/src/style-spec/format.js +51 -0
  302. package/src/style-spec/function/convert.js +254 -0
  303. package/src/style-spec/function/index.js +262 -0
  304. package/src/style-spec/group_by_layout.js +75 -0
  305. package/src/style-spec/migrate/expressions.js +39 -0
  306. package/src/style-spec/migrate/v8.js +203 -0
  307. package/src/style-spec/migrate/v9.js +26 -0
  308. package/src/style-spec/migrate.js +36 -0
  309. package/src/style-spec/package.json +41 -0
  310. package/src/style-spec/read_style.js +14 -0
  311. package/src/style-spec/reference/latest.js +3 -0
  312. package/src/style-spec/reference/v8.json +5808 -0
  313. package/src/style-spec/rollup.config.js +45 -0
  314. package/src/style-spec/style-spec.js +122 -0
  315. package/src/style-spec/types.js +438 -0
  316. package/src/style-spec/util/color.js +95 -0
  317. package/src/style-spec/util/color_spaces.js +139 -0
  318. package/src/style-spec/util/deep_equal.js +28 -0
  319. package/src/style-spec/util/extend.js +10 -0
  320. package/src/style-spec/util/get_type.js +17 -0
  321. package/src/style-spec/util/interpolate.js +22 -0
  322. package/src/style-spec/util/properties.js +15 -0
  323. package/src/style-spec/util/ref_properties.js +2 -0
  324. package/src/style-spec/util/result.js +19 -0
  325. package/src/style-spec/util/unbundle_jsonlint.js +24 -0
  326. package/src/style-spec/validate/latest.js +11 -0
  327. package/src/style-spec/validate/validate.js +75 -0
  328. package/src/style-spec/validate/validate_array.js +52 -0
  329. package/src/style-spec/validate/validate_boolean.js +15 -0
  330. package/src/style-spec/validate/validate_color.js +20 -0
  331. package/src/style-spec/validate/validate_constants.js +13 -0
  332. package/src/style-spec/validate/validate_enum.js +21 -0
  333. package/src/style-spec/validate/validate_expression.js +43 -0
  334. package/src/style-spec/validate/validate_filter.js +111 -0
  335. package/src/style-spec/validate/validate_formatted.js +11 -0
  336. package/src/style-spec/validate/validate_function.js +207 -0
  337. package/src/style-spec/validate/validate_glyphs_url.js +21 -0
  338. package/src/style-spec/validate/validate_image.js +11 -0
  339. package/src/style-spec/validate/validate_layer.js +134 -0
  340. package/src/style-spec/validate/validate_layout_property.js +6 -0
  341. package/src/style-spec/validate/validate_light.js +47 -0
  342. package/src/style-spec/validate/validate_number.js +29 -0
  343. package/src/style-spec/validate/validate_object.js +61 -0
  344. package/src/style-spec/validate/validate_paint_property.js +6 -0
  345. package/src/style-spec/validate/validate_property.js +64 -0
  346. package/src/style-spec/validate/validate_source.js +111 -0
  347. package/src/style-spec/validate/validate_string.js +15 -0
  348. package/src/style-spec/validate_mapbox_api_supported.js +171 -0
  349. package/src/style-spec/validate_style.js +39 -0
  350. package/src/style-spec/validate_style.min.js +78 -0
  351. package/src/style-spec/visit.js +77 -0
  352. package/src/symbol/anchor.js +26 -0
  353. package/src/symbol/check_max_angle.js +81 -0
  354. package/src/symbol/clip_line.js +71 -0
  355. package/src/symbol/collision_feature.js +217 -0
  356. package/src/symbol/collision_index.js +372 -0
  357. package/src/symbol/cross_tile_symbol_index.js +301 -0
  358. package/src/symbol/get_anchors.js +167 -0
  359. package/src/symbol/grid_index.js +335 -0
  360. package/src/symbol/mergelines.js +82 -0
  361. package/src/symbol/one_em.js +4 -0
  362. package/src/symbol/opacity_state.js +27 -0
  363. package/src/symbol/placement.js +1062 -0
  364. package/src/symbol/projection.js +450 -0
  365. package/src/symbol/quads.js +334 -0
  366. package/src/symbol/shaping.js +816 -0
  367. package/src/symbol/symbol_layout.js +772 -0
  368. package/src/symbol/symbol_size.js +113 -0
  369. package/src/symbol/transform_text.js +29 -0
  370. package/src/types/callback.js +17 -0
  371. package/src/types/cancelable.js +3 -0
  372. package/src/types/tilejson.js +17 -0
  373. package/src/types/transferable.js +3 -0
  374. package/src/types/window.js +172 -0
  375. package/src/ui/anchor.js +32 -0
  376. package/src/ui/bind_handlers.js +202 -0
  377. package/src/ui/camera.js +1152 -0
  378. package/src/ui/control/attribution_control.js +189 -0
  379. package/src/ui/control/fps_control.js +185 -0
  380. package/src/ui/control/fullscreen_control.js +147 -0
  381. package/src/ui/control/geolocate_control.js +594 -0
  382. package/src/ui/control/logo_control.js +92 -0
  383. package/src/ui/control/navigation_control.js +148 -0
  384. package/src/ui/control/scale_control.js +142 -0
  385. package/src/ui/crs.js +64 -0
  386. package/src/ui/default_locale.js +20 -0
  387. package/src/ui/events.js +806 -0
  388. package/src/ui/handler/box_zoom.js +175 -0
  389. package/src/ui/handler/dblclick_zoom.js +139 -0
  390. package/src/ui/handler/drag_pan.js +416 -0
  391. package/src/ui/handler/drag_rotate.js +378 -0
  392. package/src/ui/handler/keyboard.js +161 -0
  393. package/src/ui/handler/scroll_zoom.js +333 -0
  394. package/src/ui/handler/touch_zoom_rotate.js +293 -0
  395. package/src/ui/hash.js +147 -0
  396. package/src/ui/map.js +2883 -0
  397. package/src/ui/marker.js +607 -0
  398. package/src/ui/offline_map.js +91 -0
  399. package/src/ui/popup.js +530 -0
  400. package/src/util/actor.js +212 -0
  401. package/src/util/ajax.js +371 -0
  402. package/src/util/browser/web_worker.js +10 -0
  403. package/src/util/browser/window.js +5 -0
  404. package/src/util/browser.js +70 -0
  405. package/src/util/classify_rings.js +52 -0
  406. package/src/util/color_ramp.js +28 -0
  407. package/src/util/config.js +30 -0
  408. package/src/util/debug.js +12 -0
  409. package/src/util/dictionary_coder.js +30 -0
  410. package/src/util/dispatcher.js +70 -0
  411. package/src/util/dom.js +144 -0
  412. package/src/util/evented.js +174 -0
  413. package/src/util/find_pole_of_inaccessibility.js +129 -0
  414. package/src/util/global_worker_pool.js +17 -0
  415. package/src/util/image.js +142 -0
  416. package/src/util/intersection_tests.js +208 -0
  417. package/src/util/is_char_in_unicode_block.js +311 -0
  418. package/src/util/mapbox.js +486 -0
  419. package/src/util/offscreen_canvas_supported.js +14 -0
  420. package/src/util/performance.js +112 -0
  421. package/src/util/primitives.js +145 -0
  422. package/src/util/resolve_tokens.js +16 -0
  423. package/src/util/script_detection.js +328 -0
  424. package/src/util/sku_token.js +42 -0
  425. package/src/util/smart_wrap.js +55 -0
  426. package/src/util/struct_array.js +243 -0
  427. package/src/util/struct_array.js.ejs +112 -0
  428. package/src/util/struct_array_layout.js.ejs +98 -0
  429. package/src/util/task_queue.js +68 -0
  430. package/src/util/throttle.js +28 -0
  431. package/src/util/throttled_invoker.js +46 -0
  432. package/src/util/tile_cover.js +101 -0
  433. package/src/util/tile_request_cache.js +172 -0
  434. package/src/util/util.js +504 -0
  435. package/src/util/vectortile_to_geojson.js +54 -0
  436. package/src/util/verticalize_punctuation.js +114 -0
  437. package/src/util/web_worker.js +91 -0
  438. package/src/util/web_worker_transfer.js +266 -0
  439. package/src/util/webp_supported.js +69 -0
  440. package/src/util/window.js +102 -0
  441. package/src/util/worker_pool.js +47 -0
  442. package/postcss.config.js +0 -16
@@ -0,0 +1,177 @@
1
+ // @flow
2
+
3
+ import {extend, pick} from '../util/util';
4
+
5
+ import {getImage, ResourceType} from '../util/ajax';
6
+ import {Event, ErrorEvent, Evented} from '../util/evented';
7
+ import loadTileJSON from './load_tilejson';
8
+ import {postTurnstileEvent, postMapLoadEvent} from '../util/mapbox';
9
+ import TileBounds from './tile_bounds';
10
+ import Texture from '../render/texture';
11
+
12
+ import {cacheEntryPossiblyAdded} from '../util/tile_request_cache';
13
+
14
+ import type {Source} from './source';
15
+ import type {OverscaledTileID} from './tile_id';
16
+ import type Map from '../ui/map';
17
+ import type Dispatcher from '../util/dispatcher';
18
+ import type Tile from './tile';
19
+ import type {Callback} from '../types/callback';
20
+ import type {Cancelable} from '../types/cancelable';
21
+ import type {
22
+ RasterSourceSpecification,
23
+ RasterDEMSourceSpecification
24
+ } from '../style-spec/types';
25
+
26
+ class RasterTileSource extends Evented implements Source {
27
+ type: 'raster' | 'raster-dem';
28
+ id: string;
29
+ minzoom: number;
30
+ maxzoom: number;
31
+ url: string;
32
+ scheme: string;
33
+ tileSize: number;
34
+
35
+ bounds: ?[number, number, number, number];
36
+ tileBounds: TileBounds;
37
+ roundZoom: boolean;
38
+ dispatcher: Dispatcher;
39
+ map: Map;
40
+ tiles: Array<string>;
41
+
42
+ _loaded: boolean;
43
+ _options: RasterSourceSpecification | RasterDEMSourceSpecification;
44
+ _tileJSONRequest: ?Cancelable;
45
+
46
+ constructor(id: string, options: RasterSourceSpecification | RasterDEMSourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) {
47
+ super();
48
+ this.id = id;
49
+ this.dispatcher = dispatcher;
50
+ this.setEventedParent(eventedParent);
51
+
52
+ this.type = 'raster';
53
+ this.minzoom = 0;
54
+ this.maxzoom = 22;
55
+ this.roundZoom = true;
56
+ this.scheme = 'xyz';
57
+ this.tileSize = 512;
58
+ this._loaded = false;
59
+
60
+ this._options = extend({type: 'raster'}, options);
61
+ extend(this, pick(options, ['url', 'scheme', 'tileSize']));
62
+ }
63
+
64
+ load() {
65
+ this._loaded = false;
66
+ this.fire(new Event('dataloading', {dataType: 'source'}));
67
+ this._tileJSONRequest = loadTileJSON(this._options, this.map._requestManager, (err, tileJSON) => {
68
+ this._tileJSONRequest = null;
69
+ this._loaded = true;
70
+ if (err) {
71
+ this.fire(new ErrorEvent(err));
72
+ } else if (tileJSON) {
73
+ extend(this, tileJSON);
74
+ if (tileJSON.bounds) this.tileBounds = new TileBounds(tileJSON.bounds, this.minzoom, this.maxzoom);
75
+
76
+ postTurnstileEvent(tileJSON.tiles);
77
+ postMapLoadEvent(tileJSON.tiles, this.map._getMapId(), this.map._requestManager._skuToken);
78
+
79
+ // `content` is included here to prevent a race condition where `Style#_updateSources` is called
80
+ // before the TileJSON arrives. this makes sure the tiles needed are loaded once TileJSON arrives
81
+ // ref: https://github.com/mapbox/mapbox-gl-js/pull/4347#discussion_r104418088
82
+ this.fire(new Event('data', {dataType: 'source', sourceDataType: 'metadata'}));
83
+ this.fire(new Event('data', {dataType: 'source', sourceDataType: 'content'}));
84
+ }
85
+ });
86
+ }
87
+
88
+ loaded(): boolean {
89
+ return this._loaded;
90
+ }
91
+
92
+ onAdd(map: Map) {
93
+ this.map = map;
94
+ this.load();
95
+ }
96
+
97
+ onRemove() {
98
+ if (this._tileJSONRequest) {
99
+ this._tileJSONRequest.cancel();
100
+ this._tileJSONRequest = null;
101
+ }
102
+ }
103
+
104
+ serialize() {
105
+ return extend({}, this._options);
106
+ }
107
+
108
+ hasTile(tileID: OverscaledTileID) {
109
+ return !this.tileBounds || this.tileBounds.contains(tileID.canonical);
110
+ }
111
+
112
+ loadTile(tile: Tile, callback: Callback<void>) {
113
+ const { tileUrlReplace } = this._options;
114
+ if (tileUrlReplace && tileUrlReplace.length >= 3) {
115
+ tile.tileID.canonical.replaceX(tileUrlReplace[0]);
116
+ tile.tileID.canonical.replaceY(tileUrlReplace[1]);
117
+ tile.tileID.canonical.replaceZ(tileUrlReplace[2]);
118
+ }
119
+ tile.tileID.canonical.offsetZ(this._options.mapgisOffset);
120
+ const url = this.map._requestManager.normalizeTileURL(tile.tileID.canonical.url(this.tiles, this.scheme), this.tileSize);
121
+ tile.tileID.canonical.offsetZ(0-this._options.mapgisOffset);
122
+ tile.request = getImage(this.map._requestManager.transformRequest(url, ResourceType.Tile), (err, img) => {
123
+ delete tile.request;
124
+
125
+ if (tile.aborted) {
126
+ tile.state = 'unloaded';
127
+ callback(null);
128
+ } else if (err) {
129
+ tile.state = 'errored';
130
+ callback(err);
131
+ } else if (img) {
132
+ if (this.map._refreshExpiredTiles) tile.setExpiryData(img);
133
+ delete (img: any).cacheControl;
134
+ delete (img: any).expires;
135
+
136
+ const context = this.map.painter.context;
137
+ const gl = context.gl;
138
+ tile.texture = this.map.painter.getTileTexture(img.width);
139
+ if (tile.texture) {
140
+ tile.texture.update(img, {useMipmap: true});
141
+ } else {
142
+ tile.texture = new Texture(context, img, gl.RGBA, {useMipmap: true});
143
+ tile.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE, gl.LINEAR_MIPMAP_NEAREST);
144
+
145
+ if (context.extTextureFilterAnisotropic) {
146
+ gl.texParameterf(gl.TEXTURE_2D, context.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT, context.extTextureFilterAnisotropicMax);
147
+ }
148
+ }
149
+
150
+ tile.state = 'loaded';
151
+
152
+ cacheEntryPossiblyAdded(this.dispatcher);
153
+
154
+ callback(null);
155
+ }
156
+ });
157
+ }
158
+
159
+ abortTile(tile: Tile, callback: Callback<void>) {
160
+ if (tile.request) {
161
+ tile.request.cancel();
162
+ delete tile.request;
163
+ }
164
+ callback();
165
+ }
166
+
167
+ unloadTile(tile: Tile, callback: Callback<void>) {
168
+ if (tile.texture) this.map.painter.saveTileTexture(tile.texture);
169
+ callback();
170
+ }
171
+
172
+ hasTransition() {
173
+ return false;
174
+ }
175
+ }
176
+
177
+ export default RasterTileSource;
@@ -0,0 +1,138 @@
1
+ // @flow
2
+
3
+ import {Event, Evented} from '../util/evented';
4
+ import {getArrayBuffer} from '../util/ajax';
5
+ import browser from '../util/browser';
6
+ import assert from 'assert';
7
+ import {isWorker} from '../util/util';
8
+
9
+ const status = {
10
+ unavailable: 'unavailable', // Not loaded
11
+ deferred: 'deferred', // The plugin URL has been specified, but loading has been deferred
12
+ loading: 'loading', // request in-flight
13
+ loaded: 'loaded',
14
+ error: 'error'
15
+ };
16
+
17
+ export type PluginState = {
18
+ pluginStatus: $Values<typeof status>;
19
+ pluginURL: ?string
20
+ };
21
+
22
+ type ErrorCallback = (error: ?Error) => void;
23
+ type PluginStateSyncCallback = (state: PluginState) => void;
24
+ let _completionCallback = null;
25
+
26
+ //Variables defining the current state of the plugin
27
+ let pluginStatus = status.unavailable;
28
+ let pluginURL = null;
29
+
30
+ export const triggerPluginCompletionEvent = function(error: ?Error) {
31
+ if (_completionCallback) {
32
+ _completionCallback(error);
33
+ }
34
+ };
35
+
36
+ function sendPluginStateToWorker() {
37
+ evented.fire(new Event('pluginStateChange', {pluginStatus, pluginURL}));
38
+ }
39
+
40
+ export const evented = new Evented();
41
+
42
+ export const getRTLTextPluginStatus = function () {
43
+ return pluginStatus;
44
+ };
45
+
46
+ export const registerForPluginStateChange = function(callback: PluginStateSyncCallback) {
47
+ // Do an initial sync of the state
48
+ callback({pluginStatus, pluginURL});
49
+ // Listen for all future state changes
50
+ evented.on('pluginStateChange', callback);
51
+ return callback;
52
+ };
53
+
54
+ export const clearRTLTextPlugin = function() {
55
+ pluginStatus = status.unavailable;
56
+ pluginURL = null;
57
+ };
58
+
59
+ export const setRTLTextPlugin = function(url: string, callback: ?ErrorCallback, deferred: boolean = false) {
60
+ if (pluginStatus === status.deferred || pluginStatus === status.loading || pluginStatus === status.loaded) {
61
+ throw new Error('setRTLTextPlugin cannot be called multiple times.');
62
+ }
63
+ pluginURL = browser.resolveURL(url);
64
+ pluginStatus = status.deferred;
65
+ _completionCallback = callback;
66
+ sendPluginStateToWorker();
67
+
68
+ //Start downloading the plugin immediately if not intending to lazy-load
69
+ if (!deferred) {
70
+ downloadRTLTextPlugin();
71
+ }
72
+ };
73
+
74
+ export const downloadRTLTextPlugin = function() {
75
+ if (pluginStatus !== status.deferred || !pluginURL) {
76
+ throw new Error('rtl-text-plugin cannot be downloaded unless a pluginURL is specified');
77
+ }
78
+ pluginStatus = status.loading;
79
+ sendPluginStateToWorker();
80
+ if (pluginURL) {
81
+ getArrayBuffer({url: pluginURL}, (error) => {
82
+ if (error) {
83
+ triggerPluginCompletionEvent(error);
84
+ } else {
85
+ pluginStatus = status.loaded;
86
+ sendPluginStateToWorker();
87
+ }
88
+ });
89
+ }
90
+ };
91
+
92
+ export const plugin: {
93
+ applyArabicShaping: ?Function,
94
+ processBidirectionalText: ?(string, Array<number>) => Array<string>,
95
+ processStyledBidirectionalText: ?(string, Array<number>, Array<number>) => Array<[string, Array<number>]>,
96
+ isLoaded: () => boolean,
97
+ isLoading: () => boolean,
98
+ setState: (state: PluginState) => void,
99
+ isParsed: () => boolean,
100
+ getPluginURL: () => ?string
101
+ } = {
102
+ applyArabicShaping: null,
103
+ processBidirectionalText: null,
104
+ processStyledBidirectionalText: null,
105
+ isLoaded() {
106
+ return pluginStatus === status.loaded || // Main Thread: loaded if the completion callback returned successfully
107
+ plugin.applyArabicShaping != null; // Web-worker: loaded if the plugin functions have been compiled
108
+ },
109
+ isLoading() { // Main Thread Only: query the loading status, this function does not return the correct value in the worker context.
110
+ return pluginStatus === status.loading;
111
+ },
112
+ setState(state: PluginState) { // Worker thread only: this tells the worker threads that the plugin is available on the Main thread
113
+ assert(isWorker(), 'Cannot set the state of the rtl-text-plugin when not in the web-worker context');
114
+
115
+ pluginStatus = state.pluginStatus;
116
+ pluginURL = state.pluginURL;
117
+ },
118
+ isParsed(): boolean {
119
+ assert(isWorker(), 'rtl-text-plugin is only parsed on the worker-threads');
120
+
121
+ return plugin.applyArabicShaping != null &&
122
+ plugin.processBidirectionalText != null &&
123
+ plugin.processStyledBidirectionalText != null;
124
+ },
125
+ getPluginURL(): ?string {
126
+ assert(isWorker(), 'rtl-text-plugin url can only be queried from the worker threads');
127
+ return pluginURL;
128
+ }
129
+ };
130
+
131
+ export const lazyLoadRTLTextPlugin = function() {
132
+ if (!plugin.isLoading() &&
133
+ !plugin.isLoaded() &&
134
+ getRTLTextPluginStatus() === 'deferred'
135
+ ) {
136
+ downloadRTLTextPlugin();
137
+ }
138
+ };
@@ -0,0 +1,137 @@
1
+ // @flow
2
+
3
+ import {bindAll} from '../util/util';
4
+
5
+ import type Dispatcher from '../util/dispatcher';
6
+ import type {Event, Evented} from '../util/evented';
7
+ import type Map from '../ui/map';
8
+ import type Tile from './tile';
9
+ import type {OverscaledTileID} from './tile_id';
10
+ import type {Callback} from '../types/callback';
11
+ import {CanonicalTileID} from './tile_id';
12
+
13
+ /**
14
+ * The `Source` interface must be implemented by each source type, including "core" types (`vector`, `raster`,
15
+ * `video`, etc.) and all custom, third-party types.
16
+ *
17
+ * @private
18
+ *
19
+ * @param {string} id The id for the source. Must not be used by any existing source.
20
+ * @param {Object} options Source options, specific to the source type (except for `options.type`, which is always
21
+ * required).
22
+ * @param {string} options.type The source type, matching the value of `name` used in {@link Style#addSourceType}.
23
+ * @param {Dispatcher} dispatcher A {@link Dispatcher} instance, which can be used to send messages to the workers.
24
+ *
25
+ * @fires data with `{dataType: 'source', sourceDataType: 'metadata'}` to indicate that any necessary metadata
26
+ * has been loaded so that it's okay to call `loadTile`; and with `{dataType: 'source', sourceDataType: 'content'}`
27
+ * to indicate that the source data has changed, so that any current caches should be flushed.
28
+ * @property {string} id The id for the source. Must match the id passed to the constructor.
29
+ * @property {number} minzoom
30
+ * @property {number} maxzoom
31
+ * @property {boolean} isTileClipped `false` if tiles can be drawn outside their boundaries, `true` if they cannot.
32
+ * @property {boolean} reparseOverscaled `true` if tiles should be sent back to the worker for each overzoomed zoom
33
+ * level, `false` if not.
34
+ * @property {boolean} roundZoom `true` if zoom levels are rounded to the nearest integer in the source data, `false`
35
+ * if they are floor-ed to the nearest integer.
36
+ */
37
+ export interface Source {
38
+ +type: string;
39
+ id: string;
40
+ minzoom: number,
41
+ maxzoom: number,
42
+ tileSize: number,
43
+ attribution?: string,
44
+
45
+ roundZoom?: boolean,
46
+ isTileClipped?: boolean,
47
+ mapbox_logo?: boolean,
48
+ tileID?: CanonicalTileID;
49
+ reparseOverscaled?: boolean,
50
+ vectorLayerIds?: Array<string>,
51
+
52
+ hasTransition(): boolean;
53
+ loaded(): boolean;
54
+
55
+ fire(event: Event): mixed;
56
+
57
+ +onAdd?: (map: Map) => void;
58
+ +onRemove?: (map: Map) => void;
59
+
60
+ loadTile(tile: Tile, callback: Callback<void>): void;
61
+ +hasTile?: (tileID: OverscaledTileID) => boolean;
62
+ +abortTile?: (tile: Tile, callback: Callback<void>) => void;
63
+ +unloadTile?: (tile: Tile, callback: Callback<void>) => void;
64
+
65
+ /**
66
+ * @returns A plain (stringifiable) JS object representing the current state of the source.
67
+ * Creating a source using the returned object as the `options` should result in a Source that is
68
+ * equivalent to this one.
69
+ * @private
70
+ */
71
+ serialize(): Object;
72
+
73
+ +prepare?: () => void;
74
+ }
75
+
76
+ type SourceStatics = {
77
+ /*
78
+ * An optional URL to a script which, when run by a Worker, registers a {@link WorkerSource}
79
+ * implementation for this Source type by calling `self.registerWorkerSource(workerSource: WorkerSource)`.
80
+ */
81
+ workerSourceURL?: URL;
82
+ };
83
+
84
+ export type SourceClass = Class<Source> & SourceStatics;
85
+
86
+ import vector from '../source/vector_tile_source';
87
+ import raster from '../source/raster_tile_source';
88
+ import rasterDem from '../source/raster_dem_tile_source';
89
+ import geojson from '../source/geojson_source';
90
+ import video from '../source/video_source';
91
+ import image from '../source/image_source';
92
+ import canvas from '../source/canvas_source';
93
+
94
+ import type {SourceSpecification} from '../style-spec/types';
95
+
96
+ const sourceTypes = {
97
+ vector,
98
+ raster,
99
+ 'raster-dem': rasterDem,
100
+ geojson,
101
+ video,
102
+ image,
103
+ canvas
104
+ };
105
+
106
+ /*
107
+ * Creates a tiled data source instance given an options object.
108
+ *
109
+ * @param id
110
+ * @param {Object} source A source definition object compliant with
111
+ * [`mapbox-gl-style-spec`](https://www.mapbox.com/mapbox-gl-style-spec/#sources) or, for a third-party source type,
112
+ * with that type's requirements.
113
+ * @param {Dispatcher} dispatcher
114
+ * @returns {Source}
115
+ */
116
+ export const create = function(id: string, specification: SourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) {
117
+ const source = new sourceTypes[specification.type](id, (specification: any), dispatcher, eventedParent);
118
+
119
+ if (source.id !== id) {
120
+ throw new Error(`Expected Source id to be ${id} instead of ${source.id}`);
121
+ }
122
+
123
+ bindAll(['load', 'abort', 'unload', 'serialize', 'prepare'], source);
124
+ return source;
125
+ };
126
+
127
+ export const getType = function (name: string) {
128
+ return sourceTypes[name];
129
+ };
130
+
131
+ export const setType = function (name: string, type: Class<Source>) {
132
+ sourceTypes[name] = type;
133
+ };
134
+
135
+ export interface Actor {
136
+ send(type: string, data: Object, callback: Callback<any>): void;
137
+ }