package org.jboss.gwt.elemento.core; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import elemental2.dom.HTMLElement; import elemental2.dom.Node; import elemental2.dom.NodeList; /** * Provides an iterator over a list of nodes. Iterates only over elements, nodes will be skipped. The iterator does * <strong>not</strong> support the {@link #remove()} operation. * * @author Harald Pehl */ public class NodeListIterator implements Iterator<HTMLElement> { private final Iterator<HTMLElement> iterator; NodeListIterator(final NodeList<Node> nodes) { List<HTMLElement> elements = new ArrayList<>(); for (int i = 0; i < nodes.getLength(); i++) { if (nodes.item(i) instanceof HTMLElement) { elements.add(((HTMLElement) nodes.item(i))); } } this.iterator = elements.iterator(); } @Override public boolean hasNext() { return iterator.hasNext(); } @Override public HTMLElement next() { return iterator.next(); } }