@explorer02/cfm-survey-sdk 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var V=Object.defineProperty;var gt=Object.getOwnPropertyDescriptor;var ft=Object.getOwnPropertyNames;var dt=Object.prototype.hasOwnProperty;var yt=(e,t)=>{for(var r in t)V(e,r,{get:t[r],enumerable:!0})},St=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ft(t))!dt.call(e,i)&&i!==r&&V(e,i,{get:()=>t[i],enumerable:!(n=gt(t,i))||n.enumerable});return e};var bt=e=>St(V({},"__esModule",{value:!0}),e);var Nt={};yt(Nt,{useSurveySDK:()=>ut});module.exports=bt(Nt);var at=require("react");var de=require("react"),ye=require("@tanstack/react-query");var X=require("@tanstack/react-query");var F=!1,vt={debug:"background: #7f8c8d; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",info:"background: #2980b9; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",warn:"background: #f1c40f; color: #000; padding: 2px 5px; border-radius: 3px; font-weight: bold;",error:"background: #e74c3c; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",success:"background: #2ecc71; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",perf:"background: #9b59b6; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",analytics:"background: #e20074; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;"};function P(e,t,r){if(!F&&e!=="analytics")return;let n=new Date().toLocaleTimeString(),i=`%c[SDK:${e.toUpperCase()}]`,o=vt[e];r!==void 0?console.log(`[${n}] ${i}`,o,t,r):console.log(`[${n}] ${i}`,o,t)}var u={setEnabled:e=>{F=e},isEnabled:()=>F,debug:(e,t)=>P("debug",e,t),info:(e,t)=>P("info",e,t),warn:(e,t)=>P("warn",e,t),error:(e,t)=>P("error",e,t),success:(e,t)=>P("success",e,t),analytics:(e,t)=>P("analytics",e,t),perf:e=>{P("perf",`${e.apiName} completed in ${e.durationMs.toFixed(2)}ms | Status: ${e.status}`,e)}};var C=new X.QueryClient({defaultOptions:{queries:{staleTime:1/0,refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchInterval:!1,retryDelay:5e3,retry:(e,t)=>{if(e>=3)return u.error("Query failed permanently after 3 attempts. Stopping retries.",t),!1;if(t instanceof Error){let r=t.message;if(r.includes("400")||r.includes("401")||r.includes("403")||r.includes("404")||r.includes("422"))return u.error(`Query failed permanently due to client error (${r}). Skipping retry.`,t),!1}return u.warn(`Query failed. Retrying attempt ${e+1}/3...`,t),!0}},mutations:{networkMode:"always",retryDelay:5e3,retry:(e,t)=>{if(e>=3)return u.error("Mutation failed permanently after 3 attempts. Stopping retries.",t),!1;if(t instanceof Error){let r=t.message;if(r.includes("400")||r.includes("401")||r.includes("403")||r.includes("422"))return u.error("Mutation failed permanently due to validation/client error. Skipping retry.",t),!1}return u.warn(`Mutation failed. Retrying attempt ${e+1}/3...`,t),!0}}}});var Y="https://custom-p0.feedbook.me/api/feedback/survey/cfm",K="eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJBY2Nlc3MgVG9rZW4gR2VuZXJhdGVkIEJ5IFNwcmlua2xyIiwic3VydmV5SWQiOiI2YTJlNWM2NDFiOGRiMmY5MDQ2Nzg4ODUiLCJpc3MiOiJTUFJJTktMUiIsInR5cCI6IkpXVCIsInN1cnZleU1vZGUiOiJTVEFOREFSRCIsInN1cnZleUF1dGhlbnRpY2F0aW9uU3RhdGUiOiJOT1RfUkVRVUlSRUQiLCJkaXN0cmlidXRpb25FbnRpdHlJZCI6IjZhMmU1ZDEzNDRjYTkzZjc3YTVlMzcyNyIsImF1ZCI6IlNQUklOS0xSIiwibmJmIjoxNzgxNDIyMTc5LCJzY29wZSI6WyJSRUFEIiwiV1JJVEUiXSwic3RhdGljU3VydmV5IjoidHJ1ZSIsInN1cnZleVJlc3BvbmRlclNuVHlwZSI6IkVYVEVSTkFMX0FQUExJQ0FUSU9OIiwic3VydmV5TGFuZ3VhZ2UiOiJlbiIsInBhcnRuZXJJZCI6OTAwNCwidG9rZW5UeXBlIjoiQUNDRVNTIiwiYXV0aFR5cGUiOiJTVVJWRVlfUkVTUE9OU0UiLCJpYXQiOjE3ODE0MjMzNzksImp0aSI6InNwcmlua2xyIn0.B4ffi1szwM_xQKXTlr0kQc9mVOS4qVbB5e6ir4NFuCoOmNmsl3PB1QeFJ5jPaQ42s0KTpbufPam9ja0Z84CJ620l2WtuS1RModEv7ZtuMNLWOixzRxZMduC5-V7WV85H6gr1e-HzX7wgqrxTk2Z9iTr-8AVuczlwScarCfqLhA-JE_EXkFScHoehmH7QB5q5-BfcxU32iQNYOk5NyeEHGAAWkkyiGPdrbE27njPnhTunB3kKgCBvHHLq0KmgoN9x_KnrB53O_0Xai419TT5vkBWlu5a_uotZckX014eQpxYH02w_LeOF8iWEKYe6R9ge-6DSbelaJSt6U6O8Fq-aXw";function xt(e){return`${Y}?instanceId=${encodeURIComponent(e)}&draftPreview=false`}function ee(e){let t=typeof e=="string"&&e.trim().length>0?e.trim():K;return xt(t)}function ht(e){let t=(e??"").toUpperCase();return t==="TEXTFIELD"?"text":t==="RATING"||t==="SCALE"||t==="RATING_MATRIX"?"rating":"radio"}var kt=["#e2001a","#e4251b","#ec610a","#f18b00","#f7b200","#fcd900","#d2dc00","#9fca00","#6bb300","#339a00","#008000"];function te(e){return kt[e]??"#e20074"}function Et(e=[],t){let r=e.filter(n=>n.additional?.isHintText&&!n.hidden).map(n=>t&&n.translations?.[t]?.answerText||n.answerText||"").filter(Boolean);return r.length>=3?{minLabel:r[0],midLabel:r[1],maxLabel:r[2]}:{minLabel:r[0],maxLabel:r[1]}}function Pt(e,t,r){if(t==="text")return[];let i=(e.answerDetails??[]).filter(o=>!o.hidden&&!o.additional?.isHintText);return i.length>0?i.map(a=>{let s=r&&a.translations?.[r]?.answerText||a.answerText||"",c=a.answerText??"",m=Number(c),p=Number.isFinite(m)&&c.trim()!==""?m:c,l={label:s,value:p};return t==="rating"&&typeof p=="number"&&(l.color=te(p)),l}):t==="rating"?Array.from({length:11},(a,s)=>({label:String(s),value:s,color:te(s)})):[]}function re(e,t,r){let n=ht(e.answerType),{minLabel:i,midLabel:o,maxLabel:a}=Et(e.answerDetails,t),s=Pt(e,n,t),c=e.id??"",m=e.questionConfigs??[],p=m.find(b=>b.key==="REQUIRED")?.value?.[0]==="true",l=m.find(b=>b.key==="REQUIRED_ERROR_MESSAGE"),v=l?.value?.[0];t&&l?.translations?.[t]?.value?.[0]&&(v=l.translations[t].value[0]);let g=m.find(b=>b.key==="CONTENT_TYPE")?.childConfigs?.find(b=>b.key==="MAX_CHARACTER_COUNT"),f=g?.value?.[0]?Number(g.value[0]):void 0,d;n==="rating"&&o&&(s.length===11?d=7.5:d=(s.length-1)/2);let x=t&&e.translations?.[t]?.questionRichText||t&&e.translations?.[t]?.questionText||e.questionRichText||e.questionText||"";r&&(x=x.replace(/\{\{(\w+)\}\}/g,(b,E)=>r[E]!==void 0?r[E]:b));let y;if(n==="text"){let b=e.answerDetails?.[0];b&&(y=t&&b.translations?.[t]?.answerText||b.answerText)}return{id:c,text:x,type:n,options:s,required:p,...v?{requiredErrorMessage:v}:{},...i?{minLabel:i}:{},...o?{midLabel:o}:{},...d!==void 0?{midLabelIndex:d}:{},...a?{maxLabel:a}:{},...f!==void 0?{maxCharacterCount:f}:{},...y?{placeholder:y}:{}}}var It={en:"English",hi:"Hindi",de:"Deutsch",es:"Espa\xF1ol",fr:"Fran\xE7ais",bn:"Bengali",gu:"Gujarati",it:"Italiano",ja:"\u65E5\u672C\u8A9E",ko:"\uD55C\uAD6D\uC5B4",mr:"Marathi",pa:"Punjabi",ta:"Tamil",te:"Telugu",ur:"Urdu",zh:"\u4E2D\u6587"};function wt(e){let t=e.toLowerCase().trim();return It[t]||e.toUpperCase()}function ne(e){let t=e.cfmSurveyDTO,r=new Set,n=t?.baseLanguage??"en";return r.add(n),t&&Array.isArray(t.surveyPages)&&t.surveyPages.forEach(i=>{(i.questionHolders??[]).forEach(o=>{let a=o.question;a&&a.translations&&Object.keys(a.translations).forEach(s=>{r.add(s)})})}),Array.from(r).map(i=>({code:i,name:wt(i)}))}function oe(e,t,r){let n=e.cfmSurveyDTO;return!n||!Array.isArray(n.surveyPages)?[]:n.surveyPages.map((i,o)=>{let a=(i.questionHolders??[]).map(s=>s.question).filter(s=>!!s).map(s=>re(s,t,r));return{id:`page_${o}`,title:`Page ${o+1}`,questions:a}})}function ie(e){return e.instanceId?.trim()?{instanceId:e.instanceId.trim(),language:e.surveyLanguage??e.cfmSurveyDTO?.baseLanguage??"en"}:null}function Tt(e,t){return t??e.surveyLanguage??e.cfmSurveyDTO?.baseLanguage??"en"}function se(e,t,r){let n=Tt(e,t),i=ne(e),o=oe(e,n,r);return{id:e.cfmSurveyDTO?.id??"",language:n,languages:i,pages:o}}function ae(e){u.info("Starting survey layout API fetch...",{url:e})}function M(e,t,r){u.perf({apiName:"GET Survey Layout",durationMs:e,status:t,url:r,success:!1})}function ue(e,t,r,n){u.perf({apiName:"GET Survey Layout",durationMs:e,status:t,url:r,payloadSize:n,success:!0})}function ce(e){u.success("Raw survey layout fetched successfully",e)}function me(e){u.error("Failed to fetch raw survey layout",e)}function pe(){u.warn("Cannot map survey: apiResponse is null or undefined")}function le(e){u.success("Mapped survey layout successfully",e)}function ge(e){u.error("Failed to map survey layout",e)}function h(e){if(e.eventName==="survey_session_summary"){let{completed:t,totalDurationMs:r,maxVisitedPageIndex:n,totalQuestionsCount:i,answeredQuestionsCount:o,skippedQuestionsCount:a,skippedQuestionIds:s,validationErrorsCount:c,backtrackCount:m}=e.metadata;u.analytics(`Event: ${e.eventName} - SESSION SUMMARY TABLE:`);let p=[{Metric:"Completion Status",Value:t?"COMPLETED \u2705":"ABANDONED \u274C"},{Metric:"Total Time Spent",Value:`${(r/1e3).toFixed(2)} seconds`},{Metric:"Max Page Index Reached",Value:`${n}`},{Metric:"Total Questions",Value:i},{Metric:"Answered Questions",Value:o},{Metric:"Skipped Optional Questions",Value:a},{Metric:"Skipped Question IDs",Value:s.join(", ")||"None"},{Metric:"Validation Errors Triggered",Value:c},{Metric:"Backtrack Count",Value:m},{Metric:"Validation Error History",Value:e.metadata.validationHistory?.map(l=>`[Page ${l.pageIndex}] Attempt ${l.attemptNumber}: ${Object.keys(l.errors).join(", ")}`).join(" | ")||"NO Validation Erros Occurred"}];console.table(p)}else u.analytics(`Event: ${e.eventName}`,e.metadata)}function fe(e,t,r,n){h({eventName:"survey_fetch_latency",metadata:{durationMs:e,status:t,success:!0,url:r,payloadSize:n}})}function Q(e,t,r){h({eventName:"api_error",metadata:{apiName:"GET Survey Layout",status:e,url:t,errorMessage:r}})}async function Rt(e){let t=performance.now();ae(e);try{let r=await fetch(e,{method:"GET",headers:{Accept:"application/json"},cache:"force-cache"}),n=performance.now()-t;if(!r.ok)throw M(n,r.status,e),Q(r.status,e,`Survey fetch failed (${r.status})`),new Error(`Survey fetch failed (${r.status})`);let i=await r.json(),o=JSON.stringify(i),s=`${(new Blob([o]).size/1024).toFixed(2)} KB`;return ue(n,r.status,e,s),fe(n,r.status,e,s),ce(i),i}catch(r){let n=performance.now()-t;throw M(n,"FAILED",e),Q("FAILED",e,r?.message||String(r)),me(r),r}}function Se(e){let t=ee(e?.instanceId),r=e?.language,n=e?.placeholders,{data:i,error:o,isLoading:a,isSuccess:s}=(0,ye.useQuery)({queryKey:["survey",t],queryFn:()=>Rt(t),enabled:!!t},C),c=(0,de.useMemo)(()=>{if(!s)return{survey:null,session:null};if(!i)return pe(),{survey:null,session:null};try{let m=se(i,r,n),p=ie(i),l=p?{...p,language:m.language}:null;return le(m),{survey:m,session:l}}catch(m){return ge(m),{survey:null,session:null}}},[i,s,r]);return{survey:c.survey,session:c.session,fetching:a,fetchError:o}}var R=require("react");var Le=require("react"),Ne=require("@tanstack/react-query");function be(e,t){u.info("Starting survey response HTTP POST...",{url:e,requestBody:t})}function ve(e,t){u.warn(e,t)}function xe(e,t,r,n,i){u.perf({apiName:"POST Submit Response",durationMs:e,status:t,url:r,requestSize:n,responseSize:i,success:!0})}function U(e,t,r,n){u.perf({apiName:"POST Submit Response",durationMs:e,status:t,url:r,requestSize:n,success:!1})}function he(e){u.success("Survey response submitted successfully",{responseId:e})}function ke(e,t){u.error(e,t)}function Ee(e){u.debug("Resolved raw inputs to submit schema:",e)}function Pe(e){u.debug("Constructed JSON request body:",e)}function Ie(e){u.error("Failed to execute submit callback",e)}function we(e,t,r,n,i){h({eventName:"survey_submit_latency",metadata:{durationMs:e,status:t,success:!0,url:r,requestSize:n,responseSize:i}})}function D(e,t,r){h({eventName:"api_error",metadata:{apiName:"POST Submit Response",status:e,url:t,errorMessage:r}})}var Te="https://custom-p0.feedbook.me/api/feedback/survey/responseV2";function Re(e,t="en"){let r=new URLSearchParams({instanceId:e,surveySubmitted:"true",surveyLanguage:t});return`${Te}?${r.toString()}`}function Ae(e,t){let r={};for(let n of t){let i=e[n.id];if(i==null)continue;let o=String(i);r[n.id]=[o]}return{questionToAnswers:r,quesIdVsAttachmentDetails:{},optionLevelAnswers:{},conjointTasks:[]}}function At(e){return typeof e=="object"&&e!==null&&"instanceId"in e&&"answers"in e}function Ce(e,t,r){if(At(e))return{...e,surveyLanguage:e.surveyLanguage??t?.language??"en",questions:e.questions??r?.pages.flatMap(n=>n.questions)??[]};if(!t?.instanceId)throw new Error("Survey session not ready. Fetch survey before submitting.");return{answers:e,instanceId:t.instanceId,surveyLanguage:t.language??"en",questions:r?.pages.flatMap(n=>n.questions)??[]}}async function Ct({url:e,requestBody:t}){let r=performance.now(),i=`${(new Blob([JSON.stringify(t)]).size/1024).toFixed(2)} KB`;be(e,t);try{let o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),a=await o.json().catch(l=>(ve("Failed to parse JSON response during submission",l),null)),s=performance.now()-r,m=`${((a?new Blob([JSON.stringify(a)]).size:0)/1024).toFixed(2)} KB`;if(!o.ok)throw U(s,o.status,e,i),D(o.status,e,`Submit failed (${o.status}): ${JSON.stringify(a)}`),new Error(`Submit failed (${o.status}): ${JSON.stringify(a)}`);let p=a?.responseId??"";return xe(s,o.status,e,i,m),we(s,o.status,e,i,m),he(p),{success:!0,responseId:p}}catch(o){let a=performance.now()-r;throw U(a,"FAILED",e,i),D("FAILED",e,o?.message||String(o)),ke("Failed to submit survey response",o),o}}function Oe(e,t){let r=(0,Ne.useMutation)({mutationFn:({url:i,requestBody:o})=>Ct({url:i,requestBody:o})},C);return{submit:(0,Le.useCallback)(async i=>{try{let o=Ce(i,e,t);Ee(o);let a=o.surveyLanguage??"en",s=Ae(o.answers,o.questions??[]);Pe(s);let c=Re(o.instanceId,a);return await r.mutateAsync({url:c,requestBody:s})}catch(o){throw Ie(o),o}},[e,t,r]),data:r.data??null,loading:r.isPending,error:r.error}}var T=require("react");function Ve(e){return!e||!Array.isArray(e.pages)?0:e.pages.reduce((t,r)=>t+(r.questions?.length??0),0)}function Fe(e,t,r=0){if(!e||!t||!Array.isArray(e.pages))return 0;let n=0;return e.pages.forEach((i,o)=>{Array.isArray(i.questions)&&(o<r?n+=i.questions.length:i.questions.forEach(a=>{let s=t[a.id];s!=null&&s!==""&&n++}))}),n}function Me(e,t){return t<=0?0:Math.min(100,Math.max(0,Math.round(e/t*100)))}function Qe({survey:e,values:t,currentPageIndex:r=0}){let[n,i]=(0,T.useState)(0);return(0,T.useEffect)(()=>{r>n&&i(r)},[r,n]),(0,T.useMemo)(()=>{let o=Ve(e),a=Fe(e,t,n),s=Me(a,o),c=o>0&&a===o;return{totalQuestionsCount:o,answeredQuestionsCount:a,progressPercentage:s,isComplete:c}},[e,t,n])}var Ue=require("react");function B(e){let{currentPageIndex:t,paginationRefs:r}=e;(0,Ue.useEffect)(()=>{r.current&&(r.current.pageStartTime=performance.now())},[t,r])}var De=require("react");function q(e){let{currentPageIndex:t,paginationRefs:r}=e;(0,De.useEffect)(()=>{r.current&&t>r.current.maxVisitedPageIndex&&(r.current.maxVisitedPageIndex=t)},[t,r])}var He=require("react");function Be(e,t){u.info(`Answer changed for question: ${e}`,{value:t})}function I(e,t){u.warn(e,t)}function qe(){u.info("Initiating survey submission...")}function _e(e){u.info(`Navigating back from page index: ${e}`)}function Je(e){u.info(`Navigating next from page index: ${e}`)}function $e(e){u.error("Error encountered during pagination submit trigger",e)}function _(e,t,r){let n={};return e.forEach(i=>{i.required&&(t[i.id]===void 0||t[i.id]==="")&&(n[i.id]=i.requiredErrorMessage??(r?.startsWith("de")?"Beantworten Sie bitte diese Frage bevor Sie fortfahren.":"Please answer this question before you proceed."))}),n}function je(e,t,r){let n={},i="",o=-1;for(let a=0;a<e.length;a++){let s=_(e[a].questions,t,r);Object.keys(s).length>0&&(n={...n,...s},o===-1&&(o=a,i=Object.keys(s)[0]))}return o!==-1?{errors:n,errorPageIndex:o,firstErrorId:i}:null}function A(e){return typeof document>"u"?null:document.getElementById(e)||null}function Lt(e){return e.closest("main")||e.closest("form")||e.parentElement||e}function L(e,t){try{let n=e[t]?.questions?.[0];n?setTimeout(()=>{try{let i=A(n.id);i?Lt(i).scrollIntoView({behavior:"smooth",block:"start"}):window.scrollTo({top:0,behavior:"smooth"})}catch(i){I("Failed to scroll page first question into view",i)}},50):window.scrollTo({top:0,behavior:"smooth"})}catch(r){I("Failed to trigger scroll navigation",r)}}function J(e){let{currentPageIndex:t,setCurrentPageIndex:r,trackPageTime:n,pages:i,values:o,paginationRefs:a}=e;return(0,He.useCallback)(()=>{if(t>0){_e(t),n(t);let s=a.current;if(s){s.backtrackCount+=1;let m=t-1,p=i[m]?.questions??[],l={};p.forEach(v=>{l[v.id]=o[v.id]}),s.backtrackSnapshots[m]={fromPageIndex:t,snapshot:l}}let c=t-1;r(c),L(i,c)}},[t,r,n,i,o,a])}var ze=require("react");function $(e){let{setValues:t,setValidationErrors:r}=e;return(0,ze.useCallback)((n,i)=>{Be(n,i),t(o=>({...o,[n]:i})),r(o=>({...o,[n]:""}))},[t,r])}var Ye=require("react");function Ge(){u.success("Survey validation passed on submit")}function We(e){u.warn("Full survey validation failed on submit",{validation:e})}function N(e){u.error("Failed to run survey validation on submit",e)}function Ze(e){u.warn("Page validation failed",{errors:e})}function Xe(e,t){h({eventName:"page_time_spent",metadata:{pageIndex:e,durationMs:t}})}function O(e,t,r){h({eventName:"validation_error",metadata:{pageIndex:e,errors:t,attemptNumber:r}})}function j(e,t){let{survey:r,pages:n,values:i,currentPageIndex:o,setCurrentPageIndex:a,setValidationErrors:s,trackPageTime:c,trackOptionalSkips:m,checkBacktrackChanges:p,paginationRefs:l}=e,v=n[o],S=v?.questions??[];return(0,Ye.useCallback)(()=>{if(!r||!v)return;let g={};try{g=_(S,i,r.language)}catch(d){N(d)}let f=l.current;if(f){if(Object.keys(g).length>0){Ze(g);let d=(f.validationAttempt[o]||0)+1;f.validationAttempt[o]=d,f.validationErrorsCount+=1,f.validationHistory.push({pageIndex:o,errors:g,attemptNumber:d}),O(o,g,d),s(g);let x=Object.keys(g)[0];setTimeout(()=>{try{let y=A(x);y&&y.scrollIntoView({behavior:"smooth",block:"center"})}catch(y){I("Failed to scroll validation error element into view",y)}},50);return}s({}),delete f.validationAttempt[o],c(o),m(o),p(o),o<n.length-1?(Je(o),a(d=>d+1),L(n,o+1)):t()}},[r,v,S,i,o,a,s,c,m,p,n,t,l])}var rt=require("react");function Ke(e,t,r,n,i,o,a,s,c,m){h({eventName:"survey_session_summary",metadata:{maxVisitedPageIndex:t,totalDurationMs:r,completed:e,totalQuestionsCount:n,answeredQuestionsCount:i,skippedQuestionsCount:o,skippedQuestionIds:a,validationErrorsCount:s,backtrackCount:c,validationHistory:m}})}function et(e,t){h({eventName:"optional_question_skipped",metadata:{questionId:e,pageIndex:t}})}function tt(e,t,r){h({eventName:"backtrack_revisited",metadata:{fromPageIndex:e,toPageIndex:t,changedAnswers:r}})}function H(e){let{survey:t,pages:r,values:n,submit:i,currentPageIndex:o,setCurrentPageIndex:a,setValidationErrors:s,trackPageTime:c,trackOptionalSkips:m,checkBacktrackChanges:p,totalQuestionsCount:l,paginationRefs:v}=e;return(0,rt.useCallback)(async()=>{if(!t)return;qe();let S=null;try{S=je(r,n,t.language),S||Ge()}catch(f){N(f)}let g=v.current;if(g){if(S){We(S);let f=(g.validationAttempt[S.errorPageIndex]||0)+1;g.validationAttempt[S.errorPageIndex]=f,g.validationErrorsCount+=1,g.validationHistory.push({pageIndex:S.errorPageIndex,errors:S.errors,attemptNumber:f}),O(S.errorPageIndex,S.errors,f),s(S.errors),a(S.errorPageIndex),setTimeout(()=>{try{let d=A(S.firstErrorId);d&&d.scrollIntoView({behavior:"smooth",block:"center"})}catch(d){I("Failed to scroll validation error element into view",d)}},100);return}s({}),delete g.validationAttempt[o],c(o),m(o),p(o);try{let f=await i(n);if(f&&f.success&&!g.hasLoggedSummary){let d=performance.now()-g.sessionStartTime,x=[];r.forEach(k=>{k.questions.forEach(b=>{if(!b.required){let E=n[b.id];(E===void 0||E==="")&&x.push(b.id)}})});let y=x.length;Ke(!0,g.maxVisitedPageIndex,d,l,l-y,y,x,g.validationErrorsCount,g.backtrackCount,g.validationHistory),g.hasLoggedSummary=!0}}catch(f){$e(f)}}},[t,r,n,i,o,a,s,c,m,p,l,v])}var nt=require("react");function z(e,t,r){return(0,nt.useCallback)(n=>{if(!r.current)return;let i=r.current.backtrackSnapshots[n];if(i){let o=e[n]?.questions??[],a={},s=!1;o.forEach(c=>{let m=i.snapshot[c.id],p=t[c.id];m!==p&&(a[c.id]={oldValue:m??null,newValue:p??null},s=!0)}),s&&tt(i.fromPageIndex,n,a),delete r.current.backtrackSnapshots[n]}},[e,t,r])}var ot=require("react");function G(e,t){return(0,ot.useCallback)(r=>{(e[r]?.questions??[]).forEach(i=>{let o=!i.required,a=t[i.id];o&&(a===void 0||a==="")&&et(i.id,r)})},[e,t])}var it=require("react");function W(e){return(0,it.useCallback)(t=>{if(!e.current)return;let r=performance.now()-e.current.pageStartTime;Xe(t,r)},[e])}function st({survey:e,session:t}){let[r,n]=(0,R.useState)({}),[i,o]=(0,R.useState)({}),[a,s]=(0,R.useState)(0),c=e?.pages??[],p=c[a]?.questions??[],{submit:l,data:v,loading:S,error:g}=Oe(t,e),{progressPercentage:f,totalQuestionsCount:d,answeredQuestionsCount:x,isComplete:y}=Qe({survey:e,values:r,currentPageIndex:a}),k=(0,R.useRef)({pageStartTime:performance.now(),sessionStartTime:performance.now(),maxVisitedPageIndex:0,validationAttempt:{},backtrackSnapshots:{},hasLoggedSummary:!1,validationErrorsCount:0,backtrackCount:0,validationHistory:[]}),b=W(k),E=G(c,r),ct=z(c,r,k),w={survey:e,session:t,pages:c,currentPageIndex:a,setCurrentPageIndex:s,values:r,setValues:n,validationErrors:i,setValidationErrors:o,paginationRefs:k,trackPageTime:b,trackOptionalSkips:E,checkBacktrackChanges:ct,submit:l,totalQuestionsCount:d};q(w),B(w);let mt=$(w),pt=J(w),Z=H(w),lt=j(w,Z);return{currentPageIndex:a,values:r,validationErrors:i,currentQuestions:p,pages:c,onChange:mt,onBack:pt,onNext:lt,onSubmit:Z,progressPercentage:f,totalQuestionsCount:d,answeredQuestionsCount:x,isComplete:y,submitting:S,submitError:g,submitData:v}}function ut({options:e}={}){u.setEnabled(e?.debug??!1);let{survey:t,session:r,fetching:n,fetchError:i}=Se({instanceId:e?.instanceId,language:e?.language,placeholders:e?.placeholders}),{currentPageIndex:o,values:a,validationErrors:s,currentQuestions:c,onBack:m,onNext:p,onSubmit:l,onChange:v,progressPercentage:S,submitting:g,submitError:f,submitData:d}=st({survey:t,session:r}),x=(0,at.useCallback)(y=>{y.type==="NEXT"&&t&&o===t.pages.length-1&&(y={type:"SUBMIT"}),u.info(`Action dispatched: ${y.type}`,y);try{switch(y.type){case"NEXT":p();break;case"PREVIOUS":m();break;case"SUBMIT":l();break;case"CHANGE":v(y.payload.questionId,y.payload.value);break;default:break}}catch(k){u.error(`Error executing action: ${y.type}`,k)}},[p,m,l,v,t,o]);return{surveyQueryResults:{data:t,error:i,isLoading:n},submitSurveyResults:{data:d,error:f,isLoading:g},state:{currentPageIndex:o,currentQuestions:c,values:a,validationErrors:s,progressPercentage:S},onAction:x}}0&&(module.exports={useSurveySDK});
1
+ "use strict";var g4=Object.create;var q=Object.defineProperty;var u4=Object.getOwnPropertyDescriptor;var p4=Object.getOwnPropertyNames;var M4=Object.getPrototypeOf,x4=Object.prototype.hasOwnProperty;var L4=(c,t)=>{for(var a in t)q(c,a,{get:t[a],enumerable:!0})},w1=(c,t,a,l)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of p4(t))!x4.call(c,i)&&i!==a&&q(c,i,{get:()=>t[i],enumerable:!(l=u4(t,i))||l.enumerable});return c};var X=(c,t,a)=>(a=c!=null?g4(M4(c)):{},w1(t||!c||!c.__esModule?q(a,"default",{value:c,enumerable:!0}):a,c)),m4=c=>w1(q({},"__esModule",{value:!0}),c);var G4={};L4(G4,{CsatEmojiMapping:()=>n4,CsatEmojiSet:()=>H,CsatStarIcons:()=>v4,getEmojiForIndex:()=>o4,useSurveySDK:()=>j2});module.exports=m4(G4);var _2=require("react");var $1=require("react"),c2=require("@tanstack/react-query");var F1=require("@tanstack/react-query");var K=!1,C4={debug:"background: #7f8c8d; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",info:"background: #2980b9; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",warn:"background: #f1c40f; color: #000; padding: 2px 5px; border-radius: 3px; font-weight: bold;",error:"background: #e74c3c; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",success:"background: #2ecc71; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",perf:"background: #9b59b6; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",analytics:"background: #e20074; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;"};function b(c,t,a){if(!K&&c!=="analytics")return;let l=new Date().toLocaleTimeString(),i=`%c[SDK:${c.toUpperCase()}]`,r=C4[c];a!==void 0?console.log(`[${l}] ${i}`,r,t,a):console.log(`[${l}] ${i}`,r,t)}var M={setEnabled:c=>{K=c},isEnabled:()=>K,debug:(c,t)=>b("debug",c,t),info:(c,t)=>b("info",c,t),warn:(c,t)=>b("warn",c,t),error:(c,t)=>b("error",c,t),success:(c,t)=>b("success",c,t),analytics:(c,t)=>b("analytics",c,t),perf:c=>{b("perf",`${c.apiName} completed in ${c.durationMs.toFixed(2)}ms | Status: ${c.status}`,c)}};var N=new F1.QueryClient({defaultOptions:{queries:{staleTime:1/0,refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchInterval:!1,retryDelay:5e3,retry:(c,t)=>{if(c>=3)return M.error("Query failed permanently after 3 attempts. Stopping retries.",t),!1;if(t instanceof Error){let a=t.message;if(a.includes("400")||a.includes("401")||a.includes("403")||a.includes("404")||a.includes("422"))return M.error(`Query failed permanently due to client error (${a}). Skipping retry.`,t),!1}return M.warn(`Query failed. Retrying attempt ${c+1}/3...`,t),!0}},mutations:{networkMode:"always",retryDelay:5e3,retry:(c,t)=>{if(c>=3)return M.error("Mutation failed permanently after 3 attempts. Stopping retries.",t),!1;if(t instanceof Error){let a=t.message;if(a.includes("400")||a.includes("401")||a.includes("403")||a.includes("422"))return M.error("Mutation failed permanently due to validation/client error. Skipping retry.",t),!1}return M.warn(`Mutation failed. Retrying attempt ${c+1}/3...`,t),!0}}}});var B1="https://custom-p0.feedbook.me/api/feedback/survey/cfm",H1="eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJBY2Nlc3MgVG9rZW4gR2VuZXJhdGVkIEJ5IFNwcmlua2xyIiwic3VydmV5SWQiOiI2YTJlNWM2NDFiOGRiMmY5MDQ2Nzg4ODUiLCJpc3MiOiJTUFJJTktMUiIsInR5cCI6IkpXVCIsInN1cnZleU1vZGUiOiJTVEFOREFSRCIsInN1cnZleUF1dGhlbnRpY2F0aW9uU3RhdGUiOiJOT1RfUkVRVUlSRUQiLCJkaXN0cmlidXRpb25FbnRpdHlJZCI6IjZhMmU1ZDEzNDRjYTkzZjc3YTVlMzcyNyIsImF1ZCI6IlNQUklOS0xSIiwibmJmIjoxNzgxNDIyMTc5LCJzY29wZSI6WyJSRUFEIiwiV1JJVEUiXSwic3RhdGljU3VydmV5IjoidHJ1ZSIsInN1cnZleVJlc3BvbmRlclNuVHlwZSI6IkVYVEVSTkFMX0FQUExJQ0FUSU9OIiwic3VydmV5TGFuZ3VhZ2UiOiJlbiIsInBhcnRuZXJJZCI6OTAwNCwidG9rZW5UeXBlIjoiQUNDRVNTIiwiYXV0aFR5cGUiOiJTVVJWRVlfUkVTUE9OU0UiLCJpYXQiOjE3ODE0MjMzNzksImp0aSI6InNwcmlua2xyIn0.B4ffi1szwM_xQKXTlr0kQc9mVOS4qVbB5e6ir4NFuCoOmNmsl3PB1QeFJ5jPaQ42s0KTpbufPam9ja0Z84CJ620l2WtuS1RModEv7ZtuMNLWOixzRxZMduC5-V7WV85H6gr1e-HzX7wgqrxTk2Z9iTr-8AVuczlwScarCfqLhA-JE_EXkFScHoehmH7QB5q5-BfcxU32iQNYOk5NyeEHGAAWkkyiGPdrbE27njPnhTunB3kKgCBvHHLq0KmgoN9x_KnrB53O_0Xai419TT5vkBWlu5a_uotZckX014eQpxYH02w_LeOF8iWEKYe6R9ge-6DSbelaJSt6U6O8Fq-aXw";function f4(c){return`${B1}?instanceId=${encodeURIComponent(c)}&draftPreview=false`}function V1(c){let t=typeof c=="string"&&c.trim().length>0?c.trim():H1;return f4(t)}var w4={en:"English",hi:"Hindi",de:"Deutsch",es:"Espa\xF1ol",fr:"Fran\xE7ais",bn:"Bengali",gu:"Gujarati",it:"Italiano",ja:"\u65E5\u672C\u8A9E",ko:"\uD55C\uAD6D\uC5B4",mr:"Marathi",pa:"Punjabi",ta:"Tamil",te:"Telugu",ur:"Urdu",zh:"\u4E2D\u6587"};function F4(c){let t=c.toLowerCase().trim();return w4[t]||c.toUpperCase()}function S1(c){let t=c.cfmSurveyDTO,a=new Set,l=t?.baseLanguage??"en";return a.add(l),t&&Array.isArray(t.surveyPages)&&t.surveyPages.forEach(i=>{(i.questionHolders??[]).forEach(r=>{let e=r.question;e&&e.translations&&Object.keys(e.translations).forEach(h=>{a.add(h)})})}),Array.from(a).map(i=>({code:i,name:F4(i)}))}var B4=new Set(["CFM_MATRIX","CSAT_MATRIX"]);function Y(c){let t=(c??"").toUpperCase();return t==="TEXTFIELD"?"text":t==="NPS_SCALE"||t==="RATING"||t==="SCALE"?"rating":B4.has(t)?"matrix":t==="RATING_MATRIX"?"rating_matrix":t==="SLIDER_MATRIX"?"slider_matrix":t==="TEXT_AND_MEDIA"?"text_and_media":t==="FILE_UPLOAD"?"file_upload":"radio"}function $(c,t,a){if(c.toUpperCase()==="NPS_SCALE")return"nps";let i=t.find(e=>e.key==="SCALE_TYPE")?.value?.[0]?.toUpperCase();return t.find(e=>e.key==="INPUT_TYPE")?.value?.[0]?.toUpperCase()==="SLIDER"?"slider":i==="CSAT"||i==="STAR"||i==="EMOJI"||a>0&&a<=5?"csat":"nps"}function Z(c=[],t){let a=c.filter(l=>l.additional?.isHintText&&!l.hidden).map(l=>t&&l.translations?.[t]?.answerText||l.answerText||"").filter(Boolean);return a.length>=3?{minLabel:a[0],midLabel:a[1],maxLabel:a[2]}:{minLabel:a[0],maxLabel:a[1]}}var H4=["#e2001a","#e4251b","#ec610a","#f18b00","#f7b200","#fcd900","#d2dc00","#9fca00","#6bb300","#339a00","#008000"];function R(c){return H4[c]??"#e20074"}function T(c,t,a){if(t==="text")return[];let i=(c.answerDetails??[]).filter(r=>!r.hidden&&!r.additional?.isHintText);return i.length>0?i.map((r,e)=>{let h=a&&r.translations?.[a]?.answerText||r.answerText||"",s=r.answerText??"",v=Number(s),o=Number.isFinite(v)&&s.trim()!==""?v:s,n={id:r.id??String(e),label:h,value:o};return t==="rating"&&typeof o=="number"&&(n.color=R(o)),n}):t==="rating"?Array.from({length:11},(r,e)=>({id:String(e),label:String(e),value:e,color:R(e)})):[]}function c1(c){let t=c.questionConfigs??[],a=c.additional??{},l=t.find(n=>n.key==="SLIDER_MIN")?.value?.[0]??t.find(n=>n.key==="MIN_VALUE")?.value?.[0]??a.sliderMin,i=t.find(n=>n.key==="SLIDER_MAX")?.value?.[0]??t.find(n=>n.key==="MAX_VALUE")?.value?.[0]??a.sliderMax,r=t.find(n=>n.key==="SLIDER_STEP")?.value?.[0]??a.sliderStep,e=t.find(n=>n.key==="DEFAULT_VALUE")?.value?.[0]??a.defaultValue,h=l!==void 0?Number(l):0,s=i!==void 0?Number(i):10,v=r!==void 0&&Number(r)>0?Number(r):1,o=e!==void 0?Number(e):void 0;return{min:Number.isFinite(h)?h:0,max:Number.isFinite(s)?s:10,step:Number.isFinite(v)?v:1,...o!==void 0&&Number.isFinite(o)?{defaultValue:o}:{}}}function A1(c,t,a,l){let i=(c.answerDetails??[]).filter(d=>!d.hidden&&!d.additional?.isHintText),r=$(c.answerType??"",a,i.length);if(r==="csat"){let{minLabel:d,maxLabel:g}=Z(c.answerDetails,l),z=T(c,"radio",l),L=a.map(m=>m.value?.[0]||"").join(" ").toUpperCase(),u=(c.dataSubType||"").toUpperCase(),p=`${L} ${u}`,x=a.find(m=>m.key==="BUTTON_TYPE")?.value?.[0]?.toLowerCase()||void 0;x||(p.includes("EMOJI")||p.includes("CSAT")||p.includes("SMILEY")||p.includes("FACE")?x="emoji":p.includes("STAR")?x="star":p.includes("GRAPHIC")||p.includes("SLIDER")?x="graphics":p.includes("DROP")?x="dropdown":p.includes("SELECT")?x="selectbox":p.includes("RADIO")?x="radio":p.includes("NUMBER")&&(x="numbered"));let f=a.find(m=>m.key==="ENABLE_NON_APPLICABLE")?.value?.[0]==="true",V=a.find(m=>m.key.includes("REVERSE"))?.value?.[0]?.toLowerCase()==="true"||c.additional?.reverseScaleOrder===!0||c.additional?.reverseScale===!0,P=a.find(m=>m.key==="LABEL_POSITIONING")?.value?.[0]?.toLowerCase()||void 0;if(V){z=[...z].reverse();let m=d;d=g,g=m}return f&&z.push({id:"na",label:"N/A",value:null}),{...t,type:"csat",options:z,...d?{minLabel:d}:{},...g?{maxLabel:g}:{},...x?{buttonType:x}:{},...f?{hasNotApplicable:f}:{},...V?{reverseScaleOrder:V}:{},...P?{labelPosition:P}:{}}}if(r==="slider"){let{minLabel:d,maxLabel:g}=Z(c.answerDetails,l),z=c1(c);return{...t,type:"slider",...z,...d?{minLabel:d}:{},...g?{maxLabel:g}:{}}}if(r==="rating_scale"){let{minLabel:d,midLabel:g,maxLabel:z}=Z(c.answerDetails,l),L=T(c,"radio",l),u=a.find(f=>f.key.includes("REVERSE"))?.value?.[0]?.toLowerCase()==="true"||c.additional?.reverseScaleOrder===!0||c.additional?.reverseScale===!0;if(u){L=[...L].reverse();let f=d;d=z,z=f}let p;return g&&L.length>0&&(p=(L.length-1)/2),{...t,type:"rating_scale",options:L,...d?{minLabel:d}:{},...g?{midLabel:g}:{},...p!==void 0?{midLabelIndex:p}:{},...z?{maxLabel:z}:{},...u?{reverseScaleOrder:u}:{}}}let{minLabel:e,midLabel:h,maxLabel:s}=Z(c.answerDetails,l),v=T(c,"rating",l),o=a.find(d=>d.key.includes("REVERSE"))?.value?.[0]?.toLowerCase()==="true"||c.additional?.reverseScaleOrder===!0||c.additional?.reverseScale===!0;if(o){v=[...v].reverse();let d=e;e=s,s=d}let n;return h&&(n=v.length===11?o?2.5:7.5:(v.length-1)/2),{...t,type:"rating",options:v,...e?{minLabel:e}:{},...h?{midLabel:h}:{},...n!==void 0?{midLabelIndex:n}:{},...s?{maxLabel:s}:{},...o?{reverseScaleOrder:o}:{}}}function y1(c,t,a){let l=T(c,"radio",a);return{...t,type:"radio",options:l}}function b1(c,t,a,l){let r=a.find(v=>v.key==="CONTENT_TYPE")?.childConfigs?.find(v=>v.key==="MAX_CHARACTER_COUNT"),e=r?.value?.[0]?Number(r.value[0]):void 0,h=c.answerDetails?.[0],s=h?l&&h.translations?.[l]?.answerText||h.answerText:void 0;return{...t,type:"text",...e!==void 0?{maxCharacterCount:e}:{},...s?{placeholder:s}:{}}}function R1(c,t,a){let l=c;if(a&&l.answerDetails&&l.answerDetails.length>=2){let r=t&&l.answerDetails[0].translations?.[t]?.answerText||l.answerDetails[0].answerText||"";if(r)return r}let i=t&&c.translations?.[t]?.questionText||c.questionText||c.answerText||"";return a&&i.includes(":")?i.split(":")[0].trim():i}function V4(c,t,a){let l=c;if(a&&l.answerDetails&&l.answerDetails.length>=2){let e=t&&l.answerDetails[1].translations?.[t]?.answerText||l.answerDetails[1].answerText||"";if(e)return e}let i=t&&c.translations?.[t]?.description||c.description||c.additional?.rightLabel||c.additional?.rightStatement||c.additional?.rightText;if(typeof i=="string"&&i.trim()!=="")return i;let r=t&&c.translations?.[t]?.questionText||c.questionText||c.answerText||"";if(a&&r.includes(":"))return r.split(":").slice(1).join(":").trim()}function O(c,t,a){let l=(c.matrixRowQuestions?.length??0)>0?c.matrixRowQuestions:c.childSurveyQuestions;return l&&l.length>0?l.filter(i=>i.id).map(i=>({id:i.id,text:R1(i,t,a),rightText:V4(i,t,a)})):(c.answerDetails??[]).filter(i=>!i.hidden&&!i.additional?.isHintText).map((i,r)=>({id:`row_${r}`,text:t&&i.translations?.[t]?.answerText||i.answerText||"",rightText:i.additional?.rightLabel||i.additional?.rightStatement||i.additional?.rightText}))}function t1(c,t,a){return c.matrixColumnQuestions&&c.matrixColumnQuestions.length>0?c.matrixColumnQuestions.filter(l=>l.id).map(l=>{let i=a&&l.translations?.[a]?.answerText||l.answerText||R1(l,a),r=l.answerText??i,e=Number(r),h=Number.isFinite(e)&&String(r).trim()!==""?e:r,s={id:l.id,label:i,value:h};return t&&typeof h=="number"&&(s.color=R(h)),s}):(c.answerDetails??[]).filter(l=>!l.hidden&&!l.additional?.isHintText).map((l,i)=>{let r=a&&l.translations?.[a]?.answerText||l.answerText||"",e=Number(r),h=Number.isFinite(e)&&r.trim()!==""?e:r,s={id:`col_${i}`,label:r,value:h};return t&&typeof h=="number"&&(s.color=R(h)),s})}function a1(c,t){let a=Number(c.additional?.sliderMin??0),l=Number(c.additional?.sliderMax??10),i=Number(c.additional?.sliderStep??1);return O(c,t).map(e=>({...e,min:Number.isFinite(a)?a:0,max:Number.isFinite(l)?l:10,step:Number.isFinite(i)&&i>0?i:1}))}function T1(c,t){let a=(c.answerType??"").toUpperCase(),l=a==="RATING_MATRIX"?"RATING_MATRIX":a==="CSAT_MATRIX"?"CSAT_MATRIX":"CFM_MATRIX",i=c.questionConfigs??[],r=i.find(o=>o.key==="MATRIX_TYPE"),e=r?.value?.[0]?.toLowerCase(),h=e==="bipolar",s=O(c,t,h),v=t1(c,l==="RATING_MATRIX",t);return{apiType:a,subType:l,configs:i,matrixTypeConfig:r,matrixType:e,isBipolar:h,rows:s,columns:v}}function k1(c,t){let{rows:a,columns:l}=t,i=l.map(o=>Number(o.value)).filter(o=>!isNaN(o)),r=i.length>0?Math.min(...i):1,e=i.length>0?Math.max(...i):l.length,h=1,s=l.length,v=a.map(o=>({...o,min:r,max:e,step:h}));return{...c,type:"slider_matrix",rows:v,ticks:s}}function P1(c,t,a,l){let{subType:i,configs:r,rows:e}=a,h=[...a.columns],s=r.map(u=>u.value?.[0]||"").join(" ").toUpperCase(),v=(c.dataSubType||"").toUpperCase(),o=`${s} ${v}`,n;o.includes("EMOJI")||o.includes("CSAT")||o.includes("SMILEY")||o.includes("FACE")?n="emoji":o.includes("STAR")?n="star":o.includes("GRAPHIC")||o.includes("SLIDER")?n="graphics":o.includes("DROP")?n="dropdown":o.includes("SELECT")?n="selectbox":o.includes("RADIO")?n="radio":o.includes("NUMBER")&&(n="numbered");let C=r.find(u=>u.key==="NOT_APPLICABLE_OPTIONS")?.value?.[0]==="true"||r.find(u=>u.key==="ENABLE_NON_APPLICABLE")?.value?.[0]==="true",d=r.find(u=>u.key.includes("REVERSE"))?.value?.[0]?.toLowerCase()==="true"||c.additional?.reverseScaleOrder===!0||c.additional?.reverseScale===!0,g=(c.answerDetails??[]).filter(u=>u.additional?.isHintText&&!u.hidden).map(u=>l&&u.translations?.[l]?.answerText||u.answerText||"").filter(Boolean);d&&(h=[...h].reverse(),g=[...g].reverse()),C&&h.push({id:"na",label:"N/A",value:null});let z=JSON.stringify(r).toUpperCase(),L="standard";return z.includes("CAROUSEL")?L="carousel":z.includes("DROPDOWN")&&(L="dropdown"),{...t,type:"matrix",subType:i,rows:e,columns:h,...n?{buttonType:n}:{},...C?{hasNotApplicable:C}:{},...d?{reverseScaleOrder:d}:{},...g.length>0?{labels:g}:{},...L!=="standard"?{matrixFormat:L}:{}}}function Z1(c,t,a,l){let{subType:i,configs:r,matrixType:e,rows:h}=a,s=[...a.columns],v=JSON.stringify(r).toUpperCase(),o="standard";v.includes("CAROUSEL")?o="carousel":v.includes("DROPDOWN")&&(o="dropdown"),console.log("CFM_MATRIX Configs:",JSON.stringify(r,null,2)),console.log("Detected matrixFormat:",o);let C=r.some(x=>x.key.includes("MULTI")||x.value?.[0]?.toUpperCase().includes("MULTI")||x.key.includes("ANSWER")&&x.value?.[0]?.toUpperCase().includes("MULTI")||x.key.includes("SELECT")&&x.value?.[0]?.toUpperCase().includes("MULTI"))?"multiple":"single",d=r.find(x=>x.key==="TRANSPOSE_TABLE")?.value?.[0]?.toLowerCase()==="true",g=r.find(x=>x.key==="REPEAT_SCALE")?.value?.[0]?.toLowerCase()==="true",z=r.find(x=>x.key==="NOT_APPLICABLE_OPTIONS")?.value?.[0]==="true"||r.find(x=>x.key==="ENABLE_NON_APPLICABLE")?.value?.[0]==="true",L=z?!1:d;z&&s.push({id:"na",label:"N/A",value:null});let u=r.find(x=>x.key==="ENABLE_SCALE")?.value?.[0]?.toLowerCase()!=="false",p;return e==="bipolar"&&(p=(c.answerDetails??[]).filter(x=>x.additional?.isHintText&&!x.hidden).map(x=>l&&x.translations?.[l]?.answerText||x.answerText||"").filter(Boolean)),{...t,type:"matrix",subType:i,rows:h,columns:s,...e?{matrixType:e}:{},matrixFormat:o,...C?{answerType:C}:{},...L?{transposeTable:L}:{},...g?{repeatScale:g}:{},...z?{hasNotApplicable:z}:{},...p&&p.length>0?{labels:p}:{},enableScale:u}}function E1(c,t,a){let l=T1(c,a);return l.matrixTypeConfig?.childConfigs?.find(e=>e.key==="MATRIX_FORMAT")?.value?.[0]?.toUpperCase()==="SLIDER"?k1(t,l):l.subType==="CSAT_MATRIX"||l.subType==="RATING_MATRIX"?P1(c,t,l,a):Z1(c,t,l,a)}function D1(c,t,a){let l=c.questionConfigs||[],i=l.find(m=>m.key==="SLIDER_TICKS_AND_VALUES"),r=i?.childConfigs||[],e=r.find(m=>m.key==="TICK_START")?.value?.[0],h=r.find(m=>m.key==="TICK_END")?.value?.[0],s=r.find(m=>m.key==="STEP_SIZE")?.value?.[0],v=i?.value?.[0],o=e!==void 0?Number(e):0,n=h!==void 0?Number(h):10,C=s!==void 0?Number(s):1,d=v!==void 0?Number(v):void 0,g={...c,additional:{...c.additional,sliderMin:o,sliderMax:n,sliderStep:C}},z=a1(g,a),L=(c.answerDetails||[]).filter(m=>m.additional?.isHintText).map(m=>a&&m.translations?.[a]?.answerText||m.answerText||"").filter(Boolean),u=m=>{for(let S of m){let A=l.find(y=>y.key===S)||r.find(y=>y.key===S);if(A&&A.value!==void 0&&A.value!==null&&A.value.length>0)return A.value[0]?.toString().toLowerCase()==="true"}return!1},p=l.find(m=>m.key==="SCALE_TYPE"||m.key==="VIEW_VARIANT")?.value?.[0]?.toUpperCase().includes("GRAPHIC"),x=u(["ENABLE_INPUT_BOX","SHOW_INPUT_BOX","INPUT_BOX","ENABLE_INPUT"]),f=u(["SHOW_VALUE","DISPLAY_VALUES"]),V=u(["NOT_APPLICABLE","NOT_APPLICABLE_OPTIONS"]),P=(c.answerDetails||[]).filter(m=>!m.additional?.isHintText&&!m.hidden).map(m=>m.translations?.[a||""]?.answerText||m.answerText||""),B;if(d!==void 0&&d>1){B=[];let m=(n-o)/(d-1);for(let S=0;S<d;S++){let A=o+S*m,y=Number(A.toFixed(2)),z4=P[S]||y.toString(),d4=`hsl(${Math.round(S/(d-1)*120)}, 90%, 40%)`;B.push({value:y,label:z4,color:d4})}}return{...t,type:"slider_matrix",rows:z,...L.length>0?{labels:L}:{},...d!==void 0&&Number.isFinite(d)?{ticks:d}:{},...B?{tickValues:B}:{},enableInputBox:x,displayValues:f,enableNotApplicable:V,...p?{sliderType:"graphics"}:{}}}function l1(c){let t=c.additional??{},a=t.mediaUrl??t.previewUrl,l=t.mediaMimeType,i=t.title,r=c.questionContainerAssets;if(Array.isArray(r)&&r.length>0){let e=r[0];(e.source||e.previewImageUrl)&&(a=e.source||e.previewImageUrl),e.type&&(e.type==="PHOTO"||e.type==="IMAGE"?l="image/*":e.type==="VIDEO"?l="video/*":l=e.type)}return{mediaUrl:a,mediaMimeType:l,mediaTitle:i}}function I1(c,t){let{mediaUrl:a,mediaMimeType:l,mediaTitle:i}=l1(c),r=c.questionConfigs||[],e=r.find(n=>n.key==="TEXT_AND_MEDIA_ALIGNMENT"),h=r.find(n=>n.key==="TEXT_AND_MEDIA_SIZE"),s=e?.value?.[0],v=h?.value?.[0]?Number(h.value[0]):void 0,o=t.text;if(Array.isArray(c.answerDetails)){let n=c.answerDetails.find(C=>C.additional?.textAndMediaFieldType==="HEADER");n&&n.answerText&&(o=n.answerText)}return{...t,text:o,type:"text_and_media",...a?{mediaUrl:a}:{},...l?{mediaMimeType:l}:{},...i?{mediaTitle:i}:{},...s?{mediaAlignment:s}:{},...v?{mediaSize:v}:{}}}function U1(c,t,a){let l=c.questionConfigs||[],i=c.answerDetails?.find(z=>z.additional?.fieldType==="UPLOAD_MESSAGE"),r=a&&i?.translations?.[a]?.answerText||i?.answerText||"",h=l.find(z=>z.key==="SUPPORTED_FILE_FORMAT")?.value?.map(z=>z.toUpperCase().replace(/^\./,""))||[],s=l.find(z=>z.key==="MAX_FILE_COUNT"),v=s?.value?.[0]?Number(s.value[0]):void 0,o=l.find(z=>z.key==="FILE_SIZE_LIMIT"),n=o?.childConfigs?.find(z=>z.key==="SIZE_LIMIT_ID")?.value?.[0],C=o?.childConfigs?.find(z=>z.key==="SIZE_FORMAT_ID")?.value?.[0],d=n?Number(n):void 0,g=C==="PER_FILE"||C==="IN_TOTAL"?C:void 0;return{...t,type:"file_upload",...r?{uploadMessage:r}:{},...h.length>0?{supportedFileFormats:h}:{},...v!==void 0?{maxFileCount:v}:{},...d!==void 0?{fileSizeLimit:d}:{},...g?{fileSizeLimitType:g}:{}}}function S4(c,t,a,l){let i=t.find(u=>u.key==="REQUIRED")?.value?.[0]==="true",r=t.find(u=>u.key==="REQUIRED_ERROR_MESSAGE"),e=r?.value?.[0];a&&r?.translations?.[a]?.value?.[0]&&(e=r.translations[a].value[0]);let h=a&&c.translations?.[a]?.questionRichText||a&&c.translations?.[a]?.questionText||c.questionRichText||c.questionText||"";l&&(h=h.replace(/\{\{(\w+)\}\}/g,(u,p)=>l[p]!==void 0?l[p]:u));let s=a&&c.translations?.[a]?.descriptionRichText||a&&c.translations?.[a]?.description||c.descriptionRichText||c.description||(typeof c.additional?.descriptionRichText=="string"?c.additional.descriptionRichText:"")||(typeof c.additional?.description=="string"?c.additional.description:"")||"";if(!s){let u=t.find(p=>p.key.includes("DESCRIPTION"));s=u?.value?.[0]||"",a&&u?.translations?.[a]?.valueRichText?.[0]?s=u.translations[a].valueRichText[0]:a&&u?.translations?.[a]?.value?.[0]&&(s=u.translations[a].value[0])}s&&l&&(s=s.replace(/\{\{(\w+)\}\}/g,(u,p)=>l[p]!==void 0?l[p]:u));let o=c.questionContainerAssets?.[0],n=o?.source||o?.mediaUrl||o?.previewImageUrl,C=o?.mediaMimeType,g=t.find(u=>u.key==="QUESTION_CONTAINER_MEDIA_ALIGNMENT")?.value?.[0],z=t.find(u=>u.key==="TEXT_AND_MEDIA_SIZE"),L=z?.value?.[0]?Number(z.value[0]):void 0;return{id:c.id??"",text:h,...s?{description:s}:{},required:i,...e?{requiredErrorMessage:e}:{},...c.questionNumber!==void 0?{questionNumber:c.questionNumber}:{},...n?{containerMediaUrl:n}:{},...C?{containerMediaMimeType:C}:{},...g?{containerMediaAlignment:g}:{},...L!==void 0?{containerMediaSize:L}:{}}}function q1(c,t,a){let l=c.questionConfigs??[],i=S4(c,l,t,a);switch(Y(c.answerType)){case"rating":return A1(c,i,l,t);case"text":return b1(c,i,l,t);case"matrix":case"rating_matrix":return E1(c,i,t);case"slider_matrix":return D1(c,i,t);case"text_and_media":return I1(c,i);case"file_upload":return U1(c,i,t);default:return y1(c,i,t)}}function N1(c,t,a){let l=c.cfmSurveyDTO;return!l||!Array.isArray(l.surveyPages)?[]:l.surveyPages.map((i,r)=>{let e=(i.questionHolders??[]).map(h=>h.question).filter(h=>!!h).map(h=>q1(h,t,a));return{id:`page_${r}`,title:`Page ${r+1}`,questions:e}})}function O1(c){return c.instanceId?.trim()?{instanceId:c.instanceId.trim(),language:c.surveyLanguage??c.cfmSurveyDTO?.baseLanguage??"en"}:null}function A4(c,t){return t??c.surveyLanguage??c.cfmSurveyDTO?.baseLanguage??"en"}function G1(c,t,a){let l=A4(c,t),i=S1(c),r=N1(c,l,a);return{id:c.cfmSurveyDTO?.id??"",language:l,languages:i,pages:r}}function Q1(c){M.info("Starting survey layout API fetch...",{url:c})}function r1(c,t,a){M.perf({apiName:"GET Survey Layout",durationMs:c,status:t,url:a,success:!1})}function W1(c,t,a,l){M.perf({apiName:"GET Survey Layout",durationMs:c,status:t,url:a,payloadSize:l,success:!0})}function _1(c){M.success("Raw survey layout fetched successfully",c)}function j1(c){M.error("Failed to fetch raw survey layout",c)}function J1(){M.warn("Cannot map survey: apiResponse is null or undefined")}function X1(c){M.success("Mapped survey layout successfully",c)}function K1(c){M.error("Failed to map survey layout",c)}function F(c){if(c.eventName==="survey_session_summary"){let{completed:t,totalDurationMs:a,maxVisitedPageIndex:l,totalQuestionsCount:i,answeredQuestionsCount:r,skippedQuestionsCount:e,skippedQuestionIds:h,validationErrorsCount:s,backtrackCount:v}=c.metadata;M.analytics(`Event: ${c.eventName} - SESSION SUMMARY TABLE:`);let o=[{Metric:"Completion Status",Value:t?"COMPLETED \u2705":"ABANDONED \u274C"},{Metric:"Total Time Spent",Value:`${(a/1e3).toFixed(2)} seconds`},{Metric:"Max Page Index Reached",Value:`${l}`},{Metric:"Total Questions",Value:i},{Metric:"Answered Questions",Value:r},{Metric:"Skipped Optional Questions",Value:e},{Metric:"Skipped Question IDs",Value:h.join(", ")||"None"},{Metric:"Validation Errors Triggered",Value:s},{Metric:"Backtrack Count",Value:v},{Metric:"Validation Error History",Value:c.metadata.validationHistory?.map(n=>`[Page ${n.pageIndex}] Attempt ${n.attemptNumber}: ${Object.keys(n.errors).join(", ")}`).join(" | ")||"NO Validation Erros Occurred"}];console.table(o)}else M.analytics(`Event: ${c.eventName}`,c.metadata)}function Y1(c,t,a,l){F({eventName:"survey_fetch_latency",metadata:{durationMs:c,status:t,success:!0,url:a,payloadSize:l}})}function i1(c,t,a){F({eventName:"api_error",metadata:{apiName:"GET Survey Layout",status:c,url:t,errorMessage:a}})}async function y4(c){let t=performance.now();Q1(c);try{let a=await fetch(c,{method:"GET",headers:{Accept:"application/json"},cache:"force-cache"}),l=performance.now()-t;if(!a.ok)throw r1(l,a.status,c),i1(a.status,c,`Survey fetch failed (${a.status})`),new Error(`Survey fetch failed (${a.status})`);let i=await a.json(),r=JSON.stringify(i),h=`${(new Blob([r]).size/1024).toFixed(2)} KB`;return W1(l,a.status,c,h),Y1(l,a.status,c,h),_1(i),i}catch(a){let l=performance.now()-t;throw r1(l,"FAILED",c),i1("FAILED",c,a?.message||String(a)),j1(a),a}}function t2(c){let t=V1(c?.instanceId),a=c?.language,l=c?.placeholders,{data:i,error:r,isLoading:e,isSuccess:h}=(0,c2.useQuery)({queryKey:["survey",t],queryFn:()=>y4(t),enabled:!!t},N),s=(0,$1.useMemo)(()=>{if(!h)return{survey:null,session:null};if(!i)return J1(),{survey:null,session:null};try{let v=G1(i,a,l),o=O1(i),n=o?{...o,language:v.language}:null;return X1(v),{survey:v,session:n}}catch(v){return K1(v),{survey:null,session:null}}},[i,h,a]);return{survey:s.survey,session:s.session,fetching:e,fetchError:r}}var D=require("react");var u2=require("react"),p2=require("@tanstack/react-query");function a2(c,t){M.info("Starting survey response HTTP POST...",{url:c,requestBody:t})}function l2(c,t){M.warn(c,t)}function r2(c,t,a,l,i){M.perf({apiName:"POST Submit Response",durationMs:c,status:t,url:a,requestSize:l,responseSize:i,success:!0})}function e1(c,t,a,l){M.perf({apiName:"POST Submit Response",durationMs:c,status:t,url:a,requestSize:l,success:!1})}function i2(c){M.success("Survey response submitted successfully",{responseId:c})}function e2(c,t){M.error(c,t)}function h2(c){M.debug("Resolved raw inputs to submit schema:",c)}function s2(c){M.debug("Constructed JSON request body:",c)}function o2(c){M.error("Failed to execute submit callback",c)}function n2(c,t,a,l,i){F({eventName:"survey_submit_latency",metadata:{durationMs:c,status:t,success:!0,url:a,requestSize:l,responseSize:i}})}function h1(c,t,a){F({eventName:"api_error",metadata:{apiName:"POST Submit Response",status:c,url:t,errorMessage:a}})}var v2="https://custom-p0.feedbook.me/api/feedback/survey/responseV2";function z2(c,t="en"){let a=new URLSearchParams({instanceId:c,surveySubmitted:"true",surveyLanguage:t});return`${v2}?${a.toString()}`}function d2(c,t){let a={},l={},i={};for(let r of t)r.type==="file_upload"&&(i[r.id]=[]);for(let r of t){let e=c[r.id];if(e!=null)switch(r.type){case"text_and_media":break;case"file_upload":{Array.isArray(e)&&(i[r.id]=e);break}case"matrix":case"rating_matrix":case"slider_matrix":{if(typeof e=="object"&&!Array.isArray(e)){let h=e;for(let[s,v]of Object.entries(h))if(v!=null){let o=`${r.id}_${s}`;a[o]=[String(v)]}}break}default:(typeof e=="string"||typeof e=="number")&&(a[r.id]=[String(e)]);break}}return{questionToAnswers:a,quesIdVsAttachmentDetails:i,optionLevelAnswers:l,conjointTasks:[]}}function b4(c){return typeof c=="object"&&c!==null&&"instanceId"in c&&"answers"in c}function g2(c,t,a){if(b4(c))return{...c,surveyLanguage:c.surveyLanguage??t?.language??"en",questions:c.questions??a?.pages.flatMap(l=>l.questions)??[]};if(!t?.instanceId)throw new Error("Survey session not ready. Fetch survey before submitting.");return{answers:c,instanceId:t.instanceId,surveyLanguage:t.language??"en",questions:a?.pages.flatMap(l=>l.questions)??[]}}async function R4({url:c,requestBody:t}){let a=performance.now(),i=`${(new Blob([JSON.stringify(t)]).size/1024).toFixed(2)} KB`;a2(c,t);try{let r=await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),e=await r.json().catch(n=>(l2("Failed to parse JSON response during submission",n),null)),h=performance.now()-a,v=`${((e?new Blob([JSON.stringify(e)]).size:0)/1024).toFixed(2)} KB`;if(!r.ok)throw e1(h,r.status,c,i),h1(r.status,c,`Submit failed (${r.status}): ${JSON.stringify(e)}`),new Error(`Submit failed (${r.status}): ${JSON.stringify(e)}`);let o=e?.responseId??"";return r2(h,r.status,c,i,v),n2(h,r.status,c,i,v),i2(o),{success:!0,responseId:o}}catch(r){let e=performance.now()-a;throw e1(e,"FAILED",c,i),h1("FAILED",c,r?.message||String(r)),e2("Failed to submit survey response",r),r}}function M2(c,t){let a=(0,p2.useMutation)({mutationFn:({url:i,requestBody:r})=>R4({url:i,requestBody:r})},N);return{submit:(0,u2.useCallback)(async i=>{try{let r=g2(i,c,t);h2(r);let e=r.surveyLanguage??"en",h=d2(r.answers,r.questions??[]);s2(h);let s=z2(r.instanceId,e);return await a.mutateAsync({url:s,requestBody:h})}catch(r){throw o2(r),r}},[c,t,a]),data:a.data??null,loading:a.isPending,error:a.error}}var E=require("react");function x2(c){return c.type==="text_and_media"}function T4(c,t){return c.rows.every(a=>{let l=t[a.id];return l!==void 0&&l!==""})}function s1(c,t){if(x2(c))return!0;let a=t[c.id];switch(c.type){case"matrix":case"rating_matrix":case"slider_matrix":return typeof a!="object"||Array.isArray(a)?!1:T4(c,a);default:return a!==void 0&&a!==""}}function o1(c,t,a){let l={},i=a?.startsWith("de")?"Beantworten Sie bitte diese Frage bevor Sie fortfahren.":"Please answer this question before you proceed.";return c.forEach(r=>{x2(r)||r.required&&!s1(r,t)&&(l[r.id]=r.requiredErrorMessage??i)}),l}function L2(c,t,a){let l={},i="",r=-1;for(let e=0;e<c.length;e++){let h=o1(c[e].questions,t,a);Object.keys(h).length>0&&(l={...l,...h},r===-1&&(r=e,i=Object.keys(h)[0]))}return r!==-1?{errors:l,errorPageIndex:r,firstErrorId:i}:null}function m2(c){return c.type==="text_and_media"}function C2(c){return!c||!Array.isArray(c.pages)?0:c.pages.reduce((t,a)=>{let l=(a.questions??[]).filter(i=>!m2(i));return t+l.length},0)}function f2(c,t,a=0){if(!c||!t||!Array.isArray(c.pages))return 0;let l=0;return c.pages.forEach((i,r)=>{let e=(i.questions??[]).filter(h=>!m2(h));r<a?l+=e.length:e.forEach(h=>{s1(h,t)&&l++})}),l}function w2(c,t){return t<=0?0:Math.min(100,Math.max(0,Math.round(c/t*100)))}function F2({survey:c,values:t,currentPageIndex:a=0}){let[l,i]=(0,E.useState)(0);return(0,E.useEffect)(()=>{a>l&&i(a)},[a,l]),(0,E.useMemo)(()=>{let r=C2(c),e=f2(c,t,l),h=w2(e,r),s=r>0&&e===r;return{totalQuestionsCount:r,answeredQuestionsCount:e,progressPercentage:h,isComplete:s}},[c,t,l])}var B2=require("react");function n1(c){let{currentPageIndex:t,paginationRefs:a}=c;(0,B2.useEffect)(()=>{a.current&&(a.current.pageStartTime=performance.now())},[t,a])}var H2=require("react");function v1(c){let{currentPageIndex:t,paginationRefs:a}=c;(0,H2.useEffect)(()=>{a.current&&t>a.current.maxVisitedPageIndex&&(a.current.maxVisitedPageIndex=t)},[t,a])}var R2=require("react");function V2(c,t){M.info(`Answer changed for question: ${c}`,{value:t})}function k(c,t){M.warn(c,t)}function S2(){M.info("Initiating survey submission...")}function A2(c){M.info(`Navigating back from page index: ${c}`)}function y2(c){M.info(`Navigating next from page index: ${c}`)}function b2(c){M.error("Error encountered during pagination submit trigger",c)}function U(c){return typeof document>"u"?null:document.getElementById(c)||null}function k4(c){return c.closest("main")||c.closest("form")||c.parentElement||c}function G(c,t){try{let l=c[t]?.questions?.[0];l?setTimeout(()=>{try{let i=U(l.id);i?k4(i).scrollIntoView({behavior:"smooth",block:"start"}):window.scrollTo({top:0,behavior:"smooth"})}catch(i){k("Failed to scroll page first question into view",i)}},50):window.scrollTo({top:0,behavior:"smooth"})}catch(a){k("Failed to trigger scroll navigation",a)}}function z1(c){let{currentPageIndex:t,setCurrentPageIndex:a,trackPageTime:l,pages:i,values:r,paginationRefs:e}=c;return(0,R2.useCallback)(()=>{if(t>0){A2(t),l(t);let h=e.current;if(h){h.backtrackCount+=1;let v=t-1,o=i[v]?.questions??[],n={};o.forEach(C=>{n[C.id]=r[C.id]}),h.backtrackSnapshots[v]={fromPageIndex:t,snapshot:n}}let s=t-1;a(s),G(i,s)}},[t,a,l,i,r,e])}var T2=require("react");function d1(c){let{setValues:t,setValidationErrors:a}=c;return(0,T2.useCallback)((l,i)=>{V2(l,i),t(r=>({...r,[l]:i})),a(r=>({...r,[l]:""}))},[t,a])}var D2=require("react");function k2(){M.success("Survey validation passed on submit")}function P2(c){M.warn("Full survey validation failed on submit",{validation:c})}function Q(c){M.error("Failed to run survey validation on submit",c)}function Z2(c){M.warn("Page validation failed",{errors:c})}function E2(c,t){F({eventName:"page_time_spent",metadata:{pageIndex:c,durationMs:t}})}function W(c,t,a){F({eventName:"validation_error",metadata:{pageIndex:c,errors:t,attemptNumber:a}})}function g1(c,t){let{survey:a,pages:l,values:i,currentPageIndex:r,setCurrentPageIndex:e,setValidationErrors:h,trackPageTime:s,trackOptionalSkips:v,checkBacktrackChanges:o,paginationRefs:n}=c,C=l[r],d=C?.questions??[];return(0,D2.useCallback)(()=>{if(!a||!C)return;let g={};try{g=o1(d,i,a.language)}catch(L){Q(L)}let z=n.current;if(z){if(Object.keys(g).length>0){Z2(g);let L=(z.validationAttempt[r]||0)+1;z.validationAttempt[r]=L,z.validationErrorsCount+=1,z.validationHistory.push({pageIndex:r,errors:g,attemptNumber:L}),W(r,g,L),h(g);let u=Object.keys(g)[0];setTimeout(()=>{try{let p=U(u);p&&p.scrollIntoView({behavior:"smooth",block:"center"})}catch(p){k("Failed to scroll validation error element into view",p)}},50);return}h({}),delete z.validationAttempt[r],s(r),v(r),o(r),r<l.length-1?(y2(r),e(L=>L+1),G(l,r+1)):t()}},[a,C,d,i,r,e,h,s,v,o,l,t,n])}var N2=require("react");function I2(c,t,a,l,i,r,e,h,s,v){F({eventName:"survey_session_summary",metadata:{maxVisitedPageIndex:t,totalDurationMs:a,completed:c,totalQuestionsCount:l,answeredQuestionsCount:i,skippedQuestionsCount:r,skippedQuestionIds:e,validationErrorsCount:h,backtrackCount:s,validationHistory:v}})}function U2(c,t){F({eventName:"optional_question_skipped",metadata:{questionId:c,pageIndex:t}})}function q2(c,t,a){F({eventName:"backtrack_revisited",metadata:{fromPageIndex:c,toPageIndex:t,changedAnswers:a}})}function u1(c){let{survey:t,pages:a,values:l,submit:i,currentPageIndex:r,setCurrentPageIndex:e,setValidationErrors:h,trackPageTime:s,trackOptionalSkips:v,checkBacktrackChanges:o,totalQuestionsCount:n,paginationRefs:C}=c;return(0,N2.useCallback)(async()=>{if(!t)return;S2();let d=null;try{d=L2(a,l,t.language),d||k2()}catch(z){Q(z)}let g=C.current;if(g){if(d){P2(d);let z=(g.validationAttempt[d.errorPageIndex]||0)+1;g.validationAttempt[d.errorPageIndex]=z,g.validationErrorsCount+=1,g.validationHistory.push({pageIndex:d.errorPageIndex,errors:d.errors,attemptNumber:z}),W(d.errorPageIndex,d.errors,z),h(d.errors),e(d.errorPageIndex),setTimeout(()=>{try{let L=U(d.firstErrorId);L&&L.scrollIntoView({behavior:"smooth",block:"center"})}catch(L){k("Failed to scroll validation error element into view",L)}},100);return}h({}),delete g.validationAttempt[r],s(r),v(r),o(r);try{let z=await i(l);if(z&&z.success&&!g.hasLoggedSummary){let L=performance.now()-g.sessionStartTime,u=[];a.forEach(x=>{x.questions.forEach(f=>{if(!f.required){let V=l[f.id];(V===void 0||V==="")&&u.push(f.id)}})});let p=u.length;I2(!0,g.maxVisitedPageIndex,L,n,n-p,p,u,g.validationErrorsCount,g.backtrackCount,g.validationHistory),g.hasLoggedSummary=!0}}catch(z){b2(z)}}},[t,a,l,i,r,e,h,s,v,o,n,C])}var O2=require("react");function p1(c,t,a){return(0,O2.useCallback)(l=>{if(!a.current)return;let i=a.current.backtrackSnapshots[l];if(i){let r=c[l]?.questions??[],e={},h=!1;r.forEach(s=>{let v=i.snapshot[s.id],o=t[s.id];v!==o&&(e[s.id]={oldValue:v??null,newValue:o??null},h=!0)}),h&&q2(i.fromPageIndex,l,e),delete a.current.backtrackSnapshots[l]}},[c,t,a])}var G2=require("react");function M1(c,t){return(0,G2.useCallback)(a=>{(c[a]?.questions??[]).forEach(i=>{let r=!i.required,e=t[i.id];r&&(e===void 0||e==="")&&U2(i.id,a)})},[c,t])}var Q2=require("react");function x1(c){return(0,Q2.useCallback)(t=>{if(!c.current)return;let a=performance.now()-c.current.pageStartTime;E2(t,a)},[c])}function W2({survey:c,session:t}){let[a,l]=(0,D.useState)({}),[i,r]=(0,D.useState)({}),[e,h]=(0,D.useState)(0),s=c?.pages??[],o=s[e]?.questions??[],{submit:n,data:C,loading:d,error:g}=M2(t,c),{progressPercentage:z,totalQuestionsCount:L,answeredQuestionsCount:u,isComplete:p}=F2({survey:c,values:a,currentPageIndex:e}),x=(0,D.useRef)({pageStartTime:performance.now(),sessionStartTime:performance.now(),maxVisitedPageIndex:0,validationAttempt:{},backtrackSnapshots:{},hasLoggedSummary:!1,validationErrorsCount:0,backtrackCount:0,validationHistory:[]}),f=x1(x),V=M1(s,a),P=p1(s,a,x),B={survey:c,session:t,pages:s,currentPageIndex:e,setCurrentPageIndex:h,values:a,setValues:l,validationErrors:i,setValidationErrors:r,paginationRefs:x,trackPageTime:f,trackOptionalSkips:V,checkBacktrackChanges:P,submit:n,totalQuestionsCount:L};v1(B),n1(B);let m=d1(B),S=z1(B),A=u1(B),y=g1(B,A);return{currentPageIndex:e,values:a,validationErrors:i,currentQuestions:o,pages:s,onChange:m,onBack:S,onNext:y,onSubmit:A,progressPercentage:z,totalQuestionsCount:L,answeredQuestionsCount:u,isComplete:p,submitting:d,submitError:g,submitData:C}}function j2({options:c}={}){M.setEnabled(c?.debug??!1);let{survey:t,session:a,fetching:l,fetchError:i}=t2({instanceId:c?.instanceId,language:c?.language,placeholders:c?.placeholders}),{currentPageIndex:r,values:e,validationErrors:h,currentQuestions:s,onBack:v,onNext:o,onSubmit:n,onChange:C,progressPercentage:d,submitting:g,submitError:z,submitData:L}=W2({survey:t,session:a}),u=(0,_2.useCallback)(p=>{p.type==="NEXT"&&t&&r===t.pages.length-1&&(p={type:"SUBMIT"}),M.info(`Action dispatched: ${p.type}`,p);try{switch(p.type){case"NEXT":o();break;case"PREVIOUS":v();break;case"SUBMIT":n();break;case"CHANGE":C(p.payload.questionId,p.payload.value);break;default:break}}catch(x){M.error(`Error executing action: ${p.type}`,x)}},[o,v,n,C,t,r]);return{surveyQueryResults:{data:t,error:i,isLoading:l},submitSurveyResults:{data:L,error:z,isLoading:g},state:{currentPageIndex:r,currentQuestions:s,values:e,validationErrors:h,progressPercentage:d},onAction:u}}var J=X(require("react"));var I=X(require("react"),1);var L1=X(require("react"),1),m1={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},C1=L1.default.createContext&&L1.default.createContext(m1);var P4=["attr","size","title"];function Z4(c,t){if(c==null)return{};var a,l,i=E4(c,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(c);for(l=0;l<r.length;l++)a=r[l],t.indexOf(a)===-1&&{}.propertyIsEnumerable.call(c,a)&&(i[a]=c[a])}return i}function E4(c,t){if(c==null)return{};var a={};for(var l in c)if({}.hasOwnProperty.call(c,l)){if(t.indexOf(l)!==-1)continue;a[l]=c[l]}return a}function _(){return _=Object.assign?Object.assign.bind():function(c){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var l in a)({}).hasOwnProperty.call(a,l)&&(c[l]=a[l])}return c},_.apply(null,arguments)}function J2(c,t){var a=Object.keys(c);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(c);t&&(l=l.filter(function(i){return Object.getOwnPropertyDescriptor(c,i).enumerable})),a.push.apply(a,l)}return a}function j(c){for(var t=1;t<arguments.length;t++){var a=arguments[t]!=null?arguments[t]:{};t%2?J2(Object(a),!0).forEach(function(l){D4(c,l,a[l])}):Object.getOwnPropertyDescriptors?Object.defineProperties(c,Object.getOwnPropertyDescriptors(a)):J2(Object(a)).forEach(function(l){Object.defineProperty(c,l,Object.getOwnPropertyDescriptor(a,l))})}return c}function D4(c,t,a){return(t=I4(t))in c?Object.defineProperty(c,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):c[t]=a,c}function I4(c){var t=U4(c,"string");return typeof t=="symbol"?t:t+""}function U4(c,t){if(typeof c!="object"||!c)return c;var a=c[Symbol.toPrimitive];if(a!==void 0){var l=a.call(c,t||"default");if(typeof l!="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(c)}function X2(c){return c&&c.map((t,a)=>I.default.createElement(t.tag,j({key:a},t.attr),X2(t.child)))}function w(c){return t=>I.default.createElement(q4,_({attr:j({},c.attr)},t),X2(c.child))}function q4(c){var t=a=>{var{attr:l,size:i,title:r}=c,e=Z4(c,P4),h=i||a.size||"1em",s;return a.className&&(s=a.className),c.className&&(s=(s?s+" ":"")+c.className),I.default.createElement("svg",_({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},a.attr,l,e,{className:s,style:j(j({color:c.color||a.color},a.style),c.style),height:h,width:h,xmlns:"http://www.w3.org/2000/svg"}),r&&I.default.createElement("title",null,r),c.children)};return C1!==void 0?I.default.createElement(C1.Consumer,null,a=>t(a)):t(m1)}function K2(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"},child:[]}]})(c)}function Y2(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z"},child:[]}]})(c)}function $2(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM367.6 208a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"},child:[]}]})(c)}function f1(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 336l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z"},child:[]}]})(c)}function c4(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"},child:[]}]})(c)}function t4(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z"},child:[]}]})(c)}function a4(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm407.4 75.5c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z"},child:[]}]})(c)}function l4(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"},child:[]}]})(c)}function r4(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-122 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z"},child:[]}]})(c)}function i4(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM338.7 395.9c6.6-5.9 7.1-16 1.2-22.6C323.8 355.4 295.7 336 256 336s-67.8 19.4-83.9 37.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c11.7-13 31.6-26.7 60.1-26.7s48.4 13.7 60.1 26.7c5.9 6.6 16 7.1 22.6 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z"},child:[]}]})(c)}function e4(c){return w({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z"},child:[]}]})(c)}function h4(c){return w({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z"},child:[]}]})(c)}var N4=["#dc2626","#e04832","#ea580c","#f59e0b","#eab308","#a3a323","#84cc16","#65a30d","#22c55e","#16a34a","#059669"],O4=[i4,$2,l4,r4,f1,f1,K2,Y2,c4,t4,a4],H={};for(let c=0;c<11;c++){let t=O4[c],a=N4[c];H[c+1]=J.default.createElement(t,{className:"transition-transform",style:{color:a,fontSize:"28px"}})}var s4={3:[3,6,8],4:[3,4,7,9],5:[3,4,6,7,9],6:[3,4,6,7,9,11]};function o4(c,t){if(t<=1)return H[6];if(s4[t]){let i=s4[t][c];if(i)return H[i]}let a=c/(t-1),l=Math.min(11,Math.max(1,Math.round(a*10)+1));return H[l]}var n4={1:H[1],2:H[4],3:H[6],4:H[8],5:H[11]},v4={filled:J.default.createElement(e4,{style:{color:"#e20074",fontSize:"28px"}}),empty:J.default.createElement(h4,{style:{color:"#d1d5db",fontSize:"28px",stroke:"#d1d5db",strokeWidth:"16px"}})};0&&(module.exports={CsatEmojiMapping,CsatEmojiSet,CsatStarIcons,getEmojiForIndex,useSurveySDK});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{useCallback as wt}from"react";import{useMemo as it}from"react";import{useQuery as st}from"@tanstack/react-query";import{QueryClient as Ze}from"@tanstack/react-query";var N=!1,We={debug:"background: #7f8c8d; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",info:"background: #2980b9; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",warn:"background: #f1c40f; color: #000; padding: 2px 5px; border-radius: 3px; font-weight: bold;",error:"background: #e74c3c; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",success:"background: #2ecc71; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",perf:"background: #9b59b6; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",analytics:"background: #e20074; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;"};function P(e,t,r){if(!N&&e!=="analytics")return;let o=new Date().toLocaleTimeString(),i=`%c[SDK:${e.toUpperCase()}]`,n=We[e];r!==void 0?console.log(`[${o}] ${i}`,n,t,r):console.log(`[${o}] ${i}`,n,t)}var u={setEnabled:e=>{N=e},isEnabled:()=>N,debug:(e,t)=>P("debug",e,t),info:(e,t)=>P("info",e,t),warn:(e,t)=>P("warn",e,t),error:(e,t)=>P("error",e,t),success:(e,t)=>P("success",e,t),analytics:(e,t)=>P("analytics",e,t),perf:e=>{P("perf",`${e.apiName} completed in ${e.durationMs.toFixed(2)}ms | Status: ${e.status}`,e)}};var R=new Ze({defaultOptions:{queries:{staleTime:1/0,refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchInterval:!1,retryDelay:5e3,retry:(e,t)=>{if(e>=3)return u.error("Query failed permanently after 3 attempts. Stopping retries.",t),!1;if(t instanceof Error){let r=t.message;if(r.includes("400")||r.includes("401")||r.includes("403")||r.includes("404")||r.includes("422"))return u.error(`Query failed permanently due to client error (${r}). Skipping retry.`,t),!1}return u.warn(`Query failed. Retrying attempt ${e+1}/3...`,t),!0}},mutations:{networkMode:"always",retryDelay:5e3,retry:(e,t)=>{if(e>=3)return u.error("Mutation failed permanently after 3 attempts. Stopping retries.",t),!1;if(t instanceof Error){let r=t.message;if(r.includes("400")||r.includes("401")||r.includes("403")||r.includes("422"))return u.error("Mutation failed permanently due to validation/client error. Skipping retry.",t),!1}return u.warn(`Mutation failed. Retrying attempt ${e+1}/3...`,t),!0}}}});var W="https://custom-p0.feedbook.me/api/feedback/survey/cfm",Z="eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJBY2Nlc3MgVG9rZW4gR2VuZXJhdGVkIEJ5IFNwcmlua2xyIiwic3VydmV5SWQiOiI2YTJlNWM2NDFiOGRiMmY5MDQ2Nzg4ODUiLCJpc3MiOiJTUFJJTktMUiIsInR5cCI6IkpXVCIsInN1cnZleU1vZGUiOiJTVEFOREFSRCIsInN1cnZleUF1dGhlbnRpY2F0aW9uU3RhdGUiOiJOT1RfUkVRVUlSRUQiLCJkaXN0cmlidXRpb25FbnRpdHlJZCI6IjZhMmU1ZDEzNDRjYTkzZjc3YTVlMzcyNyIsImF1ZCI6IlNQUklOS0xSIiwibmJmIjoxNzgxNDIyMTc5LCJzY29wZSI6WyJSRUFEIiwiV1JJVEUiXSwic3RhdGljU3VydmV5IjoidHJ1ZSIsInN1cnZleVJlc3BvbmRlclNuVHlwZSI6IkVYVEVSTkFMX0FQUExJQ0FUSU9OIiwic3VydmV5TGFuZ3VhZ2UiOiJlbiIsInBhcnRuZXJJZCI6OTAwNCwidG9rZW5UeXBlIjoiQUNDRVNTIiwiYXV0aFR5cGUiOiJTVVJWRVlfUkVTUE9OU0UiLCJpYXQiOjE3ODE0MjMzNzksImp0aSI6InNwcmlua2xyIn0.B4ffi1szwM_xQKXTlr0kQc9mVOS4qVbB5e6ir4NFuCoOmNmsl3PB1QeFJ5jPaQ42s0KTpbufPam9ja0Z84CJ620l2WtuS1RModEv7ZtuMNLWOixzRxZMduC5-V7WV85H6gr1e-HzX7wgqrxTk2Z9iTr-8AVuczlwScarCfqLhA-JE_EXkFScHoehmH7QB5q5-BfcxU32iQNYOk5NyeEHGAAWkkyiGPdrbE27njPnhTunB3kKgCBvHHLq0KmgoN9x_KnrB53O_0Xai419TT5vkBWlu5a_uotZckX014eQpxYH02w_LeOF8iWEKYe6R9ge-6DSbelaJSt6U6O8Fq-aXw";function Xe(e){return`${W}?instanceId=${encodeURIComponent(e)}&draftPreview=false`}function X(e){let t=typeof e=="string"&&e.trim().length>0?e.trim():Z;return Xe(t)}function Ye(e){let t=(e??"").toUpperCase();return t==="TEXTFIELD"?"text":t==="RATING"||t==="SCALE"||t==="RATING_MATRIX"?"rating":"radio"}var Ke=["#e2001a","#e4251b","#ec610a","#f18b00","#f7b200","#fcd900","#d2dc00","#9fca00","#6bb300","#339a00","#008000"];function Y(e){return Ke[e]??"#e20074"}function et(e=[],t){let r=e.filter(o=>o.additional?.isHintText&&!o.hidden).map(o=>t&&o.translations?.[t]?.answerText||o.answerText||"").filter(Boolean);return r.length>=3?{minLabel:r[0],midLabel:r[1],maxLabel:r[2]}:{minLabel:r[0],maxLabel:r[1]}}function tt(e,t,r){if(t==="text")return[];let i=(e.answerDetails??[]).filter(n=>!n.hidden&&!n.additional?.isHintText);return i.length>0?i.map(a=>{let s=r&&a.translations?.[r]?.answerText||a.answerText||"",c=a.answerText??"",m=Number(c),p=Number.isFinite(m)&&c.trim()!==""?m:c,l={label:s,value:p};return t==="rating"&&typeof p=="number"&&(l.color=Y(p)),l}):t==="rating"?Array.from({length:11},(a,s)=>({label:String(s),value:s,color:Y(s)})):[]}function K(e,t,r){let o=Ye(e.answerType),{minLabel:i,midLabel:n,maxLabel:a}=et(e.answerDetails,t),s=tt(e,o,t),c=e.id??"",m=e.questionConfigs??[],p=m.find(b=>b.key==="REQUIRED")?.value?.[0]==="true",l=m.find(b=>b.key==="REQUIRED_ERROR_MESSAGE"),v=l?.value?.[0];t&&l?.translations?.[t]?.value?.[0]&&(v=l.translations[t].value[0]);let g=m.find(b=>b.key==="CONTENT_TYPE")?.childConfigs?.find(b=>b.key==="MAX_CHARACTER_COUNT"),f=g?.value?.[0]?Number(g.value[0]):void 0,d;o==="rating"&&n&&(s.length===11?d=7.5:d=(s.length-1)/2);let x=t&&e.translations?.[t]?.questionRichText||t&&e.translations?.[t]?.questionText||e.questionRichText||e.questionText||"";r&&(x=x.replace(/\{\{(\w+)\}\}/g,(b,E)=>r[E]!==void 0?r[E]:b));let y;if(o==="text"){let b=e.answerDetails?.[0];b&&(y=t&&b.translations?.[t]?.answerText||b.answerText)}return{id:c,text:x,type:o,options:s,required:p,...v?{requiredErrorMessage:v}:{},...i?{minLabel:i}:{},...n?{midLabel:n}:{},...d!==void 0?{midLabelIndex:d}:{},...a?{maxLabel:a}:{},...f!==void 0?{maxCharacterCount:f}:{},...y?{placeholder:y}:{}}}var rt={en:"English",hi:"Hindi",de:"Deutsch",es:"Espa\xF1ol",fr:"Fran\xE7ais",bn:"Bengali",gu:"Gujarati",it:"Italiano",ja:"\u65E5\u672C\u8A9E",ko:"\uD55C\uAD6D\uC5B4",mr:"Marathi",pa:"Punjabi",ta:"Tamil",te:"Telugu",ur:"Urdu",zh:"\u4E2D\u6587"};function nt(e){let t=e.toLowerCase().trim();return rt[t]||e.toUpperCase()}function ee(e){let t=e.cfmSurveyDTO,r=new Set,o=t?.baseLanguage??"en";return r.add(o),t&&Array.isArray(t.surveyPages)&&t.surveyPages.forEach(i=>{(i.questionHolders??[]).forEach(n=>{let a=n.question;a&&a.translations&&Object.keys(a.translations).forEach(s=>{r.add(s)})})}),Array.from(r).map(i=>({code:i,name:nt(i)}))}function te(e,t,r){let o=e.cfmSurveyDTO;return!o||!Array.isArray(o.surveyPages)?[]:o.surveyPages.map((i,n)=>{let a=(i.questionHolders??[]).map(s=>s.question).filter(s=>!!s).map(s=>K(s,t,r));return{id:`page_${n}`,title:`Page ${n+1}`,questions:a}})}function re(e){return e.instanceId?.trim()?{instanceId:e.instanceId.trim(),language:e.surveyLanguage??e.cfmSurveyDTO?.baseLanguage??"en"}:null}function ot(e,t){return t??e.surveyLanguage??e.cfmSurveyDTO?.baseLanguage??"en"}function ne(e,t,r){let o=ot(e,t),i=ee(e),n=te(e,o,r);return{id:e.cfmSurveyDTO?.id??"",language:o,languages:i,pages:n}}function oe(e){u.info("Starting survey layout API fetch...",{url:e})}function O(e,t,r){u.perf({apiName:"GET Survey Layout",durationMs:e,status:t,url:r,success:!1})}function ie(e,t,r,o){u.perf({apiName:"GET Survey Layout",durationMs:e,status:t,url:r,payloadSize:o,success:!0})}function se(e){u.success("Raw survey layout fetched successfully",e)}function ae(e){u.error("Failed to fetch raw survey layout",e)}function ue(){u.warn("Cannot map survey: apiResponse is null or undefined")}function ce(e){u.success("Mapped survey layout successfully",e)}function me(e){u.error("Failed to map survey layout",e)}function h(e){if(e.eventName==="survey_session_summary"){let{completed:t,totalDurationMs:r,maxVisitedPageIndex:o,totalQuestionsCount:i,answeredQuestionsCount:n,skippedQuestionsCount:a,skippedQuestionIds:s,validationErrorsCount:c,backtrackCount:m}=e.metadata;u.analytics(`Event: ${e.eventName} - SESSION SUMMARY TABLE:`);let p=[{Metric:"Completion Status",Value:t?"COMPLETED \u2705":"ABANDONED \u274C"},{Metric:"Total Time Spent",Value:`${(r/1e3).toFixed(2)} seconds`},{Metric:"Max Page Index Reached",Value:`${o}`},{Metric:"Total Questions",Value:i},{Metric:"Answered Questions",Value:n},{Metric:"Skipped Optional Questions",Value:a},{Metric:"Skipped Question IDs",Value:s.join(", ")||"None"},{Metric:"Validation Errors Triggered",Value:c},{Metric:"Backtrack Count",Value:m},{Metric:"Validation Error History",Value:e.metadata.validationHistory?.map(l=>`[Page ${l.pageIndex}] Attempt ${l.attemptNumber}: ${Object.keys(l.errors).join(", ")}`).join(" | ")||"NO Validation Erros Occurred"}];console.table(p)}else u.analytics(`Event: ${e.eventName}`,e.metadata)}function pe(e,t,r,o){h({eventName:"survey_fetch_latency",metadata:{durationMs:e,status:t,success:!0,url:r,payloadSize:o}})}function V(e,t,r){h({eventName:"api_error",metadata:{apiName:"GET Survey Layout",status:e,url:t,errorMessage:r}})}async function at(e){let t=performance.now();oe(e);try{let r=await fetch(e,{method:"GET",headers:{Accept:"application/json"},cache:"force-cache"}),o=performance.now()-t;if(!r.ok)throw O(o,r.status,e),V(r.status,e,`Survey fetch failed (${r.status})`),new Error(`Survey fetch failed (${r.status})`);let i=await r.json(),n=JSON.stringify(i),s=`${(new Blob([n]).size/1024).toFixed(2)} KB`;return ie(o,r.status,e,s),pe(o,r.status,e,s),se(i),i}catch(r){let o=performance.now()-t;throw O(o,"FAILED",e),V("FAILED",e,r?.message||String(r)),ae(r),r}}function le(e){let t=X(e?.instanceId),r=e?.language,o=e?.placeholders,{data:i,error:n,isLoading:a,isSuccess:s}=st({queryKey:["survey",t],queryFn:()=>at(t),enabled:!!t},R),c=it(()=>{if(!s)return{survey:null,session:null};if(!i)return ue(),{survey:null,session:null};try{let m=ne(i,r,o),p=re(i),l=p?{...p,language:m.language}:null;return ce(m),{survey:m,session:l}}catch(m){return me(m),{survey:null,session:null}}},[i,s,r]);return{survey:c.survey,session:c.session,fetching:a,fetchError:n}}import{useState as z,useRef as It}from"react";import{useCallback as ct}from"react";import{useMutation as mt}from"@tanstack/react-query";function ge(e,t){u.info("Starting survey response HTTP POST...",{url:e,requestBody:t})}function fe(e,t){u.warn(e,t)}function de(e,t,r,o,i){u.perf({apiName:"POST Submit Response",durationMs:e,status:t,url:r,requestSize:o,responseSize:i,success:!0})}function F(e,t,r,o){u.perf({apiName:"POST Submit Response",durationMs:e,status:t,url:r,requestSize:o,success:!1})}function ye(e){u.success("Survey response submitted successfully",{responseId:e})}function Se(e,t){u.error(e,t)}function be(e){u.debug("Resolved raw inputs to submit schema:",e)}function ve(e){u.debug("Constructed JSON request body:",e)}function xe(e){u.error("Failed to execute submit callback",e)}function he(e,t,r,o,i){h({eventName:"survey_submit_latency",metadata:{durationMs:e,status:t,success:!0,url:r,requestSize:o,responseSize:i}})}function M(e,t,r){h({eventName:"api_error",metadata:{apiName:"POST Submit Response",status:e,url:t,errorMessage:r}})}var ke="https://custom-p0.feedbook.me/api/feedback/survey/responseV2";function Ee(e,t="en"){let r=new URLSearchParams({instanceId:e,surveySubmitted:"true",surveyLanguage:t});return`${ke}?${r.toString()}`}function Pe(e,t){let r={};for(let o of t){let i=e[o.id];if(i==null)continue;let n=String(i);r[o.id]=[n]}return{questionToAnswers:r,quesIdVsAttachmentDetails:{},optionLevelAnswers:{},conjointTasks:[]}}function ut(e){return typeof e=="object"&&e!==null&&"instanceId"in e&&"answers"in e}function Ie(e,t,r){if(ut(e))return{...e,surveyLanguage:e.surveyLanguage??t?.language??"en",questions:e.questions??r?.pages.flatMap(o=>o.questions)??[]};if(!t?.instanceId)throw new Error("Survey session not ready. Fetch survey before submitting.");return{answers:e,instanceId:t.instanceId,surveyLanguage:t.language??"en",questions:r?.pages.flatMap(o=>o.questions)??[]}}async function pt({url:e,requestBody:t}){let r=performance.now(),i=`${(new Blob([JSON.stringify(t)]).size/1024).toFixed(2)} KB`;ge(e,t);try{let n=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),a=await n.json().catch(l=>(fe("Failed to parse JSON response during submission",l),null)),s=performance.now()-r,m=`${((a?new Blob([JSON.stringify(a)]).size:0)/1024).toFixed(2)} KB`;if(!n.ok)throw F(s,n.status,e,i),M(n.status,e,`Submit failed (${n.status}): ${JSON.stringify(a)}`),new Error(`Submit failed (${n.status}): ${JSON.stringify(a)}`);let p=a?.responseId??"";return de(s,n.status,e,i,m),he(s,n.status,e,i,m),ye(p),{success:!0,responseId:p}}catch(n){let a=performance.now()-r;throw F(a,"FAILED",e,i),M("FAILED",e,n?.message||String(n)),Se("Failed to submit survey response",n),n}}function we(e,t){let r=mt({mutationFn:({url:i,requestBody:n})=>pt({url:i,requestBody:n})},R);return{submit:ct(async i=>{try{let n=Ie(i,e,t);be(n);let a=n.surveyLanguage??"en",s=Pe(n.answers,n.questions??[]);ve(s);let c=Ee(n.instanceId,a);return await r.mutateAsync({url:c,requestBody:s})}catch(n){throw xe(n),n}},[e,t,r]),data:r.data??null,loading:r.isPending,error:r.error}}import{useState as lt,useEffect as gt,useMemo as ft}from"react";function Te(e){return!e||!Array.isArray(e.pages)?0:e.pages.reduce((t,r)=>t+(r.questions?.length??0),0)}function Re(e,t,r=0){if(!e||!t||!Array.isArray(e.pages))return 0;let o=0;return e.pages.forEach((i,n)=>{Array.isArray(i.questions)&&(n<r?o+=i.questions.length:i.questions.forEach(a=>{let s=t[a.id];s!=null&&s!==""&&o++}))}),o}function Ae(e,t){return t<=0?0:Math.min(100,Math.max(0,Math.round(e/t*100)))}function Ce({survey:e,values:t,currentPageIndex:r=0}){let[o,i]=lt(0);return gt(()=>{r>o&&i(r)},[r,o]),ft(()=>{let n=Te(e),a=Re(e,t,o),s=Ae(a,n),c=n>0&&a===n;return{totalQuestionsCount:n,answeredQuestionsCount:a,progressPercentage:s,isComplete:c}},[e,t,o])}import{useEffect as dt}from"react";function Q(e){let{currentPageIndex:t,paginationRefs:r}=e;dt(()=>{r.current&&(r.current.pageStartTime=performance.now())},[t,r])}import{useEffect as yt}from"react";function U(e){let{currentPageIndex:t,paginationRefs:r}=e;yt(()=>{r.current&&t>r.current.maxVisitedPageIndex&&(r.current.maxVisitedPageIndex=t)},[t,r])}import{useCallback as bt}from"react";function Le(e,t){u.info(`Answer changed for question: ${e}`,{value:t})}function I(e,t){u.warn(e,t)}function Ne(){u.info("Initiating survey submission...")}function Oe(e){u.info(`Navigating back from page index: ${e}`)}function Ve(e){u.info(`Navigating next from page index: ${e}`)}function Fe(e){u.error("Error encountered during pagination submit trigger",e)}function D(e,t,r){let o={};return e.forEach(i=>{i.required&&(t[i.id]===void 0||t[i.id]==="")&&(o[i.id]=i.requiredErrorMessage??(r?.startsWith("de")?"Beantworten Sie bitte diese Frage bevor Sie fortfahren.":"Please answer this question before you proceed."))}),o}function Me(e,t,r){let o={},i="",n=-1;for(let a=0;a<e.length;a++){let s=D(e[a].questions,t,r);Object.keys(s).length>0&&(o={...o,...s},n===-1&&(n=a,i=Object.keys(s)[0]))}return n!==-1?{errors:o,errorPageIndex:n,firstErrorId:i}:null}function T(e){return typeof document>"u"?null:document.getElementById(e)||null}function St(e){return e.closest("main")||e.closest("form")||e.parentElement||e}function A(e,t){try{let o=e[t]?.questions?.[0];o?setTimeout(()=>{try{let i=T(o.id);i?St(i).scrollIntoView({behavior:"smooth",block:"start"}):window.scrollTo({top:0,behavior:"smooth"})}catch(i){I("Failed to scroll page first question into view",i)}},50):window.scrollTo({top:0,behavior:"smooth"})}catch(r){I("Failed to trigger scroll navigation",r)}}function B(e){let{currentPageIndex:t,setCurrentPageIndex:r,trackPageTime:o,pages:i,values:n,paginationRefs:a}=e;return bt(()=>{if(t>0){Oe(t),o(t);let s=a.current;if(s){s.backtrackCount+=1;let m=t-1,p=i[m]?.questions??[],l={};p.forEach(v=>{l[v.id]=n[v.id]}),s.backtrackSnapshots[m]={fromPageIndex:t,snapshot:l}}let c=t-1;r(c),A(i,c)}},[t,r,o,i,n,a])}import{useCallback as vt}from"react";function q(e){let{setValues:t,setValidationErrors:r}=e;return vt((o,i)=>{Le(o,i),t(n=>({...n,[o]:i})),r(n=>({...n,[o]:""}))},[t,r])}import{useCallback as xt}from"react";function Qe(){u.success("Survey validation passed on submit")}function Ue(e){u.warn("Full survey validation failed on submit",{validation:e})}function C(e){u.error("Failed to run survey validation on submit",e)}function De(e){u.warn("Page validation failed",{errors:e})}function Be(e,t){h({eventName:"page_time_spent",metadata:{pageIndex:e,durationMs:t}})}function L(e,t,r){h({eventName:"validation_error",metadata:{pageIndex:e,errors:t,attemptNumber:r}})}function _(e,t){let{survey:r,pages:o,values:i,currentPageIndex:n,setCurrentPageIndex:a,setValidationErrors:s,trackPageTime:c,trackOptionalSkips:m,checkBacktrackChanges:p,paginationRefs:l}=e,v=o[n],S=v?.questions??[];return xt(()=>{if(!r||!v)return;let g={};try{g=D(S,i,r.language)}catch(d){C(d)}let f=l.current;if(f){if(Object.keys(g).length>0){De(g);let d=(f.validationAttempt[n]||0)+1;f.validationAttempt[n]=d,f.validationErrorsCount+=1,f.validationHistory.push({pageIndex:n,errors:g,attemptNumber:d}),L(n,g,d),s(g);let x=Object.keys(g)[0];setTimeout(()=>{try{let y=T(x);y&&y.scrollIntoView({behavior:"smooth",block:"center"})}catch(y){I("Failed to scroll validation error element into view",y)}},50);return}s({}),delete f.validationAttempt[n],c(n),m(n),p(n),n<o.length-1?(Ve(n),a(d=>d+1),A(o,n+1)):t()}},[r,v,S,i,n,a,s,c,m,p,o,t,l])}import{useCallback as ht}from"react";function qe(e,t,r,o,i,n,a,s,c,m){h({eventName:"survey_session_summary",metadata:{maxVisitedPageIndex:t,totalDurationMs:r,completed:e,totalQuestionsCount:o,answeredQuestionsCount:i,skippedQuestionsCount:n,skippedQuestionIds:a,validationErrorsCount:s,backtrackCount:c,validationHistory:m}})}function _e(e,t){h({eventName:"optional_question_skipped",metadata:{questionId:e,pageIndex:t}})}function Je(e,t,r){h({eventName:"backtrack_revisited",metadata:{fromPageIndex:e,toPageIndex:t,changedAnswers:r}})}function J(e){let{survey:t,pages:r,values:o,submit:i,currentPageIndex:n,setCurrentPageIndex:a,setValidationErrors:s,trackPageTime:c,trackOptionalSkips:m,checkBacktrackChanges:p,totalQuestionsCount:l,paginationRefs:v}=e;return ht(async()=>{if(!t)return;Ne();let S=null;try{S=Me(r,o,t.language),S||Qe()}catch(f){C(f)}let g=v.current;if(g){if(S){Ue(S);let f=(g.validationAttempt[S.errorPageIndex]||0)+1;g.validationAttempt[S.errorPageIndex]=f,g.validationErrorsCount+=1,g.validationHistory.push({pageIndex:S.errorPageIndex,errors:S.errors,attemptNumber:f}),L(S.errorPageIndex,S.errors,f),s(S.errors),a(S.errorPageIndex),setTimeout(()=>{try{let d=T(S.firstErrorId);d&&d.scrollIntoView({behavior:"smooth",block:"center"})}catch(d){I("Failed to scroll validation error element into view",d)}},100);return}s({}),delete g.validationAttempt[n],c(n),m(n),p(n);try{let f=await i(o);if(f&&f.success&&!g.hasLoggedSummary){let d=performance.now()-g.sessionStartTime,x=[];r.forEach(k=>{k.questions.forEach(b=>{if(!b.required){let E=o[b.id];(E===void 0||E==="")&&x.push(b.id)}})});let y=x.length;qe(!0,g.maxVisitedPageIndex,d,l,l-y,y,x,g.validationErrorsCount,g.backtrackCount,g.validationHistory),g.hasLoggedSummary=!0}}catch(f){Fe(f)}}},[t,r,o,i,n,a,s,c,m,p,l,v])}import{useCallback as kt}from"react";function $(e,t,r){return kt(o=>{if(!r.current)return;let i=r.current.backtrackSnapshots[o];if(i){let n=e[o]?.questions??[],a={},s=!1;n.forEach(c=>{let m=i.snapshot[c.id],p=t[c.id];m!==p&&(a[c.id]={oldValue:m??null,newValue:p??null},s=!0)}),s&&Je(i.fromPageIndex,o,a),delete r.current.backtrackSnapshots[o]}},[e,t,r])}import{useCallback as Et}from"react";function j(e,t){return Et(r=>{(e[r]?.questions??[]).forEach(i=>{let n=!i.required,a=t[i.id];n&&(a===void 0||a==="")&&_e(i.id,r)})},[e,t])}import{useCallback as Pt}from"react";function H(e){return Pt(t=>{if(!e.current)return;let r=performance.now()-e.current.pageStartTime;Be(t,r)},[e])}function $e({survey:e,session:t}){let[r,o]=z({}),[i,n]=z({}),[a,s]=z(0),c=e?.pages??[],p=c[a]?.questions??[],{submit:l,data:v,loading:S,error:g}=we(t,e),{progressPercentage:f,totalQuestionsCount:d,answeredQuestionsCount:x,isComplete:y}=Ce({survey:e,values:r,currentPageIndex:a}),k=It({pageStartTime:performance.now(),sessionStartTime:performance.now(),maxVisitedPageIndex:0,validationAttempt:{},backtrackSnapshots:{},hasLoggedSummary:!1,validationErrorsCount:0,backtrackCount:0,validationHistory:[]}),b=H(k),E=j(c,r),je=$(c,r,k),w={survey:e,session:t,pages:c,currentPageIndex:a,setCurrentPageIndex:s,values:r,setValues:o,validationErrors:i,setValidationErrors:n,paginationRefs:k,trackPageTime:b,trackOptionalSkips:E,checkBacktrackChanges:je,submit:l,totalQuestionsCount:d};U(w),Q(w);let He=q(w),ze=B(w),G=J(w),Ge=_(w,G);return{currentPageIndex:a,values:r,validationErrors:i,currentQuestions:p,pages:c,onChange:He,onBack:ze,onNext:Ge,onSubmit:G,progressPercentage:f,totalQuestionsCount:d,answeredQuestionsCount:x,isComplete:y,submitting:S,submitError:g,submitData:v}}function Tt({options:e}={}){u.setEnabled(e?.debug??!1);let{survey:t,session:r,fetching:o,fetchError:i}=le({instanceId:e?.instanceId,language:e?.language,placeholders:e?.placeholders}),{currentPageIndex:n,values:a,validationErrors:s,currentQuestions:c,onBack:m,onNext:p,onSubmit:l,onChange:v,progressPercentage:S,submitting:g,submitError:f,submitData:d}=$e({survey:t,session:r}),x=wt(y=>{y.type==="NEXT"&&t&&n===t.pages.length-1&&(y={type:"SUBMIT"}),u.info(`Action dispatched: ${y.type}`,y);try{switch(y.type){case"NEXT":p();break;case"PREVIOUS":m();break;case"SUBMIT":l();break;case"CHANGE":v(y.payload.questionId,y.payload.value);break;default:break}}catch(k){u.error(`Error executing action: ${y.type}`,k)}},[p,m,l,v,t,n]);return{surveyQueryResults:{data:t,error:i,isLoading:o},submitSurveyResults:{data:d,error:f,isLoading:g},state:{currentPageIndex:n,currentQuestions:c,values:a,validationErrors:s,progressPercentage:S},onAction:x}}export{Tt as useSurveySDK};
1
+ import{useCallback as w4}from"react";import{useMemo as t4}from"react";import{useQuery as a4}from"@tanstack/react-query";import{QueryClient as W2}from"@tanstack/react-query";var W=!1,Q2={debug:"background: #7f8c8d; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",info:"background: #2980b9; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",warn:"background: #f1c40f; color: #000; padding: 2px 5px; border-radius: 3px; font-weight: bold;",error:"background: #e74c3c; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",success:"background: #2ecc71; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",perf:"background: #9b59b6; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;",analytics:"background: #e20074; color: #fff; padding: 2px 5px; border-radius: 3px; font-weight: bold;"};function b(c,t,a){if(!W&&c!=="analytics")return;let l=new Date().toLocaleTimeString(),i=`%c[SDK:${c.toUpperCase()}]`,r=Q2[c];a!==void 0?console.log(`[${l}] ${i}`,r,t,a):console.log(`[${l}] ${i}`,r,t)}var M={setEnabled:c=>{W=c},isEnabled:()=>W,debug:(c,t)=>b("debug",c,t),info:(c,t)=>b("info",c,t),warn:(c,t)=>b("warn",c,t),error:(c,t)=>b("error",c,t),success:(c,t)=>b("success",c,t),analytics:(c,t)=>b("analytics",c,t),perf:c=>{b("perf",`${c.apiName} completed in ${c.durationMs.toFixed(2)}ms | Status: ${c.status}`,c)}};var I=new W2({defaultOptions:{queries:{staleTime:1/0,refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchInterval:!1,retryDelay:5e3,retry:(c,t)=>{if(c>=3)return M.error("Query failed permanently after 3 attempts. Stopping retries.",t),!1;if(t instanceof Error){let a=t.message;if(a.includes("400")||a.includes("401")||a.includes("403")||a.includes("404")||a.includes("422"))return M.error(`Query failed permanently due to client error (${a}). Skipping retry.`,t),!1}return M.warn(`Query failed. Retrying attempt ${c+1}/3...`,t),!0}},mutations:{networkMode:"always",retryDelay:5e3,retry:(c,t)=>{if(c>=3)return M.error("Mutation failed permanently after 3 attempts. Stopping retries.",t),!1;if(t instanceof Error){let a=t.message;if(a.includes("400")||a.includes("401")||a.includes("403")||a.includes("422"))return M.error("Mutation failed permanently due to validation/client error. Skipping retry.",t),!1}return M.warn(`Mutation failed. Retrying attempt ${c+1}/3...`,t),!0}}}});var L1="https://custom-p0.feedbook.me/api/feedback/survey/cfm",m1="eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJBY2Nlc3MgVG9rZW4gR2VuZXJhdGVkIEJ5IFNwcmlua2xyIiwic3VydmV5SWQiOiI2YTJlNWM2NDFiOGRiMmY5MDQ2Nzg4ODUiLCJpc3MiOiJTUFJJTktMUiIsInR5cCI6IkpXVCIsInN1cnZleU1vZGUiOiJTVEFOREFSRCIsInN1cnZleUF1dGhlbnRpY2F0aW9uU3RhdGUiOiJOT1RfUkVRVUlSRUQiLCJkaXN0cmlidXRpb25FbnRpdHlJZCI6IjZhMmU1ZDEzNDRjYTkzZjc3YTVlMzcyNyIsImF1ZCI6IlNQUklOS0xSIiwibmJmIjoxNzgxNDIyMTc5LCJzY29wZSI6WyJSRUFEIiwiV1JJVEUiXSwic3RhdGljU3VydmV5IjoidHJ1ZSIsInN1cnZleVJlc3BvbmRlclNuVHlwZSI6IkVYVEVSTkFMX0FQUExJQ0FUSU9OIiwic3VydmV5TGFuZ3VhZ2UiOiJlbiIsInBhcnRuZXJJZCI6OTAwNCwidG9rZW5UeXBlIjoiQUNDRVNTIiwiYXV0aFR5cGUiOiJTVVJWRVlfUkVTUE9OU0UiLCJpYXQiOjE3ODE0MjMzNzksImp0aSI6InNwcmlua2xyIn0.B4ffi1szwM_xQKXTlr0kQc9mVOS4qVbB5e6ir4NFuCoOmNmsl3PB1QeFJ5jPaQ42s0KTpbufPam9ja0Z84CJ620l2WtuS1RModEv7ZtuMNLWOixzRxZMduC5-V7WV85H6gr1e-HzX7wgqrxTk2Z9iTr-8AVuczlwScarCfqLhA-JE_EXkFScHoehmH7QB5q5-BfcxU32iQNYOk5NyeEHGAAWkkyiGPdrbE27njPnhTunB3kKgCBvHHLq0KmgoN9x_KnrB53O_0Xai419TT5vkBWlu5a_uotZckX014eQpxYH02w_LeOF8iWEKYe6R9ge-6DSbelaJSt6U6O8Fq-aXw";function _2(c){return`${L1}?instanceId=${encodeURIComponent(c)}&draftPreview=false`}function C1(c){let t=typeof c=="string"&&c.trim().length>0?c.trim():m1;return _2(t)}var j2={en:"English",hi:"Hindi",de:"Deutsch",es:"Espa\xF1ol",fr:"Fran\xE7ais",bn:"Bengali",gu:"Gujarati",it:"Italiano",ja:"\u65E5\u672C\u8A9E",ko:"\uD55C\uAD6D\uC5B4",mr:"Marathi",pa:"Punjabi",ta:"Tamil",te:"Telugu",ur:"Urdu",zh:"\u4E2D\u6587"};function J2(c){let t=c.toLowerCase().trim();return j2[t]||c.toUpperCase()}function f1(c){let t=c.cfmSurveyDTO,a=new Set,l=t?.baseLanguage??"en";return a.add(l),t&&Array.isArray(t.surveyPages)&&t.surveyPages.forEach(i=>{(i.questionHolders??[]).forEach(r=>{let e=r.question;e&&e.translations&&Object.keys(e.translations).forEach(h=>{a.add(h)})})}),Array.from(a).map(i=>({code:i,name:J2(i)}))}var X2=new Set(["CFM_MATRIX","CSAT_MATRIX"]);function _(c){let t=(c??"").toUpperCase();return t==="TEXTFIELD"?"text":t==="NPS_SCALE"||t==="RATING"||t==="SCALE"?"rating":X2.has(t)?"matrix":t==="RATING_MATRIX"?"rating_matrix":t==="SLIDER_MATRIX"?"slider_matrix":t==="TEXT_AND_MEDIA"?"text_and_media":t==="FILE_UPLOAD"?"file_upload":"radio"}function j(c,t,a){if(c.toUpperCase()==="NPS_SCALE")return"nps";let i=t.find(e=>e.key==="SCALE_TYPE")?.value?.[0]?.toUpperCase();return t.find(e=>e.key==="INPUT_TYPE")?.value?.[0]?.toUpperCase()==="SLIDER"?"slider":i==="CSAT"||i==="STAR"||i==="EMOJI"||a>0&&a<=5?"csat":"nps"}function Z(c=[],t){let a=c.filter(l=>l.additional?.isHintText&&!l.hidden).map(l=>t&&l.translations?.[t]?.answerText||l.answerText||"").filter(Boolean);return a.length>=3?{minLabel:a[0],midLabel:a[1],maxLabel:a[2]}:{minLabel:a[0],maxLabel:a[1]}}var K2=["#e2001a","#e4251b","#ec610a","#f18b00","#f7b200","#fcd900","#d2dc00","#9fca00","#6bb300","#339a00","#008000"];function R(c){return K2[c]??"#e20074"}function T(c,t,a){if(t==="text")return[];let i=(c.answerDetails??[]).filter(r=>!r.hidden&&!r.additional?.isHintText);return i.length>0?i.map((r,e)=>{let h=a&&r.translations?.[a]?.answerText||r.answerText||"",s=r.answerText??"",v=Number(s),o=Number.isFinite(v)&&s.trim()!==""?v:s,n={id:r.id??String(e),label:h,value:o};return t==="rating"&&typeof o=="number"&&(n.color=R(o)),n}):t==="rating"?Array.from({length:11},(r,e)=>({id:String(e),label:String(e),value:e,color:R(e)})):[]}function J(c){let t=c.questionConfigs??[],a=c.additional??{},l=t.find(n=>n.key==="SLIDER_MIN")?.value?.[0]??t.find(n=>n.key==="MIN_VALUE")?.value?.[0]??a.sliderMin,i=t.find(n=>n.key==="SLIDER_MAX")?.value?.[0]??t.find(n=>n.key==="MAX_VALUE")?.value?.[0]??a.sliderMax,r=t.find(n=>n.key==="SLIDER_STEP")?.value?.[0]??a.sliderStep,e=t.find(n=>n.key==="DEFAULT_VALUE")?.value?.[0]??a.defaultValue,h=l!==void 0?Number(l):0,s=i!==void 0?Number(i):10,v=r!==void 0&&Number(r)>0?Number(r):1,o=e!==void 0?Number(e):void 0;return{min:Number.isFinite(h)?h:0,max:Number.isFinite(s)?s:10,step:Number.isFinite(v)?v:1,...o!==void 0&&Number.isFinite(o)?{defaultValue:o}:{}}}function w1(c,t,a,l){let i=(c.answerDetails??[]).filter(d=>!d.hidden&&!d.additional?.isHintText),r=j(c.answerType??"",a,i.length);if(r==="csat"){let{minLabel:d,maxLabel:g}=Z(c.answerDetails,l),z=T(c,"radio",l),L=a.map(m=>m.value?.[0]||"").join(" ").toUpperCase(),u=(c.dataSubType||"").toUpperCase(),p=`${L} ${u}`,x=a.find(m=>m.key==="BUTTON_TYPE")?.value?.[0]?.toLowerCase()||void 0;x||(p.includes("EMOJI")||p.includes("CSAT")||p.includes("SMILEY")||p.includes("FACE")?x="emoji":p.includes("STAR")?x="star":p.includes("GRAPHIC")||p.includes("SLIDER")?x="graphics":p.includes("DROP")?x="dropdown":p.includes("SELECT")?x="selectbox":p.includes("RADIO")?x="radio":p.includes("NUMBER")&&(x="numbered"));let f=a.find(m=>m.key==="ENABLE_NON_APPLICABLE")?.value?.[0]==="true",H=a.find(m=>m.key.includes("REVERSE"))?.value?.[0]?.toLowerCase()==="true"||c.additional?.reverseScaleOrder===!0||c.additional?.reverseScale===!0,P=a.find(m=>m.key==="LABEL_POSITIONING")?.value?.[0]?.toLowerCase()||void 0;if(H){z=[...z].reverse();let m=d;d=g,g=m}return f&&z.push({id:"na",label:"N/A",value:null}),{...t,type:"csat",options:z,...d?{minLabel:d}:{},...g?{maxLabel:g}:{},...x?{buttonType:x}:{},...f?{hasNotApplicable:f}:{},...H?{reverseScaleOrder:H}:{},...P?{labelPosition:P}:{}}}if(r==="slider"){let{minLabel:d,maxLabel:g}=Z(c.answerDetails,l),z=J(c);return{...t,type:"slider",...z,...d?{minLabel:d}:{},...g?{maxLabel:g}:{}}}if(r==="rating_scale"){let{minLabel:d,midLabel:g,maxLabel:z}=Z(c.answerDetails,l),L=T(c,"radio",l),u=a.find(f=>f.key.includes("REVERSE"))?.value?.[0]?.toLowerCase()==="true"||c.additional?.reverseScaleOrder===!0||c.additional?.reverseScale===!0;if(u){L=[...L].reverse();let f=d;d=z,z=f}let p;return g&&L.length>0&&(p=(L.length-1)/2),{...t,type:"rating_scale",options:L,...d?{minLabel:d}:{},...g?{midLabel:g}:{},...p!==void 0?{midLabelIndex:p}:{},...z?{maxLabel:z}:{},...u?{reverseScaleOrder:u}:{}}}let{minLabel:e,midLabel:h,maxLabel:s}=Z(c.answerDetails,l),v=T(c,"rating",l),o=a.find(d=>d.key.includes("REVERSE"))?.value?.[0]?.toLowerCase()==="true"||c.additional?.reverseScaleOrder===!0||c.additional?.reverseScale===!0;if(o){v=[...v].reverse();let d=e;e=s,s=d}let n;return h&&(n=v.length===11?o?2.5:7.5:(v.length-1)/2),{...t,type:"rating",options:v,...e?{minLabel:e}:{},...h?{midLabel:h}:{},...n!==void 0?{midLabelIndex:n}:{},...s?{maxLabel:s}:{},...o?{reverseScaleOrder:o}:{}}}function F1(c,t,a){let l=T(c,"radio",a);return{...t,type:"radio",options:l}}function B1(c,t,a,l){let r=a.find(v=>v.key==="CONTENT_TYPE")?.childConfigs?.find(v=>v.key==="MAX_CHARACTER_COUNT"),e=r?.value?.[0]?Number(r.value[0]):void 0,h=c.answerDetails?.[0],s=h?l&&h.translations?.[l]?.answerText||h.answerText:void 0;return{...t,type:"text",...e!==void 0?{maxCharacterCount:e}:{},...s?{placeholder:s}:{}}}function H1(c,t,a){let l=c;if(a&&l.answerDetails&&l.answerDetails.length>=2){let r=t&&l.answerDetails[0].translations?.[t]?.answerText||l.answerDetails[0].answerText||"";if(r)return r}let i=t&&c.translations?.[t]?.questionText||c.questionText||c.answerText||"";return a&&i.includes(":")?i.split(":")[0].trim():i}function Y2(c,t,a){let l=c;if(a&&l.answerDetails&&l.answerDetails.length>=2){let e=t&&l.answerDetails[1].translations?.[t]?.answerText||l.answerDetails[1].answerText||"";if(e)return e}let i=t&&c.translations?.[t]?.description||c.description||c.additional?.rightLabel||c.additional?.rightStatement||c.additional?.rightText;if(typeof i=="string"&&i.trim()!=="")return i;let r=t&&c.translations?.[t]?.questionText||c.questionText||c.answerText||"";if(a&&r.includes(":"))return r.split(":").slice(1).join(":").trim()}function U(c,t,a){let l=(c.matrixRowQuestions?.length??0)>0?c.matrixRowQuestions:c.childSurveyQuestions;return l&&l.length>0?l.filter(i=>i.id).map(i=>({id:i.id,text:H1(i,t,a),rightText:Y2(i,t,a)})):(c.answerDetails??[]).filter(i=>!i.hidden&&!i.additional?.isHintText).map((i,r)=>({id:`row_${r}`,text:t&&i.translations?.[t]?.answerText||i.answerText||"",rightText:i.additional?.rightLabel||i.additional?.rightStatement||i.additional?.rightText}))}function X(c,t,a){return c.matrixColumnQuestions&&c.matrixColumnQuestions.length>0?c.matrixColumnQuestions.filter(l=>l.id).map(l=>{let i=a&&l.translations?.[a]?.answerText||l.answerText||H1(l,a),r=l.answerText??i,e=Number(r),h=Number.isFinite(e)&&String(r).trim()!==""?e:r,s={id:l.id,label:i,value:h};return t&&typeof h=="number"&&(s.color=R(h)),s}):(c.answerDetails??[]).filter(l=>!l.hidden&&!l.additional?.isHintText).map((l,i)=>{let r=a&&l.translations?.[a]?.answerText||l.answerText||"",e=Number(r),h=Number.isFinite(e)&&r.trim()!==""?e:r,s={id:`col_${i}`,label:r,value:h};return t&&typeof h=="number"&&(s.color=R(h)),s})}function K(c,t){let a=Number(c.additional?.sliderMin??0),l=Number(c.additional?.sliderMax??10),i=Number(c.additional?.sliderStep??1);return U(c,t).map(e=>({...e,min:Number.isFinite(a)?a:0,max:Number.isFinite(l)?l:10,step:Number.isFinite(i)&&i>0?i:1}))}function V1(c,t){let a=(c.answerType??"").toUpperCase(),l=a==="RATING_MATRIX"?"RATING_MATRIX":a==="CSAT_MATRIX"?"CSAT_MATRIX":"CFM_MATRIX",i=c.questionConfigs??[],r=i.find(o=>o.key==="MATRIX_TYPE"),e=r?.value?.[0]?.toLowerCase(),h=e==="bipolar",s=U(c,t,h),v=X(c,l==="RATING_MATRIX",t);return{apiType:a,subType:l,configs:i,matrixTypeConfig:r,matrixType:e,isBipolar:h,rows:s,columns:v}}function S1(c,t){let{rows:a,columns:l}=t,i=l.map(o=>Number(o.value)).filter(o=>!isNaN(o)),r=i.length>0?Math.min(...i):1,e=i.length>0?Math.max(...i):l.length,h=1,s=l.length,v=a.map(o=>({...o,min:r,max:e,step:h}));return{...c,type:"slider_matrix",rows:v,ticks:s}}function A1(c,t,a,l){let{subType:i,configs:r,rows:e}=a,h=[...a.columns],s=r.map(u=>u.value?.[0]||"").join(" ").toUpperCase(),v=(c.dataSubType||"").toUpperCase(),o=`${s} ${v}`,n;o.includes("EMOJI")||o.includes("CSAT")||o.includes("SMILEY")||o.includes("FACE")?n="emoji":o.includes("STAR")?n="star":o.includes("GRAPHIC")||o.includes("SLIDER")?n="graphics":o.includes("DROP")?n="dropdown":o.includes("SELECT")?n="selectbox":o.includes("RADIO")?n="radio":o.includes("NUMBER")&&(n="numbered");let C=r.find(u=>u.key==="NOT_APPLICABLE_OPTIONS")?.value?.[0]==="true"||r.find(u=>u.key==="ENABLE_NON_APPLICABLE")?.value?.[0]==="true",d=r.find(u=>u.key.includes("REVERSE"))?.value?.[0]?.toLowerCase()==="true"||c.additional?.reverseScaleOrder===!0||c.additional?.reverseScale===!0,g=(c.answerDetails??[]).filter(u=>u.additional?.isHintText&&!u.hidden).map(u=>l&&u.translations?.[l]?.answerText||u.answerText||"").filter(Boolean);d&&(h=[...h].reverse(),g=[...g].reverse()),C&&h.push({id:"na",label:"N/A",value:null});let z=JSON.stringify(r).toUpperCase(),L="standard";return z.includes("CAROUSEL")?L="carousel":z.includes("DROPDOWN")&&(L="dropdown"),{...t,type:"matrix",subType:i,rows:e,columns:h,...n?{buttonType:n}:{},...C?{hasNotApplicable:C}:{},...d?{reverseScaleOrder:d}:{},...g.length>0?{labels:g}:{},...L!=="standard"?{matrixFormat:L}:{}}}function y1(c,t,a,l){let{subType:i,configs:r,matrixType:e,rows:h}=a,s=[...a.columns],v=JSON.stringify(r).toUpperCase(),o="standard";v.includes("CAROUSEL")?o="carousel":v.includes("DROPDOWN")&&(o="dropdown"),console.log("CFM_MATRIX Configs:",JSON.stringify(r,null,2)),console.log("Detected matrixFormat:",o);let C=r.some(x=>x.key.includes("MULTI")||x.value?.[0]?.toUpperCase().includes("MULTI")||x.key.includes("ANSWER")&&x.value?.[0]?.toUpperCase().includes("MULTI")||x.key.includes("SELECT")&&x.value?.[0]?.toUpperCase().includes("MULTI"))?"multiple":"single",d=r.find(x=>x.key==="TRANSPOSE_TABLE")?.value?.[0]?.toLowerCase()==="true",g=r.find(x=>x.key==="REPEAT_SCALE")?.value?.[0]?.toLowerCase()==="true",z=r.find(x=>x.key==="NOT_APPLICABLE_OPTIONS")?.value?.[0]==="true"||r.find(x=>x.key==="ENABLE_NON_APPLICABLE")?.value?.[0]==="true",L=z?!1:d;z&&s.push({id:"na",label:"N/A",value:null});let u=r.find(x=>x.key==="ENABLE_SCALE")?.value?.[0]?.toLowerCase()!=="false",p;return e==="bipolar"&&(p=(c.answerDetails??[]).filter(x=>x.additional?.isHintText&&!x.hidden).map(x=>l&&x.translations?.[l]?.answerText||x.answerText||"").filter(Boolean)),{...t,type:"matrix",subType:i,rows:h,columns:s,...e?{matrixType:e}:{},matrixFormat:o,...C?{answerType:C}:{},...L?{transposeTable:L}:{},...g?{repeatScale:g}:{},...z?{hasNotApplicable:z}:{},...p&&p.length>0?{labels:p}:{},enableScale:u}}function b1(c,t,a){let l=V1(c,a);return l.matrixTypeConfig?.childConfigs?.find(e=>e.key==="MATRIX_FORMAT")?.value?.[0]?.toUpperCase()==="SLIDER"?S1(t,l):l.subType==="CSAT_MATRIX"||l.subType==="RATING_MATRIX"?A1(c,t,l,a):y1(c,t,l,a)}function R1(c,t,a){let l=c.questionConfigs||[],i=l.find(m=>m.key==="SLIDER_TICKS_AND_VALUES"),r=i?.childConfigs||[],e=r.find(m=>m.key==="TICK_START")?.value?.[0],h=r.find(m=>m.key==="TICK_END")?.value?.[0],s=r.find(m=>m.key==="STEP_SIZE")?.value?.[0],v=i?.value?.[0],o=e!==void 0?Number(e):0,n=h!==void 0?Number(h):10,C=s!==void 0?Number(s):1,d=v!==void 0?Number(v):void 0,g={...c,additional:{...c.additional,sliderMin:o,sliderMax:n,sliderStep:C}},z=K(g,a),L=(c.answerDetails||[]).filter(m=>m.additional?.isHintText).map(m=>a&&m.translations?.[a]?.answerText||m.answerText||"").filter(Boolean),u=m=>{for(let V of m){let S=l.find(y=>y.key===V)||r.find(y=>y.key===V);if(S&&S.value!==void 0&&S.value!==null&&S.value.length>0)return S.value[0]?.toString().toLowerCase()==="true"}return!1},p=l.find(m=>m.key==="SCALE_TYPE"||m.key==="VIEW_VARIANT")?.value?.[0]?.toUpperCase().includes("GRAPHIC"),x=u(["ENABLE_INPUT_BOX","SHOW_INPUT_BOX","INPUT_BOX","ENABLE_INPUT"]),f=u(["SHOW_VALUE","DISPLAY_VALUES"]),H=u(["NOT_APPLICABLE","NOT_APPLICABLE_OPTIONS"]),P=(c.answerDetails||[]).filter(m=>!m.additional?.isHintText&&!m.hidden).map(m=>m.translations?.[a||""]?.answerText||m.answerText||""),B;if(d!==void 0&&d>1){B=[];let m=(n-o)/(d-1);for(let V=0;V<d;V++){let S=o+V*m,y=Number(S.toFixed(2)),O2=P[V]||y.toString(),G2=`hsl(${Math.round(V/(d-1)*120)}, 90%, 40%)`;B.push({value:y,label:O2,color:G2})}}return{...t,type:"slider_matrix",rows:z,...L.length>0?{labels:L}:{},...d!==void 0&&Number.isFinite(d)?{ticks:d}:{},...B?{tickValues:B}:{},enableInputBox:x,displayValues:f,enableNotApplicable:H,...p?{sliderType:"graphics"}:{}}}function Y(c){let t=c.additional??{},a=t.mediaUrl??t.previewUrl,l=t.mediaMimeType,i=t.title,r=c.questionContainerAssets;if(Array.isArray(r)&&r.length>0){let e=r[0];(e.source||e.previewImageUrl)&&(a=e.source||e.previewImageUrl),e.type&&(e.type==="PHOTO"||e.type==="IMAGE"?l="image/*":e.type==="VIDEO"?l="video/*":l=e.type)}return{mediaUrl:a,mediaMimeType:l,mediaTitle:i}}function T1(c,t){let{mediaUrl:a,mediaMimeType:l,mediaTitle:i}=Y(c),r=c.questionConfigs||[],e=r.find(n=>n.key==="TEXT_AND_MEDIA_ALIGNMENT"),h=r.find(n=>n.key==="TEXT_AND_MEDIA_SIZE"),s=e?.value?.[0],v=h?.value?.[0]?Number(h.value[0]):void 0,o=t.text;if(Array.isArray(c.answerDetails)){let n=c.answerDetails.find(C=>C.additional?.textAndMediaFieldType==="HEADER");n&&n.answerText&&(o=n.answerText)}return{...t,text:o,type:"text_and_media",...a?{mediaUrl:a}:{},...l?{mediaMimeType:l}:{},...i?{mediaTitle:i}:{},...s?{mediaAlignment:s}:{},...v?{mediaSize:v}:{}}}function k1(c,t,a){let l=c.questionConfigs||[],i=c.answerDetails?.find(z=>z.additional?.fieldType==="UPLOAD_MESSAGE"),r=a&&i?.translations?.[a]?.answerText||i?.answerText||"",h=l.find(z=>z.key==="SUPPORTED_FILE_FORMAT")?.value?.map(z=>z.toUpperCase().replace(/^\./,""))||[],s=l.find(z=>z.key==="MAX_FILE_COUNT"),v=s?.value?.[0]?Number(s.value[0]):void 0,o=l.find(z=>z.key==="FILE_SIZE_LIMIT"),n=o?.childConfigs?.find(z=>z.key==="SIZE_LIMIT_ID")?.value?.[0],C=o?.childConfigs?.find(z=>z.key==="SIZE_FORMAT_ID")?.value?.[0],d=n?Number(n):void 0,g=C==="PER_FILE"||C==="IN_TOTAL"?C:void 0;return{...t,type:"file_upload",...r?{uploadMessage:r}:{},...h.length>0?{supportedFileFormats:h}:{},...v!==void 0?{maxFileCount:v}:{},...d!==void 0?{fileSizeLimit:d}:{},...g?{fileSizeLimitType:g}:{}}}function $2(c,t,a,l){let i=t.find(u=>u.key==="REQUIRED")?.value?.[0]==="true",r=t.find(u=>u.key==="REQUIRED_ERROR_MESSAGE"),e=r?.value?.[0];a&&r?.translations?.[a]?.value?.[0]&&(e=r.translations[a].value[0]);let h=a&&c.translations?.[a]?.questionRichText||a&&c.translations?.[a]?.questionText||c.questionRichText||c.questionText||"";l&&(h=h.replace(/\{\{(\w+)\}\}/g,(u,p)=>l[p]!==void 0?l[p]:u));let s=a&&c.translations?.[a]?.descriptionRichText||a&&c.translations?.[a]?.description||c.descriptionRichText||c.description||(typeof c.additional?.descriptionRichText=="string"?c.additional.descriptionRichText:"")||(typeof c.additional?.description=="string"?c.additional.description:"")||"";if(!s){let u=t.find(p=>p.key.includes("DESCRIPTION"));s=u?.value?.[0]||"",a&&u?.translations?.[a]?.valueRichText?.[0]?s=u.translations[a].valueRichText[0]:a&&u?.translations?.[a]?.value?.[0]&&(s=u.translations[a].value[0])}s&&l&&(s=s.replace(/\{\{(\w+)\}\}/g,(u,p)=>l[p]!==void 0?l[p]:u));let o=c.questionContainerAssets?.[0],n=o?.source||o?.mediaUrl||o?.previewImageUrl,C=o?.mediaMimeType,g=t.find(u=>u.key==="QUESTION_CONTAINER_MEDIA_ALIGNMENT")?.value?.[0],z=t.find(u=>u.key==="TEXT_AND_MEDIA_SIZE"),L=z?.value?.[0]?Number(z.value[0]):void 0;return{id:c.id??"",text:h,...s?{description:s}:{},required:i,...e?{requiredErrorMessage:e}:{},...c.questionNumber!==void 0?{questionNumber:c.questionNumber}:{},...n?{containerMediaUrl:n}:{},...C?{containerMediaMimeType:C}:{},...g?{containerMediaAlignment:g}:{},...L!==void 0?{containerMediaSize:L}:{}}}function P1(c,t,a){let l=c.questionConfigs??[],i=$2(c,l,t,a);switch(_(c.answerType)){case"rating":return w1(c,i,l,t);case"text":return B1(c,i,l,t);case"matrix":case"rating_matrix":return b1(c,i,t);case"slider_matrix":return R1(c,i,t);case"text_and_media":return T1(c,i);case"file_upload":return k1(c,i,t);default:return F1(c,i,t)}}function Z1(c,t,a){let l=c.cfmSurveyDTO;return!l||!Array.isArray(l.surveyPages)?[]:l.surveyPages.map((i,r)=>{let e=(i.questionHolders??[]).map(h=>h.question).filter(h=>!!h).map(h=>P1(h,t,a));return{id:`page_${r}`,title:`Page ${r+1}`,questions:e}})}function E1(c){return c.instanceId?.trim()?{instanceId:c.instanceId.trim(),language:c.surveyLanguage??c.cfmSurveyDTO?.baseLanguage??"en"}:null}function c4(c,t){return t??c.surveyLanguage??c.cfmSurveyDTO?.baseLanguage??"en"}function D1(c,t,a){let l=c4(c,t),i=f1(c),r=Z1(c,l,a);return{id:c.cfmSurveyDTO?.id??"",language:l,languages:i,pages:r}}function I1(c){M.info("Starting survey layout API fetch...",{url:c})}function $(c,t,a){M.perf({apiName:"GET Survey Layout",durationMs:c,status:t,url:a,success:!1})}function U1(c,t,a,l){M.perf({apiName:"GET Survey Layout",durationMs:c,status:t,url:a,payloadSize:l,success:!0})}function q1(c){M.success("Raw survey layout fetched successfully",c)}function N1(c){M.error("Failed to fetch raw survey layout",c)}function O1(){M.warn("Cannot map survey: apiResponse is null or undefined")}function G1(c){M.success("Mapped survey layout successfully",c)}function Q1(c){M.error("Failed to map survey layout",c)}function F(c){if(c.eventName==="survey_session_summary"){let{completed:t,totalDurationMs:a,maxVisitedPageIndex:l,totalQuestionsCount:i,answeredQuestionsCount:r,skippedQuestionsCount:e,skippedQuestionIds:h,validationErrorsCount:s,backtrackCount:v}=c.metadata;M.analytics(`Event: ${c.eventName} - SESSION SUMMARY TABLE:`);let o=[{Metric:"Completion Status",Value:t?"COMPLETED \u2705":"ABANDONED \u274C"},{Metric:"Total Time Spent",Value:`${(a/1e3).toFixed(2)} seconds`},{Metric:"Max Page Index Reached",Value:`${l}`},{Metric:"Total Questions",Value:i},{Metric:"Answered Questions",Value:r},{Metric:"Skipped Optional Questions",Value:e},{Metric:"Skipped Question IDs",Value:h.join(", ")||"None"},{Metric:"Validation Errors Triggered",Value:s},{Metric:"Backtrack Count",Value:v},{Metric:"Validation Error History",Value:c.metadata.validationHistory?.map(n=>`[Page ${n.pageIndex}] Attempt ${n.attemptNumber}: ${Object.keys(n.errors).join(", ")}`).join(" | ")||"NO Validation Erros Occurred"}];console.table(o)}else M.analytics(`Event: ${c.eventName}`,c.metadata)}function W1(c,t,a,l){F({eventName:"survey_fetch_latency",metadata:{durationMs:c,status:t,success:!0,url:a,payloadSize:l}})}function c1(c,t,a){F({eventName:"api_error",metadata:{apiName:"GET Survey Layout",status:c,url:t,errorMessage:a}})}async function l4(c){let t=performance.now();I1(c);try{let a=await fetch(c,{method:"GET",headers:{Accept:"application/json"},cache:"force-cache"}),l=performance.now()-t;if(!a.ok)throw $(l,a.status,c),c1(a.status,c,`Survey fetch failed (${a.status})`),new Error(`Survey fetch failed (${a.status})`);let i=await a.json(),r=JSON.stringify(i),h=`${(new Blob([r]).size/1024).toFixed(2)} KB`;return U1(l,a.status,c,h),W1(l,a.status,c,h),q1(i),i}catch(a){let l=performance.now()-t;throw $(l,"FAILED",c),c1("FAILED",c,a?.message||String(a)),N1(a),a}}function _1(c){let t=C1(c?.instanceId),a=c?.language,l=c?.placeholders,{data:i,error:r,isLoading:e,isSuccess:h}=a4({queryKey:["survey",t],queryFn:()=>l4(t),enabled:!!t},I),s=t4(()=>{if(!h)return{survey:null,session:null};if(!i)return O1(),{survey:null,session:null};try{let v=D1(i,a,l),o=E1(i),n=o?{...o,language:v.language}:null;return G1(v),{survey:v,session:n}}catch(v){return Q1(v),{survey:null,session:null}}},[i,h,a]);return{survey:s.survey,session:s.session,fetching:e,fetchError:r}}import{useState as g1,useRef as f4}from"react";import{useCallback as i4}from"react";import{useMutation as e4}from"@tanstack/react-query";function j1(c,t){M.info("Starting survey response HTTP POST...",{url:c,requestBody:t})}function J1(c,t){M.warn(c,t)}function X1(c,t,a,l,i){M.perf({apiName:"POST Submit Response",durationMs:c,status:t,url:a,requestSize:l,responseSize:i,success:!0})}function t1(c,t,a,l){M.perf({apiName:"POST Submit Response",durationMs:c,status:t,url:a,requestSize:l,success:!1})}function K1(c){M.success("Survey response submitted successfully",{responseId:c})}function Y1(c,t){M.error(c,t)}function $1(c){M.debug("Resolved raw inputs to submit schema:",c)}function c2(c){M.debug("Constructed JSON request body:",c)}function t2(c){M.error("Failed to execute submit callback",c)}function a2(c,t,a,l,i){F({eventName:"survey_submit_latency",metadata:{durationMs:c,status:t,success:!0,url:a,requestSize:l,responseSize:i}})}function a1(c,t,a){F({eventName:"api_error",metadata:{apiName:"POST Submit Response",status:c,url:t,errorMessage:a}})}var l2="https://custom-p0.feedbook.me/api/feedback/survey/responseV2";function r2(c,t="en"){let a=new URLSearchParams({instanceId:c,surveySubmitted:"true",surveyLanguage:t});return`${l2}?${a.toString()}`}function i2(c,t){let a={},l={},i={};for(let r of t)r.type==="file_upload"&&(i[r.id]=[]);for(let r of t){let e=c[r.id];if(e!=null)switch(r.type){case"text_and_media":break;case"file_upload":{Array.isArray(e)&&(i[r.id]=e);break}case"matrix":case"rating_matrix":case"slider_matrix":{if(typeof e=="object"&&!Array.isArray(e)){let h=e;for(let[s,v]of Object.entries(h))if(v!=null){let o=`${r.id}_${s}`;a[o]=[String(v)]}}break}default:(typeof e=="string"||typeof e=="number")&&(a[r.id]=[String(e)]);break}}return{questionToAnswers:a,quesIdVsAttachmentDetails:i,optionLevelAnswers:l,conjointTasks:[]}}function r4(c){return typeof c=="object"&&c!==null&&"instanceId"in c&&"answers"in c}function e2(c,t,a){if(r4(c))return{...c,surveyLanguage:c.surveyLanguage??t?.language??"en",questions:c.questions??a?.pages.flatMap(l=>l.questions)??[]};if(!t?.instanceId)throw new Error("Survey session not ready. Fetch survey before submitting.");return{answers:c,instanceId:t.instanceId,surveyLanguage:t.language??"en",questions:a?.pages.flatMap(l=>l.questions)??[]}}async function h4({url:c,requestBody:t}){let a=performance.now(),i=`${(new Blob([JSON.stringify(t)]).size/1024).toFixed(2)} KB`;j1(c,t);try{let r=await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),e=await r.json().catch(n=>(J1("Failed to parse JSON response during submission",n),null)),h=performance.now()-a,v=`${((e?new Blob([JSON.stringify(e)]).size:0)/1024).toFixed(2)} KB`;if(!r.ok)throw t1(h,r.status,c,i),a1(r.status,c,`Submit failed (${r.status}): ${JSON.stringify(e)}`),new Error(`Submit failed (${r.status}): ${JSON.stringify(e)}`);let o=e?.responseId??"";return X1(h,r.status,c,i,v),a2(h,r.status,c,i,v),K1(o),{success:!0,responseId:o}}catch(r){let e=performance.now()-a;throw t1(e,"FAILED",c,i),a1("FAILED",c,r?.message||String(r)),Y1("Failed to submit survey response",r),r}}function h2(c,t){let a=e4({mutationFn:({url:i,requestBody:r})=>h4({url:i,requestBody:r})},I);return{submit:i4(async i=>{try{let r=e2(i,c,t);$1(r);let e=r.surveyLanguage??"en",h=i2(r.answers,r.questions??[]);c2(h);let s=r2(r.instanceId,e);return await a.mutateAsync({url:s,requestBody:h})}catch(r){throw t2(r),r}},[c,t,a]),data:a.data??null,loading:a.isPending,error:a.error}}import{useState as o4,useEffect as n4,useMemo as v4}from"react";function s2(c){return c.type==="text_and_media"}function s4(c,t){return c.rows.every(a=>{let l=t[a.id];return l!==void 0&&l!==""})}function l1(c,t){if(s2(c))return!0;let a=t[c.id];switch(c.type){case"matrix":case"rating_matrix":case"slider_matrix":return typeof a!="object"||Array.isArray(a)?!1:s4(c,a);default:return a!==void 0&&a!==""}}function r1(c,t,a){let l={},i=a?.startsWith("de")?"Beantworten Sie bitte diese Frage bevor Sie fortfahren.":"Please answer this question before you proceed.";return c.forEach(r=>{s2(r)||r.required&&!l1(r,t)&&(l[r.id]=r.requiredErrorMessage??i)}),l}function o2(c,t,a){let l={},i="",r=-1;for(let e=0;e<c.length;e++){let h=r1(c[e].questions,t,a);Object.keys(h).length>0&&(l={...l,...h},r===-1&&(r=e,i=Object.keys(h)[0]))}return r!==-1?{errors:l,errorPageIndex:r,firstErrorId:i}:null}function n2(c){return c.type==="text_and_media"}function v2(c){return!c||!Array.isArray(c.pages)?0:c.pages.reduce((t,a)=>{let l=(a.questions??[]).filter(i=>!n2(i));return t+l.length},0)}function z2(c,t,a=0){if(!c||!t||!Array.isArray(c.pages))return 0;let l=0;return c.pages.forEach((i,r)=>{let e=(i.questions??[]).filter(h=>!n2(h));r<a?l+=e.length:e.forEach(h=>{l1(h,t)&&l++})}),l}function d2(c,t){return t<=0?0:Math.min(100,Math.max(0,Math.round(c/t*100)))}function g2({survey:c,values:t,currentPageIndex:a=0}){let[l,i]=o4(0);return n4(()=>{a>l&&i(a)},[a,l]),v4(()=>{let r=v2(c),e=z2(c,t,l),h=d2(e,r),s=r>0&&e===r;return{totalQuestionsCount:r,answeredQuestionsCount:e,progressPercentage:h,isComplete:s}},[c,t,l])}import{useEffect as z4}from"react";function i1(c){let{currentPageIndex:t,paginationRefs:a}=c;z4(()=>{a.current&&(a.current.pageStartTime=performance.now())},[t,a])}import{useEffect as d4}from"react";function e1(c){let{currentPageIndex:t,paginationRefs:a}=c;d4(()=>{a.current&&t>a.current.maxVisitedPageIndex&&(a.current.maxVisitedPageIndex=t)},[t,a])}import{useCallback as u4}from"react";function u2(c,t){M.info(`Answer changed for question: ${c}`,{value:t})}function k(c,t){M.warn(c,t)}function p2(){M.info("Initiating survey submission...")}function M2(c){M.info(`Navigating back from page index: ${c}`)}function x2(c){M.info(`Navigating next from page index: ${c}`)}function L2(c){M.error("Error encountered during pagination submit trigger",c)}function E(c){return typeof document>"u"?null:document.getElementById(c)||null}function g4(c){return c.closest("main")||c.closest("form")||c.parentElement||c}function q(c,t){try{let l=c[t]?.questions?.[0];l?setTimeout(()=>{try{let i=E(l.id);i?g4(i).scrollIntoView({behavior:"smooth",block:"start"}):window.scrollTo({top:0,behavior:"smooth"})}catch(i){k("Failed to scroll page first question into view",i)}},50):window.scrollTo({top:0,behavior:"smooth"})}catch(a){k("Failed to trigger scroll navigation",a)}}function h1(c){let{currentPageIndex:t,setCurrentPageIndex:a,trackPageTime:l,pages:i,values:r,paginationRefs:e}=c;return u4(()=>{if(t>0){M2(t),l(t);let h=e.current;if(h){h.backtrackCount+=1;let v=t-1,o=i[v]?.questions??[],n={};o.forEach(C=>{n[C.id]=r[C.id]}),h.backtrackSnapshots[v]={fromPageIndex:t,snapshot:n}}let s=t-1;a(s),q(i,s)}},[t,a,l,i,r,e])}import{useCallback as p4}from"react";function s1(c){let{setValues:t,setValidationErrors:a}=c;return p4((l,i)=>{u2(l,i),t(r=>({...r,[l]:i})),a(r=>({...r,[l]:""}))},[t,a])}import{useCallback as M4}from"react";function m2(){M.success("Survey validation passed on submit")}function C2(c){M.warn("Full survey validation failed on submit",{validation:c})}function N(c){M.error("Failed to run survey validation on submit",c)}function f2(c){M.warn("Page validation failed",{errors:c})}function w2(c,t){F({eventName:"page_time_spent",metadata:{pageIndex:c,durationMs:t}})}function O(c,t,a){F({eventName:"validation_error",metadata:{pageIndex:c,errors:t,attemptNumber:a}})}function o1(c,t){let{survey:a,pages:l,values:i,currentPageIndex:r,setCurrentPageIndex:e,setValidationErrors:h,trackPageTime:s,trackOptionalSkips:v,checkBacktrackChanges:o,paginationRefs:n}=c,C=l[r],d=C?.questions??[];return M4(()=>{if(!a||!C)return;let g={};try{g=r1(d,i,a.language)}catch(L){N(L)}let z=n.current;if(z){if(Object.keys(g).length>0){f2(g);let L=(z.validationAttempt[r]||0)+1;z.validationAttempt[r]=L,z.validationErrorsCount+=1,z.validationHistory.push({pageIndex:r,errors:g,attemptNumber:L}),O(r,g,L),h(g);let u=Object.keys(g)[0];setTimeout(()=>{try{let p=E(u);p&&p.scrollIntoView({behavior:"smooth",block:"center"})}catch(p){k("Failed to scroll validation error element into view",p)}},50);return}h({}),delete z.validationAttempt[r],s(r),v(r),o(r),r<l.length-1?(x2(r),e(L=>L+1),q(l,r+1)):t()}},[a,C,d,i,r,e,h,s,v,o,l,t,n])}import{useCallback as x4}from"react";function F2(c,t,a,l,i,r,e,h,s,v){F({eventName:"survey_session_summary",metadata:{maxVisitedPageIndex:t,totalDurationMs:a,completed:c,totalQuestionsCount:l,answeredQuestionsCount:i,skippedQuestionsCount:r,skippedQuestionIds:e,validationErrorsCount:h,backtrackCount:s,validationHistory:v}})}function B2(c,t){F({eventName:"optional_question_skipped",metadata:{questionId:c,pageIndex:t}})}function H2(c,t,a){F({eventName:"backtrack_revisited",metadata:{fromPageIndex:c,toPageIndex:t,changedAnswers:a}})}function n1(c){let{survey:t,pages:a,values:l,submit:i,currentPageIndex:r,setCurrentPageIndex:e,setValidationErrors:h,trackPageTime:s,trackOptionalSkips:v,checkBacktrackChanges:o,totalQuestionsCount:n,paginationRefs:C}=c;return x4(async()=>{if(!t)return;p2();let d=null;try{d=o2(a,l,t.language),d||m2()}catch(z){N(z)}let g=C.current;if(g){if(d){C2(d);let z=(g.validationAttempt[d.errorPageIndex]||0)+1;g.validationAttempt[d.errorPageIndex]=z,g.validationErrorsCount+=1,g.validationHistory.push({pageIndex:d.errorPageIndex,errors:d.errors,attemptNumber:z}),O(d.errorPageIndex,d.errors,z),h(d.errors),e(d.errorPageIndex),setTimeout(()=>{try{let L=E(d.firstErrorId);L&&L.scrollIntoView({behavior:"smooth",block:"center"})}catch(L){k("Failed to scroll validation error element into view",L)}},100);return}h({}),delete g.validationAttempt[r],s(r),v(r),o(r);try{let z=await i(l);if(z&&z.success&&!g.hasLoggedSummary){let L=performance.now()-g.sessionStartTime,u=[];a.forEach(x=>{x.questions.forEach(f=>{if(!f.required){let H=l[f.id];(H===void 0||H==="")&&u.push(f.id)}})});let p=u.length;F2(!0,g.maxVisitedPageIndex,L,n,n-p,p,u,g.validationErrorsCount,g.backtrackCount,g.validationHistory),g.hasLoggedSummary=!0}}catch(z){L2(z)}}},[t,a,l,i,r,e,h,s,v,o,n,C])}import{useCallback as L4}from"react";function v1(c,t,a){return L4(l=>{if(!a.current)return;let i=a.current.backtrackSnapshots[l];if(i){let r=c[l]?.questions??[],e={},h=!1;r.forEach(s=>{let v=i.snapshot[s.id],o=t[s.id];v!==o&&(e[s.id]={oldValue:v??null,newValue:o??null},h=!0)}),h&&H2(i.fromPageIndex,l,e),delete a.current.backtrackSnapshots[l]}},[c,t,a])}import{useCallback as m4}from"react";function z1(c,t){return m4(a=>{(c[a]?.questions??[]).forEach(i=>{let r=!i.required,e=t[i.id];r&&(e===void 0||e==="")&&B2(i.id,a)})},[c,t])}import{useCallback as C4}from"react";function d1(c){return C4(t=>{if(!c.current)return;let a=performance.now()-c.current.pageStartTime;w2(t,a)},[c])}function V2({survey:c,session:t}){let[a,l]=g1({}),[i,r]=g1({}),[e,h]=g1(0),s=c?.pages??[],o=s[e]?.questions??[],{submit:n,data:C,loading:d,error:g}=h2(t,c),{progressPercentage:z,totalQuestionsCount:L,answeredQuestionsCount:u,isComplete:p}=g2({survey:c,values:a,currentPageIndex:e}),x=f4({pageStartTime:performance.now(),sessionStartTime:performance.now(),maxVisitedPageIndex:0,validationAttempt:{},backtrackSnapshots:{},hasLoggedSummary:!1,validationErrorsCount:0,backtrackCount:0,validationHistory:[]}),f=d1(x),H=z1(s,a),P=v1(s,a,x),B={survey:c,session:t,pages:s,currentPageIndex:e,setCurrentPageIndex:h,values:a,setValues:l,validationErrors:i,setValidationErrors:r,paginationRefs:x,trackPageTime:f,trackOptionalSkips:H,checkBacktrackChanges:P,submit:n,totalQuestionsCount:L};e1(B),i1(B);let m=s1(B),V=h1(B),S=n1(B),y=o1(B,S);return{currentPageIndex:e,values:a,validationErrors:i,currentQuestions:o,pages:s,onChange:m,onBack:V,onNext:y,onSubmit:S,progressPercentage:z,totalQuestionsCount:L,answeredQuestionsCount:u,isComplete:p,submitting:d,submitError:g,submitData:C}}function F4({options:c}={}){M.setEnabled(c?.debug??!1);let{survey:t,session:a,fetching:l,fetchError:i}=_1({instanceId:c?.instanceId,language:c?.language,placeholders:c?.placeholders}),{currentPageIndex:r,values:e,validationErrors:h,currentQuestions:s,onBack:v,onNext:o,onSubmit:n,onChange:C,progressPercentage:d,submitting:g,submitError:z,submitData:L}=V2({survey:t,session:a}),u=w4(p=>{p.type==="NEXT"&&t&&r===t.pages.length-1&&(p={type:"SUBMIT"}),M.info(`Action dispatched: ${p.type}`,p);try{switch(p.type){case"NEXT":o();break;case"PREVIOUS":v();break;case"SUBMIT":n();break;case"CHANGE":C(p.payload.questionId,p.payload.value);break;default:break}}catch(x){M.error(`Error executing action: ${p.type}`,x)}},[o,v,n,C,t,r]);return{surveyQueryResults:{data:t,error:i,isLoading:l},submitSurveyResults:{data:L,error:z,isLoading:g},state:{currentPageIndex:r,currentQuestions:s,values:e,validationErrors:h,progressPercentage:d},onAction:u}}import x1 from"react";import D from"react";import S2 from"react";var u1={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},p1=S2.createContext&&S2.createContext(u1);var B4=["attr","size","title"];function H4(c,t){if(c==null)return{};var a,l,i=V4(c,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(c);for(l=0;l<r.length;l++)a=r[l],t.indexOf(a)===-1&&{}.propertyIsEnumerable.call(c,a)&&(i[a]=c[a])}return i}function V4(c,t){if(c==null)return{};var a={};for(var l in c)if({}.hasOwnProperty.call(c,l)){if(t.indexOf(l)!==-1)continue;a[l]=c[l]}return a}function G(){return G=Object.assign?Object.assign.bind():function(c){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var l in a)({}).hasOwnProperty.call(a,l)&&(c[l]=a[l])}return c},G.apply(null,arguments)}function A2(c,t){var a=Object.keys(c);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(c);t&&(l=l.filter(function(i){return Object.getOwnPropertyDescriptor(c,i).enumerable})),a.push.apply(a,l)}return a}function Q(c){for(var t=1;t<arguments.length;t++){var a=arguments[t]!=null?arguments[t]:{};t%2?A2(Object(a),!0).forEach(function(l){S4(c,l,a[l])}):Object.getOwnPropertyDescriptors?Object.defineProperties(c,Object.getOwnPropertyDescriptors(a)):A2(Object(a)).forEach(function(l){Object.defineProperty(c,l,Object.getOwnPropertyDescriptor(a,l))})}return c}function S4(c,t,a){return(t=A4(t))in c?Object.defineProperty(c,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):c[t]=a,c}function A4(c){var t=y4(c,"string");return typeof t=="symbol"?t:t+""}function y4(c,t){if(typeof c!="object"||!c)return c;var a=c[Symbol.toPrimitive];if(a!==void 0){var l=a.call(c,t||"default");if(typeof l!="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(c)}function y2(c){return c&&c.map((t,a)=>D.createElement(t.tag,Q({key:a},t.attr),y2(t.child)))}function w(c){return t=>D.createElement(b4,G({attr:Q({},c.attr)},t),y2(c.child))}function b4(c){var t=a=>{var{attr:l,size:i,title:r}=c,e=H4(c,B4),h=i||a.size||"1em",s;return a.className&&(s=a.className),c.className&&(s=(s?s+" ":"")+c.className),D.createElement("svg",G({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},a.attr,l,e,{className:s,style:Q(Q({color:c.color||a.color},a.style),c.style),height:h,width:h,xmlns:"http://www.w3.org/2000/svg"}),r&&D.createElement("title",null,r),c.children)};return p1!==void 0?D.createElement(p1.Consumer,null,a=>t(a)):t(u1)}function b2(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"},child:[]}]})(c)}function R2(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z"},child:[]}]})(c)}function T2(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM367.6 208a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"},child:[]}]})(c)}function M1(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 336l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z"},child:[]}]})(c)}function k2(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"},child:[]}]})(c)}function P2(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z"},child:[]}]})(c)}function Z2(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm407.4 75.5c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z"},child:[]}]})(c)}function E2(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"},child:[]}]})(c)}function D2(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-122 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z"},child:[]}]})(c)}function I2(c){return w({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM338.7 395.9c6.6-5.9 7.1-16 1.2-22.6C323.8 355.4 295.7 336 256 336s-67.8 19.4-83.9 37.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c11.7-13 31.6-26.7 60.1-26.7s48.4 13.7 60.1 26.7c5.9 6.6 16 7.1 22.6 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z"},child:[]}]})(c)}function U2(c){return w({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z"},child:[]}]})(c)}function q2(c){return w({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z"},child:[]}]})(c)}var R4=["#dc2626","#e04832","#ea580c","#f59e0b","#eab308","#a3a323","#84cc16","#65a30d","#22c55e","#16a34a","#059669"],T4=[I2,T2,E2,D2,M1,M1,b2,R2,k2,P2,Z2],A={};for(let c=0;c<11;c++){let t=T4[c],a=R4[c];A[c+1]=x1.createElement(t,{className:"transition-transform",style:{color:a,fontSize:"28px"}})}var N2={3:[3,6,8],4:[3,4,7,9],5:[3,4,6,7,9],6:[3,4,6,7,9,11]};function k4(c,t){if(t<=1)return A[6];if(N2[t]){let i=N2[t][c];if(i)return A[i]}let a=c/(t-1),l=Math.min(11,Math.max(1,Math.round(a*10)+1));return A[l]}var P4={1:A[1],2:A[4],3:A[6],4:A[8],5:A[11]},Z4={filled:x1.createElement(U2,{style:{color:"#e20074",fontSize:"28px"}}),empty:x1.createElement(q2,{style:{color:"#d1d5db",fontSize:"28px",stroke:"#d1d5db",strokeWidth:"16px"}})};export{P4 as CsatEmojiMapping,A as CsatEmojiSet,Z4 as CsatStarIcons,k4 as getEmojiForIndex,F4 as useSurveySDK};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@explorer02/cfm-survey-sdk",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.ts",
@@ -31,6 +31,7 @@
31
31
  "jsdom": "^24.0.0",
32
32
  "tsup": "^8.0.2",
33
33
  "typescript": "^6.0.0",
34
- "vitest": "^1.3.1"
34
+ "vitest": "^1.3.1",
35
+ "react-icons": ">=5.0.0"
35
36
  }
36
- }
37
+ }