// Copyright 2017 The Cobalt Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// https://www.w3.org/TR/2016/WD-uievents-20160804/#interface-wheelevent
// https://www.w3.org/TR/2016/WD-uievents-20160804/#idl-interface-WheelEvent-initializers

[Constructor(DOMString type, optional WheelEventInit eventInitDict)]
interface WheelEvent : MouseEvent {
  // DeltaModeCode
  const unsigned long DOM_DELTA_PIXEL = 0x00;
  const unsigned long DOM_DELTA_LINE  = 0x01;
  const unsigned long DOM_DELTA_PAGE  = 0x02;

  readonly attribute double deltaX;
  readonly attribute double deltaY;
  readonly attribute double deltaZ;
  readonly attribute unsigned long deltaMode;

  void initWheelEvent(DOMString type,
                   optional boolean bubbles = false,
                   optional boolean cancelable = false,
                   optional Window? view = null,
                   optional long detail = 0,
                   optional long screenX = 0,
                   optional long screenY = 0,
                   optional long clientX = 0,
                   optional long clientY = 0,
                   optional unsigned short button = 0,
                   optional EventTarget? relatedTarget = null,
                   optional DOMString modifiersList = "",
                   optional double deltaX = 0,
                   optional double deltaY = 0,
                   optional double deltaZ = 0,
                   optional unsigned long deltaMode = 0);
};