maplibre-gl 6.0.0-8 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -4
- package/build/banner.ts +4 -2
- package/build/generate-docs.ts +73 -14
- package/build/generate-struct-arrays.ts +9 -9
- package/build/generate-style-code.ts +233 -135
- package/build/readme.md +1 -1
- package/dist/maplibre-gl-dev.mjs +7405 -34108
- package/dist/maplibre-gl-dev.mjs.map +1 -1
- package/dist/maplibre-gl-shared-dev.mjs +31274 -0
- package/dist/maplibre-gl-shared-dev.mjs.map +1 -0
- package/dist/maplibre-gl-shared.mjs +6 -0
- package/dist/maplibre-gl-shared.mjs.map +1 -0
- package/dist/maplibre-gl-worker-dev.mjs +64 -28389
- package/dist/maplibre-gl-worker-dev.mjs.map +1 -1
- package/dist/maplibre-gl-worker.mjs +2 -2
- package/dist/maplibre-gl-worker.mjs.map +1 -1
- package/dist/maplibre-gl.css +1 -1
- package/dist/maplibre-gl.d.ts +9699 -9173
- package/dist/maplibre-gl.mjs +347 -347
- package/dist/maplibre-gl.mjs.map +1 -1
- package/package.json +54 -57
- package/src/data/array_types.g.ts +137 -137
- package/src/data/bucket/circle_attributes.ts +5 -3
- package/src/data/bucket/circle_bucket.ts +7 -7
- package/src/data/bucket/dash_attributes.ts +2 -2
- package/src/data/bucket/fill_attributes.ts +5 -3
- package/src/data/bucket/fill_bucket.ts +7 -7
- package/src/data/bucket/fill_extrusion_attributes.ts +6 -4
- package/src/data/bucket/fill_extrusion_bucket.ts +9 -9
- package/src/data/bucket/line_attributes.ts +5 -3
- package/src/data/bucket/line_attributes_ext.ts +5 -3
- package/src/data/bucket/line_bucket.test.ts +36 -0
- package/src/data/bucket/line_bucket.ts +14 -14
- package/src/data/bucket/pattern_attributes.ts +2 -2
- package/src/data/bucket/pattern_bucket_features.ts +2 -2
- package/src/data/bucket/symbol_attributes.ts +14 -14
- package/src/data/bucket/symbol_bucket.ts +36 -35
- package/src/data/dem_data.test.ts +25 -1
- package/src/data/dem_data.ts +51 -10
- package/src/data/feature_index.ts +7 -7
- package/src/data/feature_position_map.ts +1 -1
- package/src/data/pos3d_attributes.ts +4 -2
- package/src/data/pos_attributes.ts +4 -2
- package/src/data/program_configuration.ts +30 -25
- package/src/data/raster_bounds_attributes.ts +4 -2
- package/src/data/segment.ts +3 -3
- package/src/geo/bounds.ts +2 -2
- package/src/geo/lng_lat.ts +1 -1
- package/src/geo/lng_lat_bounds.ts +2 -2
- package/src/geo/mercator_coordinate.ts +8 -8
- package/src/geo/projection/camera_helper.ts +3 -3
- package/src/geo/projection/globe_covering_tiles_details_provider.ts +2 -2
- package/src/geo/projection/globe_projection.test.ts +23 -0
- package/src/geo/projection/globe_projection.ts +9 -20
- package/src/geo/projection/globe_projection_error_measurement.ts +2 -2
- package/src/geo/projection/globe_transform.test.ts +18 -0
- package/src/geo/projection/globe_transform.ts +4 -9
- package/src/geo/projection/globe_utils.ts +2 -2
- package/src/geo/projection/mercator_camera_helper.ts +11 -12
- package/src/geo/projection/mercator_projection.ts +1 -1
- package/src/geo/projection/mercator_transform.ts +20 -33
- package/src/geo/projection/mercator_utils.ts +4 -3
- package/src/geo/projection/projection.ts +1 -1
- package/src/geo/projection/projection_data.ts +19 -3
- package/src/geo/projection/vertical_perspective_camera_helper.ts +8 -12
- package/src/geo/projection/vertical_perspective_projection.ts +2 -2
- package/src/geo/projection/vertical_perspective_transform.ts +6 -18
- package/src/geo/transform_helper.ts +15 -15
- package/src/geo/transform_interface.ts +3 -12
- package/src/index.ts +49 -27
- package/src/render/fill_large_mesh_arrays.ts +1 -1
- package/src/render/glyph_manager.test.ts +46 -0
- package/src/render/glyph_manager.ts +29 -15
- package/src/render/image_atlas.ts +3 -3
- package/src/render/image_manager.ts +42 -27
- package/src/render/line_atlas.ts +8 -6
- package/src/render/painter.test.ts +74 -8
- package/src/render/painter.ts +102 -41
- package/src/render/subdivision.test.ts +48 -47
- package/src/render/subdivision_granularity_settings.ts +1 -1
- package/src/render/terrain.test.ts +3 -6
- package/src/render/terrain.ts +9 -20
- package/src/shaders/README.md +3 -3
- package/src/shaders/encode_attribute.ts +1 -1
- package/src/shaders/glsl/atmosphere.vertex.glsl +1 -1
- package/src/shaders/glsl/atmosphere.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/background.vertex.glsl +1 -1
- package/src/shaders/glsl/background.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/background_pattern.vertex.glsl +1 -1
- package/src/shaders/glsl/background_pattern.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/circle.fragment.glsl +15 -15
- package/src/shaders/glsl/circle.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/circle.vertex.glsl +16 -16
- package/src/shaders/glsl/circle.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/clipping_mask.vertex.glsl +1 -1
- package/src/shaders/glsl/clipping_mask.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/collision_box.fragment.glsl +2 -2
- package/src/shaders/glsl/collision_box.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/collision_box.vertex.glsl +5 -5
- package/src/shaders/glsl/collision_box.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/collision_circle.fragment.glsl +2 -2
- package/src/shaders/glsl/collision_circle.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/collision_circle.vertex.glsl +5 -5
- package/src/shaders/glsl/collision_circle.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/color_relief.vertex.glsl +1 -1
- package/src/shaders/glsl/color_relief.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/debug.vertex.glsl +1 -1
- package/src/shaders/glsl/debug.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/depth.vertex.glsl +1 -1
- package/src/shaders/glsl/depth.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/fill.fragment.glsl +4 -4
- package/src/shaders/glsl/fill.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/fill.vertex.glsl +11 -5
- package/src/shaders/glsl/fill.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/fill_extrusion.vertex.glsl +9 -9
- package/src/shaders/glsl/fill_extrusion.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/fill_extrusion_pattern.fragment.glsl +12 -12
- package/src/shaders/glsl/fill_extrusion_pattern.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/fill_extrusion_pattern.vertex.glsl +15 -15
- package/src/shaders/glsl/fill_extrusion_pattern.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/fill_outline.fragment.glsl +4 -4
- package/src/shaders/glsl/fill_outline.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/fill_outline.vertex.glsl +11 -5
- package/src/shaders/glsl/fill_outline.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/fill_outline_pattern.fragment.glsl +6 -6
- package/src/shaders/glsl/fill_outline_pattern.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/fill_outline_pattern.vertex.glsl +17 -11
- package/src/shaders/glsl/fill_outline_pattern.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/fill_pattern.fragment.glsl +6 -6
- package/src/shaders/glsl/fill_pattern.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/fill_pattern.vertex.glsl +17 -11
- package/src/shaders/glsl/fill_pattern.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/heatmap.fragment.glsl +2 -2
- package/src/shaders/glsl/heatmap.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/heatmap.vertex.glsl +5 -5
- package/src/shaders/glsl/heatmap.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/heatmap_texture.vertex.glsl +1 -1
- package/src/shaders/glsl/heatmap_texture.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/hillshade.vertex.glsl +1 -1
- package/src/shaders/glsl/hillshade.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/hillshade_prepare.vertex.glsl +2 -2
- package/src/shaders/glsl/hillshade_prepare.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/layer_opacity.vertex.glsl +12 -0
- package/src/shaders/glsl/layer_opacity.vertex.glsl.g.ts +2 -0
- package/src/shaders/glsl/line.fragment.glsl +8 -10
- package/src/shaders/glsl/line.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/line.vertex.glsl +21 -15
- package/src/shaders/glsl/line.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/line_gradient.fragment.glsl +6 -8
- package/src/shaders/glsl/line_gradient.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/line_gradient.vertex.glsl +21 -15
- package/src/shaders/glsl/line_gradient.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/line_gradient_sdf.fragment.glsl +14 -16
- package/src/shaders/glsl/line_gradient_sdf.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/line_gradient_sdf.vertex.glsl +27 -21
- package/src/shaders/glsl/line_gradient_sdf.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/line_pattern.fragment.glsl +15 -17
- package/src/shaders/glsl/line_pattern.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/line_pattern.vertex.glsl +30 -24
- package/src/shaders/glsl/line_pattern.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/line_sdf.fragment.glsl +16 -18
- package/src/shaders/glsl/line_sdf.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/line_sdf.vertex.glsl +27 -21
- package/src/shaders/glsl/line_sdf.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/projection_error_measurement.fragment.glsl +1 -1
- package/src/shaders/glsl/projection_error_measurement.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/projection_error_measurement.vertex.glsl +2 -2
- package/src/shaders/glsl/projection_error_measurement.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/raster.vertex.glsl +1 -1
- package/src/shaders/glsl/raster.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/sky.vertex.glsl +1 -1
- package/src/shaders/glsl/sky.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/symbol_icon.fragment.glsl +1 -1
- package/src/shaders/glsl/symbol_icon.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/symbol_icon.vertex.glsl +12 -9
- package/src/shaders/glsl/symbol_icon.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/symbol_sdf.fragment.glsl +8 -8
- package/src/shaders/glsl/symbol_sdf.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/symbol_sdf.vertex.glsl +20 -16
- package/src/shaders/glsl/symbol_sdf.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/symbol_text_and_icon.fragment.glsl +11 -10
- package/src/shaders/glsl/symbol_text_and_icon.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/symbol_text_and_icon.vertex.glsl +22 -17
- package/src/shaders/glsl/symbol_text_and_icon.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/terrain.vertex.glsl +1 -1
- package/src/shaders/glsl/terrain.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/terrain_coords.vertex.glsl +1 -1
- package/src/shaders/glsl/terrain_coords.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/terrain_depth.vertex.glsl +1 -1
- package/src/shaders/glsl/terrain_depth.vertex.glsl.g.ts +1 -1
- package/src/shaders/shaders.ts +51 -7
- package/src/source/canvas_source.test.ts +3 -1
- package/src/source/canvas_source.ts +9 -8
- package/src/source/geojson_source.test.ts +133 -36
- package/src/source/geojson_source.ts +47 -35
- package/src/source/geojson_worker_source.test.ts +77 -0
- package/src/source/geojson_worker_source.ts +18 -12
- package/src/source/image_source.ts +12 -11
- package/src/source/protocol_crud.ts +3 -3
- package/src/source/raster_dem_tile_source.test.ts +4 -4
- package/src/source/raster_dem_tile_source.ts +3 -2
- package/src/source/raster_dem_tile_worker_source.ts +1 -1
- package/src/source/raster_tile_source.test.ts +63 -0
- package/src/source/raster_tile_source.ts +47 -17
- package/src/source/rtl_text_plugin_worker.ts +4 -4
- package/src/source/source_state.test.ts +40 -1
- package/src/source/source_state.ts +17 -9
- package/src/source/vector_tile_overzoomed.ts +3 -3
- package/src/source/vector_tile_source.test.ts +29 -1
- package/src/source/vector_tile_source.ts +14 -12
- package/src/source/vector_tile_worker_source.test.ts +103 -4
- package/src/source/vector_tile_worker_source.ts +12 -6
- package/src/source/video_source.ts +10 -9
- package/src/source/worker_tile_state.ts +5 -8
- package/src/style/create_style_layer.ts +14 -1
- package/src/style/evaluation_parameters.ts +1 -1
- package/src/style/format_section_override.test.ts +1 -0
- package/src/style/format_section_override.ts +2 -2
- package/src/style/light.test.ts +24 -3
- package/src/style/light.ts +21 -84
- package/src/style/light_properties.g.ts +41 -0
- package/src/style/load_sprite.test.ts +2 -2
- package/src/style/parse_glyph_pbf.ts +6 -6
- package/src/style/pauseable_placement.ts +4 -4
- package/src/style/projection_properties.g.ts +32 -0
- package/src/style/properties.test.ts +63 -7
- package/src/style/properties.ts +50 -24
- package/src/style/query_utils.ts +4 -4
- package/src/style/sky.test.ts +20 -1
- package/src/style/sky.ts +14 -53
- package/src/style/sky_properties.g.ts +50 -0
- package/src/style/style.test.ts +200 -6
- package/src/style/style.ts +125 -116
- package/src/style/style_image.ts +1 -1
- package/src/style/style_layer/background_style_layer_properties.g.ts +6 -6
- package/src/style/style_layer/circle_style_layer.ts +1 -1
- package/src/style/style_layer/circle_style_layer_properties.g.ts +17 -16
- package/src/style/style_layer/color_relief_style_layer.ts +1 -1
- package/src/style/style_layer/color_relief_style_layer_properties.g.ts +6 -6
- package/src/style/style_layer/custom_style_layer.test.ts +20 -1
- package/src/style/style_layer/custom_style_layer.ts +21 -26
- package/src/style/style_layer/fill_extrusion_style_layer.ts +2 -2
- package/src/style/style_layer/fill_extrusion_style_layer_properties.g.ts +11 -11
- package/src/style/style_layer/fill_style_layer.ts +3 -3
- package/src/style/style_layer/fill_style_layer_properties.g.ts +16 -12
- package/src/style/style_layer/heatmap_style_layer.ts +5 -5
- package/src/style/style_layer/heatmap_style_layer_properties.g.ts +8 -8
- package/src/style/style_layer/hillshade_style_layer.ts +1 -1
- package/src/style/style_layer/hillshade_style_layer_properties.g.ts +12 -12
- package/src/style/style_layer/line_style_layer.test.ts +1 -38
- package/src/style/style_layer/line_style_layer.ts +10 -28
- package/src/style/style_layer/line_style_layer_properties.g.ts +24 -20
- package/src/style/style_layer/raster_style_layer_properties.g.ts +12 -12
- package/src/style/style_layer/symbol_style_layer.ts +5 -5
- package/src/style/style_layer/symbol_style_layer_properties.g.ts +63 -62
- package/src/style/style_layer/variable_text_anchor.ts +1 -1
- package/src/style/style_layer.ts +29 -41
- package/src/style/style_layer_index.ts +3 -3
- package/src/style/validate_style.test.ts +109 -0
- package/src/style/validate_style.ts +93 -26
- package/src/style/zoom_history.ts +1 -1
- package/src/symbol/anchor.ts +1 -1
- package/src/symbol/check_max_angle.ts +1 -1
- package/src/symbol/collision_index.test.ts +2 -2
- package/src/symbol/collision_index.ts +15 -9
- package/src/symbol/cross_tile_symbol_index.ts +9 -9
- package/src/symbol/get_anchors.ts +1 -1
- package/src/symbol/grid_index.ts +3 -3
- package/src/symbol/opacity_state.ts +1 -1
- package/src/symbol/path_interpolator.ts +1 -1
- package/src/symbol/placement.ts +15 -15
- package/src/symbol/projection.ts +6 -6
- package/src/symbol/shaping.ts +1 -1
- package/src/symbol/symbol_layout.ts +1 -1
- package/src/symbol/symbol_size.ts +1 -1
- package/src/symbol/tagged_string.ts +8 -8
- package/src/tile/terrain_tile_manager.test.ts +4 -4
- package/src/tile/terrain_tile_manager.ts +5 -5
- package/src/tile/tile.test.ts +24 -0
- package/src/tile/tile.ts +33 -23
- package/src/tile/tile_bounds.ts +1 -1
- package/src/tile/tile_cache.ts +4 -4
- package/src/tile/tile_id.ts +48 -21
- package/src/tile/tile_manager.ts +45 -43
- package/src/tile/tile_manager_in_view_tiles.test.ts +22 -1
- package/src/tile/tile_manager_in_view_tiles.ts +7 -6
- package/src/tile/tile_manager_raster.ts +2 -2
- package/src/tile/tile_manager_raster_dem.ts +1 -1
- package/src/ui/anchor.ts +1 -1
- package/src/ui/camera.test.ts +630 -645
- package/src/ui/camera.ts +154 -565
- package/src/ui/control/attribution_control.test.ts +4 -2
- package/src/ui/control/attribution_control.ts +10 -10
- package/src/ui/control/fullscreen_control.ts +46 -16
- package/src/ui/control/geolocate_control.test.ts +1 -1
- package/src/ui/control/geolocate_control.ts +120 -25
- package/src/ui/control/globe_control.test.ts +4 -2
- package/src/ui/control/globe_control.ts +4 -4
- package/src/ui/control/logo_control.test.ts +3 -2
- package/src/ui/control/logo_control.ts +3 -3
- package/src/ui/control/navigation_control.test.ts +3 -5
- package/src/ui/control/navigation_control.ts +26 -22
- package/src/ui/control/scale_control.ts +6 -6
- package/src/ui/control/terrain_control.test.ts +5 -2
- package/src/ui/control/terrain_control.ts +4 -4
- package/src/ui/events.ts +178 -92
- package/src/ui/handler/box_zoom.ts +17 -18
- package/src/ui/handler/click_zoom.ts +12 -12
- package/src/ui/handler/cooperative_gestures.ts +11 -9
- package/src/ui/handler/drag_handler.ts +14 -14
- package/src/ui/handler/drag_move_state_manager.ts +23 -23
- package/src/ui/handler/drag_pan.test.ts +1 -1
- package/src/ui/handler/drag_rotate.test.ts +1 -1
- package/src/ui/handler/handler_util.ts +2 -2
- package/src/ui/handler/keyboard.ts +13 -13
- package/src/ui/handler/map_event.ts +28 -28
- package/src/ui/handler/mouse.ts +1 -1
- package/src/ui/handler/mouse_rotate.test.ts +2 -2
- package/src/ui/handler/scroll_zoom.test.ts +2 -6
- package/src/ui/handler/scroll_zoom.ts +25 -20
- package/src/ui/handler/shim/dblclick_zoom.ts +4 -4
- package/src/ui/handler/shim/drag_pan.ts +4 -4
- package/src/ui/handler/shim/drag_rotate.ts +4 -4
- package/src/ui/handler/shim/two_fingers_touch.ts +8 -8
- package/src/ui/handler/tap_drag_zoom.test.ts +1 -1
- package/src/ui/handler/tap_drag_zoom.ts +10 -10
- package/src/ui/handler/tap_recognizer.ts +8 -8
- package/src/ui/handler/tap_zoom.ts +14 -14
- package/src/ui/handler/touch_pan.ts +11 -11
- package/src/ui/handler/transform-provider.ts +10 -10
- package/src/ui/handler/two_fingers_touch.test.ts +5 -5
- package/src/ui/handler/two_fingers_touch.ts +3 -3
- package/src/ui/handler_inertia.ts +11 -10
- package/src/ui/handler_manager.test.ts +17 -17
- package/src/ui/handler_manager.ts +51 -43
- package/src/ui/hash.ts +9 -9
- package/src/ui/map.ts +827 -249
- package/src/ui/map_tests/map_animation.test.ts +4 -4
- package/src/ui/map_tests/map_bounds.test.ts +2 -2
- package/src/ui/map_tests/map_calculate_camera_options.test.ts +1 -1
- package/src/ui/map_tests/map_canvas.test.ts +2 -1
- package/src/ui/map_tests/map_images.test.ts +124 -2
- package/src/ui/map_tests/map_layer.test.ts +7 -7
- package/src/ui/map_tests/map_query_rendered_features.test.ts +1 -1
- package/src/ui/map_tests/map_resize.test.ts +2 -2
- package/src/ui/map_tests/map_style.test.ts +22 -28
- package/src/ui/map_tests/map_terrain.test.ts +53 -6
- package/src/ui/map_tests/map_webgl.test.ts +20 -0
- package/src/ui/map_tests/map_zoom.test.ts +2 -2
- package/src/ui/marker.test.ts +6 -6
- package/src/ui/marker.ts +86 -30
- package/src/ui/popup.ts +51 -21
- package/src/util/abort_error.ts +1 -1
- package/src/util/actor.test.ts +28 -45
- package/src/util/actor.ts +15 -9
- package/src/util/ajax.test.ts +77 -1
- package/src/util/ajax.ts +34 -12
- package/src/util/browser.ts +4 -2
- package/src/util/color_ramp.test.ts +3 -3
- package/src/util/dictionary_coder.ts +2 -2
- package/src/util/dispatcher.test.ts +12 -14
- package/src/util/dispatcher.ts +39 -19
- package/src/util/dom.ts +5 -5
- package/src/util/evented.test.ts +34 -31
- package/src/util/evented.ts +28 -13
- package/src/util/find_pole_of_inaccessibility.ts +1 -1
- package/src/util/global_worker_pool.ts +4 -4
- package/src/util/image.ts +8 -8
- package/src/util/image_request.test.ts +17 -3
- package/src/util/image_request.ts +13 -5
- package/src/util/intersection_tests.ts +6 -6
- package/src/util/primitives/bounding_volume_cache.ts +1 -1
- package/src/util/ref_properties.ts +7 -1
- package/src/util/request_manager.ts +2 -2
- package/src/util/request_performance.ts +1 -1
- package/src/util/resolve_tokens.test.ts +2 -2
- package/src/util/script_detection.ts +10 -10
- package/src/util/struct_array.ts +19 -11
- package/src/util/task_queue.ts +3 -3
- package/src/util/test/null_gl.ts +294 -292
- package/src/util/test/util.ts +35 -20
- package/src/util/throttled_invoker.ts +2 -2
- package/src/util/transferable_grid_index.ts +8 -8
- package/src/util/util.ts +33 -43
- package/src/util/vectortile_to_geojson.ts +1 -1
- package/src/util/verticalize_punctuation.ts +1 -1
- package/src/util/web_worker.test.ts +68 -14
- package/src/util/web_worker.ts +64 -4
- package/src/util/web_worker_transfer.test.ts +21 -0
- package/src/util/web_worker_transfer.ts +2 -1
- package/src/util/worker_pool.test.ts +11 -14
- package/src/util/worker_pool.ts +19 -17
- package/src/webgl/context.ts +13 -13
- package/src/webgl/draw/draw_background.ts +2 -2
- package/src/webgl/draw/draw_circle.ts +1 -1
- package/src/webgl/draw/draw_collision_debug.ts +1 -1
- package/src/webgl/draw/draw_color_relief.ts +2 -2
- package/src/webgl/draw/draw_custom.test.ts +4 -0
- package/src/webgl/draw/draw_custom.ts +1 -1
- package/src/webgl/draw/draw_debug.ts +2 -2
- package/src/webgl/draw/draw_fill.test.ts +2 -1
- package/src/webgl/draw/draw_fill.ts +79 -32
- package/src/webgl/draw/draw_fill_extrusion.ts +1 -1
- package/src/webgl/draw/draw_heatmap.ts +2 -2
- package/src/webgl/draw/draw_hillshade.ts +2 -2
- package/src/webgl/draw/draw_layer_opacity.ts +94 -0
- package/src/webgl/draw/draw_line.ts +21 -95
- package/src/webgl/draw/draw_raster.ts +2 -2
- package/src/webgl/draw/draw_sky.ts +12 -11
- package/src/webgl/draw/draw_symbol.test.ts +4 -3
- package/src/webgl/draw/draw_symbol.ts +5 -4
- package/src/webgl/draw/draw_terrain.ts +3 -3
- package/src/webgl/framebuffer.ts +1 -5
- package/src/webgl/index_buffer.ts +3 -3
- package/src/webgl/program/fill_extrusion_program.ts +1 -2
- package/src/webgl/program/layer_opacity_program.ts +22 -0
- package/src/webgl/program/line_program.ts +12 -65
- package/src/webgl/program/program_uniforms.ts +57 -18
- package/src/webgl/program/symbol_program.ts +16 -6
- package/src/webgl/program.ts +10 -4
- package/src/webgl/render_to_texture.test.ts +42 -7
- package/src/webgl/render_to_texture.ts +27 -25
- package/src/webgl/texture.test.ts +17 -0
- package/src/webgl/texture.ts +35 -15
- package/src/webgl/value.ts +30 -30
- package/src/webgl/vertex_array_object.ts +3 -3
- package/src/webgl/vertex_buffer.ts +5 -5
- package/src/shaders/glsl/line_texture.vertex.glsl +0 -11
- package/src/shaders/glsl/line_texture.vertex.glsl.g.ts +0 -2
- package/src/util/framebuffer_error.ts +0 -21
- /package/src/shaders/glsl/{line_texture.fragment.glsl → layer_opacity.fragment.glsl} +0 -0
- /package/src/shaders/glsl/{line_texture.fragment.glsl.g.ts → layer_opacity.fragment.glsl.g.ts} +0 -0
package/README.md
CHANGED
|
@@ -29,8 +29,6 @@ Include the following code in the `<body>` of your HTML file.
|
|
|
29
29
|
<script type='module'>
|
|
30
30
|
import * as maplibregl from 'https://unpkg.com/maplibre-gl@latest/dist/maplibre-gl.mjs';
|
|
31
31
|
|
|
32
|
-
maplibregl.setWorkerUrl('https://unpkg.com/maplibre-gl@latest/dist/maplibre-gl-worker.mjs');
|
|
33
|
-
|
|
34
32
|
const map = new maplibregl.Map({
|
|
35
33
|
container: 'map',
|
|
36
34
|
style: 'https://demotiles.maplibre.org/style.json', // stylesheet location
|
|
@@ -87,6 +85,9 @@ Gold:
|
|
|
87
85
|
|
|
88
86
|
<a href="https://www.microsoft.com/"><img src="https://maplibre.org/img/msft-logo.svg" alt="Logo MSFT" width="25%"/></a>
|
|
89
87
|
|
|
88
|
+
<a href="https://aws.amazon.com/location"><img src="https://maplibre.org/img/aws-logo.svg" alt="Logo AWS" width="25%"/></a>
|
|
89
|
+
|
|
90
|
+
|
|
90
91
|
Silver:
|
|
91
92
|
|
|
92
93
|
<a href="https://www.mierune.co.jp/?lang=en"><img src="https://maplibre.org/img/mierune-logo.svg" alt="Logo MIERUNE" width="25%"/></a>
|
|
@@ -101,9 +102,9 @@ Silver:
|
|
|
101
102
|
|
|
102
103
|
<a href="https://www.maptiler.com/"><img src="https://maplibre.org/img/maptiler-logo.svg" alt="Logo maptiler" width="25%"/></a>
|
|
103
104
|
|
|
104
|
-
<a href="https://
|
|
105
|
+
<a href="https://www.caltopo.com/"><img src="https://maplibre.org/img/caltopo-logo.svg" alt="Logo Caltopo" width="25%"/></a>
|
|
105
106
|
|
|
106
|
-
<a href="https://www.caltopo.com/"><img src="https://maplibre.org/img/
|
|
107
|
+
<a href="https://www.caltopo.com/"><img src="https://maplibre.org/img/smartmaps-logo.svg" alt="Logo SmartMaps" width="25%"/></a>
|
|
107
108
|
|
|
108
109
|
Backers and Supporters:
|
|
109
110
|
|
package/build/banner.ts
CHANGED
|
@@ -5,8 +5,10 @@ import {dirname, join} from 'path';
|
|
|
5
5
|
const packageJSONPath = join(dirname(fileURLToPath(import.meta.url)), '../package.json');
|
|
6
6
|
const packageJSON = JSON.parse(readFileSync(packageJSONPath, 'utf8'));
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
`/**
|
|
8
|
+
const banner: string =
|
|
9
|
+
`/**
|
|
10
10
|
* MapLibre GL JS
|
|
11
11
|
* @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v${packageJSON.version}/LICENSE.txt
|
|
12
12
|
*/`;
|
|
13
|
+
|
|
14
|
+
export default banner;
|
package/build/generate-docs.ts
CHANGED
|
@@ -5,14 +5,25 @@ import typedocConfig from '../typedoc.json' with {type: 'json'};
|
|
|
5
5
|
import packageJson from '../package.json' with {type: 'json'};
|
|
6
6
|
import {get} from 'https';
|
|
7
7
|
import sharp from 'sharp';
|
|
8
|
+
import EXAMPLE_CATEGORY_GROUPS from '../docs/example-categories.json' with {type: 'json'};
|
|
8
9
|
|
|
9
10
|
type HtmlDoc = {
|
|
10
11
|
title: string;
|
|
11
12
|
description: string;
|
|
12
13
|
mdFileName: string;
|
|
13
14
|
isNew: boolean;
|
|
15
|
+
category: string;
|
|
16
|
+
order: number;
|
|
14
17
|
};
|
|
15
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Reads the `content` of the `<meta>` tag with the given `property`, e.g. `og:description`.
|
|
21
|
+
*/
|
|
22
|
+
function extractMetaContent(htmlContentLines: string[], property: string): string | undefined {
|
|
23
|
+
const line = htmlContentLines.find(l => l.includes(property));
|
|
24
|
+
return line?.match(/content=(["'])(.*?)\1/)?.[2];
|
|
25
|
+
}
|
|
26
|
+
|
|
16
27
|
function generateAPIIntroMarkdown(lines: string[]): string {
|
|
17
28
|
let intro = `# Intro
|
|
18
29
|
|
|
@@ -95,28 +106,71 @@ function generateMarkdownForExample(title: string, description: string, file: st
|
|
|
95
106
|
|
|
96
107
|
${description}
|
|
97
108
|
|
|
98
|
-
<iframe src="
|
|
109
|
+
<iframe src="${file}" width="100%" style="border:none; height:400px"></iframe>
|
|
99
110
|
|
|
100
111
|
${codeBlock}
|
|
101
112
|
`;
|
|
102
113
|
}
|
|
103
114
|
|
|
104
|
-
|
|
105
|
-
|
|
115
|
+
/**
|
|
116
|
+
* This method converts png files to webp files in order to improve performance of docs,
|
|
117
|
+
* This is considered a build artifact and should not be checked in, but generated as part of the docs generation process.
|
|
118
|
+
*/
|
|
119
|
+
async function packImages(indexArray: HtmlDoc[]) {
|
|
106
120
|
const promises: Array<Promise<any>> = [];
|
|
107
121
|
for (const indexArrayItem of indexArray) {
|
|
108
122
|
const imagePath = `docs/assets/examples/${indexArrayItem.mdFileName.replace('.md', '.png')}`;
|
|
109
123
|
const outputPath = imagePath.replace('.png', '.webp');
|
|
110
124
|
promises.push(sharp(imagePath).webp({quality: 90, lossless: false}).toFile(outputPath));
|
|
111
|
-
|
|
112
|
-
|
|
125
|
+
}
|
|
126
|
+
await Promise.all(promises);
|
|
127
|
+
}
|
|
113
128
|
|
|
114
|
-
|
|
129
|
+
function renderExampleCard(indexArrayItem: HtmlDoc): string {
|
|
130
|
+
const cardImg = `../assets/examples/${indexArrayItem.mdFileName.replace('.md', '.webp')}`;
|
|
131
|
+
const desc = indexArrayItem.description || '';
|
|
132
|
+
const cardFileName = indexArrayItem.mdFileName.replace(/.md$/, '/');
|
|
133
|
+
const badge = indexArrayItem.isNew ? '\n<span class="example-card-badge">new</span>' : '';
|
|
134
|
+
return `<a class="example-card" href="./${cardFileName}">
|
|
135
|
+
<div class="example-card-image">
|
|
136
|
+
<img src="${cardImg}" loading="lazy" alt="${desc}">${badge}
|
|
137
|
+
</div>
|
|
138
|
+
<div class="example-card-content">
|
|
139
|
+
<h3>${indexArrayItem.title}</h3>
|
|
140
|
+
<p>${desc}</p>
|
|
141
|
+
</div>
|
|
142
|
+
</a>`;
|
|
143
|
+
}
|
|
115
144
|
|
|
116
|
-
|
|
117
|
-
|
|
145
|
+
function renderExampleGrid(examples: HtmlDoc[]): string {
|
|
146
|
+
const cards = examples
|
|
147
|
+
// Examples with an explicit `og:order` come first (ascending); the rest fall back to alphabetical.
|
|
148
|
+
.sort((a, b) => (a.order !== b.order ? a.order - b.order : a.title.localeCompare(b.title)))
|
|
149
|
+
.map(renderExampleCard)
|
|
150
|
+
.join('\n');
|
|
151
|
+
return `<div class="examples-grid">\n${cards}\n</div>`;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Builds the examples overview page:
|
|
156
|
+
* a section per group, with content tabs when a group holds more than one category.
|
|
157
|
+
*/
|
|
158
|
+
function generateMarkdownIndexFileOfAllExamples(indexArray: HtmlDoc[]): string {
|
|
159
|
+
const byCategory = Map.groupBy(indexArray, item => item.category);
|
|
160
|
+
|
|
161
|
+
let indexMarkdown = '# Overview\n\n';
|
|
162
|
+
for (const group of EXAMPLE_CATEGORY_GROUPS) {
|
|
163
|
+
const categories = group.categories.filter(category => byCategory.has(category));
|
|
164
|
+
if (categories.length === 0) continue;
|
|
165
|
+
indexMarkdown += `## ${group.title}\n\n`;
|
|
166
|
+
if (categories.length === 1) {
|
|
167
|
+
indexMarkdown += `${renderExampleGrid(byCategory.get(categories[0]))}\n\n`;
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
for (const category of categories) {
|
|
171
|
+
indexMarkdown += `=== "${category}"\n\n${indentBlock(renderExampleGrid(byCategory.get(category)))}\n\n`;
|
|
172
|
+
}
|
|
118
173
|
}
|
|
119
|
-
await Promise.all(promises);
|
|
120
174
|
return indexMarkdown;
|
|
121
175
|
}
|
|
122
176
|
|
|
@@ -156,7 +210,10 @@ async function generateExamplesFolder() {
|
|
|
156
210
|
htmlContent = htmlContent.replace(/-dev\.mjs/g, '.mjs');
|
|
157
211
|
const htmlContentLines = htmlContent.split('\n');
|
|
158
212
|
const title = htmlContentLines.find(l => l.includes('<title'))?.replace('<title>', '').replace('</title>', '').trim();
|
|
159
|
-
const description = htmlContentLines
|
|
213
|
+
const description = extractMetaContent(htmlContentLines, 'og:description');
|
|
214
|
+
const category = extractMetaContent(htmlContentLines, 'og:category');
|
|
215
|
+
const orderMeta = extractMetaContent(htmlContentLines, 'og:order');
|
|
216
|
+
const order = orderMeta === undefined ? Number.POSITIVE_INFINITY : Number(orderMeta);
|
|
160
217
|
fs.writeFileSync(path.join(examplesDocsFolder, file), htmlContent);
|
|
161
218
|
const mdFileName = file.replace('.html', '.md');
|
|
162
219
|
const isNew = isNewExample(htmlContentLines);
|
|
@@ -164,13 +221,15 @@ async function generateExamplesFolder() {
|
|
|
164
221
|
title,
|
|
165
222
|
description,
|
|
166
223
|
mdFileName,
|
|
167
|
-
isNew
|
|
224
|
+
isNew,
|
|
225
|
+
category,
|
|
226
|
+
order
|
|
168
227
|
});
|
|
169
228
|
const exampleMarkdown = generateMarkdownForExample(title, description, file, htmlContent, isNew);
|
|
170
229
|
fs.writeFileSync(path.join(examplesDocsFolder, mdFileName), exampleMarkdown);
|
|
171
230
|
}
|
|
172
|
-
|
|
173
|
-
const indexMarkdown =
|
|
231
|
+
await packImages(indexArray);
|
|
232
|
+
const indexMarkdown = generateMarkdownIndexFileOfAllExamples(indexArray);
|
|
174
233
|
fs.writeFileSync(path.join(examplesDocsFolder, 'index.md'), indexMarkdown);
|
|
175
234
|
}
|
|
176
235
|
|
|
@@ -235,7 +294,7 @@ function updateMapLibreVersionForUNPKG() {
|
|
|
235
294
|
let indexContent = fs.readFileSync(indexPath, 'utf-8');
|
|
236
295
|
|
|
237
296
|
// Replace the version number
|
|
238
|
-
indexContent = indexContent.replace(/unpkg\.com\/maplibre-gl@\^
|
|
297
|
+
indexContent = indexContent.replace(/unpkg\.com\/maplibre-gl@\^[^/'"]+/g, `unpkg.com/maplibre-gl@^${packageJson.version}`);
|
|
239
298
|
|
|
240
299
|
// Save index.md
|
|
241
300
|
fs.writeFileSync(indexPath, indexContent);
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
'use strict';
|
|
10
10
|
|
|
11
11
|
import * as fs from 'fs';
|
|
12
|
-
import
|
|
12
|
+
import {extend} from '../src/util/util.ts';
|
|
13
13
|
import {createLayout, viewTypes} from '../src/util/struct_array.ts';
|
|
14
14
|
import type {ViewType, StructArrayLayout} from '../src/util/struct_array.ts';
|
|
15
15
|
|
|
@@ -60,7 +60,7 @@ function normalizeMembers(members, usedTypes) {
|
|
|
60
60
|
usedTypes.add(member.type);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
return
|
|
63
|
+
return extend(member, {
|
|
64
64
|
size: sizeOf(member.type),
|
|
65
65
|
view: member.type.toLowerCase()
|
|
66
66
|
});
|
|
@@ -103,7 +103,7 @@ function createStructArrayLayoutType({members, size, alignment}) {
|
|
|
103
103
|
if (!alignment || alignment === 1) members = members.reduce((memo, member) => {
|
|
104
104
|
if (memo.length > 0 && memo[memo.length - 1].type === member.type) {
|
|
105
105
|
const last = memo[memo.length - 1];
|
|
106
|
-
return memo.slice(0, -1).concat(
|
|
106
|
+
return memo.slice(0, -1).concat(extend({}, last, {
|
|
107
107
|
components: last.components + member.components,
|
|
108
108
|
}));
|
|
109
109
|
}
|
|
@@ -247,7 +247,7 @@ class ${structArrayLayoutClass} extends StructArray {`);
|
|
|
247
247
|
}
|
|
248
248
|
|
|
249
249
|
output.push(`
|
|
250
|
-
_refreshViews() {`);
|
|
250
|
+
_refreshViews(): void {`);
|
|
251
251
|
|
|
252
252
|
for (const type of usedTypes) {
|
|
253
253
|
output.push(
|
|
@@ -279,13 +279,13 @@ class ${structArrayLayoutClass} extends StructArray {`);
|
|
|
279
279
|
|
|
280
280
|
output.push(
|
|
281
281
|
`
|
|
282
|
-
public emplaceBack(${argNamesTyped.join(', ')}) {
|
|
282
|
+
public emplaceBack(${argNamesTyped.join(', ')}): number {
|
|
283
283
|
const i = this.length;
|
|
284
284
|
this.resize(i + 1);
|
|
285
285
|
return this.emplace(i, ${argNames.join(', ')});
|
|
286
286
|
}
|
|
287
287
|
|
|
288
|
-
public emplace(i: number, ${argNamesTyped.join(', ')}) {`);
|
|
288
|
+
public emplace(i: number, ${argNamesTyped.join(', ')}): number {`);
|
|
289
289
|
|
|
290
290
|
for (const size of usedTypeSizes) {
|
|
291
291
|
output.push(
|
|
@@ -361,7 +361,7 @@ class ${structTypeClass} extends Struct {
|
|
|
361
361
|
const componentAccess = `this._structArray.${member.view}[${index}]`;
|
|
362
362
|
|
|
363
363
|
output.push(
|
|
364
|
-
` get ${name}() { return ${componentAccess}; }`);
|
|
364
|
+
` get ${name}(): number { return ${componentAccess}; }`);
|
|
365
365
|
|
|
366
366
|
// generate setters for properties that are updated during runtime symbol placement; others are read-only
|
|
367
367
|
if (name === 'crossTileID' || name === 'placedOrientation' || name === 'hidden') {
|
|
@@ -373,7 +373,7 @@ class ${structTypeClass} extends Struct {
|
|
|
373
373
|
// Special case used for the CollisionBoxArray type
|
|
374
374
|
if (hasAnchorPoint) {
|
|
375
375
|
output.push(
|
|
376
|
-
' get anchorPoint() { return new Point(this.anchorPointX, this.anchorPointY); }');
|
|
376
|
+
' get anchorPoint(): Point { return new Point(this.anchorPointX, this.anchorPointY); }');
|
|
377
377
|
}
|
|
378
378
|
|
|
379
379
|
output.push(
|
|
@@ -400,7 +400,7 @@ export class ${structArrayClass} extends ${structArrayLayoutClass} {`);
|
|
|
400
400
|
const componentOffset = (member.offset / member.size + c).toFixed(0);
|
|
401
401
|
const componentStride = size / member.size;
|
|
402
402
|
output.push(
|
|
403
|
-
` ${name}(index: number) { return this.${member.view}[index * ${componentStride} + ${componentOffset}]; }`);
|
|
403
|
+
` ${name}(index: number): number { return this.${member.view}[index * ${componentStride} + ${componentOffset}]; }`);
|
|
404
404
|
}
|
|
405
405
|
}
|
|
406
406
|
} else if (includeStructAccessors) { // get(i)
|