@if (!url()) { Open an http(s) page to start mapping form fields. } @else if (draft(); as d) {
{{ url()?.host }} {{ url()?.pathname }} @if (d.irrelevant) { irrelevant }
@if (issues().length) { } @for (form of d.forms; track $index; let i = $index) {

Container

@if (form.pendingContainer?.length) {

Pick which element is the form container:

@for (cand of form.pendingContainer; track $index) {
{{ cand.label }} (<{{ cand.tag }}>) {{ cand.selector }} @if (cand.structural) { brittle (positional) }
}
} @else if (form.container?.length) { @for (entry of form.container; track $index) { } } @else {

Right-click the page → Bitwarden → Webmapper → Pick form container…

}

Fields

@if (keysOf(form.fields).length === 0) {

Right-click an input → Bitwarden → Webmapper → Field › …

} @else { @for (key of keysOf(form.fields); track key) {
{{ key }}
@for (entry of form.fields[key]; track $index) { }
} }

Actions

@if (keysOf(form.actions).length === 0) {

Right-click a button → Bitwarden → Webmapper → Action › …

} @else { @for (key of keysOf(form.actions); track key) {
{{ key }}
@for (entry of form.actions[key]; track $index) { }
} }
} @if (exportText(); as text) {

Export

}
}
@if (isEditing(address)) { } @else { {{ selectorText(entry.selector) }} }
@if (entry.warnings.length) {
{{ entry.warnings.join(" · ") }}
} @if (entry.alternates.length) {
{{ entry.alternates.length }} alternate{{ entry.alternates.length === 1 ? "" : "s" }}:
@for (alt of entry.alternates; track $index) {
{{ selectorText(alt) }}
}
}