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,52 @@
1
+ // @flow
2
+
3
+ import quickselect from 'quickselect';
4
+
5
+ import {calculateSignedArea} from './util';
6
+
7
+ import type Point from '@mapbox/point-geometry';
8
+
9
+ // classifies an array of rings into polygons with outer rings and holes
10
+ export default function classifyRings(rings: Array<Array<Point>>, maxRings: number) {
11
+ const len = rings.length;
12
+
13
+ if (len <= 1) return [rings];
14
+
15
+ const polygons = [];
16
+ let polygon,
17
+ ccw;
18
+
19
+ for (let i = 0; i < len; i++) {
20
+ const area = calculateSignedArea(rings[i]);
21
+ if (area === 0) continue;
22
+
23
+ (rings[i]: any).area = Math.abs(area);
24
+
25
+ if (ccw === undefined) ccw = area < 0;
26
+
27
+ if (ccw === area < 0) {
28
+ if (polygon) polygons.push(polygon);
29
+ polygon = [rings[i]];
30
+
31
+ } else {
32
+ (polygon: any).push(rings[i]);
33
+ }
34
+ }
35
+ if (polygon) polygons.push(polygon);
36
+
37
+ // Earcut performance degrades with the # of rings in a polygon. For this
38
+ // reason, we limit strip out all but the `maxRings` largest rings.
39
+ if (maxRings > 1) {
40
+ for (let j = 0; j < polygons.length; j++) {
41
+ if (polygons[j].length <= maxRings) continue;
42
+ quickselect(polygons[j], maxRings, 1, polygons[j].length - 1, compareAreas);
43
+ polygons[j] = polygons[j].slice(0, maxRings);
44
+ }
45
+ }
46
+
47
+ return polygons;
48
+ }
49
+
50
+ function compareAreas(a, b) {
51
+ return b.area - a.area;
52
+ }
@@ -0,0 +1,61 @@
1
+ // @flow
2
+
3
+ import {RGBAImage} from './image';
4
+ import {isPowerOfTwo} from './util';
5
+ import assert from 'assert';
6
+
7
+ import type {StylePropertyExpression} from '../style-spec/expression/index';
8
+
9
+ export type ColorRampParams = {
10
+ expression: StylePropertyExpression;
11
+ evaluationKey: string;
12
+ resolution?: number;
13
+ image?: RGBAImage;
14
+ clips?: Array<Object>;
15
+ }
16
+
17
+ /**
18
+ * Given an expression that should evaluate to a color ramp,
19
+ * return a RGBA image representing that ramp expression.
20
+ *
21
+ * @private
22
+ */
23
+ export function renderColorRamp(params: ColorRampParams): RGBAImage {
24
+ const evaluationGlobals = {};
25
+ const width = params.resolution || 256;
26
+ const height = params.clips ? params.clips.length : 1;
27
+ const image = params.image || new RGBAImage({width, height});
28
+
29
+ assert(isPowerOfTwo(width));
30
+
31
+ const renderPixel = (stride, index, progress) => {
32
+ evaluationGlobals[params.evaluationKey] = progress;
33
+ const pxColor = params.expression.evaluate((evaluationGlobals: any));
34
+ // the colors are being unpremultiplied because Color uses
35
+ // premultiplied values, and the Texture class expects unpremultiplied ones
36
+ image.data[stride + index + 0] = Math.floor(pxColor.r * 255 / pxColor.a);
37
+ image.data[stride + index + 1] = Math.floor(pxColor.g * 255 / pxColor.a);
38
+ image.data[stride + index + 2] = Math.floor(pxColor.b * 255 / pxColor.a);
39
+ image.data[stride + index + 3] = Math.floor(pxColor.a * 255);
40
+ };
41
+
42
+ if (!params.clips) {
43
+ for (let i = 0, j = 0; i < width; i++, j += 4) {
44
+ const progress = i / (width - 1);
45
+
46
+ renderPixel(0, j, progress);
47
+ }
48
+ } else {
49
+ for (let clip = 0, stride = 0; clip < height; ++clip, stride += width * 4) {
50
+ for (let i = 0, j = 0; i < width; i++, j += 4) {
51
+ // Remap progress between clips
52
+ const progress = i / (width - 1);
53
+ const {start, end} = params.clips[clip];
54
+ const evaluationProgress = start * (1 - progress) + end * progress;
55
+ renderPixel(stride, j, evaluationProgress);
56
+ }
57
+ }
58
+ }
59
+
60
+ return image;
61
+ }
@@ -0,0 +1,30 @@
1
+ // @flow strict
2
+
3
+ type Config = {|
4
+ API_URL: string,
5
+ EVENTS_URL: ?string,
6
+ FEEDBACK_URL: string,
7
+ REQUIRE_ACCESS_TOKEN: boolean,
8
+ ACCESS_TOKEN: ?string,
9
+ MAX_PARALLEL_IMAGE_REQUESTS: number
10
+ |};
11
+
12
+ const config: Config = {
13
+ API_URL: 'https://api.mapbox.com',
14
+ get EVENTS_URL() {
15
+ if (!this.API_URL) { return null; }
16
+ if (this.API_URL.indexOf('https://api.mapbox.cn') === 0) {
17
+ return 'https://events.mapbox.cn/events/v2';
18
+ } else if (this.API_URL.indexOf('https://api.mapbox.com') === 0) {
19
+ return 'https://events.mapbox.com/events/v2';
20
+ } else {
21
+ return null;
22
+ }
23
+ },
24
+ FEEDBACK_URL: 'https://apps.mapbox.com/feedback',
25
+ REQUIRE_ACCESS_TOKEN: true,
26
+ ACCESS_TOKEN: null,
27
+ MAX_PARALLEL_IMAGE_REQUESTS: 16
28
+ };
29
+
30
+ export default config;
@@ -0,0 +1,28 @@
1
+ // @flow
2
+ import {extend} from './util';
3
+ import window from './window';
4
+
5
+ /**
6
+ * This is a private namespace for utility functions that will get automatically stripped
7
+ * out in production builds.
8
+ *
9
+ * @private
10
+ */
11
+ export const Debug = {
12
+ extend(dest: Object, ...sources: Array<?Object>): Object {
13
+ return extend(dest, ...sources);
14
+ },
15
+
16
+ run(fn: () => any) {
17
+ fn();
18
+ },
19
+
20
+ logToElement(message: string, overwrite: boolean = false, id: string = "log") {
21
+ const el = window.document.getElementById(id);
22
+ if (el) {
23
+ if (overwrite) el.innerHTML = '';
24
+ el.innerHTML += `<br>${message}`;
25
+ }
26
+
27
+ }
28
+ };
@@ -0,0 +1,30 @@
1
+ // @flow strict
2
+
3
+ import assert from 'assert';
4
+
5
+ class DictionaryCoder {
6
+ _stringToNumber: {[_: string]: number };
7
+ _numberToString: Array<string>;
8
+
9
+ constructor(strings: Array<string>) {
10
+ this._stringToNumber = {};
11
+ this._numberToString = [];
12
+ for (let i = 0; i < strings.length; i++) {
13
+ const string = strings[i];
14
+ this._stringToNumber[string] = i;
15
+ this._numberToString[i] = string;
16
+ }
17
+ }
18
+
19
+ encode(string: string) {
20
+ assert(string in this._stringToNumber);
21
+ return this._stringToNumber[string];
22
+ }
23
+
24
+ decode(n: number) {
25
+ assert(n < this._numberToString.length);
26
+ return this._numberToString[n];
27
+ }
28
+ }
29
+
30
+ export default DictionaryCoder;
@@ -0,0 +1,70 @@
1
+ // @flow
2
+
3
+ import {uniqueId, asyncAll} from './util';
4
+ import Actor from './actor';
5
+ import assert from 'assert';
6
+
7
+ import type WorkerPool from './worker_pool';
8
+
9
+ /**
10
+ * Responsible for sending messages from a {@link Source} to an associated
11
+ * {@link WorkerSource}.
12
+ *
13
+ * @private
14
+ */
15
+ class Dispatcher {
16
+ workerPool: WorkerPool;
17
+ actors: Array<Actor>;
18
+ currentActor: number;
19
+ id: number;
20
+
21
+ // exposed to allow stubbing in unit tests
22
+ static Actor: Class<Actor>;
23
+
24
+ constructor(workerPool: WorkerPool, parent: any) {
25
+ this.workerPool = workerPool;
26
+ this.actors = [];
27
+ this.currentActor = 0;
28
+ this.id = uniqueId();
29
+ const workers = this.workerPool.acquire(this.id);
30
+ for (let i = 0; i < workers.length; i++) {
31
+ const worker = workers[i];
32
+ const actor = new Dispatcher.Actor(worker, parent, this.id);
33
+ actor.name = `Worker ${i}`;
34
+ this.actors.push(actor);
35
+ }
36
+ assert(this.actors.length);
37
+ }
38
+
39
+ /**
40
+ * Broadcast a message to all Workers.
41
+ * @private
42
+ */
43
+ broadcast(type: string, data: mixed, cb?: Function) {
44
+ assert(this.actors.length);
45
+ cb = cb || function () {};
46
+ asyncAll(this.actors, (actor, done) => {
47
+ actor.send(type, data, done);
48
+ }, cb);
49
+ }
50
+
51
+ /**
52
+ * Acquires an actor to dispatch messages to. The actors are distributed in round-robin fashion.
53
+ * @returns An actor object backed by a web worker for processing messages.
54
+ */
55
+ getActor(): Actor {
56
+ assert(this.actors.length);
57
+ this.currentActor = (this.currentActor + 1) % this.actors.length;
58
+ return this.actors[this.currentActor];
59
+ }
60
+
61
+ remove() {
62
+ this.actors.forEach((actor) => { actor.remove(); });
63
+ this.actors = [];
64
+ this.workerPool.release(this.id);
65
+ }
66
+ }
67
+
68
+ Dispatcher.Actor = Actor;
69
+
70
+ export default Dispatcher;
@@ -0,0 +1,142 @@
1
+ // @flow strict
2
+
3
+ import Point from '@mapbox/point-geometry';
4
+
5
+ import window from './window';
6
+ import assert from 'assert';
7
+
8
+ const DOM = {};
9
+ export default DOM;
10
+
11
+ DOM.create = function (tagName: string, className: ?string, container?: HTMLElement) {
12
+ const el = window.document.createElement(tagName);
13
+ if (className !== undefined) el.className = className;
14
+ if (container) container.appendChild(el);
15
+ return el;
16
+ };
17
+
18
+ DOM.createNS = function (namespaceURI: string, tagName: string) {
19
+ const el = window.document.createElementNS(namespaceURI, tagName);
20
+ return el;
21
+ };
22
+
23
+ const docStyle = window.document && window.document.documentElement.style;
24
+
25
+ function testProp(props) {
26
+ if (!docStyle) return props[0];
27
+ for (let i = 0; i < props.length; i++) {
28
+ if (props[i] in docStyle) {
29
+ return props[i];
30
+ }
31
+ }
32
+ return props[0];
33
+ }
34
+
35
+ const selectProp = testProp(['userSelect', 'MozUserSelect', 'WebkitUserSelect', 'msUserSelect']);
36
+ let userSelect;
37
+
38
+ DOM.disableDrag = function () {
39
+ if (docStyle && selectProp) {
40
+ userSelect = docStyle[selectProp];
41
+ docStyle[selectProp] = 'none';
42
+ }
43
+ };
44
+
45
+ DOM.enableDrag = function () {
46
+ if (docStyle && selectProp) {
47
+ docStyle[selectProp] = userSelect;
48
+ }
49
+ };
50
+
51
+ const transformProp = testProp(['transform', 'WebkitTransform']);
52
+
53
+ DOM.setTransform = function(el: HTMLElement, value: string) {
54
+ // https://github.com/facebook/flow/issues/7754
55
+ // $FlowFixMe
56
+ el.style[transformProp] = value;
57
+ };
58
+
59
+ // Feature detection for {passive: false} support in add/removeEventListener.
60
+ let passiveSupported = false;
61
+
62
+ try {
63
+ // https://github.com/facebook/flow/issues/285
64
+ // $FlowFixMe
65
+ const options = Object.defineProperty({}, "passive", {
66
+ get() { // eslint-disable-line
67
+ passiveSupported = true;
68
+ }
69
+ });
70
+ window.addEventListener("test", options, options);
71
+ window.removeEventListener("test", options, options);
72
+ } catch (err) {
73
+ passiveSupported = false;
74
+ }
75
+
76
+ DOM.addEventListener = function(target: *, type: *, callback: *, options: {passive?: boolean, capture?: boolean} = {}) {
77
+ if ('passive' in options && passiveSupported) {
78
+ target.addEventListener(type, callback, options);
79
+ } else {
80
+ target.addEventListener(type, callback, options.capture);
81
+ }
82
+ };
83
+
84
+ DOM.removeEventListener = function(target: *, type: *, callback: *, options: {passive?: boolean, capture?: boolean} = {}) {
85
+ if ('passive' in options && passiveSupported) {
86
+ target.removeEventListener(type, callback, options);
87
+ } else {
88
+ target.removeEventListener(type, callback, options.capture);
89
+ }
90
+ };
91
+
92
+ // Suppress the next click, but only if it's immediate.
93
+ const suppressClick: MouseEventListener = function (e) {
94
+ e.preventDefault();
95
+ e.stopPropagation();
96
+ window.removeEventListener('click', suppressClick, true);
97
+ };
98
+
99
+ DOM.suppressClick = function() {
100
+ window.addEventListener('click', suppressClick, true);
101
+ window.setTimeout(() => {
102
+ window.removeEventListener('click', suppressClick, true);
103
+ }, 0);
104
+ };
105
+
106
+ DOM.mousePos = function (el: HTMLElement, e: MouseEvent | window.TouchEvent | Touch) {
107
+ const rect = el.getBoundingClientRect();
108
+ return new Point(
109
+ e.clientX - rect.left - el.clientLeft,
110
+ e.clientY - rect.top - el.clientTop
111
+ );
112
+ };
113
+
114
+ DOM.touchPos = function (el: HTMLElement, touches: TouchList) {
115
+ const rect = el.getBoundingClientRect(),
116
+ points = [];
117
+ for (let i = 0; i < touches.length; i++) {
118
+ points.push(new Point(
119
+ touches[i].clientX - rect.left - el.clientLeft,
120
+ touches[i].clientY - rect.top - el.clientTop
121
+ ));
122
+ }
123
+ return points;
124
+ };
125
+
126
+ DOM.mouseButton = function (e: MouseEvent) {
127
+ assert(e.type === 'mousedown' || e.type === 'mouseup');
128
+ if (typeof window.InstallTrigger !== 'undefined' && e.button === 2 && e.ctrlKey &&
129
+ window.navigator.platform.toUpperCase().indexOf('MAC') >= 0) {
130
+ // Fix for https://github.com/mapbox/mapbox-gl-js/issues/3131:
131
+ // Firefox (detected by InstallTrigger) on Mac determines e.button = 2 when
132
+ // using Control + left click
133
+ return 0;
134
+ }
135
+ return e.button;
136
+ };
137
+
138
+ DOM.remove = function(node: HTMLElement) {
139
+ if (node.parentNode) {
140
+ node.parentNode.removeChild(node);
141
+ }
142
+ };
@@ -0,0 +1,174 @@
1
+ // @flow
2
+
3
+ import {extend} from './util';
4
+
5
+ type Listener = (Object) => any;
6
+ type Listeners = {[_: string]: Array<Listener> };
7
+
8
+ function _addEventListener(type: string, listener: Listener, listenerList: Listeners) {
9
+ const listenerExists = listenerList[type] && listenerList[type].indexOf(listener) !== -1;
10
+ if (!listenerExists) {
11
+ listenerList[type] = listenerList[type] || [];
12
+ listenerList[type].push(listener);
13
+ }
14
+ }
15
+
16
+ function _removeEventListener(type: string, listener: Listener, listenerList: Listeners) {
17
+ if (listenerList && listenerList[type]) {
18
+ const index = listenerList[type].indexOf(listener);
19
+ if (index !== -1) {
20
+ listenerList[type].splice(index, 1);
21
+ }
22
+ }
23
+ }
24
+
25
+ export class Event {
26
+ +type: string;
27
+
28
+ constructor(type: string, data: Object = {}) {
29
+ extend(this, data);
30
+ this.type = type;
31
+ }
32
+ }
33
+
34
+ interface ErrorLike {
35
+ message: string;
36
+ }
37
+
38
+ export class ErrorEvent extends Event {
39
+ error: ErrorLike;
40
+
41
+ constructor(error: ErrorLike, data: Object = {}) {
42
+ super('error', extend({error}, data));
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Methods mixed in to other classes for event capabilities.
48
+ *
49
+ * @mixin Evented
50
+ */
51
+ export class Evented {
52
+ _listeners: Listeners;
53
+ _oneTimeListeners: Listeners;
54
+ _eventedParent: ?Evented;
55
+ _eventedParentData: ?(Object | () => Object);
56
+
57
+ /**
58
+ * Adds a listener to a specified event type.
59
+ *
60
+ * @param {string} type The event type to add a listen for.
61
+ * @param {Function} listener The function to be called when the event is fired.
62
+ * The listener function is called with the data object passed to `fire`,
63
+ * extended with `target` and `type` properties.
64
+ * @returns {Object} `this`
65
+ */
66
+ on(type: *, listener: Listener): this {
67
+ this._listeners = this._listeners || {};
68
+ _addEventListener(type, listener, this._listeners);
69
+
70
+ return this;
71
+ }
72
+
73
+ /**
74
+ * Removes a previously registered event listener.
75
+ *
76
+ * @param {string} type The event type to remove listeners for.
77
+ * @param {Function} listener The listener function to remove.
78
+ * @returns {Object} `this`
79
+ */
80
+ off(type: *, listener: Listener) {
81
+ _removeEventListener(type, listener, this._listeners);
82
+ _removeEventListener(type, listener, this._oneTimeListeners);
83
+
84
+ return this;
85
+ }
86
+
87
+ /**
88
+ * Adds a listener that will be called only once to a specified event type.
89
+ *
90
+ * The listener will be called first time the event fires after the listener is registered.
91
+ *
92
+ * @param {string} type The event type to listen for.
93
+ * @param {Function} listener The function to be called when the event is fired the first time.
94
+ * @returns {Object} `this`
95
+ */
96
+ once(type: *, listener: Listener) {
97
+ this._oneTimeListeners = this._oneTimeListeners || {};
98
+ _addEventListener(type, listener, this._oneTimeListeners);
99
+
100
+ return this;
101
+ }
102
+
103
+ fire(event: Event, properties?: Object) {
104
+ // Compatibility with (type: string, properties: Object) signature from previous versions.
105
+ // See https://github.com/mapbox/mapbox-gl-js/issues/6522,
106
+ // https://github.com/mapbox/mapbox-gl-draw/issues/766
107
+ if (typeof event === 'string') {
108
+ event = new Event(event, properties || {});
109
+ }
110
+
111
+ const type = event.type;
112
+
113
+ if (this.listens(type)) {
114
+ (event: any).target = this;
115
+
116
+ // make sure adding or removing listeners inside other listeners won't cause an infinite loop
117
+ const listeners = this._listeners && this._listeners[type] ? this._listeners[type].slice() : [];
118
+ for (const listener of listeners) {
119
+ listener.call(this, event);
120
+ }
121
+
122
+ const oneTimeListeners = this._oneTimeListeners && this._oneTimeListeners[type] ? this._oneTimeListeners[type].slice() : [];
123
+ for (const listener of oneTimeListeners) {
124
+ _removeEventListener(type, listener, this._oneTimeListeners);
125
+ listener.call(this, event);
126
+ }
127
+
128
+ const parent = this._eventedParent;
129
+ if (parent) {
130
+ extend(
131
+ event,
132
+ typeof this._eventedParentData === 'function' ? this._eventedParentData() : this._eventedParentData
133
+ );
134
+ parent.fire(event);
135
+ }
136
+
137
+ // To ensure that no error events are dropped, print them to the
138
+ // console if they have no listeners.
139
+ } else if (event instanceof ErrorEvent) {
140
+ console.error(event.error);
141
+ }
142
+
143
+ return this;
144
+ }
145
+
146
+ /**
147
+ * Returns a true if this instance of Evented or any forwardeed instances of Evented have a listener for the specified type.
148
+ *
149
+ * @param {string} type The event type
150
+ * @returns {boolean} `true` if there is at least one registered listener for specified event type, `false` otherwise
151
+ * @private
152
+ */
153
+ listens(type: string) {
154
+ return (
155
+ (this._listeners && this._listeners[type] && this._listeners[type].length > 0) ||
156
+ (this._oneTimeListeners && this._oneTimeListeners[type] && this._oneTimeListeners[type].length > 0) ||
157
+ (this._eventedParent && this._eventedParent.listens(type))
158
+ );
159
+ }
160
+
161
+ /**
162
+ * Bubble all events fired by this instance of Evented to this parent instance of Evented.
163
+ *
164
+ * @private
165
+ * @returns {Object} `this`
166
+ * @private
167
+ */
168
+ setEventedParent(parent: ?Evented, data?: Object | () => Object) {
169
+ this._eventedParent = parent;
170
+ this._eventedParentData = data;
171
+
172
+ return this;
173
+ }
174
+ }