#[derive(Debug, Clone, serde::Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CalendarEventDetail {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub all_day: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub editable: Option<bool>,
#[serde(
deserialize_with = "super::deserialize_optional_date",
skip_serializing
)]
pub start: Option<web_sys::js_sys::Date>,
#[serde(
deserialize_with = "super::deserialize_optional_date",
skip_serializing
)]
pub end: Option<web_sys::js_sys::Date>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_str: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_str: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub display: Option<super::EventDisplay>,
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
#[serde(
deserialize_with = "super::deserialize_optional_js_value",
skip_serializing_if = "Option::is_none"
)]
extended_props: Option<web_sys::js_sys::Object>,
}
impl TryFrom<web_sys::wasm_bindgen::JsValue> for CalendarEventDetail {
type Error = web_sys::wasm_bindgen::JsValue;
fn try_from(value: web_sys::wasm_bindgen::JsValue) -> Result<Self, Self::Error> {
Ok(serde_wasm_bindgen::from_value(value)?)
}
}
impl CalendarEventDetail {
#[must_use]
pub fn extended_props<T: serde::de::DeserializeOwned>(&self) -> Option<T> {
self.extended_props
.clone()
.and_then(|obj| serde_wasm_bindgen::from_value(obj.into()).ok())
}
}