UNPKG

tdesign-vue-next

Version:
1 lines 22.1 kB
{"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 fontColor = 'rgba(0,0,0,0.1)'\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}, 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 fontSize = 16,\n fontFamily = undefined,\n fontWeight = 'normal',\n } = item;\n const fillStyle = item?.fontColor || fontColor;\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 = fillStyle;\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, useVariables } from '@tdesign/shared-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 const { fontColor } = useVariables({\n fontColor: '--td-bg-color-secondarycontainer-hover',\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 fontColor: fontColor.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, fontColor.value], 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","_ref$fontColor","fontColor","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$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","_useVariables","useVariables","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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"}