/** * RegexTesterTab — live regex pattern tester and log file preview. * * Provides two panels: * 1. Single-line tester: paste a log line and a regex, get a match result. * 2. Log file preview: read N lines from a server file and highlight matches. */ import { useCallback, useState } from "react"; import { Badge, Button, Field, Input, MessageBar, MessageBarBody, Text, Textarea, tokens, } from "@fluentui/react-components"; import { Checkmark24Regular, Dismiss24Regular, } from "@fluentui/react-icons"; import { useLogPreview, useRegexTester } from "../../hooks/useConfig"; import { useConfigStyles } from "./configStyles"; /** * Tab component for testing regex patterns against log lines or full files. * * @returns JSX element. */ export function RegexTesterTab(): React.JSX.Element { const styles = useConfigStyles(); const { result, testing, test } = useRegexTester(); const { preview, loading: previewing, run: runPreview } = useLogPreview(); const [logLine, setLogLine] = useState(""); const [pattern, setPattern] = useState(""); const [previewPath, setPreviewPath] = useState(""); const [previewLines, setPreviewLines] = useState("200"); const handleTest = useCallback(async () => { if (!logLine.trim() || !pattern.trim()) return; await test({ log_line: logLine, fail_regex: pattern }); }, [logLine, pattern, test]); const handlePreview = useCallback(async () => { if (!previewPath.trim() || !pattern.trim()) return; await runPreview({ log_path: previewPath, fail_regex: pattern, num_lines: Number(previewLines) || 200, }); }, [previewPath, pattern, previewLines, runPreview]); return (
{/* Single-line tester */} Regex Tester Test a pattern against a single sample log line.
{ setPattern(d.value); }} />