export type TextSegment = { type: 'text' | 'marker'; text: string }; const MARKER_PATTERN = /(\[unleserlich\]|\[\.{3}\])/g; export function splitByMarkers(input: string): TextSegment[] { if (!input) return []; const segments: TextSegment[] = []; let lastIndex = 0; for (const match of input.matchAll(MARKER_PATTERN)) { const matchStart = match.index; if (matchStart > lastIndex) { segments.push({ type: 'text', text: input.slice(lastIndex, matchStart) }); } segments.push({ type: 'marker', text: match[0] }); lastIndex = matchStart + match[0].length; } if (lastIndex < input.length) { segments.push({ type: 'text', text: input.slice(lastIndex) }); } return segments; }