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;
}
