1mod group;
2mod input;
3mod widget_base;
4mod widget_ext;
5
6pub use group::*;
7pub use input::*;
8pub use widget_base::*;
9pub use widget_ext::*;
10
11use crate::widget::Widget;
12
13#[derive(Debug)]
14pub struct ElementIter {
15 list: web_sys::HtmlCollection,
16 index: u32,
17}
18
19pub trait IsElementIterable {
20 fn iter(&self) -> ElementIter;
21}
22
23impl IsElementIterable for web_sys::HtmlCollection {
24 fn iter(&self) -> ElementIter {
25 ElementIter {
26 list: self.clone(),
27 index: 0,
28 }
29 }
30}
31
32impl Iterator for ElementIter {
33 type Item = Widget;
34 fn next(&mut self) -> Option<Self::Item> {
35 if let Some(item) = self.list.item(self.index) {
36 self.index += 1;
37 Some(Widget::from_elem(item))
38 } else {
39 None
40 }
41 }
42}