import { __exports as toBeInvalid$1 } from "../../../../_virtual/to-be-invalid.js";
import "./utils.js";
import { __exports as utils } from "../../../../_virtual/utils.js";
Object.defineProperty(toBeInvalid$1, "__esModule", {
  value: true
});
toBeInvalid$1.toBeInvalid = toBeInvalid;
toBeInvalid$1.toBeValid = toBeValid;
var _utils = utils;
const FORM_TAGS = ["form", "input", "select", "textarea"];
function isElementHavingAriaInvalid(element) {
  return element.hasAttribute("aria-invalid") && element.getAttribute("aria-invalid") !== "false";
}
function isSupportsValidityMethod(element) {
  return FORM_TAGS.includes((0, _utils.getTag)(element));
}
function isElementInvalid(element) {
  const isHaveAriaInvalid = isElementHavingAriaInvalid(element);
  if (isSupportsValidityMethod(element)) {
    return isHaveAriaInvalid || !element.checkValidity();
  } else {
    return isHaveAriaInvalid;
  }
}
function toBeInvalid(element) {
  (0, _utils.checkHtmlElement)(element, toBeInvalid, this);
  const isInvalid = isElementInvalid(element);
  return {
    pass: isInvalid,
    message: () => {
      const is = isInvalid ? "is" : "is not";
      return [this.utils.matcherHint(`${this.isNot ? ".not" : ""}.toBeInvalid`, "element", ""), "", `Received element ${is} currently invalid:`, `  ${this.utils.printReceived(element.cloneNode(false))}`].join("\n");
    }
  };
}
function toBeValid(element) {
  (0, _utils.checkHtmlElement)(element, toBeValid, this);
  const isValid = !isElementInvalid(element);
  return {
    pass: isValid,
    message: () => {
      const is = isValid ? "is" : "is not";
      return [this.utils.matcherHint(`${this.isNot ? ".not" : ""}.toBeValid`, "element", ""), "", `Received element ${is} currently valid:`, `  ${this.utils.printReceived(element.cloneNode(false))}`].join("\n");
    }
  };
}
export {
  toBeInvalid$1 as default
};
//# sourceMappingURL=to-be-invalid.js.map
