floating_ui_dom/
platform.rs1pub mod convert_offset_parent_relative_rect_to_viewport_relative_rect;
2pub mod get_client_length;
3pub mod get_client_rects;
4pub mod get_clipping_rect;
5pub mod get_dimensions;
6pub mod get_element_rects;
7pub mod get_offset_parent;
8pub mod get_scale;
9pub mod is_rtl;
10
11use floating_ui_core::{
12 ConvertOffsetParentRelativeRectToViewportRelativeRectArgs, GetClippingRectArgs,
13 GetElementRectsArgs, Platform as CorePlatform,
14};
15use floating_ui_utils::dom::get_document_element;
16use floating_ui_utils::{
17 ClientRectObject, Coords, Dimensions, ElementRects, Length, OwnedElementOrWindow, Rect,
18};
19use web_sys::{Element, Window};
20
21use crate::types::ElementOrVirtual;
22
23use self::convert_offset_parent_relative_rect_to_viewport_relative_rect::convert_offset_parent_relative_rect_to_viewport_relative_rect;
24use self::get_client_length::get_client_length;
25use self::get_client_rects::get_client_rects;
26use self::get_clipping_rect::get_clipping_rect;
27use self::get_dimensions::get_dimensions;
28use self::get_element_rects::get_element_rects;
29use self::get_offset_parent::get_offset_parent;
30use self::get_scale::get_scale;
31use self::is_rtl::is_rtl;
32
33#[derive(Debug)]
34pub struct Platform {}
35
36impl CorePlatform<Element, Window> for Platform {
37 fn get_element_rects(&self, args: GetElementRectsArgs<Element>) -> ElementRects {
38 get_element_rects(self, args)
39 }
40
41 fn get_clipping_rect(&self, args: GetClippingRectArgs<Element>) -> Rect {
42 get_clipping_rect(self, args)
43 }
44
45 fn get_dimensions(&self, element: &Element) -> Dimensions {
46 get_dimensions(element)
47 }
48
49 fn convert_offset_parent_relative_rect_to_viewport_relative_rect(
50 &self,
51 args: ConvertOffsetParentRelativeRectToViewportRelativeRectArgs<Element, Window>,
52 ) -> Option<Rect> {
53 Some(convert_offset_parent_relative_rect_to_viewport_relative_rect(args))
54 }
55
56 fn get_offset_parent(
57 &self,
58 element: &Element,
59 ) -> Option<OwnedElementOrWindow<Element, Window>> {
60 Some(get_offset_parent(element, None))
61 }
62
63 fn get_document_element(&self, element: &Element) -> Option<Element> {
64 Some(get_document_element(Some(element.into())))
65 }
66
67 fn get_client_rects(&self, element: ElementOrVirtual) -> Option<Vec<ClientRectObject>> {
68 Some(get_client_rects(element))
69 }
70
71 fn is_rtl(&self, element: &Element) -> Option<bool> {
72 Some(is_rtl(element))
73 }
74
75 fn get_scale(&self, element: &Element) -> Option<Coords> {
76 Some(get_scale(element.into()))
77 }
78
79 fn get_client_length(&self, element: &Element, length: Length) -> Option<f64> {
80 Some(get_client_length(element, length))
81 }
82}