buildOpenTagHTML method

String buildOpenTagHTML({
  1. bool openCloseTag = false,
  2. bool resolveDSX = false,
  3. DOMContext<Object>? domContext,
})

Implementation

String buildOpenTagHTML(
    {bool openCloseTag = false,
    bool resolveDSX = false,
    DOMContext? domContext}) {
  var html = '<$tag';

  final attributes = _attributes;
  if (attributes != null && attributes.isNotEmpty) {
    var attributeId = attributes['id'];
    var attributeClass = attributes['class'];
    var attributeStyle = attributes['style'];

    html = DOMAttribute.append(html, ' ', attributeId,
        domContext: domContext, resolveDSX: resolveDSX);
    html = DOMAttribute.append(html, ' ', attributeClass,
        domContext: domContext, resolveDSX: resolveDSX);
    html = DOMAttribute.append(html, ' ', attributeStyle,
        domContext: domContext, resolveDSX: resolveDSX);

    var attributesNormal = attributes.values
        .where((v) => v.hasValue && !_isPriorityAttribute(v) && !v.isBoolean);

    for (var attr in attributesNormal) {
      html = DOMAttribute.append(html, ' ', attr,
          domContext: domContext, resolveDSX: resolveDSX);
    }

    var attributesBoolean = attributes.values
        .where((v) => v.hasValue && !_isPriorityAttribute(v) && v.isBoolean);

    for (var attr in attributesBoolean) {
      html = DOMAttribute.append(html, ' ', attr,
          domContext: domContext, resolveDSX: resolveDSX);
    }
  }

  if (_resolvedDSXEventAttributes != null) {
    for (var entry in _resolvedDSXEventAttributes!.entries) {
      var name = entry.key;
      var value = entry.value.toString();
      html += ' $name="$value"';
    }
  }

  html += openCloseTag ? '/>' : '>';

  return html;
}