import { ref as M, computed as u, watch as V } from "vue";
import { getMessageValidationReport as R, validateMessages as b } from "./messageValidator.js";
function T(a, d = {}) {
  const { autoValidate: h = !0, debounce: r = 0 } = d, l = M(null), p = u(() => {
    var o;
    return ((o = l.value) == null ? void 0 : o.isValid) ?? !0;
  }), s = u(() => {
    var o;
    return ((o = l.value) == null ? void 0 : o.errors) ?? [];
  }), g = u(() => {
    var o;
    return ((o = l.value) == null ? void 0 : o.warnings) ?? [];
  }), m = u(() => s.value.length), $ = u(() => g.value.length), v = u(() => l.value ? R(l.value) : "Валидация не выполнена");
  function c() {
    const o = b(a.value);
    return l.value = o, o;
  }
  function w() {
    l.value = null;
  }
  function E() {
    if (!l.value) {
      console.log("Валидация не выполнена");
      return;
    }
    if (console.group("📋 Детальный отчет валидации сообщений"), console.log(v.value), s.value.length > 0) {
      console.log(`
📊 Детали ошибок:`);
      const o = /* @__PURE__ */ new Map();
      s.value.forEach((e) => {
        const n = e.path.match(/messages\[(\d+)\]/);
        if (n) {
          const t = parseInt(n[1]);
          o.has(t) || o.set(t, []), o.get(t).push(e);
        }
      });
      let f = 1;
      o.forEach((e, n) => {
        console.group(`
🔴 Сообщение [${n}] - ошибок: ${e.length}`), e.forEach((t) => {
          console.log(`
${f}. ${t.path}`), console.log(`   Сообщение: ${t.message}`), t.value !== void 0 && console.log("   Значение поля:", t.value), f++;
        }), a.value && a.value[n] && (console.log(`
📦 Полный объект сообщения:`), console.log(a.value[n])), console.groupEnd();
      });
      const i = s.value.filter((e) => !e.path.match(/messages\[(\d+)\]/));
      i.length > 0 && (console.group(`
⚠️ Общие ошибки - ${i.length}`), i.forEach((e, n) => {
        console.log(`
${n + 1}. ${e.path}`), console.log(`   Сообщение: ${e.message}`), e.value !== void 0 && console.log("   Значение:", e.value);
      }), console.groupEnd());
    }
    console.groupEnd();
  }
  if (h) {
    let o = null;
    V(
      a,
      () => {
        r > 0 ? (o !== null && clearTimeout(o), o = window.setTimeout(() => {
          c(), o = null;
        }, r)) : c();
      },
      { deep: !0, immediate: !0 }
    );
  }
  return {
    validationResult: l,
    isValid: p,
    errors: s,
    warnings: g,
    errorCount: m,
    warningCount: $,
    report: v,
    validate: c,
    reset: w,
    showReport: E
  };
}
export {
  T as useMessageValidator
};
