UNPKG

@samehdoush/vue-formbuilder

Version:

A dynamic form builder and renderer using Vue 3, Vuetify 3, and Tailwind CSS

11 lines 144 kB
(function(At,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],c):(At=typeof globalThis<"u"?globalThis:At||self,c(At.VueFormBuilder={},At.Vue))})(this,function(At,c){"use strict";const bt=[];for(let n=0;n<256;++n)bt.push((n+256).toString(16).slice(1));function lo(n,e=0){return(bt[n[e+0]]+bt[n[e+1]]+bt[n[e+2]]+bt[n[e+3]]+"-"+bt[n[e+4]]+bt[n[e+5]]+"-"+bt[n[e+6]]+bt[n[e+7]]+"-"+bt[n[e+8]]+bt[n[e+9]]+"-"+bt[n[e+10]]+bt[n[e+11]]+bt[n[e+12]]+bt[n[e+13]]+bt[n[e+14]]+bt[n[e+15]]).toLowerCase()}let en;const so=new Uint8Array(16);function co(){if(!en){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");en=crypto.getRandomValues.bind(crypto)}return en(so)}const Vn={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Fn(n,e,o){var r;if(Vn.randomUUID&&!n)return Vn.randomUUID();n=n||{};const a=n.random??((r=n.rng)==null?void 0:r.call(n))??co();if(a.length<16)throw new Error("Random bytes length must be >= 16");return a[6]=a[6]&15|64,a[8]=a[8]&63|128,lo(a)}/*! * Signature Pad v5.0.7 | https://github.com/szimek/signature_pad * (c) 2025 Szymon Nowak | Released under the MIT license */class Ve{constructor(e,o,a,r){if(isNaN(e)||isNaN(o))throw new Error(`Point is invalid: (${e}, ${o})`);this.x=+e,this.y=+o,this.pressure=a||0,this.time=r||Date.now()}distanceTo(e){return Math.sqrt(Math.pow(this.x-e.x,2)+Math.pow(this.y-e.y,2))}equals(e){return this.x===e.x&&this.y===e.y&&this.pressure===e.pressure&&this.time===e.time}velocityFrom(e){return this.time!==e.time?this.distanceTo(e)/(this.time-e.time):0}}class nn{static fromPoints(e,o){const a=this.calculateControlPoints(e[0],e[1],e[2]).c2,r=this.calculateControlPoints(e[1],e[2],e[3]).c1;return new nn(e[1],a,r,e[2],o.start,o.end)}static calculateControlPoints(e,o,a){const r=e.x-o.x,d=e.y-o.y,t=o.x-a.x,i=o.y-a.y,l={x:(e.x+o.x)/2,y:(e.y+o.y)/2},s={x:(o.x+a.x)/2,y:(o.y+a.y)/2},u=Math.sqrt(r*r+d*d),f=Math.sqrt(t*t+i*i),v=l.x-s.x,p=l.y-s.y,h=u+f==0?0:f/(u+f),m={x:s.x+v*h,y:s.y+p*h},g=o.x-m.x,y=o.y-m.y;return{c1:new Ve(l.x+g,l.y+y),c2:new Ve(s.x+g,s.y+y)}}constructor(e,o,a,r,d,t){this.startPoint=e,this.control2=o,this.control1=a,this.endPoint=r,this.startWidth=d,this.endWidth=t}length(){let o=0,a,r;for(let d=0;d<=10;d+=1){const t=d/10,i=this.point(t,this.startPoint.x,this.control1.x,this.control2.x,this.endPoint.x),l=this.point(t,this.startPoint.y,this.control1.y,this.control2.y,this.endPoint.y);if(d>0){const s=i-a,u=l-r;o+=Math.sqrt(s*s+u*u)}a=i,r=l}return o}point(e,o,a,r,d){return o*(1-e)*(1-e)*(1-e)+3*a*(1-e)*(1-e)*e+3*r*(1-e)*e*e+d*e*e*e}}class uo{constructor(){try{this._et=new EventTarget}catch{this._et=document}}addEventListener(e,o,a){this._et.addEventListener(e,o,a)}dispatchEvent(e){return this._et.dispatchEvent(e)}removeEventListener(e,o,a){this._et.removeEventListener(e,o,a)}}function fo(n,e=250){let o=0,a=null,r,d,t;const i=()=>{o=Date.now(),a=null,r=n.apply(d,t),a||(d=null,t=[])};return function(...s){const u=Date.now(),f=e-(u-o);return d=this,t=s,f<=0||f>e?(a&&(clearTimeout(a),a=null),o=u,r=n.apply(d,t),a||(d=null,t=[])):a||(a=window.setTimeout(i,f)),r}}let po=class An extends uo{constructor(e,o={}){var a,r,d;super(),this.canvas=e,this._drawingStroke=!1,this._isEmpty=!0,this._lastPoints=[],this._data=[],this._lastVelocity=0,this._lastWidth=0,this._handleMouseDown=t=>{!this._isLeftButtonPressed(t,!0)||this._drawingStroke||this._strokeBegin(this._pointerEventToSignatureEvent(t))},this._handleMouseMove=t=>{if(!this._isLeftButtonPressed(t,!0)||!this._drawingStroke){this._strokeEnd(this._pointerEventToSignatureEvent(t),!1);return}this._strokeMoveUpdate(this._pointerEventToSignatureEvent(t))},this._handleMouseUp=t=>{this._isLeftButtonPressed(t)||this._strokeEnd(this._pointerEventToSignatureEvent(t))},this._handleTouchStart=t=>{t.targetTouches.length!==1||this._drawingStroke||(t.cancelable&&t.preventDefault(),this._strokeBegin(this._touchEventToSignatureEvent(t)))},this._handleTouchMove=t=>{if(t.targetTouches.length===1){if(t.cancelable&&t.preventDefault(),!this._drawingStroke){this._strokeEnd(this._touchEventToSignatureEvent(t),!1);return}this._strokeMoveUpdate(this._touchEventToSignatureEvent(t))}},this._handleTouchEnd=t=>{t.targetTouches.length===0&&(t.cancelable&&t.preventDefault(),this.canvas.removeEventListener("touchmove",this._handleTouchMove),this._strokeEnd(this._touchEventToSignatureEvent(t)))},this._handlePointerDown=t=>{!t.isPrimary||!this._isLeftButtonPressed(t)||this._drawingStroke||(t.preventDefault(),this._strokeBegin(this._pointerEventToSignatureEvent(t)))},this._handlePointerMove=t=>{if(t.isPrimary){if(!this._isLeftButtonPressed(t,!0)||!this._drawingStroke){this._strokeEnd(this._pointerEventToSignatureEvent(t),!1);return}t.preventDefault(),this._strokeMoveUpdate(this._pointerEventToSignatureEvent(t))}},this._handlePointerUp=t=>{!t.isPrimary||this._isLeftButtonPressed(t)||(t.preventDefault(),this._strokeEnd(this._pointerEventToSignatureEvent(t)))},this.velocityFilterWeight=o.velocityFilterWeight||.7,this.minWidth=o.minWidth||.5,this.maxWidth=o.maxWidth||2.5,this.throttle=(a=o.throttle)!==null&&a!==void 0?a:16,this.minDistance=(r=o.minDistance)!==null&&r!==void 0?r:5,this.dotSize=o.dotSize||0,this.penColor=o.penColor||"black",this.backgroundColor=o.backgroundColor||"rgba(0,0,0,0)",this.compositeOperation=o.compositeOperation||"source-over",this.canvasContextOptions=(d=o.canvasContextOptions)!==null&&d!==void 0?d:{},this._strokeMoveUpdate=this.throttle?fo(An.prototype._strokeUpdate,this.throttle):An.prototype._strokeUpdate,this._ctx=e.getContext("2d",this.canvasContextOptions),this.clear(),this.on()}clear(){const{_ctx:e,canvas:o}=this;e.fillStyle=this.backgroundColor,e.clearRect(0,0,o.width,o.height),e.fillRect(0,0,o.width,o.height),this._data=[],this._reset(this._getPointGroupOptions()),this._isEmpty=!0}fromDataURL(e,o={}){return new Promise((a,r)=>{const d=new Image,t=o.ratio||window.devicePixelRatio||1,i=o.width||this.canvas.width/t,l=o.height||this.canvas.height/t,s=o.xOffset||0,u=o.yOffset||0;this._reset(this._getPointGroupOptions()),d.onload=()=>{this._ctx.drawImage(d,s,u,i,l),a()},d.onerror=f=>{r(f)},d.crossOrigin="anonymous",d.src=e,this._isEmpty=!1})}toDataURL(e="image/png",o){switch(e){case"image/svg+xml":return typeof o!="object"&&(o=void 0),`data:image/svg+xml;base64,${btoa(this.toSVG(o))}`;default:return typeof o!="number"&&(o=void 0),this.canvas.toDataURL(e,o)}}on(){this.canvas.style.touchAction="none",this.canvas.style.msTouchAction="none",this.canvas.style.userSelect="none";const e=/Macintosh/.test(navigator.userAgent)&&"ontouchstart"in document;window.PointerEvent&&!e?this._handlePointerEvents():(this._handleMouseEvents(),"ontouchstart"in window&&this._handleTouchEvents())}off(){this.canvas.style.touchAction="auto",this.canvas.style.msTouchAction="auto",this.canvas.style.userSelect="auto",this.canvas.removeEventListener("pointerdown",this._handlePointerDown),this.canvas.removeEventListener("mousedown",this._handleMouseDown),this.canvas.removeEventListener("touchstart",this._handleTouchStart),this._removeMoveUpEventListeners()}_getListenerFunctions(){var e;const o=window.document===this.canvas.ownerDocument?window:(e=this.canvas.ownerDocument.defaultView)!==null&&e!==void 0?e:this.canvas.ownerDocument;return{addEventListener:o.addEventListener.bind(o),removeEventListener:o.removeEventListener.bind(o)}}_removeMoveUpEventListeners(){const{removeEventListener:e}=this._getListenerFunctions();e("pointermove",this._handlePointerMove),e("pointerup",this._handlePointerUp),e("mousemove",this._handleMouseMove),e("mouseup",this._handleMouseUp),e("touchmove",this._handleTouchMove),e("touchend",this._handleTouchEnd)}isEmpty(){return this._isEmpty}fromData(e,{clear:o=!0}={}){o&&this.clear(),this._fromData(e,this._drawCurve.bind(this),this._drawDot.bind(this)),this._data=this._data.concat(e)}toData(){return this._data}_isLeftButtonPressed(e,o){return o?e.buttons===1:(e.buttons&1)===1}_pointerEventToSignatureEvent(e){return{event:e,type:e.type,x:e.clientX,y:e.clientY,pressure:"pressure"in e?e.pressure:0}}_touchEventToSignatureEvent(e){const o=e.changedTouches[0];return{event:e,type:e.type,x:o.clientX,y:o.clientY,pressure:o.force}}_getPointGroupOptions(e){return{penColor:e&&"penColor"in e?e.penColor:this.penColor,dotSize:e&&"dotSize"in e?e.dotSize:this.dotSize,minWidth:e&&"minWidth"in e?e.minWidth:this.minWidth,maxWidth:e&&"maxWidth"in e?e.maxWidth:this.maxWidth,velocityFilterWeight:e&&"velocityFilterWeight"in e?e.velocityFilterWeight:this.velocityFilterWeight,compositeOperation:e&&"compositeOperation"in e?e.compositeOperation:this.compositeOperation}}_strokeBegin(e){if(!this.dispatchEvent(new CustomEvent("beginStroke",{detail:e,cancelable:!0})))return;const{addEventListener:a}=this._getListenerFunctions();switch(e.event.type){case"mousedown":a("mousemove",this._handleMouseMove),a("mouseup",this._handleMouseUp);break;case"touchstart":a("touchmove",this._handleTouchMove),a("touchend",this._handleTouchEnd);break;case"pointerdown":a("pointermove",this._handlePointerMove),a("pointerup",this._handlePointerUp);break}this._drawingStroke=!0;const r=this._getPointGroupOptions(),d=Object.assign(Object.assign({},r),{points:[]});this._data.push(d),this._reset(r),this._strokeUpdate(e)}_strokeUpdate(e){if(!this._drawingStroke)return;if(this._data.length===0){this._strokeBegin(e);return}this.dispatchEvent(new CustomEvent("beforeUpdateStroke",{detail:e}));const o=this._createPoint(e.x,e.y,e.pressure),a=this._data[this._data.length-1],r=a.points,d=r.length>0&&r[r.length-1],t=d?o.distanceTo(d)<=this.minDistance:!1,i=this._getPointGroupOptions(a);if(!d||!(d&&t)){const l=this._addPoint(o,i);d?l&&this._drawCurve(l,i):this._drawDot(o,i),r.push({time:o.time,x:o.x,y:o.y,pressure:o.pressure})}this.dispatchEvent(new CustomEvent("afterUpdateStroke",{detail:e}))}_strokeEnd(e,o=!0){this._removeMoveUpEventListeners(),this._drawingStroke&&(o&&this._strokeUpdate(e),this._drawingStroke=!1,this.dispatchEvent(new CustomEvent("endStroke",{detail:e})))}_handlePointerEvents(){this._drawingStroke=!1,this.canvas.addEventListener("pointerdown",this._handlePointerDown)}_handleMouseEvents(){this._drawingStroke=!1,this.canvas.addEventListener("mousedown",this._handleMouseDown)}_handleTouchEvents(){this.canvas.addEventListener("touchstart",this._handleTouchStart)}_reset(e){this._lastPoints=[],this._lastVelocity=0,this._lastWidth=(e.minWidth+e.maxWidth)/2,this._ctx.fillStyle=e.penColor,this._ctx.globalCompositeOperation=e.compositeOperation}_createPoint(e,o,a){const r=this.canvas.getBoundingClientRect();return new Ve(e-r.left,o-r.top,a,new Date().getTime())}_addPoint(e,o){const{_lastPoints:a}=this;if(a.push(e),a.length>2){a.length===3&&a.unshift(a[0]);const r=this._calculateCurveWidths(a[1],a[2],o),d=nn.fromPoints(a,r);return a.shift(),d}return null}_calculateCurveWidths(e,o,a){const r=a.velocityFilterWeight*o.velocityFrom(e)+(1-a.velocityFilterWeight)*this._lastVelocity,d=this._strokeWidth(r,a),t={end:d,start:this._lastWidth};return this._lastVelocity=r,this._lastWidth=d,t}_strokeWidth(e,o){return Math.max(o.maxWidth/(e+1),o.minWidth)}_drawCurveSegment(e,o,a){const r=this._ctx;r.moveTo(e,o),r.arc(e,o,a,0,2*Math.PI,!1),this._isEmpty=!1}_drawCurve(e,o){const a=this._ctx,r=e.endWidth-e.startWidth,d=Math.ceil(e.length())*2;a.beginPath(),a.fillStyle=o.penColor;for(let t=0;t<d;t+=1){const i=t/d,l=i*i,s=l*i,u=1-i,f=u*u,v=f*u;let p=v*e.startPoint.x;p+=3*f*i*e.control1.x,p+=3*u*l*e.control2.x,p+=s*e.endPoint.x;let h=v*e.startPoint.y;h+=3*f*i*e.control1.y,h+=3*u*l*e.control2.y,h+=s*e.endPoint.y;const m=Math.min(e.startWidth+s*r,o.maxWidth);this._drawCurveSegment(p,h,m)}a.closePath(),a.fill()}_drawDot(e,o){const a=this._ctx,r=o.dotSize>0?o.dotSize:(o.minWidth+o.maxWidth)/2;a.beginPath(),this._drawCurveSegment(e.x,e.y,r),a.closePath(),a.fillStyle=o.penColor,a.fill()}_fromData(e,o,a){for(const r of e){const{points:d}=r,t=this._getPointGroupOptions(r);if(d.length>1)for(let i=0;i<d.length;i+=1){const l=d[i],s=new Ve(l.x,l.y,l.pressure,l.time);i===0&&this._reset(t);const u=this._addPoint(s,t);u&&o(u,t)}else this._reset(t),a(d[0],t)}}toSVG({includeBackgroundColor:e=!1}={}){const o=this._data,a=Math.max(window.devicePixelRatio||1,1),r=0,d=0,t=this.canvas.width/a,i=this.canvas.height/a,l=document.createElementNS("http://www.w3.org/2000/svg","svg");if(l.setAttribute("xmlns","http://www.w3.org/2000/svg"),l.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),l.setAttribute("viewBox",`${r} ${d} ${t} ${i}`),l.setAttribute("width",t.toString()),l.setAttribute("height",i.toString()),e&&this.backgroundColor){const s=document.createElement("rect");s.setAttribute("width","100%"),s.setAttribute("height","100%"),s.setAttribute("fill",this.backgroundColor),l.appendChild(s)}return this._fromData(o,(s,{penColor:u})=>{const f=document.createElement("path");if(!isNaN(s.control1.x)&&!isNaN(s.control1.y)&&!isNaN(s.control2.x)&&!isNaN(s.control2.y)){const v=`M ${s.startPoint.x.toFixed(3)},${s.startPoint.y.toFixed(3)} C ${s.control1.x.toFixed(3)},${s.control1.y.toFixed(3)} ${s.control2.x.toFixed(3)},${s.control2.y.toFixed(3)} ${s.endPoint.x.toFixed(3)},${s.endPoint.y.toFixed(3)}`;f.setAttribute("d",v),f.setAttribute("stroke-width",(s.endWidth*2.25).toFixed(3)),f.setAttribute("stroke",u),f.setAttribute("fill","none"),f.setAttribute("stroke-linecap","round"),l.appendChild(f)}},(s,{penColor:u,dotSize:f,minWidth:v,maxWidth:p})=>{const h=document.createElement("circle"),m=f>0?f:(v+p)/2;h.setAttribute("r",m.toString()),h.setAttribute("cx",s.x.toString()),h.setAttribute("cy",s.y.toString()),h.setAttribute("fill",u),l.appendChild(h)}),l.outerHTML}};const Fe=(n,e)=>{const o=n.__vccOpts||n;for(const[a,r]of e)o[a]=r;return o},vo=c.defineComponent({name:"SignaturePad",props:{modelValue:{type:String,default:""},width:{type:Number,default:400},height:{type:Number,default:200},backgroundColor:{type:String,default:"rgb(255, 255, 255)"},penColor:{type:String,default:"rgb(0, 0, 0)"},readOnly:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(n,{emit:e}){const o=c.ref(null),a=c.ref(null),r=()=>{o.value&&(a.value=new po(o.value,{backgroundColor:n.backgroundColor,penColor:n.penColor}),n.readOnly&&a.value.off(),n.modelValue&&a.value.fromDataURL(n.modelValue))},d=()=>{a.value&&(a.value.clear(),e("update:modelValue",""))},t=()=>{if(a.value&&!a.value.isEmpty()){const i=a.value.toDataURL("image/png");e("update:modelValue",i)}};return c.watch(()=>n.modelValue,i=>{a.value&&(i?a.value.fromDataURL(i):a.value.clear())}),c.watch(()=>n.readOnly,i=>{a.value&&(i?a.value.off():a.value.on())}),c.onMounted(()=>{r()}),{signaturePad:o,clear:d,save:t}}}),ho={class:"signature-pad-container"},mo=["width","height"],go={key:0,class:"signature-pad-actions"};function yo(n,e,o,a,r,d){const t=c.resolveComponent("v-btn");return c.openBlock(),c.createElementBlock("div",ho,[c.createElementVNode("canvas",{ref:"signaturePad",class:"signature-pad",width:n.width,height:n.height},null,8,mo),n.readOnly?c.createCommentVNode("",!0):(c.openBlock(),c.createElementBlock("div",go,[n.modelValue?(c.openBlock(),c.createBlock(t,{key:0,color:"error",size:"small",variant:"outlined",onClick:n.clear,class:"mr-2"},{default:c.withCtx(()=>e[0]||(e[0]=[c.createTextVNode(" Clear ")])),_:1,__:[0]},8,["onClick"])):c.createCommentVNode("",!0),c.createVNode(t,{color:"primary",size:"small",variant:"outlined",onClick:n.save},{default:c.withCtx(()=>e[1]||(e[1]=[c.createTextVNode(" Save ")])),_:1,__:[1]},8,["onClick"])]))])}const Re=Fe(vo,[["render",yo],["__scopeId","data-v-761bf55a"]]),on=n=>new Promise((e,o)=>{if(!n){e(null);return}const a=new FileReader;a.readAsDataURL(n),a.onload=()=>e(a.result),a.onerror=r=>o(r)}),rn=async n=>!n||n.length===0?null:(Array.isArray(n)||(n=[n]),await Promise.all(Array.from(n).map(async o=>{const a=await on(o);return{name:o.name,type:o.type,size:o.size,data:a}}))),Rn=n=>n||null,an=(n,e="")=>{if(!n)return null;const o=n.split(",")[1],a=atob(o),r=[],d=512;for(let t=0;t<a.length;t+=d){const i=a.slice(t,t+d),l=new Array(i.length);for(let u=0;u<i.length;u++)l[u]=i.charCodeAt(u);const s=new Uint8Array(l);r.push(s)}return new Blob(r,{type:e})},ln=async(n,e)=>{const o={...n};for(const a of e){const r=n[a.id];a.type==="file"&&r&&(o[a.id]=await rn(r)),a.type}return o},Mn=(n,e)=>{const o={...n};for(const a of e)n[a.id];return o},bo=Object.freeze(Object.defineProperty({__proto__:null,base64ToBlob:an,base64ToUrl:Rn,default:{fileToBase64:on,processFiles:rn,base64ToUrl:Rn,base64ToBlob:an,prepareFormForSubmission:ln,prepareStoredFormForRendering:Mn},fileToBase64:on,prepareFormForSubmission:ln,prepareStoredFormForRendering:Mn,processFiles:rn},Symbol.toStringTag,{value:"Module"})),Eo=c.defineComponent({name:"FileDisplay",props:{fileData:{type:[Array,Object],default:()=>null}},setup(n){const e=c.ref(!1),o=c.ref(null),a=c.ref(""),r=c.computed(()=>n.fileData?Array.isArray(n.fileData)?n.fileData:[n.fileData]:[]),d=p=>{if(!p||p===0)return"0 Bytes";const h=["Bytes","KB","MB","GB"],m=Math.floor(Math.log(p)/Math.log(1024));return`${parseFloat((p/Math.pow(1024,m)).toFixed(2))} ${h[m]}`},t=p=>p&&p.data&&(i(p)||l(p)||s(p)),i=p=>p.type&&p.type.startsWith("image/"),l=p=>p.type==="application/pdf",s=p=>{const h=["text/","application/json","application/javascript","application/xml","application/html"];return p.type&&h.some(m=>p.type.includes(m))};return{previewDialog:e,previewFile:o,previewTextContent:a,normalizedFileData:r,formatFileSize:d,canPreview:t,isImageFile:i,isPdfFile:l,isTextFile:s,getFileIcon:p=>!p||!p.type?"mdi-file-outline":p.type.startsWith("image/")?"mdi-file-image-outline":p.type==="application/pdf"?"mdi-file-pdf-outline":p.type.includes("word")||p.type.includes("document")||p.type.includes("msword")?"mdi-file-document-outline":p.type.includes("excel")||p.type.includes("spreadsheet")||p.type.includes("csv")?"mdi-file-excel-outline":p.type.includes("powerpoint")||p.type.includes("presentation")?"mdi-file-powerpoint-outline":p.type.includes("text/")||p.type.includes("code")?"mdi-file-code-outline":p.type.includes("zip")||p.type.includes("tar")||p.type.includes("compressed")||p.type.includes("archive")?"mdi-folder-zip-outline":p.type.includes("video/")?"mdi-file-video-outline":p.type.includes("audio/")?"mdi-file-music-outline":"mdi-file-outline",openPreview:p=>{if(o.value=p,s(p)&&p.data)try{if(p.data.startsWith("data:")){const h=p.data.split(",")[1],m=atob(h);a.value=m}else a.value=p.data}catch(h){console.error("Error decoding text content:",h),a.value="Error loading text content"}e.value=!0},downloadFile:p=>{if(!(!p||!p.data))try{const h=p.type||"application/octet-stream",m=an(p.data,h),g=document.createElement("a");g.href=URL.createObjectURL(m),g.download=p.name||"download",document.body.appendChild(g),g.click(),document.body.removeChild(g)}catch(h){console.error("Error downloading file:",h)}}}}}),So={class:"file-display-component"},xo={key:0,class:"text-body-2 text-grey"},Oo={key:1},Co={class:"file-name"},To={key:0,class:"text-caption text-grey ml-2"},wo={key:0},Po=["src"],Do=["src"],Io={key:2,class:"preview-text"},No={key:3,class:"text-center py-5"};function Ao(n,e,o,a,r,d){const t=c.resolveComponent("v-icon"),i=c.resolveComponent("v-btn"),l=c.resolveComponent("v-card-title"),s=c.resolveComponent("v-card-text"),u=c.resolveComponent("v-card"),f=c.resolveComponent("v-dialog");return c.openBlock(),c.createElementBlock("div",So,[!n.fileData||n.fileData.length===0?(c.openBlock(),c.createElementBlock("div",xo," No file uploaded ")):(c.openBlock(),c.createElementBlock("div",Oo,[(c.openBlock(!0),c.createElementBlock(c.Fragment,null,c.renderList(n.normalizedFileData,(v,p)=>(c.openBlock(),c.createElementBlock("div",{key:p,class:"file-item"},[c.createVNode(t,{class:"mr-2",icon:n.getFileIcon(v)},null,8,["icon"]),c.createElementVNode("span",Co,c.toDisplayString(v.name),1),v.size?(c.openBlock(),c.createElementBlock("span",To," ("+c.toDisplayString(n.formatFileSize(v.size))+") ",1)):c.createCommentVNode("",!0),n.canPreview(v)?(c.openBlock(),c.createBlock(i,{key:1,class:"ml-2",size:"x-small",variant:"text",color:"primary",onClick:h=>n.openPreview(v)},{default:c.withCtx(()=>e[3]||(e[3]=[c.createTextVNode(" Preview ")])),_:2,__:[3]},1032,["onClick"])):(c.openBlock(),c.createBlock(i,{key:2,class:"ml-2",size:"x-small",variant:"text",color:"primary",onClick:h=>n.downloadFile(v)},{default:c.withCtx(()=>e[4]||(e[4]=[c.createTextVNode(" Download ")])),_:2,__:[4]},1032,["onClick"]))]))),128))])),c.createVNode(f,{modelValue:n.previewDialog,"onUpdate:modelValue":e[2]||(e[2]=v=>n.previewDialog=v),"max-width":"800"},{default:c.withCtx(()=>[c.createVNode(u,null,{default:c.withCtx(()=>[c.createVNode(l,{class:"d-flex justify-space-between align-center"},{default:c.withCtx(()=>[c.createElementVNode("span",null,c.toDisplayString(n.previewFile?n.previewFile.name:"File Preview"),1),c.createVNode(i,{icon:"",onClick:e[0]||(e[0]=v=>n.previewDialog=!1)},{default:c.withCtx(()=>[c.createVNode(t,null,{default:c.withCtx(()=>e[5]||(e[5]=[c.createTextVNode("mdi-close")])),_:1,__:[5]})]),_:1})]),_:1}),c.createVNode(s,{class:"text-center"},{default:c.withCtx(()=>[n.previewFile&&n.previewFile.data?(c.openBlock(),c.createElementBlock("div",wo,[n.isImageFile(n.previewFile)?(c.openBlock(),c.createElementBlock("img",{key:0,src:n.previewFile.data,class:"preview-image",alt:"File Preview"},null,8,Po)):n.isPdfFile(n.previewFile)?(c.openBlock(),c.createElementBlock("iframe",{key:1,src:n.previewFile.data,class:"preview-pdf",width:"100%",height:"600"},null,8,Do)):n.isTextFile(n.previewFile)?(c.openBlock(),c.createElementBlock("pre",Io," "+c.toDisplayString(n.previewTextContent)+` `,1)):(c.openBlock(),c.createElementBlock("div",No,[c.createVNode(t,{size:"64",color:"grey"},{default:c.withCtx(()=>e[6]||(e[6]=[c.createTextVNode("mdi-file-document-outline")])),_:1,__:[6]}),e[8]||(e[8]=c.createElementVNode("div",{class:"mt-2"},"Preview not available for this file type",-1)),c.createVNode(i,{color:"primary",class:"mt-4",onClick:e[1]||(e[1]=v=>n.downloadFile(n.previewFile))},{default:c.withCtx(()=>e[7]||(e[7]=[c.createTextVNode(" Download File ")])),_:1,__:[7]})]))])):c.createCommentVNode("",!0)]),_:1})]),_:1})]),_:1},8,["modelValue"])])}const sn=Fe(Eo,[["render",Ao],["__scopeId","data-v-e4148185"]]),Vo=c.defineComponent({name:"FormRenderer",components:{SignaturePad:Re,FileDisplay:sn},props:{formData:{type:Object,required:!0,default:()=>({title:"",elements:[]})},initialValues:{type:Object,default:()=>({})},readOnly:{type:Boolean,default:!1}},emits:["save","update:modelValue"],setup(n,{emit:e}){const o=c.ref(null),a=c.ref(!0),r=c.reactive({});return c.watch(()=>n.formData.elements,s=>{s&&s.forEach(u=>{if(n.initialValues&&n.initialValues[u.id]!==void 0)if(u.type==="file"){const f=n.initialValues[u.id];n.readOnly&&f&&(Array.isArray(f)||typeof f=="object"&&f.data),r[u.id]=f}else r[u.id]=n.initialValues[u.id];else switch(u.type){case"checkbox":case"switch":r[u.id]=!1;break;case"select":case"radio":u.props.items&&u.props.items.length>0&&(r[u.id]=null);break;case"file":r[u.id]=null;break;default:r[u.id]="";break}})},{immediate:!0,deep:!0}),{form:o,isFormValid:a,formValues:r,isTextField:s=>{var f;const u=["text","email","password","number","date","time"];return s.type==="text"||u.includes((f=s.props)==null?void 0:f.type)},generateRules:s=>{const u=[],f=s.props||{};if((f.required||f.rules&&f.rules.required)&&u.push(v=>!!v||`${f.label} is required`),s.type==="email"||f.rules&&f.rules.email){const v=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;u.push(p=>!p||v.test(p)||"Please enter a valid email")}if(f.rules&&f.rules.minLength&&f.rules.minLength.enabled){const v=parseInt(f.rules.minLength.value)||0;u.push(p=>!p||p.length>=v||`Minimum ${v} characters`)}if(f.rules&&f.rules.maxLength&&f.rules.maxLength.enabled){const v=parseInt(f.rules.maxLength.value)||999;u.push(p=>!p||p.length<=v||`Maximum ${v} characters`)}return u},submitForm:async()=>{if(o.value&&o.value.validate()){const s=await ln(r,n.formData.elements);e("save",s),e("update:modelValue",s)}},resetForm:()=>{o.value&&o.value.reset()}}}}),Fo={class:"form-renderer"},Ro={key:8,class:"mb-3"},Mo={class:"text-body-1 mb-1 d-block"},Lo={class:"text-caption text-grey"},jo={key:9,class:"mb-3"},Bo={class:"text-body-1 mb-1 d-block"},Uo={class:"text-caption text-grey"};function Go(n,e,o,a,r,d){const t=c.resolveComponent("v-card-title"),i=c.resolveComponent("v-text-field"),l=c.resolveComponent("v-textarea"),s=c.resolveComponent("v-select"),u=c.resolveComponent("v-autocomplete"),f=c.resolveComponent("v-checkbox"),v=c.resolveComponent("v-radio"),p=c.resolveComponent("v-radio-group"),h=c.resolveComponent("v-switch"),m=c.resolveComponent("v-file-input"),g=c.resolveComponent("file-display"),y=c.resolveComponent("signature-pad"),E=c.resolveComponent("v-card-text"),P=c.resolveComponent("v-spacer"),T=c.resolveComponent("v-btn"),D=c.resolveComponent("v-card-actions"),O=c.resolveComponent("v-card"),V=c.resolveComponent("v-form");return c.openBlock(),c.createElementBlock("div",Fo,[c.createVNode(V,{ref:"form",modelValue:n.isFormValid,"onUpdate:modelValue":e[0]||(e[0]=b=>n.isFormValid=b),onSubmit:c.withModifiers(n.submitForm,["prevent"])},{default:c.withCtx(()=>[c.createVNode(O,null,{default:c.withCtx(()=>[c.createVNode(t,null,{default:c.withCtx(()=>[c.createTextVNode(c.toDisplayString(n.formData.title||"Form"),1)]),_:1}),c.createVNode(E,null,{default:c.withCtx(()=>[(c.openBlock(!0),c.createElementBlock(c.Fragment,null,c.renderList(n.formData.elements,b=>(c.openBlock(),c.createElementBlock("div",{key:b.id,class:"mb-4"},[n.isTextField(b)?(c.openBlock(),c.createBlock(i,{key:0,modelValue:n.formValues[b.id],"onUpdate:modelValue":C=>n.formValues[b.id]=C,label:b.props.label,placeholder:b.props.placeholder,hint:b.props.hint,type:b.props.type||"text",variant:b.props.variant||"outlined",density:b.props.density||"comfortable",rules:n.generateRules(b),required:b.props.required,counter:b.props.counter,readonly:n.readOnly},null,8,["modelValue","onUpdate:modelValue","label","placeholder","hint","type","variant","density","rules","required","counter","readonly"])):b.type==="textarea"?(c.openBlock(),c.createBlock(l,{key:1,modelValue:n.formValues[b.id],"onUpdate:modelValue":C=>n.formValues[b.id]=C,label:b.props.label,placeholder:b.props.placeholder,hint:b.props.hint,rows:b.props.rows,variant:b.props.variant||"outlined",density:b.props.density||"comfortable",rules:n.generateRules(b),required:b.props.required,counter:b.props.counter,readonly:n.readOnly},null,8,["modelValue","onUpdate:modelValue","label","placeholder","hint","rows","variant","density","rules","required","counter","readonly"])):b.type==="select"?(c.openBlock(),c.createBlock(s,{key:2,modelValue:n.formValues[b.id],"onUpdate:modelValue":C=>n.formValues[b.id]=C,label:b.props.label,items:b.props.items,hint:b.props.hint,variant:b.props.variant||"outlined",density:b.props.density||"comfortable",rules:n.generateRules(b),required:b.props.required,readonly:n.readOnly},null,8,["modelValue","onUpdate:modelValue","label","items","hint","variant","density","rules","required","readonly"])):b.type==="autocomplete"?(c.openBlock(),c.createBlock(u,{key:3,modelValue:n.formValues[b.id],"onUpdate:modelValue":C=>n.formValues[b.id]=C,label:b.props.label,items:b.props.items,hint:b.props.hint,variant:b.props.variant||"outlined",density:b.props.density||"comfortable",rules:n.generateRules(b),required:b.props.required,readonly:n.readOnly},null,8,["modelValue","onUpdate:modelValue","label","items","hint","variant","density","rules","required","readonly"])):b.type==="checkbox"?(c.openBlock(),c.createBlock(f,{key:4,modelValue:n.formValues[b.id],"onUpdate:modelValue":C=>n.formValues[b.id]=C,label:b.props.label,hint:b.props.hint,required:b.props.required,rules:n.generateRules(b),readonly:n.readOnly,disabled:n.readOnly},null,8,["modelValue","onUpdate:modelValue","label","hint","required","rules","readonly","disabled"])):b.type==="radio"?(c.openBlock(),c.createBlock(p,{key:5,modelValue:n.formValues[b.id],"onUpdate:modelValue":C=>n.formValues[b.id]=C,label:b.props.label,hint:b.props.hint,rules:n.generateRules(b),required:b.props.required,readonly:n.readOnly,disabled:n.readOnly},{default:c.withCtx(()=>[(c.openBlock(!0),c.createElementBlock(c.Fragment,null,c.renderList(b.props.items,C=>(c.openBlock(),c.createBlock(v,{key:C.value,label:C.title,value:C.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","label","hint","rules","required","readonly","disabled"])):b.type==="switch"?(c.openBlock(),c.createBlock(h,{key:6,modelValue:n.formValues[b.id],"onUpdate:modelValue":C=>n.formValues[b.id]=C,label:b.props.label,color:b.props.color||"primary",hint:b.props.hint,required:b.props.required,rules:n.generateRules(b),readonly:n.readOnly,disabled:n.readOnly},null,8,["modelValue","onUpdate:modelValue","label","color","hint","required","rules","readonly","disabled"])):b.type==="file"&&!n.readOnly?(c.openBlock(),c.createBlock(m,{key:7,modelValue:n.formValues[b.id],"onUpdate:modelValue":C=>n.formValues[b.id]=C,label:b.props.label,hint:b.props.hint,accept:b.props.accept,multiple:b.props.multiple,variant:b.props.variant||"outlined",density:b.props.density||"comfortable",rules:n.generateRules(b),required:b.props.required,readonly:n.readOnly,disabled:n.readOnly},null,8,["modelValue","onUpdate:modelValue","label","hint","accept","multiple","variant","density","rules","required","readonly","disabled"])):b.type==="file"&&n.readOnly?(c.openBlock(),c.createElementBlock("div",Ro,[c.createElementVNode("label",Mo,c.toDisplayString(b.props.label),1),c.createVNode(g,{"file-data":n.formValues[b.id],class:"mt-2 mb-2 pa-2 border rounded"},null,8,["file-data"]),c.createElementVNode("div",Lo,c.toDisplayString(b.props.hint),1)])):b.type==="signature"?(c.openBlock(),c.createElementBlock("div",jo,[c.createElementVNode("label",Bo,c.toDisplayString(b.props.label),1),c.createVNode(y,{modelValue:n.formValues[b.id],"onUpdate:modelValue":C=>n.formValues[b.id]=C,width:b.props.width||400,height:b.props.height||200,"pen-color":b.props.penColor,"background-color":b.props.backgroundColor,"read-only":n.readOnly},null,8,["modelValue","onUpdate:modelValue","width","height","pen-color","background-color","read-only"]),c.createElementVNode("div",Uo,c.toDisplayString(b.props.hint),1)])):c.createCommentVNode("",!0)]))),128))]),_:1}),c.createVNode(D,{class:"pa-4"},{default:c.withCtx(()=>[c.createVNode(P),n.readOnly?c.createCommentVNode("",!0):(c.openBlock(),c.createElementBlock(c.Fragment,{key:0},[c.createVNode(T,{color:"grey-darken-1",variant:"text",onClick:n.resetForm},{default:c.withCtx(()=>e[1]||(e[1]=[c.createTextVNode(" Reset ")])),_:1,__:[1]},8,["onClick"]),c.createVNode(T,{color:"primary",type:"submit",disabled:!n.isFormValid,onClick:n.submitForm},{default:c.withCtx(()=>e[2]||(e[2]=[c.createTextVNode(" Save ")])),_:1,__:[2]},8,["disabled","onClick"])],64))]),_:1})]),_:1})]),_:1},8,["modelValue","onSubmit"])])}const dn=Fe(Vo,[["render",Go],["__scopeId","data-v-e37531e9"]]);function Wo(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}function Ko(n){if(Object.prototype.hasOwnProperty.call(n,"__esModule"))return n;var e=n.default;if(typeof e=="function"){var o=function a(){return this instanceof a?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};o.prototype=e.prototype}else o={};return Object.defineProperty(o,"__esModule",{value:!0}),Object.keys(n).forEach(function(a){var r=Object.getOwnPropertyDescriptor(n,a);Object.defineProperty(o,a,r.get?r:{enumerable:!0,get:function(){return n[a]}})}),o}var Me={exports:{}};/**! * Sortable 1.14.0 * @author RubaXa <trash@rubaxa.org> * @author owenm <owen23355@gmail.com> * @license MIT */function Ln(n,e){var o=Object.keys(n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);e&&(a=a.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),o.push.apply(o,a)}return o}function Wt(n){for(var e=1;e<arguments.length;e++){var o=arguments[e]!=null?arguments[e]:{};e%2?Ln(Object(o),!0).forEach(function(a){Ho(n,a,o[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):Ln(Object(o)).forEach(function(a){Object.defineProperty(n,a,Object.getOwnPropertyDescriptor(o,a))})}return n}function Le(n){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Le=function(e){return typeof e}:Le=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Le(n)}function Ho(n,e,o){return e in n?Object.defineProperty(n,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[e]=o,n}function Mt(){return Mt=Object.assign||function(n){for(var e=1;e<arguments.length;e++){var o=arguments[e];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(n[a]=o[a])}return n},Mt.apply(this,arguments)}function Xo(n,e){if(n==null)return{};var o={},a=Object.keys(n),r,d;for(d=0;d<a.length;d++)r=a[d],!(e.indexOf(r)>=0)&&(o[r]=n[r]);return o}function zo(n,e){if(n==null)return{};var o=Xo(n,e),a,r;if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(n);for(r=0;r<d.length;r++)a=d[r],!(e.indexOf(a)>=0)&&Object.prototype.propertyIsEnumerable.call(n,a)&&(o[a]=n[a])}return o}function Yo(n){return ko(n)||Jo(n)||Zo(n)||Qo()}function ko(n){if(Array.isArray(n))return cn(n)}function Jo(n){if(typeof Symbol<"u"&&n[Symbol.iterator]!=null||n["@@iterator"]!=null)return Array.from(n)}function Zo(n,e){if(n){if(typeof n=="string")return cn(n,e);var o=Object.prototype.toString.call(n).slice(8,-1);if(o==="Object"&&n.constructor&&(o=n.constructor.name),o==="Map"||o==="Set")return Array.from(n);if(o==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return cn(n,e)}}function cn(n,e){(e==null||e>n.length)&&(e=n.length);for(var o=0,a=new Array(e);o<e;o++)a[o]=n[o];return a}function Qo(){throw new TypeError(`Invalid attempt to spread non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var $o="1.14.0";function zt(n){if(typeof window<"u"&&window.navigator)return!!navigator.userAgent.match(n)}var Yt=zt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),fe=zt(/Edge/i),jn=zt(/firefox/i),pe=zt(/safari/i)&&!zt(/chrome/i)&&!zt(/android/i),Bn=zt(/iP(ad|od|hone)/i),qo=zt(/chrome/i)&&zt(/android/i),Un={capture:!1,passive:!1};function $(n,e,o){n.addEventListener(e,o,!Yt&&Un)}function Q(n,e,o){n.removeEventListener(e,o,!Yt&&Un)}function je(n,e){if(e){if(e[0]===">"&&(e=e.substring(1)),n)try{if(n.matches)return n.matches(e);if(n.msMatchesSelector)return n.msMatchesSelector(e);if(n.webkitMatchesSelector)return n.webkitMatchesSelector(e)}catch{return!1}return!1}}function _o(n){return n.host&&n!==document&&n.host.nodeType?n.host:n.parentNode}function jt(n,e,o,a){if(n){o=o||document;do{if(e!=null&&(e[0]===">"?n.parentNode===o&&je(n,e):je(n,e))||a&&n===o)return n;if(n===o)break}while(n=_o(n))}return null}var Gn=/\s+/g;function lt(n,e,o){if(n&&e)if(n.classList)n.classList[o?"add":"remove"](e);else{var a=(" "+n.className+" ").replace(Gn," ").replace(" "+e+" "," ");n.className=(a+(o?" "+e:"")).replace(Gn," ")}}function U(n,e,o){var a=n&&n.style;if(a){if(o===void 0)return document.defaultView&&document.defaultView.getComputedStyle?o=document.defaultView.getComputedStyle(n,""):n.currentStyle&&(o=n.currentStyle),e===void 0?o:o[e];!(e in a)&&e.indexOf("webkit")===-1&&(e="-webkit-"+e),a[e]=o+(typeof o=="string"?"":"px")}}function _t(n,e){var o="";if(typeof n=="string")o=n;else do{var a=U(n,"transform");a&&a!=="none"&&(o=a+" "+o)}while(!e&&(n=n.parentNode));var r=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return r&&new r(o)}function Wn(n,e,o){if(n){var a=n.getElementsByTagName(e),r=0,d=a.length;if(o)for(;r<d;r++)o(a[r],r);return a}return[]}function Kt(){var n=document.scrollingElement;return n||document.documentElement}function ot(n,e,o,a,r){if(!(!n.getBoundingClientRect&&n!==window)){var d,t,i,l,s,u,f;if(n!==window&&n.parentNode&&n!==Kt()?(d=n.getBoundingClientRect(),t=d.top,i=d.left,l=d.bottom,s=d.right,u=d.height,f=d.width):(t=0,i=0,l=window.innerHeight,s=window.innerWidth,u=window.innerHeight,f=window.innerWidth),(e||o)&&n!==window&&(r=r||n.parentNode,!Yt))do if(r&&r.getBoundingClientRect&&(U(r,"transform")!=="none"||o&&U(r,"position")!=="static")){var v=r.getBoundingClientRect();t-=v.top+parseInt(U(r,"border-top-width")),i-=v.left+parseInt(U(r,"border-left-width")),l=t+d.height,s=i+d.width;break}while(r=r.parentNode);if(a&&n!==window){var p=_t(r||n),h=p&&p.a,m=p&&p.d;p&&(t/=m,i/=h,f/=h,u/=m,l=t+u,s=i+f)}return{top:t,left:i,bottom:l,right:s,width:f,height:u}}}function Kn(n,e,o){for(var a=kt(n,!0),r=ot(n)[e];a;){var d=ot(a)[o],t=void 0;if(t=r>=d,!t)return a;if(a===Kt())break;a=kt(a,!1)}return!1}function ae(n,e,o,a){for(var r=0,d=0,t=n.children;d<t.length;){if(t[d].style.display!=="none"&&t[d]!==H.ghost&&(a||t[d]!==H.dragged)&&jt(t[d],o.draggable,n,!1)){if(r===e)return t[d];r++}d++}return null}function un(n,e){for(var o=n.lastElementChild;o&&(o===H.ghost||U(o,"display")==="none"||e&&!je(o,e));)o=o.previousElementSibling;return o||null}function dt(n,e){var o=0;if(!n||!n.parentNode)return-1;for(;n=n.previousElementSibling;)n.nodeName.toUpperCase()!=="TEMPLATE"&&n!==H.clone&&(!e||je(n,e))&&o++;return o}function Hn(n){var e=0,o=0,a=Kt();if(n)do{var r=_t(n),d=r.a,t=r.d;e+=n.scrollLeft*d,o+=n.scrollTop*t}while(n!==a&&(n=n.parentNode));return[e,o]}function tr(n,e){for(var o in n)if(n.hasOwnProperty(o)){for(var a in e)if(e.hasOwnProperty(a)&&e[a]===n[o][a])return Number(o)}return-1}function kt(n,e){if(!n||!n.getBoundingClientRect)return Kt();var o=n,a=!1;do if(o.clientWidth<o.scrollWidth||o.clientHeight<o.scrollHeight){var r=U(o);if(o.clientWidth<o.scrollWidth&&(r.overflowX=="auto"||r.overflowX=="scroll")||o.clientHeight<o.scrollHeight&&(r.overflowY=="auto"||r.overflowY=="scroll")){if(!o.getBoundingClientRect||o===document.body)return Kt();if(a||e)return o;a=!0}}while(o=o.parentNode);return Kt()}function er(n,e){if(n&&e)for(var o in e)e.hasOwnProperty(o)&&(n[o]=e[o]);return n}function fn(n,e){return Math.round(n.top)===Math.round(e.top)&&Math.round(n.left)===Math.round(e.left)&&Math.round(n.height)===Math.round(e.height)&&Math.round(n.width)===Math.round(e.width)}var ve;function Xn(n,e){return function(){if(!ve){var o=arguments,a=this;o.length===1?n.call(a,o[0]):n.apply(a,o),ve=setTimeout(function(){ve=void 0},e)}}}function nr(){clearTimeout(ve),ve=void 0}function zn(n,e,o){n.scrollLeft+=e,n.scrollTop+=o}function pn(n){var e=window.Polymer,o=window.jQuery||window.Zepto;return e&&e.dom?e.dom(n).cloneNode(!0):o?o(n).clone(!0)[0]:n.cloneNode(!0)}function Yn(n,e){U(n,"position","absolute"),U(n,"top",e.top),U(n,"left",e.left),U(n,"width",e.width),U(n,"height",e.height)}function vn(n){U(n,"position",""),U(n,"top",""),U(n,"left",""),U(n,"width",""),U(n,"height","")}var Ct="Sortable"+new Date().getTime();function or(){var n=[],e;return{captureAnimationState:function(){if(n=[],!!this.options.animation){var a=[].slice.call(this.el.children);a.forEach(function(r){if(!(U(r,"display")==="none"||r===H.ghost)){n.push({target:r,rect:ot(r)});var d=Wt({},n[n.length-1].rect);if(r.thisAnimationDuration){var t=_t(r,!0);t&&(d.top-=t.f,d.left-=t.e)}r.fromRect=d}})}},addAnimationState:function(a){n.push(a)},removeAnimationState:function(a){n.splice(tr(n,{target:a}),1)},animateAll:function(a){var r=this;if(!this.options.animation){clearTimeout(e),typeof a=="function"&&a();return}var d=!1,t=0;n.forEach(function(i){var l=0,s=i.target,u=s.fromRect,f=ot(s),v=s.prevFromRect,p=s.prevToRect,h=i.rect,m=_t(s,!0);m&&(f.top-=m.f,f.left-=m.e),s.toRect=f,s.thisAnimationDuration&&fn(v,f)&&!fn(u,f)&&(h.top-f.top)/(h.left-f.left)===(u.top-f.top)/(u.left-f.left)&&(l=ar(h,v,p,r.options)),fn(f,u)||(s.prevFromRect=u,s.prevToRect=f,l||(l=r.options.animation),r.animate(s,h,f,l)),l&&(d=!0,t=Math.max(t,l),clearTimeout(s.animationResetTimer),s.animationResetTimer=setTimeout(function(){s.animationTime=0,s.prevFromRect=null,s.fromRect=null,s.prevToRect=null,s.thisAnimationDuration=null},l),s.thisAnimationDuration=l)}),clearTimeout(e),d?e=setTimeout(function(){typeof a=="function"&&a()},t):typeof a=="function"&&a(),n=[]},animate:function(a,r,d,t){if(t){U(a,"transition",""),U(a,"transform","");var i=_t(this.el),l=i&&i.a,s=i&&i.d,u=(r.left-d.left)/(l||1),f=(r.top-d.top)/(s||1);a.animatingX=!!u,a.animatingY=!!f,U(a,"transform","translate3d("+u+"px,"+f+"px,0)"),this.forRepaintDummy=rr(a),U(a,"transition","transform "+t+"ms"+(this.options.easing?" "+this.options.easing:"")),U(a,"transform","translate3d(0,0,0)"),typeof a.animated=="number"&&clearTimeout(a.animated),a.animated=setTimeout(function(){U(a,"transition",""),U(a,"transform",""),a.animated=!1,a.animatingX=!1,a.animatingY=!1},t)}}}}function rr(n){return n.offsetWidth}function ar(n,e,o,a){return Math.sqrt(Math.pow(e.top-n.top,2)+Math.pow(e.left-n.left,2))/Math.sqrt(Math.pow(e.top-o.top,2)+Math.pow(e.left-o.left,2))*a.animation}var ie=[],hn={initializeByDefault:!0},he={mount:function(e){for(var o in hn)hn.hasOwnProperty(o)&&!(o in e)&&(e[o]=hn[o]);ie.forEach(function(a){if(a.pluginName===e.pluginName)throw"Sortable: Cannot mount plugin ".concat(e.pluginName," more than once")}),ie.push(e)},pluginEvent:function(e,o,a){var r=this;this.eventCanceled=!1,a.cancel=function(){r.eventCanceled=!0};var d=e+"Global";ie.forEach(function(t){o[t.pluginName]&&(o[t.pluginName][d]&&o[t.pluginName][d](Wt({sortable:o},a)),o.options[t.pluginName]&&o[t.pluginName][e]&&o[t.pluginName][e](Wt({sortable:o},a)))})},initializePlugins:function(e,o,a,r){ie.forEach(function(i){var l=i.pluginName;if(!(!e.options[l]&&!i.initializeByDefault)){var s=new i(e,o,e.options);s.sortable=e,s.options=e.options,e[l]=s,Mt(a,s.defaults)}});for(var d in e.options)if(e.options.hasOwnProperty(d)){var t=this.modifyOption(e,d,e.options[d]);typeof t<"u"&&(e.options[d]=t)}},getEventProperties:function(e,o){var a={};return ie.forEach(function(r){typeof r.eventProperties=="function"&&Mt(a,r.eventProperties.call(o[r.pluginName],e))}),a},modifyOption:function(e,o,a){var r;return ie.forEach(function(d){e[d.pluginName]&&d.optionListeners&&typeof d.optionListeners[o]=="function"&&(r=d.optionListeners[o].call(e[d.pluginName],a))}),r}};function me(n){var e=n.sortable,o=n.rootEl,a=n.name,r=n.targetEl,d=n.cloneEl,t=n.toEl,i=n.fromEl,l=n.oldIndex,s=n.newIndex,u=n.oldDraggableIndex,f=n.newDraggableIndex,v=n.originalEvent,p=n.putSortable,h=n.extraEventProperties;if(e=e||o&&o[Ct],!!e){var m,g=e.options,y="on"+a.charAt(0).toUpperCase()+a.substr(1);window.CustomEvent&&!Yt&&!fe?m=new CustomEvent(a,{bubbles:!0,cancelable:!0}):(m=document.createEvent("Event"),m.initEvent(a,!0,!0)),m.to=t||o,m.from=i||o,m.item=r||o,m.clone=d,m.oldIndex=l,m.newIndex=s,m.oldDraggableIndex=u,m.newDraggableIndex=f,m.originalEvent=v,m.pullMode=p?p.lastPutMode:void 0;var E=Wt(Wt({},h),he.getEventProperties(a,e));for(var P in E)m[P]=E[P];o&&o.dispatchEvent(m),g[y]&&g[y].call(e,m)}}var ir=["evt"],Dt=function(e,o){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=a.evt,d=zo(a,ir);he.pluginEvent.bind(H)(e,o,Wt({dragEl:F,parentEl:ct,ghostEl:J,rootEl:rt,nextEl:te,lastDownEl:Be,cloneEl:ut,cloneHidden:Jt,dragStarted:ye,putSortable:Et,activeSortable:H.active,originalEvent:r,oldIndex:le,oldDraggableIndex:ge,newIndex:Vt,newDraggableIndex:Zt,hideGhostForTarget:_n,unhideGhostForTarget:to,cloneNowHidden:function(){Jt=!0},cloneNowShown:function(){Jt=!1},dispatchSortableEvent:function(i){wt({sortable:o,name:i,originalEvent:r})}},d))};function wt(n){me(Wt({putSortable:Et,cloneEl:ut,targetEl:F,rootEl:rt,oldIndex:le,oldDraggableIndex:ge,newIndex:Vt,newDraggableIndex:Zt},n))}var F,ct,J,rt,te,Be,ut,Jt,le,Vt,ge,Zt,Ue,Et,se=!1,Ge=!1,We=[],ee,Bt,mn,gn,kn,Jn,ye,de,be,Ee=!1,Ke=!1,He,Tt,yn=[],bn=!1,Xe=[],ze=typeof document<"u",Ye=Bn,Zn=fe||Yt?"cssFloat":"float",lr=ze&&!qo&&!Bn&&"draggable"in document.createElement("div"),Qn=function(){if(ze){if(Yt)return!1;var n=document.createElement("x");return n.style.cssText="pointer-events:auto",n.style.pointerEvents==="auto"}}(),$n=function(e,o){var a=U(e),r=parseInt(a.width)-parseInt(a.paddingLeft)-parseInt(a.paddingRight)-parseInt(a.borderLeftWidth)-parseInt(a.borderRightWidth),d=ae(e,0,o),t=ae(e,1,o),i=d&&U(d),l=t&&U(t),s=i&&parseInt(i.marginLeft)+parseInt(i.marginRight)+ot(d).width,u=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+ot(t).width;if(a.display==="flex")return a.flexDirection==="column"||a.flexDirection==="column-reverse"?"vertical":"horizontal";if(a.display==="grid")return a.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(d&&i.float&&i.float!=="none"){var f=i.float==="left"?"left":"right";return t&&(l.clear==="both"||l.clear===f)?"vertical":"horizontal"}return d&&(i.display==="block"||i.display==="flex"||i.display==="table"||i.display==="grid"||s>=r&&a[Zn]==="none"||t&&a[Zn]==="none"&&s+u>r)?"vertical":"horizontal"},sr=function(e,o,a){var r=a?e.left:e.top,d=a?e.right:e.bottom,t=a?e.width:e.height,i=a?o.left:o.top,l=a?o.right:o.bottom,s=a?o.width:o.height;return r===i||d===l||r+t/2===i+s/2},dr=function(e,o){var a;return We.some(function(r){var d=r[Ct].options.emptyInsertThreshold;if(!(!d||un(r))){var t=ot(r),i=e>=t.left-d&&e<=t.right+d,l=o>=t.top-d&&o<=t.bottom+d;if(i&&l)return a=r}}),a},qn=function(e){function o(d,t){return function(i,l,s,u){var f=i.options.group.name&&l.options.group.name&&i.options.group.name===l.options.group.name;if(d==null&&(t||f))return!0;if(d==null||d===!1)return!1;if(t&&d==="clone")return d;if(typeof d=="function")return o(d(i,l,s,u),t)(i,l,s,u);var v=(t?i:l).options.group.name;return d===!0||typeof d=="string"&&d===v||d.join&&d.indexOf(v)>-1}}var a={},r=e.group;(!r||Le(r)!="object")&&(r={name:r}),a.name=r.name,a.checkPull=o(r.pull,!0),a.checkPut=o(r.put),a.revertClone=r.revertClone,e.group=a},_n=function(){!Qn&&J&&U(J,"display","none")},to=function(){!Qn&&J&&U(J,"display","")};ze&&document.addEventListener("click",function(n){if(Ge)return n.preventDefault(),n.stopPropagation&&n.stopPropagation(),n.stopImmediatePropagation&&n.stopImmediatePropagation(),Ge=!1,!1},!0);var ne=function(e){if(F){e=e.touches?e.touches[0]:e;var o=dr(e.clientX,e.clientY);if(o){var a={};for(var r in e)e.hasOwnProperty(r)&&(a[r]=e[r]);a.target=a.rootEl=o,a.preventDefault=void 0,a.stopPropagation=void 0,o[Ct]._onDragOver(a)}}},cr=function(e){F&&F.parentNode[Ct]._isOutsideThisEl(e.target)};function H(n,e){if(!(n&&n.nodeType&&n.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(n));this.el=n,this.options=e=Mt({},e),n[Ct]=this;var o={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(n.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return $n(n,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,i){t.setData("Text",i.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:H.supportPointer!==!1&&"PointerEvent"in window&&!pe,emptyInsertThreshold:5};he.initializePlugins(this,n,o);for(var a in o)!(a in e)&&(e[a]=o[a]);qn(e);for(var r in this)r.charAt(0)==="_"&&typeof this[r]=="function"&&(this[r]=this[r].bind(this));this.nativeDraggable=e.forceFallback?!1:lr,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?$(n,"pointerdown",this._onTapStart):($(n,"mousedown",this._onTapStart),$(n,"touchstart",this._onTapStart)),this.nativeDraggable&&($(n,"dragover",this),$(n,"dragenter",this)),We.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),Mt(this,or())}H.prototype={constructor:H,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(de=null)},_getDirection:function(e,o){return typeof this.options.direction=="function"?this.options.direction.call(this,e,o,F):this.options.direction},_onTapStart:function(e){if(e.cancelable){var o=this,a=this.el,r=this.options,d=r.preventOnFilter,t=e.type,i=e.touches&&e.touches[0]||e.pointerType&&e.pointerType==="touch"&&e,l=(i||e).target,s=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,u=r.filter;if(yr(a),!F&&!(/mousedown|pointerdown/.test(t)&&e.button!==0||r.disabled)&&!s.isContentEditable&&!(!this.nativeDraggable&&pe&&l&&l.tagName.toUpperCase()==="SELECT")&&(l=jt(l,r.draggable,a,!1),!(l&&l.animated)&&Be!==l)){if(le=dt(l),ge=dt(l,r.draggable),typeof u=="function"){if(u.call(this,e,l,this)){wt({sortable:o,rootEl:s,name:"filter",targetEl:l,toEl:a,fromEl:a}),Dt("filter",o,{evt:e}),d&&e.cancelable&&e.preventDefault();return}}else if(u&&(u=u.split(",").some(function(f){if(f=jt(s,f.trim(),a,!1),f)return wt({sortable:o,rootEl:f,name:"filter",targetEl:l,fromEl:a,toEl:a}),Dt("filter",o,{evt:e}),!0}),u)){d&&e.cancelable&&e.preventDefault();return}r.handle&&!jt(s,r.handle,a,!1)||this._prepareDragStart(e,i,l)}}},_prepareDragStart:function(e,o,a){var r=this,d=r.el,t=r.options,i=d.ownerDocument,l;if(a&&!F&&a.parentNode===d){var s=ot(a);if(rt=d,F=a,ct=F.parentNode,te=F.nextSibling,Be=a,Ue=t.group,H.dragged=F,ee={target:F,clientX:(o||e).clientX,clientY:(o||e).clientY},kn=ee.clientX-s.left,Jn=ee.clientY-s.top,this._lastX=(o||e).clientX,this._lastY=(o||e).clientY,F.style["will-change"]="all",l=function(){if(Dt("delayEnded",r,{evt:e})