rndefine("#RNMainSignatureField",["#RNMainCore/EventManager","#RNMainFormBuilderCore/FieldBase.Options","lit","#RNMainFormBuilderCore/FieldWithPrice.Model","#RNMainCore/WpAjaxPost","lit/decorators","#RNMainFormBuilderCore/FieldBase","#RNMainFormBuilderCore/FieldWithPrice","#RNMainFormBuilderCore/FieldWithPrice.Options"],(function(t,e,i,s,n,o,a,r,h){"use strict";class l extends s.FieldWithPriceModel{constructor(t,e){super(t,e),this.IsFocused=!1,this.LoadingSignature=!1}InternalSerialize(t){super.InternalSerialize(t),t.Value=this.GetValue(),t.WasAlreadyUploaded=this.WasAlreadyUploaded}GetStoresInformation(){return!0}GetIsUsed(){return!!super.GetIsUsed()&&""!=this.PNGData.trim()}GetHtml(){return null==this.PNGData?"":i.html`<img src="${this.PNGData}" />`}GetValue(){return this.GetIsVisible()?this.PNGData:""}InitializeStartingValues(){this.PNGData="",this.WasAlreadyUploaded=!1;let t=this.GetPreviousDataProperty("","");""!=t&&0!=t.FileId&&""!=t.FileReference&&this.LoadSignature(t.FileId,t.FileReference)}GetDynamicFieldNames(){return["FBSignature"]}SetSignature(t){this.WasAlreadyUploaded=!1,this.PNGData=null!=t?t:"",this.FireValueChanged()}async LoadSignature(t,e){this.LoadingSignature=!0;let i=await n.WpAjaxPost.Post("getpublicsignature",{ref:t+"__"+e,View:"json"});this.LoadingSignature=!1,null!=i&&(this.PNGData="data:image/png;base64,"+i.Content,this.WasAlreadyUploaded=!0,null!=this.Pad&&this.Pad.fromDataURL(this.PNGData)),this.Refresh()}Show(t=!1){super.Show(t),this.Refresh((()=>{var t;null===(t=this.Instance)||void 0===t||t.resizeCanvas()}))}render(){return i.html`<rn-signature-field .model="${this}"></rn-signature-field>`}}class d{constructor(t,e,i){this.x=t,this.y=e,this.time=i||Date.now()}distanceTo(t){return Math.sqrt(Math.pow(this.x-t.x,2)+Math.pow(this.y-t.y,2))}equals(t){return this.x===t.x&&this.y===t.y&&this.time===t.time}velocityFrom(t){return this.time!==t.time?this.distanceTo(t)/(this.time-t.time):0}}class c{constructor(t,e,i,s,n,o){this.startPoint=t,this.control2=e,this.control1=i,this.endPoint=s,this.startWidth=n,this.endWidth=o}static fromPoints(t,e){const i=this.calculateControlPoints(t[0],t[1],t[2]).c2,s=this.calculateControlPoints(t[1],t[2],t[3]).c1;return new c(t[1],i,s,t[2],e.start,e.end)}static calculateControlPoints(t,e,i){const s=t.x-e.x,n=t.y-e.y,o=e.x-i.x,a=e.y-i.y,r=(t.x+e.x)/2,h=(t.y+e.y)/2,l=(e.x+i.x)/2,c=(e.y+i.y)/2,u=Math.sqrt(s*s+n*n),m=Math.sqrt(o*o+a*a),v=m/(u+m),p=l+(r-l)*v,g=c+(h-c)*v,_=e.x-p,f=e.y-g;return{c1:new d(r+_,h+f),c2:new d(l+_,c+f)}}length(){let t,e,i=0;for(let s=0;s<=10;s+=1){const n=s/10,o=this.point(n,this.startPoint.x,this.control1.x,this.control2.x,this.endPoint.x),a=this.point(n,this.startPoint.y,this.control1.y,this.control2.y,this.endPoint.y);if(s>0){const s=o-t,n=a-e;i+=Math.sqrt(s*s+n*n)}t=o,e=a}return i}point(t,e,i,s,n){return e*(1-t)*(1-t)*(1-t)+3*i*(1-t)*(1-t)*t+3*s*(1-t)*t*t+n*t*t*t}}class u{constructor(t,e={}){this.canvas=t,this.options=e,this._handleMouseDown=t=>{1===t.which&&(this._mouseButtonDown=!0,this._strokeBegin(t))},this._handleMouseMove=t=>{this._mouseButtonDown&&this._strokeMoveUpdate(t)},this._handleMouseUp=t=>{1===t.which&&this._mouseButtonDown&&(this._mouseButtonDown=!1,this._strokeEnd(t))},this._handleTouchStart=t=>{if(t.preventDefault(),1===t.targetTouches.length){const e=t.changedTouches[0];this._strokeBegin(e)}},this._handleTouchMove=t=>{t.preventDefault();const e=t.targetTouches[0];this._strokeMoveUpdate(e)},this._handleTouchEnd=t=>{if(t.target===this.canvas){t.preventDefault();const e=t.changedTouches[0];this._strokeEnd(e)}},this.velocityFilterWeight=e.velocityFilterWeight||.7,this.minWidth=e.minWidth||.5,this.maxWidth=e.maxWidth||2.5,this.throttle="throttle"in e?e.throttle:16,this.minDistance="minDistance"in e?e.minDistance:5,this.throttle?this._strokeMoveUpdate=function(t,e=250){let i,s,n,o=0,a=null;const r=()=>{o=Date.now(),a=null,i=t.apply(s,n),a||(s=null,n=[])};return function(...h){const l=Date.now(),d=e-(l-o);return s=this,n=h,d<=0||d>e?(a&&(clearTimeout(a),a=null),o=l,i=t.apply(s,n),a||(s=null,n=[])):a||(a=window.setTimeout(r,d)),i}}(u.prototype._strokeUpdate,this.throttle):this._strokeMoveUpdate=u.prototype._strokeUpdate,this.dotSize=e.dotSize||function(){return(this.minWidth+this.maxWidth)/2},this.penColor=e.penColor||"black",this.backgroundColor=e.backgroundColor||"rgba(0,0,0,0)",this.onBegin=e.onBegin,this.onEnd=e.onEnd,this._ctx=t.getContext("2d"),this.clear(),this.on()}clear(){const t=this._ctx,e=this.canvas;t.fillStyle=this.backgroundColor,t.clearRect(0,0,e.width,e.height),t.fillRect(0,0,e.width,e.height),this._data=[],this._reset(),this._isEmpty=!0}fromDataURL(t,e={},i){const s=new Image,n=e.ratio||window.devicePixelRatio||1,o=e.width||this.canvas.width/n,a=e.height||this.canvas.height/n;this._reset(),s.onload=()=>{this._ctx.drawImage(s,0,0,o,a),i&&i()},s.onerror=t=>{i&&i(t)},s.src=t,this._isEmpty=!1}toDataURL(t="image/png",e){return"image/svg+xml"===t?this._toSVG():this.canvas.toDataURL(t,e)}on(){this.canvas.style.touchAction="none",this.canvas.style.msTouchAction="none",window.PointerEvent?this._handlePointerEvents():(this._handleMouseEvents(),"ontouchstart"in window&&this._handleTouchEvents())}off(){this.canvas.style.touchAction="auto",this.canvas.style.msTouchAction="auto",this.canvas.removeEventListener("pointerdown",this._handleMouseDown),this.canvas.removeEventListener("pointermove",this._handleMouseMove),document.removeEventListener("pointerup",this._handleMouseUp),this.canvas.removeEventListener("mousedown",this._handleMouseDown),this.canvas.removeEventListener("mousemove",this._handleMouseMove),document.removeEventListener("mouseup",this._handleMouseUp),this.canvas.removeEventListener("touchstart",this._handleTouchStart),this.canvas.removeEventListener("touchmove",this._handleTouchMove),this.canvas.removeEventListener("touchend",this._handleTouchEnd)}isEmpty(){return this._isEmpty}fromData(t){this.clear(),this._fromData(t,(({color:t,curve:e})=>this._drawCurve({color:t,curve:e})),(({color:t,point:e})=>this._drawDot({color:t,point:e}))),this._data=t}toData(){return this._data}_strokeBegin(t){const e={color:this.penColor,points:[]};this._data.push(e),this._reset(),this._strokeUpdate(t),"function"==typeof this.onBegin&&this.onBegin(t)}_strokeUpdate(t){const e=t.clientX,i=t.clientY,s=this._createPoint(e,i),n=this._data[this._data.length-1],o=n.points,a=o.length>0&&o[o.length-1],r=!!a&&s.distanceTo(a)<=this.minDistance,h=n.color;if(!a||!a||!r){const t=this._addPoint(s);a?t&&this._drawCurve({color:h,curve:t}):this._drawDot({color:h,point:s}),o.push({time:s.time,x:s.x,y:s.y})}}_strokeEnd(t){this._strokeUpdate(t),"function"==typeof this.onEnd&&this.onEnd(t)}_handlePointerEvents(){this._mouseButtonDown=!1,this.canvas.addEventListener("pointerdown",this._handleMouseDown),this.canvas.addEventListener("pointermove",this._handleMouseMove),document.addEventListener("pointerup",this._handleMouseUp)}_handleMouseEvents(){this._mouseButtonDown=!1,this.canvas.addEventListener("mousedown",this._handleMouseDown),this.canvas.addEventListener("mousemove",this._handleMouseMove),document.addEventListener("mouseup",this._handleMouseUp)}_handleTouchEvents(){this.canvas.addEventListener("touchstart",this._handleTouchStart),this.canvas.addEventListener("touchmove",this._handleTouchMove),this.canvas.addEventListener("touchend",this._handleTouchEnd)}_reset(){this._lastPoints=[],this._lastVelocity=0,this._lastWidth=(this.minWidth+this.maxWidth)/2,this._ctx.fillStyle=this.penColor}_createPoint(t,e){const i=this.canvas.getBoundingClientRect();return new d(t-i.left,e-i.top,(new Date).getTime())}_addPoint(t){const{_lastPoints:e}=this;if(e.push(t),e.length>2){3===e.length&&e.unshift(e[0]);const t=this._calculateCurveWidths(e[1],e[2]),i=c.fromPoints(e,t);return e.shift(),i}return null}_calculateCurveWidths(t,e){const i=this.velocityFilterWeight*e.velocityFrom(t)+(1-this.velocityFilterWeight)*this._lastVelocity,s=this._strokeWidth(i),n={end:s,start:this._lastWidth};return this._lastVelocity=i,this._lastWidth=s,n}_strokeWidth(t){return Math.max(this.maxWidth/(t+1),this.minWidth)}_drawCurveSegment(t,e,i){const s=this._ctx;s.moveTo(t,e),s.arc(t,e,i,0,2*Math.PI,!1),this._isEmpty=!1}_drawCurve({color:t,curve:e}){const i=this._ctx,s=e.endWidth-e.startWidth,n=2*Math.floor(e.length());i.beginPath(),i.fillStyle=t;for(let t=0;t<n;t+=1){const i=t/n,o=i*i,a=o*i,r=1-i,h=r*r,l=h*r;let d=l*e.startPoint.x;d+=3*h*i*e.control1.x,d+=3*r*o*e.control2.x,d+=a*e.endPoint.x;let c=l*e.startPoint.y;c+=3*h*i*e.control1.y,c+=3*r*o*e.control2.y,c+=a*e.endPoint.y;const u=e.startWidth+a*s;this._drawCurveSegment(d,c,u)}i.closePath(),i.fill()}_drawDot({color:t,point:e}){const i=this._ctx,s="function"==typeof this.dotSize?this.dotSize():this.dotSize;i.beginPath(),this._drawCurveSegment(e.x,e.y,s),i.closePath(),i.fillStyle=t,i.fill()}_fromData(t,e,i){for(const s of t){const{color:t,points:n}=s;if(n.length>1)for(let i=0;i<n.length;i+=1){const s=n[i],o=new d(s.x,s.y,s.time);this.penColor=t,0===i&&this._reset();const a=this._addPoint(o);a&&e({color:t,curve:a})}else this._reset(),i({color:t,point:n[0]})}}_toSVG(){const t=this._data,e=Math.max(window.devicePixelRatio||1,1),i=this.canvas.width/e,s=this.canvas.height/e,n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width",this.canvas.width.toString()),n.setAttribute("height",this.canvas.height.toString()),this._fromData(t,(({color:t,curve:e})=>{const i=document.createElement("path");if(!(isNaN(e.control1.x)||isNaN(e.control1.y)||isNaN(e.control2.x)||isNaN(e.control2.y))){const s=`M ${e.startPoint.x.toFixed(3)},${e.startPoint.y.toFixed(3)} C ${e.control1.x.toFixed(3)},${e.control1.y.toFixed(3)} ${e.control2.x.toFixed(3)},${e.control2.y.toFixed(3)} ${e.endPoint.x.toFixed(3)},${e.endPoint.y.toFixed(3)}`;i.setAttribute("d",s),i.setAttribute("stroke-width",(2.25*e.endWidth).toFixed(3)),i.setAttribute("stroke",t),i.setAttribute("fill","none"),i.setAttribute("stroke-linecap","round"),n.appendChild(i)}}),(({color:t,point:e})=>{const i=document.createElement("circle"),s="function"==typeof this.dotSize?this.dotSize():this.dotSize;i.setAttribute("r",s.toString()),i.setAttribute("cx",e.x.toString()),i.setAttribute("cy",e.y.toString()),i.setAttribute("fill",t),n.appendChild(i)}));const o=`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 ${i} ${s}" width="${i}" height="${s}">`;let a=n.innerHTML;if(void 0===a){const t=document.createElement("dummy"),e=n.childNodes;t.innerHTML="";for(let i=0;i<e.length;i+=1)t.appendChild(e[i].cloneNode(!0));a=t.innerHTML}return"data:image/svg+xml;base64,"+btoa(o+a+"</svg>")}}var m,v,p,g,_,f={};!function(t){Object.defineProperty(t,"__esModule",{value:!0});var e="times",i=[],s="f00d",n="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z";t.definition={prefix:"fas",iconName:e,icon:[352,512,i,s,n]},t.faTimes=t.definition,t.prefix="fas",t.iconName=e,t.width=352,t.height=512,t.ligatures=i,t.unicode=s,t.svgPathData=n}(f);let w=(m=o.customElement("rn-signature-field"),v=o.query("canvas"),m((g=class extends r.FieldWithPrice{static get properties(){return a.FieldBase.properties}constructor(){super(),babelHelpers.initializerDefineProperty(this,"Canvas",_,this),this.IsResizing=!1,this.resizeCanvas=this.resizeCanvas.bind(this)}SubRender(){return i.html` <div style="position: relative;"> <canvas style="border: 1px solid #dfdfdf;;width: 100%;height: 200px;"></canvas> <rn-fontawesome class="rnRemove ${this.model.GetIsUsed()?"":"disabled"}" @click="${t=>this.Clear()}" .icon="${f.faTimes}" style="position: absolute;top:3px;right: 3px;" ></rn-fontawesome> </div> `}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.resizeCanvas)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("resize",this.resizeCanvas)}firstUpdated(t){super.firstUpdated(t),this.model.Pad=new u(this.Canvas,{onEnd:t=>{this.model.Pad.isEmpty()?this.model.SetSignature(null):this.model.SetSignature(this.model.Pad.toDataURL())}}),this.resizeCanvas(),null!=this.model.PNGData&&this.model.Pad.fromDataURL(this.model.PNGData)}resizeCanvas(){this.IsResizing||(this.IsResizing=!0,setTimeout((()=>{let t=this.model.Pad.toData(),e=null;null!=t&&0!=t.length||(t=null,e=this.model.Pad.toDataURL());var i=Math.max(window.devicePixelRatio||1,1);this.Canvas.width=this.Canvas.offsetWidth*i,this.Canvas.height=this.Canvas.offsetHeight*i,this.Canvas.getContext("2d").scale(i,i),null!=t&&this.model.Pad.fromData(t),null!=e&&this.model.Pad.fromDataURL(e),this.IsResizing=!1}),500))}Clear(){this.model.SetSignature(null),this.model.Pad.clear()}},_=babelHelpers.applyDecoratedDescriptor(g.prototype,"Canvas",[v],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),p=g))||p);class y extends h.FieldWithPriceOptions{LoadDefaultValues(){super.LoadDefaultValues(),this.Type=e.FieldTypeEnum.Signature,this.Label="Signature",this.PriceType=h.PriceTypeEnum.none}}exports.SignatureFieldModel=l,exports.SignatureField=w,exports.SignatureFieldOptions=y,t.EventManager.Subscribe("GetFieldOptions",(t=>{if(t==e.FieldTypeEnum.Signature)return new y})),t.EventManager.Subscribe("GetFieldModel",(t=>{if(t.Options.Type==e.FieldTypeEnum.Signature)return new l(t.Options,t.Parent)}))}));