PageSourceSearch

https://aeroapp.ai/static/js/3991.17f1559c.chunk.js

js aeroapp.ai collected 2026-10-05 13:45:44 UTC 32,810 bytes, 2 lines download raw bytes

1"use strict";(self.webpackChunkclient=self.webpackChunkclient||[]).push([[3991],{94517:function(e,t,n){n.d(t,{Z:function(){return i}});n(72791);var r=n(57689),s=n(80184);function i(e){var t=e.thankYouMessage,n=e.returnUrl,i=e.isSaving,a=(0,r.s0)(),o=t||"Thanks for your feedback!";return(0,s.jsx)("div",{className:"user-testing-completion-fullscreen",children:(0,s.jsxs)("div",{className:"user-testing-completion-content",children:[(0,s.jsx)("div",{className:"user-testing-completion-emoji",children:(0,s.jsx)("span",{role:"img","aria-label":"celebration",children:"\ud83c\udf89"})}),(0,s.jsx)("h1",{className:"user-testing-completion-title",children:"All Done!"}),(0,s.jsx)("p",{className:"user-testing-completion-message",children:o}),(0,s.jsx)("p",{className:"user-testing-completion-subtitle",children:"Your feedback helps improve this design."}),i?(0,s.jsx)("p",{className:"user-testing-completion-note",style:{color:"#6B7280",fontSize:14},children:"Saving your session... please keep this tab open"}):n?(0,s.jsx)("button",{className:"user-testing-completion-btn",onClick:function(){return a(n)},style:{marginTop:16,padding:"10px 24px",fontSize:15,fontWeight:500,border:"1px solid #E5E7EB",borderRadius:8,background:"#fff",color:"#111827",cursor:"pointer"},children:"View Results"}):(0,s.jsx)("p",{className:"user-testing-completion-note",children:"You can close this tab now."})]})})}},41959:function(e,t,n){n.d(t,{Z:function(){return o}});var r=n(29439),s=n(72791),i=n(80184),a=[{value:1,emoji:"\ud83d\ude2b",label:"Very hard"},{value:2,emoji:"\ud83d\ude15",label:"Hard"},{value:3,emoji:"\ud83d\ude10",label:"Okay"},{value:4,emoji:"\ud83d\ude42",label:"Easy"},{value:5,emoji:"\ud83d\ude04",label:"Very easy"}];function o(e){var t=e.onSelect,n=e.onSkip,o=(0,s.useState)(null),l=(0,r.Z)(o,2),c=l[0],u=l[1];return(0,i.jsx)("div",{className:"user-testing-difficulty-overlay",children:(0,i.jsxs)("div",{className:"user-testing-difficulty-panel",children:[(0,i.jsx)("h2",{className:"user-testing-difficulty-title",children:"How easy was this?"}),(0,i.jsx)("div",{className:"user-testing-difficulty-options",children:a.map((function(e){return(0,i.jsxs)("button",{className:"user-testing-difficulty-option ".concat(c===e.value?"selected":""),onClick:function(){return n=e.value,u(n),void setTimeout((function(){t(n)}),200);var n},"aria-label":e.label,children:[(0,i.jsx)("span",{className:"user-testing-difficulty-emoji",children:e.emoji}),(0,i.jsx)("span",{className:"user-testing-difficulty-value",children:e.value})]},e.value)}))}),(0,i.jsx)("button",{className:"user-testing-difficulty-skip",onClick:n,children:"Skip"})]})})}},14522:function(e,t,n){n.d(t,{Z:function(){return o}});var r=n(29439),s=n(72791),i=n(37359),a=n(80184);function o(e){var t=e.task,n=e.taskIndex,o=e.totalTasks,l=e.hasInteracted,c=e.onDone,u=e.onStuck,d=e.onStartOver,p=e.onEndSession,m=(0,s.useState)(!1),h=(0,r.Z)(m,2),g=h[0],f=h[1],v=t.title.length>20?t.title.substring(0,20)+"...":t.title;return g?(0,a.jsx)("div",{className:"user-testing-task-panel collapsed",children:(0,a.jsxs)("div",{className:"user-testing-task-panel-header",children:[(0,a.jsxs)("span",{className:"user-testing-task-panel-progress",children:["Task ",n+1," of ",o,": ",v]}),(0,a.jsx)("button",{className:"user-testing-task-panel-toggle",onClick:function(){return f(!1)},"aria-label":"Expand",children:"+"})]})}):(0,a.jsxs)("div",{className:"user-testing-task-panel",children:[(0,a.jsxs)("div",{className:"user-testing-task-panel-header",children:[(0,a.jsxs)("span",{className:"user-testing-task-panel-progress",children:["Task ",n+1," of ",o]}),(0,a.jsx)("button",{className:"user-testing-task-panel-toggle",onClick:function(){return f(!0)},"aria-label":"Collapse",children:"\u2013"})]}),(0,a.jsxs)("div",{className:"user-testing-task-panel-content",children:[(0,a.jsx)("h2",{className:"user-testing-task-panel-title",children:t.title}),t.instructions&&(0,a.jsx)("p",{className:"user-testing-task-panel-instructions",children:t.instructions})]}),(0,a.jsxs)("div",{className:"user-testing-task-panel-actions",children:[(0,a.jsxs)("div",{className:"user-testing-task-panel-buttons",children:[(0,a.jsx)(i.Z,{fill:l?"d-aero":"d-glass",onClick:c,disabled:!l,style:{flex:1},children:"\u2713 Done"}),(0,a.jsx)(i.Z,{fill:"d-glass",onClick:u,disabled:!l,style:{flex:1},children:"Can't do it"})]}),!l&&(0,a.jsx)("p",{className:"user-testing-task-panel-hint",children:"Interact with the prototype first"}),(0,a.jsxs)("div",{className:"user-testing-task-panel-footer",children:[(0,a.jsx)("button",{className:"user-testing-task-panel-startover",onClick:d,children:"Start over"}),p&&(0,a.jsx)("button",{className:"user-testing-task-panel-endsession",onClick:p,children:"End session early"})]})]})]})}},23991:function(e,t,n){n.d(t,{Z:function(){return Z}});var r=n(1413),s=n(61819),i=n(15861),a=n(93433),o=n(29439),l=n(72791),c=n(20673),u=n(30276),d=n(42211),p=n(37359),m=n(80184),h=/iPhone|iPad|iPod|Android/i.test(navigator.userAgent),g=function(){var e=function(){var e=navigator.userAgent;return e.includes("Chrome")&&!e.includes("Edg")?"chrome":e.includes("Edg")?"edge":e.includes("Firefox")?"firefox":e.includes("Safari")&&!e.includes("Chrome")?"safari":"other"}();return"chrome"===e||"edge"===e};function f(e){var t=e.userTesting,n=e.ownerName,r=e.taskCount,a=e.onComplete,c=e.isPreview,u=void 0!==c&&c,d=(0,l.useState)(1),f=(0,o.Z)(d,2),v=f[0],x=f[1],w=(0,l.useState)(null),b=(0,o.Z)(w,2),k=b[0],j=b[1],y=(0,l.useState)(null),N=(0,o.Z)(y,2),S=N[0],Z=N[1],C=Math.max(1,2*r),T=u?null:n||"The designer",E=t.welcomeMessage||"Thanks for helping test this design! Your feedback will help improve the experience.",M=t.videoEnabled&&!h,A=function(){return M?3:4},V=function(){var e=(0,i.Z)((0,s.Z)().mark((function e(){var t;return(0,s.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,navigator.mediaDevices.getUserMedia({audio:!0});case 3:t=e.sent,j(t),x(A()),e.next=12;break;case 8:e.prev=8,e.t0=e.catch(0),console.error("Mic permission denied:",e.t0),x(A());case 12:case"end":return e.stop()}}),e,null,[[0,8]])})));return function(){return e.apply(this,arguments)}}(),R=function(){var e=(0,i.Z)((0,s.Z)().mark((function e(){var t;return(0,s.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,navigator.mediaDevices.getDisplayMedia({video:{width:{ideal:1280},height:{ideal:720},frameRate:{ideal:30,max:30},displaySurface:"browser"},preferCurrentTab:!0,selfBrowserSurface:"include",audio:!1});case 3:t=e.sent,Z(t),t.getVideoTracks()[0].onended=function(){Z(null)},x(4),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(0),console.error("Screen permission denied:",e.t0),x(4);case 13:case"end":return e.stop()}}),e,null,[[0,9]])})));return function(){return e.apply(this,arguments)}}();return(0,m.jsx)("div",{className:"user-testing-welcome-overlay",children:(0,m.jsxs)("div",{className:"user-testing-welcome-modal",children:[1===v&&(0,m.jsxs)("div",{className:"user-testing-welcome-step",children:[(0,m.jsx)("div",{className:"user-testing-welcome-emoji",children:(0,m.jsx)("span",{role:"img","aria-label":"wave",children:"\ud83d\udc4b"})}),(0,m.jsx)("h1",{className:"user-testing-welcome-title",children:"Welcome!"}),(0,m.jsx)("p",{className:"user-testing-welcome-subtitle",children:T?"".concat(T," invited you to test their design."):"You're invited to test this prototype."}),(0,m.jsx)("p",{className:"user-testing-welcome-message",children:E}),(0,m.jsxs)("div",{className:"user-testing-welcome-meta",children:[(0,m.jsxs)("span",{className:"user-testing-welcome-meta-item",children:[(0,m.jsx)("span",{role:"img","aria-label":"tasks",children:"\ud83d\udccb"})," ",r," ",1===r?"task":"tasks"]}),(0,m.jsx)("span",{className:"user-testing-welcome-meta-divider",children:"\xb7"}),(0,m.jsxs)("span",{className:"user-testing-welcome-meta-item",children:[(0,m.jsx)("span",{role:"img","aria-label":"time",children:"\u23f1"})," About ",C," ",1===C?"minute":"minutes"]})]}),(0,m.jsxs)("div",{className:"user-testing-welcome-note",children:[(0,m.jsx)("span",{className:"user-testing-welcome-note-icon",children:(0,m.jsx)("span",{role:"img","aria-label":"info",children:"\u2139\ufe0f"})}),(0,m.jsx)("span",{className:"user-testing-welcome-note-text",children:"There are no right or wrong answers\u2014we're testing the design, not you!"})]}),(0,m.jsx)(p.Z,{fill:"d-aero-lt",size:"lg",onClick:function(){t.audioEnabled?x(2):x(M?3:4)},style:{width:"100%"},children:"Get Started"})]}),2===v&&(0,m.jsxs)("div",{className:"user-testing-welcome-step",children:[(0,m.jsx)("div",{className:"user-testing-welcome-emoji",children:(0,m.jsx)("span",{role:"img","aria-label":"microphone",children:"\ud83c\udfa4"})}),(0,m.jsx)("h1",{className:"user-testing-welcome-title",children:"Enable Audio"}),(0,m.jsx)("p",{className:"user-testing-welcome-subtitle",children:"We'd like to record your voice as you share your thoughts."}),(0,m.jsx)("p",{className:"user-testing-welcome-message",children:"Your browser will ask for microphone permission."}),(0,m.jsx)(p.Z,{fill:"d-aero-lt",size:"lg",onClick:V,style:{width:"100%"},children:"Enable Microphone"}),(0,m.jsx)("div",{className:"user-testing-welcome-divider",children:(0,m.jsx)("span",{children:"or"})}),(0,m.jsx)(p.Z,{fill:"d-glass",size:"lg",onClick:function(){x(A())},style:{width:"100%"},children:"Continue without audio"})]}),3===v&&(0,m.jsxs)("div",{className:"user-testing-welcome-step",children:[(0,m.jsx)("div",{className:"user-testing-welcome-emoji",children:(0,m.jsx)("span",{role:"img","aria-label":"screen",children:"\ud83d\udda5\ufe0f"})}),(0,m.jsx)("h1",{className:"user-testing-welcome-title",children:"Screen Recording"}),(0,m.jsx)("p",{className:"user-testing-welcome-subtitle",children:"We'd like to record your screen to see how you navigate."}),(0,m.jsxs)("div",{className:"user-testing-welcome-tip",children:[(0,m.jsx)("span",{className:"user-testing-welcome-tip-icon",children:(0,m.jsx)("span",{role:"img","aria-label":"tip",children:"\ud83d\udca1"})}),(0,m.jsx)("span",{className:"user-testing-welcome-tip-text",children:g()?"Click 'Allow' in the popup that appears.":"When the popup appears, select this tab from the list."})]}),(0,m.jsx)(p.Z,{fill:"d-aero-lt",size:"lg",onClick:R,style:{width:"100%"},children:"Share Screen"}),(0,m.jsx)("div",{className:"user-testing-welcome-divider",children:(0,m.jsx)("span",{children:"or"})}),(0,m.jsx)(p.Z,{fill:"d-glass",size:"lg",onClick:function(){Z(null),x(4)},style:{width:"100%"},children:"Skip"}),(0,m.jsxs)("p",{className:"user-testing-welcome-privacy",children:[(0,m.jsx)("span",{role:"img","aria-label":"lock",children:"\ud83d\udd12"})," Only this tab is recorded. You can stop anytime."]})]}),4===v&&(0,m.jsxs)("div",{className:"user-testing-welcome-step",children:[(0,m.jsx)("div",{className:"user-testing-welcome-emoji",children:(0,m.jsx)("span",{role:"img","aria-label":"thought",children:"\ud83d\udcad"})}),(0,m.jsx)("h1",{className:"user-testing-welcome-title",children:"Think Out Loud"}),(0,m.jsx)("p",{className:"user-testing-welcome-subtitle",children:"As you complete each task, share what you're thinking:"}),(0,m.jsxs)("ul",{className:"user-testing-welcome-tips",children:[(0,m.jsx)("li",{children:"What you're looking for"}),(0,m.jsx)("li",{children:"What you expect to happen"}),(0,m.jsx)("li",{children:"Anything confusing or unclear"})]}),(0,m.jsx)("p",{className:"user-testing-welcome-encouragement",children:"Don't worry about being polished\u2014just speak naturally!"}),(0,m.jsx)(p.Z,{fill:"d-aero-lt",size:"lg",onClick:function(){a(k,S)},style:{width:"100%"},children:"Start Testing"})]})]})})}var v=n(14522),x=n(41959);function w(e){var t=e.isMuted,n=e.onMuteToggle,r=e.uploadStatus,s=e.isRecordingAudio,i=e.isRecordingVideo,a=e.videoUploadStatus,o="uploading"===r||"uploading"===a?{text:"Saving...",dotClass:"uploading",showMute:!1}:"uploaded"!==r||i&&"uploaded"!==a?"error"===r||"error"===a?{text:"Save failed",dotClass:"error",showMute:!1}:{text:t?"Muted":s&&i?"Recording":s?"Recording audio":i?"Recording screen":"Recording",dotClass:t?"muted":"",showMute:s}:{text:"Saved",dotClass:"uploaded",showMute:!1},l=o.text,c=o.dotClass,u=o.showMute;return(0,m.jsxs)("div",{className:"user-testing-recording-indicator ".concat("uploaded"!==r||i&&"uploaded"!==a?"":"success"),children:[(0,m.jsxs)("div",{className:"user-testing-recording-status",children:[(0,m.jsx)("span",{className:"user-testing-recording-dot ".concat(c)}),(0,m.jsx)("span",{className:"user-testing-recording-text",children:l})]}),u&&(0,m.jsx)(p.Z,{fill:"d-glass",size:"xs",onClick:n,"aria-label":t?"Unmute":"Mute",children:t?"Unmute":"Mute"})]})}var b=n(94517),k=n(67408),j=n(50930),y=n(49208),N=n(68252);n(94348),n(4586);function S(e){return e.includes("mp4")?"mp4":e.includes("ogg")?"ogg":"webm"}function Z(e){var t=e.project,n=e.userTesting,h=e.prototypeComponent,g=e.ownerId,Z=e.ownerName,C=e.firestoreSessionRef,T=void 0===C?null:C,E=e.storageAudioBasePath,M=void 0===E?
1null:E,A=e.storageVideoBasePath,V=void 0===A?null:A,R=e.skipSessionLimitCheck,I=void 0!==R&&R,O=e.skipSessionCountIncrement,P=void 0!==O&&O,D=e.isPreviewMode,U=void 0!==D&&D,F=e.returnUrl,z=void 0===F?null:F,B=c.ZP.firestore(),L=(0,l.useState)("welcome"),W=(0,o.Z)(L,2),Y=W[0],H=W[1],_=(0,l.useState)(0),J=(0,o.Z)(_,2),K=J[0],q=J[1],G=(0,l.useState)(null),X=(0,o.Z)(G,2),$=X[0],Q=X[1],ee=(0,l.useState)(null),te=(0,o.Z)(ee,2),ne=te[0],re=te[1],se=(0,l.useState)(null),ie=(0,o.Z)(se,2),ae=ie[0],oe=ie[1],le=(0,l.useState)(!1),ce=(0,o.Z)(le,2),ue=ce[0],de=ce[1],pe=(0,l.useState)(!1),me=(0,o.Z)(pe,2),he=me[0],ge=me[1],fe=(0,l.useState)(null),ve=(0,o.Z)(fe,2),xe=ve[0],we=ve[1],be=(0,l.useState)(null),ke=(0,o.Z)(be,2),je=ke[0],ye=ke[1],Ne=(0,l.useState)(!1),Se=(0,o.Z)(Ne,2),Ze=Se[0],Ce=Se[1],Te=(0,l.useState)(null),Ee=(0,o.Z)(Te,2),Me=Ee[0],Ae=Ee[1],Ve=(0,l.useRef)(null),Re=(0,l.useRef)(null),Ie=(0,l.useState)(!1),Oe=(0,o.Z)(Ie,2),Pe=Oe[0],De=Oe[1],Ue=(0,l.useState)([]),Fe=(0,o.Z)(Ue,2),ze=Fe[0],Be=Fe[1],Le=(0,l.useState)(null),We=(0,o.Z)(Le,2),Ye=We[0],He=We[1],_e=(0,l.useRef)(null),Je=(0,l.useRef)(!1),Ke=(0,a.Z)(n.tasks||[]).sort((function(e,t){return e.order-t.order})),qe=Ke[K],Ge=(0,l.useCallback)((function(e){return T?T(e):B.collection("user").doc(g).collection("url").doc(t.generatedUrl||t.id).collection("testingSessions").doc(e)}),[B,g,t,T]),Xe=(0,l.useCallback)((0,i.Z)((0,s.Z)().mark((function e(){var n,r,i;return(0,s.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n="session_".concat(Date.now(),"_").concat(Math.random().toString(36).substr(2,9)),Q(n),e.next=4,(0,j.CI)();case 4:return r=e.sent,i={id:n,startedAt:c.ZP.firestore.FieldValue.serverTimestamp(),completedAt:null,status:"in_progress",taskResults:[],audioUrl:null,transcriptStatus:null,transcript:null,aiSummary:null,metadata:r,protoVersionId:null},e.prev=6,e.next=9,Ge(n).set(i);case 9:return e.abrupt("return",n);case 12:return e.prev=12,e.t0=e.catch(6),console.error("[UserTestingTester] createSession FAILED:",{path:"user/"+g+"/url/"+((null===t||void 0===t?void 0:t.generatedUrl)||(null===t||void 0===t?void 0:t.id))+"/testingSessions/",ownerId:g,projectId:(null===t||void 0===t?void 0:t.generatedUrl)||(null===t||void 0===t?void 0:t.id),error:e.t0.message}),e.abrupt("return",null);case 16:case"end":return e.stop()}}),e,null,[[6,12]])}))),[Ge,g,t]),$e=(0,l.useCallback)(function(){var e=(0,i.Z)((0,s.Z)().mark((function e(t){var n,r=arguments;return(0,s.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=r.length>1&&void 0!==r[1]?r[1]:2,$){e.next=3;break}return e.abrupt("return",!1);case 3:return e.prev=3,e.next=6,Ge($).update(t);case 6:return e.abrupt("return",!0);case 9:if(e.prev=9,e.t0=e.catch(3),!(n>0)){e.next=15;break}return e.next=14,new Promise((function(e){return setTimeout(e,1e3)}));case 14:return e.abrupt("return",$e(t,n-1));case 15:return console.error("[UserTestingTester] updateSession FAILED after retries:",e.t0),e.abrupt("return",!1);case 17:case"end":return e.stop()}}),e,null,[[3,9]])})));return function(t){return e.apply(this,arguments)}}(),[Ge,$]),Qe=(0,l.useCallback)((function(e,n){var r=(null===t||void 0===t?void 0:t.generatedUrl)||(null===t||void 0===t?void 0:t.id)||"",s=S(n);return M?"".concat(M,"/").concat(e,".").concat(s):"user-testing-audio/".concat(g,"/").concat(r,"/").concat(e,".").concat(s)}),[g,t,M]),et=(0,l.useCallback)((function(e,n){var r=(null===t||void 0===t?void 0:t.generatedUrl)||(null===t||void 0===t?void 0:t.id)||"",s=S(n);return V?"".concat(V,"/").concat(e,".").concat(s):"user-testing-video/".concat(g,"/").concat(r,"/").concat(e,".").concat(s)}),[g,t,V]),tt=(0,l.useCallback)(function(){var e=(0,i.Z)((0,s.Z)().mark((function e(n,r){var i,a;return(0,s.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=(0,d.$C)(void 0,"us-central1"),a=(0,d.V1)(i,"finalizeTestingRecording"),e.next=4,a({ownerId:g,projectId:(null===t||void 0===t?void 0:t.generatedUrl)||(null===t||void 0===t?void 0:t.id),sessionId:r,kind:n});case 4:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),[g,t]),nt=(0,l.useCallback)(function(){var e=(0,i.Z)((0,s.Z)().mark((function e(t,n){var r,i,a,o,l;return(0,s.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.type||"audio/webm",i=Qe(n,r),a=(0,u.iH)(c.tO,i
1),e.prev=3,we("uploading"),e.next=7,(0,u.KV)(a,t,{contentType:r});case 7:if(o=e.sent,!M){e.next=16;break}return e.next=11,(0,u.Jt)(o.ref);case 11:return l=e.sent,e.next=14,Ge(n).update({audioUrl:l,transcriptStatus:"pending"});case 14:e.next=18;break;case 16:return e.next=18,tt("audio",n);case 18:return we("uploaded"),setTimeout((function(){we(null)}),2e3),e.abrupt("return",!0);case 23:return e.prev=23,e.t0=e.catch(3),console.error("[UserTestingTester] uploadAudio FAILED:",{path:i,ownerId:g,sessionId:n,error:e.t0.message}),we("error"),e.abrupt("return",null);case 28:case"end":return e.stop()}}),e,null,[[3,23]])})));return function(t,n){return e.apply(this,arguments)}}(),[g,Qe,Ge,M,tt]),rt=(0,l.useCallback)(function(){var e=(0,i.Z)((0,s.Z)().mark((function e(t,n){var r,i,a,o,l;return(0,s.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.type||"video/webm",i=et(n,r),a=(0,u.iH)(c.tO,i),e.prev=3,Ae("uploading"),e.next=7,(0,u.KV)(a,t,{contentType:r});case 7:if(o=e.sent,!V){e.next=16;break}return e.next=11,(0,u.Jt)(o.ref);case 11:return l=e.sent,e.next=14,Ge(n).update({videoUrl:l,videoEnabled:!0});case 14:e.next=18;break;case 16:return e.next=18,tt("video",n);case 18:return Ae("uploaded"),setTimeout((function(){Ae(null)}),2e3),e.abrupt("return",!0);case 23:return e.prev=23,e.t0=e.catch(3),console.error("[UserTestingTester] uploadVideo FAILED:",{path:i,ownerId:g,sessionId:n,error:e.t0.message}),Ae("error"),e.abrupt("return",null);case 28:case"end":return e.stop()}}),e,null,[[3,23]])})));return function(t,n){return e.apply(this,arguments)}}(),[g,et,Ge,V,tt]),st=(0,l.useCallback)((function(e,t){try{var n=function(){for(var e=0,t=["audio/webm;codecs=opus","audio/webm","audio/mp4","audio/ogg;codecs=opus"];e<t.length;e++){var n=t[e];if(MediaRecorder.isTypeSupported(n))return n}return"audio/webm"}(),r=new MediaRecorder(e,{mimeType:n}),s=(0,y.I3)({path:Qe(t,n),mimeType:n,thresholdBytes:y._o});r.ondataavailable=function(e){return s.addChunk(e.data)},r.onstop=function(){if(s.hasData()){var e=s.getBlob(r.mimeType||n);nt(e,t)}},r.start(1e4),Ve.current=r,we("recording")}catch(i){console.error("Error starting audio MediaRecorder:",i)}}),[nt,Qe]),it=(0,l.useCallback)((function(e,t,n){try{var r=function(){for(var e=0,t=["video/webm;codecs=vp9,opus","video/webm;codecs=vp8,opus","video/webm","video/mp4"];e<t.length;e++){var n=t[e];if(MediaRecorder.isTypeSupported(n))return n}return"video/webm"}(),s=(0,a.Z)(e.getVideoTracks());t&&s.push.apply(s,(0,a.Z)(t.getAudioTracks()));var i=new MediaStream(s),o=new MediaRecorder(i,{mimeType:r,videoBitsPerSecond:1e6}),l=(0,y.I3)({path:et(n,r),mimeType:r,thresholdBytes:y.Md});o.ondataavailable=function(e){return l.addChunk(e.data)},o.onstop=function(){if(l.hasData()){var e=l.getBlob(o.mimeType||r);rt(e,n)}},o.start(1e4),Re.current=o,Ae("recording")}catch(c){console.error("Error starting video MediaRecorder:",c)}}),[rt,et]),at=(0,l.useCallback)((function(){Ve.current&&"recording"===Ve.current.state&&(Ve.current.stop(),Ve.current=null),Re.current&&"recording"===Re.current.state&&(Re.current.stop(),Re.current=null),je&&je.getTracks().forEach((function(e){return e.stop()}))}),[je]),ot=function(){var e=(0,i.Z)((0,s.Z)().mark((function e(n,r){var i,a;return(0,s.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n&&(oe(n),de(!0)),r&&(ye(r),Ce(!0)),I||!g){e.next=25;break}return e.prev=3,e.next=6,fetch("/api/ut-session",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectOwnerId:g,projectId:(null===t||void 0===t?void 0:t.generatedUrl)||(null===t||void 0===t?void 0:t.id),testToken:(null===t||void 0===t?void 0:t.generatedUrl)||(null===t||void 0===t?void 0:t.id),mode:"check"})});case 6:if(!(i=e.sent).ok){e.next=13;break}return e.next=10,i.json();case 10:e.t0=e.sent,e.next=14;break;case 13:e.t0={allowed:!0};case 14:if(!1!==e.t0.allowed){e.next=20;break}return n&&(n.getTracks().forEach((function(e){return e.stop()})),oe(null),de(!1)),r&&(r.getTracks().forEach((function(e){return e.stop()})),ye(null),Ce(!1)),H("limit_reached"),e.abrupt("return");case 20:e.next=25;break;case 22:e.prev=22,e.t1=e.catch(3),console.error("Error checking session limit:",e.t1);case 25:return e.next=27,Xe();case 27:if(a=e.sent){e.next=31;break}return H("error"),e.abrupt("return");case 31:re(new Date),H("testing"),n&&a&&st(n,a),r&&a&&it(r,n,a);case 35:case"end":return e.stop()}}),e,null,[[3,22]])})));return function(t,n){return e.apply(this,arguments)}}(),lt=function(e){var t=new Date,r=Math.round((t-ne)/1e3),s={taskId:qe.id,status:e,difficulty:null,
1startedAt:ne,completedAt:t,timeSpent:r};He(s),n.askDifficulty?H("difficulty"):ct(s)},ct=function(){var e=(0,i.Z)((0,s.Z)().mark((function e(t){var n;return(0,s.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=[].concat((0,a.Z)(ze),[t]),Be(n),He(null),e.next=5,$e({taskResults:n});case 5:if(!(K<Ke.length-1)){e.next=12;break}q(K+1),re(new Date),De(!1),H("testing"),e.next=25;break;case 12:return e.next=14,$e({completedAt:c.ZP.firestore.FieldValue.serverTimestamp(),status:"completed",taskResults:n});case 14:if(at(),P||!g){e.next=24;break}return e.prev=16,e.next=19,(0,k.DO)(g);case 19:e.next=24;break;case 21:e.prev=21,e.t0=e.catch(16),console.error("Error incrementing session count:",e.t0);case 24:H("completed");case 25:case"end":return e.stop()}}),e,null,[[16,21]])})));return function(t){return e.apply(this,arguments)}}(),ut=(0,l.useCallback)((function(){Pe||De(!0)}),[Pe]),dt=function(){var e=(0,i.Z)((0,s.Z)().mark((function e(){return(0,s.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Je.current){e.next=2;break}return e.abrupt("return");case 2:return Je.current=!0,e.next=5,$e({completedAt:c.ZP.firestore.FieldValue.serverTimestamp(),status:"completed",taskResults:[]});case 5:if(at(),P||!g){e.next=15;break}return e.prev=7,e.next=10,(0,k.DO)(g);case 10:e.next=15;break;case 12:e.prev=12,e.t0=e.catch(7),console.error("Error incrementing session count:",e.t0);case 15:H("completed");case 16:case"end":return e.stop()}}),e,null,[[7,12]])})));return function(){return e.apply(this,arguments)}}(),pt=function(){var e=(0,i.Z)((0,s.Z)().mark((function e(){return(0,s.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Je.current){e.next=2;break}return e.abrupt("return");case 2:return Je.current=!0,e.next=5,$e({completedAt:c.ZP.firestore.FieldValue.serverTimestamp(),status:"incomplete",taskResults:ze});case 5:if(at(),P||!g){e.next=15;break}return e.prev=7,e.next=10,(0,k.DO)(g);case 10:e.next=15;break;case 12:e.prev=12,e.t0=e.catch(7),console.error("Error incrementing session count:",e.t0);case 15:H("completed");case 16:case"end":return e.stop()}}),e,null,[[7,12]])})));return function(){return e.apply(this,arguments)}}();return(0,l.useEffect)((function(){if(je){var e=je.getVideoTracks()[0];e&&(e.onended=function(){Re.current&&"recording"===Re.current.state&&(Re.current.stop(),Re.current=null),ye(null),Ce(!1)})}}),[je]),(0,l.useEffect)((function(){var e=function(e){if("recording"===xe||"uploading"===xe||"recording"===Me||"uploading"===Me)return e.preventDefault(),e.returnValue="Recording in progress. Are you sure you want to leave?",e.returnValue};return window.addEventListener("beforeunload",e),function(){return window.removeEventListener("beforeunload",e)}}),[xe,Me]),(0,l.useEffect)((function(){var e=function(){"hidden"===document.visibilityState&&$&&"testing"===Y&&$e({status:"incomplete",completedAt:c.ZP.firestore.FieldValue.serverTimestamp()})};return document.addEventListener("visibilitychange",e),function(){return document.removeEventListener("visibilitychange",e)}}),[$,Y,$e]),(0,l.useEffect)((function(){var e=_e.current;if(e&&"testing"===Y){var t=function(){return ut()},n=!1,r=setInterval((function(){var e,t;"IFRAME"!==(null===(e=document.activeElement)||void 0===e?void 0:e.tagName)||n?"IFRAME"!==(null===(t=document.activeElement)||void 0===t?void 0:t.tagName)&&(n=!1):(n=!0,ut())}),100);return e.addEventListener("click",t),function(){e.removeEventListener("click",t),clearInterval(r)}}}),[Y,ut]),"dismissed"===Y?h:(0,m.jsx)(N.Z,{children:(0,m.jsxs)("div",{className:"user-testing-tester",children:[(0,m.jsx)("div",{ref:_e,className:"user-testing-prototype-container",onClick:ut,children:h}),"welcome"===Y&&(Z||U)&&(0,m.jsx)(f,{userTesting:n,ownerName:Z,taskCount:Ke.length,onComplete:ot,isPreview:U}),"testing"===Y&&qe&&(0,m.jsx)(v.Z,{task:qe,taskIndex:K,totalTasks:Ke.length,hasInteracted:Pe,onDone:function(){return lt("done")},onStuck:function(){return lt("stuck")},onStartOver:function(){var e,t=null===(e=_e.current)||void 0===e?void 0:e.querySelector("iframe");t&&(t.style.opacity="0",t.style.transition="opacity 0.2s ease",setTimeout((function(){var e=t.src;t.src="",t.src=e,t.onload=function(){t.style.opacity="1"}}),200))},onEndSession:pt}),"testing"===Y&&0===Ke.length&&(0,m.jsx)("div",{className:"user-testing-zero-tasks-panel",children:(0,m.jsxs)("div",{className:"user-testing-zero-tasks-content",children:[(0,m.jsx)("p",{className:"user-testing-zero-tasks-text",children:"Share your thoughts as you explore"}),(0,m.jsx)("button",{className:"user-testing-zero-tasks-btn",onClick:dt,children:"End Session"})]})}),"difficulty"===Y&&(0,m.jsx)(x.Z,{onSelect:function(e){var t=(0,r.Z)((0,r.Z)({},Ye),{},{difficulty:e});ct(t)},onSkip:function(){ct(Ye)}}),"completed"===Y&&(0,m.jsx)(b.Z,{thankYouMessage:n.thankYouMessage,returnUrl:z,isSaving:"uploading"===xe||"uploading"===Me}),"error"===Y&&(0,m.jsx)("div",{className:"user-testing-limit-overlay",children:(0,m.jsxs)("div",{className:"user-testing-limit-modal",children:[(0,m.jsx)("h2",{className:"user-testing-limit-title",children:"Something went wrong"}),(0,m.jsx)("p",{className:"user-testing-limit-text",children:"Please refresh and try again."})]})}),"limit_reached"===Y&&(0,m.jsx)("div",{className:"user-testing-limit-overlay",children:(0,m.jsxs)("div",{className:"user-testing-limit-modal",children:[(0,m.jsx)("div",{className:"user-testing-limit-icon",children:(0,m.jsxs)("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[(0,m.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,m.jsx)("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),(0,m.jsx)("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]})}),(0,m.jsx)("h2",{className:"user-testing-limit-title",children:"Testing Unavailable"}),(0,m.jsx)("p",{className:"user-testing-limit-text",children:"The owner of this project has reached their session limit. Please try again later or contact them directly."}),(0,m.jsx)(p.Z,{fill:"d-glass",size:"lg",onClick:function(){return H("dismissed")},children:"Close"})]})}),(ue||Ze)&&("testing"===Y||"uploading"===xe||"uploaded"===xe||"uploading"===Me||"uploaded"===Me)&&(0,m.jsx)(w,{isMuted:he,onMuteToggle:function(){ae&&(ae.getAudioTracks().forEac
1h((function(e){e.enabled=he})),ge(!he))},uploadStatus:xe,isRecordingAudio:ue,isRecordingVideo:Ze,videoUploadStatus:Me})]})})}},49208:function(e,t,n){n.d(t,{I3:function(){return o},Md:function(){return a},_o:function(){return i}});var r=n(20673),s=n(30276),i=1048576,a=5242880;function o(e){var t=e.path,n=e.mimeType,i=e.thresholdBytes,a=[],o=0,l=!1;return{addChunk:function(e){e&&0!==e.size&&(a.push(e),(o+=e.size)>=i&&!l&&(o=0,function(){l=!0;var e=new Blob(a,{type:n});(0,s.KV)((0,s.iH)(r.tO,t),e,{contentType:n}).catch((function(e){console.warn("[recordingSnapshots] snapshot upload failed:",t,e.message)})).finally((function(){l=!1}))}()))},getBlob:function(e){return new Blob(a,{type:e||n})},hasData:function(){return a.length>0}}}},50930:function(e,t,n){n.d(t,{CI:function(){return c}});var r=n(61819),s=n(15861);function i(e){var t={browserName:null,browserVersion:null,osName:null};if(!e)return t;var n=function(t){var n=e.match(t);return n?n[1]:null};return/Edg(?:e|A|iOS)?\//.test(e)?(t.browserName="Edge",t.browserVersion=n(/Edg(?:e|A|iOS)?\/(\d+)/)):/OPR\/|Opera/.test(e)?(t.browserName="Opera",t.browserVersion=n(/(?:OPR|Opera)[/ ](\d+)/)):/SamsungBrowser\//.test(e)?(t.browserName="Samsung Internet",t.browserVersion=n(/SamsungBrowser\/(\d+)/)):/FxiOS\//.test(e)?(t.browserName="Firefox",t.browserVersion=n(/FxiOS\/(\d+)/)):/CriOS\//.test(e)?(t.browserName="Chrome",t.browserVersion=n(/CriOS\/(\d+)/)):/Firefox\//.test(e)?(t.browserName="Firefox",t.browserVersion=n(/Firefox\/(\d+)/)):/Chrome\//.test(e)?(t.browserName="Chrome",t.browserVersion=n(/Chrome\/(\d+)/)):/Safari\//.test(e)&&(t.browserName="Safari",t.browserVersion=n(/Version\/(\d+)/)),/Windows NT/.test(e)?t.osName="Windows":/iPhone|iPad|iPod|CriOS|FxiOS/.test(e)?t.osName="iOS":/Android/.test(e)?t.osName="Android":/CrOS/.test(e)?t.osName="ChromeOS":/Mac OS X|Macintosh/.test(e)?t.osName="macOS":/Linux/.test(e)&&(t.osName="Linux"),t}function a(e,t,n){var r=/Macintosh/.test(e||"")&&n>1;if(/iPad|Tablet/i.test(e||"")||/Android/i.test(e||"")&&!/Mobile/i.test(e||"")||r)return"tablet";if(/Mobi|iPhone|iPod/i.test(e||""))return"mobile";if(n>0&&t>0){if(t<768)return"mobile";if(t<1024)return"tablet"}return"desktop"}function o(){return l.apply(this,arguments)}function l(){return l=(0,s.Z)((0,r.Z)().mark((function e(){var t,n,s,i,a=arguments;return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=a.length>0&&void 0!==a[0]?a[0]:3e3,e.prev=1,n=new AbortController,s=setTimeout((function(){return n.abort()}),t),e.next=6,fetch("/api/geo",{signal:n.signal});case 6:if(i=e.sent,clearTimeout(s),i.ok){e.next=10;break}return e.abrupt("return",null);case 10:return e.next=12,i.json();case 12:return e.abrupt("return",e.sent);case 15:return e.prev=15,e.t0=e.catch(1),e.abrupt("return",null);case 18:case"end":return e.stop()}}),e,null,[[1,15]])}))),l.apply(this,arguments)}function c(){return u.apply(this,arguments)}function u(){return(u=(0,s.Z)((0,r.Z)().mark((function e(){var t,n,s,l,c,u,d;return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t="undefined"!==typeof navigator&&navigator.userAgent||"",n=i(t),s=n.browserName,l=n.browserVersion,c=n.osName,u={userAgent:t,screenSize:"".concat(window.innerWidth,"x").concat(window.innerHeight),referrer:document.referrer||null,language:navigator.language||null,deviceType:a(t,window.innerWidth,navigator.maxTouchPoints||0),browserName:s,browserVersion:l,osName:c,screenWidth:window.screen&&window.screen.width||window.innerWidth||null,screenHeight:window.screen&&window.screen.height||window.innerHeight||null,country:null,region:null,city:null},e.next=5,o();case 5:return(d=e.sent)&&(u.country=d.country||null,u.region=d.region||null,u.city=d.city||null),e.abrupt("return",u);case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}},67408:function(e,t,n){n.d(t,{DO:function(){return l},Yn:function(){return u}});var r=n(61819),s=n(15861),i=n(20673),a={regular:3,basic:5,solo:10,pro:20};function o(){var e=new Date;return"".concat(e.getFullYear(),"-").concat(String(e.getMonth()+1).padStart(2,"0"),"-01")}function l(e){return c.apply(this,arguments)}function c(){return(c=(0,s.Z)((0,r.Z)().mark((function e(t){var n,s,a;return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=i.ZP.firestore(),s=n.collection("user").doc(t),a=o(),e.next=5,s.set({userTestingUsage:{sessionsUsedThisMonth:i.ZP.firestore.FieldValue.increment(1),totalSessionsEver:i.ZP.firestore.FieldValue.increment(1),lastResetDate:a}},{merge:!0});case 5:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function u(e){var t;return null!==(t=a[e])&&void 0!==t?t:a.regular}},4586:function(){}}]);
2//# sourceMappingURL=3991.17f1559c.chunk.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.