{"version":3,"sources":["jsdelivr-header.js","/npm/zeew-canvas@1.0.6/src/Card.js"],"names":[],"mappings":"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","file":"/npm/zeew-canvas@1.0.6/src/Card.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/zeew-canvas@1.0.6/src/Card.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","//@ts-check\r\nconst Canvas = require(\"canvas\");\r\nconst fonts = require(\"font-list\");\r\nconst path = require(\"path\");\r\nconst isImageUrl = require(\"is-image-url\");\r\nconst ZeewError = require(\"../utils/ZeewError.js\");\r\n\r\n//data\r\nlet checkColor = /^#([0-9A-F]{3}){1,2}$/i;\r\n\r\nclass Card {\r\n  /**\r\n   * @param {number} ancho - El ancho de tu lienzo 👈 👉\r\n   * @param {number} alto - La altura de tu lienzo 👆 👇\r\n   */\r\n  constructor(ancho, alto) {\r\n    if (!ancho || !alto)\r\n      throw new ZeewError(`Falta añadir el ${!ancho ? \"ancho\" : \"alto\"}.`);\r\n    if (isNaN(ancho) || isNaN(alto))\r\n      throw new ZeewError(`Los valores Ancho y Alto deben de ser números.`);\r\n\r\n    this.canvas = Canvas.createCanvas(ancho, alto);\r\n    this.ctx = this.canvas.getContext(\"2d\");\r\n    this.background = false;\r\n    this.filter = false;\r\n    this.getFonts = {\r\n      fonts: function (number) {\r\n        fonts.getFonts().then((e) => console.log(number ? e[number] : e));\r\n      },\r\n      length: function () {\r\n        fonts.getFonts().then((e) => console.log(e.length - 1));\r\n      },\r\n    };\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param {{color: String, imagen: String, filter: { rotate: Number } }} opts - Opciones para la imagen\r\n   * @returns\r\n\r\n   */\r\n  async setBackground(opts) {\r\n    this.ctx.save();\r\n    if (opts && typeof opts !== \"object\")\r\n      throw new ZeewError(`El filtro debe ser un objecto`);\r\n    if (opts.color) {\r\n      if (typeof opts.color !== \"string\")\r\n        throw new ZeewError(`El color debe de ser una string`);\r\n      if (!checkColor.test(opts.color))\r\n        throw new ZeewError(`El color debe de ser un color hexadecimal`);\r\n\r\n      this.ctx.fillStyle = `${opts.color}`;\r\n      this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);\r\n      this.ctx.restore();\r\n      return (this.background = true);\r\n    }\r\n\r\n    if (typeof opts.filter?.rotate == \"number\") {\r\n      if (opts.filter?.rotate < 0 || opts.filter?.rotate > 360)\r\n        throw new ZeewError(\r\n          `La rotación se mide en grados, no puede ser ni menor a 0 grados ni mayor a 360 grados.`\r\n        );\r\n\r\n      this.ctx.translate(0.5 * this.canvas.width, 0.5 * this.canvas.height);\r\n      this.ctx.rotate((Math.PI / 180) * opts.filter?.rotate);\r\n      this.ctx.translate(\r\n        -(0.5 * this.canvas.width),\r\n        -(0.5 * this.canvas.height)\r\n      );\r\n    }\r\n\r\n    if (typeof opts.imagen !== \"string\")\r\n      throw new ZeewError(`La imagen debe de ser una string`);\r\n    else if (!isImageUrl(opts.imagen))\r\n      throw new ZeewError(`La imagen debe de ser una url o una ruta de imagen`);\r\n    const image = await Canvas.loadImage(opts.imagen);\r\n    this.ctx.drawImage(image, 0, 0, this.canvas.width, this.canvas.height);\r\n    this.background = true;\r\n    this.ctx.restore();\r\n  }\r\n\r\n  /**\r\n   * @param {string} args - El texto a añadir\r\n   * @param {number} x - La posición X donde quieras colocar el texto\r\n   * @param {number} y - La posición Y donde quieras colocar el texto\r\n   * @param {{size: Number, color: String, rotate: Number,font: String }} [opts] - Opciones para el texto\r\n   */\r\n  addText(\r\n    args,\r\n    x,\r\n    y,\r\n    opts = { size: 20, color: \"#000000\", rotate: 0, font: \"Arial\" }\r\n  ) {\r\n    this.ctx.save();\r\n    let { size, color, rotate, font } = opts;\r\n    if (x == null || y == null)\r\n      throw new ZeewError(`Falta el siguiente valor: ${!x ? \"X\" : \"Y\"}`);\r\n    if (opts.font && typeof opts.font !== \"string\")\r\n      throw new ZeewError(`La fuente debe de ser una string`);\r\n    if (isNaN(x) || isNaN(y))\r\n      throw new ZeewError(`Los valores X e Y deben de ser números.`);\r\n    if (opts.size && typeof opts.size !== \"number\")\r\n      throw new ZeewError(`El tamaño de fuente debe de ser un número`);\r\n    if (opts.color && typeof opts.color !== \"string\")\r\n      throw new ZeewError(`El color de fuente debe de ser una string`);\r\n    if (opts.color && !checkColor.test(opts.color))\r\n      throw new ZeewError(\r\n        `El color de la fuente debe de ser un color hexadecimal`\r\n      );\r\n    if (opts.rotate && isNaN(opts.rotate))\r\n      throw new ZeewError(`El valor de la rotación tiene que ser un número.`);\r\n\r\n    this.ctx.font = `${opts.size}px ${opts.font ?? \"Arial\"}`;\r\n    this.ctx.fillStyle = `${opts.color}`;\r\n\r\n    if (opts.rotate !== 0) {\r\n      if (opts.rotate < 0 || opts.rotate > 360)\r\n        throw new ZeewError(\r\n          `La rotación se mide en grados, no puede ser ni menor a 0 grados ni mayor a 360 grados.`\r\n        );\r\n\r\n      this.ctx.translate(x + 0.5 * size, y + 0.5 * opts.size);\r\n      this.ctx.rotate((Math.PI / 180) * opts.rotate);\r\n      this.ctx.translate(-(x + 0.5 * opts.size), -(y + 0.5 * opts.size));\r\n    }\r\n\r\n    this.ctx.fillText(args, x, y);\r\n    this.ctx.restore();\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param {String} file - La ruta de la imagen o la url de la imagen\r\n   * @param {Number} x - La posición X donde quieras colocar la imagen\r\n   * @param {Number} y - La posición Y donde quieras colocar la imagen\r\n   * @param {{width: Number, height: Number, filter: { rotate: Number } }} opts - Opciones para la imagen\r\n   */\r\n  async addImage(file, x, y, opts) {\r\n    this.ctx.save();\r\n    if (!file) throw new ZeewError(`Debes de añadir una ruta o enlace`);\r\n    if (!isImageUrl(file))\r\n      throw new ZeewError(`El enlace o ruta proporcionado no es una imagen`);\r\n    if (!x || !y)\r\n      throw new ZeewError(`Falta por añadir un valor: ${!x ? \"X\" : \"Y\"}`);\r\n    if (\r\n      (opts.width && typeof opts.width !== \"number\") ||\r\n      (opts.height && typeof opts.height !== \"number\")\r\n    )\r\n      throw new ZeewError(`El ancho y alto de la imagen deben ser números`);\r\n\r\n    const image = await Canvas.loadImage(file);\r\n    opts.width = opts.width\r\n      ? opts.width\r\n      : image.width > this.canvas.width / 2\r\n      ? image.width / 2.5\r\n      : image.width;\r\n    opts.height = opts.height\r\n      ? opts.height\r\n      : image.height > this.canvas.height / 2\r\n      ? image.height / 2.5\r\n      : image.height;\r\n\r\n    if (opts.filter && typeof opts.filter !== \"object\")\r\n      throw new ZeewError(`El filtro debe ser un objecto`);\r\n    //filters\r\n    if (typeof opts.filter?.rotate == \"number\") {\r\n      if (opts.filter?.rotate < 0 || opts.filter?.rotate > 360)\r\n        throw new ZeewError(\r\n          `La rotación se mide en grados, no puede ser ni menor a 0 grados ni mayor a 360 grados.`\r\n        );\r\n\r\n      this.ctx.translate(x + 0.5 * opts.width, y + 0.5 * opts.height);\r\n      this.ctx.rotate((Math.PI / 180) * opts.filter?.rotate);\r\n      this.ctx.translate(-(x + 0.5 * opts.width), -(y + 0.5 * opts.height));\r\n    }\r\n\r\n    await this.ctx.drawImage(image, x, y, opts.width, opts.height);\r\n    this.ctx.restore();\r\n  }\r\n\r\n  getImage() {\r\n    return this.canvas.toBuffer();\r\n  }\r\n}\r\n\r\nmodule.exports = Card;\r\n//De 167 para Zeew ❤️\r\n"]}