/**
 * 千分位金额复制还原 - 全局监听
 *
 * 原理：监听 document 的 copy 事件，检测选中文本是否为千分位格式数字，
 * 是则去除逗号后写入剪贴板，否则走浏览器默认行为。
 */
export function setupCopyFormatRestore() {
  document.addEventListener("copy", (e) => {
    let selectedText = window.getSelection().toString();
    // 去掉前后空格
    selectedText = selectedText.trim();
    // 不含逗号，无需处理
    if (!selectedText.includes(",")) return;
    // 严格匹配：完整千分位格式
    // 匹配：1,234,567.89 / 3,000 / 123,456
    const isFullFormatted = /^\d{1,3}(,\d{3})*(\.\d+)?$/.test(selectedText);
    // 宽松匹配：包含千分位片段（部分选中场景）
    // 匹配：1,23 / 3,000. / ,567  排除：中文逗号、非数字内容
    const isPartialFormatted =
      /\d+,\d{1,3}/.test(selectedText) && !/[^\d,.]/.test(selectedText);
    // 不是千分位格式，走默认行为
    if (!isFullFormatted && !isPartialFormatted) return;
    // 去除逗号
    e.preventDefault();
    let stripped = selectedText.replace(/,/g, "");
    // 末尾小数点，去掉（如 "3,000." → "3000"）
    if (stripped.endsWith(".")) {
      stripped = stripped.slice(0, -1);
    }
    // 前置小数点，补零（如 ".89" → "0.89"）
    if (stripped.startsWith(".")) {
      stripped = "0" + stripped;
    }
    // 去逗号后无有效数字，回退原文本
    if (!stripped || !/\d/.test(stripped)) {
      e.clipboardData.setData("text/plain", selectedText);
      return;
    }
    e.clipboardData.setData("text/plain", stripped);
  });
}
