var U=Object.defineProperty;var C=(a,e,t)=>e in a?U(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var u=(a,e,t)=>(C(a,typeof e!="symbol"?e+"":e,t),t);function D(a){return{name:"WatermarkOptions",type:"object",required:!0,allowEmpty:!1,properties:{imageUrl:{required:!0,type:"string"},x:{required:!1,type:"number"},y:{required:!1,type:"number"},size:{required:!1,type:["string","object","number"]}},validate(e,t,n,E){var p;let{RtcError:r,ErrorCode:d,ErrorCodeDictionary:o}=a.errorModule;if(!e)return;let{imageUrl:m}=e,c=m.split("?")[0].split(".").pop();if((c==="jpg"||c==="jpeg")&&a.log.warn("The image format is not recommended to be jpg/jpeg, because the format does not support transparency."),!((p=a.room.videoManager.cameraTrack)!=null&&p.mediaTrack))throw new r({code:d.INVALID_OPERATION,extraCode:o.INVALID_OPERATION_NEED_VIDEO,fnName:n});if(a.utils.isString(e.size)&&e.size!=="contain"&&e.size!=="cover")throw new r({code:d.INVALID_PARAMETER,extraCode:o.INVALID_PARAMETER_TYPE,message:"The size parameter must be 'contain' or 'cover'",fnName:n});if(a.utils.isNumber(e.size)&&(e.size<=0||e.size>1))throw new r({code:d.INVALID_PARAMETER,extraCode:o.INVALID_PARAMETER_RANGE,message:"The size parameter must be greater than 0",fnName:n});if(a.utils.isObject(e.size)){if(!e.size.width||!e.size.height)throw new r({code:d.INVALID_PARAMETER,extraCode:o.INVALID_PARAMETER_TYPE,message:"The size parameter must be an object with width and height properties",fnName:n});if(e.size.width<=0||e.size.height<=0)throw new r({code:d.INVALID_PARAMETER,extraCode:o.INVALID_PARAMETER_RANGE,message:"The size parameter must be greater than 0",fnName:n})}}}}function A(a){return{name:"StopWatermarkOptions",required:!1}}var g=0,S=class S{constructor(e){this.core=e;u(this,"seq");u(this,"_core");u(this,"log");u(this,"startResolve");u(this,"startReject");g=g+1,this.seq=g,this._core=e,this.log=e.log.createChild({id:`${this.getAlias()}${g}`}),this.log.info("created")}getName(){return S.Name}getAlias(){return"w"}getValidateRule(e){switch(e){case"start":return D(this._core);case"update":return A(this._core);case"stop":return A(this._core)}}getGroup(){return"w"}async start(e){return this.doStart(e)}async update(e){return await this.stop(),this.doStart(e)}async stop(){return this._core.room.videoManager.deleteWatermark()}async doStart(e){let{imageUrl:t,x:n=0,y:E=0,size:r="cover"}=e,{settings:d}=this._core.room.videoManager.cameraTrack,o;try{o=await this._core.utils.loadImage(t)}catch(y){let{RtcError:h,ErrorCode:N}=this.core.errorModule;throw new h({code:N.INVALID_PARAMETER,message:`load image failed, url: ${t}`})}let{width:m,height:l}=d,{width:c,height:p}=o,i=c,s=p;this._core.utils.isObject(r)&&(i=(r==null?void 0:r.width)||i,s=(r==null?void 0:r.height)||s),this._core.utils.isNumber(r)&&(i=c*r,s=p*r);let T=c/p,O=m/l,I=T>O;r==="contain"&&(I?(i=m,s=m/T):(i=l*T,s=l)),r==="cover"&&(I?(s=l,i=l*T):(i=m,s=m/T));let b=document.createElement("canvas"),R=b.getContext("2d");return b.width=Math.min(m-n,i),b.height=Math.min(l-E,s),R==null||R.drawImage(o,0,0,i,s),this._core.room.videoManager.setWatermark({x:n,y:E,imageUrl:b.toDataURL("image/png")})}};u(S,"Name","Watermark");var _=S;var G=_;export{_ as Watermark,G as default};