createWithRegisteredElementGenerator method

T? createWithRegisteredElementGenerator(
  1. DOMElement? domParent,
  2. T? parent,
  3. DOMElement domElement,
  4. DOMTreeMap<T> treeMap,
  5. DOMContext<T>? context,
)

Implementation

T? createWithRegisteredElementGenerator(DOMElement? domParent, T? parent,
    DOMElement domElement, DOMTreeMap<T> treeMap, DOMContext<T>? context) {
  var tag = domElement.tag;
  var generator = _elementsGenerators[tag];
  if (generator == null) return null;

  T? contentHolder;
  if (generator.usesContentHolder) {
    contentHolder = createElement('div');

    if (parent != null) {
      addChildToElement(parent, contentHolder);
    }

    buildNodes(
        domElement, contentHolder, domElement.content, treeMap, context);

    if (parent != null) {
      removeChildFromElement(parent, contentHolder);
    }
  }

  var element = generator.generate(
      this,
      treeMap,
      tag,
      domParent,
      parent,
      domElement,
      domElement.domAttributes,
      contentHolder,
      domElement.content,
      context);

  treeMap.mapTree(domElement, element);

  _callOnElementCreated(treeMap, domElement, element, context);

  return element;
}