{
  "props": {
    "debounce": {
      "type": [ "String", "Number" ],
      "desc": "Debounce amount (in milliseconds)",
      "examples": [ "0", "530" ],
      "category": "behavior"
    },

    "horizontal": {
      "type": "Boolean",
      "desc": "Register for horizontal scroll instead of vertical (which is default)",
      "category": "behavior"
    }
  },

  "events": {
    "scroll": {
      "desc": "Emitted when scroll position changes",
      "params": {
        "details": {
          "type": "Object",
          "desc": "Scroll details",
          "definition": {
            "position": {
              "type": "Number",
              "desc": "Scroll offset (from top)",
              "examples": [ 822 ]
            },
            "direction": {
              "type": "String",
              "desc": "Direction of scroll",
              "values": [ "up", "down" ]
            },
            "directionChanged": {
              "type": "Boolean",
              "desc": "Has scroll direction changed since event was last emitted?"
            },
            "inflexionPosition": {
              "type": "Number",
              "desc": "Last scroll offset where scroll direction has changed",
              "examples": [ 822 ]
            }
          }
        }
      }
    }
  },

  "methods": {
    "trigger": {
      "desc": "Emit a 'scroll' event",
      "params": {
        "immediately": {
          "type": "Boolean",
          "desc": "Skip over the debounce amount"
        }
      }
    },

    "getPosition": {
      "desc": "Get current scroll details under the form of an Object: { position, direction, directionChanged, inflexionPosition }"
    }
  }
}
