(issues: LayoutIssue[])
| 140 | } |
| 141 | |
| 142 | export function dedupeLayoutIssues(issues: LayoutIssue[]): LayoutIssue[] { |
| 143 | const seen = new Set<string>(); |
| 144 | const result: LayoutIssue[] = []; |
| 145 | |
| 146 | for (const issue of issues) { |
| 147 | const key = [ |
| 148 | issue.code, |
| 149 | issue.severity, |
| 150 | issue.time.toFixed(3), |
| 151 | issue.selector, |
| 152 | issue.containerSelector ?? "", |
| 153 | issue.text ?? "", |
| 154 | issue.overflow ? formatOverflow(issue.overflow) : "", |
| 155 | ].join("|"); |
| 156 | if (seen.has(key)) continue; |
| 157 | seen.add(key); |
| 158 | result.push(issue); |
| 159 | } |
| 160 | |
| 161 | return result; |
| 162 | } |
| 163 | |
| 164 | export function collapseStaticLayoutIssues(issues: LayoutIssue[]): LayoutIssue[] { |
| 165 | const groups = new Map< |
no test coverage detected