{
  "type": "map",
  "description": "Live UDF map.",
  "hasChildren": false,
  "propsSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "label": {
        "description": "Label above the map",
        "type": "string"
      },
      "param": {
        "description": "Canvas parameter for bounds [west, south, east, north]",
        "type": "string"
      },
      "sendParam": {
        "default": false,
        "description": "Whether to send the bounds to the canvas",
        "type": "boolean"
      },
      "centerLng": {
        "default": -74,
        "type": "number"
      },
      "centerLat": {
        "default": 40.7,
        "type": "number"
      },
      "zoom": {
        "default": 12,
        "type": "number"
      },
      "style": {
        "description": "Inline CSS styles as a plain CSS string (e.g., \"border-radius: 8px; overflow: hidden\")",
        "type": "string"
      },
      "layers": {
        "type": "array",
        "items": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "udf": {
                  "type": "string",
                  "description": "Name of the UDF"
                },
                "visible": {
                  "description": "Whether the layer is visible",
                  "type": "boolean"
                },
                "vizConfig": {
                  "description": "Visualization configuration for the layer",
                  "type": "object",
                  "propertyNames": {
                    "type": "string"
                  },
                  "additionalProperties": {}
                }
              },
              "required": [
                "udf"
              ]
            },
            {
              "type": "string",
              "description": "Name of the UDF"
            }
          ],
          "description": "Layer configuration or UDF name"
        }
      },
      "mapStyle": {
        "description": "Map style",
        "type": "string",
        "enum": [
          "light",
          "dark",
          "satellite",
          "blank"
        ]
      }
    },
    "required": [
      "layers"
    ],
    "description": "Interactive Mapbox map that syncs viewport bounds [west, south, east, north] with a canvas parameter. Supports auto-send on pan/zoom or manual send via button."
  }
}
