"use strict";
const toBeChecked$1 = require("../../../../_virtual/to-be-checked.cjs");
require("../../../aria-query/lib/index.cjs");
require("./utils.cjs");
const index = require("../../../../_virtual/index5.cjs");
const utils = require("../../../../_virtual/utils.cjs");
Object.defineProperty(toBeChecked$1.__exports, "__esModule", {
  value: true
});
toBeChecked$1.__exports.toBeChecked = toBeChecked;
var _ariaQuery = index.__exports;
var _utils = utils.__exports;
function toBeChecked(element) {
  (0, _utils.checkHtmlElement)(element, toBeChecked, this);
  const isValidInput = () => {
    return element.tagName.toLowerCase() === "input" && ["checkbox", "radio"].includes(element.type);
  };
  const isValidAriaElement = () => {
    return roleSupportsChecked(element.getAttribute("role")) && ["true", "false"].includes(element.getAttribute("aria-checked"));
  };
  if (!isValidInput() && !isValidAriaElement()) {
    return {
      pass: false,
      message: () => `only inputs with type="checkbox" or type="radio" or elements with ${supportedRolesSentence()} and a valid aria-checked attribute can be used with .toBeChecked(). Use .toHaveValue() instead`
    };
  }
  const isChecked = () => {
    if (isValidInput())
      return element.checked;
    return element.getAttribute("aria-checked") === "true";
  };
  return {
    pass: isChecked(),
    message: () => {
      const is = isChecked() ? "is" : "is not";
      return [this.utils.matcherHint(`${this.isNot ? ".not" : ""}.toBeChecked`, "element", ""), "", `Received element ${is} checked:`, `  ${this.utils.printReceived(element.cloneNode(false))}`].join("\n");
    }
  };
}
function supportedRolesSentence() {
  return (0, _utils.toSentence)(supportedRoles().map((role) => `role="${role}"`), {
    lastWordConnector: " or "
  });
}
function supportedRoles() {
  return _ariaQuery.roles.keys().filter(roleSupportsChecked);
}
function roleSupportsChecked(role) {
  var _roles$get;
  return ((_roles$get = _ariaQuery.roles.get(role)) == null ? void 0 : _roles$get.props["aria-checked"]) !== void 0;
}
module.exports = toBeChecked$1.__exports;
//# sourceMappingURL=to-be-checked.cjs.map
