{"version":3,"file":"watermark.mjs","sources":["../../../common/js/watermark/generateBase64Url.ts","../../../common/js/watermark/randomMovingStyle.ts","../../../common/js/utils/injectStyle.ts","../../../components/watermark/watermark.tsx"],"sourcesContent":["import { WatermarkText, WatermarkImage } from './type';\n\nexport default function generateBase64Url({\n  width,\n  height,\n  gapX,\n  gapY,\n  offsetLeft,\n  offsetTop,\n  rotate,\n  alpha,\n  watermarkContent,\n  lineSpace\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}, onFinish: (url: string) => void): string {\n  const canvas = document.createElement('canvas');\n  const ctx = canvas.getContext('2d');\n  if (!ctx) {\n    // eslint-disable-next-line no-console\n    console.warn('当前环境不支持Canvas, 无法绘制水印');\n    onFinish('');\n    return;\n  }\n  const ratio = window.devicePixelRatio || 1;\n  const canvasWidth = (gapX + width) * ratio;\n  const canvasHeight = (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  ctx.translate(offsetLeft * ratio, offsetTop * ratio);\n  ctx.rotate((Math.PI / 180) * Number(rotate));\n  ctx.globalAlpha = alpha;\n\n  const markWidth = width * ratio;\n  const markHeight = height * ratio;\n\n  ctx.fillStyle = 'transparent';\n  ctx.fillRect(0, 0, markWidth, markHeight);\n\n  const contents = Array.isArray(watermarkContent) ? watermarkContent : [{ ...watermarkContent }];\n  let top = 0;\n  contents.forEach((item: WatermarkText & WatermarkImage & { top: number }) => {\n    if (item.url) {\n      const { url, isGrayscale = false } = item;\n      // eslint-disable-next-line no-param-reassign\n      item.top = top;\n      top += height;\n      const img = new Image();\n      img.crossOrigin = 'anonymous';\n      img.referrerPolicy = 'no-referrer';\n      img.src = url;\n      img.onload = () => {\n        // ctx.filter = 'grayscale(1)';\n        ctx.drawImage(img, 0, item.top * ratio, width * ratio, height * ratio);\n        if (isGrayscale) {\n          const imgData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);\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          ctx.putImageData(imgData, 0, 0);\n        }\n        onFinish(canvas.toDataURL());\n      };\n    } else if (item.text) {\n      const {\n        text,\n        fontColor = 'rgba(0, 0, 0, 0.1)',\n        fontSize = 16,\n        fontFamily = undefined,\n        fontWeight = 'normal',\n      } = item;\n      // eslint-disable-next-line no-param-reassign\n      item.top = top;\n      top += lineSpace;\n      const markSize = Number(fontSize) * ratio;\n      // TODO 后续完善font 渲染控制 目前font-family 暂时为 undefined\n      ctx.font = `normal normal ${fontWeight} ${markSize}px/${markHeight}px ${fontFamily}`;\n      ctx.textAlign = 'start';\n      ctx.textBaseline = 'top';\n      ctx.fillStyle = fontColor;\n      ctx.fillText(text, 0, item.top * ratio);\n    }\n  });\n  onFinish(canvas.toDataURL());\n}\n","/* eslint-disable no-nested-ternary */\nexport default function randomMovingStyle() {\n  const align = Math.floor(Math.random() * 4);\n  const p1 = Math.floor(Math.random() * 70) + 30;\n  const leftTopLimit = 0;\n  const bottomLimit = 95;\n  const rightLimit = 90;\n  const keyframesStyle = `\n  @keyframes watermark {\n    0%   {left: ${align === 1 ? rightLimit : align === 3 ? leftTopLimit : p1}%; top: ${\n  align === 0 ? leftTopLimit : align === 2 ? bottomLimit : p1\n}%;}\n    25% {left: ${align === 0 ? rightLimit : align === 2 ? leftTopLimit : 100 - p1}%; top: ${\n  align === 1 ? bottomLimit : align === 3 ? leftTopLimit : p1\n}%;}\n    50% {left: ${align === 1 ? leftTopLimit : align === 3 ? rightLimit : 100 - p1}%; top: ${\n  align === 0 ? bottomLimit : align === 2 ? leftTopLimit : 100 - p1\n}%; transform: translateX(-100%);}\n    75% {left: ${align === 0 ? leftTopLimit : align === 2 ? rightLimit : p1}%; top: ${\n  align === 1 ? leftTopLimit : align === 3 ? bottomLimit : 100 - p1\n}%;}\n    100% {left: ${align === 1 ? rightLimit : align === 3 ? leftTopLimit : p1}%; top: ${\n  align === 0 ? leftTopLimit : align === 2 ? bottomLimit : p1\n}%;}\n  }\n  `;\n  return keyframesStyle;\n}\n","const injectStyle = (style: string) => {\n  const styleElement = document.createElement('style');\n  let styleSheet = null;\n  document.head.appendChild(styleElement);\n  styleSheet = styleElement.sheet;\n  styleSheet.insertRule(style, styleSheet.cssRules.length);\n};\n\nexport default injectStyle;\n","import { computed, onMounted, defineComponent, watch, ref, reactive, shallowRef } from 'vue';\nimport props from './props';\nimport generateBase64Url from '@tdesign/common-js/watermark/generateBase64Url';\nimport randomMovingStyle from '@tdesign/common-js/watermark/randomMovingStyle';\nimport injectStyle from '@tdesign/common-js/utils/injectStyle';\nimport { useContent, usePrefixClass } from '@tdesign/hooks';\nimport { useMutationObserver } from './hooks';\n\nimport setStyle from '@tdesign/common-js/utils/setStyle';\n\nexport default defineComponent({\n  name: 'TWatermark',\n  props,\n  setup(props) {\n    const backgroundImage = ref('');\n    const watermarkRef = shallowRef<HTMLElement>();\n    const watermarkContentRef = shallowRef<HTMLElement>();\n\n    const offset = reactive(props.offset || []);\n\n    const gapX = computed(() => {\n      return props.movable ? 0 : props.x;\n    });\n\n    const gapY = computed(() => {\n      return props.movable ? 0 : props.y;\n    });\n\n    const rotate = computed(() => {\n      return props.movable ? 0 : props.rotate;\n    });\n\n    const backgroundRepeat = computed(() => {\n      if (props.movable) {\n        return 'no-repeat';\n      }\n      return props.isRepeat ? 'repeat' : 'no-repeat';\n    });\n\n    const offsetLeft = computed(() => {\n      return offset[0] || gapX.value / 2;\n    });\n\n    const offsetTop = computed(() => {\n      return offset[1] || gapY.value / 2;\n    });\n\n    const bgImageOptions = computed(() => ({\n      width: props.width,\n      height: props.height,\n      rotate: rotate.value,\n      lineSpace: props.lineSpace,\n      alpha: props.alpha,\n      gapX: gapX.value,\n      gapY: gapY.value,\n      watermarkContent: props.watermarkContent,\n      offsetLeft: offsetLeft.value,\n      offsetTop: offsetTop.value,\n    }));\n\n    const removeWaterMark = () => {\n      if (!watermarkContentRef.value) return;\n      watermarkContentRef.value.remove();\n      watermarkContentRef.value = null;\n    };\n\n    const injectWaterMark = () => {\n      generateBase64Url(bgImageOptions.value, (base64Url) => {\n        removeWaterMark();\n\n        backgroundImage.value = base64Url;\n        watermarkContentRef.value = document.createElement('div');\n        setStyle(watermarkContentRef.value, {\n          zIndex: props.zIndex,\n          position: 'absolute',\n          left: 0,\n          right: 0,\n          top: 0,\n          bottom: 0,\n          width: '100%',\n          height: '100%',\n          backgroundSize: `${gapX.value + props.width}px`,\n          pointerEvents: 'none',\n          backgroundRepeat: backgroundRepeat.value,\n          backgroundImage: `url('${backgroundImage.value}')`,\n          animation: props.movable ? `watermark infinite ${(props.moveInterval * 4) / 60}s` : 'none',\n        });\n        watermarkRef.value?.append(watermarkContentRef.value);\n      });\n\n      if (props.movable) {\n        const keyframesStyle = randomMovingStyle();\n        injectStyle(keyframesStyle);\n      }\n    };\n\n    onMounted(() => {\n      injectWaterMark();\n      useMutationObserver(\n        watermarkRef.value,\n        (mutations) => {\n          if (props.removable || !watermarkContentRef.value) return;\n          for (const mutation of mutations) {\n            const isRemoved = Array.from(mutation.removedNodes).includes(watermarkContentRef.value);\n            const isModified = mutation.type === 'attributes' && watermarkContentRef.value === mutation.target;\n            if (isRemoved || isModified) {\n              injectWaterMark();\n              break;\n            }\n          }\n        },\n        {\n          attributes: true,\n          childList: true,\n          characterData: true,\n          subtree: true,\n        },\n      );\n    });\n\n    watch(() => props, injectWaterMark, { deep: true, flush: 'post' });\n\n    return () => {\n      const COMPONENT_NAME = usePrefixClass('watermark');\n      const renderContent = useContent();\n\n      return (\n        <div\n          style={{ position: 'relative', overflow: 'hidden', width: '100%' }}\n          class={COMPONENT_NAME.value}\n          ref={watermarkRef}\n        >\n          {renderContent('default', 'content')}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["generateBase64Url","_ref","onFinish","width","height","gapX","gapY","offsetLeft","offsetTop","rotate","alpha","watermarkContent","lineSpace","canvas","document","createElement","ctx","getContext","console","warn","ratio","window","devicePixelRatio","canvasWidth","canvasHeight","style","concat","translate","Math","PI","Number","globalAlpha","markWidth","markHeight","fillStyle","fillRect","contents","Array","isArray","_objectSpread","top","forEach","item","url","_item$isGrayscale","isGrayscale","img","Image","crossOrigin","referrerPolicy","src","onload","drawImage","imgData","getImageData","pixels","data","i","length","lightness","putImageData","toDataURL","text","_item$fontColor","fontColor","_item$fontSize","fontSize","_item$fontFamily","fontFamily","_item$fontWeight","fontWeight","markSize","font","textAlign","textBaseline","fillText","randomMovingStyle","align","floor","random","p1","leftTopLimit","bottomLimit","rightLimit","keyframesStyle","injectStyle","styleElement","styleSheet","head","appendChild","sheet","insertRule","cssRules","defineComponent","name","props","setup","backgroundImage","ref","watermarkRef","shallowRef","watermarkContentRef","offset","reactive","computed","movable","x","y","backgroundRepeat","isRepeat","value","bgImageOptions","removeWaterMark","remove","injectWaterMark","base64Url","_watermarkRef$value","setStyle","zIndex","position","left","right","bottom","backgroundSize","pointerEvents","animation","moveInterval","append","onMounted","useMutationObserver","mutations","removable","_iterator","_createForOfIteratorHelper","_step","s","n","done","mutation","isRemoved","from","removedNodes","includes","isModified","type","target","err","e","f","attributes","childList","characterData","subtree","watch","deep","flush","COMPONENT_NAME","usePrefixClass","renderContent","useContent","_createVNode","overflow"],"mappings":"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"}