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, generator: this, context: context);

  _callOnElementCreated(treeMap, domElement, element, context);

  return element;
}