consecuit_html/interfaces/
track.rs1use crate::elem::{HtmlProp, HtmlProps};
2use std::borrow::Cow;
3use web_sys::HtmlTrackElement;
4
5#[allow(non_camel_case_types)]
6#[derive(Clone, PartialEq)]
7pub enum TrackProp {
8 kind(Cow<'static, str>),
9 src(Cow<'static, str>),
10 srclang(Cow<'static, str>),
11 label(Cow<'static, str>),
12 default(bool),
13}
14
15#[sealed::sealed]
16impl crate::elem::HtmlComponent for HtmlTrackElement {
17 type PropEnum = TrackProp;
18}
19#[sealed::sealed]
20impl crate::elem::PropEnum<HtmlTrackElement> for TrackProp {
21 fn unset_on(&self, elem: &HtmlTrackElement) {
22 match self {
23 TrackProp::kind(_) => elem.remove_attribute("kind").unwrap(),
24 TrackProp::src(_) => elem.remove_attribute("src").unwrap(),
25 TrackProp::srclang(_) => elem.remove_attribute("srclang").unwrap(),
26 TrackProp::label(_) => elem.remove_attribute("label").unwrap(),
27 TrackProp::default(_) => elem.remove_attribute("default").unwrap(),
28 }
29 }
30
31 fn set_on(&self, elem: &HtmlTrackElement) {
32 match self {
33 TrackProp::kind(v) => elem.set_kind(v),
34 TrackProp::src(v) => elem.set_src(v),
35 TrackProp::srclang(v) => elem.set_srclang(v),
36 TrackProp::label(v) => elem.set_label(v),
37 TrackProp::default(v) => elem.set_default(*v),
38 }
39 }
40}
41
42impl HtmlProps<HtmlTrackElement> {
43 pub fn kind(mut self, val: impl Into<Cow<'static, str>>) -> Self {
44 let val = val.into();
45 self.0.push_back(HtmlProp::Own(TrackProp::kind(val)));
46 self
47 }
48
49 pub fn src(mut self, val: impl Into<Cow<'static, str>>) -> Self {
50 let val = val.into();
51 self.0.push_back(HtmlProp::Own(TrackProp::src(val)));
52 self
53 }
54
55 pub fn srclang(mut self, val: impl Into<Cow<'static, str>>) -> Self {
56 let val = val.into();
57 self.0.push_back(HtmlProp::Own(TrackProp::srclang(val)));
58 self
59 }
60
61 pub fn label(mut self, val: impl Into<Cow<'static, str>>) -> Self {
62 let val = val.into();
63 self.0.push_back(HtmlProp::Own(TrackProp::label(val)));
64 self
65 }
66
67 pub fn default(mut self, val: bool) -> Self {
68 self.0.push_back(HtmlProp::Own(TrackProp::default(val)));
69 self
70 }
71}