UNPKG

vxe-pc-ui

Version:
1 lines 2.16 kB
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_util=require("./util");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeWatermark",props:{width:String,height:String,imageUrl:String,rotate:{type:[Number,String],default:()=>(0,_ui.getConfig)().watermark.rotate},gap:{type:[Array,Number,String],default:()=>_xeUtils.default.clone((0,_ui.getConfig)().watermark.gap,!0)},content:[String,Array],font:Object,offset:Object,zIndex:[String,Number]},emits:[],setup(n,e){let a=e.emit;var t=_xeUtils.default.uniqueId();let o=(0,_vue.ref)(),l=(0,_vue.reactive)({markUrl:""}),r={refElem:o},_=(0,_vue.computed)(()=>_xeUtils.default.assign({},_xeUtils.default.clone((0,_ui.getConfig)().watermark.font,!0),n.font)),u=(0,_vue.computed)(()=>{var{width:e,height:t,zIndex:r}=n,a=l.markUrl,u={};return e&&(u.width=(0,_dom.toCssUnit)(e)),t&&(u.height=(0,_dom.toCssUnit)(t)),a&&(u.backgroundImage=`url(${a})`),r&&(u.zIndex=r),u}),i={},d={xID:t,props:n,context:e,reactData:l,getRefMaps:()=>r,getComputeMaps:()=>i};let s=()=>{var{content:e,gap:t,rotate:r,offset:a}=n,u=o.value,i=_.value;u&&e&&(0,_util.getContentUrl)(e,getComputedStyle(u).fontSize,{font:i,rotate:r,gap:t,offset:a}).then(e=>{l.markUrl=e})};Object.assign(d,{dispatchEvent:(e,t,r)=>{a(e,(0,_ui.createEvent)(r,{$watermark:d},t))}},{});return(0,_vue.watch)(()=>n.imageUrl,()=>{s()}),(0,_vue.watch)(()=>n.content,()=>{s()}),(0,_vue.watch)(()=>n.gap,()=>{s()}),(0,_vue.watch)(()=>n.rotate,()=>{s()}),(0,_vue.watch)(()=>n.width,()=>{s()}),(0,_vue.watch)(()=>n.height,()=>{s()}),(0,_vue.watch)(()=>n.font,()=>{s()}),(0,_vue.onMounted)(()=>{s(),_ui.globalEvents.on(d,"resize",_xeUtils.default.throttle(()=>{s()},300,{trailing:!0,leading:!0}))}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(d,"resize")}),d.renderVN=()=>{var e=u.value;return(0,_vue.h)("div",{ref:o,class:"vxe-watermark",style:e})},d},render(){return this.renderVN()}});