UNPKG

@gramercytech/gx-componentkit

Version:

Vue 3 component library for building kiosk-style applications on the Eventfinity platform

39 lines (36 loc) 109 kB
(function(E,A){typeof exports=="object"&&typeof module<"u"?A(exports):typeof define=="function"&&define.amd?define(["exports"],A):(E=typeof globalThis<"u"?globalThis:E||self,A(E.GxComponentKit={}))})(this,function(E){"use strict";function A(e,o){for(var a=0;a<o.length;a++){const n=o[a];if(typeof n!="string"&&!Array.isArray(n)){for(const t in n)if(t!=="default"&&!(t in e)){const r=Object.getOwnPropertyDescriptor(n,t);r&&Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>n[t]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}const Bt={class:"gx-modal-wrapper"},Et={class:"gx-modal-container"},wt={key:0,class:"gx-modal-title"},$t=["innerHTML"],Nt={class:"gx-modal-buttons"},Dt=Vue.defineComponent({__name:"GxModal",props:{pluginVars:{},theme:{},errorMessages:{default:()=>[]}},emits:["close-modal"],setup(e,{emit:o}){const a=e,n=o,t=Vue.computed(()=>a.errorMessages.length?a.errorMessages:a.pluginVars.messages||[]),r=()=>{n("close-modal")},s=i=>{const l=a.pluginVars[i];typeof l=="function"&&l(),r()};return Vue.watch(()=>a.theme,i=>{var p,u,d,m,_,y;const l="gx-modal-theme-override",c=document.getElementById(l);if(c&&c.remove(),i!=null&&i.colors_override_theme){const h=document.createElement("style");h.id=l,h.innerHTML=` .gx-modal-container { --gx-modal-bg-color: ${i.modal_background_color}; --gx-modal-text-color: ${i.modal_text_color}; --gx-modal-primary-button-bg: ${(p=i.primaryButtons)==null?void 0:p.backgroundColor}; --gx-modal-primary-button-color: ${(u=i.primaryButtons)==null?void 0:u.color}; --gx-modal-primary-button-border: ${(d=i.primaryButtons)==null?void 0:d.borderColor}; --gx-modal-secondary-button-bg: ${(m=i.secondaryButtons)==null?void 0:m.backgroundColor}; --gx-modal-secondary-button-color: ${(_=i.secondaryButtons)==null?void 0:_.color}; --gx-modal-secondary-button-border: ${(y=i.secondaryButtons)==null?void 0:y.borderColor}; } `,document.head.appendChild(h)}},{immediate:!0}),(i,l)=>(Vue.openBlock(),Vue.createElementBlock("div",Bt,[Vue.createElementVNode("div",Et,[i.pluginVars.title?(Vue.openBlock(),Vue.createElementBlock("h2",wt,Vue.toDisplayString(i.pluginVars.title),1)):Vue.createCommentVNode("",!0),(Vue.openBlock(!0),Vue.createElementBlock(Vue.Fragment,null,Vue.renderList(t.value,(c,p)=>(Vue.openBlock(),Vue.createElementBlock("p",{key:p,class:"gx-modal-message",innerHTML:c},null,8,$t))),128)),Vue.createElementVNode("div",Nt,[i.pluginVars.left_button_text?(Vue.openBlock(),Vue.createElementBlock("button",{key:0,class:"gx-modal-button gx-modal-button--secondary",onClick:l[0]||(l[0]=c=>s("left_button_action"))},Vue.toDisplayString(i.pluginVars.left_button_text),1)):Vue.createCommentVNode("",!0),i.pluginVars.right_button_text?(Vue.openBlock(),Vue.createElementBlock("button",{key:1,class:"gx-modal-button gx-modal-button--primary",onClick:l[1]||(l[1]=c=>s("right_button_action"))},Vue.toDisplayString(i.pluginVars.right_button_text),1)):Vue.createCommentVNode("",!0)])])]))}}),P=(e,o)=>{const a=e.__vccOpts||e;for(const[n,t]of o)a[n]=t;return a},ge=P(Dt,[["__scopeId","data-v-8eb120a8"]]),Ut={class:"gx-camera"},Pt={class:"gx-camera__container"},It={key:0,class:"gx-camera__overlay"},Mt={key:0,class:"gx-camera__grid"},Ft={key:1,class:"gx-camera__border"},Ot={key:2,class:"gx-camera__circle"},zt={key:1,class:"gx-camera__countdown"},qt={key:2,class:"gx-camera__status"},Rt={key:3,class:"gx-camera__error"},At={key:0,class:"gx-camera__controls"},Wt=["value"],Lt=["disabled"],Gt={class:"gx-camera__action-buttons"},jt=["disabled"],Ht=["disabled"],Yt={key:0,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",class:"gx-camera__icon"},Kt={key:1,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",class:"gx-camera__icon"},Qt={class:"gx-camera__mode-toggle"},_e=P(Vue.defineComponent({__name:"GxCamera",props:{facingMode:{default:"environment"},width:{default:640},height:{default:480},showControls:{type:Boolean,default:!0},showOverlay:{type:Boolean,default:!0},overlayType:{default:"border"},mode:{default:"photo"},autoStart:{type:Boolean,default:!0},countdown:{default:0},quality:{default:.8}},emits:["photo-captured","video-recorded","stream-started","stream-stopped","error","device-changed"],setup(e,{expose:o,emit:a}){const n=e,t=a,r=Vue.ref(),s=Vue.ref(),i=Vue.ref(!1),l=Vue.ref(!1),c=Vue.ref(!1),p=Vue.ref(0),u=Vue.ref(null),d=Vue.ref(null),m=Vue.ref([]),_=Vue.ref(""),y=Vue.ref(n.mode),h=Vue.ref(n.facingMode);let k=null,I=[],x=null;const S=Vue.computed({get:()=>y.value,set:f=>y.value=f}),U=Vue.computed({get:()=>h.value,set:f=>h.value=f}),C=async()=>{try{const f=await navigator.mediaDevices.enumerateDevices();m.value=f.filter(v=>v.kind==="videoinput").map(v=>({deviceId:v.deviceId,label:v.label,kind:v.kind}))}catch(f){console.error("Failed to enumerate devices:",f),d.value="Failed to get camera devices"}},w=()=>{const f={video:{width:{ideal:n.width},height:{ideal:n.height}}};return _.value?f.video.deviceId={exact:_.value}:f.video.facingMode=U.value,f},D=async()=>{try{d.value=null,u.value="Starting camera...";const f=w(),v=await navigator.mediaDevices.getUserMedia(f);if(!r.value)throw new Error("Video element not found");r.value.srcObject=v,x=v,i.value=!0,u.value=null,t("stream-started",v)}catch(f){console.error("Failed to start camera:",f),d.value="Failed to access camera. Please check permissions.",u.value=null,t("error","Failed to access camera")}},F=()=>{x&&(x.getTracks().forEach(f=>f.stop()),x=null),r.value&&(r.value.srcObject=null),i.value=!1,t("stream-stopped")},N=async()=>{i.value&&(F(),await D(),t("device-changed",_.value))},O=async()=>{U.value=U.value==="user"?"environment":"user",i.value&&(F(),await D())},z=()=>new Promise(f=>{if(n.countdown<=0){f();return}c.value=!0,p.value=n.countdown;const v=setInterval(()=>{p.value--,p.value<=0&&(clearInterval(v),c.value=!1,f())},1e3)}),b=async()=>{if(!(!r.value||!s.value||!i.value))try{await z();const f=r.value,v=s.value,M=v.getContext("2d");if(!M)throw new Error("Failed to get canvas context");v.width=f.videoWidth,v.height=f.videoHeight,M.drawImage(f,0,0,v.width,v.height),v.toBlob(R=>{if(R){const ee=v.toDataURL("image/jpeg",n.quality);t("photo-captured",R,ee)}},"image/jpeg",n.quality)}catch(f){console.error("Failed to capture photo:",f),d.value="Failed to capture photo",t("error","Failed to capture photo")}},g=()=>{if(x)try{I=[],k=new MediaRecorder(x),k.ondataavailable=f=>{f.data.size>0&&I.push(f.data)},k.onstop=()=>{const f=new Blob(I,{type:"video/webm"}),v=URL.createObjectURL(f);t("video-recorded",f,v)},k.start(),l.value=!0}catch(f){console.error("Failed to start recording:",f),d.value="Failed to start recording",t("error","Failed to start recording")}},V=()=>{k&&l.value&&(k.stop(),l.value=!1)},T=()=>{l.value?V():g()},$=f=>{l.value&&V(),S.value=f},B=()=>{u.value=null};return Vue.watch(()=>n.facingMode,f=>{U.value=f,i.value&&!_.value&&N()}),Vue.watch(()=>n.mode,f=>{$(f)}),Vue.onMounted(async()=>{await C(),n.autoStart&&await D()}),Vue.onBeforeUnmount(()=>{F(),l.value&&V()}),o({startStream:D,stopStream:F,capturePhoto:b,startRecording:g,stopRecording:V,toggleRecording:T,switchCamera:N,getAvailableDevices:C,isStreaming:()=>i.value,isRecording:()=>l.value}),(f,v)=>(Vue.openBlock(),Vue.createElementBlock("div",Ut,[Vue.createElementVNode("div",Pt,[Vue.createElementVNode("video",{ref_key:"videoElement",ref:r,class:Vue.normalizeClass(["gx-camera__video",{"gx-camera__video--mirrored":U.value==="user"}]),autoplay:"",muted:"",playsinline:"",onLoadedmetadata:B},null,34),f.showOverlay?(Vue.openBlock(),Vue.createElementBlock("div",It,[f.overlayType==="grid"?(Vue.openBlock(),Vue.createElementBlock("div",Mt,v[3]||(v[3]=[Vue.createElementVNode("div",{class:"gx-camera__grid-line gx-camera__grid-line--vertical"},null,-1),Vue.createElementVNode("div",{class:"gx-camera__grid-line gx-camera__grid-line--vertical"},null,-1),Vue.createElementVNode("div",{class:"gx-camera__grid-line gx-camera__grid-line--horizontal"},null,-1),Vue.createElementVNode("div",{class:"gx-camera__grid-line gx-camera__grid-line--horizontal"},null,-1)]))):Vue.createCommentVNode("",!0),f.overlayType==="border"?(Vue.openBlock(),Vue.createElementBlock("div",Ft)):Vue.createCommentVNode("",!0),f.overlayType==="circle"?(Vue.openBlock(),Vue.createElementBlock("div",Ot)):Vue.createCommentVNode("",!0)])):Vue.createCommentVNode("",!0),c.value?(Vue.openBlock(),Vue.createElementBlock("div",zt,Vue.toDisplayString(p.value),1)):Vue.createCommentVNode("",!0),u.value?(Vue.openBlock(),Vue.createElementBlock("div",qt,Vue.toDisplayString(u.value),1)):Vue.createCommentVNode("",!0),d.value?(Vue.openBlock(),Vue.createElementBlock("div",Rt,Vue.toDisplayString(d.value),1)):Vue.createCommentVNode("",!0)]),f.showControls?(Vue.openBlock(),Vue.createElementBlock("div",At,[m.value.length>1?Vue.withDirectives((Vue.openBlock(),Vue.createElementBlock("select",{key:0,"onUpdate:modelValue":v[0]||(v[0]=M=>_.value=M),onChange:N,class:"gx-camera__device-select"},[(Vue.openBlock(!0),Vue.createElementBlock(Vue.Fragment,null,Vue.renderList(m.value,M=>(Vue.openBlock(),Vue.createElementBlock("option",{key:M.deviceId,value:M.deviceId},Vue.toDisplayString(M.label||`Camera ${M.deviceId.substring(0,8)}`),9,Wt))),128))],544)),[[Vue.vModelSelect,_.value]]):Vue.createCommentVNode("",!0),_.value?Vue.createCommentVNode("",!0):(Vue.openBlock(),Vue.createElementBlock("button",{key:1,onClick:O,class:"gx-camera__control-button gx-camera__flip-button",disabled:!i.value},v[4]||(v[4]=[Vue.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",class:"gx-camera__icon"},[Vue.createElementVNode("path",{d:"M15.7 16.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5.7-1.5 1.5-1.5 1.5.7 1.5 1.5zm-8.7 0c0 .8-.7 1.5-1.5 1.5S4 17.3 4 16.5 4.7 15 5.5 15s1.5.7 1.5 1.5zm11-9.2c0-.6-.4-1-1-1h-13c-.6 0-1 .4-1 1v8.4c0 .6.4 1 1 1h13c.6 0 1-.4 1-1V7.3z"})],-1),Vue.createTextVNode(" Flip ")]),8,Lt)),Vue.createElementVNode("div",Gt,[S.value==="photo"?(Vue.openBlock(),Vue.createElementBlock("button",{key:0,onClick:b,disabled:!i.value||c.value,class:"gx-camera__control-button gx-camera__capture-button"},[v[5]||(v[5]=Vue.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",class:"gx-camera__icon"},[Vue.createElementVNode("circle",{cx:"12",cy:"12",r:"3.2"}),Vue.createElementVNode("path",{d:"M9 2 7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"})],-1)),Vue.createTextVNode(" "+Vue.toDisplayString(c.value?p.value:"Capture"),1)],8,jt)):Vue.createCommentVNode("",!0),S.value==="video"?(Vue.openBlock(),Vue.createElementBlock("button",{key:1,onClick:T,disabled:!i.value,class:Vue.normalizeClass(["gx-camera__control-button",{"gx-camera__recording-button--active":l.value}])},[l.value?(Vue.openBlock(),Vue.createElementBlock("svg",Kt,v[7]||(v[7]=[Vue.createElementVNode("rect",{x:"6",y:"6",width:"12",height:"12"},null,-1)]))):(Vue.openBlock(),Vue.createElementBlock("svg",Yt,v[6]||(v[6]=[Vue.createElementVNode("circle",{cx:"12",cy:"12",r:"10"},null,-1)]))),Vue.createTextVNode(" "+Vue.toDisplayString(l.value?"Stop":"Record"),1)],10,Ht)):Vue.createCommentVNode("",!0)]),Vue.createElementVNode("div",Qt,[Vue.createElementVNode("button",{onClick:v[1]||(v[1]=M=>$("photo")),class:Vue.normalizeClass(["gx-camera__mode-button",{"gx-camera__mode-button--active":S.value==="photo"}])}," Photo ",2),Vue.createElementVNode("button",{onClick:v[2]||(v[2]=M=>$("video")),class:Vue.normalizeClass(["gx-camera__mode-button",{"gx-camera__mode-button--active":S.value==="video"}])}," Video ",2)])])):Vue.createCommentVNode("",!0),Vue.createElementVNode("canvas",{ref_key:"canvasElement",ref:s,class:"gx-camera__canvas",style:{display:"none"}},null,512)]))}}),[["__scopeId","data-v-20f2d1f0"]]),Xt=["src","poster","autoplay","loop","muted","controls","playsinline"],Jt={key:0,class:"gx-video-player__custom-controls"},Zt={key:0},en={key:1},tn={class:"gx-video-player__progress"},nn={class:"gx-video-player__time"},ye=P(Vue.defineComponent({__name:"GxVideoPlayer",props:{src:{},poster:{},autoplay:{type:Boolean,default:!1},loop:{type:Boolean,default:!1},muted:{type:Boolean,default:!1},showControls:{type:Boolean,default:!0},playsinline:{type:Boolean,default:!0}},emits:["play","pause","ended","timeupdate","loadedmetadata","error"],setup(e,{expose:o,emit:a}){const n=a,t=Vue.ref(),r=Vue.ref(!1),s=Vue.ref(0),i=Vue.ref(0),l=Vue.ref(!1),c=Vue.computed(()=>i.value>0?s.value/i.value*100:0),p=()=>{t.value&&(r.value?t.value.pause():t.value.play())},u=()=>{t.value&&(l.value?document.exitFullscreen&&document.exitFullscreen():t.value.requestFullscreen&&t.value.requestFullscreen())},d=S=>{const U=Math.floor(S/60),C=Math.floor(S%60);return`${U}:${C.toString().padStart(2,"0")}`},m=()=>{r.value=!0,n("play")},_=()=>{r.value=!1,n("pause")},y=()=>{r.value=!1,n("ended")},h=()=>{t.value&&(s.value=t.value.currentTime,n("timeupdate",s.value))},k=()=>{t.value&&(i.value=t.value.duration,n("loadedmetadata",i.value))},I=S=>{n("error",S)},x=()=>{l.value=!!document.fullscreenElement};return Vue.onMounted(()=>{document.addEventListener("fullscreenchange",x)}),Vue.onBeforeUnmount(()=>{document.removeEventListener("fullscreenchange",x)}),o({play:()=>{var S;return(S=t.value)==null?void 0:S.play()},pause:()=>{var S;return(S=t.value)==null?void 0:S.pause()},seek:S=>{t.value&&(t.value.currentTime=S)},togglePlay:p,toggleFullscreen:u,videoElement:t}),(S,U)=>(Vue.openBlock(),Vue.createElementBlock("div",{class:Vue.normalizeClass(["gx-video-player",{"gx-video-player--fullscreen":l.value}])},[Vue.createElementVNode("video",{ref_key:"videoElement",ref:t,src:S.src,poster:S.poster,autoplay:S.autoplay,loop:S.loop,muted:S.muted,controls:S.showControls,playsinline:S.playsinline,onLoadedmetadata:k,onTimeupdate:h,onEnded:y,onPlay:m,onPause:_,onError:I,class:"gx-video-player__video"},null,40,Xt),S.showControls?Vue.createCommentVNode("",!0):(Vue.openBlock(),Vue.createElementBlock("div",Jt,[Vue.createElementVNode("button",{onClick:p,class:Vue.normalizeClass(["gx-video-player__play-button",{"gx-video-player__play-button--playing":r.value}])},[r.value?(Vue.openBlock(),Vue.createElementBlock("span",en,"⏸")):(Vue.openBlock(),Vue.createElementBlock("span",Zt,"▶"))],2),Vue.createElementVNode("div",tn,[Vue.createElementVNode("div",{class:"gx-video-player__progress-bar",style:Vue.normalizeStyle({width:`${c.value}%`})},null,4)]),Vue.createElementVNode("div",nn,Vue.toDisplayString(d(s.value))+" / "+Vue.toDisplayString(d(i.value)),1),Vue.createElementVNode("button",{onClick:u,class:"gx-video-player__fullscreen-button"}," ⛶ ")]))],2))}}),[["__scopeId","data-v-0c29ddc6"]]),on={class:"gx-audio-visualizer"},an=["width","height"],rn={key:0,class:"gx-audio-visualizer__controls"},sn=["disabled"],ln={key:1,class:"gx-audio-visualizer__error"},Ve=P(Vue.defineComponent({__name:"GxAudioVisualizer",props:{audioSource:{},width:{default:800},height:{default:200},color:{default:"#007bff"},backgroundColor:{default:"transparent"},sensitivity:{default:1},showControls:{type:Boolean,default:!0},autoStart:{type:Boolean,default:!1},type:{default:"bars"}},emits:["visualization-start","visualization-stop","error"],setup(e,{expose:o,emit:a}){const n=e,t=a,r=Vue.ref(),s=Vue.ref(!1),i=Vue.ref(null),l=Vue.ref(n.type),c=Vue.ref(n.width),p=Vue.ref(n.height);let u=null,d=null,m=null,_=null,y=null,h=null;const k=async()=>{try{u=new(window.AudioContext||window.webkitAudioContext),u.state==="suspended"&&await u.resume(),d=u.createAnalyser(),d.fftSize=256,d.smoothingTimeConstant=.8;const g=d.frequencyBinCount;return y=new Uint8Array(g),h=new Uint8Array(g),!0}catch(g){return console.error("Failed to initialize audio context:",g),i.value="Failed to initialize audio context",t("error","Failed to initialize audio context"),!1}},I=()=>{if(!u||!d||!n.audioSource)return!1;try{if(n.audioSource instanceof MediaStream)m=u.createMediaStreamSource(n.audioSource);else if(n.audioSource instanceof HTMLAudioElement)m=u.createMediaElementSource(n.audioSource);else if(n.audioSource instanceof AudioNode)m=n.audioSource;else throw new Error("Unsupported audio source type");return m.connect(d),!0}catch(g){return console.error("Failed to connect audio source:",g),i.value="Failed to connect audio source",t("error","Failed to connect audio source"),!1}},x=async()=>{s.value||!await k()||n.audioSource&&!I()||(s.value=!0,i.value=null,D(),t("visualization-start"))},S=()=>{s.value&&(s.value=!1,_&&(cancelAnimationFrame(_),_=null),m&&d&&m.disconnect(d),u&&u.state!=="closed"&&u.close(),w(),t("visualization-stop"))},U=()=>{s.value?S():x()},C=()=>{s.value&&(S(),Vue.nextTick(()=>x()))},w=()=>{const g=r.value;if(!g)return;const V=g.getContext("2d");V&&(V.clearRect(0,0,g.width,g.height),n.backgroundColor!=="transparent"&&(V.fillStyle=n.backgroundColor,V.fillRect(0,0,g.width,g.height)))},D=()=>{!s.value||!d||!y||!h||(d.getByteFrequencyData(y),d.getByteTimeDomainData(h),F(),_=requestAnimationFrame(D))},F=()=>{const g=r.value;if(!g||!y)return;const V=g.getContext("2d");if(V)switch(w(),l.value){case"bars":N(V,g);break;case"wave":O(V,g);break;case"circle":z(V,g);break;case"frequency":b(V,g);break}},N=(g,V)=>{if(!y)return;const T=V.width/y.length*2.5;let $,B=0;g.fillStyle=n.color;for(let f=0;f<y.length;f++)$=y[f]/255*V.height*n.sensitivity,g.fillRect(B,V.height-$,T,$),B+=T+1},O=(g,V)=>{if(!h)return;g.lineWidth=2,g.strokeStyle=n.color,g.beginPath();const T=V.width/h.length;let $=0;for(let B=0;B<h.length;B++){const v=h[B]/128*n.sensitivity*V.height/2;B===0?g.moveTo($,v):g.lineTo($,v),$+=T}g.stroke()},z=(g,V)=>{if(!y)return;const T=V.width/2,$=V.height/2,B=Math.min(T,$)*.7;g.strokeStyle=n.color,g.lineWidth=2;for(let f=0;f<y.length;f++){const v=f/y.length*Math.PI*2,M=y[f]/255*B*n.sensitivity,R=T+Math.cos(v)*B,ee=$+Math.sin(v)*B,fr=T+Math.cos(v)*(B+M),vr=$+Math.sin(v)*(B+M);g.beginPath(),g.moveTo(R,ee),g.lineTo(fr,vr),g.stroke()}},b=(g,V)=>{if(!y)return;const T=g.createLinearGradient(0,0,0,V.height);T.addColorStop(0,n.color),T.addColorStop(1,"transparent"),g.fillStyle=T,g.beginPath(),g.moveTo(0,V.height);const $=V.width/y.length;for(let B=0;B<y.length;B++){const f=V.height-y[B]/255*V.height*n.sensitivity;g.lineTo(B*$,f)}g.lineTo(V.width,V.height),g.closePath(),g.fill()};return Vue.watch(()=>n.audioSource,g=>{s.value&&(S(),g&&Vue.nextTick(()=>x()))}),Vue.watch(()=>n.width,g=>{c.value=g}),Vue.watch(()=>n.height,g=>{p.value=g}),Vue.onMounted(()=>{n.autoStart&&n.audioSource&&x()}),Vue.onBeforeUnmount(()=>{S()}),o({start:x,stop:S,toggle:U,isActive:()=>s.value}),(g,V)=>(Vue.openBlock(),Vue.createElementBlock("div",on,[Vue.createElementVNode("canvas",{ref_key:"canvasElement",ref:r,class:"gx-audio-visualizer__canvas",width:c.value,height:p.value},null,8,an),g.showControls?(Vue.openBlock(),Vue.createElementBlock("div",rn,[Vue.createElementVNode("button",{onClick:U,class:"gx-audio-visualizer__control-button",disabled:!g.audioSource},Vue.toDisplayString(s.value?"Stop":"Start"),9,sn),Vue.withDirectives(Vue.createElementVNode("select",{"onUpdate:modelValue":V[0]||(V[0]=T=>l.value=T),class:"gx-audio-visualizer__type-select",onChange:C},V[1]||(V[1]=[Vue.createElementVNode("option",{value:"bars"},"Bars",-1),Vue.createElementVNode("option",{value:"wave"},"Waveform",-1),Vue.createElementVNode("option",{value:"circle"},"Circular",-1),Vue.createElementVNode("option",{value:"frequency"},"Frequency",-1)]),544),[[Vue.vModelSelect,l.value]])])):Vue.createCommentVNode("",!0),i.value?(Vue.openBlock(),Vue.createElementBlock("div",ln,Vue.toDisplayString(i.value),1)):Vue.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-ba308843"]]),cn={class:"gx-barcode-scanner"},un={key:0,class:"gx-barcode-scanner__instructions"},dn={class:"gx-barcode-scanner__options"},pn={key:0,class:"gx-barcode-scanner__manual-input"},mn={class:"gx-barcode-scanner__input-wrapper"},gn=["placeholder"],_n=["disabled"],yn={key:1,class:"gx-barcode-scanner__error"},fe=P(Vue.defineComponent({__name:"GxBarcodeScanner",props:{pluginVars:{},directScan:{type:Boolean,default:!1},autoInit:{type:Boolean,default:!0},showManualInput:{type:Boolean,default:!1}},emits:["user-scan","stage-change","scan-error"],setup(e,{emit:o}){const a=e,n=o,t=Vue.ref(!1);Vue.ref(!1);const r=Vue.ref(a.pluginVars.default_option||"scan_code"),s=Vue.ref(""),i=Vue.ref(null),l=Vue.ref(),c=Vue.ref(),p=Vue.computed(()=>a.showManualInput||a.pluginVars.show_manual_input),u=()=>{t.value=!0,i.value=null,k()},d=()=>{a.autoInit?n("stage-change",-1):t.value=!1,I()},m=x=>{r.value!==x&&(d(),r.value=x,i.value=null)},_=x=>{(x.code==="Enter"||x.code==="NumpadEnter")&&(x.preventDefault(),y())},y=()=>{if(!s.value.trim())return;const x=s.value.trim();n("user-scan",x),s.value=""};let h=!1;const k=async()=>{if(l.value)try{const x=document.createElement("video");x.autoplay=!0,x.muted=!0,x.playsInline=!0;const S=await navigator.mediaDevices.getUserMedia({video:{facingMode:a.pluginVars.facing_mode||"environment"}});x.srcObject=S,l.value.appendChild(x),h=!0}catch(x){console.error("Camera access denied:",x),i.value="Camera access is required for scanning"}},I=()=>{if(!l.value)return;const x=l.value.querySelector("video");x!=null&&x.srcObject&&(x.srcObject.getTracks().forEach(U=>U.stop()),x.srcObject=null),l.value.innerHTML="",h=!1};return Vue.onMounted(()=>{a.autoInit&&u()}),Vue.onBeforeUnmount(()=>{I()}),(x,S)=>(Vue.openBlock(),Vue.createElementBlock("div",cn,[t.value&&x.pluginVars.instructions?(Vue.openBlock(),Vue.createElementBlock("h6",un,Vue.toDisplayString(x.pluginVars.instructions),1)):Vue.createCommentVNode("",!0),Vue.withDirectives(Vue.createElementVNode("div",{ref_key:"interactiveElement",ref:l,class:"gx-barcode-scanner__video"},null,512),[[Vue.vShow,t.value]]),t.value?(Vue.openBlock(),Vue.createElementBlock("button",{key:1,onClick:d,class:"gx-barcode-scanner__back-button"},Vue.toDisplayString(x.pluginVars.back_text||"Back"),1)):(Vue.openBlock(),Vue.createElementBlock(Vue.Fragment,{key:2},[Vue.createElementVNode("div",dn,[Vue.createElementVNode("button",{class:Vue.normalizeClass(["gx-barcode-scanner__option gx-barcode-scanner__option--qr",{"gx-barcode-scanner__option--active":r.value==="scan_code","gx-barcode-scanner__option--inactive":r.value!=="scan_code"}]),onClick:u},[S[2]||(S[2]=Vue.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",class:"gx-barcode-scanner__icon"},[Vue.createElementVNode("path",{d:"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zM64 96v64h64V96H64zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336zm64 16v64h64V352H64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm80 64H320v64h64V96zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V304zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z"})],-1)),Vue.createElementVNode("span",null,Vue.toDisplayString(x.pluginVars.scan_code_text||"Scan Code"),1)],2),p.value?(Vue.openBlock(),Vue.createElementBlock("button",{key:0,class:Vue.normalizeClass(["gx-barcode-scanner__option gx-barcode-scanner__option--manual",{"gx-barcode-scanner__option--active":r.value==="sign_in","gx-barcode-scanner__option--inactive":r.value!=="sign_in"}]),onClick:S[0]||(S[0]=U=>m("sign_in"))},[Vue.createElementVNode("span",null,Vue.toDisplayString(x.pluginVars.manual_input_text||"Manual Input"),1)],2)):Vue.createCommentVNode("",!0)]),r.value==="sign_in"?(Vue.openBlock(),Vue.createElementBlock("div",pn,[Vue.createElementVNode("div",mn,[Vue.withDirectives(Vue.createElementVNode("input",{ref_key:"manualInput",ref:c,"onUpdate:modelValue":S[1]||(S[1]=U=>s.value=U),type:"text",class:"gx-barcode-scanner__input",placeholder:x.pluginVars.input_placeholder||"Enter code manually",onKeydown:_},null,40,gn),[[Vue.vModelText,s.value]])]),Vue.createElementVNode("button",{onClick:y,disabled:!s.value.trim(),class:"gx-barcode-scanner__submit-button"},Vue.toDisplayString(x.pluginVars.submit_text||"Submit"),9,_n)])):Vue.createCommentVNode("",!0),i.value?(Vue.openBlock(),Vue.createElementBlock("div",yn,Vue.toDisplayString(i.value),1)):Vue.createCommentVNode("",!0)],64))]))}}),[["__scopeId","data-v-4109ef44"]]),Vn={class:"gx-countdown__display"},fn={key:0,class:"gx-countdown__progress"},ve=P(Vue.defineComponent({__name:"GxCountdown",props:{duration:{},autoStart:{type:Boolean,default:!0},showProgress:{type:Boolean,default:!0},format:{default:"mm:ss"}},emits:["finished","tick","started","stopped"],setup(e,{expose:o,emit:a}){const n=e,t=a,r=Vue.ref(n.duration),s=Vue.ref(!1),i=Vue.ref(!1);let l=null;const c=Vue.computed(()=>{const y=Math.max(0,r.value);switch(n.format){case"ss":return y.toString().padStart(2,"0");case"hh:mm:ss":const h=Math.floor(y/3600),k=Math.floor(y%3600/60),I=y%60;return`${h.toString().padStart(2,"0")}:${k.toString().padStart(2,"0")}:${I.toString().padStart(2,"0")}`;case"mm:ss":default:const x=Math.floor(y/60),S=y%60;return`${x.toString().padStart(2,"0")}:${S.toString().padStart(2,"0")}`}}),p=Vue.computed(()=>(n.duration-r.value)/n.duration*100),u=()=>{s.value||i.value||(s.value=!0,t("started"),l=setInterval(()=>{r.value--,t("tick",r.value),r.value<=0&&_()},1e3))},d=()=>{s.value&&(s.value=!1,l&&(clearInterval(l),l=null),t("stopped"))},m=()=>{d(),r.value=n.duration,i.value=!1},_=()=>{d(),i.value=!0,r.value=0,t("finished")};return Vue.onMounted(()=>{n.autoStart&&u()}),Vue.onBeforeUnmount(()=>{d()}),o({start:u,stop:d,reset:m,finish:_,isRunning:s,isFinished:i,timeRemaining:r}),(y,h)=>(Vue.openBlock(),Vue.createElementBlock("div",{class:Vue.normalizeClass(["gx-countdown",{"gx-countdown--finished":i.value}])},[Vue.createElementVNode("div",Vn,Vue.toDisplayString(c.value),1),y.showProgress?(Vue.openBlock(),Vue.createElementBlock("div",fn,[Vue.createElementVNode("div",{class:"gx-countdown__progress-bar",style:Vue.normalizeStyle({width:`${p.value}%`})},null,4)])):Vue.createCommentVNode("",!0)],2))}}),[["__scopeId","data-v-16c319f6"]]),he=P(Vue.defineComponent({__name:"GxThemeWrapper",props:{theme:{},applyGlobalStyles:{type:Boolean,default:!0}},setup(e){const o=e,a=Vue.computed(()=>{var r,s,i,l;if(!o.theme)return{};const t={};return(r=o.theme)!=null&&r.background_color&&(t.backgroundColor=(s=o.theme)==null?void 0:s.background_color),(i=o.theme)!=null&&i.text_color&&(t.color=(l=o.theme)==null?void 0:l.text_color),Object.keys(o.theme).forEach(c=>{typeof o.theme[c]=="string"&&c.includes("color")&&(t[`--gx-${c.replace(/_/g,"-")}`]=o.theme[c])}),t}),n=Vue.computed(()=>{var r,s;const t=[];return(r=o.theme)!=null&&r.dark_mode?t.push("gx-theme--dark"):t.push("gx-theme--light"),(s=o.theme)!=null&&s.high_contrast&&t.push("gx-theme--high-contrast"),t});return Vue.watch(()=>o.theme,t=>{if(!o.applyGlobalStyles||!t)return;const r="gx-global-theme-styles";let s=document.getElementById(r);s||(s=document.createElement("style"),s.id=r,document.head.appendChild(s));const i=Object.keys(t).filter(l=>typeof t[l]=="string"&&l.includes("color")).map(l=>`--gx-${l.replace(/_/g,"-")}: ${t[l]};`).join(` `);s.textContent=` :root { ${i} } .gx-theme--dark { color-scheme: dark; } .gx-theme--light { color-scheme: light; } .gx-theme--high-contrast { filter: contrast(1.5); } `},{immediate:!0}),(t,r)=>(Vue.openBlock(),Vue.createElementBlock("div",{class:Vue.normalizeClass(["gx-theme-wrapper",n.value]),style:Vue.normalizeStyle(a.value)},[Vue.renderSlot(t.$slots,"default",{},void 0,!0)],6))}}),[["__scopeId","data-v-65b7330e"]]),vn={class:"gx-page-start__inner"},hn={class:"gx-page-start__header"},bn=["src"],xn={class:"gx-page-start__title"},Sn={class:"gx-page-start__subtitle"},kn={class:"gx-page-start__description"},be=P(Vue.defineComponent({__name:"GxPageStart",props:{stringsList:{},pluginVars:{},theme:{}},emits:["stage-change"],setup(e){return(o,a)=>(Vue.openBlock(),Vue.createElementBlock("div",{class:"gx-page-start",onClick:a[0]||(a[0]=n=>o.$emit("stage-change",1))},[Vue.createElementVNode("div",vn,[Vue.createElementVNode("div",hn,[o.theme.logo_image?(Vue.openBlock(),Vue.createElementBlock("img",{key:0,src:o.theme.logo_image,class:"gx-page-start__logo",alt:"Logo"},null,8,bn)):Vue.createCommentVNode("",!0),Vue.createElementVNode("h1",xn,Vue.toDisplayString(o.stringsList.line_1),1),Vue.createElementVNode("h2",Sn,Vue.toDisplayString(o.stringsList.line_2),1)]),Vue.createElementVNode("h4",kn,Vue.toDisplayString(o.stringsList.line_3),1)])]))}}),[["__scopeId","data-v-ddba0c24"]]),Cn={class:"gx-page-instructions"},Tn={class:"gx-page-instructions__inner"},Bn={class:"gx-page-instructions__header"},En=["src"],wn={class:"gx-page-instructions__title"},$n={class:"gx-page-instructions__subtitle"},Nn={key:0,class:"gx-page-instructions__registration"},Dn={class:"gx-page-instructions__registration-instructions"},Un={key:0,class:"gx-page-instructions__input-field"},Pn={key:0,class:"gx-page-instructions__error"},In=["disabled"],xe=P(Vue.defineComponent({__name:"GxPageInstructions",props:{pluginVars:{},theme:{}},emits:["stage-change","user-found"],setup(e,{emit:o}){const a=e,n=o,t=Vue.ref({name:"",email:""}),r=Vue.ref(!1),s=Vue.ref(null),i=Vue.computed(()=>a.pluginVars.attendee_options==="registration"&&(r.value||t.value.email===""&&a.pluginVars.registrationFields!=="name"||t.value.name===""&&a.pluginVars.registrationFields!=="email")),l=d=>{const _=d.target.previousElementSibling;_==null||_.focus()},c=async()=>{r.value=!0;try{a.pluginVars.attendee_options!=="registration"?n("stage-change",1):a.pluginVars.registrationFields==="name"?n("user-found",{first_name:t.value.name}):await p({first_name:t.value.name,last_name:"",contact_email:t.value.email.toLowerCase()})}catch(d){console.error(d),r.value=!1}},p=async(d={})=>{try{console.log("Register user:",d),n("user-found",d)}catch(m){console.error(m),s.value=m==null?void 0:m.message,r.value=!1}},u=d=>{!i.value&&(d.code==="Enter"||d.code==="NumpadEnter")&&c()};return Vue.onMounted(()=>{a.pluginVars.attendee_options!=="scanning"&&document.body.addEventListener("keydown",u)}),Vue.onBeforeUnmount(()=>{a.pluginVars.attendee_options!=="scanning"&&document.body.removeEventListener("keydown",u)}),(d,m)=>{var y,h;const _=Vue.resolveComponent("GxBarcodeScanner");return Vue.openBlock(),Vue.createElementBlock("div",Cn,[Vue.createElementVNode("div",Tn,[Vue.createElementVNode("div",Bn,[d.theme.logo_image?(Vue.openBlock(),Vue.createElementBlock("img",{key:0,src:d.theme.logo_image,class:"gx-page-instructions__logo",alt:"Logo"},null,8,En)):Vue.createCommentVNode("",!0),Vue.createElementVNode("h1",wn,Vue.toDisplayString(d.pluginVars.line_1),1),Vue.createElementVNode("h2",$n,Vue.toDisplayString(d.pluginVars.line_2),1)]),d.pluginVars.attendee_options==="registration"?(Vue.openBlock(),Vue.createElementBlock("div",Nn,[Vue.createElementVNode("h4",Dn,Vue.toDisplayString(d.pluginVars.registration_instructions),1),d.pluginVars.registrationFields!=="email"?(Vue.openBlock(),Vue.createElementBlock("div",Un,[Vue.withDirectives(Vue.createElementVNode("input",{"onUpdate:modelValue":m[0]||(m[0]=k=>t.value.name=k),name:"name",id:"name",type:"text",class:Vue.normalizeClass([{"has-text":t.value.name.length},"gx-page-instructions__input"])},null,2),[[Vue.vModelText,t.value.name]]),t.value.name===""?(Vue.openBlock(),Vue.createElementBlock("div",{key:0,onClick:l,class:"gx-page-instructions__placeholder"}," Name ")):Vue.createCommentVNode("",!0)])):Vue.createCommentVNode("",!0),d.pluginVars.registrationFields!=="name"?(Vue.openBlock(),Vue.createElementBlock(Vue.Fragment,{key:1},[(y=s.value)!=null&&y.includes("field must be a valid")?(Vue.openBlock(),Vue.createElementBlock("div",Pn,[m[4]||(m[4]=Vue.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",class:"gx-page-instructions__error-icon"},[Vue.createElementVNode("path",{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"})],-1)),Vue.createTextVNode(" "+Vue.toDisplayString(d.pluginVars.invalid_email_warning),1)])):Vue.createCommentVNode("",!0),Vue.createElementVNode("div",{class:Vue.normalizeClass(["gx-page-instructions__input-field",{"gx-page-instructions__input-field--error":(h=s.value)==null?void 0:h.includes("field must be a valid")}])},[Vue.withDirectives(Vue.createElementVNode("input",{"onUpdate:modelValue":m[1]||(m[1]=k=>t.value.email=k),name:"email",id:"email",type:"email",class:Vue.normalizeClass([{"has-text":t.value.email.length},"gx-page-instructions__input"])},null,2),[[Vue.vModelText,t.value.email]]),t.value.email===""?(Vue.openBlock(),Vue.createElementBlock("div",{key:0,onClick:l,class:"gx-page-instructions__placeholder"}," Email ")):Vue.createCommentVNode("",!0)],2)],64)):Vue.createCommentVNode("",!0)])):d.pluginVars.attendee_options==="scanning"||d.pluginVars.attendee_options==="scan"?(Vue.openBlock(),Vue.createBlock(_,{key:1,onUserScan:m[2]||(m[2]=k=>d.$emit("user-found",k)),onStageChange:m[3]||(m[3]=k=>d.$emit("stage-change",-1)),"plugin-vars":d.pluginVars.barcodeVars,"register-function":p,"auto-init":d.pluginVars.attendee_options==="scan"},null,8,["plugin-vars","auto-init"])):Vue.createCommentVNode("",!0),d.pluginVars.attendee_options!=="scanning"&&d.pluginVars.attendee_options!=="scan"?(Vue.openBlock(),Vue.createElementBlock("button",{key:2,class:"gx-page-instructions__button",onClick:c,disabled:i.value},Vue.toDisplayString(d.pluginVars.button_text),9,In)):Vue.createCommentVNode("",!0)])])}}}),[["__scopeId","data-v-aea16ed5"]]),Mn={class:"gx-page-prompt"},Fn={class:"gx-page-prompt__inner"},On={class:"gx-page-prompt__header"},zn=["src"],qn={class:"gx-page-prompt__title"},Rn={key:1,class:"gx-page-prompt__subtitle"},An={class:"gx-page-prompt__content"},Wn=["innerHTML"],Ln={key:0,class:"gx-page-prompt__timer"},Gn={class:"gx-page-prompt__timer-value"},jn={key:1,class:"gx-page-prompt__input-section"},Hn={key:0,class:"gx-page-prompt__input-label"},Yn=["placeholder","maxlength"],Kn=["placeholder","maxlength"],Qn={key:3,class:"gx-page-prompt__char-count"},Xn={class:"gx-page-prompt__actions"},Jn=["disabled"],Se=P(Vue.defineComponent({__name:"GxPagePrompt",props:{pluginVars:{},theme:{},promptText:{},inputType:{default:null},inputLabel:{},inputPlaceholder:{default:"Enter your response..."},inputRequired:{type:Boolean,default:!1},maxInputLength:{default:500},showTimer:{type:Boolean,default:!1},timerDuration:{default:60},showBackButton:{type:Boolean,default:!1},showSkipButton:{type:Boolean,default:!1}},emits:["continue","back","skip","timer-expired"],setup(e,{emit:o}){const a=e,n=o,t=Vue.ref(""),r=Vue.ref(a.timerDuration);let s=null;const i=Vue.computed(()=>a.promptText||a.pluginVars.prompt_content||a.pluginVars.line_3||"Please follow the instructions below."),l=Vue.computed(()=>{const u=Math.floor(r.value/60),d=r.value%60;return`${u}:${d.toString().padStart(2,"0")}`}),c=()=>{n("continue",t.value)},p=()=>{a.showTimer&&(s=setInterval(()=>{r.value--,r.value<=0&&(clearInterval(s),n("timer-expired"))},1e3))};return Vue.onMounted(()=>{a.showTimer&&p()}),Vue.onUnmounted(()=>{s&&clearInterval(s)}),(u,d)=>(Vue.openBlock(),Vue.createElementBlock("div",Mn,[Vue.createElementVNode("div",Fn,[Vue.createElementVNode("div",On,[u.theme.logo_image?(Vue.openBlock(),Vue.createElementBlock("img",{key:0,src:u.theme.logo_image,class:"gx-page-prompt__logo",alt:"Logo"},null,8,zn)):Vue.createCommentVNode("",!0),Vue.createElementVNode("h1",qn,Vue.toDisplayString(u.pluginVars.line_1||"Prompt"),1),u.pluginVars.line_2?(Vue.openBlock(),Vue.createElementBlock("h2",Rn,Vue.toDisplayString(u.pluginVars.line_2),1)):Vue.createCommentVNode("",!0)]),Vue.createElementVNode("div",An,[Vue.createElementVNode("div",{class:"gx-page-prompt__prompt-text",innerHTML:i.value},null,8,Wn),u.showTimer&&r.value?(Vue.openBlock(),Vue.createElementBlock("div",Ln,[d[4]||(d[4]=Vue.createElementVNode("div",{class:"gx-page-prompt__timer-label"},"Time remaining:",-1)),Vue.createElementVNode("div",Gn,Vue.toDisplayString(l.value),1)])):Vue.createCommentVNode("",!0),u.inputType?(Vue.openBlock(),Vue.createElementBlock("div",jn,[u.inputLabel?(Vue.openBlock(),Vue.createElementBlock("label",Hn,Vue.toDisplayString(u.inputLabel),1)):Vue.createCommentVNode("",!0),u.inputType==="textarea"?Vue.withDirectives((Vue.openBlock(),Vue.createElementBlock("textarea",{key:1,"onUpdate:modelValue":d[0]||(d[0]=m=>t.value=m),placeholder:u.inputPlaceholder,class:"gx-page-prompt__textarea",maxlength:u.maxInputLength},null,8,Yn)),[[Vue.vModelText,t.value]]):u.inputType==="text"?Vue.withDirectives((Vue.openBlock(),Vue.createElementBlock("input",{key:2,"onUpdate:modelValue":d[1]||(d[1]=m=>t.value=m),placeholder:u.inputPlaceholder,class:"gx-page-prompt__text-input",maxlength:u.maxInputLength},null,8,Kn)),[[Vue.vModelText,t.value]]):Vue.createCommentVNode("",!0),t.value.length>0&&u.maxInputLength?(Vue.openBlock(),Vue.createElementBlock("div",Qn,Vue.toDisplayString(t.value.length)+" / "+Vue.toDisplayString(u.maxInputLength),1)):Vue.createCommentVNode("",!0)])):Vue.createCommentVNode("",!0)]),Vue.createElementVNode("div",Xn,[u.showBackButton?(Vue.openBlock(),Vue.createElementBlock("button",{key:0,onClick:d[2]||(d[2]=m=>u.$emit("back")),class:"gx-page-prompt__button gx-page-prompt__button--secondary"},Vue.toDisplayString(u.pluginVars.back_button_text||"Back"),1)):Vue.createCommentVNode("",!0),u.showSkipButton?(Vue.openBlock(),Vue.createElementBlock("button",{key:1,onClick:d[3]||(d[3]=m=>u.$emit("skip")),class:"gx-page-prompt__button gx-page-prompt__button--secondary"},Vue.toDisplayString(u.pluginVars.skip_button_text||"Skip"),1)):Vue.createCommentVNode("",!0),Vue.createElementVNode("button",{onClick:c,class:"gx-page-prompt__button gx-page-prompt__button--primary",disabled:u.inputRequired&&!t.value.trim()},Vue.toDisplayString(u.pluginVars.continue_button_text||"Continue"),9,Jn)])])]))}}),[["__scopeId","data-v-15b42499"]]),Zn={class:"gx-page-results"},eo={class:"gx-page-results__inner"},to={class:"gx-page-results__header"},no=["src"],oo={class:"gx-page-results__title"},ao={class:"gx-page-results__subtitle"},ro={class:"gx-page-results__content"},io={key:0,class:"gx-page-results__data"},so={class:"gx-page-results__json"},lo={key:1,class:"gx-page-results__description"},co={class:"gx-page-results__actions"},ke=P(Vue.defineComponent({__name:"GxPageResults",props:{pluginVars:{},theme:{},results:{}},emits:["restart","continue"],setup(e){return(o,a)=>(Vue.openBlock(),Vue.createElementBlock("div",Zn,[Vue.createElementVNode("div",eo,[Vue.createElementVNode("div",to,[o.theme.logo_image?(Vue.openBlock(),Vue.createElementBlock("img",{key:0,src:o.theme.logo_image,class:"gx-page-results__logo",alt:"Logo"},null,8,no)):Vue.createCommentVNode("",!0),Vue.createElementVNode("h1",oo,Vue.toDisplayString(o.pluginVars.line_1||"Results"),1),Vue.createElementVNode("h2",ao,Vue.toDisplayString(o.pluginVars.line_2||"Thank you for participating!"),1)]),Vue.createElementVNode("div",ro,[o.results?(Vue.openBlock(),Vue.createElementBlock("div",io,[Vue.createElementVNode("pre",so,Vue.toDisplayString(JSON.stringify(o.results,null,2)),1)])):Vue.createCommentVNode("",!0),o.pluginVars.line_3?(Vue.openBlock(),Vue.createElementBlock("div",lo,Vue.toDisplayString(o.pluginVars.line_3),1)):Vue.createCommentVNode("",!0)]),Vue.createElementVNode("div",co,[o.pluginVars.show_restart_button?(Vue.openBlock(),Vue.createElementBlock("button",{key:0,onClick:a[0]||(a[0]=n=>o.$emit("restart")),class:"gx-page-results__button gx-page-results__button--secondary"},Vue.toDisplayString(o.pluginVars.restart_button_text||"Start Over"),1)):Vue.createCommentVNode("",!0),o.pluginVars.show_continue_button?(Vue.openBlock(),Vue.createElementBlock("button",{key:1,onClick:a[1]||(a[1]=n=>o.$emit("continue")),class:"gx-page-results__button gx-page-results__button--primary"},Vue.toDisplayString(o.pluginVars.continue_button_text||"Continue"),1)):Vue.createCommentVNode("",!0)])])]))}}),[["__scopeId","data-v-cb753263"]]),uo={class:"gx-page-final"},po={class:"gx-page-final__inner"},mo={class:"gx-page-final__header"},go=["src"],_o={class:"gx-page-final__title"},yo={class:"gx-page-final__subtitle"},Vo={class:"gx-page-final__content"},fo={key:0,class:"gx-page-final__description"},vo={key:1,class:"gx-page-final__completion-data"},ho={class:"gx-page-final__data-content"},bo={class:"gx-page-final__json"},xo={key:2,class:"gx-page-final__confetti"},So={class:"gx-page-final__actions"},Ce=P(Vue.defineComponent({__name:"GxPageFinal",props:{pluginVars:{},theme:{},completionData:{},autoShowConfetti:{type:Boolean,default:!0}},emits:["download","share","restart","exit"],setup(e,{emit:o}){const a=e,n=Vue.ref(!1);return Vue.onMounted(()=>{a.autoShowConfetti&&setTimeout(()=>{n.value=!0},500)}),(t,r)=>(Vue.openBlock(),Vue.createElementBlock("div",uo,[Vue.createElementVNode("div",po,[Vue.createElementVNode("div",mo,[t.theme.logo_image?(Vue.openBlock(),Vue.createElementBlock("img",{key:0,src:t.theme.logo_image,class:"gx-page-final__logo",alt:"Logo"},null,8,go)):Vue.createCommentVNode("",!0),Vue.createElementVNode("h1",_o,Vue.toDisplayString(t.pluginVars.line_1||"Thank You!"),1),Vue.createElementVNode("h2",yo,Vue.toDisplayString(t.pluginVars.line_2||"Your experience has been completed successfully."),1)]),Vue.createElementVNode("div",Vo,[t.pluginVars.line_3?(Vue.openBlock(),Vue.createElementBlock("div",fo,Vue.toDisplayString(t.pluginVars.line_3),1)):Vue.createCommentVNode("",!0),t.completionData?(Vue.openBlock(),Vue.createElementBlock("div",vo,[r[4]||(r[4]=Vue.createElementVNode("h4",{class:"gx-page-final__data-title"},"Summary:",-1)),Vue.createElementVNode("div",ho,[Vue.createElementVNode("pre",bo,Vue.toDisplayString(JSON.stringify(t.completionData,null,2)),1)])])):Vue.createCommentVNode("",!0),n.value?(Vue.openBlock(),Vue.createElementBlock("div",xo," 🎉 🎊 ✨ 🌟 🎈 ")):Vue.createCommentVNode("",!0)]),Vue.createElementVNode("div",So,[t.pluginVars.show_download_button?(Vue.openBlock(),Vue.createElementBlock("button",{key:0,onClick:r[0]||(r[0]=s=>t.$emit("download")),class:"gx-page-final__button gx-page-final__button--secondary"},Vue.toDisplayString(t.pluginVars.download_button_text||"Download Results"),1)):Vue.createCommentVNode("",!0),t.pluginVars.show_share_button?(Vue.openBlock(),Vue.createElementBlock("button",{key:1,onClick:r[1]||(r[1]=s=>t.$emit("share")),class:"gx-page-final__button gx-page-final__button--secondary"},Vue.toDisplayString(t.pluginVars.share_button_text||"Share"),1)):Vue.createCommentVNode("",!0),t.pluginVars.show_restart_button?(Vue.openBlock(),Vue.createElementBlock("button",{key:2,onClick:r[2]||(r[2]=s=>t.$emit("restart")),class:"gx-page-final__button gx-page-final__button--primary"},Vue.toDisplayString(t.pluginVars.restart_button_text||"Start Again"),1)):Vue.createCommentVNode("",!0),t.pluginVars.show_exit_button?(Vue.openBlock(),Vue.createElementBlock("button",{key:3,onClick:r[3]||(r[3]=s=>t.$emit("exit")),class:"gx-page-final__button gx-page-final__button--secondary"},Vue.toDisplayString(t.pluginVars.exit_button_text||"Exit"),1)):Vue.createCommentVNode("",!0)])])]))}}),[["__scopeId","data-v-fff5428c"]]),ko={class:"gx-page-loading__header"},Co=["src"],To={class:"gx-page-loading__inner"},Bo={class:"gx-page-loading__content"},Eo={class:"gx-page-loading__title"},wo=["width","height","viewBox"],$o=["d","stroke","stroke-width"],No=["d","stroke","stroke-width"],Do=["innerHTML"],Te=P(Vue.defineComponent({__name:"GxPageLoading",props:{pluginVars:{},theme:{},loadingRequests:{default:()=>[]},loadingArgs:{default:()=>[]}},emits:["exit-clicked","stage-change","loading-request-failed","loading-request-complete"],setup(e,{emit:o}){var d,m;Vue.useCssVars(_=>({"391f649e":s.value}));const a=e,n=o,t=Vue.ref({backgroundColor:((d=a.pluginVars.spinners)==null?void 0:d.color)||"#cccccc",accentColor:((m=a.pluginVars.spinners)==null?void 0:m.accent)||"#007bff"}),r=Vue.computed(()=>Math.min(window.innerWidth,window.innerHeight)*.05),s=Vue.computed(()=>String(r.value)+"px"),i=_=>{n("stage-change",_)},l=()=>i(-1),c=()=>{};let p;Vue.onMounted(async()=>{var _;(_=a.loadingRequests)!=null&&_.length&&u(a.loadingRequests),p=setTimeout(()=>{n("loading-request-failed","timeout")},5e4)}),Vue.onUnmounted(()=>{clearTimeout(p)});const u=async _=>{try{let y=[];_.forEach((k,I)=>{a.loadingArgs?y.push(k(...a.loadingArgs[I])):y.push(k())});const h=await Promise.all(y);n("loading-request-complete",h)}catch(y){console.error(y),n("loading-request-failed",y)}};return(_,y)=>(Vue.openBlock(),Vue.createElementBlock("div",{class:Vue.normalizeClass(["gx-page-loading",_.pluginVars.type]),onClick:c},[Vue.createElementVNode("div",ko,[Vue.createElementVNode("button",{onClick:y[0]||(y[0]=h=>i(-1)),class:"gx-page-loading__button gx-page-loading__button--secondary"},Vue.toDisplayString(_.pluginVars.back_button_text),1),_.theme.logo_image?(Vue.openBlock(),Vue.createElementBlock("img",{key:0,src:_.theme.logo_image,class:"gx-page-loading__logo",alt:"Logo"},null,8,Co)):Vue.createCommentVNode("",!0),Vue.createElementVNode("button",{onClick:y[1]||(y[1]=h=>_.$emit("exit-clicked")),class:"gx-page-loading__button gx-page-loading__button--secondary"},Vue.toDisplayString(_.pluginVars.exit_button_text),1)]),Vue.createElementVNode("div",To,[Vue.createElementVNode("div",Bo,[Vue.createElementVNode("h3",Eo,Vue.toDisplayString(_.pluginVars.line_1),1),(Vue.openBlock(),Vue.createElementBlock("svg",{width:r.value,height:r.value,viewBox:`0 0 ${r.value} ${r.value}`,xmlns:"http://www.w3.org/2000/svg",class:"gx-page-loading__spinner"},[Vue.createElementVNode("path",{d:` M ${r.value/2},${r.value/8} A ${r.value/2-r.value/8},${r.value/2-r.value/8} 0 1,1 ${r.value/8},${r.value/2} `,stroke:t.value.backgroundColor,"stroke-width":r.value/4,fill:"none"},null,8,$o),Vue.createElementVNode("path",{d:` M ${r.value/8},${r.value/2} A ${r.value/2-r.value/8},${r.value/2-r.value/8} 0 0,1 ${r.value/2},${r.value/8} `,stroke:t.value.accentColor,"stroke-width":r.value/4,fill:"none"},null,8,No)],8,wo)),Vue.createElementVNode("h4",{class:"gx-page-loading__subtitle",innerHTML:_.pluginVars.line_2},null,8,Do),Vue.createElementVNode("button",{onClick:l,class:"gx-page-loading__button gx-page-loading__button--secondary"},Vue.toDisplayString(_.pluginVars.cancel_button_text),1)])])],2))}}),[["__scopeId","data-v-835c58ec"]]),Uo={class:"gx-page-camera"},Po={class:"gx-page-camera__header"},Io=["src"],Mo={class:"gx-page-camera__inner"},Fo={class:"gx-page-camera__instructions"},Oo=["innerHTML"],zo={class:"gx-page-camera__video-container"},qo=["src"],Ro=["src"],Ao={key:2,class:"gx-page-camera__countdown"},Wo={class:"gx-page-camera__controls"},Lo={key:4,class:"gx-page-camera__device-selector"},Go=["onClick"],jo={key:0,class:"gx-page-camera__border-container"},Ho={class:"gx-page-camera__border-options"},Yo=["src","alt","onClick"],Ko=["onClick"],Qo=["disabled"],Be=P(Vue.defineComponent({__name:"GxPageCamera",props:{pluginVars:{},theme:{},user:{},error:{default:null}},emits:["stage-change","exit-clicked","photo-published"],setup(e,{emit:o}){const a=e,n=o,t=Vue.ref(),r=Vue.ref(!1),s=Vue.ref(!0),i=Vue.ref(!1),l=Vue.ref(a.pluginVars.countdown||3),c=Vue.ref(!1),p=Vue.ref(!1),u=Vue.ref(!1),d=Vue.ref(!1),m=Vue.ref([]),_=Vue.ref(""),y=Vue.ref({index:0}),h=Vue.computed(()=>a.error||a.pluginVars.instructions||"Position yourself in the frame and click capture"),k=()=>{console.log("Toggle camera")},I=C=>{_.value=C.deviceId,d.value=!1,console.log("Set video device:",C)},x=async()=>{if(c.value)return;c.value=!0,l.value=a.pluginVars.countdown||3;const C=setInterval(()=>{l.value--,l.value<=0&&(clearInterval(C),S())},1e3)},S=async()=>{try{i.value=!0,u.value=!0,setTimeout(()=>{u.value=!1,p.value=!0,setTimeout(()=>{i.value=!1,p.value=!1,c.value=!1,document.createElement("canvas").toBlob(w=>{w&&n("photo-published",{blob:w})})},300)},200)}catch(C){console.error("Error capturing photo:",C),c.value=!1}},U=async()=>{try{const C=await navigator.mediaDevices.getUserMedia({video:{facingMode:"user"}});t.value&&(t.value.srcObject=C,r.value=!0);const w=await navigator.mediaDevices.enumerateDevices();m.value=w.filter(D=>D.kind==="videoinput").map(D=>({deviceId:D.deviceId,label:D.label,kind:D.kind}))}catch(C){console.error("Error initializing camera:",C)}};return Vue.onMounted(()=>{U()}),Vue.onBeforeUnmount(()=>{var C;(C=t.value)!=null&&C.srcObject&&t.value.srcObject.getTracks().forEach(D=>D.stop())}),(C,w)=>{var D,F;return Vue.openBlock(),Vue.createElementBlock("div",Uo,[Vue.createElementVNode("div",Po,[Vue.createElementVNode("button",{onClick:w[0]||(w[0]=N=>C.$emit("stage-change",-1)),class:"gx-page-camera__button gx-page-camera__button--secondary"},Vue.toDisplayString(C.pluginVars.back_button_text),1),C.theme.logo_image?(Vue.openBlock(),Vue.createElementBlock("img",{key:0,src:C.theme.logo_image,class:"gx-page-camera__logo",alt:"Logo"},null,8,Io)):Vue.createCommentVNode("",!0),Vue.createElementVNode("button",{onClick:w[1]||(w[1]=N=>C.$emit("exit-clicked")),class:"gx-page-camera__button gx-page-camera__button--secondary"},Vue.toDisplayString(C.pluginVars.exit_button_text),1)]),Vue.createElementVNode("div",Mo,[Vue.createElementVNode("div",Fo,[Vue.createElementVNode("h4",{class:"gx-page-camera__instructions-text",innerHTML:h.value},null,8,Oo)]),Vue.createElementVNode("div",zo,[Vue.createElementVNode("video",{ref_key:"videoRef",ref:t,class:Vue.normalizeClass(["gx-page-camera__video",{"gx-page-camera__video--mirrored":s.value}]),autoplay:"",playsinline:"",muted:""},null,2