(v: number, lo: number, hi: number)
| 95 | const nl = (s: string) => s.replace(/\r?\n/g, "\r\n"); |
| 96 | |
| 97 | const clamp = (v: number, lo: number, hi: number) => |
| 98 | Math.max(lo, Math.min(hi, v)); |
| 99 | |
| 100 | // Stable empty-array default so the prop reference doesn't change each render. |
| 101 | const NO_PACKAGES: string[] = []; |