dioxus_use_cursor/hooks/mod.rs
1#![allow(non_snake_case)]
2mod builder;
3mod use_cursor;
4mod use_hover;
5// mod use_focus;
6// mod use_hovering;
7pub use self::{builder::UseCursorBuilder, use_cursor::UseCursor, use_hover::UseHover};
8use dioxus::core::ScopeState;
9use gloo_events::EventListener;
10use log::info;
11use std::{
12 cell::RefCell,
13 fmt::{Debug, Display, Formatter},
14 rc::Rc,
15};
16use wasm_bindgen::JsCast;
17use web_sys::{window, EventTarget, Window};
18
19/// hooks for window's size
20///
21/// # Arguments
22///
23/// returns: [`UseCursor`]
24///
25/// # Examples
26///
27/// ```
28/// use dioxus::prelude::*;
29/// use dioxus_use_cursor::use_cursor;
30///
31/// fn App(cx: Scope) -> Element {
32/// let cursor = use_cursor(&cx);
33///
34/// cx.render(rsx!(
35/// h1 { "Cursor position: {cursor}" }
36/// ))
37/// }
38/// ```
39#[inline]
40pub fn use_cursor(cx: &ScopeState) -> &UseCursor {
41 UseCursorBuilder::default().use_cursor(cx)
42}
43
44/// hooks for window's size
45///
46/// # Arguments
47///
48/// returns: [`UseHover`]
49///
50/// # Examples
51///
52/// ```
53/// use dioxus::prelude::*;
54/// use dioxus_use_cursor::{use_hover};
55///
56/// fn App(cx: Scope) -> Element {
57/// let hover = use_hover(&cx);
58///
59/// cx.render(rsx!(
60/// h1 { "Hover: {hover}" }
61/// ))
62/// }
63/// ```
64#[inline]
65pub fn use_hover(cx: &ScopeState) -> &UseHover {
66 UseCursorBuilder::default().use_hover(cx)
67}