import { useMemo } from 'react'

export interface DocStats {
  /** 单词数（按空白字符分割） */
  words: number
  /** 总字符数（含空白字符） */
  chars: number
  /** 字符数（不含空白字符） */
  charsNoSpace: number
  /** 行数 */
  lines: number
}

/**
 * 计算文档统计信息：单词数、字符数（含/不含空格）、行数。
 * 对空文档或 undefined 返回全零值。
 */
export function computeDocStats(content: string | undefined | null): DocStats {
  if (!content) {
    return { words: 0, chars: 0, charsNoSpace: 0, lines: 0 }
  }

  const chars = content.length
  const charsNoSpace = content.replace(/\s/g, '').length
  const words = content.trim()
    ? content.trim().split(/\s+/).length
    : 0
  const lines = content === '' ? 0 : content.split(/\r?\n/).length

  return { words, chars, charsNoSpace, lines }
}

/**
 *  Hook：根据文档内容实时计算统计信息。
 *  使用 useMemo 避免不必要的重新计算。
 */
export function useDocStats(content: string | undefined | null): DocStats {
  return useMemo(() => computeDocStats(content), [content])
}
