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,150 @@
1
+ // @flow
2
+
3
+ import Point from '@mapbox/point-geometry';
4
+
5
+ import StyleLayer from '../style_layer';
6
+ import LineBucket from '../../data/bucket/line_bucket';
7
+ import {polygonIntersectsBufferedMultiLine} from '../../util/intersection_tests';
8
+ import {getMaximumPaintValue, translateDistance, translate} from '../query_utils';
9
+ import properties from './line_style_layer_properties';
10
+ import {extend, MAX_SAFE_INTEGER} from '../../util/util';
11
+ import EvaluationParameters from '../evaluation_parameters';
12
+ import {Transitionable, Transitioning, Layout, PossiblyEvaluated, DataDrivenProperty} from '../properties';
13
+
14
+ import Step from '../../style-spec/expression/definitions/step';
15
+ import type {FeatureState, ZoomConstantExpression} from '../../style-spec/expression';
16
+ import type {Bucket, BucketParameters} from '../../data/bucket';
17
+ import type {LayoutProps, PaintProps} from './line_style_layer_properties';
18
+ import type Transform from '../../geo/transform';
19
+ import type {LayerSpecification} from '../../style-spec/types';
20
+
21
+ class LineFloorwidthProperty extends DataDrivenProperty<number> {
22
+ useIntegerZoom: true;
23
+
24
+ possiblyEvaluate(value, parameters) {
25
+ parameters = new EvaluationParameters(Math.floor(parameters.zoom), {
26
+ now: parameters.now,
27
+ fadeDuration: parameters.fadeDuration,
28
+ zoomHistory: parameters.zoomHistory,
29
+ transition: parameters.transition
30
+ });
31
+ return super.possiblyEvaluate(value, parameters);
32
+ }
33
+
34
+ evaluate(value, globals, feature, featureState) {
35
+ globals = extend({}, globals, {zoom: Math.floor(globals.zoom)});
36
+ return super.evaluate(value, globals, feature, featureState);
37
+ }
38
+ }
39
+
40
+ const lineFloorwidthProperty = new LineFloorwidthProperty(properties.paint.properties['line-width'].specification);
41
+ lineFloorwidthProperty.useIntegerZoom = true;
42
+
43
+ class LineStyleLayer extends StyleLayer {
44
+ _unevaluatedLayout: Layout<LayoutProps>;
45
+ layout: PossiblyEvaluated<LayoutProps>;
46
+
47
+ gradientVersion: number;
48
+ stepInterpolant: boolean;
49
+
50
+ _transitionablePaint: Transitionable<PaintProps>;
51
+ _transitioningPaint: Transitioning<PaintProps>;
52
+ paint: PossiblyEvaluated<PaintProps>;
53
+
54
+ constructor(layer: LayerSpecification) {
55
+ super(layer, properties);
56
+ this.gradientVersion = 0;
57
+ }
58
+
59
+ _handleSpecialPaintPropertyUpdate(name: string) {
60
+ if (name === 'line-gradient') {
61
+ const expression: ZoomConstantExpression<'source'> = ((this._transitionablePaint._values['line-gradient'].value.expression): any);
62
+ this.stepInterpolant = expression._styleExpression.expression instanceof Step;
63
+ this.gradientVersion = (this.gradientVersion + 1) % MAX_SAFE_INTEGER;
64
+ }
65
+ }
66
+
67
+ gradientExpression() {
68
+ return this._transitionablePaint._values['line-gradient'].value.expression;
69
+ }
70
+
71
+ recalculate(parameters: EvaluationParameters, availableImages: Array<string>) {
72
+ super.recalculate(parameters, availableImages);
73
+
74
+ (this.paint._values: any)['line-floorwidth'] =
75
+ lineFloorwidthProperty.possiblyEvaluate(this._transitioningPaint._values['line-width'].value, parameters);
76
+ }
77
+
78
+ createBucket(parameters: BucketParameters<*>) {
79
+ return new LineBucket(parameters);
80
+ }
81
+
82
+ queryRadius(bucket: Bucket): number {
83
+ const lineBucket: LineBucket = (bucket: any);
84
+ const width = getLineWidth(
85
+ getMaximumPaintValue('line-width', this, lineBucket),
86
+ getMaximumPaintValue('line-gap-width', this, lineBucket));
87
+ const offset = getMaximumPaintValue('line-offset', this, lineBucket);
88
+ return width / 2 + Math.abs(offset) + translateDistance(this.paint.get('line-translate'));
89
+ }
90
+
91
+ queryIntersectsFeature(queryGeometry: Array<Point>,
92
+ feature: VectorTileFeature,
93
+ featureState: FeatureState,
94
+ geometry: Array<Array<Point>>,
95
+ zoom: number,
96
+ transform: Transform,
97
+ pixelsToTileUnits: number): boolean {
98
+ const translatedPolygon = translate(queryGeometry,
99
+ this.paint.get('line-translate'),
100
+ this.paint.get('line-translate-anchor'),
101
+ transform.angle, pixelsToTileUnits);
102
+ const halfWidth = pixelsToTileUnits / 2 * getLineWidth(
103
+ this.paint.get('line-width').evaluate(feature, featureState),
104
+ this.paint.get('line-gap-width').evaluate(feature, featureState));
105
+ const lineOffset = this.paint.get('line-offset').evaluate(feature, featureState);
106
+ if (lineOffset) {
107
+ geometry = offsetLine(geometry, lineOffset * pixelsToTileUnits);
108
+ }
109
+
110
+ return polygonIntersectsBufferedMultiLine(translatedPolygon, geometry, halfWidth);
111
+ }
112
+
113
+ isTileClipped() {
114
+ return true;
115
+ }
116
+ }
117
+
118
+ export default LineStyleLayer;
119
+
120
+ function getLineWidth(lineWidth, lineGapWidth) {
121
+ if (lineGapWidth > 0) {
122
+ return lineGapWidth + 2 * lineWidth;
123
+ } else {
124
+ return lineWidth;
125
+ }
126
+ }
127
+
128
+ function offsetLine(rings, offset) {
129
+ const newRings = [];
130
+ const zero = new Point(0, 0);
131
+ for (let k = 0; k < rings.length; k++) {
132
+ const ring = rings[k];
133
+ const newRing = [];
134
+ for (let i = 0; i < ring.length; i++) {
135
+ const a = ring[i - 1];
136
+ const b = ring[i];
137
+ const c = ring[i + 1];
138
+ const aToB = i === 0 ? zero : b.sub(a)._unit()._perp();
139
+ const bToC = i === ring.length - 1 ? zero : c.sub(b)._unit()._perp();
140
+ const extrude = aToB._add(bToC)._unit();
141
+
142
+ const cosHalfAngle = extrude.x * bToC.x + extrude.y * bToC.y;
143
+ extrude._mult(1 / cosHalfAngle);
144
+
145
+ newRing.push(extrude._mult(offset)._add(b));
146
+ }
147
+ newRings.push(newRing);
148
+ }
149
+ return newRings;
150
+ }
@@ -0,0 +1,71 @@
1
+ // This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.
2
+ // @flow
3
+ /* eslint-disable */
4
+
5
+ import styleSpec from '../../style-spec/reference/latest';
6
+
7
+ import {
8
+ Properties,
9
+ DataConstantProperty,
10
+ DataDrivenProperty,
11
+ CrossFadedDataDrivenProperty,
12
+ CrossFadedProperty,
13
+ ColorRampProperty
14
+ } from '../properties';
15
+
16
+ import type Color from '../../style-spec/util/color';
17
+
18
+ import type Formatted from '../../style-spec/expression/types/formatted';
19
+
20
+ import type ResolvedImage from '../../style-spec/expression/types/resolved_image';
21
+
22
+ export type LayoutProps = {|
23
+ "line-cap": DataConstantProperty<"butt" | "round" | "square">,
24
+ "line-join": DataDrivenProperty<"bevel" | "round" | "miter">,
25
+ "line-miter-limit": DataConstantProperty<number>,
26
+ "line-round-limit": DataConstantProperty<number>,
27
+ "line-sort-key": DataDrivenProperty<number>,
28
+ |};
29
+
30
+ const layout: Properties<LayoutProps> = new Properties({
31
+ "line-cap": new DataConstantProperty(styleSpec["layout_line"]["line-cap"]),
32
+ "line-join": new DataDrivenProperty(styleSpec["layout_line"]["line-join"]),
33
+ "line-miter-limit": new DataConstantProperty(styleSpec["layout_line"]["line-miter-limit"]),
34
+ "line-round-limit": new DataConstantProperty(styleSpec["layout_line"]["line-round-limit"]),
35
+ "line-sort-key": new DataDrivenProperty(styleSpec["layout_line"]["line-sort-key"]),
36
+ });
37
+
38
+ export type PaintProps = {|
39
+ "line-opacity": DataDrivenProperty<number>,
40
+ "line-color": DataDrivenProperty<Color>,
41
+ "line-translate": DataConstantProperty<[number, number]>,
42
+ "line-translate-anchor": DataConstantProperty<"map" | "viewport">,
43
+ "line-width": DataDrivenProperty<number>,
44
+ "line-gap-width": DataDrivenProperty<number>,
45
+ "line-offset": DataDrivenProperty<number>,
46
+ "line-blur": DataDrivenProperty<number>,
47
+ "line-dasharray": CrossFadedProperty<Array<number>>,
48
+ "line-pattern": CrossFadedDataDrivenProperty<ResolvedImage>,
49
+ "line-gradient": ColorRampProperty,
50
+ |};
51
+
52
+ const paint: Properties<PaintProps> = new Properties({
53
+ "line-opacity": new DataDrivenProperty(styleSpec["paint_line"]["line-opacity"]),
54
+ "line-color": new DataDrivenProperty(styleSpec["paint_line"]["line-color"]),
55
+ "line-translate": new DataConstantProperty(styleSpec["paint_line"]["line-translate"]),
56
+ "line-translate-anchor": new DataConstantProperty(styleSpec["paint_line"]["line-translate-anchor"]),
57
+ "line-width": new DataDrivenProperty(styleSpec["paint_line"]["line-width"]),
58
+ "line-gap-width": new DataDrivenProperty(styleSpec["paint_line"]["line-gap-width"]),
59
+ "line-offset": new DataDrivenProperty(styleSpec["paint_line"]["line-offset"]),
60
+ "line-blur": new DataDrivenProperty(styleSpec["paint_line"]["line-blur"]),
61
+ "line-dasharray": new CrossFadedProperty(styleSpec["paint_line"]["line-dasharray"]),
62
+ "line-pattern": new CrossFadedDataDrivenProperty(styleSpec["paint_line"]["line-pattern"]),
63
+ "line-gradient": new ColorRampProperty(styleSpec["paint_line"]["line-gradient"]),
64
+ });
65
+
66
+ // Note: without adding the explicit type annotation, Flow infers weaker types
67
+ // for these objects from their use in the constructor to StyleLayer, as
68
+ // {layout?: Properties<...>, paint: Properties<...>}
69
+ export default ({ paint, layout }: $Exact<{
70
+ paint: Properties<PaintProps>, layout: Properties<LayoutProps>
71
+ }>);
@@ -0,0 +1,21 @@
1
+ // @flow
2
+
3
+ import StyleLayer from '../style_layer';
4
+
5
+ import properties from './raster_style_layer_properties';
6
+ import {Transitionable, Transitioning, PossiblyEvaluated} from '../properties';
7
+
8
+ import type {PaintProps} from './raster_style_layer_properties';
9
+ import type {LayerSpecification} from '../../style-spec/types';
10
+
11
+ class RasterStyleLayer extends StyleLayer {
12
+ _transitionablePaint: Transitionable<PaintProps>;
13
+ _transitioningPaint: Transitioning<PaintProps>;
14
+ paint: PossiblyEvaluated<PaintProps>;
15
+
16
+ constructor(layer: LayerSpecification) {
17
+ super(layer, properties);
18
+ }
19
+ }
20
+
21
+ export default RasterStyleLayer;
@@ -0,0 +1,50 @@
1
+ // This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.
2
+ // @flow
3
+ /* eslint-disable */
4
+
5
+ import styleSpec from '../../style-spec/reference/latest';
6
+
7
+ import {
8
+ Properties,
9
+ DataConstantProperty,
10
+ DataDrivenProperty,
11
+ CrossFadedDataDrivenProperty,
12
+ CrossFadedProperty,
13
+ ColorRampProperty
14
+ } from '../properties';
15
+
16
+ import type Color from '../../style-spec/util/color';
17
+
18
+ import type Formatted from '../../style-spec/expression/types/formatted';
19
+
20
+ import type ResolvedImage from '../../style-spec/expression/types/resolved_image';
21
+
22
+
23
+ export type PaintProps = {|
24
+ "raster-opacity": DataConstantProperty<number>,
25
+ "raster-hue-rotate": DataConstantProperty<number>,
26
+ "raster-brightness-min": DataConstantProperty<number>,
27
+ "raster-brightness-max": DataConstantProperty<number>,
28
+ "raster-saturation": DataConstantProperty<number>,
29
+ "raster-contrast": DataConstantProperty<number>,
30
+ "raster-resampling": DataConstantProperty<"linear" | "nearest">,
31
+ "raster-fade-duration": DataConstantProperty<number>,
32
+ |};
33
+
34
+ const paint: Properties<PaintProps> = new Properties({
35
+ "raster-opacity": new DataConstantProperty(styleSpec["paint_raster"]["raster-opacity"]),
36
+ "raster-hue-rotate": new DataConstantProperty(styleSpec["paint_raster"]["raster-hue-rotate"]),
37
+ "raster-brightness-min": new DataConstantProperty(styleSpec["paint_raster"]["raster-brightness-min"]),
38
+ "raster-brightness-max": new DataConstantProperty(styleSpec["paint_raster"]["raster-brightness-max"]),
39
+ "raster-saturation": new DataConstantProperty(styleSpec["paint_raster"]["raster-saturation"]),
40
+ "raster-contrast": new DataConstantProperty(styleSpec["paint_raster"]["raster-contrast"]),
41
+ "raster-resampling": new DataConstantProperty(styleSpec["paint_raster"]["raster-resampling"]),
42
+ "raster-fade-duration": new DataConstantProperty(styleSpec["paint_raster"]["raster-fade-duration"]),
43
+ });
44
+
45
+ // Note: without adding the explicit type annotation, Flow infers weaker types
46
+ // for these objects from their use in the constructor to StyleLayer, as
47
+ // {layout?: Properties<...>, paint: Properties<...>}
48
+ export default ({ paint }: $Exact<{
49
+ paint: Properties<PaintProps>
50
+ }>);
@@ -0,0 +1,190 @@
1
+ // @flow
2
+
3
+ import StyleLayer from '../style_layer';
4
+
5
+ import assert from 'assert';
6
+ import SymbolBucket from '../../data/bucket/symbol_bucket';
7
+ import resolveTokens from '../../util/resolve_tokens';
8
+ import properties from './symbol_style_layer_properties';
9
+
10
+ import {
11
+ Transitionable,
12
+ Transitioning,
13
+ Layout,
14
+ PossiblyEvaluated,
15
+ PossiblyEvaluatedPropertyValue,
16
+ PropertyValue
17
+ } from '../properties';
18
+
19
+ import {
20
+ isExpression,
21
+ StyleExpression,
22
+ ZoomConstantExpression,
23
+ ZoomDependentExpression
24
+ } from '../../style-spec/expression';
25
+
26
+ import type {BucketParameters} from '../../data/bucket';
27
+ import type {LayoutProps, PaintProps} from './symbol_style_layer_properties';
28
+ import type EvaluationParameters from '../evaluation_parameters';
29
+ import type {LayerSpecification} from '../../style-spec/types';
30
+ import type {Feature, SourceExpression, CompositeExpression} from '../../style-spec/expression';
31
+ import type {Expression} from '../../style-spec/expression/expression';
32
+ import type {CanonicalTileID} from '../../source/tile_id';
33
+ import {FormattedType} from '../../style-spec/expression/types';
34
+ import {typeOf} from '../../style-spec/expression/values';
35
+ import Formatted from '../../style-spec/expression/types/formatted';
36
+ import FormatSectionOverride from '../format_section_override';
37
+ import FormatExpression from '../../style-spec/expression/definitions/format';
38
+ import Literal from '../../style-spec/expression/definitions/literal';
39
+
40
+ class SymbolStyleLayer extends StyleLayer {
41
+ _unevaluatedLayout: Layout<LayoutProps>;
42
+ layout: PossiblyEvaluated<LayoutProps>;
43
+
44
+ _transitionablePaint: Transitionable<PaintProps>;
45
+ _transitioningPaint: Transitioning<PaintProps>;
46
+ paint: PossiblyEvaluated<PaintProps>;
47
+
48
+ constructor(layer: LayerSpecification) {
49
+ super(layer, properties);
50
+ }
51
+
52
+ recalculate(parameters: EvaluationParameters, availableImages: Array<string>) {
53
+ super.recalculate(parameters, availableImages);
54
+
55
+ if (this.layout.get('icon-rotation-alignment') === 'auto') {
56
+ if (this.layout.get('symbol-placement') !== 'point') {
57
+ this.layout._values['icon-rotation-alignment'] = 'map';
58
+ } else {
59
+ this.layout._values['icon-rotation-alignment'] = 'viewport';
60
+ }
61
+ }
62
+
63
+ if (this.layout.get('text-rotation-alignment') === 'auto') {
64
+ if (this.layout.get('symbol-placement') !== 'point') {
65
+ this.layout._values['text-rotation-alignment'] = 'map';
66
+ } else {
67
+ this.layout._values['text-rotation-alignment'] = 'viewport';
68
+ }
69
+ }
70
+
71
+ // If unspecified, `*-pitch-alignment` inherits `*-rotation-alignment`
72
+ if (this.layout.get('text-pitch-alignment') === 'auto') {
73
+ this.layout._values['text-pitch-alignment'] = this.layout.get('text-rotation-alignment');
74
+ }
75
+ if (this.layout.get('icon-pitch-alignment') === 'auto') {
76
+ this.layout._values['icon-pitch-alignment'] = this.layout.get('icon-rotation-alignment');
77
+ }
78
+
79
+ if (this.layout.get('symbol-placement') === 'point') {
80
+ const writingModes = this.layout.get('text-writing-mode');
81
+ if (writingModes) {
82
+ // remove duplicates, preserving order
83
+ const deduped = [];
84
+ for (const m of writingModes) {
85
+ if (deduped.indexOf(m) < 0) deduped.push(m);
86
+ }
87
+ this.layout._values['text-writing-mode'] = deduped;
88
+ } else {
89
+ this.layout._values['text-writing-mode'] = ['horizontal'];
90
+ }
91
+ }
92
+
93
+ this._setPaintOverrides();
94
+ }
95
+
96
+ getValueAndResolveTokens(name: *, feature: Feature, canonical: CanonicalTileID, availableImages: Array<string>) {
97
+ const value = this.layout.get(name).evaluate(feature, {}, canonical, availableImages);
98
+ const unevaluated = this._unevaluatedLayout._values[name];
99
+ if (!unevaluated.isDataDriven() && !isExpression(unevaluated.value) && value) {
100
+ return resolveTokens(feature.properties, value);
101
+ }
102
+
103
+ return value;
104
+ }
105
+
106
+ createBucket(parameters: BucketParameters<*>) {
107
+ return new SymbolBucket(parameters);
108
+ }
109
+
110
+ queryRadius(): number {
111
+ return 0;
112
+ }
113
+
114
+ queryIntersectsFeature(): boolean {
115
+ assert(false); // Should take a different path in FeatureIndex
116
+ return false;
117
+ }
118
+
119
+ _setPaintOverrides() {
120
+ for (const overridable of properties.paint.overridableProperties) {
121
+ if (!SymbolStyleLayer.hasPaintOverride(this.layout, overridable)) {
122
+ continue;
123
+ }
124
+ const overriden = this.paint.get(overridable);
125
+ const override = new FormatSectionOverride(overriden);
126
+ const styleExpression = new StyleExpression(override, overriden.property.specification);
127
+ let expression = null;
128
+ if (overriden.value.kind === 'constant' || overriden.value.kind === 'source') {
129
+ expression = (new ZoomConstantExpression('source', styleExpression): SourceExpression);
130
+ } else {
131
+ expression = (new ZoomDependentExpression('composite',
132
+ styleExpression,
133
+ overriden.value.zoomStops,
134
+ overriden.value._interpolationType): CompositeExpression);
135
+ }
136
+ this.paint._values[overridable] = new PossiblyEvaluatedPropertyValue(overriden.property,
137
+ expression,
138
+ overriden.parameters);
139
+ }
140
+ }
141
+
142
+ _handleOverridablePaintPropertyUpdate<T, R>(name: string, oldValue: PropertyValue<T, R>, newValue: PropertyValue<T, R>): boolean {
143
+ if (!this.layout || oldValue.isDataDriven() || newValue.isDataDriven()) {
144
+ return false;
145
+ }
146
+ return SymbolStyleLayer.hasPaintOverride(this.layout, name);
147
+ }
148
+
149
+ static hasPaintOverride(layout: PossiblyEvaluated<LayoutProps>, propertyName: string): boolean {
150
+ const textField = layout.get('text-field');
151
+ const property = properties.paint.properties[propertyName];
152
+ let hasOverrides = false;
153
+
154
+ const checkSections = (sections) => {
155
+ for (const section of sections) {
156
+ if (property.overrides && property.overrides.hasOverride(section)) {
157
+ hasOverrides = true;
158
+ return;
159
+ }
160
+ }
161
+ };
162
+
163
+ if (textField.value.kind === 'constant' && textField.value.value instanceof Formatted) {
164
+ checkSections(textField.value.value.sections);
165
+ } else if (textField.value.kind === 'source') {
166
+
167
+ const checkExpression = (expression: Expression) => {
168
+ if (hasOverrides) return;
169
+
170
+ if (expression instanceof Literal && typeOf(expression.value) === FormattedType) {
171
+ const formatted: Formatted = ((expression.value): any);
172
+ checkSections(formatted.sections);
173
+ } else if (expression instanceof FormatExpression) {
174
+ checkSections(expression.sections);
175
+ } else {
176
+ expression.eachChild(checkExpression);
177
+ }
178
+ };
179
+
180
+ const expr: ZoomConstantExpression<'source'> = ((textField.value): any);
181
+ if (expr._styleExpression) {
182
+ checkExpression(expr._styleExpression.expression);
183
+ }
184
+ }
185
+
186
+ return hasOverrides;
187
+ }
188
+ }
189
+
190
+ export default SymbolStyleLayer;
@@ -0,0 +1,153 @@
1
+ // This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.
2
+ // @flow
3
+ /* eslint-disable */
4
+
5
+ import styleSpec from '../../style-spec/reference/latest';
6
+
7
+ import {
8
+ Properties,
9
+ DataConstantProperty,
10
+ DataDrivenProperty,
11
+ CrossFadedDataDrivenProperty,
12
+ CrossFadedProperty,
13
+ ColorRampProperty
14
+ } from '../properties';
15
+
16
+ import type Color from '../../style-spec/util/color';
17
+
18
+ import type Formatted from '../../style-spec/expression/types/formatted';
19
+
20
+ import type ResolvedImage from '../../style-spec/expression/types/resolved_image';
21
+
22
+ import {
23
+ ColorType
24
+ } from '../../style-spec/expression/types';
25
+
26
+ export type LayoutProps = {|
27
+ "symbol-placement": DataConstantProperty<"point" | "line" | "line-center">,
28
+ "symbol-spacing": DataConstantProperty<number>,
29
+ "symbol-avoid-edges": DataConstantProperty<boolean>,
30
+ "symbol-sort-key": DataDrivenProperty<number>,
31
+ "symbol-z-order": DataConstantProperty<"auto" | "viewport-y" | "source">,
32
+ "icon-allow-overlap": DataConstantProperty<boolean>,
33
+ "icon-ignore-placement": DataConstantProperty<boolean>,
34
+ "icon-optional": DataConstantProperty<boolean>,
35
+ "icon-rotation-alignment": DataConstantProperty<"map" | "viewport" | "auto">,
36
+ "icon-size": DataDrivenProperty<number>,
37
+ "icon-text-fit": DataConstantProperty<"none" | "width" | "height" | "both">,
38
+ "icon-text-fit-padding": DataConstantProperty<[number, number, number, number]>,
39
+ "icon-image": DataDrivenProperty<ResolvedImage>,
40
+ "icon-rotate": DataDrivenProperty<number>,
41
+ "icon-padding": DataConstantProperty<number>,
42
+ "icon-keep-upright": DataConstantProperty<boolean>,
43
+ "icon-offset": DataDrivenProperty<[number, number]>,
44
+ "icon-anchor": DataDrivenProperty<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">,
45
+ "icon-pitch-alignment": DataConstantProperty<"map" | "viewport" | "auto">,
46
+ "text-pitch-alignment": DataConstantProperty<"map" | "viewport" | "auto">,
47
+ "text-rotation-alignment": DataConstantProperty<"map" | "viewport" | "auto">,
48
+ "text-field": DataDrivenProperty<Formatted>,
49
+ "text-font": DataDrivenProperty<Array<string>>,
50
+ "text-size": DataDrivenProperty<number>,
51
+ "text-max-width": DataDrivenProperty<number>,
52
+ "text-line-height": DataConstantProperty<number>,
53
+ "text-letter-spacing": DataDrivenProperty<number>,
54
+ "text-justify": DataDrivenProperty<"auto" | "left" | "center" | "right">,
55
+ "text-radial-offset": DataDrivenProperty<number>,
56
+ "text-variable-anchor": DataConstantProperty<Array<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">>,
57
+ "text-anchor": DataDrivenProperty<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">,
58
+ "text-max-angle": DataConstantProperty<number>,
59
+ "text-writing-mode": DataConstantProperty<Array<"horizontal" | "vertical">>,
60
+ "text-rotate": DataDrivenProperty<number>,
61
+ "text-padding": DataConstantProperty<number>,
62
+ "text-keep-upright": DataConstantProperty<boolean>,
63
+ "text-transform": DataDrivenProperty<"none" | "uppercase" | "lowercase">,
64
+ "text-offset": DataDrivenProperty<[number, number]>,
65
+ "text-allow-overlap": DataConstantProperty<boolean>,
66
+ "text-ignore-placement": DataConstantProperty<boolean>,
67
+ "text-optional": DataConstantProperty<boolean>,
68
+ |};
69
+
70
+ const layout: Properties<LayoutProps> = new Properties({
71
+ "symbol-placement": new DataConstantProperty(styleSpec["layout_symbol"]["symbol-placement"]),
72
+ "symbol-spacing": new DataConstantProperty(styleSpec["layout_symbol"]["symbol-spacing"]),
73
+ "symbol-avoid-edges": new DataConstantProperty(styleSpec["layout_symbol"]["symbol-avoid-edges"]),
74
+ "symbol-sort-key": new DataDrivenProperty(styleSpec["layout_symbol"]["symbol-sort-key"]),
75
+ "symbol-z-order": new DataConstantProperty(styleSpec["layout_symbol"]["symbol-z-order"]),
76
+ "icon-allow-overlap": new DataConstantProperty(styleSpec["layout_symbol"]["icon-allow-overlap"]),
77
+ "icon-ignore-placement": new DataConstantProperty(styleSpec["layout_symbol"]["icon-ignore-placement"]),
78
+ "icon-optional": new DataConstantProperty(styleSpec["layout_symbol"]["icon-optional"]),
79
+ "icon-rotation-alignment": new DataConstantProperty(styleSpec["layout_symbol"]["icon-rotation-alignment"]),
80
+ "icon-size": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-size"]),
81
+ "icon-text-fit": new DataConstantProperty(styleSpec["layout_symbol"]["icon-text-fit"]),
82
+ "icon-text-fit-padding": new DataConstantProperty(styleSpec["layout_symbol"]["icon-text-fit-padding"]),
83
+ "icon-image": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-image"]),
84
+ "icon-rotate": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-rotate"]),
85
+ "icon-padding": new DataConstantProperty(styleSpec["layout_symbol"]["icon-padding"]),
86
+ "icon-keep-upright": new DataConstantProperty(styleSpec["layout_symbol"]["icon-keep-upright"]),
87
+ "icon-offset": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-offset"]),
88
+ "icon-anchor": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-anchor"]),
89
+ "icon-pitch-alignment": new DataConstantProperty(styleSpec["layout_symbol"]["icon-pitch-alignment"]),
90
+ "text-pitch-alignment": new DataConstantProperty(styleSpec["layout_symbol"]["text-pitch-alignment"]),
91
+ "text-rotation-alignment": new DataConstantProperty(styleSpec["layout_symbol"]["text-rotation-alignment"]),
92
+ "text-field": new DataDrivenProperty(styleSpec["layout_symbol"]["text-field"]),
93
+ "text-font": new DataDrivenProperty(styleSpec["layout_symbol"]["text-font"]),
94
+ "text-size": new DataDrivenProperty(styleSpec["layout_symbol"]["text-size"]),
95
+ "text-max-width": new DataDrivenProperty(styleSpec["layout_symbol"]["text-max-width"]),
96
+ "text-line-height": new DataConstantProperty(styleSpec["layout_symbol"]["text-line-height"]),
97
+ "text-letter-spacing": new DataDrivenProperty(styleSpec["layout_symbol"]["text-letter-spacing"]),
98
+ "text-justify": new DataDrivenProperty(styleSpec["layout_symbol"]["text-justify"]),
99
+ "text-radial-offset": new DataDrivenProperty(styleSpec["layout_symbol"]["text-radial-offset"]),
100
+ "text-variable-anchor": new DataConstantProperty(styleSpec["layout_symbol"]["text-variable-anchor"]),
101
+ "text-anchor": new DataDrivenProperty(styleSpec["layout_symbol"]["text-anchor"]),
102
+ "text-max-angle": new DataConstantProperty(styleSpec["layout_symbol"]["text-max-angle"]),
103
+ "text-writing-mode": new DataConstantProperty(styleSpec["layout_symbol"]["text-writing-mode"]),
104
+ "text-rotate": new DataDrivenProperty(styleSpec["layout_symbol"]["text-rotate"]),
105
+ "text-padding": new DataConstantProperty(styleSpec["layout_symbol"]["text-padding"]),
106
+ "text-keep-upright": new DataConstantProperty(styleSpec["layout_symbol"]["text-keep-upright"]),
107
+ "text-transform": new DataDrivenProperty(styleSpec["layout_symbol"]["text-transform"]),
108
+ "text-offset": new DataDrivenProperty(styleSpec["layout_symbol"]["text-offset"]),
109
+ "text-allow-overlap": new DataConstantProperty(styleSpec["layout_symbol"]["text-allow-overlap"]),
110
+ "text-ignore-placement": new DataConstantProperty(styleSpec["layout_symbol"]["text-ignore-placement"]),
111
+ "text-optional": new DataConstantProperty(styleSpec["layout_symbol"]["text-optional"]),
112
+ });
113
+
114
+ export type PaintProps = {|
115
+ "icon-opacity": DataDrivenProperty<number>,
116
+ "icon-color": DataDrivenProperty<Color>,
117
+ "icon-halo-color": DataDrivenProperty<Color>,
118
+ "icon-halo-width": DataDrivenProperty<number>,
119
+ "icon-halo-blur": DataDrivenProperty<number>,
120
+ "icon-translate": DataConstantProperty<[number, number]>,
121
+ "icon-translate-anchor": DataConstantProperty<"map" | "viewport">,
122
+ "text-opacity": DataDrivenProperty<number>,
123
+ "text-color": DataDrivenProperty<Color>,
124
+ "text-halo-color": DataDrivenProperty<Color>,
125
+ "text-halo-width": DataDrivenProperty<number>,
126
+ "text-halo-blur": DataDrivenProperty<number>,
127
+ "text-translate": DataConstantProperty<[number, number]>,
128
+ "text-translate-anchor": DataConstantProperty<"map" | "viewport">,
129
+ |};
130
+
131
+ const paint: Properties<PaintProps> = new Properties({
132
+ "icon-opacity": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-opacity"]),
133
+ "icon-color": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-color"]),
134
+ "icon-halo-color": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-halo-color"]),
135
+ "icon-halo-width": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-halo-width"]),
136
+ "icon-halo-blur": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-halo-blur"]),
137
+ "icon-translate": new DataConstantProperty(styleSpec["paint_symbol"]["icon-translate"]),
138
+ "icon-translate-anchor": new DataConstantProperty(styleSpec["paint_symbol"]["icon-translate-anchor"]),
139
+ "text-opacity": new DataDrivenProperty(styleSpec["paint_symbol"]["text-opacity"]),
140
+ "text-color": new DataDrivenProperty(styleSpec["paint_symbol"]["text-color"], { runtimeType: ColorType, getOverride: (o) => o.textColor, hasOverride: (o) => !!o.textColor }),
141
+ "text-halo-color": new DataDrivenProperty(styleSpec["paint_symbol"]["text-halo-color"]),
142
+ "text-halo-width": new DataDrivenProperty(styleSpec["paint_symbol"]["text-halo-width"]),
143
+ "text-halo-blur": new DataDrivenProperty(styleSpec["paint_symbol"]["text-halo-blur"]),
144
+ "text-translate": new DataConstantProperty(styleSpec["paint_symbol"]["text-translate"]),
145
+ "text-translate-anchor": new DataConstantProperty(styleSpec["paint_symbol"]["text-translate-anchor"]),
146
+ });
147
+
148
+ // Note: without adding the explicit type annotation, Flow infers weaker types
149
+ // for these objects from their use in the constructor to StyleLayer, as
150
+ // {layout?: Properties<...>, paint: Properties<...>}
151
+ export default ({ paint, layout }: $Exact<{
152
+ paint: Properties<PaintProps>, layout: Properties<LayoutProps>
153
+ }>);
@@ -0,0 +1,17 @@
1
+ // @flow
2
+
3
+ import type CircleStyleLayer from './circle_style_layer';
4
+ import type FillStyleLayer from './fill_style_layer';
5
+ import type FillExtrusionStyleLayer from './fill_extrusion_style_layer';
6
+ import type HeatmapStyleLayer from './heatmap_style_layer';
7
+ import type HillshadeStyleLayer from './hillshade_style_layer';
8
+ import type LineStyleLayer from './line_style_layer';
9
+ import type SymbolStyleLayer from './symbol_style_layer';
10
+
11
+ export type TypedStyleLayer = CircleStyleLayer |
12
+ FillStyleLayer |
13
+ FillExtrusionStyleLayer |
14
+ HeatmapStyleLayer |
15
+ HillshadeStyleLayer |
16
+ LineStyleLayer |
17
+ SymbolStyleLayer;