Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add bindings for VisualViewport #3931

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions crates/web-sys/Cargo.toml
Expand Up @@ -1472,6 +1472,7 @@ VideoTrackList = ["EventTarget"]
VideoTransferCharacteristics = []
ViewTransition = []
VisibilityState = []
VisualViewport = ["EventTarget"]
VoidCallback = []
VrDisplay = ["EventTarget"]
VrDisplayCapabilities = []
Expand Down
106 changes: 106 additions & 0 deletions crates/web-sys/src/features/gen_VisualViewport.rs
@@ -0,0 +1,106 @@
#![allow(unused_imports)]
#![allow(clippy::all)]
use super::*;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
# [wasm_bindgen (extends = EventTarget , extends = :: js_sys :: Object , js_name = VisualViewport , typescript_type = "VisualViewport")]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `VisualViewport` class."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`*"]
pub type VisualViewport;
# [wasm_bindgen (structural , method , getter , js_class = "VisualViewport" , js_name = offsetLeft)]
#[doc = "Getter for the `offsetLeft` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/offsetLeft)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`*"]
pub fn offset_left(this: &VisualViewport) -> f64;
# [wasm_bindgen (structural , method , getter , js_class = "VisualViewport" , js_name = offsetTop)]
#[doc = "Getter for the `offsetTop` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/offsetTop)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`*"]
pub fn offset_top(this: &VisualViewport) -> f64;
# [wasm_bindgen (structural , method , getter , js_class = "VisualViewport" , js_name = pageLeft)]
#[doc = "Getter for the `pageLeft` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/pageLeft)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`*"]
pub fn page_left(this: &VisualViewport) -> f64;
# [wasm_bindgen (structural , method , getter , js_class = "VisualViewport" , js_name = pageTop)]
#[doc = "Getter for the `pageTop` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/pageTop)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`*"]
pub fn page_top(this: &VisualViewport) -> f64;
# [wasm_bindgen (structural , method , getter , js_class = "VisualViewport" , js_name = width)]
#[doc = "Getter for the `width` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/width)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`*"]
pub fn width(this: &VisualViewport) -> f64;
# [wasm_bindgen (structural , method , getter , js_class = "VisualViewport" , js_name = height)]
#[doc = "Getter for the `height` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/height)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`*"]
pub fn height(this: &VisualViewport) -> f64;
# [wasm_bindgen (structural , method , getter , js_class = "VisualViewport" , js_name = scale)]
#[doc = "Getter for the `scale` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/scale)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`*"]
pub fn scale(this: &VisualViewport) -> f64;
# [wasm_bindgen (structural , method , getter , js_class = "VisualViewport" , js_name = onresize)]
#[doc = "Getter for the `onresize` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/onresize)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`*"]
pub fn onresize(this: &VisualViewport) -> Option<::js_sys::Function>;
# [wasm_bindgen (structural , method , setter , js_class = "VisualViewport" , js_name = onresize)]
#[doc = "Setter for the `onresize` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/onresize)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`*"]
pub fn set_onresize(this: &VisualViewport, value: Option<&::js_sys::Function>);
# [wasm_bindgen (structural , method , getter , js_class = "VisualViewport" , js_name = onscroll)]
#[doc = "Getter for the `onscroll` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/onscroll)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`*"]
pub fn onscroll(this: &VisualViewport) -> Option<::js_sys::Function>;
# [wasm_bindgen (structural , method , setter , js_class = "VisualViewport" , js_name = onscroll)]
#[doc = "Setter for the `onscroll` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/onscroll)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`*"]
pub fn set_onscroll(this: &VisualViewport, value: Option<&::js_sys::Function>);
# [wasm_bindgen (structural , method , getter , js_class = "VisualViewport" , js_name = onscrollend)]
#[doc = "Getter for the `onscrollend` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/onscrollend)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`*"]
pub fn onscrollend(this: &VisualViewport) -> Option<::js_sys::Function>;
# [wasm_bindgen (structural , method , setter , js_class = "VisualViewport" , js_name = onscrollend)]
#[doc = "Setter for the `onscrollend` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/onscrollend)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`*"]
pub fn set_onscrollend(this: &VisualViewport, value: Option<&::js_sys::Function>);
}
8 changes: 8 additions & 0 deletions crates/web-sys/src/features/gen_Window.rs
Expand Up @@ -236,6 +236,14 @@ extern "C" {
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `Screen`, `Window`*"]
pub fn screen(this: &Window) -> Result<Screen, JsValue>;
#[cfg(feature = "VisualViewport")]
# [wasm_bindgen (structural , method , getter , js_class = "Window" , js_name = visualViewport)]
#[doc = "Getter for the `visualViewport` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/Window/visualViewport)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `VisualViewport`, `Window`*"]
pub fn visual_viewport(this: &Window) -> Option<VisualViewport>;
# [wasm_bindgen (structural , catch , method , getter , js_class = "Window" , js_name = innerWidth)]
#[doc = "Getter for the `innerWidth` field of this object."]
#[doc = ""]
Expand Down
7 changes: 7 additions & 0 deletions crates/web-sys/src/features/mod.rs
Expand Up @@ -10085,6 +10085,13 @@ mod gen_VisibilityState;
#[allow(unused_imports)]
pub use gen_VisibilityState::*;

#[cfg(feature = "VisualViewport")]
#[allow(non_snake_case)]
mod gen_VisualViewport;
#[cfg(feature = "VisualViewport")]
#[allow(unused_imports)]
pub use gen_VisualViewport::*;

#[cfg(feature = "VoidCallback")]
#[allow(non_snake_case)]
mod gen_VoidCallback;
Expand Down
26 changes: 26 additions & 0 deletions crates/web-sys/webidls/enabled/VisualViewport.webidl
@@ -0,0 +1,26 @@
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* The origin of this IDL file is
* https://drafts.csswg.org/cssom-view/#visualViewport
*/

[Exposed=Window]
interface VisualViewport : EventTarget {
readonly attribute double offsetLeft;
readonly attribute double offsetTop;

readonly attribute double pageLeft;
readonly attribute double pageTop;

readonly attribute double width;
readonly attribute double height;

readonly attribute double scale;

attribute EventHandler onresize;
attribute EventHandler onscroll;
attribute EventHandler onscrollend;
};
1 change: 1 addition & 0 deletions crates/web-sys/webidls/enabled/Window.webidl
Expand Up @@ -146,6 +146,7 @@ partial interface Window {
// nsGlobalWindow::Cleanup. :(
//[SameObject, Replaceable, Throws] readonly attribute Screen screen;
[Replaceable, Throws] readonly attribute Screen screen;
[SameObject, Replaceable] readonly attribute VisualViewport? visualViewport;

// browsing context
//[Throws] undefined moveTo(double x, double y);
Expand Down