"use client";

import { useEffect, useRef } from "react";

interface EditorProps {
  value: string;
  onChange: (value: string) => void;
  streaming: boolean;
}

// 中栏正文编辑器：宋体、720px 居中、行高 1.9（UX §2.3 / §6.3）。
// 流式中显示朱砂光标提示（prefers-reduced-motion 下不闪烁，见 globals.css）。
export function Editor({ value, onChange, streaming }: EditorProps) {
  const ref = useRef<HTMLTextAreaElement>(null);

  // 自适应高度：textarea 高度=内容高度（overflow-hidden 不内部滚动），由外层写作区
  // 单一滚动条统管。修复正文出现嵌套滚动条 + 定高 60vh 不铺满展示区的怪象。
  // min-h-[60vh] 仍作空稿时的最小可写高度（内容更长时按内容增高、外层滚动）。
  useEffect(() => {
    const el = ref.current;
    if (!el) return;
    el.style.height = "auto";
    el.style.height = `${el.scrollHeight}px`;
  }, [value]);

  return (
    <div className="mx-auto max-w-prose">
      <label htmlFor="chapter-editor" className="sr-only">
        正文编辑器
      </label>
      <textarea
        ref={ref}
        id="chapter-editor"
        value={value}
        onChange={(e) => onChange(e.target.value)}
        readOnly={streaming}
        aria-busy={streaming}
        placeholder="夜色如墨……点击「写本章」让 AI 起草，或直接在此书写。"
        className="block min-h-[60vh] w-full resize-none overflow-hidden bg-transparent font-serif text-[18px] leading-[1.9] text-ink placeholder:text-ink-soft/50 focus:outline-none"
      />
      {streaming ? (
        <span
          className="typewriter-cursor ml-0.5 inline-block h-[1.2em] w-[2px] translate-y-1 bg-cinnabar align-middle"
          aria-hidden="true"
        />
      ) : null}
    </div>
  );
}
