{"version":3,"file":"generateBase64Url.mjs","sources":["../../../../src/_common/js/watermark/generateBase64Url.ts"],"sourcesContent":["import { WatermarkText, WatermarkImage, WatermarkLayout } from './type';\n\nexport default function generateBase64Url(\n  {\n    width,\n    height,\n    gapX,\n    gapY,\n    offsetLeft,\n    offsetTop,\n    rotate,\n    alpha,\n    watermarkContent,\n    lineSpace,\n    fontColor = 'rgba(0,0,0,0.1)',\n    layout,\n  }: {\n    width: number;\n    height: number;\n    gapX: number;\n    gapY: number;\n    offsetLeft: number;\n    offsetTop: number;\n    rotate: number;\n    alpha: number;\n    watermarkContent: WatermarkText | WatermarkImage | Array<WatermarkText | WatermarkImage>;\n    lineSpace: number;\n    fontColor?: string;\n    layout?: WatermarkLayout;\n  },\n  onFinish: (url: string, backgroundSize?: { width: number }) => void\n): string {\n  const isHexagonal = layout === 'hexagonal';\n\n  const canvas = document.createElement('canvas');\n  const ctx = canvas.getContext('2d');\n\n  if (!ctx) {\n    // eslint-disable-next-line no-console\n    console.warn('当前环境不支持Canvas, 无法绘制水印');\n    onFinish('');\n    return;\n  }\n\n  const ratio = window.devicePixelRatio || 1;\n\n  let actualBackgroundSize = {\n    width: gapX + width,\n  };\n\n  const canvasWidth = (gapX + width) * ratio;\n  const canvasHeight = (gapY + height) * ratio;\n\n  const markWidth = width * ratio;\n  const markHeight = height * ratio;\n\n  const dislocationRotateX = canvasWidth;\n  const dislocationRotateY = canvasHeight;\n  const dislocationDrawX = (gapX + width) * ratio;\n  const dislocationDrawY = (gapY + height) * ratio;\n\n  canvas.width = canvasWidth;\n  canvas.height = canvasHeight;\n  canvas.style.width = `${gapX + width}px`;\n  canvas.style.height = `${gapY + height}px`;\n\n  if (isHexagonal) {\n    canvas.style.width = `${canvasWidth * 2}px`;\n    canvas.style.height = `${canvasHeight * 2}px`;\n    canvas.width = canvasWidth * 2;\n    canvas.height = canvasHeight * 2;\n\n    // 两倍宽度+间距\n    actualBackgroundSize = {\n      width: gapX + width * 2 + width / 2,\n    };\n  }\n\n  ctx.translate(offsetLeft * ratio, offsetTop * ratio);\n  ctx.globalAlpha = alpha;\n\n  ctx.fillStyle = 'transparent';\n  ctx.fillRect(0, 0, markWidth, markHeight);\n\n  // 元素中心为旋转点执行旋转\n  const drawRotate = (ctx: CanvasRenderingContext2D, x: number, y: number, rotate: number) => {\n    ctx.translate(x, y);\n    ctx.rotate((Math.PI / 180) * Number(rotate));\n    ctx.translate(-x, -y);\n  };\n\n  // 绘制文字\n  const drawText = (\n    ctx: CanvasRenderingContext2D,\n    x: number,\n    y: number,\n    markHeight: number,\n    text: string,\n    fontWeight: string,\n    fontSize: number,\n    fontFamily: string,\n    fillStyle: string\n  ) => {\n    ctx.font = `normal normal ${fontWeight} ${fontSize * ratio}px/${markHeight}px ${fontFamily}`;\n    ctx.fillStyle = fillStyle;\n    ctx.textAlign = 'start';\n    ctx.textBaseline = 'top';\n\n    ctx.fillText(text, x, y);\n  };\n\n  const contents = (Array.isArray(watermarkContent) ? watermarkContent : [{ ...watermarkContent }]) as Array<\n    WatermarkText & WatermarkImage & { top: number }\n  >;\n\n  let top = 0;\n  let imageLoadCount = 0;\n  let totalImages = 0;\n\n  // 预处理\n  contents.forEach((item) => {\n    // eslint-disable-next-line no-param-reassign\n    item.top = top;\n    if (item.url) {\n      top += height;\n      totalImages += isHexagonal ? 2 : 1; // hexagonal布局需要绘制两次\n    } else if (item.text) {\n      top += lineSpace;\n    }\n  });\n\n  // 绘制水印内容\n  const renderWatermarkItem = (\n    item: WatermarkText & WatermarkImage & { top: number },\n    offsetX: number = 0,\n    offsetY: number = 0,\n    rotateX: number = 0,\n    rotateY: number = 0\n  ) => {\n    if (item.url) {\n      const { url, isGrayscale = false } = item;\n      const img = new Image();\n      img.crossOrigin = 'anonymous';\n      img.referrerPolicy = 'no-referrer';\n      img.src = url;\n      img.onload = () => {\n        ctx.save?.();\n        drawRotate(ctx, rotateX, rotateY, rotate);\n\n        // fix: 灰度效果只影响图片，不影响文字\n        if (isGrayscale) {\n          const tempCanvas = document.createElement('canvas');\n          const tempCtx = tempCanvas.getContext('2d');\n          tempCanvas.width = width * ratio;\n          tempCanvas.height = height * ratio;\n\n          tempCtx.drawImage(img, 0, 0, width * ratio, height * ratio);\n\n          const imgData = tempCtx.getImageData(0, 0, width * ratio, height * ratio);\n          const pixels = imgData.data;\n          for (let i = 0; i < pixels.length; i += 4) {\n            const lightness = (pixels[i] + pixels[i + 1] + pixels[i + 2]) / 3;\n            pixels[i] = lightness;\n            pixels[i + 1] = lightness;\n            pixels[i + 2] = lightness;\n          }\n          tempCtx.putImageData(imgData, 0, 0);\n\n          ctx.drawImage(tempCanvas, offsetX, offsetY + item.top * ratio, width * ratio, height * ratio);\n        } else {\n          ctx.drawImage(img, offsetX, offsetY + item.top * ratio, width * ratio, height * ratio);\n        }\n\n        ctx.restore?.();\n\n        // 图片加载完成再返回\n        imageLoadCount += 1;\n        if (imageLoadCount === totalImages) {\n          onFinish(canvas.toDataURL(), actualBackgroundSize);\n        }\n      };\n    } else if (item.text) {\n      const { text, fontSize = 16, fontFamily = 'normal', fontWeight = 'normal' } = item;\n      const fillStyle = item?.fontColor || fontColor;\n\n      ctx.save?.();\n      drawRotate(ctx, rotateX, rotateY, rotate);\n      drawText(ctx, offsetX, offsetY + item.top * ratio, markHeight, text, fontWeight, fontSize, fontFamily, fillStyle);\n      ctx.restore?.();\n    }\n  };\n\n  // 矩形水印\n  contents.forEach((item) => {\n    renderWatermarkItem(item, 0, 0, 0, 0);\n  });\n\n  // 六边形水印\n  if (isHexagonal) {\n    contents.forEach((item) => {\n      renderWatermarkItem(item, dislocationDrawX, dislocationDrawY, dislocationRotateX, dislocationRotateY);\n    });\n  }\n\n  // 没有图片\n  if (totalImages === 0) {\n    onFinish(canvas.toDataURL(), actualBackgroundSize);\n  }\n}\n"],"names":["generateBase64Url","_ref","onFinish","width","height","gapX","gapY","offsetLeft","offsetTop","rotate","alpha","watermarkContent","lineSpace","_ref$fontColor","fontColor","layout","isHexagonal","canvas","document","createElement","ctx","getContext","console","warn","ratio","window","devicePixelRatio","actualBackgroundSize","canvasWidth","canvasHeight","markWidth","markHeight","dislocationRotateX","dislocationRotateY","dislocationDrawX","dislocationDrawY","style","concat","translate","globalAlpha","fillStyle","fillRect","drawRotate","x","y","Math","PI","Number","drawText","text","fontWeight","fontSize","fontFamily","font","textAlign","textBaseline","fillText","contents","Array","isArray","_objectSpread","top","imageLoadCount","totalImages","forEach","item","url","renderWatermarkItem","offsetX","arguments","length","undefined","offsetY","rotateX","rotateY","_item$isGrayscale","isGrayscale","img","Image","crossOrigin","referrerPolicy","src","onload","_ctx$save","_ctx$restore","save","call","tempCanvas","tempCtx","drawImage","imgData","getImageData","pixels","data","i","lightness","putImageData","restore","toDataURL","_ctx$save2","_ctx$restore2","_item$fontSize","_item$fontFamily","_item$fontWeight"],"mappings":"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"}