getContextHtml function ✓ 85.7%

Last updated: 2026-03-01T23:25:47.102Z

Metrics

LOC: 21 Complexity: 8 Params: 1 Coverage: 85.7% (6/7 lines, 12x executed)

Signature

getContextHtml(el: HTMLElement): : string | null

Summary

Extracts the relevant surrounding container HTML for a field element. Walks up the DOM looking for a wrapping label, fieldset or common form-group patterns. Returns null when none is found.

Source Code

function getContextHtml(el: HTMLElement): string | null {
  const container =
    el.closest<HTMLElement>(
      'label, fieldset, [class*="field"], [class*="group"], [class*="form-"], [class*="input-wrap"]',
    ) ?? el.parentElement;

  if (!container || container === el) return null;

  // Avoid returning the entire <form> or <body>
  if (
    container.tagName === "FORM" ||
    container.tagName === "BODY" ||
    container.tagName === "MAIN"
  ) {
    return null;
  }

  const raw = container.outerHTML;
  if (raw.length <= MAX_CONTEXT_HTML_CHARS) return raw;
  return raw.slice(0, MAX_CONTEXT_HTML_CHARS) + "…";
}

Dependencies (Outgoing)

graph LR getContextHtml["getContextHtml"] FormField["FormField"] FieldClassifier["FieldClassifier"] ClassifierResult["ClassifierResult"] storeLearnedEntry["storeLearnedEntry"] invalidateClassifier["invalidateClassifier"] addDatasetEntry["addDatasetEntry"] classifyFieldViaProxy["classifyFieldViaProxy"] createLogger["createLogger"] FieldClassifierInput["FieldClassifierInput"] getContextHtml -->|uses| FormField getContextHtml -->|uses| FieldClassifier getContextHtml -->|uses| ClassifierResult getContextHtml -->|uses| storeLearnedEntry getContextHtml -->|uses| invalidateClassifier getContextHtml -->|uses| addDatasetEntry getContextHtml -->|uses| classifyFieldViaProxy getContextHtml -->|uses| createLogger getContextHtml -->|uses| FieldClassifierInput style getContextHtml fill:#dbeafe,stroke:#2563eb,stroke-width:2px click getContextHtml "765515d6b3d443b6.html" click FormField "85cdbded927c91b0.html" click FieldClassifier "a9d6eb547441b869.html" click ClassifierResult "8df4f2837098044e.html" click storeLearnedEntry "2904bc5fab5c017a.html" click invalidateClassifier "a97a4f5efc9940ea.html" click addDatasetEntry "85b3f0de7e9f307e.html" click classifyFieldViaProxy "e50915fd4f56993b.html" click createLogger "70597a0a6b5e9ebb.html" click FieldClassifierInput "20ede86d2d3727e6.html"

Impact (Incoming)

graph LR getContextHtml["getContextHtml"] buildClassifierInput["buildClassifierInput"] buildClassifierInput -->|calls| getContextHtml style getContextHtml fill:#dbeafe,stroke:#2563eb,stroke-width:2px click getContextHtml "765515d6b3d443b6.html" click buildClassifierInput "48b9b13d289a7b63.html"
SourceType
buildClassifierInput calls