{
  "props": {
    "virtual-scroll-horizontal": {
      "type": "Boolean",
      "desc": "Make virtual list work in horizontal mode",
      "category": "behavior"
    },

    "virtual-scroll-slice-size": {
      "type": "Number",
      "desc": "Number of options to render in the virtual list",
      "default": "30",
      "examples": [
        ":virtual-scroll-slice-size=\"60\""
      ],
      "category": "virtual-scroll"
    },

    "virtual-scroll-item-size": {
      "type": "Number",
      "desc": "Default size in pixels (height if vertical, width if horizontal) of an option; This value is used for rendering the initial list; Try to use a value close to the minimum size of an item",
      "default": "24",
      "examples": [
        ":virtual-scroll-item-size=\"48\""
      ],
      "category": "virtual-scroll"
    },

    "virtual-scroll-sticky-size-start": {
      "type": "Number",
      "desc": "Size in pixels (height if vertical, width if horizontal) of the sticky part (if using one) at the start of the list; A correct value will improve scroll precision",
      "default": "0",
      "examples": [
        ":virtual-scroll-sticky-size-start=\"48\""
      ],
      "category": "virtual-scroll"
    },

    "virtual-scroll-sticky-size-end": {
      "type": "Number",
      "desc": "Size in pixels (height if vertical, width if horizontal) of the sticky part (if using one) at the end of the list; A correct value will improve scroll precision",
      "default": "0",
      "examples": [
        ":virtual-scroll-sticky-size-end=\"48\""
      ],
      "category": "virtual-scroll"
    }
  },

  "events": {
    "virtual-scroll": {
      "desc": "Emitted when the virtual scroll occurs",
      "params": {
        "details": {
          "type": "Object",
          "desc": "Object of properties on the new scroll position",
          "definition": {
            "index": {
              "type": "Number",
              "desc": "Index of the list item that was scrolled into view (0 based)",
              "examples": [ 30 ]
            },
            "from": {
              "type": "Number",
              "desc": "The index of the first list item that is rendered (0 based)",
              "examples": [ 10 ]
            },
            "to": {
              "type": "Number",
              "desc": "The index of the last list item that is rendered (0 based)",
              "examples": [ 50 ]
            },
            "direction": {
              "type": "String",
              "desc": "Direction of change",
              "values": [ "increase", "decrease" ]
            }
          }
        }
      }
    }
  },

  "methods": {
    "scrollTo": {
      "desc": "Scroll the virtual scroll list to the item with the specified index (0 based)",
      "params": {
        "index": {
          "type": [ "String", "Number" ],
          "desc": "The index of the list item (0 based)",
          "required": true,
          "examples": [ "1", 23 ]
        }
      }
    },

    "reset": {
      "desc": "Resets the computations; Needed for custom edge-cases"
    }
  }
}
