"use client" import { useEffect, useMemo } from "react" import { cn } from "@/lib/utils" type JsonCodeEditorProps = { value: string onChange: (value: string) => void onValidationChange?: (error: string | null) => void disabled?: boolean className?: string } function validateJson(value: string) { const text = value.trim() if (!text) { return null } try { JSON.parse(text) return null } catch (error) { return error instanceof Error ? error.message : "JSON 格式不合法" } } export function JsonCodeEditor({ value, onChange, onValidationChange, disabled = false, className, }: JsonCodeEditorProps) { const error = useMemo(() => validateJson(value), [value]) const lineCount = Math.max(1, value.split("\n").length) useEffect(() => { onValidationChange?.(error) }, [error, onValidationChange]) return (