blob: 26ed25ecf8bccd4c15c5e63f8f2ce7e65d494968 [file] [log] [blame]
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
//
// API docs from [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web).
// Attributions and copyright licensing by Mozilla Contributors is licensed
// under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/.
// Generated from Web IDL definitions.
// ignore_for_file: unintended_html_in_doc_comment
@JS()
library;
import 'dart:js_interop';
import 'dom.dart';
/// The **`DeviceOrientationEvent`** interface of the
/// [Device Orientation Events] provides web developers with information from
/// the physical orientation of the device running the web page.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent).
extension type DeviceOrientationEvent._(JSObject _) implements Event, JSObject {
external factory DeviceOrientationEvent(
String type, [
DeviceOrientationEventInit eventInitDict,
]);
/// The **`alpha`** read-only property of the [DeviceOrientationEvent]
/// interface returns the rotation of the device around the Z axis; that is,
/// the number of degrees by
/// which the device is being twisted around the center of the screen.
/// See
/// [Orientation and motion data explained](https://developer.mozilla.org/en-US/docs/Web/API/Device_orientation_events/Orientation_and_motion_data_explained)
/// for details.
external double? get alpha;
/// The **`beta`** read-only property of the [DeviceOrientationEvent]
/// interface returns the rotation of the device around the X axis; that is,
/// the number of degrees,
/// ranged between -180 and 180, by which the device is tipped forward or
/// backward.
/// See
/// [Orientation and motion data explained](https://developer.mozilla.org/en-US/docs/Web/API/Device_orientation_events/Orientation_and_motion_data_explained)
/// for details.
external double? get beta;
/// The **`gamma`** read-only property of the [DeviceOrientationEvent]
/// interface returns the rotation of the device around the Y axis; that is,
/// the number of degrees,
/// ranged between `-90` and `90`, by which the device is tilted left
/// or right.
/// See
/// [Orientation and motion data explained](https://developer.mozilla.org/en-US/docs/Web/API/Device_orientation_events/Orientation_and_motion_data_explained)
/// for details.
external double? get gamma;
/// The **`absolute`** read-only property of the [DeviceOrientationEvent]
/// interface indicates whether or not the device is providing orientation
/// data absolutely (that is,
/// in reference to the Earth's coordinate frame) or using some arbitrary
/// frame determined
/// by the device.
/// See
/// [Orientation and motion data explained](https://developer.mozilla.org/en-US/docs/Web/API/Device_orientation_events/Orientation_and_motion_data_explained)
/// for details.
external bool get absolute;
}
extension type DeviceOrientationEventInit._(JSObject _)
implements EventInit, JSObject {
external factory DeviceOrientationEventInit({
bool bubbles,
bool cancelable,
bool composed,
num? alpha,
num? beta,
num? gamma,
bool absolute,
});
external double? get alpha;
external set alpha(num? value);
external double? get beta;
external set beta(num? value);
external double? get gamma;
external set gamma(num? value);
external bool get absolute;
external set absolute(bool value);
}
/// The **`DeviceMotionEventAcceleration`** interface of the
/// [Device Orientation Events] provides information about the amount of
/// acceleration the device is experiencing along all three axes.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEventAcceleration).
extension type DeviceMotionEventAcceleration._(JSObject _) implements JSObject {
/// The **`x`** read-only property of the [DeviceMotionEventAcceleration]
/// interface indicates the amount of acceleration that occurred along the X
/// axis in a
/// [`DeviceMotionEventAcceleration`](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEventAcceleration)
/// object.
external double? get x;
/// The **`y`** read-only property of the [DeviceMotionEventAcceleration]
/// interface indicates the amount of acceleration that occurred along the Y
/// axis in a
/// [`DeviceMotionEventAcceleration`](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEventAcceleration)
/// object.
external double? get y;
/// The **`z`** read-only property of the [DeviceMotionEventAcceleration]
/// interface indicates the amount of acceleration that occurred along the Z
/// axis in a
/// [`DeviceMotionEventAcceleration`](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEventAcceleration)
/// object.
external double? get z;
}
/// A **`DeviceMotionEventRotationRate`** interface of the
/// [Device Orientation Events] provides information about the rate at which the
/// device is rotating around all three axes.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEventRotationRate).
extension type DeviceMotionEventRotationRate._(JSObject _) implements JSObject {
/// The **`alpha`** read-only property of the [DeviceMotionEventRotationRate]
/// interface indicates the rate of rotation around the Z axis, in degrees per
/// second.
external double? get alpha;
/// The **`beta`** read-only property of the [DeviceMotionEventRotationRate]
/// interface indicates the rate of rotation around the X axis, in degrees per
/// second.
external double? get beta;
/// The **`gamma`** read-only property of the [DeviceMotionEventRotationRate]
/// interface indicates the rate of rotation around the Y axis, in degrees per
/// second.
external double? get gamma;
}
/// The **`DeviceMotionEvent`** interface of the [Device Orientation Events]
/// provides web developers with information about the speed of changes for the
/// device's position and orientation.
///
/// > [!WARNING]
/// > Currently, Firefox and Chrome do not handle the coordinates the same way.
/// > Take care about this while using them.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent).
extension type DeviceMotionEvent._(JSObject _) implements Event, JSObject {
external factory DeviceMotionEvent(
String type, [
DeviceMotionEventInit eventInitDict,
]);
/// The **`acceleration`** read-only property of the [DeviceMotionEvent]
/// interface returns the acceleration recorded by
/// the device, in [meters per second squared
/// (m/s²)](https://en.wikipedia.org/wiki/Meter_per_second_squared).
/// This value does not include the effect of
/// the gravitational force, in contrast to
/// [DeviceMotionEvent.accelerationIncludingGravity].
///
/// > [!NOTE]
/// > If the hardware does not know how to remove gravity from the
/// > acceleration data, this value may not be present in the
/// > [DeviceMotionEvent]. In this situation, you'll need to use
/// > [DeviceMotionEvent.accelerationIncludingGravity] instead.
external DeviceMotionEventAcceleration? get acceleration;
/// The **`accelerationIncludingGravity`** read-only property of the
/// [DeviceMotionEvent] interface returns the
/// amount of acceleration recorded by the device, in [meters per second
/// squared (m/s²)](https://en.wikipedia.org/wiki/Meter_per_second_squared).
/// Unlike [DeviceMotionEvent.acceleration]
/// which compensates for the influence of gravity, its value is the sum of
/// the acceleration
/// of the device as induced by the user and an acceleration equal and
/// opposite to that
/// caused by gravity. In other words, it measures the
/// [g-force](https://en.wikipedia.org/wiki/G-Force). In practice, this value
/// represents
/// the raw data measured by an
/// [accelerometer](https://en.wikipedia.org/wiki/Accelerometer).
///
/// This value is not typically as useful as [DeviceMotionEvent.acceleration],
/// but may be the only value available on devices that aren't able to remove
/// gravity from
/// the acceleration data, such as on devices that don't have a gyroscope.
///
/// > **Note:** `accelerationIncludingGravity`'s name can be misleading. This
/// > property represents acceleration including _the effects of_ gravity. For
/// > example, if a device is lying flat on a horizontal surface with the
/// > screen pointing up, gravity would be -9.8 along the Z axis, while
/// > `acceleration.z` would be 0 and `accelerationIncludingGravity.z` would
/// > be 9.8. Similarly, if a device is in free fall with its screen
/// > horizontal and pointing up, gravity would be -9.8 along the Z axis,
/// > while `acceleration.z` would be -9.8 and
/// > `accelerationIncludingGravity.z` would be 0.
external DeviceMotionEventAcceleration? get accelerationIncludingGravity;
/// The **`rotationRate`** read-only property of the [DeviceMotionEvent]
/// interface returns the rate at which the device is rotating around each of
/// its axes in degrees per
/// second.
///
/// > [!NOTE]
/// > If the hardware isn't capable of providing this
/// > information, this property returns `null`.
external DeviceMotionEventRotationRate? get rotationRate;
/// The **`interval`** read-only property of the [DeviceMotionEvent] interface
/// returns the interval, in milliseconds, at which data is obtained from the
/// underlying
/// hardware. You can use this to determine the granularity of motion events.
external double get interval;
}
extension type DeviceMotionEventAccelerationInit._(JSObject _)
implements JSObject {
external factory DeviceMotionEventAccelerationInit({
num? x,
num? y,
num? z,
});
external double? get x;
external set x(num? value);
external double? get y;
external set y(num? value);
external double? get z;
external set z(num? value);
}
extension type DeviceMotionEventRotationRateInit._(JSObject _)
implements JSObject {
external factory DeviceMotionEventRotationRateInit({
num? alpha,
num? beta,
num? gamma,
});
external double? get alpha;
external set alpha(num? value);
external double? get beta;
external set beta(num? value);
external double? get gamma;
external set gamma(num? value);
}
extension type DeviceMotionEventInit._(JSObject _)
implements EventInit, JSObject {
external factory DeviceMotionEventInit({
bool bubbles,
bool cancelable,
bool composed,
DeviceMotionEventAccelerationInit acceleration,
DeviceMotionEventAccelerationInit accelerationIncludingGravity,
DeviceMotionEventRotationRateInit rotationRate,
num interval,
});
external DeviceMotionEventAccelerationInit get acceleration;
external set acceleration(DeviceMotionEventAccelerationInit value);
external DeviceMotionEventAccelerationInit get accelerationIncludingGravity;
external set accelerationIncludingGravity(
DeviceMotionEventAccelerationInit value);
external DeviceMotionEventRotationRateInit get rotationRate;
external set rotationRate(DeviceMotionEventRotationRateInit value);
external double get interval;
external set interval(num value);
}