(text: string, maxChars: number)
| 41 | } |
| 42 | |
| 43 | function clampText(text: string, maxChars: number): string { |
| 44 | if (maxChars <= 0) return ""; |
| 45 | const normalized = text ?? ""; |
| 46 | if (normalized.length <= maxChars) return normalized; |
| 47 | if (maxChars <= 1) return normalized.slice(0, maxChars); |
| 48 | return normalized.slice(0, maxChars - 1) + "…"; |
| 49 | } |
| 50 | |
| 51 | function stableStringify(value: unknown): string { |
| 52 | if (value === null || value === undefined) return String(value); |