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];
  }
}