onGetOuterHTML method

void onGetOuterHTML(
  1. int? id,
  2. Map<String, dynamic> params
)

Implementation

void onGetOuterHTML(int? id, Map<String, dynamic> params) {
  if (DebugFlags.enableDevToolsLogs) {
    devToolsLogger.finer('[DevTools] DOM.getOuterHTML nodeId=${params['nodeId']}');
  }
  int? nodeId = params['nodeId'];
  final ctx = dbgContext;
  if (nodeId == null || ctx == null) return;
  final targetId = ctx.getTargetIdByNodeId(nodeId);
  Node? node;
  if (targetId != null) {
    node = ctx.getBindingObject(Pointer.fromAddress(targetId)) as Node?;
  }
  if (node is Element) {
    // Generate outer HTML
    String outerHTML = '<${node.tagName.toLowerCase()}';

    // Add attributes
    node.attributes.forEach((key, value) {
      outerHTML += ' $key="$value"';
    });

    // Add children
    if (node.hasChildren()) {
      outerHTML += '>';
      for (Node child in node.childNodes) {
        if (child is TextNode) {
          outerHTML += child.data;
        } else if (child is Element) {
          // Recursively get child HTML
          outerHTML += '...'; // Simplified for now
        }
      }
      outerHTML += '</${node.tagName.toLowerCase()}>';
    } else {
      outerHTML += '/>';
    }

    sendToFrontend(
        id,
        JSONEncodableMap({
          'outerHTML': outerHTML,
        }));
  } else {
    sendToFrontend(
        id,
        JSONEncodableMap({
          'outerHTML': '',
        }));
  }
}