// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
// Source: Pointer Lock 2.0 (https://w3c.github.io/pointerlock/)

partial interface Element {
  void requestPointerLock();
};

partial interface Document {
  attribute EventHandler onpointerlockchange;
  attribute EventHandler onpointerlockerror;
  void exitPointerLock();
};

partial interface DocumentOrShadowRoot {
  readonly attribute Element? pointerLockElement;
};

partial interface MouseEvent {
  readonly attribute long movementX;
  readonly attribute long movementY;
};

partial dictionary MouseEventInit {
  long movementX = 0;
  long movementY = 0;
};
