1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//! Curated browser-API surface for Pine compounds.
//!
//! Re-exports the `web_sys` types Pine primitives reach for most
//! often, so authors don't have to maintain their own `web-sys`
//! `features = [...]` list every time they touch a new browser
//! API. Import from here:
//!
//! ```ignore
//! use pocopine_core::web::{DragEvent, DataTransfer, FileList};
//! ```
//!
//! Anything not in this list either (a) belongs in `pocopine-core`
//! proper because it's load-bearing for the framework, or (b) is
//! niche enough that the consuming crate should add its own
//! `web-sys` feature.
//!
//! ## Handler-typed vs read-only events
//!
//! The types in [`handler_events`] implement
//! [`crate::handler::FromHandlerArg`] and can appear directly as a
//! parameter on a `#[handlers]` method
//! (e.g. `fn on_click(&mut self, ev: MouseEvent)`). The types in
//! [`read_only_events`] are re-exported for handlers that take the
//! `Event` supertype and downcast, or for code that consumes the
//! event outside handler dispatch — typing a handler parameter
//! against one of those directly produces a
//! `trait FromHandlerArg is not implemented` compile error.
//!
//! The two groups are exposed as nested modules (not just doc
//! sections) so the distinction is enforceable by `rustfmt` — a
//! single `pub use` list gets sorted alphabetically and loses the
//! grouping.
/// Events that implement [`crate::handler::FromHandlerArg`] and
/// can appear directly as a `#[handlers]` method parameter.
/// Events NOT in the `FromHandlerArg` impl list — accept via the
/// `Event` supertype + downcast, or consume outside handler dispatch.
// Re-export both event groups at the module root so authors can
// `use pocopine_core::web::DragEvent` directly without remembering
// which subgroup it sits in. The grouping above is documentation;
// the flat surface here is the ergonomic path.
pub use *;
pub use *;
// Drag-and-drop + file flows.
pub use ;
// DOM essentials.
pub use ;