ferrijs_std/events/
event.rs1use rquickjs::{prelude::Opt, Result, Value};
4
5use crate::utils::object::ObjectExt;
6
7#[rquickjs::class]
8#[derive(rquickjs::class::Trace, rquickjs::JsLifetime)]
9pub struct Event {
10 event_type: String,
11 bubbles: bool,
12 cancelable: bool,
13 composed: bool,
14}
15
16#[rquickjs::methods]
17impl Event {
18 #[qjs(constructor)]
19 pub fn new(event_type: String, options: Opt<Value<'_>>) -> Result<Self> {
20 let mut bubbles = false;
21 let mut cancelable = false;
22 let mut composed = false;
23 if let Some(options) = options.0 {
24 if let Some(opt) = options.get_optional("bubbles")? {
25 bubbles = opt;
26 }
27 if let Some(opt) = options.get_optional("cancelable")? {
28 cancelable = opt;
29 }
30 if let Some(opt) = options.get_optional("composed")? {
31 composed = opt;
32 }
33 }
34 Ok(Self {
35 event_type,
36 bubbles,
37 cancelable,
38 composed,
39 })
40 }
41
42 #[qjs(get)]
43 pub fn bubbles(&self) -> bool {
44 self.bubbles
45 }
46
47 #[qjs(get)]
48 pub fn cancelable(&self) -> bool {
49 self.cancelable
50 }
51
52 #[qjs(get)]
53 pub fn composed(&self) -> bool {
54 self.composed
55 }
56
57 #[qjs(get, rename = "type")]
58 pub fn event_type(&self) -> String {
59 self.event_type.clone()
60 }
61}