@scoova/mgl 1.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/LICENSE.txt +116 -0
- package/README.md +174 -0
- package/build/banner.ts +12 -0
- package/build/bump-version-changelog.js +26 -0
- package/build/check-bundle-size.js +77 -0
- package/build/generate-dist-package.js +26 -0
- package/build/generate-doc-images.ts +78 -0
- package/build/generate-docs.ts +190 -0
- package/build/generate-shaders.ts +68 -0
- package/build/generate-struct-arrays.ts +438 -0
- package/build/generate-style-code.ts +283 -0
- package/build/readme.md +56 -0
- package/build/release-notes.js +45 -0
- package/build/rollup/bundle_prelude.js +29 -0
- package/build/rollup/maplibregl.js +22 -0
- package/build/rollup_plugins.ts +58 -0
- package/dist/LICENSE.txt +116 -0
- package/dist/maplibre-gl.css +1 -0
- package/dist/maplibre-gl.d.ts +13304 -0
- package/dist/maplibre-gl.js +59 -0
- package/dist/maplibre-gl.js.map +1 -0
- package/dist/package.json +1 -0
- package/package.json +192 -0
- package/src/css/maplibre-gl.css +854 -0
- package/src/css/svg/maplibregl-ctrl-attrib.svg +3 -0
- package/src/css/svg/maplibregl-ctrl-compass.svg +4 -0
- package/src/css/svg/maplibregl-ctrl-fullscreen.svg +3 -0
- package/src/css/svg/maplibregl-ctrl-geolocate.svg +5 -0
- package/src/css/svg/maplibregl-ctrl-logo.svg +11 -0
- package/src/css/svg/maplibregl-ctrl-shrink.svg +3 -0
- package/src/css/svg/maplibregl-ctrl-terrain.svg +3 -0
- package/src/css/svg/maplibregl-ctrl-zoom-in.svg +3 -0
- package/src/css/svg/maplibregl-ctrl-zoom-out.svg +3 -0
- package/src/data/array_types.g.ts +1130 -0
- package/src/data/bucket/circle_attributes.ts +8 -0
- package/src/data/bucket/circle_bucket.ts +197 -0
- package/src/data/bucket/fill_attributes.ts +8 -0
- package/src/data/bucket/fill_bucket.test.ts +95 -0
- package/src/data/bucket/fill_bucket.ts +228 -0
- package/src/data/bucket/fill_extrusion_attributes.ts +13 -0
- package/src/data/bucket/fill_extrusion_bucket.ts +305 -0
- package/src/data/bucket/heatmap_bucket.ts +12 -0
- package/src/data/bucket/line_attributes.ts +8 -0
- package/src/data/bucket/line_attributes_ext.ts +8 -0
- package/src/data/bucket/line_bucket.test.ts +142 -0
- package/src/data/bucket/line_bucket.ts +592 -0
- package/src/data/bucket/pattern_attributes.ts +9 -0
- package/src/data/bucket/pattern_bucket_features.ts +57 -0
- package/src/data/bucket/symbol_attributes.ts +122 -0
- package/src/data/bucket/symbol_bucket.test.ts +243 -0
- package/src/data/bucket/symbol_bucket.ts +975 -0
- package/src/data/bucket.ts +123 -0
- package/src/data/dem_data.test.ts +237 -0
- package/src/data/dem_data.ts +171 -0
- package/src/data/evaluation_feature.ts +18 -0
- package/src/data/extent.ts +13 -0
- package/src/data/feature_index.ts +337 -0
- package/src/data/feature_position_map.test.ts +33 -0
- package/src/data/feature_position_map.ts +126 -0
- package/src/data/index_array_type.ts +9 -0
- package/src/data/load_geometry.test.ts +49 -0
- package/src/data/load_geometry.ts +44 -0
- package/src/data/pos3d_attributes.ts +5 -0
- package/src/data/pos_attributes.ts +5 -0
- package/src/data/program_configuration.ts +735 -0
- package/src/data/raster_bounds_attributes.ts +6 -0
- package/src/data/segment.ts +89 -0
- package/src/geo/edge_insets.test.ts +83 -0
- package/src/geo/edge_insets.ts +146 -0
- package/src/geo/lng_lat.test.ts +65 -0
- package/src/geo/lng_lat.ts +169 -0
- package/src/geo/lng_lat_bounds.test.ts +357 -0
- package/src/geo/lng_lat_bounds.ts +356 -0
- package/src/geo/mercator_coordinate.test.ts +34 -0
- package/src/geo/mercator_coordinate.ts +157 -0
- package/src/geo/projection/projection.ts +72 -0
- package/src/geo/transform.test.ts +509 -0
- package/src/geo/transform.ts +1072 -0
- package/src/gl/color_mode.ts +31 -0
- package/src/gl/context.ts +321 -0
- package/src/gl/cull_face_mode.ts +22 -0
- package/src/gl/depth_mode.ts +26 -0
- package/src/gl/framebuffer.ts +48 -0
- package/src/gl/index_buffer.ts +55 -0
- package/src/gl/render_pool.test.ts +69 -0
- package/src/gl/render_pool.ts +93 -0
- package/src/gl/state.test.ts +125 -0
- package/src/gl/stencil_mode.ts +27 -0
- package/src/gl/types.ts +59 -0
- package/src/gl/value.ts +534 -0
- package/src/gl/vertex_buffer.test.ts +57 -0
- package/src/gl/vertex_buffer.ts +111 -0
- package/src/gl/webgl2.ts +12 -0
- package/src/index.test.ts +121 -0
- package/src/index.ts +250 -0
- package/src/render/draw_background.ts +53 -0
- package/src/render/draw_circle.ts +113 -0
- package/src/render/draw_collision_debug.ts +168 -0
- package/src/render/draw_custom.test.ts +73 -0
- package/src/render/draw_custom.ts +45 -0
- package/src/render/draw_debug.test.ts +122 -0
- package/src/render/draw_debug.ts +148 -0
- package/src/render/draw_fill.test.ts +137 -0
- package/src/render/draw_fill.ts +128 -0
- package/src/render/draw_fill_extrusion.ts +97 -0
- package/src/render/draw_heatmap.ts +228 -0
- package/src/render/draw_hillshade.ts +119 -0
- package/src/render/draw_line.ts +125 -0
- package/src/render/draw_raster.ts +133 -0
- package/src/render/draw_sky.ts +44 -0
- package/src/render/draw_symbol.test.ts +223 -0
- package/src/render/draw_symbol.ts +499 -0
- package/src/render/draw_terrain.ts +99 -0
- package/src/render/glyph_atlas.ts +83 -0
- package/src/render/glyph_manager.test.ts +147 -0
- package/src/render/glyph_manager.ts +198 -0
- package/src/render/image_atlas.ts +159 -0
- package/src/render/image_manager.ts +337 -0
- package/src/render/line_atlas.test.ts +38 -0
- package/src/render/line_atlas.ts +214 -0
- package/src/render/mesh.ts +25 -0
- package/src/render/painter.test.ts +51 -0
- package/src/render/painter.ts +666 -0
- package/src/render/program/background_program.ts +100 -0
- package/src/render/program/circle_program.ts +61 -0
- package/src/render/program/clipping_mask_program.ts +19 -0
- package/src/render/program/collision_program.ts +47 -0
- package/src/render/program/debug_program.ts +29 -0
- package/src/render/program/fill_extrusion_program.ts +120 -0
- package/src/render/program/fill_program.ts +121 -0
- package/src/render/program/heatmap_program.ts +76 -0
- package/src/render/program/hillshade_program.ts +116 -0
- package/src/render/program/line_program.ts +207 -0
- package/src/render/program/pattern.ts +102 -0
- package/src/render/program/program_uniforms.ts +46 -0
- package/src/render/program/raster_program.ts +88 -0
- package/src/render/program/sky_program.ts +28 -0
- package/src/render/program/symbol_program.ts +266 -0
- package/src/render/program/terrain_program.ts +116 -0
- package/src/render/program.ts +233 -0
- package/src/render/render_to_texture.test.ts +151 -0
- package/src/render/render_to_texture.ts +197 -0
- package/src/render/terrain.test.ts +322 -0
- package/src/render/terrain.ts +464 -0
- package/src/render/texture.ts +114 -0
- package/src/render/uniform_binding.test.ts +122 -0
- package/src/render/uniform_binding.ts +157 -0
- package/src/render/update_pattern_positions_in_program.test.ts +74 -0
- package/src/render/update_pattern_positions_in_program.ts +50 -0
- package/src/render/vertex_array_object.ts +163 -0
- package/src/shaders/README.md +42 -0
- package/src/shaders/_prelude.fragment.glsl +19 -0
- package/src/shaders/_prelude.fragment.glsl.g.ts +2 -0
- package/src/shaders/_prelude.vertex.glsl +148 -0
- package/src/shaders/_prelude.vertex.glsl.g.ts +2 -0
- package/src/shaders/background.fragment.glsl +10 -0
- package/src/shaders/background.fragment.glsl.g.ts +2 -0
- package/src/shaders/background.vertex.glsl +7 -0
- package/src/shaders/background.vertex.glsl.g.ts +2 -0
- package/src/shaders/background_pattern.fragment.glsl +28 -0
- package/src/shaders/background_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/background_pattern.vertex.glsl +19 -0
- package/src/shaders/background_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/circle.fragment.glsl +34 -0
- package/src/shaders/circle.fragment.glsl.g.ts +2 -0
- package/src/shaders/circle.vertex.glsl +68 -0
- package/src/shaders/circle.vertex.glsl.g.ts +2 -0
- package/src/shaders/clipping_mask.fragment.glsl +3 -0
- package/src/shaders/clipping_mask.fragment.glsl.g.ts +2 -0
- package/src/shaders/clipping_mask.vertex.glsl +7 -0
- package/src/shaders/clipping_mask.vertex.glsl.g.ts +2 -0
- package/src/shaders/collision_box.fragment.glsl +20 -0
- package/src/shaders/collision_box.fragment.glsl.g.ts +2 -0
- package/src/shaders/collision_box.vertex.glsl +27 -0
- package/src/shaders/collision_box.vertex.glsl.g.ts +2 -0
- package/src/shaders/collision_circle.fragment.glsl +17 -0
- package/src/shaders/collision_circle.fragment.glsl.g.ts +2 -0
- package/src/shaders/collision_circle.vertex.glsl +59 -0
- package/src/shaders/collision_circle.vertex.glsl.g.ts +2 -0
- package/src/shaders/debug.fragment.glsl +9 -0
- package/src/shaders/debug.fragment.glsl.g.ts +2 -0
- package/src/shaders/debug.vertex.glsl +12 -0
- package/src/shaders/debug.vertex.glsl.g.ts +2 -0
- package/src/shaders/encode_attribute.test.ts +11 -0
- package/src/shaders/encode_attribute.ts +13 -0
- package/src/shaders/fill.fragment.glsl +13 -0
- package/src/shaders/fill.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill.vertex.glsl +13 -0
- package/src/shaders/fill.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion.fragment.glsl +9 -0
- package/src/shaders/fill_extrusion.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion.vertex.glsl +84 -0
- package/src/shaders/fill_extrusion.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion_pattern.fragment.glsl +47 -0
- package/src/shaders/fill_extrusion_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion_pattern.vertex.glsl +96 -0
- package/src/shaders/fill_extrusion_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_outline.fragment.glsl +17 -0
- package/src/shaders/fill_outline.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_outline.vertex.glsl +17 -0
- package/src/shaders/fill_outline.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_outline_pattern.fragment.glsl +43 -0
- package/src/shaders/fill_outline_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_outline_pattern.vertex.glsl +44 -0
- package/src/shaders/fill_outline_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_pattern.fragment.glsl +39 -0
- package/src/shaders/fill_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_pattern.vertex.glsl +39 -0
- package/src/shaders/fill_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/heatmap.fragment.glsl +22 -0
- package/src/shaders/heatmap.fragment.glsl.g.ts +2 -0
- package/src/shaders/heatmap.vertex.glsl +54 -0
- package/src/shaders/heatmap.vertex.glsl.g.ts +2 -0
- package/src/shaders/heatmap_texture.fragment.glsl +15 -0
- package/src/shaders/heatmap_texture.fragment.glsl.g.ts +2 -0
- package/src/shaders/heatmap_texture.vertex.glsl +11 -0
- package/src/shaders/heatmap_texture.vertex.glsl.g.ts +2 -0
- package/src/shaders/hillshade.fragment.glsl +52 -0
- package/src/shaders/hillshade.fragment.glsl.g.ts +2 -0
- package/src/shaders/hillshade.vertex.glsl +11 -0
- package/src/shaders/hillshade.vertex.glsl.g.ts +2 -0
- package/src/shaders/hillshade_prepare.fragment.glsl +77 -0
- package/src/shaders/hillshade_prepare.fragment.glsl.g.ts +2 -0
- package/src/shaders/hillshade_prepare.vertex.glsl +15 -0
- package/src/shaders/hillshade_prepare.vertex.glsl.g.ts +2 -0
- package/src/shaders/line.fragment.glsl +30 -0
- package/src/shaders/line.fragment.glsl.g.ts +2 -0
- package/src/shaders/line.vertex.glsl +89 -0
- package/src/shaders/line.vertex.glsl.g.ts +2 -0
- package/src/shaders/line_gradient.fragment.glsl +34 -0
- package/src/shaders/line_gradient.fragment.glsl.g.ts +2 -0
- package/src/shaders/line_gradient.vertex.glsl +92 -0
- package/src/shaders/line_gradient.vertex.glsl.g.ts +2 -0
- package/src/shaders/line_pattern.fragment.glsl +77 -0
- package/src/shaders/line_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/line_pattern.vertex.glsl +103 -0
- package/src/shaders/line_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/line_sdf.fragment.glsl +45 -0
- package/src/shaders/line_sdf.fragment.glsl.g.ts +2 -0
- package/src/shaders/line_sdf.vertex.glsl +101 -0
- package/src/shaders/line_sdf.vertex.glsl.g.ts +2 -0
- package/src/shaders/raster.fragment.glsl +53 -0
- package/src/shaders/raster.fragment.glsl.g.ts +2 -0
- package/src/shaders/raster.vertex.glsl +21 -0
- package/src/shaders/raster.vertex.glsl.g.ts +2 -0
- package/src/shaders/shaders.ts +197 -0
- package/src/shaders/sky.fragment.glsl +17 -0
- package/src/shaders/sky.fragment.glsl.g.ts +2 -0
- package/src/shaders/sky.vertex.glsl +5 -0
- package/src/shaders/sky.vertex.glsl.g.ts +2 -0
- package/src/shaders/symbol_icon.fragment.glsl +17 -0
- package/src/shaders/symbol_icon.fragment.glsl.g.ts +2 -0
- package/src/shaders/symbol_icon.vertex.glsl +117 -0
- package/src/shaders/symbol_icon.vertex.glsl.g.ts +2 -0
- package/src/shaders/symbol_sdf.fragment.glsl +58 -0
- package/src/shaders/symbol_sdf.fragment.glsl.g.ts +2 -0
- package/src/shaders/symbol_sdf.vertex.glsl +142 -0
- package/src/shaders/symbol_sdf.vertex.glsl.g.ts +2 -0
- package/src/shaders/symbol_text_and_icon.fragment.glsl +68 -0
- package/src/shaders/symbol_text_and_icon.fragment.glsl.g.ts +2 -0
- package/src/shaders/symbol_text_and_icon.vertex.glsl +140 -0
- package/src/shaders/symbol_text_and_icon.vertex.glsl.g.ts +2 -0
- package/src/shaders/terrain.fragment.glsl +32 -0
- package/src/shaders/terrain.fragment.glsl.g.ts +2 -0
- package/src/shaders/terrain.vertex.glsl +17 -0
- package/src/shaders/terrain.vertex.glsl.g.ts +2 -0
- package/src/shaders/terrain_coords.fragment.glsl +11 -0
- package/src/shaders/terrain_coords.fragment.glsl.g.ts +2 -0
- package/src/shaders/terrain_coords.vertex.glsl +13 -0
- package/src/shaders/terrain_coords.vertex.glsl.g.ts +2 -0
- package/src/shaders/terrain_depth.fragment.glsl +15 -0
- package/src/shaders/terrain_depth.fragment.glsl.g.ts +2 -0
- package/src/shaders/terrain_depth.vertex.glsl +13 -0
- package/src/shaders/terrain_depth.vertex.glsl.g.ts +2 -0
- package/src/source/canvas_source.test.ts +210 -0
- package/src/source/canvas_source.ts +227 -0
- package/src/source/geojson_source.test.ts +492 -0
- package/src/source/geojson_source.ts +431 -0
- package/src/source/geojson_source_diff.test.ts +364 -0
- package/src/source/geojson_source_diff.ts +172 -0
- package/src/source/geojson_worker_source.test.ts +399 -0
- package/src/source/geojson_worker_source.ts +303 -0
- package/src/source/geojson_wrapper.test.ts +32 -0
- package/src/source/geojson_wrapper.ts +81 -0
- package/src/source/image_source.test.ts +235 -0
- package/src/source/image_source.ts +338 -0
- package/src/source/load_tilejson.ts +47 -0
- package/src/source/pixels_to_tile_units.ts +25 -0
- package/src/source/protocol_crud.ts +48 -0
- package/src/source/query_features.test.ts +31 -0
- package/src/source/query_features.ts +252 -0
- package/src/source/raster_dem_tile_source.test.ts +158 -0
- package/src/source/raster_dem_tile_source.ts +166 -0
- package/src/source/raster_dem_tile_worker_source.test.ts +36 -0
- package/src/source/raster_dem_tile_worker_source.ts +38 -0
- package/src/source/raster_tile_source.test.ts +206 -0
- package/src/source/raster_tile_source.ts +227 -0
- package/src/source/rtl_text_plugin_main_thread.test.ts +170 -0
- package/src/source/rtl_text_plugin_main_thread.ts +89 -0
- package/src/source/rtl_text_plugin_status.ts +33 -0
- package/src/source/rtl_text_plugin_worker.ts +49 -0
- package/src/source/source.test.ts +41 -0
- package/src/source/source.ts +186 -0
- package/src/source/source_cache.test.ts +2069 -0
- package/src/source/source_cache.ts +1102 -0
- package/src/source/source_state.ts +157 -0
- package/src/source/terrain_source_cache.test.ts +105 -0
- package/src/source/terrain_source_cache.ts +204 -0
- package/src/source/tile.test.ts +290 -0
- package/src/source/tile.ts +478 -0
- package/src/source/tile_bounds.ts +34 -0
- package/src/source/tile_cache.test.ts +130 -0
- package/src/source/tile_cache.ts +208 -0
- package/src/source/tile_id.test.ts +112 -0
- package/src/source/tile_id.ts +221 -0
- package/src/source/vector_tile_source.test.ts +401 -0
- package/src/source/vector_tile_source.ts +283 -0
- package/src/source/vector_tile_worker_source.test.ts +396 -0
- package/src/source/vector_tile_worker_source.ts +199 -0
- package/src/source/video_source.test.ts +124 -0
- package/src/source/video_source.ts +204 -0
- package/src/source/worker.test.ts +233 -0
- package/src/source/worker.ts +301 -0
- package/src/source/worker_source.ts +117 -0
- package/src/source/worker_tile.test.ts +226 -0
- package/src/source/worker_tile.ts +208 -0
- package/src/style/create_style_layer.ts +39 -0
- package/src/style/evaluation_parameters.ts +62 -0
- package/src/style/format_section_override.test.ts +62 -0
- package/src/style/format_section_override.ts +50 -0
- package/src/style/light.test.ts +86 -0
- package/src/style/light.ts +135 -0
- package/src/style/load_glyph_range.test.ts +40 -0
- package/src/style/load_glyph_range.ts +32 -0
- package/src/style/load_sprite.test.ts +227 -0
- package/src/style/load_sprite.ts +71 -0
- package/src/style/parse_glyph_pbf.ts +42 -0
- package/src/style/pauseable_placement.ts +138 -0
- package/src/style/properties.ts +726 -0
- package/src/style/query_utils.test.ts +107 -0
- package/src/style/query_utils.ts +70 -0
- package/src/style/sky.ts +127 -0
- package/src/style/style.test.ts +2654 -0
- package/src/style/style.ts +1814 -0
- package/src/style/style_glyph.ts +25 -0
- package/src/style/style_image.ts +188 -0
- package/src/style/style_layer/background_style_layer.ts +17 -0
- package/src/style/style_layer/background_style_layer_properties.g.ts +40 -0
- package/src/style/style_layer/circle_style_layer.ts +98 -0
- package/src/style/style_layer/circle_style_layer_properties.g.ts +76 -0
- package/src/style/style_layer/custom_style_layer.ts +233 -0
- package/src/style/style_layer/fill_extrusion_style_layer.ts +224 -0
- package/src/style/style_layer/fill_extrusion_style_layer_properties.g.ts +55 -0
- package/src/style/style_layer/fill_style_layer.test.ts +37 -0
- package/src/style/style_layer/fill_style_layer.ts +65 -0
- package/src/style/style_layer/fill_style_layer_properties.g.ts +64 -0
- package/src/style/style_layer/heatmap_style_layer.ts +74 -0
- package/src/style/style_layer/heatmap_style_layer_properties.g.ts +46 -0
- package/src/style/style_layer/hillshade_style_layer.ts +21 -0
- package/src/style/style_layer/hillshade_style_layer_properties.g.ts +49 -0
- package/src/style/style_layer/line_style_layer.test.ts +50 -0
- package/src/style/style_layer/line_style_layer.ts +131 -0
- package/src/style/style_layer/line_style_layer_properties.g.ts +88 -0
- package/src/style/style_layer/overlap_mode.test.ts +57 -0
- package/src/style/style_layer/overlap_mode.ts +25 -0
- package/src/style/style_layer/raster_style_layer.ts +17 -0
- package/src/style/style_layer/raster_style_layer_properties.g.ts +55 -0
- package/src/style/style_layer/symbol_style_layer.ts +195 -0
- package/src/style/style_layer/symbol_style_layer_properties.g.ts +218 -0
- package/src/style/style_layer/typed_style_layer.ts +9 -0
- package/src/style/style_layer/variable_text_anchor.test.ts +117 -0
- package/src/style/style_layer/variable_text_anchor.ts +163 -0
- package/src/style/style_layer.test.ts +372 -0
- package/src/style/style_layer.ts +287 -0
- package/src/style/style_layer_index.test.ts +99 -0
- package/src/style/style_layer_index.ts +78 -0
- package/src/style/validate_style.ts +53 -0
- package/src/style/zoom_history.ts +40 -0
- package/src/symbol/anchor.test.ts +14 -0
- package/src/symbol/anchor.ts +22 -0
- package/src/symbol/check_max_angle.test.ts +54 -0
- package/src/symbol/check_max_angle.ts +76 -0
- package/src/symbol/clip_line.test.ts +154 -0
- package/src/symbol/clip_line.ts +66 -0
- package/src/symbol/collision_feature.test.ts +98 -0
- package/src/symbol/collision_feature.ts +114 -0
- package/src/symbol/collision_index.test.ts +19 -0
- package/src/symbol/collision_index.ts +618 -0
- package/src/symbol/cross_tile_symbol_index.test.ts +260 -0
- package/src/symbol/cross_tile_symbol_index.ts +367 -0
- package/src/symbol/get_anchors.test.ts +113 -0
- package/src/symbol/get_anchors.ts +167 -0
- package/src/symbol/grid_index.test.ts +75 -0
- package/src/symbol/grid_index.ts +414 -0
- package/src/symbol/merge_lines.test.ts +30 -0
- package/src/symbol/merge_lines.ts +80 -0
- package/src/symbol/one_em.ts +3 -0
- package/src/symbol/opacity_state.ts +23 -0
- package/src/symbol/path_interpolator.test.ts +134 -0
- package/src/symbol/path_interpolator.ts +55 -0
- package/src/symbol/placement.ts +1371 -0
- package/src/symbol/projection.test.ts +171 -0
- package/src/symbol/projection.ts +833 -0
- package/src/symbol/quads.test.ts +157 -0
- package/src/symbol/quads.ts +349 -0
- package/src/symbol/shaping.test.ts +360 -0
- package/src/symbol/shaping.ts +911 -0
- package/src/symbol/symbol_layout.ts +739 -0
- package/src/symbol/symbol_size.ts +129 -0
- package/src/symbol/symbol_style_layer.test.ts +103 -0
- package/src/symbol/transform_text.ts +27 -0
- package/src/ui/anchor.ts +27 -0
- package/src/ui/camera.test.ts +2301 -0
- package/src/ui/camera.ts +1520 -0
- package/src/ui/control/attribution_control.test.ts +543 -0
- package/src/ui/control/attribution_control.ts +209 -0
- package/src/ui/control/control.ts +67 -0
- package/src/ui/control/fullscreen_control.test.ts +114 -0
- package/src/ui/control/fullscreen_control.ts +189 -0
- package/src/ui/control/geolocate_control.test.ts +619 -0
- package/src/ui/control/geolocate_control.ts +725 -0
- package/src/ui/control/logo_control.test.ts +88 -0
- package/src/ui/control/logo_control.ts +86 -0
- package/src/ui/control/navigation_control.test.ts +238 -0
- package/src/ui/control/navigation_control.ts +294 -0
- package/src/ui/control/scale_control.test.ts +52 -0
- package/src/ui/control/scale_control.ts +152 -0
- package/src/ui/control/terrain_control.test.ts +58 -0
- package/src/ui/control/terrain_control.ts +74 -0
- package/src/ui/default_locale.ts +25 -0
- package/src/ui/events.ts +758 -0
- package/src/ui/handler/box_zoom.test.ts +163 -0
- package/src/ui/handler/box_zoom.ts +171 -0
- package/src/ui/handler/click_zoom.ts +55 -0
- package/src/ui/handler/cooperative_gestures.test.ts +338 -0
- package/src/ui/handler/cooperative_gestures.ts +111 -0
- package/src/ui/handler/dblclick_zoom.test.ts +151 -0
- package/src/ui/handler/drag_handler.ts +174 -0
- package/src/ui/handler/drag_move_state_manager.ts +115 -0
- package/src/ui/handler/drag_pan.test.ts +487 -0
- package/src/ui/handler/drag_rotate.test.ts +859 -0
- package/src/ui/handler/handler_util.ts +10 -0
- package/src/ui/handler/keyboard.test.ts +235 -0
- package/src/ui/handler/keyboard.ts +212 -0
- package/src/ui/handler/map_event.test.ts +158 -0
- package/src/ui/handler/map_event.ts +161 -0
- package/src/ui/handler/mouse.ts +92 -0
- package/src/ui/handler/mouse_handler_interface.test.ts +111 -0
- package/src/ui/handler/mouse_rotate.test.ts +62 -0
- package/src/ui/handler/one_finger_touch_drag.ts +45 -0
- package/src/ui/handler/one_finger_touch_drag_handler_interface.test.ts +77 -0
- package/src/ui/handler/scroll_zoom.test.ts +382 -0
- package/src/ui/handler/scroll_zoom.ts +379 -0
- package/src/ui/handler/shim/dblclick_zoom.ts +64 -0
- package/src/ui/handler/shim/drag_pan.ts +104 -0
- package/src/ui/handler/shim/drag_rotate.ts +76 -0
- package/src/ui/handler/shim/two_fingers_touch.ts +112 -0
- package/src/ui/handler/tap_drag_zoom.test.ts +113 -0
- package/src/ui/handler/tap_drag_zoom.ts +112 -0
- package/src/ui/handler/tap_recognizer.ts +138 -0
- package/src/ui/handler/tap_zoom.ts +98 -0
- package/src/ui/handler/touch_pan.ts +115 -0
- package/src/ui/handler/transform-provider.ts +44 -0
- package/src/ui/handler/two_fingers_touch.test.ts +283 -0
- package/src/ui/handler/two_fingers_touch.ts +336 -0
- package/src/ui/handler_inertia.ts +157 -0
- package/src/ui/handler_manager.ts +637 -0
- package/src/ui/hash.test.ts +404 -0
- package/src/ui/hash.ts +153 -0
- package/src/ui/map.ts +3393 -0
- package/src/ui/map_tests/map_animation.test.ts +61 -0
- package/src/ui/map_tests/map_basic.test.ts +223 -0
- package/src/ui/map_tests/map_bounds.test.ts +123 -0
- package/src/ui/map_tests/map_calculate_camera_options.test.ts +113 -0
- package/src/ui/map_tests/map_canvas.test.ts +59 -0
- package/src/ui/map_tests/map_control.test.ts +61 -0
- package/src/ui/map_tests/map_disable_handlers.test.ts +38 -0
- package/src/ui/map_tests/map_events.test.ts +1001 -0
- package/src/ui/map_tests/map_feature_state.test.ts +421 -0
- package/src/ui/map_tests/map_images.test.ts +175 -0
- package/src/ui/map_tests/map_is_moving.test.ts +164 -0
- package/src/ui/map_tests/map_is_rotating.test.ts +62 -0
- package/src/ui/map_tests/map_is_zooming.test.ts +86 -0
- package/src/ui/map_tests/map_layer.test.ts +457 -0
- package/src/ui/map_tests/map_options.test.ts +64 -0
- package/src/ui/map_tests/map_pitch.test.ts +90 -0
- package/src/ui/map_tests/map_pixel_ratio.test.ts +75 -0
- package/src/ui/map_tests/map_query_rendered_features.test.ts +93 -0
- package/src/ui/map_tests/map_render.test.ts +90 -0
- package/src/ui/map_tests/map_request_render_frame.test.ts +51 -0
- package/src/ui/map_tests/map_resize.test.ts +120 -0
- package/src/ui/map_tests/map_style.test.ts +541 -0
- package/src/ui/map_tests/map_terrian.test.ts +104 -0
- package/src/ui/map_tests/map_webgl.test.ts +72 -0
- package/src/ui/map_tests/map_world_copies.test.ts +103 -0
- package/src/ui/map_tests/map_zoom.test.ts +95 -0
- package/src/ui/marker.test.ts +1149 -0
- package/src/ui/marker.ts +880 -0
- package/src/ui/popup.test.ts +827 -0
- package/src/ui/popup.ts +717 -0
- package/src/util/abort_error.ts +21 -0
- package/src/util/actor.test.ts +218 -0
- package/src/util/actor.ts +241 -0
- package/src/util/actor_messages.ts +149 -0
- package/src/util/ajax.test.ts +237 -0
- package/src/util/ajax.ts +297 -0
- package/src/util/browser.test.ts +23 -0
- package/src/util/browser.ts +63 -0
- package/src/util/color_ramp.test.ts +105 -0
- package/src/util/color_ramp.ts +56 -0
- package/src/util/config.ts +29 -0
- package/src/util/dictionary_coder.ts +23 -0
- package/src/util/dispatcher.test.ts +76 -0
- package/src/util/dispatcher.ts +78 -0
- package/src/util/dom.ts +135 -0
- package/src/util/evented.test.ts +231 -0
- package/src/util/evented.ts +178 -0
- package/src/util/find_pole_of_inaccessibility.test.ts +21 -0
- package/src/util/find_pole_of_inaccessibility.ts +130 -0
- package/src/util/geolocation_support.test.ts +43 -0
- package/src/util/geolocation_support.ts +23 -0
- package/src/util/global_worker_pool.ts +65 -0
- package/src/util/image.ts +150 -0
- package/src/util/image_request.test.ts +408 -0
- package/src/util/image_request.ts +246 -0
- package/src/util/intersection_tests.ts +206 -0
- package/src/util/is_char_in_unicode_block.test.ts +15 -0
- package/src/util/is_char_in_unicode_block.ts +345 -0
- package/src/util/offscreen_canvas_distorted.test.ts +13 -0
- package/src/util/offscreen_canvas_distorted.ts +39 -0
- package/src/util/offscreen_canvas_supported.ts +11 -0
- package/src/util/performance.ts +117 -0
- package/src/util/primitives.test.ts +140 -0
- package/src/util/primitives.ts +143 -0
- package/src/util/request_manager.ts +42 -0
- package/src/util/resolve_tokens.test.ts +45 -0
- package/src/util/resolve_tokens.ts +17 -0
- package/src/util/script_detection.test.ts +138 -0
- package/src/util/script_detection.ts +376 -0
- package/src/util/smart_wrap.test.ts +97 -0
- package/src/util/smart_wrap.ts +58 -0
- package/src/util/struct_array.test.ts +101 -0
- package/src/util/struct_array.ts +246 -0
- package/src/util/style.test.ts +34 -0
- package/src/util/style.ts +28 -0
- package/src/util/task_queue.test.ts +114 -0
- package/src/util/task_queue.ts +64 -0
- package/src/util/test/util.ts +185 -0
- package/src/util/throttle.test.ts +42 -0
- package/src/util/throttle.ts +28 -0
- package/src/util/throttled_invoker.ts +41 -0
- package/src/util/transferable_grid_index.test.ts +56 -0
- package/src/util/transferable_grid_index.ts +214 -0
- package/src/util/util.test.ts +414 -0
- package/src/util/util.ts +724 -0
- package/src/util/vectortile_to_geojson.ts +72 -0
- package/src/util/verticalize_punctuation.ts +110 -0
- package/src/util/web_worker.ts +16 -0
- package/src/util/web_worker_transfer.test.ts +153 -0
- package/src/util/web_worker_transfer.ts +254 -0
- package/src/util/webp_supported.ts +63 -0
- package/src/util/worker_pool.test.ts +43 -0
- package/src/util/worker_pool.ts +58 -0
- package/src/util/world_bounds.test.ts +59 -0
- package/src/util/world_bounds.ts +46 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
|
|
5
|
+
import {v8} from '@maplibre/maplibre-gl-style-spec';
|
|
6
|
+
|
|
7
|
+
function camelCase(str: string): string {
|
|
8
|
+
return str.replace(/-(.)/g, (_, x) => {
|
|
9
|
+
return x.toUpperCase();
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function pascalCase(str: string): string {
|
|
14
|
+
const almostCamelized = camelCase(str);
|
|
15
|
+
return almostCamelized[0].toUpperCase() + almostCamelized.slice(1);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function nativeType(property) {
|
|
19
|
+
switch (property.type) {
|
|
20
|
+
case 'boolean':
|
|
21
|
+
return 'boolean';
|
|
22
|
+
case 'number':
|
|
23
|
+
return 'number';
|
|
24
|
+
case 'string':
|
|
25
|
+
return 'string';
|
|
26
|
+
case 'enum':
|
|
27
|
+
return Object.keys(property.values).map(v => JSON.stringify(v)).join(' | ');
|
|
28
|
+
case 'color':
|
|
29
|
+
return 'Color';
|
|
30
|
+
case 'padding':
|
|
31
|
+
return 'Padding';
|
|
32
|
+
case 'variableAnchorOffsetCollection':
|
|
33
|
+
return 'VariableAnchorOffsetCollection';
|
|
34
|
+
case 'sprite':
|
|
35
|
+
return 'Sprite';
|
|
36
|
+
case 'formatted':
|
|
37
|
+
return 'Formatted';
|
|
38
|
+
case 'resolvedImage':
|
|
39
|
+
return 'ResolvedImage';
|
|
40
|
+
case 'array':
|
|
41
|
+
if (property.length) {
|
|
42
|
+
return `[${new Array(property.length).fill(nativeType({type: property.value})).join(', ')}]`;
|
|
43
|
+
} else {
|
|
44
|
+
return `Array<${nativeType({type: property.value, values: property.values})}>`;
|
|
45
|
+
}
|
|
46
|
+
default: throw new Error(`unknown type "${property.type}" for "${property.name}"`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function possiblyEvaluatedType(property) {
|
|
51
|
+
const propType = nativeType(property);
|
|
52
|
+
|
|
53
|
+
switch (property['property-type']) {
|
|
54
|
+
case 'color-ramp':
|
|
55
|
+
return 'ColorRampProperty';
|
|
56
|
+
case 'cross-faded':
|
|
57
|
+
return `CrossFaded<${propType}>`;
|
|
58
|
+
case 'cross-faded-data-driven':
|
|
59
|
+
return `PossiblyEvaluatedPropertyValue<CrossFaded<${propType}>>`;
|
|
60
|
+
case 'data-driven':
|
|
61
|
+
return `PossiblyEvaluatedPropertyValue<${propType}>`;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return propType;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function propertyType(property) {
|
|
68
|
+
switch (property['property-type']) {
|
|
69
|
+
case 'data-driven':
|
|
70
|
+
return `DataDrivenProperty<${nativeType(property)}>`;
|
|
71
|
+
case 'cross-faded':
|
|
72
|
+
return `CrossFadedProperty<${nativeType(property)}>`;
|
|
73
|
+
case 'cross-faded-data-driven':
|
|
74
|
+
return `CrossFadedDataDrivenProperty<${nativeType(property)}>`;
|
|
75
|
+
case 'color-ramp':
|
|
76
|
+
return 'ColorRampProperty';
|
|
77
|
+
case 'data-constant':
|
|
78
|
+
case 'constant':
|
|
79
|
+
return `DataConstantProperty<${nativeType(property)}>`;
|
|
80
|
+
default:
|
|
81
|
+
throw new Error(`unknown property-type "${property['property-type']}" for ${property.name}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function runtimeType(property) {
|
|
86
|
+
switch (property.type) {
|
|
87
|
+
case 'boolean':
|
|
88
|
+
return 'BooleanType';
|
|
89
|
+
case 'number':
|
|
90
|
+
return 'NumberType';
|
|
91
|
+
case 'string':
|
|
92
|
+
case 'enum':
|
|
93
|
+
return 'StringType';
|
|
94
|
+
case 'color':
|
|
95
|
+
return 'ColorType';
|
|
96
|
+
case 'padding':
|
|
97
|
+
return 'PaddingType';
|
|
98
|
+
case 'variableAnchorOffsetCollection':
|
|
99
|
+
return 'VariableAnchorOffsetCollectionType';
|
|
100
|
+
case 'sprite':
|
|
101
|
+
return 'SpriteType';
|
|
102
|
+
case 'formatted':
|
|
103
|
+
return 'FormattedType';
|
|
104
|
+
case 'Image':
|
|
105
|
+
return 'ImageType';
|
|
106
|
+
case 'array':
|
|
107
|
+
if (property.length) {
|
|
108
|
+
return `array(${runtimeType({type: property.value})}, ${property.length})`;
|
|
109
|
+
} else {
|
|
110
|
+
return `array(${runtimeType({type: property.value})})`;
|
|
111
|
+
}
|
|
112
|
+
default: throw new Error(`unknown type "${property.type}" for "${property.name}"`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function overrides(property) {
|
|
117
|
+
return `{ runtimeType: ${runtimeType(property)}, getOverride: (o) => o.${camelCase(property.name)}, hasOverride: (o) => !!o.${camelCase(property.name)} }`;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function propertyValue(property, type) {
|
|
121
|
+
const propertyAsSpec = `styleSpec["${type}_${property.layerType}"]["${property.name}"] as any as StylePropertySpecification`;
|
|
122
|
+
|
|
123
|
+
switch (property['property-type']) {
|
|
124
|
+
case 'data-driven':
|
|
125
|
+
if (property.overridable) {
|
|
126
|
+
return `new DataDrivenProperty(${propertyAsSpec}, ${overrides(property)})`;
|
|
127
|
+
} else {
|
|
128
|
+
return `new DataDrivenProperty(${propertyAsSpec})`;
|
|
129
|
+
}
|
|
130
|
+
case 'cross-faded':
|
|
131
|
+
return `new CrossFadedProperty(${propertyAsSpec})`;
|
|
132
|
+
case 'cross-faded-data-driven':
|
|
133
|
+
return `new CrossFadedDataDrivenProperty(${propertyAsSpec})`;
|
|
134
|
+
case 'color-ramp':
|
|
135
|
+
return `new ColorRampProperty(${propertyAsSpec})`;
|
|
136
|
+
case 'data-constant':
|
|
137
|
+
case 'constant':
|
|
138
|
+
return `new DataConstantProperty(${propertyAsSpec})`;
|
|
139
|
+
default:
|
|
140
|
+
throw new Error(`unknown property-type "${property['property-type']}" for ${property.name}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const layers = Object.keys(v8.layer.type.values).map((type) => {
|
|
145
|
+
const layoutProperties = Object.keys(v8[`layout_${type}`]).reduce((memo, name) => {
|
|
146
|
+
if (name !== 'visibility') {
|
|
147
|
+
v8[`layout_${type}`][name].name = name;
|
|
148
|
+
v8[`layout_${type}`][name].layerType = type;
|
|
149
|
+
memo.push(v8[`layout_${type}`][name]);
|
|
150
|
+
}
|
|
151
|
+
return memo;
|
|
152
|
+
}, []);
|
|
153
|
+
|
|
154
|
+
const paintProperties = Object.keys(v8[`paint_${type}`]).reduce((memo, name) => {
|
|
155
|
+
v8[`paint_${type}`][name].name = name;
|
|
156
|
+
v8[`paint_${type}`][name].layerType = type;
|
|
157
|
+
memo.push(v8[`paint_${type}`][name]);
|
|
158
|
+
return memo;
|
|
159
|
+
}, []);
|
|
160
|
+
|
|
161
|
+
return {type, layoutProperties, paintProperties};
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
function emitlayerProperties(locals) {
|
|
165
|
+
const output = [];
|
|
166
|
+
const layerType = pascalCase(locals.type);
|
|
167
|
+
const {
|
|
168
|
+
layoutProperties,
|
|
169
|
+
paintProperties
|
|
170
|
+
} = locals;
|
|
171
|
+
|
|
172
|
+
output.push(
|
|
173
|
+
`// This file is generated. Edit build/generate-style-code.ts, then run 'npm run codegen'.
|
|
174
|
+
/* eslint-disable */
|
|
175
|
+
|
|
176
|
+
import {latest as styleSpec} from '@maplibre/maplibre-gl-style-spec';
|
|
177
|
+
|
|
178
|
+
import {
|
|
179
|
+
Properties,
|
|
180
|
+
DataConstantProperty,
|
|
181
|
+
DataDrivenProperty,
|
|
182
|
+
CrossFadedDataDrivenProperty,
|
|
183
|
+
CrossFadedProperty,
|
|
184
|
+
ColorRampProperty,
|
|
185
|
+
PossiblyEvaluatedPropertyValue,
|
|
186
|
+
CrossFaded
|
|
187
|
+
} from '../properties';
|
|
188
|
+
|
|
189
|
+
import type {Color, Formatted, Padding, ResolvedImage, VariableAnchorOffsetCollection} from '@maplibre/maplibre-gl-style-spec';
|
|
190
|
+
import {StylePropertySpecification} from '@maplibre/maplibre-gl-style-spec';
|
|
191
|
+
`);
|
|
192
|
+
|
|
193
|
+
const overridables = paintProperties.filter(p => p.overridable);
|
|
194
|
+
if (overridables.length) {
|
|
195
|
+
const overridesArray = `import {
|
|
196
|
+
${overridables.reduce((imports, prop) => { imports.push(runtimeType(prop)); return imports; }, []).join(',\n ')}
|
|
197
|
+
} from '@maplibre/maplibre-gl-style-spec';
|
|
198
|
+
`;
|
|
199
|
+
output.push(overridesArray);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
if (layoutProperties.length) {
|
|
203
|
+
output.push(
|
|
204
|
+
`export type ${layerType}LayoutProps = {`);
|
|
205
|
+
|
|
206
|
+
for (const property of layoutProperties) {
|
|
207
|
+
output.push(
|
|
208
|
+
` "${property.name}": ${propertyType(property)},`);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
output.push(
|
|
212
|
+
`};
|
|
213
|
+
|
|
214
|
+
export type ${layerType}LayoutPropsPossiblyEvaluated = {`);
|
|
215
|
+
|
|
216
|
+
for (const property of layoutProperties) {
|
|
217
|
+
output.push(
|
|
218
|
+
` "${property.name}": ${possiblyEvaluatedType(property)},`);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
output.push(
|
|
222
|
+
`};
|
|
223
|
+
|
|
224
|
+
let layout: Properties<${layerType}LayoutProps>;
|
|
225
|
+
const getLayout = () => layout = layout || new Properties({`);
|
|
226
|
+
|
|
227
|
+
for (const property of layoutProperties) {
|
|
228
|
+
output.push(
|
|
229
|
+
` "${property.name}": ${propertyValue(property, 'layout')},`);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
output.push(
|
|
233
|
+
'});');
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
if (paintProperties.length) {
|
|
237
|
+
output.push(
|
|
238
|
+
`
|
|
239
|
+
export type ${layerType}PaintProps = {`);
|
|
240
|
+
|
|
241
|
+
for (const property of paintProperties) {
|
|
242
|
+
output.push(
|
|
243
|
+
` "${property.name}": ${propertyType(property)},`);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
output.push(
|
|
247
|
+
`};
|
|
248
|
+
|
|
249
|
+
export type ${layerType}PaintPropsPossiblyEvaluated = {`);
|
|
250
|
+
|
|
251
|
+
for (const property of paintProperties) {
|
|
252
|
+
output.push(
|
|
253
|
+
` "${property.name}": ${possiblyEvaluatedType(property)},`);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
output.push(
|
|
257
|
+
'};');
|
|
258
|
+
} else {
|
|
259
|
+
output.push(
|
|
260
|
+
`export type ${layerType}PaintProps = {};`);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
output.push(
|
|
264
|
+
`
|
|
265
|
+
let paint: Properties<${layerType}PaintProps>;
|
|
266
|
+
const getPaint = () => paint = paint || new Properties({`);
|
|
267
|
+
|
|
268
|
+
for (const property of paintProperties) {
|
|
269
|
+
output.push(
|
|
270
|
+
` "${property.name}": ${propertyValue(property, 'paint')},`);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
output.push(
|
|
274
|
+
`});
|
|
275
|
+
|
|
276
|
+
export default ({ get paint() { return getPaint() }${layoutProperties.length ? ', get layout() { return getLayout() }' : ''} });`);
|
|
277
|
+
|
|
278
|
+
return output.join('\n');
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
for (const layer of layers) {
|
|
282
|
+
fs.writeFileSync(`src/style/style_layer/${layer.type.replace('-', '_')}_style_layer_properties.g.ts`, emitlayerProperties(layer));
|
|
283
|
+
}
|
package/build/readme.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Build Scripts
|
|
2
|
+
|
|
3
|
+
This folder holds common build scripts accessed via the various `npm run` commands.
|
|
4
|
+
Codegen is executed when calling `npm install` in order to generate all artifacts needed for the build to pass
|
|
5
|
+
|
|
6
|
+
## Bundeling all the code
|
|
7
|
+
|
|
8
|
+
The bundling process can be split into several steps:
|
|
9
|
+
|
|
10
|
+
`npm run build-css`
|
|
11
|
+
This command will compile the css code and create the css file.
|
|
12
|
+
|
|
13
|
+
`npm run build-prod` and `npm run build-dev`
|
|
14
|
+
These commands will use rollup to bundle the code. This is where the magic happens and uses some files in this folder.
|
|
15
|
+
|
|
16
|
+
`banner.ts` is used to create a banner at the beginning of the output file
|
|
17
|
+
|
|
18
|
+
`rollup_plugins.ts` is used to define common plugins for rollup configurations
|
|
19
|
+
|
|
20
|
+
`rollup_plugin_minify_style_spec.ts` is used to specify the plugin used in style spec bundeling
|
|
21
|
+
|
|
22
|
+
In the `rollup` folder there are some files that are used as linking files as they link to other files for rollup to pick when bundling.
|
|
23
|
+
|
|
24
|
+
Rollup is generating 3 files throughout the process of bundling:
|
|
25
|
+
|
|
26
|
+
`index.ts` a file containing all the code that will run in the main thread.
|
|
27
|
+
|
|
28
|
+
`shared.ts` a file containing all the code shared between the main and worker code.
|
|
29
|
+
|
|
30
|
+
`worker.ts` a file containing all the code the will run in the worker threads.
|
|
31
|
+
|
|
32
|
+
These 3 files are then referenced and used by the `bundle_prelude.js` file. It allows loading the web worker code automatically in web workers without any extra effort from someone who would like to use the library, i.e. it simply works.
|
|
33
|
+
|
|
34
|
+
<hr>
|
|
35
|
+
|
|
36
|
+
### `npm run codegen`
|
|
37
|
+
|
|
38
|
+
The `codegen` command runs the following three scripts, to update the corresponding code files based on the `v8.json` style source, and other data files. Contributors should run this command manually when the underlying style data is modified. The generated code files are then committed to the repo.
|
|
39
|
+
|
|
40
|
+
#### generate-struct-arrays.ts
|
|
41
|
+
|
|
42
|
+
Generates `data/array_types.ts`, which consists of:
|
|
43
|
+
|
|
44
|
+
- `StructArrayLayout_*` subclasses, one for each underlying memory layout
|
|
45
|
+
- Named exports mapping each conceptual array type (e.g., `CircleLayoutArray`) to its corresponding `StructArrayLayout` class
|
|
46
|
+
- Specific named `StructArray` subclasses, when type-specific struct accessors are needed (e.g., `CollisionBoxArray`)
|
|
47
|
+
|
|
48
|
+
#### generate-style-code.ts
|
|
49
|
+
|
|
50
|
+
Generates the various `style/style_layer/[layer type]_style_layer_properties.ts` code files based on the content of `v8.json`. These files provide the type signatures for the paint and layout properties for each type of style layer.
|
|
51
|
+
|
|
52
|
+
<hr>
|
|
53
|
+
|
|
54
|
+
### Generate Release Nodes
|
|
55
|
+
|
|
56
|
+
`release-notes.js` Used to generate release notes when releasing a new version
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
import semver from 'semver';
|
|
5
|
+
|
|
6
|
+
const changelogPath = 'CHANGELOG.md';
|
|
7
|
+
const changelog = fs.readFileSync(changelogPath, 'utf8');
|
|
8
|
+
|
|
9
|
+
/*
|
|
10
|
+
Parse the raw changelog text and split it into individual releases.
|
|
11
|
+
|
|
12
|
+
This regular expression:
|
|
13
|
+
- Matches lines starting with "## x.x.x".
|
|
14
|
+
- Groups the version number.
|
|
15
|
+
- Skips the (optional) release date.
|
|
16
|
+
- Groups the changelog content.
|
|
17
|
+
- Ends when another "## x.x.x" is found.
|
|
18
|
+
*/
|
|
19
|
+
const regex = /^## (\d+\.\d+\.\d+.*?)\n(.+?)(?=\n^## \d+\.\d+\.\d+.*?\n)/gms;
|
|
20
|
+
|
|
21
|
+
let releaseNotes = [];
|
|
22
|
+
let match;
|
|
23
|
+
// eslint-disable-next-line no-cond-assign
|
|
24
|
+
while (match = regex.exec(changelog)) {
|
|
25
|
+
releaseNotes.push({
|
|
26
|
+
'version': match[1],
|
|
27
|
+
'changelog': match[2].trim(),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const latest = releaseNotes[0];
|
|
32
|
+
const previous = releaseNotes[1];
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
// Print the release notes template.
|
|
36
|
+
|
|
37
|
+
const templatedReleaseNotes = `https://github.com/maplibre/maplibre-gl-js
|
|
38
|
+
[Changes](https://github.com/maplibre/maplibre-gl-js/compare/v${previous.version}...v${latest.version}) since [MapLibre GL JS v${previous.version}](https://github.com/maplibre/releases/tag/v${previous.version}):
|
|
39
|
+
|
|
40
|
+
${latest.changelog}
|
|
41
|
+
|
|
42
|
+
${semver.prerelease(latest.version) ? 'Pre-release version' : ''}`;
|
|
43
|
+
|
|
44
|
+
// eslint-disable-next-line eol-last
|
|
45
|
+
process.stdout.write(templatedReleaseNotes.trimEnd());
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
|
|
3
|
+
var maplibregl = {};
|
|
4
|
+
var modules = {};
|
|
5
|
+
function define(moduleName, _dependencies, moduleFactory) {
|
|
6
|
+
modules[moduleName] = moduleFactory;
|
|
7
|
+
|
|
8
|
+
// to get the list of modules see generated dist/maplibre-gl-dev.js file (look for `define(` calls)
|
|
9
|
+
if (moduleName !== 'index') {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// we assume that when an index module is initializing then other modules are loaded already
|
|
14
|
+
var workerBundleString = 'var sharedModule = {}; (' + modules.shared + ')(sharedModule); (' + modules.worker + ')(sharedModule);'
|
|
15
|
+
|
|
16
|
+
var sharedModule = {};
|
|
17
|
+
// the order of arguments of a module factory depends on rollup (it decides who is whose dependency)
|
|
18
|
+
// to check the correct order, see dist/maplibre-gl-dev.js file (look for `define(` calls)
|
|
19
|
+
// we assume that for our 3 chunks it will generate 3 modules and their order is predefined like the following
|
|
20
|
+
modules.shared(sharedModule);
|
|
21
|
+
modules.index(maplibregl, sharedModule);
|
|
22
|
+
|
|
23
|
+
if (typeof window !== 'undefined') {
|
|
24
|
+
maplibregl.setWorkerUrl(window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' })));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return maplibregl;
|
|
28
|
+
};
|
|
29
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Our custom intro provides a specialized "define()" function, called by the
|
|
3
|
+
// AMD modules below, that sets up the worker blob URL and then executes the
|
|
4
|
+
// main module, storing its exported value as 'maplibregl'
|
|
5
|
+
|
|
6
|
+
// The three "chunks" imported here are produced by a first Rollup pass,
|
|
7
|
+
// which outputs them as AMD modules.
|
|
8
|
+
|
|
9
|
+
// Shared dependencies
|
|
10
|
+
import '../../staging/maplibregl/shared';
|
|
11
|
+
|
|
12
|
+
// Worker and its unique dependencies
|
|
13
|
+
// When this wrapper function is passed to our custom define() in build/rollup/bundle_prelude.js,
|
|
14
|
+
// it gets stringified, together with the shared wrapper (using
|
|
15
|
+
// Function.toString()), and the resulting string of code is made into a
|
|
16
|
+
// Blob URL that gets used by the main module to create the web workers.
|
|
17
|
+
import '../../staging/maplibregl/worker';
|
|
18
|
+
|
|
19
|
+
// Main module and its dependencies
|
|
20
|
+
import '../../staging/maplibregl/index';
|
|
21
|
+
|
|
22
|
+
export default maplibregl;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
|
|
2
|
+
import typescript from '@rollup/plugin-typescript';
|
|
3
|
+
import resolve from '@rollup/plugin-node-resolve';
|
|
4
|
+
import replace from '@rollup/plugin-replace';
|
|
5
|
+
import commonjs from '@rollup/plugin-commonjs';
|
|
6
|
+
import terser from '@rollup/plugin-terser';
|
|
7
|
+
import strip from '@rollup/plugin-strip';
|
|
8
|
+
import {Plugin} from 'rollup';
|
|
9
|
+
import json from '@rollup/plugin-json';
|
|
10
|
+
|
|
11
|
+
// Common set of plugins/transformations shared across different rollup
|
|
12
|
+
// builds (main maplibre bundle, style-spec package, benchmarks bundle)
|
|
13
|
+
|
|
14
|
+
export const nodeResolve = resolve({
|
|
15
|
+
browser: true,
|
|
16
|
+
preferBuiltins: false
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export const plugins = (production: boolean, minified: boolean): Plugin[] => [
|
|
20
|
+
json(),
|
|
21
|
+
// https://github.com/zaach/jison/issues/351
|
|
22
|
+
replace({
|
|
23
|
+
preventAssignment: true,
|
|
24
|
+
include: /\/jsonlint-lines-primitives\/lib\/jsonlint.js/,
|
|
25
|
+
delimiters: ['', ''],
|
|
26
|
+
values: {
|
|
27
|
+
'_token_stack:': ''
|
|
28
|
+
}
|
|
29
|
+
}),
|
|
30
|
+
production && strip({
|
|
31
|
+
sourceMap: true,
|
|
32
|
+
functions: ['PerformanceUtils.*']
|
|
33
|
+
}),
|
|
34
|
+
minified && terser({
|
|
35
|
+
compress: {
|
|
36
|
+
// eslint-disable-next-line camelcase
|
|
37
|
+
pure_getters: true,
|
|
38
|
+
passes: 3
|
|
39
|
+
},
|
|
40
|
+
sourceMap: true
|
|
41
|
+
}),
|
|
42
|
+
nodeResolve,
|
|
43
|
+
typescript(),
|
|
44
|
+
commonjs({
|
|
45
|
+
// global keyword handling causes Webpack compatibility issues, so we disabled it:
|
|
46
|
+
// https://github.com/mapbox/mapbox-gl-js/pull/6956
|
|
47
|
+
ignoreGlobal: true
|
|
48
|
+
})
|
|
49
|
+
].filter(Boolean) as Plugin[];
|
|
50
|
+
|
|
51
|
+
export const watchStagingPlugin: Plugin = {
|
|
52
|
+
name: 'watch-external',
|
|
53
|
+
buildStart() {
|
|
54
|
+
this.addWatchFile('staging/maplibregl/index.js');
|
|
55
|
+
this.addWatchFile('staging/maplibregl/shared.js');
|
|
56
|
+
this.addWatchFile('staging/maplibregl/worker.js');
|
|
57
|
+
}
|
|
58
|
+
};
|
package/dist/LICENSE.txt
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
Copyright (c) 2023, MapLibre contributors
|
|
2
|
+
|
|
3
|
+
All rights reserved.
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without modification,
|
|
6
|
+
are permitted provided that the following conditions are met:
|
|
7
|
+
|
|
8
|
+
* Redistributions of source code must retain the above copyright notice,
|
|
9
|
+
this list of conditions and the following disclaimer.
|
|
10
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
11
|
+
this list of conditions and the following disclaimer in the documentation
|
|
12
|
+
and/or other materials provided with the distribution.
|
|
13
|
+
* Neither the name of MapLibre GL JS nor the names of its contributors
|
|
14
|
+
may be used to endorse or promote products derived from this software
|
|
15
|
+
without specific prior written permission.
|
|
16
|
+
|
|
17
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
18
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
19
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
20
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
21
|
+
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
22
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
23
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
24
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
25
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
26
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
27
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
-------------------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
Contains code from mapbox-gl-js v1.13 and earlier
|
|
33
|
+
|
|
34
|
+
Version v1.13 of mapbox-gl-js and earlier are licensed under a BSD-3-Clause license
|
|
35
|
+
|
|
36
|
+
Copyright (c) 2020, Mapbox
|
|
37
|
+
Redistribution and use in source and binary forms, with or without modification,
|
|
38
|
+
are permitted provided that the following conditions are met:
|
|
39
|
+
|
|
40
|
+
* Redistributions of source code must retain the above copyright notice,
|
|
41
|
+
this list of conditions and the following disclaimer.
|
|
42
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
43
|
+
this list of conditions and the following disclaimer in the documentation
|
|
44
|
+
and/or other materials provided with the distribution.
|
|
45
|
+
* Neither the name of Mapbox GL JS nor the names of its contributors
|
|
46
|
+
may be used to endorse or promote products derived from this software
|
|
47
|
+
without specific prior written permission.
|
|
48
|
+
|
|
49
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
50
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
51
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
52
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
53
|
+
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
54
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
55
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
56
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
57
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
58
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
59
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
-------------------------------------------------------------------------------
|
|
63
|
+
|
|
64
|
+
Contains code from glfx.js
|
|
65
|
+
|
|
66
|
+
Copyright (C) 2011 by Evan Wallace
|
|
67
|
+
|
|
68
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
69
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
70
|
+
in the Software without restriction, including without limitation the rights
|
|
71
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
72
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
73
|
+
furnished to do so, subject to the following conditions:
|
|
74
|
+
|
|
75
|
+
The above copyright notice and this permission notice shall be included in
|
|
76
|
+
all copies or substantial portions of the Software.
|
|
77
|
+
|
|
78
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
79
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
80
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
81
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
82
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
83
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
84
|
+
THE SOFTWARE.
|
|
85
|
+
|
|
86
|
+
--------------------------------------------------------------------------------
|
|
87
|
+
|
|
88
|
+
Contains a portion of d3-color https://github.com/d3/d3-color
|
|
89
|
+
|
|
90
|
+
Copyright 2010-2016 Mike Bostock
|
|
91
|
+
All rights reserved.
|
|
92
|
+
|
|
93
|
+
Redistribution and use in source and binary forms, with or without modification,
|
|
94
|
+
are permitted provided that the following conditions are met:
|
|
95
|
+
|
|
96
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
97
|
+
list of conditions and the following disclaimer.
|
|
98
|
+
|
|
99
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
100
|
+
this list of conditions and the following disclaimer in the documentation
|
|
101
|
+
and/or other materials provided with the distribution.
|
|
102
|
+
|
|
103
|
+
* Neither the name of the author nor the names of contributors may be used to
|
|
104
|
+
endorse or promote products derived from this software without specific prior
|
|
105
|
+
written permission.
|
|
106
|
+
|
|
107
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
108
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
109
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
110
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
111
|
+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
112
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
113
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
114
|
+
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
115
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
116
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|