@mapgis/mapbox-gl 16.0.1 → 16.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mapbox-gl.js +3 -3
- package/dist/mapbox-gl.js.map +1 -1
- package/package.json +1 -1
- package/.flowconfig +0 -61
- package/LICENSE.txt +0 -84
- package/README.md +0 -34
- package/build/banner.js +0 -4
- package/build/check-bundle-size.js +0 -140
- package/build/generate-access-token-script.js +0 -11
- package/build/generate-flow-typed-style-spec.js +0 -188
- package/build/generate-release-list.js +0 -21
- package/build/generate-struct-arrays.js +0 -237
- package/build/generate-style-code.js +0 -159
- package/build/mapbox-gl.js.flow +0 -3
- package/build/print-release-url.js +0 -6
- package/build/rollup_plugin_minify_style_spec.js +0 -20
- package/build/rollup_plugins.js +0 -80
- package/build/run-node +0 -3
- package/build/run-tap +0 -8
- package/build/test/build-tape.js +0 -19
- package/flow-typed/gl.js +0 -5
- package/flow-typed/jsdom.js +0 -18
- package/flow-typed/mapbox-gl-supported.js +0 -9
- package/flow-typed/mapbox-unitbezier.js +0 -14
- package/flow-typed/offscreen-canvas.js +0 -9
- package/flow-typed/pbf.js +0 -25
- package/flow-typed/point-geometry.js +0 -44
- package/flow-typed/potpack.js +0 -12
- package/flow-typed/sinon.js +0 -28
- package/flow-typed/vector-tile.js +0 -41
- package/src/css/mapbox-gl.css +0 -798
- package/src/css/svg/mapboxgl-ctrl-attrib.svg +0 -3
- package/src/css/svg/mapboxgl-ctrl-compass.svg +0 -4
- package/src/css/svg/mapboxgl-ctrl-fullscreen.svg +0 -3
- package/src/css/svg/mapboxgl-ctrl-geolocate.svg +0 -5
- package/src/css/svg/mapboxgl-ctrl-logo.svg +0 -20
- package/src/css/svg/mapboxgl-ctrl-shrink.svg +0 -3
- package/src/css/svg/mapboxgl-ctrl-zoom-in.svg +0 -3
- package/src/css/svg/mapboxgl-ctrl-zoom-out.svg +0 -3
- package/src/data/array_types.js +0 -1095
- package/src/data/bucket/circle_attributes.js +0 -9
- package/src/data/bucket/circle_bucket.js +0 -204
- package/src/data/bucket/fill_attributes.js +0 -9
- package/src/data/bucket/fill_bucket.js +0 -233
- package/src/data/bucket/fill_extrusion_attributes.js +0 -10
- package/src/data/bucket/fill_extrusion_bucket.js +0 -289
- package/src/data/bucket/heatmap_bucket.js +0 -17
- package/src/data/bucket/line_attributes.js +0 -10
- package/src/data/bucket/line_bucket.js +0 -556
- package/src/data/bucket/pattern_attributes.js +0 -10
- package/src/data/bucket/pattern_bucket_features.js +0 -60
- package/src/data/bucket/symbol_attributes.js +0 -117
- package/src/data/bucket/symbol_bucket.js +0 -972
- package/src/data/bucket.js +0 -123
- package/src/data/dem_data.js +0 -125
- package/src/data/extent.js +0 -18
- package/src/data/feature_index.js +0 -321
- package/src/data/feature_position_map.js +0 -125
- package/src/data/index_array_type.js +0 -16
- package/src/data/load_geometry.js +0 -48
- package/src/data/pos_attributes.js +0 -6
- package/src/data/program_configuration.js +0 -687
- package/src/data/raster_bounds_attributes.js +0 -7
- package/src/data/segment.js +0 -76
- package/src/geo/edge_insets.js +0 -102
- package/src/geo/lng_lat.js +0 -165
- package/src/geo/lng_lat_bounds.js +0 -267
- package/src/geo/mercator_coordinate.js +0 -153
- package/src/geo/transform.js +0 -864
- package/src/gl/color_mode.js +0 -34
- package/src/gl/context.js +0 -298
- package/src/gl/cull_face_mode.js +0 -26
- package/src/gl/depth_mode.js +0 -29
- package/src/gl/framebuffer.js +0 -44
- package/src/gl/index_buffer.js +0 -55
- package/src/gl/stencil_mode.js +0 -30
- package/src/gl/types.js +0 -84
- package/src/gl/value.js +0 -520
- package/src/gl/vertex_buffer.js +0 -119
- package/src/index.js +0 -201
- package/src/render/draw_background.js +0 -57
- package/src/render/draw_circle.js +0 -113
- package/src/render/draw_collision_debug.js +0 -49
- package/src/render/draw_custom.js +0 -49
- package/src/render/draw_debug.js +0 -127
- package/src/render/draw_fill.js +0 -126
- package/src/render/draw_fill_extrusion.js +0 -96
- package/src/render/draw_heatmap.js +0 -140
- package/src/render/draw_hillshade.js +0 -108
- package/src/render/draw_line.js +0 -98
- package/src/render/draw_raster.js +0 -125
- package/src/render/draw_symbol.js +0 -394
- package/src/render/glyph_atlas.js +0 -71
- package/src/render/glyph_manager.js +0 -182
- package/src/render/image_atlas.js +0 -149
- package/src/render/image_manager.js +0 -306
- package/src/render/line_atlas.js +0 -210
- package/src/render/painter.js +0 -653
- package/src/render/program/background_program.js +0 -103
- package/src/render/program/circle_program.js +0 -69
- package/src/render/program/clipping_mask_program.js +0 -20
- package/src/render/program/collision_program.js +0 -49
- package/src/render/program/debug_program.js +0 -35
- package/src/render/program/fill_extrusion_program.js +0 -122
- package/src/render/program/fill_program.js +0 -126
- package/src/render/program/heatmap_program.js +0 -83
- package/src/render/program/hillshade_program.js +0 -122
- package/src/render/program/line_program.js +0 -207
- package/src/render/program/pattern.js +0 -102
- package/src/render/program/program_uniforms.js +0 -42
- package/src/render/program/raster_program.js +0 -92
- package/src/render/program/symbol_program.js +0 -224
- package/src/render/program.js +0 -168
- package/src/render/texture.js +0 -122
- package/src/render/uniform_binding.js +0 -147
- package/src/render/vertex_array_object.js +0 -163
- package/src/shaders/README.md +0 -42
- package/src/shaders/_prelude.fragment.glsl +0 -17
- package/src/shaders/_prelude.vertex.glsl +0 -73
- package/src/shaders/background.fragment.glsl +0 -10
- package/src/shaders/background.vertex.glsl +0 -7
- package/src/shaders/background_pattern.fragment.glsl +0 -28
- package/src/shaders/background_pattern.vertex.glsl +0 -20
- package/src/shaders/circle.fragment.glsl +0 -39
- package/src/shaders/circle.vertex.glsl +0 -64
- package/src/shaders/clipping_mask.fragment.glsl +0 -3
- package/src/shaders/clipping_mask.vertex.glsl +0 -7
- package/src/shaders/collision_box.fragment.glsl +0 -21
- package/src/shaders/collision_box.vertex.glsl +0 -27
- package/src/shaders/collision_circle.fragment.glsl +0 -34
- package/src/shaders/collision_circle.vertex.glsl +0 -36
- package/src/shaders/debug.fragment.glsl +0 -9
- package/src/shaders/debug.vertex.glsl +0 -12
- package/src/shaders/encode_attribute.js +0 -17
- package/src/shaders/fill.fragment.glsl +0 -13
- package/src/shaders/fill.vertex.glsl +0 -13
- package/src/shaders/fill_extrusion.fragment.glsl +0 -9
- package/src/shaders/fill_extrusion.vertex.glsl +0 -66
- package/src/shaders/fill_extrusion_pattern.fragment.glsl +0 -45
- package/src/shaders/fill_extrusion_pattern.vertex.glsl +0 -79
- package/src/shaders/fill_outline.fragment.glsl +0 -17
- package/src/shaders/fill_outline.vertex.glsl +0 -17
- package/src/shaders/fill_outline_pattern.fragment.glsl +0 -43
- package/src/shaders/fill_outline_pattern.vertex.glsl +0 -44
- package/src/shaders/fill_pattern.fragment.glsl +0 -36
- package/src/shaders/fill_pattern.vertex.glsl +0 -39
- package/src/shaders/heatmap.fragment.glsl +0 -22
- package/src/shaders/heatmap.vertex.glsl +0 -54
- package/src/shaders/heatmap_texture.fragment.glsl +0 -14
- package/src/shaders/heatmap_texture.vertex.glsl +0 -11
- package/src/shaders/hillshade.fragment.glsl +0 -52
- package/src/shaders/hillshade.vertex.glsl +0 -11
- package/src/shaders/hillshade_prepare.fragment.glsl +0 -74
- package/src/shaders/hillshade_prepare.vertex.glsl +0 -15
- package/src/shaders/index.js +0 -20
- package/src/shaders/line.fragment.glsl +0 -30
- package/src/shaders/line.vertex.glsl +0 -85
- package/src/shaders/line_gradient.fragment.glsl +0 -34
- package/src/shaders/line_gradient.vertex.glsl +0 -87
- package/src/shaders/line_pattern.fragment.glsl +0 -74
- package/src/shaders/line_pattern.vertex.glsl +0 -99
- package/src/shaders/line_sdf.fragment.glsl +0 -45
- package/src/shaders/line_sdf.vertex.glsl +0 -98
- package/src/shaders/raster.fragment.glsl +0 -52
- package/src/shaders/raster.vertex.glsl +0 -21
- package/src/shaders/shaders.js +0 -180
- package/src/shaders/symbol_icon.fragment.glsl +0 -17
- package/src/shaders/symbol_icon.vertex.glsl +0 -94
- package/src/shaders/symbol_sdf.fragment.glsl +0 -52
- package/src/shaders/symbol_sdf.vertex.glsl +0 -115
- package/src/shaders/symbol_text_and_icon.fragment.glsl +0 -68
- package/src/shaders/symbol_text_and_icon.vertex.glsl +0 -116
- package/src/source/canvas_source.js +0 -238
- package/src/source/geojson_helper.js +0 -92
- package/src/source/geojson_source.js +0 -374
- package/src/source/geojson_worker_source.js +0 -357
- package/src/source/geojson_wrapper.js +0 -94
- package/src/source/image_source.js +0 -307
- package/src/source/load_tilejson.js +0 -39
- package/src/source/mbtiles_source.js +0 -115
- package/src/source/offline_database.js +0 -61
- package/src/source/offline_database_root.js +0 -62
- package/src/source/pixels_to_tile_units.js +0 -21
- package/src/source/query_features.js +0 -208
- package/src/source/raster_dem_tile_source.js +0 -138
- package/src/source/raster_dem_tile_worker_source.js +0 -62
- package/src/source/raster_tile_offline_source.js +0 -136
- package/src/source/raster_tile_source.js +0 -177
- package/src/source/rtl_text_plugin.js +0 -138
- package/src/source/source.js +0 -137
- package/src/source/source_cache.js +0 -957
- package/src/source/source_state.js +0 -159
- package/src/source/tile.js +0 -465
- package/src/source/tile_bounds.js +0 -38
- package/src/source/tile_cache.js +0 -212
- package/src/source/tile_id.js +0 -402
- package/src/source/vector_tile_source.js +0 -192
- package/src/source/vector_tile_worker_source.js +0 -216
- package/src/source/video_source.js +0 -203
- package/src/source/worker.js +0 -237
- package/src/source/worker_source.js +0 -106
- package/src/source/worker_tile.js +0 -224
- package/src/style/create_style_layer.js +0 -36
- package/src/style/evaluation_parameters.js +0 -62
- package/src/style/light.js +0 -130
- package/src/style/load_glyph_range.js +0 -38
- package/src/style/load_sprite.js +0 -67
- package/src/style/parse_glyph_pbf.js +0 -44
- package/src/style/pauseable_placement.js +0 -132
- package/src/style/properties.js +0 -753
- package/src/style/query_utils.js +0 -43
- package/src/style/style.js +0 -1361
- package/src/style/style_glyph.js +0 -17
- package/src/style/style_image.js +0 -137
- package/src/style/style_layer/background_style_layer.js +0 -21
- package/src/style/style_layer/background_style_layer_properties.js +0 -40
- package/src/style/style_layer/circle_style_layer.js +0 -98
- package/src/style/style_layer/circle_style_layer_properties.js +0 -63
- package/src/style/style_layer/custom_style_layer.js +0 -223
- package/src/style/style_layer/fill_extrusion_style_layer.js +0 -224
- package/src/style/style_layer/fill_extrusion_style_layer_properties.js +0 -50
- package/src/style/style_layer/fill_style_layer.js +0 -67
- package/src/style/style_layer/fill_style_layer_properties.js +0 -55
- package/src/style/style_layer/heatmap_style_layer.js +0 -69
- package/src/style/style_layer/heatmap_style_layer_properties.js +0 -44
- package/src/style/style_layer/hillshade_style_layer.js +0 -25
- package/src/style/style_layer/hillshade_style_layer_properties.js +0 -46
- package/src/style/style_layer/layer_properties.js.ejs +0 -69
- package/src/style/style_layer/line_style_layer.js +0 -151
- package/src/style/style_layer/line_style_layer_properties.js +0 -71
- package/src/style/style_layer/raster_style_layer.js +0 -21
- package/src/style/style_layer/raster_style_layer_properties.js +0 -50
- package/src/style/style_layer/symbol_style_layer.js +0 -190
- package/src/style/style_layer/symbol_style_layer_properties.js +0 -153
- package/src/style/style_layer/typed_style_layer.js +0 -17
- package/src/style/style_layer.js +0 -281
- package/src/style/style_layer_index.js +0 -80
- package/src/style/validate_style.js +0 -42
- package/src/style/zoom_history.js +0 -44
- package/src/style-spec/.eslintrc +0 -5
- package/src/style-spec/CHANGELOG.md +0 -438
- package/src/style-spec/README.md +0 -59
- package/src/style-spec/bin/gl-style-composite +0 -9
- package/src/style-spec/bin/gl-style-format +0 -22
- package/src/style-spec/bin/gl-style-migrate +0 -9
- package/src/style-spec/bin/gl-style-validate +0 -50
- package/src/style-spec/composite.js +0 -50
- package/src/style-spec/declass.js +0 -42
- package/src/style-spec/deref.js +0 -52
- package/src/style-spec/diff.js +0 -393
- package/src/style-spec/dist/.gitkeep +0 -0
- package/src/style-spec/empty.js +0 -29
- package/src/style-spec/error/parsing_error.js +0 -16
- package/src/style-spec/error/validation_error.js +0 -18
- package/src/style-spec/expression/compound_expression.js +0 -162
- package/src/style-spec/expression/definitions/assertion.js +0 -130
- package/src/style-spec/expression/definitions/at.js +0 -70
- package/src/style-spec/expression/definitions/case.js +0 -85
- package/src/style-spec/expression/definitions/coalesce.js +0 -93
- package/src/style-spec/expression/definitions/coercion.js +0 -133
- package/src/style-spec/expression/definitions/collator.js +0 -78
- package/src/style-spec/expression/definitions/comparison.js +0 -184
- package/src/style-spec/expression/definitions/format.js +0 -144
- package/src/style-spec/expression/definitions/format_section_override.js +0 -54
- package/src/style-spec/expression/definitions/image.js +0 -52
- package/src/style-spec/expression/definitions/in.js +0 -92
- package/src/style-spec/expression/definitions/index.js +0 -561
- package/src/style-spec/expression/definitions/interpolate.js +0 -267
- package/src/style-spec/expression/definitions/length.js +0 -61
- package/src/style-spec/expression/definitions/let.js +0 -72
- package/src/style-spec/expression/definitions/literal.js +0 -77
- package/src/style-spec/expression/definitions/match.js +0 -158
- package/src/style-spec/expression/definitions/number_format.js +0 -142
- package/src/style-spec/expression/definitions/step.js +0 -120
- package/src/style-spec/expression/definitions/var.js +0 -46
- package/src/style-spec/expression/definitions/within.js +0 -333
- package/src/style-spec/expression/evaluation_context.js +0 -59
- package/src/style-spec/expression/expression.js +0 -27
- package/src/style-spec/expression/index.js +0 -392
- package/src/style-spec/expression/is_constant.js +0 -59
- package/src/style-spec/expression/parsing_context.js +0 -233
- package/src/style-spec/expression/parsing_error.js +0 -13
- package/src/style-spec/expression/runtime_error.js +0 -17
- package/src/style-spec/expression/scope.js +0 -36
- package/src/style-spec/expression/stops.js +0 -39
- package/src/style-spec/expression/types/collator.js +0 -61
- package/src/style-spec/expression/types/formatted.js +0 -73
- package/src/style-spec/expression/types/resolved_image.js +0 -29
- package/src/style-spec/expression/types.js +0 -106
- package/src/style-spec/expression/values.js +0 -123
- package/src/style-spec/feature_filter/README.md +0 -55
- package/src/style-spec/feature_filter/convert.js +0 -208
- package/src/style-spec/feature_filter/index.js +0 -165
- package/src/style-spec/format.js +0 -51
- package/src/style-spec/function/convert.js +0 -254
- package/src/style-spec/function/index.js +0 -262
- package/src/style-spec/group_by_layout.js +0 -75
- package/src/style-spec/migrate/expressions.js +0 -39
- package/src/style-spec/migrate/v8.js +0 -203
- package/src/style-spec/migrate/v9.js +0 -26
- package/src/style-spec/migrate.js +0 -36
- package/src/style-spec/package.json +0 -41
- package/src/style-spec/read_style.js +0 -14
- package/src/style-spec/reference/latest.js +0 -3
- package/src/style-spec/reference/v8.json +0 -5808
- package/src/style-spec/rollup.config.js +0 -45
- package/src/style-spec/style-spec.js +0 -122
- package/src/style-spec/types.js +0 -438
- package/src/style-spec/util/color.js +0 -95
- package/src/style-spec/util/color_spaces.js +0 -139
- package/src/style-spec/util/deep_equal.js +0 -28
- package/src/style-spec/util/extend.js +0 -10
- package/src/style-spec/util/get_type.js +0 -17
- package/src/style-spec/util/interpolate.js +0 -22
- package/src/style-spec/util/properties.js +0 -15
- package/src/style-spec/util/ref_properties.js +0 -2
- package/src/style-spec/util/result.js +0 -19
- package/src/style-spec/util/unbundle_jsonlint.js +0 -24
- package/src/style-spec/validate/latest.js +0 -11
- package/src/style-spec/validate/validate.js +0 -75
- package/src/style-spec/validate/validate_array.js +0 -52
- package/src/style-spec/validate/validate_boolean.js +0 -15
- package/src/style-spec/validate/validate_color.js +0 -20
- package/src/style-spec/validate/validate_constants.js +0 -13
- package/src/style-spec/validate/validate_enum.js +0 -21
- package/src/style-spec/validate/validate_expression.js +0 -43
- package/src/style-spec/validate/validate_filter.js +0 -111
- package/src/style-spec/validate/validate_formatted.js +0 -11
- package/src/style-spec/validate/validate_function.js +0 -207
- package/src/style-spec/validate/validate_glyphs_url.js +0 -21
- package/src/style-spec/validate/validate_image.js +0 -11
- package/src/style-spec/validate/validate_layer.js +0 -134
- package/src/style-spec/validate/validate_layout_property.js +0 -6
- package/src/style-spec/validate/validate_light.js +0 -47
- package/src/style-spec/validate/validate_number.js +0 -29
- package/src/style-spec/validate/validate_object.js +0 -61
- package/src/style-spec/validate/validate_paint_property.js +0 -6
- package/src/style-spec/validate/validate_property.js +0 -64
- package/src/style-spec/validate/validate_source.js +0 -111
- package/src/style-spec/validate/validate_string.js +0 -15
- package/src/style-spec/validate_mapbox_api_supported.js +0 -171
- package/src/style-spec/validate_style.js +0 -39
- package/src/style-spec/validate_style.min.js +0 -78
- package/src/style-spec/visit.js +0 -77
- package/src/symbol/anchor.js +0 -26
- package/src/symbol/check_max_angle.js +0 -81
- package/src/symbol/clip_line.js +0 -71
- package/src/symbol/collision_feature.js +0 -217
- package/src/symbol/collision_index.js +0 -372
- package/src/symbol/cross_tile_symbol_index.js +0 -301
- package/src/symbol/get_anchors.js +0 -167
- package/src/symbol/grid_index.js +0 -335
- package/src/symbol/mergelines.js +0 -82
- package/src/symbol/one_em.js +0 -4
- package/src/symbol/opacity_state.js +0 -27
- package/src/symbol/placement.js +0 -1062
- package/src/symbol/projection.js +0 -450
- package/src/symbol/quads.js +0 -334
- package/src/symbol/shaping.js +0 -816
- package/src/symbol/symbol_layout.js +0 -772
- package/src/symbol/symbol_size.js +0 -113
- package/src/symbol/transform_text.js +0 -29
- package/src/types/callback.js +0 -17
- package/src/types/cancelable.js +0 -3
- package/src/types/tilejson.js +0 -17
- package/src/types/transferable.js +0 -3
- package/src/types/window.js +0 -172
- package/src/ui/anchor.js +0 -32
- package/src/ui/bind_handlers.js +0 -202
- package/src/ui/camera.js +0 -1152
- package/src/ui/control/attribution_control.js +0 -189
- package/src/ui/control/fps_control.js +0 -185
- package/src/ui/control/fullscreen_control.js +0 -147
- package/src/ui/control/geolocate_control.js +0 -594
- package/src/ui/control/logo_control.js +0 -92
- package/src/ui/control/navigation_control.js +0 -148
- package/src/ui/control/scale_control.js +0 -142
- package/src/ui/crs.js +0 -64
- package/src/ui/default_locale.js +0 -20
- package/src/ui/events.js +0 -806
- package/src/ui/handler/box_zoom.js +0 -175
- package/src/ui/handler/dblclick_zoom.js +0 -139
- package/src/ui/handler/drag_pan.js +0 -416
- package/src/ui/handler/drag_rotate.js +0 -378
- package/src/ui/handler/keyboard.js +0 -161
- package/src/ui/handler/scroll_zoom.js +0 -333
- package/src/ui/handler/touch_zoom_rotate.js +0 -293
- package/src/ui/hash.js +0 -147
- package/src/ui/map.js +0 -2883
- package/src/ui/marker.js +0 -607
- package/src/ui/offline_map.js +0 -91
- package/src/ui/popup.js +0 -530
- package/src/util/actor.js +0 -212
- package/src/util/ajax.js +0 -371
- package/src/util/browser/web_worker.js +0 -10
- package/src/util/browser/window.js +0 -5
- package/src/util/browser.js +0 -70
- package/src/util/classify_rings.js +0 -52
- package/src/util/color_ramp.js +0 -28
- package/src/util/config.js +0 -30
- package/src/util/debug.js +0 -12
- package/src/util/dictionary_coder.js +0 -30
- package/src/util/dispatcher.js +0 -70
- package/src/util/dom.js +0 -144
- package/src/util/evented.js +0 -174
- package/src/util/find_pole_of_inaccessibility.js +0 -129
- package/src/util/global_worker_pool.js +0 -17
- package/src/util/image.js +0 -142
- package/src/util/intersection_tests.js +0 -208
- package/src/util/is_char_in_unicode_block.js +0 -311
- package/src/util/mapbox.js +0 -486
- package/src/util/offscreen_canvas_supported.js +0 -14
- package/src/util/performance.js +0 -112
- package/src/util/primitives.js +0 -145
- package/src/util/resolve_tokens.js +0 -16
- package/src/util/script_detection.js +0 -328
- package/src/util/sku_token.js +0 -42
- package/src/util/smart_wrap.js +0 -55
- package/src/util/struct_array.js +0 -243
- package/src/util/struct_array.js.ejs +0 -112
- package/src/util/struct_array_layout.js.ejs +0 -98
- package/src/util/task_queue.js +0 -68
- package/src/util/throttle.js +0 -28
- package/src/util/throttled_invoker.js +0 -46
- package/src/util/tile_cover.js +0 -101
- package/src/util/tile_request_cache.js +0 -172
- package/src/util/util.js +0 -504
- package/src/util/vectortile_to_geojson.js +0 -54
- package/src/util/verticalize_punctuation.js +0 -114
- package/src/util/web_worker.js +0 -91
- package/src/util/web_worker_transfer.js +0 -266
- package/src/util/webp_supported.js +0 -69
- package/src/util/window.js +0 -102
- package/src/util/worker_pool.js +0 -47
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import type {Type} from './types';
|
|
4
|
-
import type ParsingContext from './parsing_context';
|
|
5
|
-
import type EvaluationContext from './evaluation_context';
|
|
6
|
-
|
|
7
|
-
type SerializedExpression = Array<mixed> | string | number | boolean | null;
|
|
8
|
-
|
|
9
|
-
export interface Expression {
|
|
10
|
-
+type: Type;
|
|
11
|
-
|
|
12
|
-
evaluate(ctx: EvaluationContext): any;
|
|
13
|
-
|
|
14
|
-
eachChild(fn: Expression => void): void;
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Statically analyze the expression, attempting to enumerate possible outputs. Returns
|
|
18
|
-
* false if the complete set of outputs is statically undecidable, otherwise true.
|
|
19
|
-
*/
|
|
20
|
-
outputDefined(): boolean;
|
|
21
|
-
|
|
22
|
-
serialize(): SerializedExpression;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export type ExpressionParser = (args: $ReadOnlyArray<mixed>, context: ParsingContext) => ?Expression;
|
|
26
|
-
export type ExpressionRegistration = Class<Expression> & { +parse: ExpressionParser };
|
|
27
|
-
export type ExpressionRegistry = {[_: string]: ExpressionRegistration};
|
|
@@ -1,392 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import assert from 'assert';
|
|
4
|
-
|
|
5
|
-
import extend from '../util/extend';
|
|
6
|
-
import ParsingError from './parsing_error';
|
|
7
|
-
import ParsingContext from './parsing_context';
|
|
8
|
-
import EvaluationContext from './evaluation_context';
|
|
9
|
-
import CompoundExpression from './compound_expression';
|
|
10
|
-
import Step from './definitions/step';
|
|
11
|
-
import Interpolate from './definitions/interpolate';
|
|
12
|
-
import Coalesce from './definitions/coalesce';
|
|
13
|
-
import Let from './definitions/let';
|
|
14
|
-
import definitions from './definitions';
|
|
15
|
-
import * as isConstant from './is_constant';
|
|
16
|
-
import RuntimeError from './runtime_error';
|
|
17
|
-
import {success, error} from '../util/result';
|
|
18
|
-
import {supportsPropertyExpression, supportsZoomExpression, supportsInterpolation} from '../util/properties';
|
|
19
|
-
|
|
20
|
-
import type {Type, EvaluationKind} from './types';
|
|
21
|
-
import type {Value} from './values';
|
|
22
|
-
import type {Expression} from './expression';
|
|
23
|
-
import type {StylePropertySpecification} from '../style-spec';
|
|
24
|
-
import type {Result} from '../util/result';
|
|
25
|
-
import type {InterpolationType} from './definitions/interpolate';
|
|
26
|
-
import type {PropertyValueSpecification} from '../types';
|
|
27
|
-
import type {FormattedSection} from './types/formatted';
|
|
28
|
-
import type Point from '@mapbox/point-geometry';
|
|
29
|
-
import type {CanonicalTileID} from '../../source/tile_id';
|
|
30
|
-
|
|
31
|
-
export type Feature = {
|
|
32
|
-
+type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | 'Polygon' | 'MultiPolygon',
|
|
33
|
-
+id?: any,
|
|
34
|
-
+properties: {[_: string]: any},
|
|
35
|
-
+patterns?: {[_: string]: {"min": string, "mid": string, "max": string}},
|
|
36
|
-
+geometry?: Array<Array<Point>>
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export type FeatureState = {[_: string]: any};
|
|
40
|
-
|
|
41
|
-
export type GlobalProperties = $ReadOnly<{
|
|
42
|
-
zoom: number,
|
|
43
|
-
heatmapDensity?: number,
|
|
44
|
-
lineProgress?: number,
|
|
45
|
-
isSupportedScript?: (_: string) => boolean,
|
|
46
|
-
accumulated?: Value
|
|
47
|
-
}>;
|
|
48
|
-
|
|
49
|
-
export class StyleExpression {
|
|
50
|
-
expression: Expression;
|
|
51
|
-
|
|
52
|
-
_evaluator: EvaluationContext;
|
|
53
|
-
_defaultValue: Value;
|
|
54
|
-
_warningHistory: {[key: string]: boolean};
|
|
55
|
-
_enumValues: ?{[_: string]: any};
|
|
56
|
-
|
|
57
|
-
constructor(expression: Expression, propertySpec: ?StylePropertySpecification) {
|
|
58
|
-
this.expression = expression;
|
|
59
|
-
this._warningHistory = {};
|
|
60
|
-
this._evaluator = new EvaluationContext();
|
|
61
|
-
this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;
|
|
62
|
-
this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection): any {
|
|
66
|
-
this._evaluator.globals = globals;
|
|
67
|
-
this._evaluator.feature = feature;
|
|
68
|
-
this._evaluator.featureState = featureState;
|
|
69
|
-
this._evaluator.canonical = canonical;
|
|
70
|
-
this._evaluator.availableImages = availableImages || null;
|
|
71
|
-
this._evaluator.formattedSection = formattedSection;
|
|
72
|
-
|
|
73
|
-
return this.expression.evaluate(this._evaluator);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection): any {
|
|
77
|
-
this._evaluator.globals = globals;
|
|
78
|
-
this._evaluator.feature = feature || null;
|
|
79
|
-
this._evaluator.featureState = featureState || null;
|
|
80
|
-
this._evaluator.canonical = canonical;
|
|
81
|
-
this._evaluator.availableImages = availableImages || null;
|
|
82
|
-
this._evaluator.formattedSection = formattedSection || null;
|
|
83
|
-
|
|
84
|
-
try {
|
|
85
|
-
const val = this.expression.evaluate(this._evaluator);
|
|
86
|
-
// eslint-disable-next-line no-self-compare
|
|
87
|
-
if (val === null || val === undefined || (typeof val === 'number' && val !== val)) {
|
|
88
|
-
return this._defaultValue;
|
|
89
|
-
}
|
|
90
|
-
if (this._enumValues && !(val in this._enumValues)) {
|
|
91
|
-
throw new RuntimeError(`Expected value to be one of ${Object.keys(this._enumValues).map(v => JSON.stringify(v)).join(', ')}, but found ${JSON.stringify(val)} instead.`);
|
|
92
|
-
}
|
|
93
|
-
return val;
|
|
94
|
-
} catch (e) {
|
|
95
|
-
if (!this._warningHistory[e.message]) {
|
|
96
|
-
this._warningHistory[e.message] = true;
|
|
97
|
-
if (typeof console !== 'undefined') {
|
|
98
|
-
console.warn(e.message);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return this._defaultValue;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export function isExpression(expression: mixed) {
|
|
107
|
-
return Array.isArray(expression) && expression.length > 0 &&
|
|
108
|
-
typeof expression[0] === 'string' && expression[0] in definitions;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Parse and typecheck the given style spec JSON expression. If
|
|
113
|
-
* options.defaultValue is provided, then the resulting StyleExpression's
|
|
114
|
-
* `evaluate()` method will handle errors by logging a warning (once per
|
|
115
|
-
* message) and returning the default value. Otherwise, it will throw
|
|
116
|
-
* evaluation errors.
|
|
117
|
-
*
|
|
118
|
-
* @private
|
|
119
|
-
*/
|
|
120
|
-
export function createExpression(expression: mixed, propertySpec: ?StylePropertySpecification): Result<StyleExpression, Array<ParsingError>> {
|
|
121
|
-
const parser = new ParsingContext(definitions, [], propertySpec ? getExpectedType(propertySpec) : undefined);
|
|
122
|
-
|
|
123
|
-
// For string-valued properties, coerce to string at the top level rather than asserting.
|
|
124
|
-
const parsed = parser.parse(expression, undefined, undefined, undefined,
|
|
125
|
-
propertySpec && propertySpec.type === 'string' ? {typeAnnotation: 'coerce'} : undefined);
|
|
126
|
-
|
|
127
|
-
if (!parsed) {
|
|
128
|
-
assert(parser.errors.length > 0);
|
|
129
|
-
return error(parser.errors);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
return success(new StyleExpression(parsed, propertySpec));
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export class ZoomConstantExpression<Kind: EvaluationKind> {
|
|
136
|
-
kind: Kind;
|
|
137
|
-
isStateDependent: boolean;
|
|
138
|
-
_styleExpression: StyleExpression;
|
|
139
|
-
|
|
140
|
-
constructor(kind: Kind, expression: StyleExpression) {
|
|
141
|
-
this.kind = kind;
|
|
142
|
-
this._styleExpression = expression;
|
|
143
|
-
this.isStateDependent = kind !== ('constant': EvaluationKind) && !isConstant.isStateConstant(expression.expression);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection): any {
|
|
147
|
-
return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection): any {
|
|
151
|
-
return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
export class ZoomDependentExpression<Kind: EvaluationKind> {
|
|
156
|
-
kind: Kind;
|
|
157
|
-
zoomStops: Array<number>;
|
|
158
|
-
isStateDependent: boolean;
|
|
159
|
-
|
|
160
|
-
_styleExpression: StyleExpression;
|
|
161
|
-
interpolationType: ?InterpolationType;
|
|
162
|
-
|
|
163
|
-
constructor(kind: Kind, expression: StyleExpression, zoomStops: Array<number>, interpolationType?: InterpolationType) {
|
|
164
|
-
this.kind = kind;
|
|
165
|
-
this.zoomStops = zoomStops;
|
|
166
|
-
this._styleExpression = expression;
|
|
167
|
-
this.isStateDependent = kind !== ('camera': EvaluationKind) && !isConstant.isStateConstant(expression.expression);
|
|
168
|
-
this.interpolationType = interpolationType;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection): any {
|
|
172
|
-
return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection): any {
|
|
176
|
-
return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
interpolationFactor(input: number, lower: number, upper: number): number {
|
|
180
|
-
if (this.interpolationType) {
|
|
181
|
-
return Interpolate.interpolationFactor(this.interpolationType, input, lower, upper);
|
|
182
|
-
} else {
|
|
183
|
-
return 0;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
export type ConstantExpression = {
|
|
189
|
-
kind: 'constant',
|
|
190
|
-
+evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>) => any,
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
export type SourceExpression = {
|
|
194
|
-
kind: 'source',
|
|
195
|
-
isStateDependent: boolean,
|
|
196
|
-
+evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection) => any,
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
export type CameraExpression = {
|
|
200
|
-
kind: 'camera',
|
|
201
|
-
+evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>) => any,
|
|
202
|
-
+interpolationFactor: (input: number, lower: number, upper: number) => number,
|
|
203
|
-
zoomStops: Array<number>,
|
|
204
|
-
interpolationType: ?InterpolationType
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
export type CompositeExpression = {
|
|
208
|
-
kind: 'composite',
|
|
209
|
-
isStateDependent: boolean,
|
|
210
|
-
+evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection) => any,
|
|
211
|
-
+interpolationFactor: (input: number, lower: number, upper: number) => number,
|
|
212
|
-
zoomStops: Array<number>,
|
|
213
|
-
interpolationType: ?InterpolationType
|
|
214
|
-
};
|
|
215
|
-
|
|
216
|
-
export type StylePropertyExpression =
|
|
217
|
-
| ConstantExpression
|
|
218
|
-
| SourceExpression
|
|
219
|
-
| CameraExpression
|
|
220
|
-
| CompositeExpression;
|
|
221
|
-
|
|
222
|
-
export function createPropertyExpression(expression: mixed, propertySpec: StylePropertySpecification): Result<StylePropertyExpression, Array<ParsingError>> {
|
|
223
|
-
expression = createExpression(expression, propertySpec);
|
|
224
|
-
if (expression.result === 'error') {
|
|
225
|
-
return expression;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
const parsed = expression.value.expression;
|
|
229
|
-
|
|
230
|
-
const isFeatureConstant = isConstant.isFeatureConstant(parsed);
|
|
231
|
-
if (!isFeatureConstant && !supportsPropertyExpression(propertySpec)) {
|
|
232
|
-
return error([new ParsingError('', 'data expressions not supported')]);
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
const isZoomConstant = isConstant.isGlobalPropertyConstant(parsed, ['zoom']);
|
|
236
|
-
if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {
|
|
237
|
-
return error([new ParsingError('', 'zoom expressions not supported')]);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
const zoomCurve = findZoomCurve(parsed);
|
|
241
|
-
if (!zoomCurve && !isZoomConstant) {
|
|
242
|
-
return error([new ParsingError('', '"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);
|
|
243
|
-
} else if (zoomCurve instanceof ParsingError) {
|
|
244
|
-
return error([zoomCurve]);
|
|
245
|
-
} else if (zoomCurve instanceof Interpolate && !supportsInterpolation(propertySpec)) {
|
|
246
|
-
return error([new ParsingError('', '"interpolate" expressions cannot be used with this property')]);
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
if (!zoomCurve) {
|
|
250
|
-
return success(isFeatureConstant ?
|
|
251
|
-
(new ZoomConstantExpression('constant', expression.value): ConstantExpression) :
|
|
252
|
-
(new ZoomConstantExpression('source', expression.value): SourceExpression));
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
const interpolationType = zoomCurve instanceof Interpolate ? zoomCurve.interpolation : undefined;
|
|
256
|
-
|
|
257
|
-
return success(isFeatureConstant ?
|
|
258
|
-
(new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType): CameraExpression) :
|
|
259
|
-
(new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType): CompositeExpression));
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
import {isFunction, createFunction} from '../function';
|
|
263
|
-
import {Color} from './values';
|
|
264
|
-
|
|
265
|
-
// serialization wrapper for old-style stop functions normalized to the
|
|
266
|
-
// expression interface
|
|
267
|
-
export class StylePropertyFunction<T> {
|
|
268
|
-
_parameters: PropertyValueSpecification<T>;
|
|
269
|
-
_specification: StylePropertySpecification;
|
|
270
|
-
|
|
271
|
-
kind: EvaluationKind;
|
|
272
|
-
evaluate: (globals: GlobalProperties, feature?: Feature) => any;
|
|
273
|
-
interpolationFactor: ?(input: number, lower: number, upper: number) => number;
|
|
274
|
-
zoomStops: ?Array<number>;
|
|
275
|
-
|
|
276
|
-
constructor(parameters: PropertyValueSpecification<T>, specification: StylePropertySpecification) {
|
|
277
|
-
this._parameters = parameters;
|
|
278
|
-
this._specification = specification;
|
|
279
|
-
extend(this, createFunction(this._parameters, this._specification));
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
static deserialize(serialized: {_parameters: PropertyValueSpecification<T>, _specification: StylePropertySpecification}) {
|
|
283
|
-
return ((new StylePropertyFunction(serialized._parameters, serialized._specification)): StylePropertyFunction<T>);
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
static serialize(input: StylePropertyFunction<T>) {
|
|
287
|
-
return {
|
|
288
|
-
_parameters: input._parameters,
|
|
289
|
-
_specification: input._specification
|
|
290
|
-
};
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
export function normalizePropertyExpression<T>(value: PropertyValueSpecification<T>, specification: StylePropertySpecification): StylePropertyExpression {
|
|
295
|
-
if (isFunction(value)) {
|
|
296
|
-
return (new StylePropertyFunction(value, specification): any);
|
|
297
|
-
|
|
298
|
-
} else if (isExpression(value)) {
|
|
299
|
-
const expression = createPropertyExpression(value, specification);
|
|
300
|
-
if (expression.result === 'error') {
|
|
301
|
-
// this should have been caught in validation
|
|
302
|
-
throw new Error(expression.value.map(err => `${err.key}: ${err.message}`).join(', '));
|
|
303
|
-
}
|
|
304
|
-
return expression.value;
|
|
305
|
-
|
|
306
|
-
} else {
|
|
307
|
-
let constant: any = value;
|
|
308
|
-
if (typeof value === 'string' && specification.type === 'color') {
|
|
309
|
-
constant = Color.parse(value);
|
|
310
|
-
}
|
|
311
|
-
return {
|
|
312
|
-
kind: 'constant',
|
|
313
|
-
evaluate: () => constant
|
|
314
|
-
};
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
// Zoom-dependent expressions may only use ["zoom"] as the input to a top-level "step" or "interpolate"
|
|
319
|
-
// expression (collectively referred to as a "curve"). The curve may be wrapped in one or more "let" or
|
|
320
|
-
// "coalesce" expressions.
|
|
321
|
-
function findZoomCurve(expression: Expression): Step | Interpolate | ParsingError | null {
|
|
322
|
-
let result = null;
|
|
323
|
-
if (expression instanceof Let) {
|
|
324
|
-
result = findZoomCurve(expression.result);
|
|
325
|
-
|
|
326
|
-
} else if (expression instanceof Coalesce) {
|
|
327
|
-
for (const arg of expression.args) {
|
|
328
|
-
result = findZoomCurve(arg);
|
|
329
|
-
if (result) {
|
|
330
|
-
break;
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
} else if ((expression instanceof Step || expression instanceof Interpolate) &&
|
|
335
|
-
expression.input instanceof CompoundExpression &&
|
|
336
|
-
expression.input.name === 'zoom') {
|
|
337
|
-
|
|
338
|
-
result = expression;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
if (result instanceof ParsingError) {
|
|
342
|
-
return result;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
expression.eachChild((child) => {
|
|
346
|
-
const childResult = findZoomCurve(child);
|
|
347
|
-
if (childResult instanceof ParsingError) {
|
|
348
|
-
result = childResult;
|
|
349
|
-
} else if (!result && childResult) {
|
|
350
|
-
result = new ParsingError('', '"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.');
|
|
351
|
-
} else if (result && childResult && result !== childResult) {
|
|
352
|
-
result = new ParsingError('', 'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.');
|
|
353
|
-
}
|
|
354
|
-
});
|
|
355
|
-
|
|
356
|
-
return result;
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
import {ColorType, StringType, NumberType, BooleanType, ValueType, FormattedType, ResolvedImageType, array} from './types';
|
|
360
|
-
|
|
361
|
-
function getExpectedType(spec: StylePropertySpecification): Type {
|
|
362
|
-
const types = {
|
|
363
|
-
color: ColorType,
|
|
364
|
-
string: StringType,
|
|
365
|
-
number: NumberType,
|
|
366
|
-
enum: StringType,
|
|
367
|
-
boolean: BooleanType,
|
|
368
|
-
formatted: FormattedType,
|
|
369
|
-
resolvedImage: ResolvedImageType
|
|
370
|
-
};
|
|
371
|
-
|
|
372
|
-
if (spec.type === 'array') {
|
|
373
|
-
return array(types[spec.value] || ValueType, spec.length);
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
return types[spec.type];
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
function getDefaultValue(spec: StylePropertySpecification): Value {
|
|
380
|
-
if (spec.type === 'color' && isFunction(spec.default)) {
|
|
381
|
-
// Special case for heatmap-color: it uses the 'default:' to define a
|
|
382
|
-
// default color ramp, but createExpression expects a simple value to fall
|
|
383
|
-
// back to in case of runtime errors
|
|
384
|
-
return new Color(0, 0, 0, 0);
|
|
385
|
-
} else if (spec.type === 'color') {
|
|
386
|
-
return Color.parse(spec.default) || null;
|
|
387
|
-
} else if (spec.default === undefined) {
|
|
388
|
-
return null;
|
|
389
|
-
} else {
|
|
390
|
-
return spec.default;
|
|
391
|
-
}
|
|
392
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import CompoundExpression from './compound_expression';
|
|
4
|
-
import Within from './definitions/within';
|
|
5
|
-
import type {Expression} from './expression.js';
|
|
6
|
-
|
|
7
|
-
function isFeatureConstant(e: Expression) {
|
|
8
|
-
if (e instanceof CompoundExpression) {
|
|
9
|
-
if (e.name === 'get' && e.args.length === 1) {
|
|
10
|
-
return false;
|
|
11
|
-
} else if (e.name === 'feature-state') {
|
|
12
|
-
return false;
|
|
13
|
-
} else if (e.name === 'has' && e.args.length === 1) {
|
|
14
|
-
return false;
|
|
15
|
-
} else if (
|
|
16
|
-
e.name === 'properties' ||
|
|
17
|
-
e.name === 'geometry-type' ||
|
|
18
|
-
e.name === 'id'
|
|
19
|
-
) {
|
|
20
|
-
return false;
|
|
21
|
-
} else if (/^filter-/.test(e.name)) {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
if (e instanceof Within) {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
let result = true;
|
|
31
|
-
e.eachChild(arg => {
|
|
32
|
-
if (result && !isFeatureConstant(arg)) { result = false; }
|
|
33
|
-
});
|
|
34
|
-
return result;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function isStateConstant(e: Expression) {
|
|
38
|
-
if (e instanceof CompoundExpression) {
|
|
39
|
-
if (e.name === 'feature-state') {
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
let result = true;
|
|
44
|
-
e.eachChild(arg => {
|
|
45
|
-
if (result && !isStateConstant(arg)) { result = false; }
|
|
46
|
-
});
|
|
47
|
-
return result;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
function isGlobalPropertyConstant(e: Expression, properties: Array<string>) {
|
|
51
|
-
if (e instanceof CompoundExpression && properties.indexOf(e.name) >= 0) { return false; }
|
|
52
|
-
let result = true;
|
|
53
|
-
e.eachChild((arg) => {
|
|
54
|
-
if (result && !isGlobalPropertyConstant(arg, properties)) { result = false; }
|
|
55
|
-
});
|
|
56
|
-
return result;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export {isFeatureConstant, isGlobalPropertyConstant, isStateConstant};
|