"use strict";
const toHaveDescription$1 = require("../../../../_virtual/to-have-description.cjs");
require("./utils.cjs");
const utils = require("../../../../_virtual/utils.cjs");
Object.defineProperty(toHaveDescription$1.__exports, "__esModule", {
  value: true
});
toHaveDescription$1.__exports.toHaveDescription = toHaveDescription;
var _utils = utils.__exports;
function toHaveDescription(htmlElement, checkWith) {
  (0, _utils.deprecate)("toHaveDescription", "Please use toHaveAccessibleDescription.");
  (0, _utils.checkHtmlElement)(htmlElement, toHaveDescription, this);
  const expectsDescription = checkWith !== void 0;
  const descriptionIDRaw = htmlElement.getAttribute("aria-describedby") || "";
  const descriptionIDs = descriptionIDRaw.split(/\s+/).filter(Boolean);
  let description = "";
  if (descriptionIDs.length > 0) {
    const document = htmlElement.ownerDocument;
    const descriptionEls = descriptionIDs.map((descriptionID) => document.getElementById(descriptionID)).filter(Boolean);
    description = (0, _utils.normalize)(descriptionEls.map((el) => el.textContent).join(" "));
  }
  return {
    pass: expectsDescription ? checkWith instanceof RegExp ? checkWith.test(description) : this.equals(description, checkWith) : Boolean(description),
    message: () => {
      const to = this.isNot ? "not to" : "to";
      return (0, _utils.getMessage)(this, this.utils.matcherHint(`${this.isNot ? ".not" : ""}.toHaveDescription`, "element", ""), `Expected the element ${to} have description`, this.utils.printExpected(checkWith), "Received", this.utils.printReceived(description));
    }
  };
}
module.exports = toHaveDescription$1.__exports;
//# sourceMappingURL=to-have-description.cjs.map
