@mapgis/mapbox-gl 16.0.1 → 16.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mapbox-gl.js +3 -3
- package/dist/mapbox-gl.js.map +1 -1
- package/package.json +1 -1
- package/.flowconfig +0 -61
- package/LICENSE.txt +0 -84
- package/README.md +0 -34
- package/build/banner.js +0 -4
- package/build/check-bundle-size.js +0 -140
- package/build/generate-access-token-script.js +0 -11
- package/build/generate-flow-typed-style-spec.js +0 -188
- package/build/generate-release-list.js +0 -21
- package/build/generate-struct-arrays.js +0 -237
- package/build/generate-style-code.js +0 -159
- package/build/mapbox-gl.js.flow +0 -3
- package/build/print-release-url.js +0 -6
- package/build/rollup_plugin_minify_style_spec.js +0 -20
- package/build/rollup_plugins.js +0 -80
- package/build/run-node +0 -3
- package/build/run-tap +0 -8
- package/build/test/build-tape.js +0 -19
- package/flow-typed/gl.js +0 -5
- package/flow-typed/jsdom.js +0 -18
- package/flow-typed/mapbox-gl-supported.js +0 -9
- package/flow-typed/mapbox-unitbezier.js +0 -14
- package/flow-typed/offscreen-canvas.js +0 -9
- package/flow-typed/pbf.js +0 -25
- package/flow-typed/point-geometry.js +0 -44
- package/flow-typed/potpack.js +0 -12
- package/flow-typed/sinon.js +0 -28
- package/flow-typed/vector-tile.js +0 -41
- package/src/css/mapbox-gl.css +0 -798
- package/src/css/svg/mapboxgl-ctrl-attrib.svg +0 -3
- package/src/css/svg/mapboxgl-ctrl-compass.svg +0 -4
- package/src/css/svg/mapboxgl-ctrl-fullscreen.svg +0 -3
- package/src/css/svg/mapboxgl-ctrl-geolocate.svg +0 -5
- package/src/css/svg/mapboxgl-ctrl-logo.svg +0 -20
- package/src/css/svg/mapboxgl-ctrl-shrink.svg +0 -3
- package/src/css/svg/mapboxgl-ctrl-zoom-in.svg +0 -3
- package/src/css/svg/mapboxgl-ctrl-zoom-out.svg +0 -3
- package/src/data/array_types.js +0 -1095
- package/src/data/bucket/circle_attributes.js +0 -9
- package/src/data/bucket/circle_bucket.js +0 -204
- package/src/data/bucket/fill_attributes.js +0 -9
- package/src/data/bucket/fill_bucket.js +0 -233
- package/src/data/bucket/fill_extrusion_attributes.js +0 -10
- package/src/data/bucket/fill_extrusion_bucket.js +0 -289
- package/src/data/bucket/heatmap_bucket.js +0 -17
- package/src/data/bucket/line_attributes.js +0 -10
- package/src/data/bucket/line_bucket.js +0 -556
- package/src/data/bucket/pattern_attributes.js +0 -10
- package/src/data/bucket/pattern_bucket_features.js +0 -60
- package/src/data/bucket/symbol_attributes.js +0 -117
- package/src/data/bucket/symbol_bucket.js +0 -972
- package/src/data/bucket.js +0 -123
- package/src/data/dem_data.js +0 -125
- package/src/data/extent.js +0 -18
- package/src/data/feature_index.js +0 -321
- package/src/data/feature_position_map.js +0 -125
- package/src/data/index_array_type.js +0 -16
- package/src/data/load_geometry.js +0 -48
- package/src/data/pos_attributes.js +0 -6
- package/src/data/program_configuration.js +0 -687
- package/src/data/raster_bounds_attributes.js +0 -7
- package/src/data/segment.js +0 -76
- package/src/geo/edge_insets.js +0 -102
- package/src/geo/lng_lat.js +0 -165
- package/src/geo/lng_lat_bounds.js +0 -267
- package/src/geo/mercator_coordinate.js +0 -153
- package/src/geo/transform.js +0 -864
- package/src/gl/color_mode.js +0 -34
- package/src/gl/context.js +0 -298
- package/src/gl/cull_face_mode.js +0 -26
- package/src/gl/depth_mode.js +0 -29
- package/src/gl/framebuffer.js +0 -44
- package/src/gl/index_buffer.js +0 -55
- package/src/gl/stencil_mode.js +0 -30
- package/src/gl/types.js +0 -84
- package/src/gl/value.js +0 -520
- package/src/gl/vertex_buffer.js +0 -119
- package/src/index.js +0 -201
- package/src/render/draw_background.js +0 -57
- package/src/render/draw_circle.js +0 -113
- package/src/render/draw_collision_debug.js +0 -49
- package/src/render/draw_custom.js +0 -49
- package/src/render/draw_debug.js +0 -127
- package/src/render/draw_fill.js +0 -126
- package/src/render/draw_fill_extrusion.js +0 -96
- package/src/render/draw_heatmap.js +0 -140
- package/src/render/draw_hillshade.js +0 -108
- package/src/render/draw_line.js +0 -98
- package/src/render/draw_raster.js +0 -125
- package/src/render/draw_symbol.js +0 -394
- package/src/render/glyph_atlas.js +0 -71
- package/src/render/glyph_manager.js +0 -182
- package/src/render/image_atlas.js +0 -149
- package/src/render/image_manager.js +0 -306
- package/src/render/line_atlas.js +0 -210
- package/src/render/painter.js +0 -653
- package/src/render/program/background_program.js +0 -103
- package/src/render/program/circle_program.js +0 -69
- package/src/render/program/clipping_mask_program.js +0 -20
- package/src/render/program/collision_program.js +0 -49
- package/src/render/program/debug_program.js +0 -35
- package/src/render/program/fill_extrusion_program.js +0 -122
- package/src/render/program/fill_program.js +0 -126
- package/src/render/program/heatmap_program.js +0 -83
- package/src/render/program/hillshade_program.js +0 -122
- package/src/render/program/line_program.js +0 -207
- package/src/render/program/pattern.js +0 -102
- package/src/render/program/program_uniforms.js +0 -42
- package/src/render/program/raster_program.js +0 -92
- package/src/render/program/symbol_program.js +0 -224
- package/src/render/program.js +0 -168
- package/src/render/texture.js +0 -122
- package/src/render/uniform_binding.js +0 -147
- package/src/render/vertex_array_object.js +0 -163
- package/src/shaders/README.md +0 -42
- package/src/shaders/_prelude.fragment.glsl +0 -17
- package/src/shaders/_prelude.vertex.glsl +0 -73
- package/src/shaders/background.fragment.glsl +0 -10
- package/src/shaders/background.vertex.glsl +0 -7
- package/src/shaders/background_pattern.fragment.glsl +0 -28
- package/src/shaders/background_pattern.vertex.glsl +0 -20
- package/src/shaders/circle.fragment.glsl +0 -39
- package/src/shaders/circle.vertex.glsl +0 -64
- package/src/shaders/clipping_mask.fragment.glsl +0 -3
- package/src/shaders/clipping_mask.vertex.glsl +0 -7
- package/src/shaders/collision_box.fragment.glsl +0 -21
- package/src/shaders/collision_box.vertex.glsl +0 -27
- package/src/shaders/collision_circle.fragment.glsl +0 -34
- package/src/shaders/collision_circle.vertex.glsl +0 -36
- package/src/shaders/debug.fragment.glsl +0 -9
- package/src/shaders/debug.vertex.glsl +0 -12
- package/src/shaders/encode_attribute.js +0 -17
- package/src/shaders/fill.fragment.glsl +0 -13
- package/src/shaders/fill.vertex.glsl +0 -13
- package/src/shaders/fill_extrusion.fragment.glsl +0 -9
- package/src/shaders/fill_extrusion.vertex.glsl +0 -66
- package/src/shaders/fill_extrusion_pattern.fragment.glsl +0 -45
- package/src/shaders/fill_extrusion_pattern.vertex.glsl +0 -79
- package/src/shaders/fill_outline.fragment.glsl +0 -17
- package/src/shaders/fill_outline.vertex.glsl +0 -17
- package/src/shaders/fill_outline_pattern.fragment.glsl +0 -43
- package/src/shaders/fill_outline_pattern.vertex.glsl +0 -44
- package/src/shaders/fill_pattern.fragment.glsl +0 -36
- package/src/shaders/fill_pattern.vertex.glsl +0 -39
- package/src/shaders/heatmap.fragment.glsl +0 -22
- package/src/shaders/heatmap.vertex.glsl +0 -54
- package/src/shaders/heatmap_texture.fragment.glsl +0 -14
- package/src/shaders/heatmap_texture.vertex.glsl +0 -11
- package/src/shaders/hillshade.fragment.glsl +0 -52
- package/src/shaders/hillshade.vertex.glsl +0 -11
- package/src/shaders/hillshade_prepare.fragment.glsl +0 -74
- package/src/shaders/hillshade_prepare.vertex.glsl +0 -15
- package/src/shaders/index.js +0 -20
- package/src/shaders/line.fragment.glsl +0 -30
- package/src/shaders/line.vertex.glsl +0 -85
- package/src/shaders/line_gradient.fragment.glsl +0 -34
- package/src/shaders/line_gradient.vertex.glsl +0 -87
- package/src/shaders/line_pattern.fragment.glsl +0 -74
- package/src/shaders/line_pattern.vertex.glsl +0 -99
- package/src/shaders/line_sdf.fragment.glsl +0 -45
- package/src/shaders/line_sdf.vertex.glsl +0 -98
- package/src/shaders/raster.fragment.glsl +0 -52
- package/src/shaders/raster.vertex.glsl +0 -21
- package/src/shaders/shaders.js +0 -180
- package/src/shaders/symbol_icon.fragment.glsl +0 -17
- package/src/shaders/symbol_icon.vertex.glsl +0 -94
- package/src/shaders/symbol_sdf.fragment.glsl +0 -52
- package/src/shaders/symbol_sdf.vertex.glsl +0 -115
- package/src/shaders/symbol_text_and_icon.fragment.glsl +0 -68
- package/src/shaders/symbol_text_and_icon.vertex.glsl +0 -116
- package/src/source/canvas_source.js +0 -238
- package/src/source/geojson_helper.js +0 -92
- package/src/source/geojson_source.js +0 -374
- package/src/source/geojson_worker_source.js +0 -357
- package/src/source/geojson_wrapper.js +0 -94
- package/src/source/image_source.js +0 -307
- package/src/source/load_tilejson.js +0 -39
- package/src/source/mbtiles_source.js +0 -115
- package/src/source/offline_database.js +0 -61
- package/src/source/offline_database_root.js +0 -62
- package/src/source/pixels_to_tile_units.js +0 -21
- package/src/source/query_features.js +0 -208
- package/src/source/raster_dem_tile_source.js +0 -138
- package/src/source/raster_dem_tile_worker_source.js +0 -62
- package/src/source/raster_tile_offline_source.js +0 -136
- package/src/source/raster_tile_source.js +0 -177
- package/src/source/rtl_text_plugin.js +0 -138
- package/src/source/source.js +0 -137
- package/src/source/source_cache.js +0 -957
- package/src/source/source_state.js +0 -159
- package/src/source/tile.js +0 -465
- package/src/source/tile_bounds.js +0 -38
- package/src/source/tile_cache.js +0 -212
- package/src/source/tile_id.js +0 -402
- package/src/source/vector_tile_source.js +0 -192
- package/src/source/vector_tile_worker_source.js +0 -216
- package/src/source/video_source.js +0 -203
- package/src/source/worker.js +0 -237
- package/src/source/worker_source.js +0 -106
- package/src/source/worker_tile.js +0 -224
- package/src/style/create_style_layer.js +0 -36
- package/src/style/evaluation_parameters.js +0 -62
- package/src/style/light.js +0 -130
- package/src/style/load_glyph_range.js +0 -38
- package/src/style/load_sprite.js +0 -67
- package/src/style/parse_glyph_pbf.js +0 -44
- package/src/style/pauseable_placement.js +0 -132
- package/src/style/properties.js +0 -753
- package/src/style/query_utils.js +0 -43
- package/src/style/style.js +0 -1361
- package/src/style/style_glyph.js +0 -17
- package/src/style/style_image.js +0 -137
- package/src/style/style_layer/background_style_layer.js +0 -21
- package/src/style/style_layer/background_style_layer_properties.js +0 -40
- package/src/style/style_layer/circle_style_layer.js +0 -98
- package/src/style/style_layer/circle_style_layer_properties.js +0 -63
- package/src/style/style_layer/custom_style_layer.js +0 -223
- package/src/style/style_layer/fill_extrusion_style_layer.js +0 -224
- package/src/style/style_layer/fill_extrusion_style_layer_properties.js +0 -50
- package/src/style/style_layer/fill_style_layer.js +0 -67
- package/src/style/style_layer/fill_style_layer_properties.js +0 -55
- package/src/style/style_layer/heatmap_style_layer.js +0 -69
- package/src/style/style_layer/heatmap_style_layer_properties.js +0 -44
- package/src/style/style_layer/hillshade_style_layer.js +0 -25
- package/src/style/style_layer/hillshade_style_layer_properties.js +0 -46
- package/src/style/style_layer/layer_properties.js.ejs +0 -69
- package/src/style/style_layer/line_style_layer.js +0 -151
- package/src/style/style_layer/line_style_layer_properties.js +0 -71
- package/src/style/style_layer/raster_style_layer.js +0 -21
- package/src/style/style_layer/raster_style_layer_properties.js +0 -50
- package/src/style/style_layer/symbol_style_layer.js +0 -190
- package/src/style/style_layer/symbol_style_layer_properties.js +0 -153
- package/src/style/style_layer/typed_style_layer.js +0 -17
- package/src/style/style_layer.js +0 -281
- package/src/style/style_layer_index.js +0 -80
- package/src/style/validate_style.js +0 -42
- package/src/style/zoom_history.js +0 -44
- package/src/style-spec/.eslintrc +0 -5
- package/src/style-spec/CHANGELOG.md +0 -438
- package/src/style-spec/README.md +0 -59
- package/src/style-spec/bin/gl-style-composite +0 -9
- package/src/style-spec/bin/gl-style-format +0 -22
- package/src/style-spec/bin/gl-style-migrate +0 -9
- package/src/style-spec/bin/gl-style-validate +0 -50
- package/src/style-spec/composite.js +0 -50
- package/src/style-spec/declass.js +0 -42
- package/src/style-spec/deref.js +0 -52
- package/src/style-spec/diff.js +0 -393
- package/src/style-spec/dist/.gitkeep +0 -0
- package/src/style-spec/empty.js +0 -29
- package/src/style-spec/error/parsing_error.js +0 -16
- package/src/style-spec/error/validation_error.js +0 -18
- package/src/style-spec/expression/compound_expression.js +0 -162
- package/src/style-spec/expression/definitions/assertion.js +0 -130
- package/src/style-spec/expression/definitions/at.js +0 -70
- package/src/style-spec/expression/definitions/case.js +0 -85
- package/src/style-spec/expression/definitions/coalesce.js +0 -93
- package/src/style-spec/expression/definitions/coercion.js +0 -133
- package/src/style-spec/expression/definitions/collator.js +0 -78
- package/src/style-spec/expression/definitions/comparison.js +0 -184
- package/src/style-spec/expression/definitions/format.js +0 -144
- package/src/style-spec/expression/definitions/format_section_override.js +0 -54
- package/src/style-spec/expression/definitions/image.js +0 -52
- package/src/style-spec/expression/definitions/in.js +0 -92
- package/src/style-spec/expression/definitions/index.js +0 -561
- package/src/style-spec/expression/definitions/interpolate.js +0 -267
- package/src/style-spec/expression/definitions/length.js +0 -61
- package/src/style-spec/expression/definitions/let.js +0 -72
- package/src/style-spec/expression/definitions/literal.js +0 -77
- package/src/style-spec/expression/definitions/match.js +0 -158
- package/src/style-spec/expression/definitions/number_format.js +0 -142
- package/src/style-spec/expression/definitions/step.js +0 -120
- package/src/style-spec/expression/definitions/var.js +0 -46
- package/src/style-spec/expression/definitions/within.js +0 -333
- package/src/style-spec/expression/evaluation_context.js +0 -59
- package/src/style-spec/expression/expression.js +0 -27
- package/src/style-spec/expression/index.js +0 -392
- package/src/style-spec/expression/is_constant.js +0 -59
- package/src/style-spec/expression/parsing_context.js +0 -233
- package/src/style-spec/expression/parsing_error.js +0 -13
- package/src/style-spec/expression/runtime_error.js +0 -17
- package/src/style-spec/expression/scope.js +0 -36
- package/src/style-spec/expression/stops.js +0 -39
- package/src/style-spec/expression/types/collator.js +0 -61
- package/src/style-spec/expression/types/formatted.js +0 -73
- package/src/style-spec/expression/types/resolved_image.js +0 -29
- package/src/style-spec/expression/types.js +0 -106
- package/src/style-spec/expression/values.js +0 -123
- package/src/style-spec/feature_filter/README.md +0 -55
- package/src/style-spec/feature_filter/convert.js +0 -208
- package/src/style-spec/feature_filter/index.js +0 -165
- package/src/style-spec/format.js +0 -51
- package/src/style-spec/function/convert.js +0 -254
- package/src/style-spec/function/index.js +0 -262
- package/src/style-spec/group_by_layout.js +0 -75
- package/src/style-spec/migrate/expressions.js +0 -39
- package/src/style-spec/migrate/v8.js +0 -203
- package/src/style-spec/migrate/v9.js +0 -26
- package/src/style-spec/migrate.js +0 -36
- package/src/style-spec/package.json +0 -41
- package/src/style-spec/read_style.js +0 -14
- package/src/style-spec/reference/latest.js +0 -3
- package/src/style-spec/reference/v8.json +0 -5808
- package/src/style-spec/rollup.config.js +0 -45
- package/src/style-spec/style-spec.js +0 -122
- package/src/style-spec/types.js +0 -438
- package/src/style-spec/util/color.js +0 -95
- package/src/style-spec/util/color_spaces.js +0 -139
- package/src/style-spec/util/deep_equal.js +0 -28
- package/src/style-spec/util/extend.js +0 -10
- package/src/style-spec/util/get_type.js +0 -17
- package/src/style-spec/util/interpolate.js +0 -22
- package/src/style-spec/util/properties.js +0 -15
- package/src/style-spec/util/ref_properties.js +0 -2
- package/src/style-spec/util/result.js +0 -19
- package/src/style-spec/util/unbundle_jsonlint.js +0 -24
- package/src/style-spec/validate/latest.js +0 -11
- package/src/style-spec/validate/validate.js +0 -75
- package/src/style-spec/validate/validate_array.js +0 -52
- package/src/style-spec/validate/validate_boolean.js +0 -15
- package/src/style-spec/validate/validate_color.js +0 -20
- package/src/style-spec/validate/validate_constants.js +0 -13
- package/src/style-spec/validate/validate_enum.js +0 -21
- package/src/style-spec/validate/validate_expression.js +0 -43
- package/src/style-spec/validate/validate_filter.js +0 -111
- package/src/style-spec/validate/validate_formatted.js +0 -11
- package/src/style-spec/validate/validate_function.js +0 -207
- package/src/style-spec/validate/validate_glyphs_url.js +0 -21
- package/src/style-spec/validate/validate_image.js +0 -11
- package/src/style-spec/validate/validate_layer.js +0 -134
- package/src/style-spec/validate/validate_layout_property.js +0 -6
- package/src/style-spec/validate/validate_light.js +0 -47
- package/src/style-spec/validate/validate_number.js +0 -29
- package/src/style-spec/validate/validate_object.js +0 -61
- package/src/style-spec/validate/validate_paint_property.js +0 -6
- package/src/style-spec/validate/validate_property.js +0 -64
- package/src/style-spec/validate/validate_source.js +0 -111
- package/src/style-spec/validate/validate_string.js +0 -15
- package/src/style-spec/validate_mapbox_api_supported.js +0 -171
- package/src/style-spec/validate_style.js +0 -39
- package/src/style-spec/validate_style.min.js +0 -78
- package/src/style-spec/visit.js +0 -77
- package/src/symbol/anchor.js +0 -26
- package/src/symbol/check_max_angle.js +0 -81
- package/src/symbol/clip_line.js +0 -71
- package/src/symbol/collision_feature.js +0 -217
- package/src/symbol/collision_index.js +0 -372
- package/src/symbol/cross_tile_symbol_index.js +0 -301
- package/src/symbol/get_anchors.js +0 -167
- package/src/symbol/grid_index.js +0 -335
- package/src/symbol/mergelines.js +0 -82
- package/src/symbol/one_em.js +0 -4
- package/src/symbol/opacity_state.js +0 -27
- package/src/symbol/placement.js +0 -1062
- package/src/symbol/projection.js +0 -450
- package/src/symbol/quads.js +0 -334
- package/src/symbol/shaping.js +0 -816
- package/src/symbol/symbol_layout.js +0 -772
- package/src/symbol/symbol_size.js +0 -113
- package/src/symbol/transform_text.js +0 -29
- package/src/types/callback.js +0 -17
- package/src/types/cancelable.js +0 -3
- package/src/types/tilejson.js +0 -17
- package/src/types/transferable.js +0 -3
- package/src/types/window.js +0 -172
- package/src/ui/anchor.js +0 -32
- package/src/ui/bind_handlers.js +0 -202
- package/src/ui/camera.js +0 -1152
- package/src/ui/control/attribution_control.js +0 -189
- package/src/ui/control/fps_control.js +0 -185
- package/src/ui/control/fullscreen_control.js +0 -147
- package/src/ui/control/geolocate_control.js +0 -594
- package/src/ui/control/logo_control.js +0 -92
- package/src/ui/control/navigation_control.js +0 -148
- package/src/ui/control/scale_control.js +0 -142
- package/src/ui/crs.js +0 -64
- package/src/ui/default_locale.js +0 -20
- package/src/ui/events.js +0 -806
- package/src/ui/handler/box_zoom.js +0 -175
- package/src/ui/handler/dblclick_zoom.js +0 -139
- package/src/ui/handler/drag_pan.js +0 -416
- package/src/ui/handler/drag_rotate.js +0 -378
- package/src/ui/handler/keyboard.js +0 -161
- package/src/ui/handler/scroll_zoom.js +0 -333
- package/src/ui/handler/touch_zoom_rotate.js +0 -293
- package/src/ui/hash.js +0 -147
- package/src/ui/map.js +0 -2883
- package/src/ui/marker.js +0 -607
- package/src/ui/offline_map.js +0 -91
- package/src/ui/popup.js +0 -530
- package/src/util/actor.js +0 -212
- package/src/util/ajax.js +0 -371
- package/src/util/browser/web_worker.js +0 -10
- package/src/util/browser/window.js +0 -5
- package/src/util/browser.js +0 -70
- package/src/util/classify_rings.js +0 -52
- package/src/util/color_ramp.js +0 -28
- package/src/util/config.js +0 -30
- package/src/util/debug.js +0 -12
- package/src/util/dictionary_coder.js +0 -30
- package/src/util/dispatcher.js +0 -70
- package/src/util/dom.js +0 -144
- package/src/util/evented.js +0 -174
- package/src/util/find_pole_of_inaccessibility.js +0 -129
- package/src/util/global_worker_pool.js +0 -17
- package/src/util/image.js +0 -142
- package/src/util/intersection_tests.js +0 -208
- package/src/util/is_char_in_unicode_block.js +0 -311
- package/src/util/mapbox.js +0 -486
- package/src/util/offscreen_canvas_supported.js +0 -14
- package/src/util/performance.js +0 -112
- package/src/util/primitives.js +0 -145
- package/src/util/resolve_tokens.js +0 -16
- package/src/util/script_detection.js +0 -328
- package/src/util/sku_token.js +0 -42
- package/src/util/smart_wrap.js +0 -55
- package/src/util/struct_array.js +0 -243
- package/src/util/struct_array.js.ejs +0 -112
- package/src/util/struct_array_layout.js.ejs +0 -98
- package/src/util/task_queue.js +0 -68
- package/src/util/throttle.js +0 -28
- package/src/util/throttled_invoker.js +0 -46
- package/src/util/tile_cover.js +0 -101
- package/src/util/tile_request_cache.js +0 -172
- package/src/util/util.js +0 -504
- package/src/util/vectortile_to_geojson.js +0 -54
- package/src/util/verticalize_punctuation.js +0 -114
- package/src/util/web_worker.js +0 -91
- package/src/util/web_worker_transfer.js +0 -266
- package/src/util/webp_supported.js +0 -69
- package/src/util/window.js +0 -102
- package/src/util/worker_pool.js +0 -47
|
@@ -1,52 +0,0 @@
|
|
|
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
|
-
}
|
package/src/util/color_ramp.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import {RGBAImage} from './image';
|
|
4
|
-
|
|
5
|
-
import type {StylePropertyExpression} from '../style-spec/expression/index';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Given an expression that should evaluate to a color ramp, return
|
|
9
|
-
* a 256x1 px RGBA image representing that ramp expression.
|
|
10
|
-
*
|
|
11
|
-
* @private
|
|
12
|
-
*/
|
|
13
|
-
export default function renderColorRamp(expression: StylePropertyExpression, colorRampEvaluationParameter: string): RGBAImage {
|
|
14
|
-
const colorRampData = new Uint8Array(256 * 4);
|
|
15
|
-
const evaluationGlobals = {};
|
|
16
|
-
for (let i = 0, j = 0; i < 256; i++, j += 4) {
|
|
17
|
-
evaluationGlobals[colorRampEvaluationParameter] = i / 255;
|
|
18
|
-
const pxColor = expression.evaluate((evaluationGlobals: any));
|
|
19
|
-
// the colors are being unpremultiplied because Color uses
|
|
20
|
-
// premultiplied values, and the Texture class expects unpremultiplied ones
|
|
21
|
-
colorRampData[j + 0] = Math.floor(pxColor.r * 255 / pxColor.a);
|
|
22
|
-
colorRampData[j + 1] = Math.floor(pxColor.g * 255 / pxColor.a);
|
|
23
|
-
colorRampData[j + 2] = Math.floor(pxColor.b * 255 / pxColor.a);
|
|
24
|
-
colorRampData[j + 3] = Math.floor(pxColor.a * 255);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return new RGBAImage({width: 256, height: 1}, colorRampData);
|
|
28
|
-
}
|
package/src/util/config.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
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;
|
package/src/util/debug.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
import {extend} from './util';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* This is a private namespace for utility functions that will get automatically stripped
|
|
6
|
-
* out in production builds.
|
|
7
|
-
*/
|
|
8
|
-
export const Debug = {
|
|
9
|
-
extend(dest: Object, ...sources: Array<?Object>): Object {
|
|
10
|
-
return extend(dest, ...sources);
|
|
11
|
-
}
|
|
12
|
-
};
|
|
@@ -1,30 +0,0 @@
|
|
|
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;
|
package/src/util/dispatcher.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
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;
|
package/src/util/dom.js
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
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.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
|
-
const t = window.TouchEvent && (e instanceof window.TouchEvent) ? e.touches[0] : e;
|
|
109
|
-
return new Point(
|
|
110
|
-
t.clientX - rect.left - el.clientLeft,
|
|
111
|
-
t.clientY - rect.top - el.clientTop
|
|
112
|
-
);
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
DOM.touchPos = function (el: HTMLElement, e: TouchEvent) {
|
|
116
|
-
const rect = el.getBoundingClientRect(),
|
|
117
|
-
points = [];
|
|
118
|
-
const touches = (e.type === 'touchend') ? e.changedTouches : e.touches;
|
|
119
|
-
for (let i = 0; i < touches.length; i++) {
|
|
120
|
-
points.push(new Point(
|
|
121
|
-
touches[i].clientX - rect.left - el.clientLeft,
|
|
122
|
-
touches[i].clientY - rect.top - el.clientTop
|
|
123
|
-
));
|
|
124
|
-
}
|
|
125
|
-
return points;
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
DOM.mouseButton = function (e: MouseEvent) {
|
|
129
|
-
assert(e.type === 'mousedown' || e.type === 'mouseup');
|
|
130
|
-
if (typeof window.InstallTrigger !== 'undefined' && e.button === 2 && e.ctrlKey &&
|
|
131
|
-
window.navigator.platform.toUpperCase().indexOf('MAC') >= 0) {
|
|
132
|
-
// Fix for https://github.com/mapbox/mapbox-gl-js/issues/3131:
|
|
133
|
-
// Firefox (detected by InstallTrigger) on Mac determines e.button = 2 when
|
|
134
|
-
// using Control + left click
|
|
135
|
-
return 0;
|
|
136
|
-
}
|
|
137
|
-
return e.button;
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
DOM.remove = function(node: HTMLElement) {
|
|
141
|
-
if (node.parentNode) {
|
|
142
|
-
node.parentNode.removeChild(node);
|
|
143
|
-
}
|
|
144
|
-
};
|
package/src/util/evented.js
DELETED
|
@@ -1,174 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import Queue from 'tinyqueue';
|
|
4
|
-
|
|
5
|
-
import Point from '@mapbox/point-geometry';
|
|
6
|
-
import {distToSegmentSquared} from './intersection_tests';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Finds an approximation of a polygon's Pole Of Inaccessibiliy https://en.wikipedia.org/wiki/Pole_of_inaccessibility
|
|
10
|
-
* This is a copy of http://github.com/mapbox/polylabel adapted to use Points
|
|
11
|
-
*
|
|
12
|
-
* @param polygonRings first item in array is the outer ring followed optionally by the list of holes, should be an element of the result of util/classify_rings
|
|
13
|
-
* @param precision Specified in input coordinate units. If 0 returns after first run, if > 0 repeatedly narrows the search space until the radius of the area searched for the best pole is less than precision
|
|
14
|
-
* @param debug Print some statistics to the console during execution
|
|
15
|
-
* @returns Pole of Inaccessibiliy.
|
|
16
|
-
* @private
|
|
17
|
-
*/
|
|
18
|
-
export default function (polygonRings: Array<Array<Point>>, precision?: number = 1, debug?: boolean = false): Point {
|
|
19
|
-
// find the bounding box of the outer ring
|
|
20
|
-
let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
|
|
21
|
-
const outerRing = polygonRings[0];
|
|
22
|
-
for (let i = 0; i < outerRing.length; i++) {
|
|
23
|
-
const p = outerRing[i];
|
|
24
|
-
if (!i || p.x < minX) minX = p.x;
|
|
25
|
-
if (!i || p.y < minY) minY = p.y;
|
|
26
|
-
if (!i || p.x > maxX) maxX = p.x;
|
|
27
|
-
if (!i || p.y > maxY) maxY = p.y;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const width = maxX - minX;
|
|
31
|
-
const height = maxY - minY;
|
|
32
|
-
const cellSize = Math.min(width, height);
|
|
33
|
-
let h = cellSize / 2;
|
|
34
|
-
|
|
35
|
-
// a priority queue of cells in order of their "potential" (max distance to polygon)
|
|
36
|
-
const cellQueue = new Queue([], compareMax);
|
|
37
|
-
|
|
38
|
-
if (cellSize === 0) return new Point(minX, minY);
|
|
39
|
-
|
|
40
|
-
// cover polygon with initial cells
|
|
41
|
-
for (let x = minX; x < maxX; x += cellSize) {
|
|
42
|
-
for (let y = minY; y < maxY; y += cellSize) {
|
|
43
|
-
cellQueue.push(new Cell(x + h, y + h, h, polygonRings));
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// take centroid as the first best guess
|
|
48
|
-
let bestCell = getCentroidCell(polygonRings);
|
|
49
|
-
let numProbes = cellQueue.length;
|
|
50
|
-
|
|
51
|
-
while (cellQueue.length) {
|
|
52
|
-
// pick the most promising cell from the queue
|
|
53
|
-
const cell = cellQueue.pop();
|
|
54
|
-
|
|
55
|
-
// update the best cell if we found a better one
|
|
56
|
-
if (cell.d > bestCell.d || !bestCell.d) {
|
|
57
|
-
bestCell = cell;
|
|
58
|
-
if (debug) console.log('found best %d after %d probes', Math.round(1e4 * cell.d) / 1e4, numProbes);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// do not drill down further if there's no chance of a better solution
|
|
62
|
-
if (cell.max - bestCell.d <= precision) continue;
|
|
63
|
-
|
|
64
|
-
// split the cell into four cells
|
|
65
|
-
h = cell.h / 2;
|
|
66
|
-
cellQueue.push(new Cell(cell.p.x - h, cell.p.y - h, h, polygonRings));
|
|
67
|
-
cellQueue.push(new Cell(cell.p.x + h, cell.p.y - h, h, polygonRings));
|
|
68
|
-
cellQueue.push(new Cell(cell.p.x - h, cell.p.y + h, h, polygonRings));
|
|
69
|
-
cellQueue.push(new Cell(cell.p.x + h, cell.p.y + h, h, polygonRings));
|
|
70
|
-
numProbes += 4;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
if (debug) {
|
|
74
|
-
console.log(`num probes: ${numProbes}`);
|
|
75
|
-
console.log(`best distance: ${bestCell.d}`);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return bestCell.p;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
function compareMax(a, b) {
|
|
82
|
-
return b.max - a.max;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
function Cell(x, y, h, polygon) {
|
|
86
|
-
this.p = new Point(x, y);
|
|
87
|
-
this.h = h; // half the cell size
|
|
88
|
-
this.d = pointToPolygonDist(this.p, polygon); // distance from cell center to polygon
|
|
89
|
-
this.max = this.d + this.h * Math.SQRT2; // max distance to polygon within a cell
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// signed distance from point to polygon outline (negative if point is outside)
|
|
93
|
-
function pointToPolygonDist(p, polygon) {
|
|
94
|
-
let inside = false;
|
|
95
|
-
let minDistSq = Infinity;
|
|
96
|
-
|
|
97
|
-
for (let k = 0; k < polygon.length; k++) {
|
|
98
|
-
const ring = polygon[k];
|
|
99
|
-
|
|
100
|
-
for (let i = 0, len = ring.length, j = len - 1; i < len; j = i++) {
|
|
101
|
-
const a = ring[i];
|
|
102
|
-
const b = ring[j];
|
|
103
|
-
|
|
104
|
-
if ((a.y > p.y !== b.y > p.y) &&
|
|
105
|
-
(p.x < (b.x - a.x) * (p.y - a.y) / (b.y - a.y) + a.x)) inside = !inside;
|
|
106
|
-
|
|
107
|
-
minDistSq = Math.min(minDistSq, distToSegmentSquared(p, a, b));
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
return (inside ? 1 : -1) * Math.sqrt(minDistSq);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// get polygon centroid
|
|
115
|
-
function getCentroidCell(polygon) {
|
|
116
|
-
let area = 0;
|
|
117
|
-
let x = 0;
|
|
118
|
-
let y = 0;
|
|
119
|
-
const points = polygon[0];
|
|
120
|
-
for (let i = 0, len = points.length, j = len - 1; i < len; j = i++) {
|
|
121
|
-
const a = points[i];
|
|
122
|
-
const b = points[j];
|
|
123
|
-
const f = a.x * b.y - b.x * a.y;
|
|
124
|
-
x += (a.x + b.x) * f;
|
|
125
|
-
y += (a.y + b.y) * f;
|
|
126
|
-
area += f * 3;
|
|
127
|
-
}
|
|
128
|
-
return new Cell(x / area, y / area, 0, polygon);
|
|
129
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import WorkerPool from './worker_pool';
|
|
4
|
-
|
|
5
|
-
let globalWorkerPool;
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Creates (if necessary) and returns the single, global WorkerPool instance
|
|
9
|
-
* to be shared across each Map
|
|
10
|
-
* @private
|
|
11
|
-
*/
|
|
12
|
-
export default function getGlobalWorkerPool () {
|
|
13
|
-
if (!globalWorkerPool) {
|
|
14
|
-
globalWorkerPool = new WorkerPool();
|
|
15
|
-
}
|
|
16
|
-
return globalWorkerPool;
|
|
17
|
-
}
|