toElements method

List<T>? toElements(
  1. Object? elements, {
  2. DOMTreeMap<T>? treeMap,
  3. DOMContext<T>? context,
  4. bool setTreeMapRoot = true,
})

Implementation

List<T>? toElements(
  Object? elements, {
  DOMTreeMap<T>? treeMap,
  DOMContext<T>? context,
  bool setTreeMapRoot = true,
}) {
  if (elements == null) {
    return null;
  } else if (elements is DOMNode) {
    var e = generate(
      elements,
      treeMap: treeMap,
      context: context,
      setTreeMapRoot: setTreeMapRoot,
    );
    if (e == null) {
      throw StateError("Can't generate element for `DOMNode`: $elements");
    }
    return [e];
  } else if (elements is String) {
    var e = generateFromHTML(
      elements,
      treeMap: treeMap,
      context: context,
      setTreeMapRoot: setTreeMapRoot,
    );
    if (e == null) {
      throw StateError("Can't generate element from `HTML`: $elements");
    }
    return [e];
  } else if (elements is Function) {
    var e = elements();
    return toElements(
      e,
      treeMap: treeMap,
      context: context,
      setTreeMapRoot: setTreeMapRoot,
    );
  } else if (elements is Iterable) {
    return elements
        .expand(
          (e) =>
              toElements(
                e,
                treeMap: treeMap,
                context: context,
                setTreeMapRoot: false,
              ) ??
              <T>[],
        )
        .toList();
  } else if (elements is T) {
    return [elements];
  } else {
    var s = elements.toString();
    if (s.trim().isEmpty) return null;
    var e = generateFromHTML(
      s,
      treeMap: treeMap,
      context: context,
      setTreeMapRoot: setTreeMapRoot,
    );
    if (e == null) return null;
    return [e];
  }
}