Current section
Files
Jump to
Current section
Files
src/redraw/dom/event/wheel.gleam
//// The `WheelEvent` interface represents events that occur due to the user
//// moving a mouse wheel or similar input device.
////
//// > This is the standard wheel event interface to use. Old versions
//// of browsers implemented the non-standard and non-cross-browser-compatible
//// `MouseWheelEvent` and `MouseScrollEvent` interfaces. Use this interface and
//// avoid the non-standard ones.
////
//// Don't confuse the wheel event with the [`scroll`](https://developer.mozilla.org/docs/Web/API/Element/scroll_event) event:
//// - A `wheel` event doesn't necessarily dispatch a `scroll` event. For example,
//// the element may be unscrollable at all. Zooming actions using the wheel
//// or trackpad also fire `wheel` events.
//// - A `scroll` event isn't necessarily triggered by a `wheel` event. Elements
//// can also be scrolled by using the keyboard, dragging a scrollbar, or
//// using JavaScript.
//// - Even when the `wheel` event does trigger scrolling, the `delta*` values in
//// the `wheel` event don't necessarily reflect the content's scrolling
//// direction.
import redraw/dom/event/mouse.{type MouseEvent}
import redraw/dom/event/ui.{type UIEvent}
import redraw/event.{type Event}
import redraw/internal/unsafe
/// [Documentation](https://developer.mozilla.org/docs/Web/API/WheelEvent)
pub type WheelEvent
/// [Documentation](https://developer.mozilla.org/docs/Web/API/WheelEvent/deltaMode)
@external(javascript, "./events.ffi.mjs", "deltaMode")
pub fn delta_mode(event: WheelEvent) -> Int
/// [Documentation](https://developer.mozilla.org/docs/Web/API/WheelEvent/deltaX)
@external(javascript, "./events.ffi.mjs", "deltaX")
pub fn delta_x(event: WheelEvent) -> Float
/// [Documentation](https://developer.mozilla.org/docs/Web/API/WheelEvent/deltaY)
@external(javascript, "./events.ffi.mjs", "deltaY")
pub fn delta_y(event: WheelEvent) -> Float
/// [Documentation](https://developer.mozilla.org/docs/Web/API/WheelEvent/deltaZ)
@external(javascript, "./events.ffi.mjs", "deltaZ")
pub fn delta_z(event: WheelEvent) -> Float
/// `WheelEvent` inherits `MouseEvent`.
pub const as_mouse_event: fn(WheelEvent) -> MouseEvent = unsafe.coerce
/// `WheelEvent` inherits `UIEvent`.
pub const as_ui_event: fn(WheelEvent) -> UIEvent = unsafe.coerce
/// `WheelEvent` inherits `Event`.
pub const as_event: fn(WheelEvent) -> Event = unsafe.coerce