@sprig-technologies/sprig-bundled 1.1.6 → 1.1.8

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-VQ3LPBC1.cjs","sources":["../../node_modules/preact/dist/preact.module.js","../../node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","../../node_modules/preact/hooks/dist/hooks.module.js","../../node_modules/preact/compat/dist/compat.module.js","../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/use-sync-external-store/shim/index.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../node_modules/use-sync-external-store/shim/with-selector.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../node_modules/zustand/esm/index.mjs","../../src/view/cards/types.ts","../../src/view/helpers/skipLogicHelpers.ts","../../src/view/store.ts","../../src/assets/caret.svg?react","../../src/assets/checkmark.svg?react","../../src/view/components/accordion.tsx","../../src/view/components/arrow.tsx","../../src/view/helpers/classes.ts","../../src/view/components/button.tsx","../../src/helpers/useIsCardScrollable.tsx","../../src/view/components/header.tsx","../../src/view/components/longformSubmitButton.tsx","../../src/view/components/mobileEmbedView.tsx","../../src/view/components/checkbox.tsx","../../src/view/hooks/useAutoSize.ts","../../src/view/components/option.tsx","../../src/view/components/questionBody.tsx","../../src/view/components/questionBodyFooterContainer.tsx","../../src/view/logo.tsx","../../src/view/components/sprigBrandLogo.tsx","../../src/view/components/thankYouLink.tsx","../../src/view/helpers/card.ts","../../src/view/cards/consentLegalCard.tsx","../../src/view/cards/likertCard/likertOption.tsx","../../src/view/cards/likertCard/likertCard.tsx","../../src/view/cards/matrixViews/matrixAccordionView.tsx","../../src/view/cards/matrixViews/matrixTableView.tsx","../../src/view/cards/matrixCard.tsx","../../src/view/components/select/select.tsx","../../src/view/cards/multipleChoice/baseMultiChoiceCard.tsx","../../src/view/cards/multipleChoice/singleSelectCard.tsx","../../src/view/cards/multipleChoice/multiSelectCard.tsx","../../src/view/cards/npsCard.tsx","../../src/view/cards/openTextCard.tsx","../../src/view/cards/pageCard/DisplayQuestion.tsx","../../src/view/cards/pageCard/longFormQuestionsFooter.tsx","../../src/view/cards/pageCard/pageCard.tsx","../../src/view/cards/recordedTask/constants.ts","../../src/view/cards/recordedTask/helpers.ts","../../src/view/cards/recordedTask/store.ts","../../src/view/cards/recordedTask/actions.ts","../../src/view/cards/recordedTask/components.tsx","../../src/view/cards/recordedTask/card.tsx","../../src/view/helpers/getAttributedUrl.ts","../../src/view/cards/textUrlPromptCard.tsx","../../src/view/cards/thanksCard.tsx","../../src/view/cards/uploadingCard.tsx","../../src/view/footer.tsx","../../src/view/progressBar.tsx","../../src/view/app.tsx","../../src/view/recorder/recorder.ts","../../src/view/view.tsx"],"sourcesContent":["var n,l,u,t,i,o,r,f,e,c={},s=[],a=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,h=Array.isArray;function v(n,l){for(var u in l)n[u]=l[u];return n}function p(n){var l=n.parentNode;l&&l.removeChild(n)}function y(l,u,t){var i,o,r,f={};for(r in u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return d(l,f,i,o,null)}function d(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==r?++u:r,__i:-1,__u:0};return null==r&&null!=l.vnode&&l.vnode(f),f}function _(){return{current:null}}function g(n){return n.children}function b(n,l){this.props=n,this.context=l}function m(n,l){if(null==l)return n.__?m(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?m(n):null}function k(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return k(n)}}function w(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!x.__r++||o!==l.debounceRendering)&&((o=l.debounceRendering)||r)(x)}function x(){var n,u,t,o,r,e,c,s,a;for(i.sort(f);n=i.shift();)n.__d&&(u=i.length,o=void 0,e=(r=(t=n).__v).__e,s=[],a=[],(c=t.__P)&&((o=v({},r)).__v=r.__v+1,l.vnode&&l.vnode(o),L(c,o,r,t.__n,void 0!==c.ownerSVGElement,32&r.__u?[e]:null,s,null==e?m(r):e,!!(32&r.__u),a),o.__.__k[o.__i]=o,M(s,o,a),o.__e!=e&&k(o)),i.length>u&&i.sort(f));x.__r=0}function C(n,l,u,t,i,o,r,f,e,a,h){var v,p,y,d,_,g=t&&t.__k||s,b=l.length;for(u.__d=e,P(u,l,g),e=u.__d,v=0;v<b;v++)null!=(y=u.__k[v])&&\"boolean\"!=typeof y&&\"function\"!=typeof y&&(p=-1===y.__i?c:g[y.__i]||c,y.__i=v,L(n,y,p,i,o,r,f,e,a,h),d=y.__e,y.ref&&p.ref!=y.ref&&(p.ref&&z(p.ref,null,y),h.push(y.ref,y.__c||d,y)),null==_&&null!=d&&(_=d),65536&y.__u||p.__k===y.__k?e=S(y,e,n):\"function\"==typeof y.type&&void 0!==y.__d?e=y.__d:d&&(e=d.nextSibling),y.__d=void 0,y.__u&=-196609);u.__d=e,u.__e=_}function P(n,l,u){var t,i,o,r,f,e=l.length,c=u.length,s=c,a=0;for(n.__k=[],t=0;t<e;t++)null!=(i=n.__k[t]=null==(i=l[t])||\"boolean\"==typeof i||\"function\"==typeof i?null:\"string\"==typeof i||\"number\"==typeof i||\"bigint\"==typeof i||i.constructor==String?d(null,i,null,null,i):h(i)?d(g,{children:i},null,null,null):void 0===i.constructor&&i.__b>0?d(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):i)?(i.__=n,i.__b=n.__b+1,f=H(i,u,r=t+a,s),i.__i=f,o=null,-1!==f&&(s--,(o=u[f])&&(o.__u|=131072)),null==o||null===o.__v?(-1==f&&a--,\"function\"!=typeof i.type&&(i.__u|=65536)):f!==r&&(f===r+1?a++:f>r?s>e-r?a+=f-r:a--:a=f<r&&f==r-1?f-r:0,f!==t+a&&(i.__u|=65536))):(o=u[t])&&null==o.key&&o.__e&&(o.__e==n.__d&&(n.__d=m(o)),N(o,o,!1),u[t]=null,s--);if(s)for(t=0;t<c;t++)null!=(o=u[t])&&0==(131072&o.__u)&&(o.__e==n.__d&&(n.__d=m(o)),N(o,o))}function S(n,l,u){var t,i;if(\"function\"==typeof n.type){for(t=n.__k,i=0;t&&i<t.length;i++)t[i]&&(t[i].__=n,l=S(t[i],l,u));return l}return n.__e!=l&&(u.insertBefore(n.__e,l||null),l=n.__e),l&&l.nextSibling}function $(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(h(n)?n.some(function(n){$(n,l)}):l.push(n)),l}function H(n,l,u,t){var i=n.key,o=n.type,r=u-1,f=u+1,e=l[u];if(null===e||e&&i==e.key&&o===e.type)return u;if(t>(null!=e&&0==(131072&e.__u)?1:0))for(;r>=0||f<l.length;){if(r>=0){if((e=l[r])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return r;r--}if(f<l.length){if((e=l[f])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return f;f++}}return-1}function I(n,l,u){\"-\"===l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||a.test(l)?u:u+\"px\"}function T(n,l,u,t,i){var o;n:if(\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||I(n.style,l,\"\");if(u)for(l in u)t&&u[l]===t[l]||I(n.style,l,u[l])}else if(\"o\"===l[0]&&\"n\"===l[1])o=l!==(l=l.replace(/(PointerCapture)$|Capture$/,\"$1\")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+o]=u,u?t?u.u=t.u:(u.u=Date.now(),n.addEventListener(l,o?D:A,o)):n.removeEventListener(l,o?D:A,o);else{if(i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!==l&&\"height\"!==l&&\"href\"!==l&&\"list\"!==l&&\"form\"!==l&&\"tabIndex\"!==l&&\"download\"!==l&&\"rowSpan\"!==l&&\"colSpan\"!==l&&\"role\"!==l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!==l[4]?n.removeAttribute(l):n.setAttribute(l,u))}}function A(n){var u=this.l[n.type+!1];if(n.t){if(n.t<=u.u)return}else n.t=Date.now();return u(l.event?l.event(n):n)}function D(n){return this.l[n.type+!0](l.event?l.event(n):n)}function L(n,u,t,i,o,r,f,e,c,s){var a,p,y,d,_,m,k,w,x,P,S,$,H,I,T,A=u.type;if(void 0!==u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),r=[e=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof A)try{if(w=u.props,x=(a=A.contextType)&&i[a.__c],P=a?x?x.props.value:a.__:i,t.__c?k=(p=u.__c=t.__c).__=p.__E:(\"prototype\"in A&&A.prototype.render?u.__c=p=new A(w,P):(u.__c=p=new b(w,P),p.constructor=A,p.render=O),x&&x.sub(p),p.props=w,p.state||(p.state={}),p.context=P,p.__n=i,y=p.__d=!0,p.__h=[],p._sb=[]),null==p.__s&&(p.__s=p.state),null!=A.getDerivedStateFromProps&&(p.__s==p.state&&(p.__s=v({},p.__s)),v(p.__s,A.getDerivedStateFromProps(w,p.__s))),d=p.props,_=p.state,p.__v=u,y)null==A.getDerivedStateFromProps&&null!=p.componentWillMount&&p.componentWillMount(),null!=p.componentDidMount&&p.__h.push(p.componentDidMount);else{if(null==A.getDerivedStateFromProps&&w!==d&&null!=p.componentWillReceiveProps&&p.componentWillReceiveProps(w,P),!p.__e&&(null!=p.shouldComponentUpdate&&!1===p.shouldComponentUpdate(w,p.__s,P)||u.__v===t.__v)){for(u.__v!==t.__v&&(p.props=w,p.state=p.__s,p.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.forEach(function(n){n&&(n.__=u)}),S=0;S<p._sb.length;S++)p.__h.push(p._sb[S]);p._sb=[],p.__h.length&&f.push(p);break n}null!=p.componentWillUpdate&&p.componentWillUpdate(w,p.__s,P),null!=p.componentDidUpdate&&p.__h.push(function(){p.componentDidUpdate(d,_,m)})}if(p.context=P,p.props=w,p.__P=n,p.__e=!1,$=l.__r,H=0,\"prototype\"in A&&A.prototype.render){for(p.state=p.__s,p.__d=!1,$&&$(u),a=p.render(p.props,p.state,p.context),I=0;I<p._sb.length;I++)p.__h.push(p._sb[I]);p._sb=[]}else do{p.__d=!1,$&&$(u),a=p.render(p.props,p.state,p.context),p.state=p.__s}while(p.__d&&++H<25);p.state=p.__s,null!=p.getChildContext&&(i=v(v({},i),p.getChildContext())),y||null==p.getSnapshotBeforeUpdate||(m=p.getSnapshotBeforeUpdate(d,_)),C(n,h(T=null!=a&&a.type===g&&null==a.key?a.props.children:a)?T:[T],u,t,i,o,r,f,e,c,s),p.base=u.__e,u.__u&=-161,p.__h.length&&f.push(p),k&&(p.__E=p.__=null)}catch(n){u.__v=null,c||null!=r?(u.__e=e,u.__u|=c?160:32,r[r.indexOf(e)]=null):(u.__e=t.__e,u.__k=t.__k),l.__e(n,u,t)}else null==r&&u.__v===t.__v?(u.__k=t.__k,u.__e=t.__e):u.__e=j(t.__e,u,t,i,o,r,f,c,s);(a=l.diffed)&&a(u)}function M(n,u,t){u.__d=void 0;for(var i=0;i<t.length;i++)z(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function j(l,u,t,i,o,r,f,e,s){var a,v,y,d,_,g,b,k=t.props,w=u.props,x=u.type;if(\"svg\"===x&&(o=!0),null!=r)for(a=0;a<r.length;a++)if((_=r[a])&&\"setAttribute\"in _==!!x&&(x?_.localName===x:3===_.nodeType)){l=_,r[a]=null;break}if(null==l){if(null===x)return document.createTextNode(w);l=o?document.createElementNS(\"http://www.w3.org/2000/svg\",x):document.createElement(x,w.is&&w),r=null,e=!1}if(null===x)k===w||e&&l.data===w||(l.data=w);else{if(r=r&&n.call(l.childNodes),k=t.props||c,!e&&null!=r)for(k={},a=0;a<l.attributes.length;a++)k[(_=l.attributes[a]).name]=_.value;for(a in k)_=k[a],\"children\"==a||(\"dangerouslySetInnerHTML\"==a?y=_:\"key\"===a||a in w||T(l,a,null,_,o));for(a in w)_=w[a],\"children\"==a?d=_:\"dangerouslySetInnerHTML\"==a?v=_:\"value\"==a?g=_:\"checked\"==a?b=_:\"key\"===a||e&&\"function\"!=typeof _||k[a]===_||T(l,a,_,k[a],o);if(v)e||y&&(v.__html===y.__html||v.__html===l.innerHTML)||(l.innerHTML=v.__html),u.__k=[];else if(y&&(l.innerHTML=\"\"),C(l,h(d)?d:[d],u,t,i,o&&\"foreignObject\"!==x,r,f,r?r[0]:t.__k&&m(t,0),e,s),null!=r)for(a=r.length;a--;)null!=r[a]&&p(r[a]);e||(a=\"value\",void 0!==g&&(g!==l[a]||\"progress\"===x&&!g||\"option\"===x&&g!==k[a])&&T(l,a,g,k[a],!1),a=\"checked\",void 0!==b&&b!==l[a]&&T(l,a,b,k[a],!1))}return l}function z(n,u,t){try{\"function\"==typeof n?n(u):n.current=u}catch(n){l.__e(n,t)}}function N(n,u,t){var i,o;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!==n.__e||z(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null,n.__c=void 0}if(i=n.__k)for(o=0;o<i.length;o++)i[o]&&N(i[o],u,t||\"function\"!=typeof n.type);t||null==n.__e||p(n.__e),n.__=n.__e=n.__d=void 0}function O(n,l,u){return this.constructor(n,u)}function q(u,t,i){var o,r,f,e;l.__&&l.__(u,t),r=(o=\"function\"==typeof i)?null:i&&i.__k||t.__k,f=[],e=[],L(t,u=(!o&&i||t).__k=y(g,null,[u]),r||c,c,void 0!==t.ownerSVGElement,!o&&i?[i]:r?null:t.firstChild?n.call(t.childNodes):null,f,!o&&i?i:r?r.__e:t.firstChild,o,e),M(f,u,e)}function B(n,l){q(n,l,B)}function E(l,u,t){var i,o,r,f,e=v({},l.props);for(r in l.type&&l.type.defaultProps&&(f=l.type.defaultProps),u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:e[r]=void 0===u[r]&&void 0!==f?f[r]:u[r];return arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),d(l.type,e,i||l.key,o||l.ref,null)}function F(n,l){var u={__c:l=\"__cC\"+e++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=[],(t={})[l]=this,this.getChildContext=function(){return t},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,w(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=s.slice,l={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},b.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=v({},this.state),\"function\"==typeof n&&(n=n(v({},u),this.props)),n&&v(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),w(this))},b.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),w(this))},b.prototype.render=g,i=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f=function(n,l){return n.__v.__b-l.__v.__b},x.__r=0,e=0;export{b as Component,g as Fragment,E as cloneElement,F as createContext,y as createElement,_ as createRef,y as h,B as hydrate,t as isValidElement,l as options,q as render,$ as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\"&quot;\";break;case 38:f=\"&amp;\";break;case 60:f=\"&lt;\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){var a,c,p={};for(c in t)\"ref\"==c?a=t[c]:p[c]=t[c];var l={type:e,props:p,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===p[c]&&(p[c]=a[c]);return r.vnode&&r.vnode(l),l}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},p=/[A-Z]/g;function l(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var l=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(p,\"-$&\").toLowerCase()),_=\";\";\"number\"!=typeof a||l.startsWith(\"--\")||o.test(l)||(_=\"px;\"),i=i+l+\":\"+a+_}}return e+'=\"'+i+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(t)+'\"'}function _(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=_(r[e]);return r}}return n(\"\"+r)}export{u as jsx,l as jsxAttr,u as jsxDEV,_ as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=[],e=n.__b,a=n.__r,v=n.diffed,l=n.__c,m=n.unmount;function d(t,u){n.__h&&n.__h(r,t,o||u),o=0;var i=r.__H||(r.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({__V:c}),i.__[t]}function h(n){return o=1,s(B,n)}function s(n,u,i){var o=d(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):B(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.u)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=!1;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),!(!i&&o.__c.props===n)&&(!c||c.call(this,n,t,r))};r.u=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function p(u,i){var o=d(t++,3);!n.__s&&z(o.__H,i)&&(o.__=u,o.i=i,r.__H.__h.push(o))}function y(u,i){var o=d(t++,4);!n.__s&&z(o.__H,i)&&(o.__=u,o.i=i,r.__h.push(o))}function _(n){return o=5,F(function(){return{current:n}},[])}function A(n,t,r){o=6,y(function(){return\"function\"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function F(n,r){var u=d(t++,7);return z(u.__H,r)?(u.__V=n(),u.i=r,u.__h=n,u.__V):u.__}function T(n,t){return o=8,F(function(){return n},t)}function q(n){var u=r.context[n.__c],i=d(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function x(t,r){n.useDebugValue&&n.useDebugValue(r?r(t):t)}function P(n){var u=d(t++,10),i=h();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function V(){var n=d(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function b(){for(var t;t=f.shift();)if(t.__P&&t.__H)try{t.__H.__h.forEach(k),t.__H.__h.forEach(w),t.__H.__h=[]}catch(r){t.__H.__h=[],n.__e(r,t.__v)}}n.__b=function(n){r=null,e&&e(n)},n.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.__V=c,n.__N=n.i=void 0})):(i.__h.forEach(k),i.__h.forEach(w),i.__h=[],t=0)),u=r},n.diffed=function(t){v&&v(t);var o=t.__c;o&&o.__H&&(o.__H.__h.length&&(1!==f.push(o)&&i===n.requestAnimationFrame||((i=n.requestAnimationFrame)||j)(b)),o.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.__V!==c&&(n.__=n.__V),n.i=void 0,n.__V=c})),u=r=null},n.__c=function(t,r){r.some(function(t){try{t.__h.forEach(k),t.__h=t.__h.filter(function(n){return!n.__||w(n)})}catch(u){r.some(function(n){n.__h&&(n.__h=[])}),r=[],n.__e(u,t.__v)}}),l&&l(t,r)},n.unmount=function(t){m&&m(t);var r,u=t.__c;u&&u.__H&&(u.__H.__.forEach(function(n){try{k(n)}catch(n){r=n}}),u.__H=void 0,r&&n.__e(r,u.__v))};var g=\"function\"==typeof requestAnimationFrame;function j(n){var t,r=function(){clearTimeout(u),g&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);g&&(t=requestAnimationFrame(r))}function k(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function w(n){var t=r;n.__c=n.__(),r=t}function z(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function B(n,t){return\"function\"==typeof t?t(n):t}export{T as useCallback,q as useContext,x as useDebugValue,p as useEffect,P as useErrorBoundary,V as useId,A as useImperativeHandle,y as useLayoutEffect,F as useMemo,s as useReducer,_ as useRef,h as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as l,createRef as c,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useState as a,useId as s,useReducer as h,useEffect as v,useLayoutEffect as d,useRef as p,useImperativeHandle as m,useMemo as y,useCallback as _,useContext as b,useDebugValue as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function C(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function E(n){this.props=n}function w(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:C(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u}(E.prototype=new n).isPureReactComponent=!0,E.prototype.shouldComponentUpdate=function(n,t){return C(this.props,n)||C(this.state,t)};var x=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),x&&x(n)};var R=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function N(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=R,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var k=function(n,t){return null==n?null:r(r(n).map(t))},A={map:k,forEach:k,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},O=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);O(n,t,e,r)};var T=e.unmount;function F(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return F(n,t,e)})),n}function I(n,t,e){return n&&e&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return I(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.appendChild(n.__e),n.__c.__e=!0,n.__c.__P=e)),n}function L(){this.__u=0,this.t=null,this.__b=null}function U(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function D(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return t(r,o)}return o.displayName=\"Lazy\",o.__f=!0,o}function M(){this.u=null,this.o=null}e.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&32&n.__u&&(n.type=null),T&&T(n)},(L.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=U(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=I(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},L.prototype.componentWillUnmount=function(){this.t=[]},L.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=F(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__u&=-33),[t(u,null,e.__a?null:n.children),i]};var V=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.u=e=e[2]}};function W(n){return this.getChildContext=function(){return n.context},n.children}function P(n){var e=this,r=n.i;e.componentWillUnmount=function(){o(null,e.l),e.l=null,e.i=null},e.i&&e.i!==r&&e.componentWillUnmount(),e.l||(e.i=r,e.l={nodeType:1,parentNode:r,childNodes:[],appendChild:function(n){this.childNodes.push(n),e.i.appendChild(n)},insertBefore:function(n,t){this.childNodes.push(n),e.i.appendChild(n)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.i.removeChild(n)}}),o(t(W,{context:e.context},n.__v),e.l)}function j(n,e){var r=t(P,{__v:n,i:e});return r.containerInfo=e,r}(M.prototype=new n).__a=function(n){var t=this,e=U(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),V(t,n,r)):u()};e?e(o):o()}},M.prototype.render=function(n){this.u=null,this.o=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},M.prototype.componentDidUpdate=M.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){V(n,e,t)})};var z=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,B=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,H=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Z=/[A-Z0-9]/g,Y=\"undefined\"!=typeof document,$=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function q(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function G(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var J=e.event;function K(){}function Q(){return this.cancelBubble}function X(){return this.defaultPrevented}e.event=function(n){return J&&(n=J(n)),n.persist=K,n.isPropagationStopped=Q,n.isDefaultPrevented=X,n.nativeEvent=n};var nn,tn={enumerable:!1,configurable:!0,get:function(){return this.class}},en=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={};for(var o in t){var i=t[o];if(!(\"value\"===o&&\"defaultValue\"in t&&null==i||Y&&\"children\"===o&&\"noscript\"===e||\"class\"===o||\"className\"===o)){var l=o.toLowerCase();\"defaultValue\"===o&&\"value\"in t&&null==t.value?o=\"value\":\"download\"===o&&!0===i?i=\"\":\"ondoubleclick\"===l?o=\"ondblclick\":\"onchange\"!==l||\"input\"!==e&&\"textarea\"!==e||$(t.type)?\"onfocus\"===l?o=\"onfocusin\":\"onblur\"===l?o=\"onfocusout\":H.test(o)?o=l:-1===e.indexOf(\"-\")&&B.test(o)?o=o.replace(Z,\"-$&\").toLowerCase():null===i&&(i=void 0):l=o=\"oninput\",\"oninput\"===l&&u[o=l]&&(o=\"oninputCapture\"),u[o]=i}}\"select\"==e&&u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==e&&null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",tn)):(t.className&&!t.class||t.class&&t.className)&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=z,en&&en(n)};var rn=e.__r;e.__r=function(n){rn&&rn(n),nn=n.__c};var un=e.diffed;e.diffed=function(n){un&&un(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),nn=null};var on={ReactCurrentDispatcher:{current:{readContext:function(n){return nn.__n[n.__c].props.value}}}},ln=\"17.0.2\";function cn(n){return t.bind(null,n)}function fn(n){return!!n&&n.$$typeof===z}function an(n){return fn(n)&&n.type===u}function sn(n){return fn(n)?f.apply(null,arguments):n}function hn(n){return!!n.__k&&(o(null,n),!0)}function vn(n){return n&&(n.base||1===n.nodeType&&n)||null}var dn=function(n,t){return n(t)},pn=function(n,t){return n(t)},mn=u;function yn(n){n()}function _n(n){return n}function bn(){return[!1,yn]}var Sn=d,gn=fn;function Cn(n,t){var e=t(),r=a({h:{__:e,v:t}}),u=r[0].h,o=r[1];return d(function(){u.__=e,u.v=t,En(u)&&o({h:u})},[n,e,t]),v(function(){return En(u)&&o({h:u}),n(function(){En(u)&&o({h:u})})},[n]),e}function En(n){var t,e,r=n.v,u=n.__;try{var o=r();return!((t=u)===(e=o)&&(0!==t||1/t==1/e)||t!=t&&e!=e)}catch(n){return!0}}var wn={useState:a,useId:s,useReducer:h,useEffect:v,useLayoutEffect:d,useInsertionEffect:Sn,useTransition:bn,useDeferredValue:_n,useSyncExternalStore:Cn,startTransition:yn,useRef:p,useImperativeHandle:m,useMemo:y,useCallback:_,useContext:b,useDebugValue:S,version:\"17.0.2\",Children:A,render:q,hydrate:G,unmountComponentAtNode:hn,createPortal:j,createElement:t,createContext:l,createFactory:cn,cloneElement:sn,createRef:c,Fragment:u,isValidElement:fn,isElement:gn,isFragment:an,findDOMNode:vn,Component:n,PureComponent:E,memo:w,forwardRef:N,flushSync:pn,unstable_batchedUpdates:dn,StrictMode:mn,Suspense:L,SuspenseList:M,lazy:D,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:on};export{A as Children,E as PureComponent,mn as StrictMode,L as Suspense,M as SuspenseList,on as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sn as cloneElement,cn as createFactory,j as createPortal,wn as default,vn as findDOMNode,pn as flushSync,N as forwardRef,G as hydrate,gn as isElement,an as isFragment,fn as isValidElement,D as lazy,w as memo,q as render,yn as startTransition,hn as unmountComponentAtNode,dn as unstable_batchedUpdates,_n as useDeferredValue,Sn as useInsertionEffect,Cn as useSyncExternalStore,bn as useTransition,ln as version};\n//# sourceMappingURL=compat.module.js.map\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\") ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore as default };\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","import createStore__default from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nexport { default as createStore } from 'zustand/vanilla';\nimport { useDebugValue } from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nfunction useStore(api, selector = api.getState, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = typeof createState === \"function\" ? createStore__default(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\n\nexport { create as default, useStore };\n","import { TaskStatus } from \"../../constants/sprigRecordingEvents\";\nimport { CardType } from \"../../types/card\";\n\nexport type MultiSelectValueType = Record<string, boolean>;\n\nexport type SingleSelectValueType = Record<string, string>;\n\nexport type MultiChoiceSecondaryValueType = Record<\n string,\n { userText: string }\n> | null;\n\nexport interface RecordedTaskResponseValueType {\n mediaRecordingUids?: string[] | null;\n taskDurationMillisecond?: number;\n taskStatus: TaskStatus;\n}\n\nexport type SelectedValue =\n | RecordedTaskResponseValueType\n | MultiSelectValueType\n | SingleSelectValueType\n | { [rowId: string]: null | string }\n | { mediaRecordingUid: UUID | null }\n | { submitted: boolean; name?: string }\n | { skipped: boolean }\n | string\n | string[]\n | number\n | null\n | undefined;\n\nexport type NextFnData = {\n value: SelectedValue;\n secondaryValue?: MultiChoiceSecondaryValueType;\n questionId: number;\n type: CardType;\n};\n\nexport type NextFnType = (\n options: NextFnData,\n isValidToSubmit: boolean,\n) => void;\nexport type MultiNextFn = (data: NextFnData | NextFnData[]) => void;\n\nexport interface BaseCardProps {\n className: string;\n next: NextFnType;\n questionId: number;\n type: CardType;\n showIndividualSubmit?: boolean;\n onSubmitButtonClick?: () => void;\n}\n\nexport type TouchKeyEvents = Pick<\n React.JSX.DOMAttributes<HTMLDivElement>,\n | \"onClick\"\n | \"onKeyPress\"\n | \"onMouseDown\"\n | \"onMouseLeave\"\n | \"onMouseOver\"\n | \"onMouseUp\"\n | \"onTouchCancel\"\n | \"onTouchMove\"\n | \"onTouchStart\"\n | \"onTouchEnd\"\n>;\n\nexport type CardResponse =\n | {\n type: \"texturlprompt\";\n response: undefined | { skipped: true };\n }\n | {\n type: \"consentlegal\";\n response: { submitted: true } | null;\n }\n | {\n type: \"recordedtask\";\n response: {\n mediaRecordingUids: string[];\n taskDurationMillisecond: number;\n taskStatus: TaskStatus;\n };\n }\n | {\n type: \"likert\";\n response: number | null;\n }\n | {\n type: \"open\";\n response: string;\n }\n | {\n type: \"multiplechoice\";\n response: string | undefined;\n }\n | {\n type: \"multipleselect\";\n response: string[];\n }\n | {\n type: \"matrix\";\n response: { [rowId: number]: string };\n }\n | {\n type: \"nps\";\n response: number | null;\n }\n | {\n type: \"videovoice\";\n response: {\n mediaRecordingUid: string;\n };\n };\n\nexport const BOOLEAN_OPERATOR = {\n And: 1,\n Or: 2,\n} as const;\n\nexport type BooleanOperator =\n (typeof BOOLEAN_OPERATOR)[keyof typeof BOOLEAN_OPERATOR];\n","import { TaskStatus } from \"../../constants/sprigRecordingEvents\";\nimport {\n AppCard,\n CardType,\n Comparator,\n GroupRoutingOption,\n RoutingGroupOption,\n OldRoutingOption,\n} from \"../../types/card\";\nimport { AppConfig } from \"../../types/config\";\nimport { MatrixState } from \"../cards/matrixCard\";\nimport {\n BOOLEAN_OPERATOR,\n BooleanOperator,\n CardResponse,\n} from \"../cards/types\";\n\nconst ANSWERED = 1;\n\nconst comparators = {\n eq(a: number, b: number) {\n return a == b;\n },\n\n neq(a: number, b: number) {\n return !this.eq(a, b);\n },\n\n gt(a: number, b: number) {\n return a > b;\n },\n\n gte(a: number, b: number) {\n return a >= b;\n },\n\n lt(a: number, b: number) {\n return a < b;\n },\n\n lte(a: number, b: number) {\n return a <= b;\n },\n\n // multiselect comparators\n list_exact(a: string[] | unknown, b: string[] | unknown) {\n if (!Array.isArray(a) || !Array.isArray(b)) return false;\n return a.slice().sort().join(\",\") === b.slice().sort().join(\",\");\n },\n\n /**\n * a contains b\n */\n list_all(a: string[] | unknown, b: string[] | unknown) {\n if (!Array.isArray(a) || !Array.isArray(b)) return false;\n // there's no some value in b that doesn't exist in a is logically equivalent to all value in b exist in a\n return !b.some((val) => a.indexOf(val) === -1);\n },\n\n /**\n * a has at least one value from b\n */\n list_alo(a: string[] | unknown, b: string[] | unknown) {\n if (!Array.isArray(b)) return false;\n // support mcss\n const transformA = !Array.isArray(a) ? [a] : a;\n // some value exist in b that also exist in a\n const aSet = new Set(transformA);\n return b.some((val) => aSet.has(val));\n },\n\n /**\n * a is not included in b\n */\n list_dni(a: string[] | string, b: string[]) {\n if (!Array.isArray(b)) return false;\n // support mcss\n const transformA = !Array.isArray(a) ? [a] : a;\n // no value exist in b that also exist in a\n const setA = new Set(transformA);\n return b.every((val) => !setA.has(val));\n },\n\n /**\n * a contains b\n */\n contains(a: string, b: string) {\n const aLower = a.toLowerCase();\n const bLower = b.toLowerCase();\n return aLower.includes(bLower);\n },\n /**\n * a not contains b\n */\n notcontains(a: string, b: string) {\n return !this.contains(a, b);\n },\n};\n\n/**\n * @param response response object submitted\n * @param type type of the question\n * @param routingValue value used to determine routing from skip logic\n * @returns\n */\nexport const getHasValidAnswer = (\n response: { value: unknown },\n type: CardType,\n routingValue: { taskStatus: TaskStatus } | null | undefined,\n) => {\n switch (type) {\n case \"videovoice\":\n return Boolean(response && response.value);\n case \"open\":\n return !!routingValue;\n case \"multipleselect\":\n return Boolean(routingValue && !!Object.keys(routingValue).length);\n case \"recordedtask\":\n return routingValue?.taskStatus === \"completed\";\n case \"texturlprompt\":\n return !response.value;\n case \"consentlegal\":\n return routingValue !== null;\n case \"multiplechoice\":\n return routingValue !== undefined;\n case \"matrix\":\n return Boolean(\n routingValue &&\n Object.values(routingValue).every((val) => val !== null),\n );\n case \"nps\":\n return routingValue !== null;\n case \"likert\":\n return routingValue !== null;\n default:\n return true;\n }\n};\n\n/**\n *\n * @param response response object submitted\n * @param type question type\n * @returns boolean, true if answer is partial\n */\nconst getHasPartialAnswer = (response: MatrixState, type: CardType) => {\n if (type === \"matrix\") {\n const numRows = Object.keys(response).length;\n const numAnswered = Object.values(response).filter(\n (val) => val !== null,\n ).length;\n return numAnswered > 0 && numAnswered < numRows;\n }\n return false;\n};\n\n/**\n * @param cards - Array of all cards\n * @param index - Current index in the cards\n * @param selectedValue - Value that was selected which determines routing options\n * @param hasEndCard - is the thanks card configured\n * @returns optional next index value, if next index is null, survey ends immediately\n */\nexport const getNextCardIndex = ({\n cards,\n index,\n hasEndCard,\n allResponses,\n uploadProgress = {},\n}: {\n cards: AppCard[];\n hasEndCard: boolean;\n index: number;\n uploadProgress?: AppConfig[\"uploadProgress\"];\n allResponses: unknown[];\n}) => {\n if (index >= cards.length || index < 0) return null; // invalid scenario\n const card = cards[index];\n let nextIndex = index + 1;\n const routingOptions = card.props.routingOptions || [];\n\n for (let i = 0; i < routingOptions.length; i++) {\n const { group, target } = routingOptions[i] as GroupRoutingOption;\n if (!group?.length) continue; // if there's no group length, break and skip to next routing option\n const base = group[0] as RoutingGroupOption;\n\n // if questionIndex is for future index, skip\n if (\n base.questionIndex === undefined ||\n base.questionIndex > allResponses.length\n )\n continue;\n\n let matches = evaluateRule({\n comparator: base.comparator,\n // @ts-expect-error - unknown response type\n response: allResponses[base.questionIndex],\n // @ts-expect-error - expected card type\n type: card.type,\n value: base.value as never,\n });\n\n for (let i = 1; i < group.length; i += 2) {\n const op = group[i] as BooleanOperator;\n\n const rule = group[i + 1] as RoutingGroupOption;\n\n const ruleMatches = evaluateRule({\n comparator: rule.comparator,\n // @ts-expect-error - unknown response type\n response: allResponses[rule.questionIndex],\n // @ts-expect-error - expected card type\n type: cards[rule.questionIndex].type,\n value: rule.value as never,\n });\n\n if (op === BOOLEAN_OPERATOR.And) {\n matches &&= ruleMatches;\n } else if (op === BOOLEAN_OPERATOR.Or) {\n matches ||= ruleMatches;\n }\n }\n\n if (matches) {\n nextIndex = target === -1 && hasEndCard ? cards.length - 1 : target;\n break;\n }\n }\n\n const uploadCardIndex = cards.findIndex((card) => card.type === \"uploading\");\n\n let lastQuestionIndex;\n if (uploadCardIndex > 0) {\n lastQuestionIndex = hasEndCard ? cards.length - 3 : cards.length - 2;\n } else {\n lastQuestionIndex = cards.length - 1;\n }\n\n // these are the two end scenarios:\n // 1. when we're at (or, in an error case, after) the last question (don't care about routing in this case)\n // 2. when the routing target is to skip to end (-1) or (error case) to an index after the last question.\n if (\n index >= lastQuestionIndex ||\n nextIndex === -1 ||\n (nextIndex !== null && nextIndex > lastQuestionIndex)\n ) {\n // show upload card if recordings are still being processed\n const showUploadingCardAtEnd =\n uploadCardIndex > 0 &&\n Object.values(uploadProgress).some((v) => v.isSubmitted && !v.isComplete);\n\n if (showUploadingCardAtEnd) {\n return uploadCardIndex;\n } else if (hasEndCard) {\n return cards.length - 1;\n } else {\n return null;\n }\n }\n\n // no end card\n if (nextIndex === -1) return null;\n\n return nextIndex;\n};\n\nconst evaluateRule = ({\n comparator,\n response,\n type,\n value,\n}: {\n comparator: Comparator;\n value: never;\n} & CardResponse) => {\n if (comparator === \"answered\") {\n switch (type) {\n case \"texturlprompt\":\n return response === undefined;\n case \"consentlegal\":\n return response && response.submitted === true;\n case \"recordedtask\":\n return \"taskStatus\" in response && response.taskStatus === \"completed\";\n case \"likert\":\n return Number.isInteger(response);\n case \"matrix\":\n return Object.values(response).every((val) => val !== null);\n case \"multiplechoice\":\n return response !== undefined;\n case \"multipleselect\":\n return response?.length > 0;\n case \"nps\":\n return Number.isInteger(response);\n case \"open\":\n return response && response.length > 0;\n case \"videovoice\":\n return !!response?.mediaRecordingUid;\n default:\n return false;\n }\n }\n if (comparator === \"given_up\") {\n if (type === \"recordedtask\") {\n return \"taskStatus\" in response && response.taskStatus === \"given.up\";\n } else {\n return true;\n }\n }\n if (comparator === \"partial\") {\n if (type === \"matrix\") {\n return getHasPartialAnswer(response, type);\n } else {\n return false;\n }\n }\n if (comparator === \"skipped\") {\n switch (type) {\n case \"texturlprompt\":\n return response?.skipped;\n case \"consentlegal\":\n return response === null;\n case \"recordedtask\":\n return \"taskStatus\" in response && response.taskStatus === \"abandoned\";\n case \"likert\":\n return response === null;\n case \"open\":\n return response?.length === 0;\n case \"multiplechoice\":\n return response === undefined;\n case \"multipleselect\":\n return response?.length === 0;\n case \"matrix\":\n return Object.values(response).every((val) => val === null);\n case \"nps\":\n return response === null;\n case \"videovoice\":\n return response === null;\n default:\n return false;\n }\n }\n return comparators[comparator](response as never, value);\n};\n\nconst MAX_LENGTH_TO_CALCULATE_SUBSETS = 13;\n// https://stackoverflow.com/questions/42773836/how-to-find-all-subsets-of-a-set-in-javascript-powerset-of-array\nconst getAllSubsets = (array: string[], allowEmpty: boolean) => {\n return array\n .reduce(\n (subsets: string[][], value) =>\n subsets.concat(subsets.map((set) => [...set, value])),\n [[]],\n )\n .filter((arr) => allowEmpty || arr.length > 0);\n};\n\nconst generatePossibleSelectedValues = (card: AppCard) => {\n switch (card.type) {\n case \"multipleselect\":\n // return null if invalid options\n if (!card || !card.props || !card.props.options) return null;\n if (card.props.options.length > MAX_LENGTH_TO_CALCULATE_SUBSETS) {\n // 2 ** MAX_LENGTH_TO_CALCULATE_SUBSETS (13) = 8192. above this limit, computation may be too slow.\n // We should almost never see more than 13 options, but in this edge case, only consider length-1 combinations.\n // This may lead to an inaccurate calculation, but we prefer that than poor performance.\n return card.props.options.map((option) => [option.value]);\n }\n return getAllSubsets(\n card.props.options.map((option) => option.value),\n !card.props.properties.required,\n );\n case \"multiplechoice\": {\n // return null if invalid options\n if (!card || !card.props || !card.props.options) return null;\n const possibleValues: (string | undefined)[] = card.props.options.map(\n (option) => option.value,\n );\n if (!card.props.properties.required) possibleValues.push(undefined);\n return possibleValues;\n }\n case \"matrix\": {\n if (!card?.props?.options) return null;\n const matrixColumns = card.props.properties.matrixColumn;\n const matrixRows = card.props.options;\n const emptyResponse = matrixRows.reduce(\n (prevMap: MatrixState, option) => {\n prevMap[option.id] = null;\n return prevMap;\n },\n {},\n );\n const partialResponse = {\n ...emptyResponse,\n [matrixRows[0].id]: matrixColumns[0].value,\n };\n const completeResponse = matrixRows.reduce(\n (prevMap: MatrixState, option) => {\n prevMap[option.id] = matrixColumns[0].value;\n return prevMap;\n },\n {},\n );\n const possibleValues = [partialResponse, completeResponse];\n if (!card.props.properties.required) possibleValues.push(emptyResponse);\n return possibleValues;\n }\n\n case \"likert\": {\n const range = Number(card.props?.properties?.range) || 5;\n const ratingScaleArr = Array.from(Array(range).keys()).map((i) => i + 1);\n return [\n ...ratingScaleArr,\n ...(card.props.properties.required ? [] : [null]),\n ];\n }\n case \"nps\":\n return [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n ...(card.props.properties.required ? [] : [null]),\n ];\n case \"videovoice\":\n case \"open\":\n return [\"1\", ...(card.props.properties.required ? [] : [\"\"])];\n case \"recordedtask\": {\n const res: { taskStatus: TaskStatus }[] = [\n { taskStatus: \"completed\" },\n { taskStatus: \"given.up\" },\n ];\n if (!card.props.properties.required)\n res.push({ taskStatus: \"abandoned\" });\n return res;\n }\n case \"texturlprompt\":\n return [\n undefined,\n ...(card.props.properties.required ? [] : [{ skipped: true }]),\n ];\n case \"consentlegal\":\n return [ANSWERED, ...(card.props.properties.required ? [] : [null])];\n default:\n return [ANSWERED];\n }\n};\n\nconst hasComparator = (\n comparator: Comparator,\n): comparator is Extract<\n Comparator,\n | \"eq\"\n | \"neq\"\n | \"gt\"\n | \"gte\"\n | \"lt\"\n | \"lte\"\n | \"list_all\"\n | \"list_alo\"\n | \"list_exact\"\n | \"list_dni\"\n | \"contains\"\n | \"notcontains\"\n> => {\n return comparator in comparators;\n};\n\nconst hasTaskStatus = (x: unknown): x is { taskStatus: TaskStatus } => {\n return typeof x === \"object\" && x !== null && \"taskStatus\" in x;\n};\n\nconst getFlattenRoutingOption = (\n questionIndex: number,\n routingOptions: GroupRoutingOption[] = [],\n) => {\n return routingOptions.reduce((acc, option) => {\n const { group, target } = option;\n if (!group?.length) return [...acc];\n\n const flattenGroup = group\n .filter((item): item is RoutingGroupOption => {\n if (Number(item)) return true; // filter out booleans\n else if (typeof item === \"object\")\n return item.questionIndex === questionIndex; // filter out previous response comparators\n return false;\n })\n .map((item) => {\n const { comparator, value } = item;\n return {\n comparator,\n target,\n value,\n } as never;\n });\n return [...acc, ...flattenGroup];\n }, []);\n};\n\n/**\n * Calculates the maximum number of remaining cards by calculating the maximum remaining cards for the remaining cards.\n * It is inclusive of the current card.\n * It calculates by finding all possible solutions, and then seeing if it will validate the routing rules of the question.\n * Current limitation of this function is that it does not consider the routing rules for previous question or calculates any boolean operators.\n * @param cards Array of cards\n * @param index Current card index\n * @returns an integer of the maximum number of remaining cards, including this card\n */\nexport const getMaxRemainingCards = (cards: AppCard[], index: number) => {\n const invalidCardTypes = new Set<CardType>([\"thanks\", \"uploading\"]);\n\n // returns the maximum number of remaining cards, including this card\n if (index >= cards.length || index < 0) return 0; // invalid scenario\n\n if (invalidCardTypes.has(cards[index].type)) {\n // this is the thank you or uploading card; survey is completed; no max remaining cards\n return 0;\n }\n\n // filter out thank you card and uploading card from calculation, if present\n const filteredCards = cards.filter(\n (card) => !invalidCardTypes.has(card.type),\n );\n\n // this is the last card, so we can short-circuit.\n if (index === filteredCards.length - 1) return 1;\n\n // routingTarget of end card is -1, in this case, there are no questions left.\n const cache = { [filteredCards.length - 1]: 1, [-1]: 0 };\n\n // for each card in reverse order, ending with the current desired index, compute the longest possible\n // number of remaining cards, considering the values of longest possible number of remaining cards after it.\n for (\n let currentIndex = filteredCards.length - 2;\n currentIndex >= index;\n currentIndex--\n ) {\n const card = filteredCards[currentIndex];\n\n // flatten the group routing options to fit progress bar logic\n const routingOptions = getFlattenRoutingOption(\n currentIndex,\n card.props.routingOptions as GroupRoutingOption[],\n );\n\n // if there aren't routing options, we have to go to the next question\n if (routingOptions.length === 0) {\n cache[currentIndex] = cache[currentIndex + 1] + 1;\n continue;\n }\n\n let maxRemainingCards = 0;\n let possibleSelectedValues = generatePossibleSelectedValues(card);\n\n if (possibleSelectedValues === null) {\n // invalid question options, short-circuit with remaining card count\n return filteredCards.length - 1 - index;\n }\n\n // consider each routing option: if it's possible for it to match,\n // consider where it leads as part of computing the longest possible number of remaining cards.\n for (\n let routingOptionIndex = 0;\n routingOptionIndex < routingOptions.length;\n routingOptionIndex++\n ) {\n if (possibleSelectedValues.length === 0) {\n // remaining routingOptions are never considered\n break;\n }\n\n const { comparator, target, value } = routingOptions[\n routingOptionIndex\n ] as OldRoutingOption<Comparator>;\n\n // filter out any remaining possible values that match the current routing option\n const newPossibleSelectedValues: string[] | string[][] = (\n possibleSelectedValues as never[]\n ).filter((selectedValue: unknown) => {\n const isValueValid = getHasValidAnswer(\n { value: selectedValue },\n card.type,\n selectedValue as never,\n );\n const isPartial = getHasPartialAnswer(\n selectedValue as never,\n card.type,\n );\n return !(\n (isValueValid && comparator === \"answered\") ||\n (isPartial && comparator === \"partial\") ||\n (!isValueValid && !isPartial && comparator === \"skipped\") ||\n (comparator === \"given_up\" &&\n hasTaskStatus(selectedValue) &&\n selectedValue.taskStatus === \"given.up\") ||\n (isValueValid &&\n card.type === \"open\" &&\n (comparator === \"contains\" || comparator === \"notcontains\")) ||\n (isValueValid &&\n hasComparator(comparator) &&\n comparators[comparator](selectedValue as never, value as never))\n );\n });\n\n // if anything was filtered out, it's possible to match the routing options, so use routing target\n if (newPossibleSelectedValues.length < possibleSelectedValues.length) {\n const routingTarget = parseInt(String(target), 10);\n if (\n (routingTarget !== -1 && routingTarget <= currentIndex) ||\n routingTarget >= filteredCards.length\n ) {\n // invalid routing target, short-circuit with remaining card count\n return filteredCards.length - 1 - index;\n }\n maxRemainingCards = Math.max(\n cache[routingTarget] + 1,\n maxRemainingCards,\n );\n }\n\n possibleSelectedValues = newPossibleSelectedValues;\n }\n\n if (possibleSelectedValues.length > 0) {\n // it's possible to not match any of the routing values and go to the next question\n maxRemainingCards = Math.max(\n cache[currentIndex + 1] + 1,\n maxRemainingCards,\n );\n }\n\n cache[currentIndex] = maxRemainingCards;\n }\n\n return cache[index];\n};\n","import create from \"zustand\";\n\nimport { getNextCardIndex } from \"./helpers/skipLogicHelpers\";\nimport { APP_ID } from \"../constants/css\";\nimport { DismissReason, SprigEvent } from \"../constants/sprigEvents\";\nimport { DEFAULT_WIDTH_PX } from \"../controller/constants\";\nimport { breadcrumbsLogger as logger } from \"../helpers/BreadcrumbsLogger\";\nimport ConflictingWidgets from \"../helpers/conflicting_widgets\";\nimport { calculateFrameDimensions } from \"../helpers/document\";\nimport eventEmitter from \"../helpers/eventEmitter\";\nimport { shouldDirectEmbed } from \"../helpers/general\";\nimport { sprigFetch } from \"../helpers/network\";\nimport {\n AppCard,\n Card,\n CardType,\n MultipleChoiceMultiSelectCard,\n} from \"../types/card\";\nimport { AppConfig, ResponseData, Submission } from \"../types/config\";\n\nconst NON_QUESTION_SET = new Set<CardType>([\"thanks\", \"uploading\"]);\nconst isQuestionCard = (card: AppCard): card is Card =>\n card && !NON_QUESTION_SET.has(card.type);\n\nexport const useConfig = create<AppConfig>()((set, get) => ({\n allResponses: [],\n answers: undefined,\n apiURL: \"\",\n border: \"#000000\",\n cards: [],\n close: async (id = APP_ID) => {\n const app = get();\n const { fadeout, remove, trackHistory, studyType } = app;\n await fadeout(id);\n if (!skipWriteForAction(app)) {\n trackHistory({ event: \"closed\" });\n }\n logger.info(\"SurveyClosing\", { surveyId: app.surveyId });\n\n ConflictingWidgets.enable();\n remove({\n initiator: DismissReason.Closed,\n studyType,\n });\n },\n configureExitOnOverlayClick: () => {},\n customMetadata: {},\n destroy: async (id) => {\n const { eventEmitFn, fadeout, remove, studyType, surveyId } = get();\n\n eventEmitFn(\"survey.complete\", surveyId);\n await fadeout(id);\n ConflictingWidgets.enable();\n remove({\n initiator: DismissReason.Complete,\n studyType,\n });\n },\n endCard: { headline: \"\" },\n envId: \"\",\n eventEmitFn: eventEmitter.emit.bind(eventEmitter),\n fadeout: async (id) => {\n const { eventEmitFn, headers, viewDocument } = get();\n\n if (shouldDirectEmbed(headers)) return Promise.resolve();\n\n eventEmitFn(SprigEvent.SurveyFadingOut);\n return new Promise<void>((resolve) => {\n const el = viewDocument.getElementById(id);\n if (el) {\n el.addEventListener(\"transitionend\", () => {\n resolve();\n });\n el.classList.remove(\"ul-app--visible\");\n } else {\n resolve();\n }\n });\n },\n forceBrandedLogo: false,\n frame: document.createElement(\"iframe\"),\n handleClickEmbedButton: (buttonEventName) => {\n const { cards, eventEmitFn, index } = get();\n\n eventEmitFn(buttonEventName as \"survey.question\", {\n qid: cards[index].name,\n props: cards[index].props, // Only return the upcoming card\n });\n\n set(() => ({ hasViewedEmbed: true }));\n },\n handleUploadUpdate: ({\n mediaRecordingUid,\n isComplete,\n progressPct,\n isSubmitted,\n }) => {\n const { cards, destroy, index, uploadProgress } = get();\n const newISComplete =\n isComplete || uploadProgress[mediaRecordingUid]?.isComplete;\n\n const newProgress = {\n ...uploadProgress,\n [mediaRecordingUid]: {\n progressPct: newISComplete\n ? 100\n : progressPct || uploadProgress[mediaRecordingUid]?.progressPct,\n isComplete: newISComplete,\n isSubmitted:\n isSubmitted || uploadProgress[mediaRecordingUid]?.isSubmitted,\n },\n };\n set({\n uploadProgress: newProgress,\n });\n\n if (cards[index].type !== \"uploading\") {\n return;\n }\n const uploadComplete = Object.entries(uploadProgress).every(\n ([mRUid, v]) =>\n !v.isSubmitted ||\n v.isComplete ||\n (mediaRecordingUid == mRUid && isComplete),\n );\n\n if (uploadComplete && index >= cards.length - 1) {\n // if upload's complete and there's no end card, close the study. no need to update state\n return destroy(APP_ID);\n }\n set({\n index: uploadComplete ? index + 1 : index,\n uploadingCardViewed: true,\n });\n },\n hasViewedEmbed: false,\n headers: {\n Authorization: \"\",\n \"Content-Type\": \"\",\n \"userleap-platform\": \"web\",\n \"x-ul-environment-id\": \"\",\n \"x-ul-installation-method\": \"web-snippet\",\n \"x-ul-sdk-version\": \"\",\n \"x-ul-visitor-id\": \"\",\n },\n index: 0,\n isPreview: false,\n marketingUrl: \"https://sprig.com\",\n meta: {\n ch: 0,\n cw: 0,\n l: \"\",\n mode: null,\n p: \"\",\n sh: 0,\n sw: 0,\n },\n mode: undefined,\n next: (params) => {\n const {\n allResponses,\n cards,\n eventEmitFn,\n index,\n responseGroupUid,\n submit,\n trackHistory,\n uploadProgress,\n viewedCardCount,\n } = get();\n set({\n minScrollableHeight: undefined,\n });\n // Store the value into the cards\n const responses = Array.isArray(params.data) ? params.data : [params.data];\n const answeredAt = Date.now();\n const newCards = [...cards];\n\n const submission: Submission = {\n response: [],\n responseGroupUid,\n questionIndex: index,\n };\n\n let routingTarget: number | null = null;\n // moved outside to allow tracking of all responses\n const newResponses: unknown[] = allResponses.slice(0);\n\n (responses as ResponseData[]).forEach((rawResponse, i) => {\n const card = newCards[index + i];\n const { type, ...rest } = rawResponse;\n\n const response: Omit<ResponseData, \"type\"> & {\n type?: CardType;\n answeredAt: number;\n } = {\n ...rest,\n answeredAt,\n };\n const value = response.value;\n\n if (isQuestionCard(card)) {\n card.value = value;\n }\n\n submission.response.push(response);\n\n let routingValue =\n type === \"multiplechoice\"\n ? Object.values(value as boolean[]).find((v) => v !== false)\n : value;\n\n // MultiChoice Multi Select, should test route based on the selected options\n if (type === \"multipleselect\") {\n routingValue = (\n newCards[index + i] as MultipleChoiceMultiSelectCard\n ).props.options.reduce<string[]>((accumulator, option) => {\n if ((value as { [key: number]: string })[option.id]) {\n accumulator.push(option.value);\n }\n return accumulator;\n }, []);\n }\n\n // record response history\n newResponses[index + i] = routingValue;\n\n routingTarget = getNextCardIndex({\n cards: newCards,\n index: index + i,\n hasEndCard: !!params.endCard,\n uploadProgress,\n allResponses: newResponses,\n });\n });\n // moved the set outside to store them once and keep all values\n set({\n allResponses: newResponses,\n });\n\n if (\n routingTarget === null ||\n NON_QUESTION_SET.has(newCards[routingTarget].type)\n ) {\n // no more next index, survey completed\n submission.completedAt = answeredAt;\n }\n\n const p = submit(submission);\n if (routingTarget === null) {\n // no more next index, survey completed\n params.completeSurvey();\n return;\n }\n if (routingTarget && !NON_QUESTION_SET.has(newCards[routingTarget].type)) {\n p.finally(() => {\n trackHistory({ event: \"seen\", index: routingTarget });\n });\n }\n\n // Emit current question's property to the configured event subscriber.\n const newCard = newCards[routingTarget];\n if (newCards[routingTarget] && eventEmitFn) {\n eventEmitFn(\"survey.question\", {\n qid: newCard.name,\n props: newCard.props, // Only return the upcoming card\n });\n }\n\n set({\n cards: newCards,\n hasViewedEmbed: false,\n index: routingTarget,\n viewedCardCount: viewedCardCount + 1,\n });\n },\n pendingRemoveIframeReason: null,\n previewKey: null,\n previewMode: undefined,\n recorder: () => {},\n recorderEventEmitter: eventEmitter,\n resolveTrackedPromise: () => {\n const { removeIframeIfReady } = get();\n set((s) => ({ unresolvedRequestCount: s.unresolvedRequestCount - 1 }));\n removeIframeIfReady();\n },\n responseGroupUid: \"\",\n remove: ({ initiator, studyType }) => {\n const { eventEmitFn, removeIframeIfReady, surveyId } = get();\n set({ pendingRemoveIframeReason: initiator, studyType });\n eventEmitFn(SprigEvent.SurveyCloseRequested, {\n name: SprigEvent.SurveyCloseRequested,\n initiator,\n studyType,\n \"survey.id\": surveyId!,\n });\n removeIframeIfReady();\n },\n removeIframeIfReady: () => {\n const {\n eventEmitFn,\n pendingRemoveIframeReason,\n unresolvedRequestCount,\n studyType,\n surveyId,\n } = get();\n /*\n wait for all requests to finish before removing the iframe, otherwise\n pending requests will be cancelled\n */\n if (pendingRemoveIframeReason && unresolvedRequestCount === 0) {\n eventEmitFn(SprigEvent.SurveyWillClose, {\n name: SprigEvent.SurveyWillClose,\n initiator: pendingRemoveIframeReason,\n studyType,\n \"survey.id\": surveyId,\n });\n set({ pendingRemoveIframeReason: null, studyType });\n }\n },\n seen: async () => {\n const { trackHistory } = get();\n return trackHistory({ event: \"seen\", isNew: true });\n },\n slugName: null,\n showStripes: false,\n showSurveyBrand: false,\n styleNonce: \"\",\n submit: async ({\n completedAt,\n questionIndex,\n response,\n responseGroupUid,\n }) => {\n const app = get();\n if (!responseGroupUid || skipWriteForAction(app)) {\n return;\n }\n\n const payload = {\n responseGroupUid,\n meta: app.meta,\n customMetadata: app.customMetadata,\n responses: response,\n completedAt,\n previewKey: app.previewKey,\n };\n\n const result = await app.trackPromise(\n sprigFetch(\n `${app.apiURL}/sdk/1/environments/${app.envId}/visitors/${app.userId}/responses/submit`,\n {\n body: JSON.stringify(payload),\n headers: app.headers,\n method: \"POST\",\n },\n ),\n );\n\n if (!result.ok) {\n if (result.reportError) {\n console.warn(\n `[Sprig] (ERR-427) Failed to submit response`,\n result.error,\n );\n await app.trackPromise(\n reportError(app, \"submitResponse\", result.error),\n );\n }\n return;\n }\n\n (response as ResponseData[]).forEach((resp, i) => {\n app.eventEmitFn(SprigEvent.QuestionAnswered, {\n ...resp,\n questionIndex: questionIndex ? questionIndex + i : undefined,\n \"survey.id\": app.surveyId,\n });\n });\n },\n surveyId: 0,\n tabTitle: \"\",\n trackHistory: async ({ event, index: overrideIndex, isNew = false }) => {\n const app = get();\n if (skipWriteForAction(app)) return;\n\n const { cards, index: currentIndex } = app;\n\n let index = overrideIndex ?? currentIndex;\n let card: AppCard = cards[index];\n\n while (card) {\n const hist = {\n sid: app.surveyId,\n qid: card.name,\n action: event,\n vid: app.userId,\n eid: app.envId,\n isNew,\n responseGroupUid: app.responseGroupUid,\n previewKey: app.previewKey,\n };\n\n const result = await app.trackPromise(\n sprigFetch(\n `${app.apiURL}/sdk/1/visitors/${app.userId}/surveys/${app.surveyId}/history`,\n {\n method: \"POST\",\n headers: app.headers,\n body: JSON.stringify(hist),\n },\n ),\n );\n\n if (!result.ok && result.reportError) {\n console.warn(\n `[Sprig] (ERR-428) Failed to track survey event`,\n result.error,\n );\n await app.trackPromise(reportError(app, \"trackHistory\", result.error));\n }\n\n // If the next card is in the same group, continue\n const nextCard = cards[index + 1];\n if (\n card.groupId &&\n nextCard?.groupId &&\n nextCard.groupId === card.groupId\n ) {\n index++;\n card = nextCard;\n isNew = false; // Only mark the first card as new\n } else {\n break;\n }\n }\n },\n trackPromise: async (promise) => {\n const { resolveTrackedPromise } = get();\n set((s) => ({ unresolvedRequestCount: s.unresolvedRequestCount + 1 }));\n\n return promise\n .then((p) => {\n resolveTrackedPromise();\n return p;\n })\n .catch((err) => {\n resolveTrackedPromise();\n throw err;\n });\n },\n unresolvedRequestCount: 0,\n update: () => {\n const {\n cards,\n index,\n headers,\n eventEmitFn,\n frame,\n useMobileStyling,\n surveyId,\n viewDocument,\n } = get();\n const isWeb = headers[\"userleap-platform\"] === \"web\";\n const directEmbed = shouldDirectEmbed(headers);\n const card = cards[index];\n const isTableMatrixCard =\n card.type === \"matrix\" &&\n !(card.props.properties.displayMatrixAsAccordion || useMobileStyling);\n\n set({\n minScrollableHeight: undefined,\n });\n // send height update after the initial animation to show the survey frame\n setTimeout(() => {\n const shouldSetFrameWidthBeforeCalculation =\n !directEmbed && !useMobileStyling;\n if (shouldSetFrameWidthBeforeCalculation) {\n frame?.setWidth?.(DEFAULT_WIDTH_PX);\n }\n const [height, width, minHeight] = calculateFrameDimensions(\n viewDocument,\n isWeb && !useMobileStyling,\n directEmbed,\n );\n if (!directEmbed) {\n frame.setHeight?.(height);\n set({\n minScrollableHeight: minHeight,\n });\n if (!useMobileStyling && isTableMatrixCard) {\n frame.setWidth?.(width);\n }\n } else {\n eventEmitFn(SprigEvent.SurveyHeight, {\n name: SprigEvent.SurveyHeight,\n contentFrameHeight: height,\n \"survey.id\": surveyId,\n });\n eventEmitFn(SprigEvent.SurveyWidth, {\n name: SprigEvent.SurveyWidth,\n contentFrameWidth: width,\n \"survey.id\": surveyId,\n });\n }\n }, 100);\n },\n uploadingCardViewed: false,\n uploadProgress: {},\n useDesktopPrototype: undefined,\n useMobileStyling: false,\n userId: \"\",\n viewDocument: window.document,\n viewedCardCount: 0,\n focusedQuestionId: null,\n setFocusedQuestionId: (id: number | null) => set({ focusedQuestionId: id }),\n}));\nconst skipWriteForAction = (app: AppConfig) => {\n return (\n !app.userId ||\n (app.meta && app.meta.mode === \"test\") ||\n app.isPreview ||\n app.previewMode\n );\n};\n\nconst reportError = async (state: AppConfig, action: string, err?: Error) => {\n const { mode, userId: vid, envId, apiURL, headers, viewDocument } = state;\n const pde = viewDocument.documentElement;\n const meta = {\n mode,\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n clientWidth: pde.clientWidth,\n clientHeight: pde.clientHeight,\n location: window.location.href,\n language: window.navigator.language,\n };\n const body = {\n action,\n err: { message: `${err?.name} - ${err?.message}`, stack: err?.stack },\n meta,\n vid,\n envId,\n };\n const result = await sprigFetch(`${apiURL}/sdk/1/errors`, {\n method: \"POST\",\n headers: Object.assign(\n { \"x-ul-error\": window.btoa(`userleap-${Date.now()}-error`) },\n headers,\n ),\n body: JSON.stringify(body),\n });\n if (!result.ok) {\n console.warn(`[Sprig] (ERR-444) Failed to report error to API`, err);\n }\n};\n","import * as React from \"react\";\nconst SvgCaret = (props) => /* @__PURE__ */ React.createElement(\"svg\", { fill: \"none\", height: 24, viewBox: \"0 0 24 24\", width: 24, xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17 10L12 15L7 10\", stroke: \"#0B2330\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 1.5 }));\nexport default SvgCaret;\n","import * as React from \"react\";\nconst SvgCheckmark = (props) => /* @__PURE__ */ React.createElement(\"svg\", { fill: \"none\", height: 10, viewBox: \"0 0 10 10\", width: 10, xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9.15377 1.30774L4.07685 8.23082L1.30762 5.00005\", stroke: \"white\", strokeLinecap: \"round\", strokeWidth: 2 }));\nexport default SvgCheckmark;\n","import { forwardRef, ReactNode, useEffect, useRef, useState } from \"react\";\n\nimport Caret from \"../../assets/caret.svg?react\";\nimport CheckSvg from \"../../assets/checkmark.svg?react\";\n\ninterface AccordionProps {\n animate: boolean;\n children: ReactNode;\n header: string;\n isOpen: boolean;\n onClick: () => void;\n showHeaderCheck: boolean;\n}\n\nconst Checkmark = ({ visible }: { visible: boolean }) => {\n return (\n <div\n className=\"sprig-check-background\"\n style={{ opacity: visible ? 1 : 0 }}\n >\n <CheckSvg className=\"sprig-check\" />\n </div>\n );\n};\n\nconst ANIMATION_DURATION = \"250ms\";\n\n// eslint-disable-next-line react/display-name\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(\n ({ animate, children, header, isOpen, onClick, showHeaderCheck }, ref) => {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState(0);\n const [transition, setTransition] = useState(\"none\");\n const [isInitialRender, setIsInitialRender] = useState(true);\n useEffect(() => {\n const rect = wrapperRef.current?.getBoundingClientRect();\n setHeight(isOpen && rect ? rect.height : 0);\n }, [isOpen]);\n useEffect(() => {\n if ((height || !isOpen) && isInitialRender) {\n setIsInitialRender(false);\n }\n // Do not animate on initial render because this messes up height calculations\n // as the card is not fully expanded when calculating height\n // Alternatively if this is too complicated just delete animate altogether\n setTransition(\n animate && !isInitialRender\n ? `height ${ANIMATION_DURATION} ease`\n : \"none\",\n );\n }, [animate, isInitialRender, height, isOpen]);\n return (\n <div className=\"sprig-accordion\" ref={ref}>\n <button\n className=\"sprig-accordion-header-container\"\n onClick={onClick}\n type=\"button\"\n >\n <div className=\"sprig-header-label-container\">\n <span className=\"sprig-header-label\">{header}</span>\n <Checkmark visible={showHeaderCheck} />\n </div>\n <Caret\n className=\"sprig-caret\"\n style={{\n transitionDuration: animate ? ANIMATION_DURATION : \"0\",\n transform: isOpen ? \"rotate(-180deg)\" : \"none\",\n }}\n />\n </button>\n <div className=\"sprig-accordion-body\" style={{ transition, height }}>\n <div ref={wrapperRef}>{children}</div>\n </div>\n </div>\n );\n },\n);\n","const Arrow = ({\n style,\n stroke = \"black\",\n}: {\n style?: { [key: string]: string };\n stroke?: string;\n}) => {\n return (\n <svg\n fill=\"none\"\n height=\"10\"\n style={style}\n viewBox=\"0 0 12 10\"\n width=\"12\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1.47839 5.2085L10.9384 5.2085\"\n stroke={stroke}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.35\"\n />\n <path\n d=\"M7.0686 1.15845L10.9386 5.20845L7.0686 9.25845\"\n stroke={stroke}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.35\"\n />\n </svg>\n );\n};\n\nexport default Arrow;\n","import { HTMLAttributes } from \"react\";\n\n/**\n * Combine class names\n */\nexport const cc = (\n ...args: (HTMLAttributes<HTMLElement>[\"className\"] | boolean | null)[]\n): string => args.filter(Boolean).join(\" \");\n\nexport const getClasses = (\n baseClass: string,\n useMobileStyling: boolean,\n studyType?: string,\n) => {\n const suffix = useMobileStyling ? \"--mobile\" : \"--desktop\";\n const suffixWithStudyType = studyType ? `${suffix}_${studyType}` : \"\";\n\n return `${baseClass + suffix} ${\n baseClass + suffixWithStudyType\n } ${baseClass}`;\n};\n\nexport const getPlatformClass = (baseClass: string, platform: string) => {\n return `${baseClass} ${baseClass}__${platform}`;\n};\n","import { HTMLAttributes } from \"preact/compat\";\n\nimport { cc } from \"../helpers/classes\";\n\nconst Button = (props: HTMLAttributes<HTMLButtonElement>) => {\n return (\n <button\n {...props}\n className={cc(\"ul-card-text__button\", props.className)}\n id=\"ul-card-text__button\"\n />\n );\n};\n\nexport default Button;\n","import { useEffect, useState } from \"react\";\n\nimport { isHTMLElement } from \"./typeguards\";\nimport { useConfig } from \"../view/store\";\n\nexport const useIsCardScrollable = () => {\n const { viewDocument } = useConfig((s) => ({\n viewDocument: s.viewDocument,\n }));\n const [isScrollable, setIsScrollable] = useState(false);\n\n useEffect(() => {\n const target = viewDocument.querySelector(\".sprig-question-body\");\n const observer = new ResizeObserver(() => {\n window.requestAnimationFrame(() => {\n setIsScrollable(\n !!(\n target &&\n isHTMLElement(target) &&\n target.scrollHeight > target.offsetHeight\n ),\n );\n });\n });\n\n if (target) {\n observer.observe(target);\n }\n return () => {\n if (target) {\n observer.disconnect();\n }\n };\n }, [viewDocument]);\n return isScrollable;\n};\n","import { useMemo, useRef } from \"react\";\n\nimport { APP_ID, CssConstant } from \"../../constants/css\";\nimport { useIsCardScrollable } from \"../../helpers/useIsCardScrollable\";\nimport { cc } from \"../helpers/classes\";\nimport { useConfig } from \"../store\";\n\ninterface Props {\n message?: string;\n properties?: {\n questionHtml?: string;\n captionHtml?: string;\n captionText?: string;\n };\n}\n\nconst RichOrPlainTextLabel = ({\n plainText,\n richText,\n id,\n className,\n isHeader,\n}: {\n plainText?: string;\n richText?: string;\n id: string;\n className: string;\n isHeader?: boolean;\n}) => {\n if (richText)\n return (\n <div\n className={className}\n dangerouslySetInnerHTML={{ __html: richText }}\n id={id}\n />\n );\n if (!plainText) return null;\n if (isHeader)\n return (\n <h1 className={className} id={id}>\n {plainText}\n </h1>\n );\n return (\n <p className={className} id={id}>\n {plainText}\n </p>\n );\n};\n\nconst CloseButton = () => {\n const { cards, close, endCard, headers, index } = useConfig((s) => ({\n cards: s.cards,\n close: s.close,\n endCard: s.endCard,\n headers: s.headers,\n index: s.index,\n useMobileStyling: s.useMobileStyling,\n }));\n const steps = cards.length;\n\n /**\n * Dispatch to frame parent that app is closing\n */\n const closeApp = useMemo(() => () => close(APP_ID), [close]);\n\n /**\n * Close app if user uses enter key\n */\n const onKeyPressCloseApp = (e: KeyboardEvent) => {\n if (e.key === \"Enter\") closeApp();\n };\n\n const showCloseButton = () => {\n // don't show close button when we're directly embedded on link/email studies\n if ([\"email\", \"link\"].includes(headers[\"userleap-platform\"])) return false;\n\n // if there's an end card and we're on the last step (the end card), hide the close button, else show it.\n return !endCard || index + 1 !== steps;\n };\n return showCloseButton() ? (\n <div\n aria-label=\"Close button\"\n className=\"close-btn\"\n onClick={closeApp}\n onKeyPress={onKeyPressCloseApp}\n role=\"button\"\n tabIndex={0}\n >\n <svg\n fill=\"none\"\n height=\"16px\"\n viewBox=\"0 0 13 13\"\n width=\"16px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.54964 1.78369L1.78369 2.54964L5.73405 6.5L1.78369 10.4504L2.54964 11.2163L6.5 7.26595L10.4504 11.2163L11.2163 10.4504L7.26595 6.5L11.2163 2.54964L10.4504 1.78369L6.5 5.73405L2.54964 1.78369Z\"\n fill=\"#262136\"\n />\n </svg>\n </div>\n ) : null;\n};\n\nconst Header = ({ message, properties }: Props) => {\n const ref = useRef<HTMLDivElement>(null);\n const caption = properties?.captionText;\n const isScrollable = useIsCardScrollable();\n return (\n <div\n className={cc(\n \"question-header-container\",\n \"sprig-header-container\" satisfies CssConstant,\n isScrollable ? \"sprig-border-bottom\" : null,\n )}\n ref={ref}\n >\n <div className=\"question-header-button-container\">\n <RichOrPlainTextLabel\n className={\"ul-question\" satisfies CssConstant}\n id={\"ul-question\" satisfies CssConstant}\n isHeader\n plainText={message}\n richText={properties?.questionHtml}\n />\n <CloseButton />\n </div>\n <RichOrPlainTextLabel\n className={\"ul-caption\" satisfies CssConstant}\n id={\"ul-caption\" satisfies CssConstant}\n plainText={caption}\n richText={properties?.captionHtml}\n />\n </div>\n );\n};\n\nexport default Header;\n","import Button from \"./button\";\nconst CheckMark = () => (\n <svg\n fill=\"none\"\n height=\"10\"\n viewBox=\"0 0 13 10\"\n width=\"13\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.5 1.5L4.5 8.5L1 5\"\n stroke=\"#FFFFFF\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.5\"\n />\n </svg>\n);\n\ntype LongformSubmitButtonProps = {\n isSubmitDisabled: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handleSubmit: (arg0: any) => void;\n};\n\nconst LongformSubmitButton = ({\n isSubmitDisabled,\n handleSubmit,\n}: LongformSubmitButtonProps) => (\n <div className=\"ul-card-longform__submit-button-container\">\n <Button\n className=\"ul-card-longform__submit-button\"\n disabled={isSubmitDisabled}\n onClick={handleSubmit}\n >\n OK <CheckMark />\n </Button>\n </div>\n);\n\nexport default LongformSubmitButton;\n","import { EMBED_MOBILE_MAX_WIDTH } from \"../../constants/css\";\nimport { InternalEventName } from \"../../constants/sprigEvents\";\nimport { ConceptUrl } from \"../../types/card\";\nimport { Platform } from \"../../types/config\";\nimport { useConfig } from \"../store\";\n\nconst ViewEmbedButton = ({\n buttonText = \"View Prototype\",\n handleClick,\n}: {\n buttonText?: string;\n handleClick: (e: MouseEvent) => void;\n}) => (\n <button\n className=\"prototype-button\"\n key=\"prototype-btn\"\n onClick={handleClick}\n >\n {buttonText}\n </button>\n);\n\n/*\n Used for every question type to check if there is any embedded content.\n The two embedded types are prototype and pdf.\n*/\nconst MobileEmbedView = ({\n defaultBody,\n embeddedType = \"prototype\",\n properties,\n}: {\n defaultBody: () => React.JSX.Element;\n embeddedType?: \"prototype\" | \"pdf\";\n platform?: Platform;\n properties?: {\n conceptUrl: ConceptUrl;\n consentDocument?: {\n url: string;\n };\n viewDocumentText?: string;\n };\n}) => {\n const {\n handleClickEmbedButton,\n hasViewedEmbed,\n headers,\n useDesktopPrototype,\n } = useConfig((s) => ({\n handleClickEmbedButton: s.handleClickEmbedButton,\n hasViewedEmbed: s.hasViewedEmbed,\n headers: s.headers,\n useDesktopPrototype: s.useDesktopPrototype,\n }));\n\n const hasEmbed = properties?.conceptUrl || properties?.consentDocument?.url;\n const isMobileEmbedViewportWidth = window.innerWidth < EMBED_MOBILE_MAX_WIDTH;\n const platform = headers[\"userleap-platform\"];\n\n /** handles the behavior when end user clicks on \"view prototype\" button in the mobile browser */\n const handleEmbedButtonClick = (\n event: MouseEvent,\n buttonEventName: InternalEventName,\n ) => {\n event.preventDefault();\n handleClickEmbedButton(buttonEventName);\n };\n\n if (\n !useDesktopPrototype &&\n isMobileEmbedViewportWidth &&\n !hasViewedEmbed &&\n hasEmbed &&\n [\"email\", \"link\"].includes(platform)\n ) {\n if (embeddedType === \"prototype\")\n return (\n <ViewEmbedButton\n handleClick={(e) => {\n handleEmbedButtonClick(e, \"question.prototype.click\");\n }}\n />\n );\n else if (embeddedType === \"pdf\")\n return (\n <ViewEmbedButton\n buttonText={properties?.viewDocumentText || \"View Document\"}\n handleClick={(e) => {\n handleEmbedButtonClick(e, \"question.agreement.click\");\n }}\n />\n );\n }\n\n return defaultBody();\n};\n\nexport default MobileEmbedView;\n","import Checkmark from \"../../assets/checkmark.svg?react\";\n\nexport const Checkbox = ({\n isSelected,\n id,\n divId,\n themeColor,\n}: {\n isSelected: boolean;\n id: string | number;\n divId: string;\n themeColor: string;\n}) => {\n return (\n <div\n aria-checked={isSelected}\n aria-labelledby={`label-${id}`}\n className=\"select-checkbox\"\n id={divId}\n role=\"checkbox\"\n style={\n isSelected\n ? {\n backgroundColor: themeColor,\n borderColor: themeColor,\n boxShadow: \"none\",\n }\n : {}\n }\n tabIndex={0}\n >\n {isSelected && <Checkmark />}\n </div>\n );\n};\n","import { RefObject, useRef } from \"react\";\n\nexport const useAutoSize = (\n textAreaRef: RefObject<HTMLTextAreaElement>,\n sizeUpdate: () => void,\n) => {\n const heightRef = useRef(0);\n const autosizeHeight = () => {\n if (textAreaRef.current) {\n const elem = textAreaRef.current;\n // get the computed styles for the element\n elem.style.height = \"1px\";\n const scrollHeight = elem.scrollHeight;\n const extra = elem.offsetHeight - elem.clientHeight;\n const totalHeight = scrollHeight + extra;\n const maxHeight = parseInt(\n window.getComputedStyle(elem).getPropertyValue(\"max-height\"),\n );\n\n // calculate the height\n const height = totalHeight <= maxHeight ? totalHeight : maxHeight;\n\n // row was added\n if (heightRef.current !== height) {\n sizeUpdate();\n }\n\n heightRef.current = height;\n elem.style.height = `${height}px`;\n }\n };\n return autosizeHeight;\n};\n","import { useState, useRef, useEffect, CSSProperties, JSX } from \"react\";\n\nimport { Checkbox } from \"./checkbox\";\nimport { ERROR_BORDER_COLOR } from \"../../constants/css\";\nimport { cc, getClasses } from \"../helpers/classes\";\nimport { useAutoSize } from \"../hooks\";\nimport { useConfig } from \"../store\";\n\nconst Option = ({\n ariaLabel,\n border,\n choiceStyle = {},\n label,\n isSelected,\n value,\n text,\n id,\n isRadio,\n useMobileStyling,\n error,\n allowTextEntry,\n noneOfTheAbove,\n promptText,\n onUserInputChanged,\n}: {\n ariaLabel?: string;\n border: string;\n choiceStyle?: CSSProperties;\n label?: string;\n isSelected: boolean;\n value?: string;\n text?: string;\n id: string;\n isRadio: boolean;\n noneOfTheAbove?: boolean;\n useMobileStyling: boolean;\n error: boolean;\n allowTextEntry: boolean;\n promptText?: string;\n onUserInputChanged: (args: {\n id: string;\n selected: boolean;\n value?: string;\n userText?: string;\n noneOfTheAbove?: boolean;\n }) => void;\n}) => {\n const { styleNonce, viewDocument } = useConfig((s) => ({\n styleNonce: s.styleNonce,\n viewDocument: s.viewDocument,\n }));\n const [isActive, setIsActive] = useState(false);\n createStyles(viewDocument, border, styleNonce);\n\n const onStateUpdated = ({\n isSelected: selected,\n userText,\n }: {\n isSelected: boolean;\n userText?: string;\n }) => {\n if (onUserInputChanged) {\n onUserInputChanged({\n id: id,\n selected,\n value,\n userText,\n noneOfTheAbove,\n });\n }\n };\n const onClickEvent = (e: MouseEvent | KeyboardEvent) => {\n e.stopPropagation();\n onStateUpdated({ isSelected: isRadio || !isSelected, userText: text });\n setIsActive(false);\n };\n\n const onActive = () => {\n if (!isActive) {\n setIsActive(true);\n }\n };\n\n const onInactive = () => {\n if (isActive) {\n setIsActive(false);\n }\n };\n\n const onKeyPress = (e: KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") onClickEvent(e);\n };\n\n const clickArgs: Partial<JSX.DOMAttributes<HTMLElement>> = {\n onClick: (e: MouseEvent) => onClickEvent(e),\n onKeyPress: (e: KeyboardEvent) => onKeyPress(e),\n };\n\n if (\"ontouchstart\" in viewDocument.documentElement) {\n clickArgs.onTouchStart = onInactive;\n clickArgs.onTouchCancel = onInactive;\n clickArgs.onTouchEnd = onInactive;\n } else {\n clickArgs.onMouseDown = onActive;\n clickArgs.onMouseLeave = onInactive;\n }\n\n const divId = isRadio ? `radio-${id}` : `checkbox-${id}`;\n const conditionalSelectedStyles =\n isSelected || isActive ? [SELECT_ACTIVE_STYLE_CLASS] : [];\n const additionalContainerStyles = [\n ...(error ? [SELECT_ERROR_STYLE_CLASS] : []),\n ...conditionalSelectedStyles,\n ];\n\n const optionLabel = label\n ? { \"aria-labelledby\": `label-${id}` }\n : { \"aria-label\": ariaLabel };\n return (\n <div\n className={cc(\n getClasses(\"choice\", useMobileStyling),\n ...additionalContainerStyles,\n )}\n id={`choice-div-${id}`}\n style={{\n ...choiceStyle,\n ...(error ? { borderColor: ERROR_BORDER_COLOR } : {}),\n }}\n {...clickArgs}\n >\n <div className={cc(\"choice-label-container\")}>\n {!isRadio ? (\n <Checkbox\n divId={divId}\n id={id}\n isSelected={isSelected}\n themeColor={border}\n />\n ) : (\n <div\n {...optionLabel}\n className={cc(\"select-radio\", ...conditionalSelectedStyles)}\n id={divId}\n role=\"radio\"\n tabIndex={0}\n />\n )}\n {label && (\n <label\n className={cc(getClasses(\"select-label\", useMobileStyling))}\n htmlFor={divId}\n id={`label-${id}`}\n >\n {label}\n </label>\n )}\n </div>\n {allowTextEntry && isSelected && (\n <div\n className={cc(\n \"choice-text-entry-container\",\n ...conditionalSelectedStyles,\n )}\n >\n <TextEntryBox\n onTextChange={(userText: string) =>\n onStateUpdated({ isSelected, userText })\n }\n promptText={promptText || \"Please specify\"}\n textValue={text}\n useMobileStyling={useMobileStyling}\n />\n </div>\n )}\n </div>\n );\n};\n\nconst TextEntryBox = ({\n promptText,\n textValue,\n onTextChange,\n useMobileStyling,\n}: {\n promptText: string;\n textValue?: string;\n onTextChange: (value: string) => void;\n useMobileStyling: boolean;\n}) => {\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const { update } = useConfig((s) => ({\n update: s.update,\n }));\n const autosize = useAutoSize(inputRef, () => update());\n\n useEffect(() => {\n autosize();\n if (inputRef.current) {\n inputRef.current.focus();\n }\n return () => {\n update();\n };\n }, []);\n\n return (\n <textarea\n aria-label={promptText}\n aria-multiline=\"true\"\n aria-placeholder={promptText}\n className={cc(getClasses(\"choice-text-input\", useMobileStyling))}\n data-gramm=\"false\"\n maxLength={5000}\n name=\"text\"\n onChange={(e) => {\n autosize();\n e.stopPropagation();\n onTextChange(e.currentTarget.value);\n }}\n onClick={(e) => {\n e.stopPropagation();\n }}\n onKeyPress={(e) => {\n e.stopPropagation();\n }}\n placeholder={promptText}\n ref={inputRef}\n role=\"textbox\"\n rows={1}\n value={textValue}\n />\n );\n};\n\nconst SELECT_STYLE_ELEM_ID = \"ul-select-style-element\";\nconst SELECT_ACTIVE_STYLE_CLASS = \"ul-select-active-dynamic-style\";\nconst SELECT_ERROR_STYLE_CLASS = \"ul-select-error-dynamic-style\";\n\nconst isHtmlStyleElement = (\n element: HTMLElement,\n): element is HTMLStyleElement => {\n return element.tagName.toLowerCase() === \"style\";\n};\n\nconst createStyles = (\n viewDocument: Document,\n border: string,\n nonce?: string,\n) => {\n let selectStyle = viewDocument.getElementById(SELECT_STYLE_ELEM_ID);\n let elementCreated = false;\n if (!selectStyle) {\n selectStyle = viewDocument.createElement(\"style\");\n elementCreated = true;\n }\n if (isHtmlStyleElement(selectStyle)) {\n selectStyle.id = SELECT_STYLE_ELEM_ID;\n if (nonce) selectStyle.nonce = nonce;\n selectStyle.textContent = getSelectStyle(border);\n if (elementCreated) {\n viewDocument.head.appendChild(selectStyle);\n }\n }\n};\n\nconst getSelectStyle = (border: string) => {\n return `\n .${SELECT_ACTIVE_STYLE_CLASS} {\n border-color: ${border};\n }\n .${SELECT_ACTIVE_STYLE_CLASS} .select-radio, .${SELECT_ACTIVE_STYLE_CLASS}.select-radio {\n border: 6px solid ${border};\n box-shadow: none;\n }\n .${SELECT_ERROR_STYLE_CLASS} {\n border-color: ${ERROR_BORDER_COLOR};\n }\n `;\n};\n\nexport default Option;\n","import { ReactNode } from \"react\";\n\nimport { CssConstant } from \"../../constants/css\";\n\nexport const QuestionBodyWrapper = ({ children }: { children: ReactNode }) => {\n return (\n <div className={\"sprig-question-body\" satisfies CssConstant}>\n {children}\n </div>\n );\n};\n","import { ReactNode } from \"react\";\n\nimport { CssConstant } from \"../../constants/css\";\nimport { useIsCardScrollable } from \"../../helpers/useIsCardScrollable\";\nimport { cc } from \"../helpers/classes\";\n\nexport const QuestionBodyFooterContainer = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const isScrollable = useIsCardScrollable();\n return (\n <div\n className={cc(\n \"sprig-question-footer-container\" satisfies CssConstant,\n isScrollable ? (\"sprig-border-top\" satisfies CssConstant) : null,\n )}\n >\n {children}\n </div>\n );\n};\n","/**\n * UserLeap logo component\n * logoOnly: boolean - if true, only the Sprig logo is rendered, otherwise the Sprig logo and \"Powered by\" text is rendered\n */\nconst Logo = ({ logoOnly = false, style = {} }) => {\n const width = logoOnly ? \"35\" : \"112\";\n const viewBox = logoOnly ? \"79 0 31 15\" : \"0 0 112 15\";\n return (\n <svg alt={`${logoOnly ? \"Powered by \" : \"\"}Sprig`} width={width} height=\"15\" viewBox={viewBox} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style={{ display: \"block\", ...style }}>\n { !logoOnly && \n <path d=\"M0.648926 12.0181V2.8584H4.21631C6.0127 2.8584 7.25684 4.06445 7.25684 5.86084V5.87354C7.25684 7.66357 6.0127 8.88867 4.21631 8.88867H2.0708V12.0181H0.648926ZM3.86084 4.05811H2.0708V7.69531H3.86084C5.09229 7.69531 5.80957 7.02881 5.80957 5.87988V5.86719C5.80957 4.72461 5.09229 4.05811 3.86084 4.05811ZM11.6621 12.1514C9.63721 12.1514 8.39941 10.7993 8.39941 8.57764V8.56494C8.39941 6.34961 9.64355 4.99121 11.6621 4.99121C13.6743 4.99121 14.9185 6.34326 14.9185 8.56494V8.57764C14.9185 10.7993 13.6807 12.1514 11.6621 12.1514ZM11.6621 11.0024C12.8428 11.0024 13.5156 10.1011 13.5156 8.57764V8.56494C13.5156 7.03516 12.8428 6.14014 11.6621 6.14014C10.4751 6.14014 9.80859 7.03516 9.80859 8.56494V8.57764C9.80859 10.1074 10.4751 11.0024 11.6621 11.0024ZM17.6226 12.0181L15.7183 5.12451H17.1021L18.3398 10.4438H18.4414L19.8633 5.12451H21.1709L22.5928 10.4438H22.7007L23.9321 5.12451H25.2969L23.3989 12.0181H21.9834L20.5552 6.87646H20.4473L19.0254 12.0181H17.6226ZM29.334 12.1514C27.3154 12.1514 26.0967 10.7739 26.0967 8.59033V8.58398C26.0967 6.43213 27.3408 4.99121 29.2642 4.99121C31.1875 4.99121 32.3682 6.38135 32.3682 8.45068V8.93311H27.4805C27.5059 10.2534 28.2295 11.0215 29.3657 11.0215C30.248 11.0215 30.7749 10.5835 30.9399 10.228L30.9653 10.1772L32.292 10.1709L32.2793 10.228C32.0508 11.1357 31.0986 12.1514 29.334 12.1514ZM29.2705 6.12109C28.3311 6.12109 27.6201 6.76221 27.4995 7.94922H31.0034C30.8955 6.71777 30.2036 6.12109 29.2705 6.12109ZM34.0059 12.0181V5.12451H35.3833V6.16553H35.4849C35.7324 5.43555 36.3735 5.00391 37.2939 5.00391C37.5161 5.00391 37.7573 5.03564 37.897 5.06738V6.33691C37.6494 6.28613 37.4146 6.25439 37.1543 6.25439C36.1006 6.25439 35.3833 6.90186 35.3833 7.89844V12.0181H34.0059ZM41.9277 12.1514C39.9092 12.1514 38.6904 10.7739 38.6904 8.59033V8.58398C38.6904 6.43213 39.9346 4.99121 41.8579 4.99121C43.7812 4.99121 44.9619 6.38135 44.9619 8.45068V8.93311H40.0742C40.0996 10.2534 40.8232 11.0215 41.9595 11.0215C42.8418 11.0215 43.3687 10.5835 43.5337 10.228L43.5591 10.1772L44.8857 10.1709L44.873 10.228C44.6445 11.1357 43.6924 12.1514 41.9277 12.1514ZM41.8643 6.12109C40.9248 6.12109 40.2139 6.76221 40.0933 7.94922H43.5972C43.4893 6.71777 42.7974 6.12109 41.8643 6.12109ZM49.1133 12.1323C47.3804 12.1323 46.2568 10.7422 46.2568 8.57764V8.56494C46.2568 6.38135 47.3613 5.00391 49.1133 5.00391C50.0591 5.00391 50.8652 5.47363 51.2334 6.21631H51.3413V2.42041H52.7124V12.0181H51.3413V10.9326H51.2334C50.8335 11.688 50.0781 12.1323 49.1133 12.1323ZM49.5068 10.958C50.6558 10.958 51.3604 10.0503 51.3604 8.57764V8.56494C51.3604 7.09229 50.6494 6.18457 49.5068 6.18457C48.3516 6.18457 47.6597 7.08594 47.6597 8.56494V8.57764C47.6597 10.0566 48.3516 10.958 49.5068 10.958ZM61.98 12.1323C61.0151 12.1323 60.2598 11.688 59.8599 10.9326H59.7583V12.0181H58.3809V2.42041H59.7583V6.21631H59.8599C60.228 5.47363 61.0342 5.00391 61.98 5.00391C63.7319 5.00391 64.8364 6.38135 64.8364 8.56494V8.57764C64.8364 10.7422 63.7192 12.1323 61.98 12.1323ZM61.5928 10.958C62.7417 10.958 63.4336 10.0566 63.4336 8.57764V8.56494C63.4336 7.08594 62.7417 6.18457 61.5928 6.18457C60.4438 6.18457 59.7329 7.09229 59.7329 8.56494V8.57764C59.7329 10.0503 60.4438 10.958 61.5928 10.958ZM66.8867 14.4429C66.7153 14.4429 66.5122 14.4302 66.3345 14.4111V13.3257C66.4678 13.3447 66.6392 13.3511 66.7979 13.3511C67.439 13.3511 67.8262 13.0781 68.0293 12.3799L68.1309 12.0244L65.6299 5.12451H67.1152L68.8418 10.6343H68.9624L70.6826 5.12451H72.1299L69.5654 12.2847C68.9814 13.9287 68.2832 14.4429 66.8867 14.4429Z\" fill=\"black\" fillOpacity=\"0.7\"/>\n }\n <path d=\"M81.1088 6.63629C79.6878 6.32154 78.9672 5.76865 78.9672 4.99369C78.9672 4.19299 79.736 3.5886 80.7556 3.5886C81.8066 3.5886 82.5995 4.25285 82.5995 5.13336V5.20352H84.0518V5.13336C84.0518 3.52424 82.6405 2.30774 80.7693 2.30774C79.8676 2.30774 79.0414 2.58451 78.4433 3.08655C78.1463 3.33144 77.9077 3.63818 77.7448 3.98479C77.5818 4.33141 77.4984 4.70934 77.5005 5.09153C77.4946 5.44197 77.5675 5.78934 77.714 6.10857C77.8605 6.42779 78.0769 6.71092 78.3475 6.93752C78.8512 7.37584 79.5659 7.70024 80.4709 7.90299C81.9949 8.23898 82.7676 8.81054 82.7676 9.60094C82.7676 10.4576 81.9258 11.1032 80.813 11.1032C79.6571 11.1032 78.7854 10.3856 78.7854 9.43424V9.36408H77.3318V9.43424C77.3318 11.1167 78.8219 12.3847 80.7973 12.3847C81.7421 12.3847 82.6093 12.0983 83.2393 11.5769C83.5519 11.3237 83.8034 11.0048 83.9753 10.6433C84.1472 10.2818 84.2352 9.88702 84.2329 9.48766C84.2329 8.05875 83.1833 7.09907 81.1088 6.63629Z\" fill=\"black\" fillOpacity=\"0.7\"/>\n <path d=\"M89.2394 4.68276C88.6963 4.67605 88.1596 4.79915 87.6751 5.04156C87.1905 5.28397 86.7725 5.63851 86.4566 6.07497V4.85204H85.0747V14.8479H86.4566V11.0356C86.7725 11.472 87.1906 11.8265 87.6751 12.0688C88.1596 12.3111 88.6963 12.434 89.2394 12.4272C91.3836 12.4272 93 10.7627 93 8.55495C93 6.34723 91.3836 4.68276 89.2394 4.68276ZM91.5608 8.84202C91.5057 9.41605 91.2512 9.95356 90.8406 10.3633C90.4299 10.773 89.8883 11.0296 89.3078 11.0896C88.5363 11.1669 87.8177 10.9461 87.2841 10.4692C86.7505 9.99222 86.4566 9.3106 86.4566 8.55495C86.4566 7.10159 87.5538 6.00546 89.0087 6.00546C89.7619 6.00546 90.4421 6.29124 90.9171 6.81002C91.407 7.34232 91.6357 8.06385 91.5608 8.84202Z\" fill=\"black\" fillOpacity=\"0.7\"/>\n <path d=\"M109.95 4.85407V6.06349C109.298 5.18298 108.292 4.68286 107.153 4.68286C105.017 4.68286 103.406 6.31709 103.406 8.48426C103.406 10.6514 105.017 12.285 107.153 12.285C108.296 12.285 109.303 11.79 109.95 10.9185V11.1046C109.95 12.6101 108.993 13.5826 107.513 13.5826C106.513 13.5826 105.68 13.1494 105.284 12.424L105.264 12.3867H103.838L103.871 12.48C104.112 13.1892 104.583 13.8001 105.211 14.2179C105.841 14.6324 106.637 14.8512 107.513 14.8512C108.637 14.8512 109.594 14.4972 110.28 13.8285C110.967 13.1597 111.332 12.2194 111.332 11.1213V4.85407H109.95ZM109.175 10.3502C108.588 10.905 107.752 11.138 106.879 10.9887C106.361 10.8984 105.886 10.6475 105.523 10.2725C105.16 9.89751 104.927 9.41787 104.859 8.90328C104.736 8.03757 104.999 7.21756 105.581 6.655C106.069 6.19093 106.723 5.93643 107.401 5.94699C107.565 5.94713 107.729 5.96026 107.891 5.98625C108.946 6.15489 109.781 7.01609 109.921 8.0852C110.039 8.96507 109.766 9.78958 109.175 10.3502Z\" fill=\"black\" fillOpacity=\"0.7\"/>\n <path d=\"M101.89 2.12378C101.63 2.06766 101.358 2.11486 101.133 2.25518C100.908 2.39551 100.747 2.61769 100.687 2.87371C100.626 3.12973 100.67 3.39902 100.809 3.62339C100.947 3.84775 101.17 4.00917 101.428 4.07275C101.503 4.08936 101.58 4.09778 101.657 4.09786C101.906 4.09824 102.146 4.0083 102.331 3.84518C102.517 3.68206 102.636 3.45714 102.664 3.21327C102.693 2.9694 102.63 2.72361 102.487 2.5227C102.344 2.32179 102.132 2.17981 101.89 2.12378Z\" fill=\"black\" fillOpacity=\"0.7\"/>\n <path d=\"M100.967 10.934H99.7755C98.9285 10.934 98.4196 10.3644 98.4196 9.40982C98.4196 8.4791 98.8757 7.36945 99.8054 6.01778L99.8178 5.99976V5.61807L95.8571 5.06453C95.8585 4.90331 95.8162 4.74466 95.7346 4.60501C95.653 4.46536 95.5352 4.34979 95.3932 4.27027C95.0381 4.07718 94.6498 4.07717 94.3279 4.26383C94.1667 4.35799 94.035 4.4945 93.9476 4.65816C93.8602 4.82182 93.8205 5.00623 93.8328 5.19087C93.8452 5.37552 93.9092 5.55315 94.0176 5.70402C94.1261 5.85489 94.2748 5.97309 94.4472 6.04546L93.2151 12.258H94.5833L95.7196 6.35891L97.8593 6.7155C97.284 7.73439 96.9921 8.68442 96.9921 9.53919C96.9921 11.1168 97.9577 12.1498 99.5187 12.2496V12.258H102.346V4.87723H100.967V10.934Z\" fill=\"black\" fillOpacity=\"0.7\"/>\n </svg>\n );\n}\n\nexport default Logo;\n","import Logo from \"../logo\";\nimport Arrow from \"./arrow\";\n\nconst SprigBrandLogo = ({\n forceBrandedLogo,\n marketingUrlLink,\n}: {\n forceBrandedLogo: boolean | undefined;\n marketingUrlLink: string;\n}) => (\n <div\n className={forceBrandedLogo ? \"yellow-footer-logo\" : \"\"}\n style={{ marginTop: \"4px\", marginBottom: \"4px\" }}\n >\n <a href={marketingUrlLink} rel=\"noreferrer\" target=\"_blank\">\n <div style={{ display: \"flex\" }}>\n <Logo logoOnly={false} />\n {forceBrandedLogo && (\n <Arrow\n style={{\n display: \"block\",\n margin: \"auto 0 auto 4px\",\n transform: \"rotateY(0deg) rotate(-45deg)\",\n }}\n />\n )}\n </div>\n </a>\n </div>\n);\n\nexport default SprigBrandLogo;\n","import Arrow from \"./arrow\";\nimport Logo from \"../logo\";\n\nconst ThankYouLink = ({ marketingUrlLink }: { marketingUrlLink: string }) => {\n // Render Sprig upsell on thank you card for free customers\n return (\n <a dir=\"ltr\" href={marketingUrlLink} rel=\"noreferrer\" target=\"_blank\">\n <div className=\"thank-you-card-link\">\n <div className=\"sprig-box-logo\">\n <Logo logoOnly={true} style={{ margin: \"auto\" }} />\n </div>\n <div>\n <p>\n Capture insights about your own product\n <Arrow\n style={{\n display: \"inline-flex\",\n marginInlineStart: \"4px\",\n verticalAlign: \"middle\",\n }}\n />\n </p>\n </div>\n </div>\n </a>\n );\n};\n\nexport default ThankYouLink;\n","export const getButtonText = (properties?: { buttonText?: string }) => {\n return properties?.buttonText || \"Next\";\n};\n\nexport const getSkipButtonText = (properties?: { skipButtonText?: string }) => {\n return properties?.skipButtonText || \"Skip\";\n};\n\nexport const buildMarketingUrl = ({\n marketingUrl,\n slugName,\n surveyId,\n forceBrandedLogo,\n}: {\n marketingUrl: string | undefined;\n slugName: string | null;\n surveyId: number | undefined;\n forceBrandedLogo: boolean | undefined;\n}) => {\n return `${marketingUrl}?utm_source=survey_branding&utm_medium=website&utm_campaign=${slugName}&utm_content=${surveyId}${\n forceBrandedLogo ? \"&utm_term=poweredby_pill\" : \"\"\n }`;\n};\n","import { JSX, useState } from \"react\";\n\nimport { BaseCardProps } from \"./types\";\nimport {\n CssConstant,\n DEFAULT_BORDER_COLOR,\n ERROR_BORDER_COLOR,\n} from \"../../constants/css\";\nimport { isLongFormSurvey as longFormSurveyCheck } from \"../../helpers/general\";\nimport { ConsentLegalCard as ConsentLegalCardType } from \"../../types/card\";\nimport { useConfig } from \"../../view/store\";\nimport {\n Button,\n Header,\n MobileEmbedView,\n Option,\n QuestionBodyFooterContainer,\n QuestionBodyWrapper,\n} from \"../components\";\nimport { getSkipButtonText } from \"../helpers/card\";\nimport { cc, getClasses } from \"../helpers/classes\";\n\ntype Props = ConsentLegalCardType[\"props\"] & BaseCardProps;\n\nconst ConsentLegalCard = ({\n className,\n message,\n next,\n properties,\n questionId,\n type,\n}: Props) => {\n const { useMobileStyling, border, isLongFormSurvey, focusedQuestionId } =\n useConfig((s) => ({\n useMobileStyling: s.useMobileStyling,\n border: s.border,\n isLongFormSurvey: longFormSurveyCheck(s.studyType),\n focusedQuestionId: s.focusedQuestionId,\n }));\n const [isConsentSelected, setIsConsentSelected] = useState(false);\n const [name, setName] = useState(\"\");\n const [hasValidationError, setHasValidationError] = useState(false);\n\n const isLongFormQuestionFocused =\n isLongFormSurvey && focusedQuestionId === questionId;\n\n const collectName = properties?.collectName;\n const nameLabelText = properties?.nameLabelText || \"Full Name\";\n const consentText =\n properties?.consentText || \"I agree to the stated conditions\";\n const submitButtonText = properties?.submitButtonText || \"Submit\";\n\n const isNamePresent = !!name.trim();\n const isSubmitEnabled = isConsentSelected && (!collectName || isNamePresent);\n\n const handleSubmit = (e: JSX.TargetedEvent, skipped = false) => {\n e.preventDefault();\n e.stopPropagation();\n\n let value: { submitted: boolean; name?: string } | null = null;\n if (!skipped) {\n if (!isSubmitEnabled) {\n setHasValidationError(true);\n return;\n }\n value = { submitted: true };\n if (collectName) value.name = name;\n }\n\n next({ value, questionId, type }, isSubmitEnabled);\n };\n\n const handleNameChange = (e: JSX.TargetedEvent<HTMLInputElement, Event>) => {\n e.preventDefault();\n e.stopPropagation();\n setName(e.currentTarget.value);\n };\n\n const setActiveBorder = (e: JSX.TargetedEvent<HTMLInputElement, Event>) => {\n e.currentTarget.style.borderColor =\n hasValidationError && !isNamePresent ? ERROR_BORDER_COLOR : border;\n };\n const setDefaultBorder = (e: JSX.TargetedEvent<HTMLInputElement, Event>) => {\n e.currentTarget.style.borderColor =\n hasValidationError && !isNamePresent\n ? ERROR_BORDER_COLOR\n : DEFAULT_BORDER_COLOR;\n };\n\n const footer = () => (\n <QuestionBodyFooterContainer>\n <div className={\"sprig-stretch\" satisfies CssConstant}>\n <Option\n allowTextEntry={false}\n border={border}\n error={hasValidationError && !isConsentSelected}\n id=\"consent\"\n isRadio={false}\n isSelected={isConsentSelected}\n label={consentText}\n onUserInputChanged={({ selected }: { selected: boolean }) => {\n if (selected !== isConsentSelected) {\n setIsConsentSelected(!isConsentSelected);\n }\n }}\n useMobileStyling={useMobileStyling}\n />\n {collectName && (\n <input\n aria-label={nameLabelText}\n aria-placeholder={nameLabelText}\n className={cc(\n getClasses(\"ul-consent-legal__name-input\", useMobileStyling),\n )}\n data-gramm=\"false\"\n maxLength={250}\n name=\"name\"\n onBlur={setDefaultBorder}\n onFocus={setActiveBorder}\n onInput={handleNameChange}\n placeholder={nameLabelText}\n style={\n hasValidationError && !isNamePresent\n ? { borderColor: ERROR_BORDER_COLOR }\n : {}\n }\n tabIndex={0}\n value={name}\n />\n )}\n </div>\n <div className=\"ul-card__button-wrapper ul-card-vertical__button-wrapper\">\n <Button\n className={\n isSubmitEnabled\n ? \"\"\n : (\"sprig-button-disabled\" satisfies CssConstant)\n }\n onClick={handleSubmit}\n >\n {submitButtonText}\n </Button>\n {properties.required === false && !isLongFormSurvey && (\n <button\n className={\"ul-card-skip__button\" satisfies CssConstant}\n onClick={(e) => handleSubmit(e, true)}\n >\n {getSkipButtonText(properties)}\n </button>\n )}\n </div>\n </QuestionBodyFooterContainer>\n );\n\n const questionBody = () => {\n return (\n <>\n {properties?.richTextBody ? (\n <QuestionBodyWrapper>\n <div\n className=\"ul-rich-text-body\"\n dangerouslySetInnerHTML={\n properties?.richTextBody\n ? { __html: properties.richTextBody }\n : undefined\n }\n id=\"ul-card__consent-legal-body-container\"\n />\n </QuestionBodyWrapper>\n ) : null}\n <MobileEmbedView\n {...{\n properties,\n defaultBody: footer,\n embeddedType: \"pdf\",\n }}\n />\n </>\n );\n };\n\n return (\n <div\n className={cc(\n className,\n isLongFormSurvey && !isLongFormQuestionFocused && \"ul-card--unfocused\",\n \"ul-card__consent-legal\",\n \"fade-in-transition\" satisfies CssConstant,\n )}\n key={questionId}\n >\n <Header\n message={message}\n properties={{ questionHtml: properties.questionHtml }}\n />\n {questionBody()}\n </div>\n );\n};\n\nexport default ConsentLegalCard;\n","import { useMemo } from \"react\";\n\nimport { isLongFormSurvey as longFormSurveyCheck } from \"../../../helpers/general\";\nimport { ScaleLabelType } from \"../../../types/card\";\nimport { cc, getClasses } from \"../../helpers/classes\";\nimport { useConfig } from \"../../store\";\n\ninterface Props {\n activeValue: number;\n border: string;\n icon: string;\n isPressed: boolean;\n onSubmit: () => void;\n range: number;\n scaleLabelType: ScaleLabelType;\n selectedValue: number | null;\n setSelectedValue: (value: number | null) => void;\n setActiveValue: (value: number) => void;\n setIsPressed: (value: boolean) => void;\n useMobileStyling: boolean;\n value: number;\n viewDocument: Document;\n}\n\nconst getModifiedIconSvg = ({\n icon,\n scaleLabelType,\n value,\n selectedValue,\n}: {\n icon: string;\n scaleLabelType: ScaleLabelType;\n value: number;\n selectedValue: number | null;\n}): string => {\n if (scaleLabelType === \"smiley\" && value === selectedValue) {\n let count = 0;\n return icon.replace(/black/g, () => (++count === 1 ? \"black\" : \"white\"));\n }\n return icon;\n};\n\nconst LikertOption = ({\n activeValue,\n border,\n icon,\n isPressed,\n onSubmit,\n range,\n scaleLabelType,\n selectedValue,\n setSelectedValue,\n setActiveValue,\n setIsPressed,\n useMobileStyling,\n value,\n viewDocument,\n}: Props) => {\n const { isLongFormSurvey } = useConfig((s) => ({\n isLongFormSurvey: longFormSurveyCheck(s.studyType),\n }));\n const id = `option-${value}`;\n const isNumber = scaleLabelType === \"number\";\n const isStar = scaleLabelType === \"star\";\n const isSmiley = scaleLabelType === \"smiley\";\n const isNumberActive =\n (isNumber && value === activeValue) || value === selectedValue;\n const [activeColor, activeOpacity] = (() => {\n const isHovered =\n (isStar && value <= activeValue) || (isSmiley && value === activeValue);\n const isSelected =\n isStar && selectedValue !== null && value <= selectedValue;\n\n if (\n isHovered ||\n isSelected ||\n value === activeValue ||\n value === selectedValue\n ) {\n const solid = isPressed || isSelected || value === selectedValue;\n return [border, solid ? 1 : 0.3];\n }\n\n return [\"\", 1];\n })();\n\n const getClass = () => {\n switch (scaleLabelType) {\n case \"star\":\n return cc(\n getClasses(\"likert-star\", useMobileStyling),\n getClasses(`likert-star-${value}`, useMobileStyling),\n );\n case \"smiley\":\n return cc(\n getClasses(\"likert-smiley\", useMobileStyling),\n getClasses(`likert-smiley-${value}`, useMobileStyling),\n );\n default: {\n if (value === range)\n return cc(\n getClasses(\"likert-number\", useMobileStyling),\n getClasses(`likert-number-${value}`, useMobileStyling),\n getClasses(`likert-last-option`, useMobileStyling),\n );\n return cc(\n getClasses(\"likert-number\", useMobileStyling),\n getClasses(`likert-number-${value}`, useMobileStyling),\n );\n }\n }\n };\n const clearActive = () => {\n setActiveValue(-1);\n setIsPressed(false);\n };\n\n const buttonStyles = useMemo(() => {\n const baseStyles = {\n borderColor: isNumberActive ? activeColor : \"\",\n fillOpacity: isNumberActive ? \"\" : activeOpacity,\n zIndex: isNumberActive ? 3 : \"auto\",\n color: selectedValue === value ? \"#fff\" : \"\",\n };\n\n return isNumber\n ? {\n ...baseStyles,\n backgroundColor: selectedValue === value ? activeColor : \"\",\n }\n : {\n ...baseStyles,\n color:\n isStar || isSmiley || selectedValue === value ? activeColor : \"\",\n };\n }, [\n isNumberActive,\n activeColor,\n activeOpacity,\n selectedValue,\n value,\n isNumber,\n isStar,\n isSmiley,\n ]);\n\n return (\n <button\n aria-label={!isNumber ? String(value) : undefined}\n className={getClass()}\n dangerouslySetInnerHTML={{\n __html: getModifiedIconSvg({\n icon,\n scaleLabelType,\n value,\n selectedValue,\n }),\n }}\n id={id}\n onClick={(e) => {\n if (isLongFormSurvey) {\n e.preventDefault();\n e.stopPropagation();\n setSelectedValue(value);\n }\n onSubmit();\n }}\n onKeyDown={(e) => {\n const buttons = viewDocument.querySelectorAll<HTMLButtonElement>(\n `.likert-${scaleLabelType ?? \"number\"}`,\n );\n const index = value - 1;\n if (e.key === \"ArrowRight\") {\n buttons[index + 1]?.focus();\n } else if (e.key === \"ArrowLeft\") {\n buttons[index - 1]?.focus();\n } else if (e.key === \"Enter\" || e.key === \" \") {\n if (isLongFormSurvey) {\n e.preventDefault();\n e.stopPropagation();\n setSelectedValue(value);\n }\n onSubmit();\n }\n }}\n onPointerDown={() => setIsPressed(true)}\n onPointerEnter={() => setActiveValue(value)}\n onPointerLeave={clearActive}\n style={buttonStyles}\n tabIndex={0}\n />\n );\n};\n\nexport default LikertOption;\n","import { useState } from \"react\";\n\nimport LikertOption from \"./likertOption\";\nimport { CssConstant } from \"../../../constants/css\";\nimport { isLongFormSurvey as longFormSurveyCheck } from \"../../../helpers/general\";\nimport { LikertCard as LikertCardType } from \"../../../types/card\";\nimport { useConfig } from \"../../../view/store\";\nimport {\n Button,\n Header,\n MobileEmbedView,\n QuestionBodyFooterContainer,\n QuestionBodyWrapper,\n} from \"../../components\";\nimport { getButtonText } from \"../../helpers/card\";\nimport { cc } from \"../../helpers/classes\";\nimport { BaseCardProps } from \"../types\";\n\ntype Props = LikertCardType[\"props\"] & BaseCardProps;\n\nconst LikertCard = ({\n className,\n labels,\n message,\n next,\n properties,\n questionId,\n type,\n}: Props) => {\n const {\n border,\n useMobileStyling,\n viewDocument,\n isLongFormSurvey,\n focusedQuestionId,\n } = useConfig((s) => ({\n border: s.border,\n useMobileStyling: s.useMobileStyling,\n viewDocument: s.viewDocument,\n isLongFormSurvey: longFormSurveyCheck(s.studyType),\n focusedQuestionId: s.focusedQuestionId,\n }));\n const [activeValue, setActiveValue] = useState(-1);\n const [isPressed, setIsPressed] = useState(false);\n const [selectedValue, setSelectedValue] = useState<number | null>(null);\n\n const isLongFormQuestionFocused =\n isLongFormSurvey && focusedQuestionId === questionId;\n\n const leftLabel = labels && labels.left;\n const rightLabel = labels && labels.right;\n let scaleRange;\n\n const { range, scaleLabelType, ratingIcons } = properties;\n if (range) scaleRange = Number(range);\n\n const questionRange = scaleRange || 5;\n\n const getIcon = (index: number) => {\n switch (scaleLabelType) {\n case \"star\":\n return ratingIcons[0]?.svg;\n case \"smiley\":\n return ratingIcons[index]?.svg;\n default:\n return String(index + 1);\n }\n };\n\n const nums = [...Array(questionRange)].map((_, index) => {\n const value = index + 1;\n return (\n <LikertOption\n activeValue={activeValue}\n border={border}\n icon={getIcon(index)}\n isPressed={isPressed}\n key={index}\n onSubmit={() => next({ value, questionId, type }, true)}\n range={questionRange}\n scaleLabelType={scaleLabelType}\n selectedValue={selectedValue}\n setActiveValue={setActiveValue}\n setIsPressed={setIsPressed}\n setSelectedValue={setSelectedValue}\n useMobileStyling={useMobileStyling}\n value={value}\n viewDocument={viewDocument}\n />\n );\n });\n\n const handleSkipped = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n next({ value: null, questionId, type }, true);\n };\n\n const questionBody = () => {\n return (\n <>\n <QuestionBodyWrapper>\n <div\n aria-label={`Rating (1 - ${questionRange})`}\n className=\"ul-card--likert__numbers\"\n role=\"radiogroup\"\n >\n {nums}\n </div>\n <div className=\"ul-card--likert__labels\">\n <span>{leftLabel}</span>\n <span>{rightLabel}</span>\n </div>\n </QuestionBodyWrapper>\n {!properties.required && !isLongFormSurvey && (\n <QuestionBodyFooterContainer>\n <div className=\"ul-vertical-centered-container\">\n <Button onClick={handleSkipped}>\n {getButtonText(properties)}\n </Button>\n </div>\n </QuestionBodyFooterContainer>\n )}\n </>\n );\n };\n\n return (\n <form\n className={cc(\n className,\n \"ul-card--likert\",\n \"fade-in-transition\" satisfies CssConstant,\n isLongFormSurvey && !isLongFormQuestionFocused && \"ul-card--unfocused\",\n )}\n key={questionId}\n >\n <Header message={message} properties={properties} />\n <MobileEmbedView\n {...{\n properties,\n defaultBody: questionBody,\n }}\n />\n </form>\n );\n};\n\nexport default LikertCard;\n","import { useCallback, useRef, useState } from \"react\";\n\nimport { MatrixBodyComponent, MatrixBodyProps } from \"./types\";\nimport { MultipleChoiceOption } from \"../../../types/card\";\nimport { Accordion, Option } from \"../../components\";\nimport { useConfig } from \"../../store\";\n\nconst findScrollable = (\n e: HTMLElement | null | undefined,\n): HTMLElement | null | undefined => {\n if (!e) return e;\n if (e.scrollHeight > e.offsetHeight) return e;\n return findScrollable(e.parentElement);\n};\n\nconst isHTMLElement = (e: Element): e is HTMLElement => {\n return e instanceof HTMLElement;\n};\n\nconst getVerticalMargin = (e: Element | null | undefined) => {\n if (!e || !isHTMLElement(e)) return 0;\n const s = getComputedStyle(e);\n const marginHeight = parseFloat(s.marginTop) + parseFloat(s.marginBottom);\n const borderHeight =\n parseFloat(s.borderTopWidth) + parseFloat(s.borderBottomWidth);\n return marginHeight + borderHeight;\n};\n\nexport const MatrixAccordionView: MatrixBodyComponent = ({\n columns,\n onSelect,\n options,\n selectedOptions,\n}: MatrixBodyProps) => {\n const refs = useRef<HTMLDivElement[]>([]);\n const { border, useMobileStyling } = useConfig((s) => ({\n border: s.border,\n useMobileStyling: s.useMobileStyling,\n }));\n const firstUnansweredIndex = options.findIndex(\n (o) => selectedOptions[o.id] === null,\n );\n const [focusedIndex, setFocusedIndex] = useState(firstUnansweredIndex);\n\n const select = useCallback(\n (id: number, column: string) => {\n onSelect(id, column);\n const nextIndex = focusedIndex + 1;\n const nextOption = options[nextIndex];\n if (nextOption && selectedOptions[nextOption.id] === null) {\n setFocusedIndex(nextIndex);\n const accordionRef = refs.current[focusedIndex];\n if (accordionRef?.firstElementChild) {\n const scrollableParent = findScrollable(accordionRef);\n const headerElem = accordionRef.firstElementChild;\n const heightToScroll =\n getVerticalMargin(accordionRef) + headerElem.clientHeight;\n scrollableParent?.scrollTo(\n 0,\n accordionRef.offsetTop + heightToScroll,\n );\n }\n }\n },\n [onSelect, options, selectedOptions, focusedIndex],\n );\n const renderAccordion = useCallback(\n (idx: number, option: MultipleChoiceOption) => {\n const isFocused = focusedIndex === idx;\n return (\n <Accordion\n animate={true}\n header={option.label}\n isOpen={isFocused}\n key={option.id}\n // Changing the size of the mobile sdk doesn't animate smoothly, so better to just keep the height\n //constant and not allow collapsing of all rows\n onClick={() =>\n setFocusedIndex(\n isFocused && !window.UserLeap.isMobileSDK ? -1 : idx,\n )\n }\n ref={(r: HTMLDivElement | null | undefined) => {\n if (r) {\n refs.current[idx] = r;\n }\n }}\n showHeaderCheck={selectedOptions[option.id] !== null}\n >\n <div style={{ paddingTop: \"12px\" }}>\n {columns.map((col) => {\n return (\n <Option\n allowTextEntry={false}\n ariaLabel={`${option.label}-${col.label}`}\n border={border}\n error={false}\n id={`${option.id}-${col.value}`}\n isRadio\n isSelected={selectedOptions[option.id] === col.value}\n key={col.label}\n label={col.label}\n onUserInputChanged={() => select(option.id, col.value)}\n useMobileStyling={useMobileStyling}\n />\n );\n })}\n </div>\n </Accordion>\n );\n },\n [border, columns, focusedIndex, select, selectedOptions, useMobileStyling],\n );\n return <div>{options.map((o, idx) => renderAccordion(idx, o))}</div>;\n};\n","import { useEffect, useRef, useState } from \"react\";\n\nimport { MatrixBodyComponent, MatrixBodyProps } from \"./types\";\nimport { isLongFormSurvey as longFormSurveyCheck } from \"../../../helpers/general\";\nimport { Option } from \"../../components\";\nimport { cc } from \"../../helpers/classes\";\nimport { useConfig } from \"../../store\";\n\nexport const MatrixTableView: MatrixBodyComponent = ({\n columns,\n onSelect,\n options,\n selectedOptions,\n}: MatrixBodyProps) => {\n const { border, useMobileStyling, isLongFormSurvey } = useConfig((s) => ({\n border: s.border,\n useMobileStyling: s.useMobileStyling,\n isLongFormSurvey: longFormSurveyCheck(s.studyType),\n }));\n const numRows = options.length;\n const numColumns = columns.length;\n const matrixContainerRef = useRef<HTMLDivElement>(null);\n const [showGradient, setShowGradient] = useState(false);\n\n const checkCompletelyScrolled = () => {\n const target = matrixContainerRef.current;\n if (target) {\n setShowGradient(\n target.clientWidth + Math.abs(target.scrollLeft) < target.scrollWidth,\n );\n }\n };\n\n useEffect(() => {\n const target = matrixContainerRef.current;\n const observer = new ResizeObserver((entries) => {\n window.requestAnimationFrame(() => {\n if (target) {\n setShowGradient(\n Math.round(entries[0].contentRect.width) < target.scrollWidth,\n );\n }\n });\n });\n\n if (target) {\n observer.observe(target);\n }\n return () => {\n if (target) {\n observer.unobserve(target);\n }\n };\n }, []);\n\n return (\n <div className=\"ul-card--matrix_question_container\">\n <div\n className={cc(\n \"ul-card--matrix_container\",\n showGradient && \"ul-matrix-scroll-gradient\",\n )}\n onScroll={() => {\n checkCompletelyScrolled();\n }}\n ref={matrixContainerRef}\n >\n <div\n className={cc(\n isLongFormSurvey && \"ul-card--matrix_grid_longform\",\n \"ul-card--matrix_grid\",\n )}\n // row label column excluded from count, width calculation different\n style={`--numColumns: ${numColumns}; --numRows: ${numRows + 1};`}\n >\n <div></div> {/*top left cell empty*/}\n {columns.map((col) => (\n <div className=\"ul-matrix-column-label\" key={col.label}>\n {col.label}\n </div>\n ))}\n {options.map((option) => {\n return (\n <>\n <div\n aria-label={option.label}\n className=\"ul-matrix-row-label\"\n key={option.label}\n >\n {option.label}\n </div>\n <div className=\"ul-matrix-row-options\" role={\"radiogroup\"}>\n {columns.map((col, index) => {\n const isLast = index === numColumns - 1;\n return (\n <div\n className={cc(\n \"ul-matrix-option-wrapper\",\n isLast && \"ul-matrix-last-option\",\n )}\n key={col.value}\n >\n <Option\n allowTextEntry={false}\n ariaLabel={`${option.label}-${col.label}`}\n border={border}\n choiceStyle={{\n background: \"transparent\",\n border: \"none\",\n marginBottom: \"0\",\n padding: \"0\",\n }}\n error={false}\n id={`${option.id}-${col.value}`}\n isRadio\n isSelected={selectedOptions[option.id] === col.value}\n onUserInputChanged={() =>\n onSelect(option.id, col.value)\n }\n useMobileStyling={useMobileStyling}\n />\n </div>\n );\n })}\n </div>\n </>\n );\n })}\n </div>\n </div>\n {showGradient && (\n <button\n className=\"ul-matrix-scroll-arrow\"\n onClick={(e) => {\n e.preventDefault();\n const scrollTarget = matrixContainerRef.current;\n\n if (scrollTarget) {\n const isRTL = getComputedStyle(scrollTarget).direction === \"rtl\";\n scrollTarget.scrollLeft = isRTL\n ? scrollTarget.clientWidth - scrollTarget.scrollWidth\n : scrollTarget.scrollWidth;\n }\n }}\n >\n <svg\n fill=\"currentColor\"\n height=\"32\"\n viewBox=\"0 0 256 256\"\n width=\"32\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z\" />\n </svg>\n </button>\n )}\n </div>\n );\n};\n","import { useState } from \"react\";\n\nimport { MatrixAccordionView, MatrixTableView } from \"./matrixViews\";\nimport { BaseCardProps } from \"./types\";\nimport { CssConstant } from \"../../constants/css\";\nimport { isLongFormSurvey as longFormSurveyCheck } from \"../../helpers/general\";\nimport {\n MatrixCard as MatrixCardType,\n MultipleChoiceOption,\n} from \"../../types/card\";\nimport {\n Button,\n Header,\n MobileEmbedView,\n QuestionBodyFooterContainer,\n QuestionBodyWrapper,\n LongformSubmitButton,\n} from \"../components\";\nimport { getButtonText } from \"../helpers/card\";\nimport { cc } from \"../helpers/classes\";\nimport { useConfig } from \"../store\";\n\ntype MatrixProps = MatrixCardType[\"props\"] & BaseCardProps;\nexport interface MatrixState {\n [id: string]: null | string;\n}\n\nconst MatrixCard = ({\n className,\n message,\n next,\n options,\n properties,\n questionId,\n type,\n showIndividualSubmit = false,\n onSubmitButtonClick,\n}: MatrixProps) => {\n const {\n useMobileStyling,\n isLongFormSurvey,\n focusedQuestionId,\n setFocusedQuestionId,\n } = useConfig((s) => ({\n useMobileStyling: s.useMobileStyling,\n isLongFormSurvey: longFormSurveyCheck(s.studyType),\n focusedQuestionId: s.focusedQuestionId,\n setFocusedQuestionId: s.setFocusedQuestionId,\n }));\n const columns = properties.matrixColumn;\n const isRequired = properties.required;\n\n const isLongFormQuestionFocused =\n isLongFormSurvey && focusedQuestionId === questionId;\n\n const handleCardClick = () => {\n if (isLongFormQuestionFocused) {\n setFocusedQuestionId(questionId);\n }\n };\n\n const handleSubmit = (e: SubmitEvent) => {\n e.preventDefault();\n e.stopPropagation();\n next({ value: optionSelectedMap, questionId, type: type }, true);\n\n if (onSubmitButtonClick) {\n onSubmitButtonClick();\n }\n };\n\n const optionsMap = options.reduce(\n (prevMap: MatrixState, option: MultipleChoiceOption) => {\n prevMap[option.id] = null;\n return prevMap;\n },\n {},\n );\n\n const [optionSelectedMap, setOptionSelectedMap] = useState(optionsMap);\n\n const isSubmitDisabled = (optionSelectedMap: MatrixState) => {\n return (\n isRequired && Object.values(optionSelectedMap).every((v) => v == null)\n );\n };\n\n const setSelectedState = (rowId: number, colValue: string) => {\n if (isLongFormSurvey) {\n next(\n {\n value: { ...optionSelectedMap, [rowId]: colValue },\n questionId,\n type: type,\n },\n !isSubmitDisabled({ ...optionSelectedMap, [rowId]: colValue }),\n );\n }\n setOptionSelectedMap((prev) => ({ ...prev, [rowId]: colValue }));\n };\n\n const isAccordionDisplay =\n properties.displayMatrixAsAccordion || useMobileStyling;\n\n const questionBody = () => {\n return (\n <>\n <QuestionBodyWrapper>\n {isAccordionDisplay ? (\n <MatrixAccordionView\n columns={columns}\n onSelect={setSelectedState}\n options={options}\n selectedOptions={optionSelectedMap}\n />\n ) : (\n <MatrixTableView\n columns={columns}\n onSelect={setSelectedState}\n options={options}\n selectedOptions={optionSelectedMap}\n />\n )}\n {showIndividualSubmit && (\n <LongformSubmitButton\n handleSubmit={handleSubmit}\n isSubmitDisabled={isSubmitDisabled(optionSelectedMap)}\n />\n )}\n </QuestionBodyWrapper>\n {!isLongFormSurvey && (\n <QuestionBodyFooterContainer>\n <div className=\"ul-card__button-wrapper\">\n <Button disabled={isSubmitDisabled(optionSelectedMap)}>\n {getButtonText(properties)}\n </Button>\n </div>\n </QuestionBodyFooterContainer>\n )}\n </>\n );\n };\n return (\n <form\n className={cc(\n className,\n !isLongFormSurvey && \"ul-card__matrix\",\n \"fade-in-transition\" satisfies CssConstant,\n isLongFormSurvey && !isLongFormQuestionFocused && \"ul-card--unfocused\",\n )}\n id=\"text-form\"\n key={questionId}\n onClick={handleCardClick}\n onSubmit={handleSubmit}\n >\n <Header message={message} properties={properties} />\n <MobileEmbedView\n {...{\n properties,\n defaultBody: questionBody,\n }}\n />\n </form>\n );\n};\n\nexport default MatrixCard;\n","import { useEffect, useState } from \"react\";\n\nimport Caret from \"../../../assets/caret.svg?react\";\nimport { MultipleChoiceOption } from \"../../../types/card\";\nimport { cc } from \"../../helpers/classes\";\nimport { useConfig } from \"../../store\";\nimport { Checkbox } from \"../checkbox\";\n\nexport interface SelectProps {\n isMultiSelect: boolean;\n multiselectText?: string;\n onChange: (selected: MultipleChoiceOption[]) => void;\n options: MultipleChoiceOption[];\n placeholderText: string;\n value: MultipleChoiceOption[];\n}\n\nconst DropdownPanel = ({\n options,\n selectItem,\n selectedOptions,\n showCheckbox,\n}: {\n options: MultipleChoiceOption[];\n selectItem: (item: MultipleChoiceOption) => void;\n selectedOptions: MultipleChoiceOption[];\n showCheckbox: boolean;\n}) => {\n const { themeColor } = useConfig((s) => ({\n doc: s.viewDocument,\n themeColor: s.border,\n }));\n const getDivId = (id: number) => `checkbox-div-${id}`;\n return (\n <div className=\"select-list\">\n {options.map((o) => (\n <div\n className=\"select-option\"\n key={o.id}\n onClick={(ev) => {\n selectItem(o);\n ev.stopPropagation();\n }}\n role=\"option\"\n >\n {showCheckbox && (\n <Checkbox\n divId={getDivId(o.id)}\n id={o.id}\n isSelected={selectedOptions.includes(o)}\n themeColor={themeColor}\n />\n )}\n {o.label}\n </div>\n ))}\n </div>\n );\n};\n\nexport const Select = ({\n isMultiSelect = false,\n multiselectText = \"choices selected\",\n onChange,\n options,\n placeholderText,\n value,\n}: SelectProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const { viewDocument, update } = useConfig((s) => ({\n viewDocument: s.viewDocument,\n update: s.update,\n }));\n const getText = () => {\n if (value.length === 0) {\n return placeholderText;\n } else if (value.length === 1) {\n return value[0].label;\n }\n return `${value.length} ${multiselectText}`;\n };\n\n const toggleOpen = () => {\n setIsOpen(!isOpen);\n update();\n };\n\n useEffect(() => {\n const handleClickOutside = () => {\n setIsOpen(false);\n update();\n };\n viewDocument.addEventListener(\"click\", handleClickOutside);\n try {\n window.parent?.addEventListener(\"click\", handleClickOutside);\n } catch (err) {\n window.addEventListener(\"click\", handleClickOutside);\n }\n\n return () => {\n viewDocument.removeEventListener(\"click\", handleClickOutside);\n try {\n window.parent?.removeEventListener(\"click\", handleClickOutside);\n } catch (err) {\n window.removeEventListener(\"click\", handleClickOutside);\n }\n };\n }, [viewDocument, update]);\n\n const toggleItemSelected = (item: MultipleChoiceOption) => {\n // Is the value currently selected (before toggling)\n const isSelected = value.some((v) => v.id === item.id);\n const isNoneOfTheAboveSelected = value.some(\n (o) => o.optionProperties?.noneOfTheAbove,\n );\n if (item.optionProperties?.noneOfTheAbove && !isSelected) {\n // If the item is none-of-the-above then deselect all other items when selecting it\n onChange([item]);\n } else if (isMultiSelect) {\n if (isSelected) {\n // Remove item from selected list\n onChange(value.filter((v) => v.id !== item.id));\n } else if (isNoneOfTheAboveSelected) {\n //If none of the above was already selected and the user selected another item\n //deselect none of the above\n onChange([item]);\n } else {\n // Add item to selected list\n onChange([...value, item]);\n }\n } else if (!isSelected) {\n onChange([item]);\n }\n\n if (!isMultiSelect) {\n // Close the dropdown when a selection is made if not multiselect\n toggleOpen();\n }\n };\n const placeholderStyles =\n value.length === 0 ? [\"select-button-placeholder\"] : [];\n\n return (\n <>\n <button\n aria-label=\"choice dropdown button\"\n className={cc(...[\"select-button\", ...placeholderStyles])}\n onClick={(ev) => {\n ev.stopPropagation();\n toggleOpen();\n }}\n type=\"button\"\n >\n <span>{getText()}</span>\n <Caret />\n </button>\n {isOpen && (\n <DropdownPanel\n options={options}\n selectedOptions={value}\n selectItem={toggleItemSelected}\n showCheckbox={isMultiSelect}\n />\n )}\n </>\n );\n};\n","import { JSX, useState } from \"react\";\n\nimport { CssConstant } from \"../../../constants/css\";\nimport { isLongFormSurvey as longFormSurveyCheck } from \"../../../helpers/general\";\nimport {\n CommonMultipleChoiceProps,\n MultipleChoiceOption,\n} from \"../../../types/card\";\nimport { useConfig } from \"../../../view/store\";\nimport {\n Button,\n Header,\n MobileEmbedView,\n Option,\n QuestionBodyFooterContainer,\n QuestionBodyWrapper,\n LongformSubmitButton,\n} from \"../../components\";\nimport { Select } from \"../../components/select\";\nimport { getButtonText } from \"../../helpers/card\";\nimport { cc, getClasses } from \"../../helpers/classes\";\nimport { BaseCardProps } from \"../types\";\n\ntype MultiOptionProps = CommonMultipleChoiceProps & BaseCardProps & ExtraProps;\n\nexport interface OptionSelectedMap {\n [id: string]: { isSelected: boolean; userText?: string };\n}\ninterface ExtraProps {\n onSubmit: (state: OptionSelectedMap, isValidToSubmit: boolean) => void;\n}\n\nexport const BaseMultiChoiceCard = ({\n className,\n message,\n onSubmit,\n options = [],\n properties,\n questionId,\n type,\n showIndividualSubmit = false,\n onSubmitButtonClick,\n}: MultiOptionProps) => {\n const {\n border,\n useMobileStyling,\n isLongFormSurvey,\n focusedQuestionId,\n setFocusedQuestionId,\n } = useConfig((s) => ({\n border: s.border,\n useMobileStyling: s.useMobileStyling,\n isLongFormSurvey: longFormSurveyCheck(s.studyType),\n focusedQuestionId: s.focusedQuestionId,\n setFocusedQuestionId: s.setFocusedQuestionId,\n }));\n\n const isLongFormQuestionFocused =\n isLongFormSurvey && focusedQuestionId === questionId;\n\n const handleCardClick = () => {\n if (\n isLongFormSurvey &&\n focusedQuestionId !== questionId &&\n type === \"multipleselect\"\n ) {\n setFocusedQuestionId(questionId);\n }\n };\n\n const optionsMap = options.reduce(\n (prevMap: OptionSelectedMap, option: MultipleChoiceOption) => {\n prevMap[option.id] = { isSelected: false };\n return prevMap;\n },\n {},\n );\n const [optionSelectedMap, setOptionSelectedMap] = useState(optionsMap);\n\n const isRadio = type === \"multiplechoice\";\n const isRequired = properties.required;\n const noneOfTheAboveOption = options.find(\n (o) => o.optionProperties?.noneOfTheAbove,\n );\n\n const isTextOptionSelectedWithoutTextEntered = (\n optionSelectedMap: OptionSelectedMap,\n ) => {\n return Object.entries(optionSelectedMap).some(([id, s]) => {\n const opt: MultipleChoiceOption | undefined = options.find(\n (o) => `${o.id}` === id,\n );\n const isTextEmpty = s.userText === undefined || s.userText.trim() === \"\";\n return (\n opt?.optionProperties?.allowsTextEntry && isTextEmpty && s.isSelected\n );\n });\n };\n\n const anyOptionsSelected = (optionSelectedMap: OptionSelectedMap) =>\n Object.values(optionSelectedMap).some((o) => o.isSelected);\n\n const isSubmitDisabled = (optionSelectedMap: OptionSelectedMap) => {\n return (\n isTextOptionSelectedWithoutTextEntered(optionSelectedMap) ||\n (isRequired && !anyOptionsSelected(optionSelectedMap))\n );\n };\n\n // Helper to detect if a text-entry choice is currently selected\n const isTextEntryOptionSelected = Object.entries(optionSelectedMap).some(\n ([id, s]) =>\n s.isSelected &&\n options.find((o) => `${o.id}` === id)?.optionProperties?.allowsTextEntry,\n );\n\n // Determine if we should render the individual submit button (needed for\n // radio questions when a text-entry option like “Other” is chosen).\n const shouldShowSubmitButton =\n showIndividualSubmit && (!isRadio || isTextEntryOptionSelected);\n\n const choices = options.map(({ id, label, value, optionProperties }) => {\n const idKey = `${id}`;\n\n const { allowsTextEntry, noneOfTheAbove } = {\n allowsTextEntry: false,\n noneOfTheAbove: false,\n ...optionProperties,\n };\n\n return (\n <Option\n allowTextEntry={allowsTextEntry}\n border={border}\n error={false}\n id={idKey}\n isRadio={isRadio}\n isSelected={!!optionSelectedMap[idKey]?.isSelected}\n key={idKey}\n label={label}\n noneOfTheAbove={noneOfTheAbove}\n onUserInputChanged={(v) => {\n setSelectedState(v.id, v.selected, v.userText, v.noneOfTheAbove);\n // If the user selects an option, focus the question if:\n // 1. We are in a long form survey\n // 2. The option is not a radio\n // 3. The question is not already focused\n if (\n v.selected &&\n isLongFormSurvey &&\n !isRadio &&\n !isLongFormQuestionFocused\n ) {\n setFocusedQuestionId(questionId);\n }\n }}\n promptText={\"Please specify\"}\n text={optionSelectedMap[id]?.userText}\n useMobileStyling={useMobileStyling}\n value={value}\n />\n );\n });\n\n const handleSubmit = (e: JSX.TargetedEvent) => {\n e.preventDefault();\n e.stopPropagation();\n onSubmit(optionSelectedMap, true);\n\n if (onSubmitButtonClick) {\n onSubmitButtonClick();\n }\n };\n\n const setSelectedState = (\n id: string,\n isSelected: boolean,\n userText?: string,\n noneOfTheAbove?: boolean,\n ) => {\n const newState: OptionSelectedMap = Object.assign({}, optionSelectedMap);\n if ((isRadio || noneOfTheAbove) && isSelected) {\n for (const option of Object.values(newState)) {\n option.isSelected = false;\n delete option.userText;\n }\n } else if (\n noneOfTheAboveOption &&\n !noneOfTheAbove &&\n optionSelectedMap[noneOfTheAboveOption.id].isSelected\n ) {\n newState[noneOfTheAboveOption.id].isSelected = false;\n }\n\n newState[id] = { isSelected, userText };\n // For radio questions, defer submission when a text-entry option is\n // selected so that the user can type and explicitly click the submit\n // button. Otherwise, continue the existing auto-submit behavior.\n const selectedRequiresText =\n isRadio &&\n Object.entries(newState).some(\n ([id, s]) =>\n s.isSelected &&\n options.find((o) => `${o.id}` === id)?.optionProperties\n ?.allowsTextEntry,\n );\n\n const submitEnabled = !isSubmitDisabled(newState);\n\n if (isLongFormSurvey) {\n onSubmit(newState, submitEnabled);\n // We do not display a submit button for multiplechoice (radio) questions unless\n // the user selects \"Other\" (selectedRequiresText)\n // Therefore we want to auto advance (trigger onSubmitButtonClick)\n // when a user selects a normal option.\n if (\n isRadio &&\n !selectedRequiresText &&\n submitEnabled &&\n onSubmitButtonClick\n ) {\n onSubmitButtonClick();\n }\n }\n setOptionSelectedMap(newState);\n };\n\n const questionBody = () => {\n return (\n <>\n <QuestionBodyWrapper>\n {properties.isDropdown ? (\n <Select\n isMultiSelect={!isRadio}\n multiselectText={\n properties.dropdownMultiselectedText ?? \"choices selected\"\n }\n onChange={(items) => {\n const newState: OptionSelectedMap = { ...optionSelectedMap };\n for (const op of options) {\n if (items.includes(op)) {\n newState[op.id].isSelected = true;\n } else {\n newState[op.id].isSelected = false;\n }\n }\n if (isLongFormSurvey) {\n onSubmit(newState, !isSubmitDisabled(newState));\n }\n setOptionSelectedMap(newState);\n }}\n options={options}\n placeholderText={\n properties.dropdownPlaceholderText ??\n (isRadio ? \"Select choice\" : \"Select choice(s)\")\n }\n value={options.filter((o) => optionSelectedMap[o.id].isSelected)}\n />\n ) : (\n <div\n className={cc(getClasses(\"ul-card__choices\", useMobileStyling))}\n role={isRadio ? \"radiogroup\" : \"group\"}\n >\n {choices}\n </div>\n )}\n {shouldShowSubmitButton && (\n <LongformSubmitButton\n handleSubmit={handleSubmit}\n isSubmitDisabled={isSubmitDisabled(optionSelectedMap)}\n />\n )}\n </QuestionBodyWrapper>\n {!isLongFormSurvey && (\n <QuestionBodyFooterContainer>\n <div className=\"ul-card__button-wrapper\">\n <Button\n disabled={isSubmitDisabled(optionSelectedMap)}\n onClick={handleSubmit}\n >\n {getButtonText(properties)}\n </Button>\n </div>\n </QuestionBodyFooterContainer>\n )}\n </>\n );\n };\n return (\n <form\n className={cc(\n className,\n \"ul-card--multiple\",\n \"fade-in-transition\" satisfies CssConstant,\n isLongFormSurvey && !isLongFormQuestionFocused && \"ul-card--unfocused\",\n )}\n id=\"text-form\"\n key={questionId}\n onClick={type === \"multipleselect\" ? handleCardClick : undefined}\n onSubmit={handleSubmit}\n >\n <Header message={message} properties={properties} />\n <MobileEmbedView\n {...{\n properties,\n defaultBody: questionBody,\n }}\n />\n </form>\n );\n};\n","import { BaseMultiChoiceCard, OptionSelectedMap } from \"./baseMultiChoiceCard\";\nimport { MultipleChoiceSingleSelectCard as SingleSelectCardProps } from \"../../../types/card\";\nimport { useConfig } from \"../../../view/store\";\nimport { BaseCardProps } from \"../types\";\n\ntype SingleSelectProps = SingleSelectCardProps[\"props\"] & BaseCardProps;\n\nconst SingleSelectCard = (props: SingleSelectProps) => {\n const { questionId, type, next, options } = props;\n\n const { setFocusedQuestionId } = useConfig((s) => ({\n setFocusedQuestionId: s.setFocusedQuestionId,\n }));\n\n const handleSubmit = (\n optionMap: OptionSelectedMap,\n isValidToSubmit: boolean,\n ) => {\n const selectedEntry = Object.entries(optionMap).find(\n ([, value]) => value.isSelected,\n ) || [undefined, undefined];\n\n const [selectedId, selectedState] = selectedEntry;\n const selectedOption = options.find((o) => `${o.id}` === selectedId);\n\n // Prevent auto-advance when the chosen option allows text entry but the user hasn’t provided any text yet.\n // This ensures the focus doesn’t move away before the secondary input is filled.\n if (\n selectedOption?.optionProperties?.allowsTextEntry &&\n (!selectedState?.userText || selectedState.userText.trim() === \"\")\n ) {\n setFocusedQuestionId(questionId);\n }\n const secondaryValue = selectedState?.userText\n ? { [selectedId]: { userText: selectedState.userText } }\n : null;\n next(\n {\n value:\n selectedOption && selectedId\n ? { [selectedId]: selectedOption.value }\n : {},\n secondaryValue,\n questionId,\n type,\n },\n isValidToSubmit,\n );\n };\n\n return <BaseMultiChoiceCard {...props} onSubmit={handleSubmit} />;\n};\n\nexport default SingleSelectCard;\n","import { BaseMultiChoiceCard, OptionSelectedMap } from \"./baseMultiChoiceCard\";\nimport { MultipleChoiceMultiSelectCard as MultiSelectCardProps } from \"../../../types/card\";\nimport {\n BaseCardProps,\n MultiChoiceSecondaryValueType,\n MultiSelectValueType,\n} from \"../types\";\n\ntype MultiSelectProps = MultiSelectCardProps[\"props\"] & BaseCardProps;\n\nconst MultiSelectCard = (props: MultiSelectProps) => {\n const { questionId, type, next } = props;\n\n const handleSubmit = (\n optionMap: OptionSelectedMap,\n isValidToSubmit: boolean,\n ) => {\n const initialSelectedMap: MultiSelectValueType = {};\n const valueToSubmit = Object.entries(optionMap).reduce(\n (selectedMap, [key, value]) => {\n selectedMap[key] = value.isSelected;\n return selectedMap;\n },\n initialSelectedMap,\n );\n const secondaryValue = Object.entries(optionMap).reduce(\n (textMap, [id, option]) => {\n if (!option.userText) return textMap;\n const newMap = textMap || {};\n newMap[id] = { userText: option.userText };\n return newMap;\n },\n null as MultiChoiceSecondaryValueType,\n );\n next(\n { value: valueToSubmit, secondaryValue, questionId, type },\n isValidToSubmit,\n );\n };\n\n return <BaseMultiChoiceCard {...props} onSubmit={handleSubmit} />;\n};\n\nexport default MultiSelectCard;\n","import { useState } from \"react\";\n\nimport { BaseCardProps } from \"./types\";\nimport { CssConstant, DEFAULT_BORDER_COLOR } from \"../../constants/css\";\nimport { isLongFormSurvey as longFormSurveyCheck } from \"../../helpers/general\";\nimport { NPSCard as NpsCardType } from \"../../types/card\";\nimport { useConfig } from \"../../view/store\";\nimport {\n Button,\n Header,\n MobileEmbedView,\n QuestionBodyFooterContainer,\n QuestionBodyWrapper,\n} from \"../components\";\nimport { getButtonText } from \"../helpers/card\";\nimport { cc, getClasses } from \"../helpers/classes\";\n\ntype Props = NpsCardType[\"props\"] & BaseCardProps;\n\nconst NPSCard = ({\n className,\n labels,\n message,\n properties,\n next,\n questionId,\n type,\n}: Props) => {\n const [selectedValue, setSelectedValue] = useState<number | null>(null);\n const {\n border,\n useMobileStyling,\n viewDocument,\n isLongFormSurvey,\n focusedQuestionId,\n } = useConfig((s) => ({\n border: s.border,\n useMobileStyling: s.useMobileStyling,\n viewDocument: s.viewDocument,\n isLongFormSurvey: longFormSurveyCheck(s.studyType),\n focusedQuestionId: s.focusedQuestionId,\n }));\n\n const isLongFormQuestionFocused =\n isLongFormSurvey && focusedQuestionId === questionId;\n\n const leftLabel = labels && labels.left;\n const rightLabel = labels && labels.right;\n\n const nums = [...Array(11)].map((_, index) => (\n <button\n className={cc(\n getClasses(\"nps-number\", useMobileStyling),\n getClasses(`nps-number-${index}`, useMobileStyling),\n )}\n id={`option-${index}`}\n key={index}\n onClick={(e) => {\n if (isLongFormSurvey) {\n e.preventDefault();\n e.stopPropagation();\n setSelectedValue(index);\n }\n next({ value: index, questionId, type }, true);\n }}\n onKeyDown={(e) => {\n const buttons =\n viewDocument.querySelectorAll<HTMLButtonElement>(\"button.nps-number\");\n if (e.key === \"ArrowRight\") {\n buttons[index + 1]?.focus();\n } else if (e.key === \"ArrowLeft\") {\n buttons[index - 1]?.focus();\n } else if (e.key === \"Enter\" || e.key === \" \") {\n if (isLongFormSurvey) {\n e.preventDefault();\n e.stopPropagation();\n setSelectedValue(index);\n }\n next({ value: index, questionId, type }, true);\n }\n }}\n onPointerDown={(e) => {\n e.currentTarget.style.zIndex = \"2\";\n e.currentTarget.style.borderColor = border;\n }}\n onPointerLeave={(e) => {\n e.currentTarget.style.zIndex = \"auto\";\n e.currentTarget.style.borderColor = DEFAULT_BORDER_COLOR;\n }}\n style={\n selectedValue === index\n ? { backgroundColor: border, color: \"#fff\" }\n : undefined\n }\n tabIndex={0}\n >\n {index}\n </button>\n ));\n\n const handleSkipped = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n next({ value: null, questionId, type }, true);\n };\n\n const questionBody = () => {\n return (\n <>\n <QuestionBodyWrapper>\n <div className=\"ul-card--nps__numbers\">{nums}</div>\n <div className=\"ul-card--nps__labels\">\n <span>{leftLabel}</span>\n <span>{rightLabel}</span>\n </div>\n </QuestionBodyWrapper>\n {!properties.required && !isLongFormSurvey && (\n <QuestionBodyFooterContainer>\n <div className=\"ul-vertical-centered-container\">\n <Button onClick={handleSkipped}>\n {getButtonText(properties)}\n </Button>\n </div>\n </QuestionBodyFooterContainer>\n )}\n </>\n );\n };\n\n return (\n <form\n className={cc(\n className,\n \"ul-card--nps\",\n \"fade-in-transition\" satisfies CssConstant,\n isLongFormSurvey && !isLongFormQuestionFocused && \"ul-card--unfocused\",\n )}\n key={questionId}\n >\n <Header message={message} properties={properties} />\n <MobileEmbedView\n {...{\n properties,\n defaultBody: questionBody,\n }}\n />\n </form>\n );\n};\n\nexport default NPSCard;\n","import { JSX, useRef, useState, useEffect } from \"react\";\n\nimport { BaseCardProps } from \"./types\";\nimport { CssConstant, DEFAULT_BORDER_COLOR } from \"../../constants/css\";\nimport { isLongFormSurvey as longFormSurveyCheck } from \"../../helpers/general\";\nimport { OpenTextCard as OpenTextCardType } from \"../../types/card\";\nimport { useConfig } from \"../../view/store\";\nimport {\n Button,\n Header,\n MobileEmbedView,\n QuestionBodyFooterContainer,\n QuestionBodyWrapper,\n LongformSubmitButton,\n} from \"../components\";\nimport { getButtonText } from \"../helpers/card\";\nimport { cc, getClasses } from \"../helpers/classes\";\nimport { useAutoSize } from \"../hooks\";\n\ntype Props = OpenTextCardType[\"props\"] & BaseCardProps;\n\nconst OpenTextCard = ({\n className,\n message,\n next,\n properties,\n questionId,\n type,\n showIndividualSubmit = false,\n onSubmitButtonClick,\n}: Props) => {\n const {\n border,\n useMobileStyling,\n update,\n isLongFormSurvey,\n focusedQuestionId,\n setFocusedQuestionId,\n } = useConfig((s) => ({\n border: s.border,\n useMobileStyling: s.useMobileStyling,\n update: s.update,\n isLongFormSurvey: longFormSurveyCheck(s.studyType),\n focusedQuestionId: s.focusedQuestionId,\n setFocusedQuestionId: s.setFocusedQuestionId,\n }));\n const [value, setValue] = useState(\"\");\n const textRef = useRef<HTMLTextAreaElement>(null);\n\n const isLongFormQuestionFocused =\n isLongFormSurvey && focusedQuestionId === questionId;\n\n const handleCardClick = () => {\n if (isLongFormSurvey && focusedQuestionId !== questionId) {\n setFocusedQuestionId(questionId);\n }\n };\n\n useEffect(() => {\n if (isLongFormSurvey) {\n if (isLongFormQuestionFocused) {\n textRef.current?.focus();\n } else {\n textRef.current?.blur();\n }\n }\n }, [isLongFormSurvey, isLongFormQuestionFocused]);\n\n const trimmedValue = value.trim();\n const isSubmitDisabled = properties.required === true && !trimmedValue;\n const autosize = useAutoSize(textRef, () => update());\n const handleChange = (e: JSX.TargetedEvent<HTMLTextAreaElement, Event>) => {\n const { value: targetVal } = e.currentTarget;\n autosize();\n e.preventDefault();\n e.stopPropagation();\n setValue(targetVal);\n if (isLongFormSurvey) {\n const isValid = targetVal.trim().length > 0;\n next({ value: targetVal, questionId, type }, isValid);\n }\n };\n\n const handleSubmit = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n next({ value, questionId, type }, trimmedValue.length > 0);\n\n if (onSubmitButtonClick) {\n onSubmitButtonClick();\n }\n };\n\n const openTextPlaceholder =\n properties && properties.openTextPlaceholder\n ? properties.openTextPlaceholder\n : \"\";\n\n const handleFocus = (\n e: React.JSX.TargetedFocusEvent<HTMLTextAreaElement>,\n ) => {\n e.currentTarget.style.borderColor = border;\n setFocusedQuestionId(questionId);\n };\n const setDefaultBorder = (\n e: React.JSX.TargetedFocusEvent<HTMLTextAreaElement>,\n ) => {\n e.currentTarget.style.borderColor = DEFAULT_BORDER_COLOR;\n };\n\n const questionBody = () => {\n return (\n <div className=\"ul-card-text\">\n <QuestionBodyWrapper>\n <div className=\"ul-card-text__container\">\n <textarea\n aria-describedby=\"ul-caption\"\n aria-labelledby={\"ul-question\" satisfies CssConstant}\n aria-multiline=\"true\"\n aria-placeholder={openTextPlaceholder}\n className={cc(\n getClasses(\"ul-card-text__input\", useMobileStyling),\n )}\n data-gramm=\"false\" // disable grammarly\n maxLength={5000}\n name=\"text\"\n onBlur={setDefaultBorder}\n onChange={handleChange}\n onFocus={handleFocus}\n placeholder={openTextPlaceholder}\n ref={textRef}\n role=\"textbox\"\n tabIndex={0}\n />\n </div>\n {showIndividualSubmit && (\n <LongformSubmitButton\n handleSubmit={handleSubmit}\n isSubmitDisabled={isSubmitDisabled}\n />\n )}\n </QuestionBodyWrapper>\n {!isLongFormSurvey && (\n <QuestionBodyFooterContainer>\n <Button disabled={isSubmitDisabled} onClick={handleSubmit}>\n {getButtonText(properties)}\n </Button>\n {properties.footerHtml && (\n <div\n className=\"footer\"\n dangerouslySetInnerHTML={{ __html: properties.footerHtml }}\n />\n )}\n </QuestionBodyFooterContainer>\n )}\n </div>\n );\n };\n\n return (\n <form\n className={cc(\n className,\n \"ul-card-text\",\n \"fade-in-transition\" satisfies CssConstant,\n isLongFormSurvey && !isLongFormQuestionFocused && \"ul-card--unfocused\",\n )}\n id=\"text-form\"\n key={questionId}\n onClick={handleCardClick}\n >\n <Header message={message} properties={properties} />\n <MobileEmbedView\n {...{\n defaultBody: questionBody,\n properties,\n }}\n />\n </form>\n );\n};\n\nexport default OpenTextCard;\n","import { isLongFormSurvey as longFormSurveyCheck } from \"../../../helpers/general\";\nimport {\n ConsentLegalCard,\n LikertCard,\n MatrixCard,\n MultipleChoiceMultipleSelectCard,\n MultipleChoiceSingleSelectCard,\n NPSCard,\n OpenTextCard,\n RecordedTask,\n TextUrlPromptCard,\n ThanksCard,\n UploadingCard,\n VideoVoiceCard,\n} from \"../../cards\";\nimport { useConfig } from \"../../store\";\nimport { NextFnData } from \"../types\";\n\nimport type { AppCard } from \"../../../types/card\";\n\nconst questionsRequireSubmit = new Set([\n \"open\",\n \"matrix\",\n \"multipleselect\",\n \"multiplechoice\", // only requires submit button when \"Other\" option is selected\n]);\n\ninterface DisplayQuestionProps {\n cardInstance: AppCard;\n moveToNextQuestion: (currentQuestionId: number) => void;\n showIndividualSubmit: boolean;\n submitQuestion: (response: NextFnData, isValidToSubmit: boolean) => void;\n updateCardValues: (\n questionId: number,\n value: NextFnData,\n isValid: boolean,\n ) => void;\n}\n\nexport const DisplayQuestion = ({\n cardInstance,\n moveToNextQuestion,\n showIndividualSubmit,\n submitQuestion,\n updateCardValues,\n}: DisplayQuestionProps) => {\n const { isLongFormSurvey } = useConfig((s) => ({\n isLongFormSurvey: longFormSurveyCheck(s.studyType),\n }));\n if (!cardInstance) {\n return null;\n }\n const { name, type, props } = cardInstance;\n\n const hasSubmitButton =\n showIndividualSubmit && questionsRequireSubmit.has(type);\n\n const baseProps = {\n className: \"ul-card\",\n next: (response: NextFnData, isValidToSubmit: boolean) =>\n submitQuestion(response, isValidToSubmit),\n questionId: name,\n type,\n showIndividualSubmit: showIndividualSubmit,\n ...(hasSubmitButton\n ? {\n next: (response: NextFnData, isValidToSubmit?: boolean) => {\n updateCardValues(\n response.questionId,\n response,\n isValidToSubmit ?? true, // setting default value here for improved clarity\n );\n },\n onSubmitButtonClick: () => moveToNextQuestion(name),\n }\n : {}),\n };\n\n const cardComponent = (() => {\n switch (type) {\n case \"consentlegal\":\n return <ConsentLegalCard {...baseProps} {...props} />;\n\n case \"likert\":\n return <LikertCard {...baseProps} {...props} />;\n\n case \"matrix\":\n return <MatrixCard {...baseProps} {...props} />;\n\n case \"multiplechoice\":\n return <MultipleChoiceSingleSelectCard {...baseProps} {...props} />;\n\n case \"multipleselect\":\n return <MultipleChoiceMultipleSelectCard {...baseProps} {...props} />;\n\n case \"nps\":\n return <NPSCard {...baseProps} {...props} />;\n\n case \"open\":\n return <OpenTextCard {...baseProps} {...props} />;\n\n case \"recordedtask\":\n return <RecordedTask {...baseProps} {...props} />;\n\n case \"texturlprompt\":\n return <TextUrlPromptCard {...baseProps} {...props} />;\n\n case \"thanks\":\n return <ThanksCard {...baseProps} {...props} />;\n\n case \"uploading\":\n return <UploadingCard {...baseProps} {...props} />;\n\n case \"videovoice\":\n return !__NPM_BUNDLED___ ? (\n <VideoVoiceCard {...baseProps} {...props} />\n ) : null;\n\n default:\n return null;\n }\n })();\n\n if (!cardComponent) {\n return null;\n }\n\n return isLongFormSurvey ? (\n <div className=\"ul-card-scroll-wrapper\" key={name}>\n {cardComponent}\n </div>\n ) : (\n cardComponent\n );\n};\n","import { CssConstant } from \"../../../constants/css\";\nimport { CardType } from \"../../../types/card\";\nimport { Button, ThankYouLink, SprigBrandLogo, Arrow } from \"../../components\";\nimport { buildMarketingUrl } from \"../../helpers/card\";\nimport { cc } from \"../../helpers/classes\";\nimport { useConfig } from \"../../store\";\n\ninterface QuestionsFooterProps {\n isSubmitDisabled?: boolean;\n onSubmit: () => void;\n buttonText?: string;\n}\n\nconst LongFormQuestionsFooter = ({\n isSubmitDisabled = false,\n onSubmit,\n buttonText,\n}: QuestionsFooterProps) => {\n const {\n cards,\n forceBrandedLogo,\n index,\n marketingUrl,\n showSurveyBrand,\n slugName,\n surveyId,\n useMobileStyling,\n } = useConfig((s) => ({\n cards: s.cards,\n forceBrandedLogo: s.forceBrandedLogo,\n index: s.index,\n marketingUrl: s.marketingUrl,\n showSurveyBrand: s.showSurveyBrand,\n slugName: s.slugName,\n surveyId: s.surveyId,\n useMobileStyling: s.useMobileStyling,\n }));\n\n const isCurrentlyThankYouCard =\n cards[index]?.type === (\"thanks\" satisfies CardType);\n\n const marketingUrlLink = buildMarketingUrl({\n marketingUrl,\n slugName,\n surveyId,\n forceBrandedLogo,\n });\n\n return (\n <footer\n className={cc(\n \"long-form-question-footer-container\" satisfies CssConstant,\n useMobileStyling && \"long-form-question-footer-container--mobile\",\n isCurrentlyThankYouCard &&\n (\"long-form-question-footer-container-center\" satisfies CssConstant),\n )}\n >\n {isCurrentlyThankYouCard && forceBrandedLogo ? (\n <ThankYouLink marketingUrlLink={marketingUrlLink} />\n ) : (\n <div\n className={\n \"long-form-question-footer-container-logo\" satisfies CssConstant\n }\n >\n {showSurveyBrand ? (\n <SprigBrandLogo\n forceBrandedLogo={forceBrandedLogo}\n marketingUrlLink={marketingUrlLink}\n />\n ) : null}\n </div>\n )}\n {!isCurrentlyThankYouCard && (\n <div\n className={cc(\n \"ul-card__button-wrapper\" satisfies CssConstant,\n \"ul-card-vertical__button-wrapper\" satisfies CssConstant,\n \"long-form-question-footer-container-actions\" satisfies CssConstant,\n )}\n >\n <Button\n className={cc(\n \"long-form-button\" satisfies CssConstant,\n isSubmitDisabled &&\n (\"sprig-button-disabled\" satisfies CssConstant),\n )}\n disabled={isSubmitDisabled}\n onClick={onSubmit}\n >\n <span\n className={\n \"long-form-button-text-container\" satisfies CssConstant\n }\n >\n {buttonText ?? <Arrow stroke=\"white\" />}\n </span>\n </Button>\n </div>\n )}\n </footer>\n );\n};\n\nexport default LongFormQuestionsFooter;\n","import { useEffect, useState, useRef, useCallback, useMemo } from \"react\";\n\nimport { DisplayQuestion } from \"./DisplayQuestion\";\nimport LongFormQuestionsFooter from \"./longFormQuestionsFooter\";\nimport { isLongFormSurvey as longFormSurveyCheck } from \"../../../helpers/general\";\nimport { useConfig } from \"../../store\";\nimport { NextFnData, MultiNextFn } from \"../types\";\n\nimport type {\n AppCard,\n AppCardWithRequired,\n CardType,\n} from \"../../../types/card\";\n\ntype Props = {\n cards: AppCard[];\n next: MultiNextFn;\n};\n\nexport const PageCard = ({ cards, next }: Props) => {\n const [cardValues, setCardValues] = useState<Record<number, NextFnData>>({});\n const [questionHasValidState, setQuestionHasValidState] = useState<\n Record<number, boolean>\n >({});\n\n const { isLongFormSurvey, focusedQuestionId, setFocusedQuestionId } =\n useConfig((s) => ({\n isLongFormSurvey: longFormSurveyCheck(s.studyType),\n focusedQuestionId: s.focusedQuestionId,\n setFocusedQuestionId: s.setFocusedQuestionId,\n }));\n const listRef = useRef<HTMLDivElement>(null);\n const isScrollingProgrammatically = useRef(false);\n const expectedFocusFromManualScroll = useRef<number | null>(null);\n\n const scrollToFocusedQuestion = useCallback(\n (questionId: number | null) => {\n isScrollingProgrammatically.current = true;\n\n const index = cards.findIndex((card) => card.name === questionId);\n\n if (!isLongFormSurvey || questionId === null || index === -1) {\n isScrollingProgrammatically.current = false;\n return;\n }\n\n const el = listRef.current?.querySelectorAll<HTMLElement>(\n \".ul-card-scroll-wrapper\",\n )[index];\n const scrollContainer = listRef.current?.closest<HTMLElement>(\n \".ul-card__container\",\n );\n\n if (!el || !scrollContainer) {\n isScrollingProgrammatically.current = false;\n return;\n }\n\n if (el && scrollContainer) {\n const elRect = el.getBoundingClientRect();\n const containerRect = scrollContainer.getBoundingClientRect();\n\n const elRelativeTop =\n elRect.top - containerRect.top + scrollContainer.scrollTop;\n const elCenter = elRelativeTop + elRect.height / 2;\n\n const viewportHeight = window.innerHeight;\n // the header lives in the websurveys service...\n // this is not ideal, but it's the best we can do for now\n const thresholdHeight = viewportHeight - 157; // 80px header + 77px footer buffer\n\n let targetScrollTop: number;\n if (elRect.height >= thresholdHeight) {\n targetScrollTop = elRelativeTop;\n } else {\n const containerHeight = scrollContainer.clientHeight;\n targetScrollTop = elCenter - containerHeight / 2;\n }\n\n const containerHeight = scrollContainer.clientHeight;\n const maxScrollTop = scrollContainer.scrollHeight - containerHeight;\n const clampedScrollTop = Math.max(\n 0,\n Math.min(targetScrollTop, maxScrollTop),\n );\n\n scrollContainer.scrollTo({\n top: clampedScrollTop,\n behavior: \"smooth\",\n });\n\n // Reset the flag after smooth scrolling is likely complete\n setTimeout(() => {\n isScrollingProgrammatically.current = false;\n }, 500);\n }\n },\n [isLongFormSurvey, cards],\n );\n\n useEffect(() => {\n if (\n focusedQuestionId === null ||\n cards.findIndex((card) => card.name === focusedQuestionId) === -1\n ) {\n setFocusedQuestionId(cards[0].name);\n }\n }, [cards, focusedQuestionId, setFocusedQuestionId]);\n\n // handle external focus changes (e.g., individual next button clicks)\n useEffect(() => {\n if (!isLongFormSurvey || focusedQuestionId === null) return;\n\n if (expectedFocusFromManualScroll.current === focusedQuestionId) {\n expectedFocusFromManualScroll.current = null;\n return;\n }\n\n scrollToFocusedQuestion(focusedQuestionId);\n }, [focusedQuestionId, isLongFormSurvey, scrollToFocusedQuestion]);\n\n const handleScroll = useCallback(() => {\n if (isScrollingProgrammatically.current) {\n return;\n }\n\n const scrollContainer = listRef.current?.closest(\".ul-card__container\");\n if (!scrollContainer) return;\n\n const cardElements = listRef.current?.querySelectorAll(\n \".ul-card-scroll-wrapper\",\n );\n\n if (!cardElements || cardElements.length === 0) {\n return;\n }\n\n const scrollContainerRect = scrollContainer.getBoundingClientRect();\n const centerY = scrollContainerRect.top + scrollContainerRect.height / 2;\n\n let closestIndex = 0;\n let closestDistance = Infinity;\n\n cardElements.forEach((cardElement, index) => {\n const cardRect = cardElement.getBoundingClientRect();\n const cardCenterY = cardRect.top + cardRect.height / 2;\n const distance = Math.abs(centerY - cardCenterY);\n\n if (distance < closestDistance) {\n closestDistance = distance;\n closestIndex = index;\n }\n });\n\n const closestQuestion = cards[closestIndex];\n expectedFocusFromManualScroll.current = closestQuestion.name;\n setFocusedQuestionId(closestQuestion.name);\n }, [cards, setFocusedQuestionId]);\n\n useEffect(() => {\n if (!isLongFormSurvey) return;\n\n const scrollContainer: HTMLElement | null =\n listRef.current?.closest(\".ul-card__container\") || null;\n\n if (scrollContainer) {\n scrollContainer.addEventListener(\"scroll\", handleScroll, {\n passive: true,\n });\n }\n\n return () => {\n if (scrollContainer) {\n scrollContainer.removeEventListener(\"scroll\", handleScroll);\n }\n };\n }, [handleScroll, isLongFormSurvey]);\n\n const canSubmit = useMemo(() => {\n return Object.values(questionHasValidState).every((isValid) => isValid);\n }, [questionHasValidState]);\n\n const updateCardValues = (\n questionId: number,\n value: NextFnData,\n isValid: boolean,\n ) => {\n setCardValues((prev) => ({ ...prev, [questionId]: value }));\n setQuestionHasValidState((prev) => ({\n ...prev,\n [questionId]: isValid,\n }));\n };\n\n useEffect(() => {\n if (!isLongFormSurvey) {\n return;\n }\n\n const initialValues: Record<\n number,\n {\n value: null;\n questionId: number;\n type: CardType;\n }\n > = {};\n\n cards.forEach((card) => {\n const c = card as AppCardWithRequired;\n if (!c.props?.properties?.required) {\n initialValues[c.name] = {\n value: null,\n questionId: c.name,\n type: c.type,\n };\n }\n });\n\n setCardValues(initialValues);\n setQuestionHasValidState({});\n }, [cards, isLongFormSurvey]);\n\n const moveToNextQuestion = (currentQuestionId: number) => {\n if (!isLongFormSurvey) {\n return;\n }\n\n const currentIndex = cards.findIndex(\n (card) => card.name === currentQuestionId,\n );\n const nextIndex = currentIndex + 1;\n\n if (nextIndex < cards.length) {\n const nextQuestionId = cards[nextIndex].name;\n setFocusedQuestionId(nextQuestionId);\n } else {\n setFocusedQuestionId(currentQuestionId);\n }\n };\n\n const questionsSubmit = () => {\n const orderedValues = cards.map((card) => {\n return cardValues[card.name];\n });\n next(orderedValues);\n };\n\n const submitQuestion = (response: NextFnData, isValidToSubmit: boolean) => {\n if (isLongFormSurvey) {\n // Store for batch submit later\n updateCardValues(response.questionId, response, isValidToSubmit);\n\n // FOCUS LOGIC:\n // - Questions WITH submit buttons (open text, matrix, multiselect): Focus advances only when submit button is clicked\n // - Questions WITHOUT submit buttons (NPS, Likert, single-select): Focus advances immediately when answered\n const shouldAutoAdvance = shouldAutoAdvanceFocus(response.type);\n // && isValidToSubmit here too?\n if (shouldAutoAdvance) {\n moveToNextQuestion(response.questionId);\n }\n } else {\n next([response]);\n }\n };\n\n const shouldAutoAdvanceFocus = (cardType: CardType): boolean => {\n // Auto-advance focus ONLY for question types that submit immediately and DON'T have submit/next buttons\n // These questions advance focus as soon as they're answered/selected.\n // Questions NOT in this list (open, matrix, multipleselect) have submit/next buttons\n // and only advance focus when those buttons are clicked\n return new Set([\"nps\", \"likert\", \"multiplechoice\"]).has(cardType);\n };\n\n const isSubmitDisabled = () => {\n // Check if we have the same number of valid responses as cards\n return Object.keys(cardValues).length < cards.length || !canSubmit;\n };\n\n const isThanksCard = cards[0]?.type === \"thanks\";\n\n return isLongFormSurvey ? (\n <div className=\"ul-card-list-container--longform\" ref={listRef}>\n {cards.map((c, i) => (\n <DisplayQuestion\n cardInstance={c}\n key={c?.name || i}\n moveToNextQuestion={moveToNextQuestion}\n showIndividualSubmit={\n isLongFormSurvey && cards.length > 1 && i < cards.length - 1\n }\n submitQuestion={submitQuestion}\n updateCardValues={updateCardValues}\n />\n ))}\n\n {!isThanksCard && (\n <LongFormQuestionsFooter\n isSubmitDisabled={isSubmitDisabled()}\n onSubmit={questionsSubmit}\n />\n )}\n </div>\n ) : (\n <>\n {cards.map((c, i) => (\n <DisplayQuestion\n cardInstance={c}\n key={c?.name || i}\n moveToNextQuestion={moveToNextQuestion}\n showIndividualSubmit={\n isLongFormSurvey && cards.length > 1 && i < cards.length - 1\n }\n submitQuestion={submitQuestion}\n updateCardValues={updateCardValues}\n />\n ))}\n </>\n );\n};\n","export const AvStreamStatus = {\n RequestNeeded: 1,\n TryAgain: 2,\n Ready: 3,\n} as const;\n","import { AvStreamStatus } from \"./constants\";\nimport {\n RecordedTaskPage,\n PermissionTaskPage,\n ScreenTaskPage,\n} from \"../../../types/card\";\n\nexport const isPermissionTaskPage = (\n page: RecordedTaskPage,\n): page is PermissionTaskPage => page.type === \"av_permission\";\n\nexport const isScreenTaskPage = (\n page: RecordedTaskPage,\n): page is ScreenTaskPage => page.type === \"screen_permission\";\n\nexport const avStreamHasRequiredPermissions = (\n avstream: MediaStream,\n page: RecordedTaskPage,\n) => {\n const permissions = isPermissionTaskPage(page)\n ? page.permissionDescriptors\n : [];\n const requiresVideo = permissions.includes(\"camera\");\n return !requiresVideo || avstream.getVideoTracks().length > 0;\n};\n\nexport const getAvStreamRequestStatus = (\n avstream: MediaStream | null | undefined,\n page: RecordedTaskPage,\n) => {\n if (avstream === undefined) {\n return AvStreamStatus.RequestNeeded;\n } else if (!avstream) {\n return AvStreamStatus.TryAgain;\n } else if (!avStreamHasRequiredPermissions(avstream, page)) {\n return AvStreamStatus.RequestNeeded;\n }\n return AvStreamStatus.Ready;\n};\n","import create from \"zustand\";\n\nimport {\n MediaType,\n PassthroughData,\n} from \"../../../constants/sprigRecordingEvents\";\nimport {\n CardType,\n RecordedTaskPage,\n RecordedTaskPageType,\n} from \"../../../types/card\";\nimport { RecordedTaskResponseValueType } from \"../types\";\n\nexport interface RecordedTaskResponseType {\n questionId: number;\n type: CardType;\n value: RecordedTaskResponseValueType;\n}\nexport interface RecordedTaskState {\n avStream: MediaStream | null | undefined;\n captureStream?: MediaStream | null;\n currentPage: RecordedTaskPage | null;\n mediaRecordingUids: UUID[] | null;\n nextQuestion: (response: RecordedTaskResponseType) => void;\n passthroughData?: PassthroughData;\n recordingMediaTypes?: MediaType[];\n screenPermissionRequested: boolean;\n type?: RecordedTaskPageType;\n}\n\nexport interface RecordedTaskActions {\n reset: () => void;\n updatePage: (newState: Partial<RecordedTaskState>) => void;\n}\n\nconst initialState = {\n avStream: null,\n currentPage: null,\n mediaRecordingUids: null,\n nextQuestion: () => {},\n passthroughData: undefined,\n recordingMediaTypes: undefined,\n screenPermissionRequested: false,\n type: undefined,\n};\n\nexport type RecordedTaskStore = RecordedTaskState & RecordedTaskActions;\n\nexport const useRecordedTaskStore = create<RecordedTaskStore>((set) => ({\n ...initialState,\n reset: () => {\n set(initialState);\n },\n updatePage: (newState: Partial<RecordedTaskState>) => {\n set(newState);\n },\n}));\n","import { isPermissionTaskPage, isScreenTaskPage } from \"./helpers\";\nimport { RecordedTaskResponseType, useRecordedTaskStore } from \"./store\";\nimport { MediaType, TaskStatus } from \"../../../constants/sprigRecordingEvents\";\nimport { PermissionTaskPage, RecordedTaskPage } from \"../../../types/card\";\nimport { useConfig } from \"../../../view/store\";\n\nexport function requestAVPermissions({\n currentPage,\n pages,\n}: {\n currentPage: PermissionTaskPage;\n pages: RecordedTaskPage[];\n}) {\n const {\n avStream: existingAvStream,\n recordingMediaTypes,\n updatePage,\n } = useRecordedTaskStore.getState();\n const { recorderEventEmitter } = useConfig.getState();\n recorderEventEmitter.emit(\"av.permission\", {\n \"permission.descriptors\": currentPage.permissionDescriptors,\n \"stream.ready\": (avStream, captureStream) => {\n if (existingAvStream === avStream) return; // no update to current stream\n let destinationPage: RecordedTaskPage = currentPage;\n if (avStream && !currentPage.permissionDescriptors.includes(\"camera\")) {\n // obtained stream skip to next page if we requested only audio\n const currentPageIndex = pages.indexOf(currentPage);\n const nextPageTarget = captureStream?.active\n ? currentPageIndex + 2\n : currentPageIndex + 1;\n // start recording when we have both streams active already\n captureStream?.active &&\n recordingMediaTypes &&\n recorderEventEmitter.emit(\"begin.recording\", {\n \"recording.media.types\": recordingMediaTypes,\n \"start.recording.callback\": (mediaRecordingUids: UUID[]) =>\n updatePage({ mediaRecordingUids }),\n });\n destinationPage = pages[nextPageTarget];\n }\n updatePage({ currentPage: destinationPage, avStream });\n },\n });\n}\n\nexport function initializeRecordTask({\n pages,\n userId: visitorId,\n responseGroupUid,\n surveyId,\n questionId,\n next,\n}: {\n questionId: number;\n surveyId: number;\n responseGroupUid: UUID;\n userId: UUID | null;\n next: (response: RecordedTaskResponseType) => void;\n pages: RecordedTaskPage[];\n}) {\n const { updatePage } = useRecordedTaskStore.getState();\n const { eventEmitFn, recorderEventEmitter } = useConfig.getState();\n const passthroughData = {\n questionId,\n surveyId,\n visitorId,\n responseGroupUid,\n };\n let currentPageIndex = 0;\n recorderEventEmitter.emit(\"recorded.task.permission.screen\");\n eventEmitFn(\"recorded.task.permission.screen\");\n\n // check if we already have obtained necessary permissions\n recorderEventEmitter.emit(\"permission.status\", {\n \"permission.status.callback\": (\n avStream,\n hasVideoPermission,\n hasScreenPermission,\n captureStream,\n ) => {\n const currentPage = pages[currentPageIndex];\n const { type } = currentPage;\n const recordingMediaTypes: MediaType[] = [\"screen\"];\n if (isPermissionTaskPage(currentPage)) {\n const { permissionDescriptors } = currentPage;\n const audioPermissionRequired =\n permissionDescriptors?.includes(\"microphone\");\n const videoPermissionRequired =\n permissionDescriptors?.includes(\"camera\");\n\n //configure the types of recordings we are doing for the task\n audioPermissionRequired && recordingMediaTypes.push(\"audio\");\n videoPermissionRequired && recordingMediaTypes.push(\"video\");\n\n // go to next page if we already have stream and video permission is not required\n const obtainedAudioStream =\n avStream?.active && !videoPermissionRequired;\n const obtainedExistingVideoStream =\n avStream?.active && hasVideoPermission;\n (obtainedAudioStream || obtainedExistingVideoStream) &&\n currentPageIndex++;\n }\n // go to next page if we already obtained screen permission previously\n if (isScreenTaskPage(pages[currentPageIndex]) && hasScreenPermission) {\n currentPageIndex++;\n recorderEventEmitter.emit(\"begin.recording\", {\n \"recording.media.types\": recordingMediaTypes,\n \"start.recording.callback\": (mediaRecordingUids: UUID[]) =>\n updatePage({ mediaRecordingUids }),\n });\n }\n updatePage({\n currentPage: pages[currentPageIndex],\n avStream,\n screenPermissionRequested: hasScreenPermission,\n nextQuestion: next,\n type,\n passthroughData,\n recordingMediaTypes,\n captureStream,\n });\n },\n });\n const currentPage = pages[currentPageIndex];\n // check if first page requests for av\n currentPage.type === \"av_permission\" &&\n requestAVPermissions({\n currentPage,\n pages,\n });\n return currentPage;\n}\n\nexport function completeTask({ status }: { status: TaskStatus }) {\n const { nextQuestion, passthroughData, mediaRecordingUids, reset } =\n useRecordedTaskStore.getState();\n const { recorderEventEmitter, handleUploadUpdate, index } =\n useConfig.getState();\n const responseValues: RecordedTaskResponseType = {\n value: {\n taskStatus: status,\n },\n type: \"recordedtask\",\n questionId: passthroughData?.questionId || 1,\n };\n\n if (!passthroughData) return;\n recorderEventEmitter.emit(\"finish.task\", {\n \"begin.callback\": (mediaRecordingUid) => {\n handleUploadUpdate({\n mediaRecordingUid,\n isSubmitted: true,\n progressPct: 0,\n isComplete: false,\n });\n },\n \"progress.callback\": (\n mediaRecordingUid: UUID,\n data: { detail: number },\n ) => {\n handleUploadUpdate({\n mediaRecordingUid,\n progressPct: data.detail,\n isSubmitted: false,\n isComplete: false,\n });\n },\n \"upload.callback\": (mediaRecordingUid: UUID | null) => {\n if (mediaRecordingUid) {\n handleUploadUpdate({\n mediaRecordingUid,\n isComplete: true,\n isSubmitted: true,\n progressPct: 100,\n });\n }\n },\n \"passthrough.data\": passthroughData,\n \"current.index\": index,\n \"task.response\": responseValues,\n \"task.complete.callback\": (taskDurationMillisecond: number) => {\n responseValues.value.taskDurationMillisecond = taskDurationMillisecond;\n if (mediaRecordingUids) {\n responseValues.value.mediaRecordingUids = mediaRecordingUids;\n }\n reset();\n nextQuestion(responseValues);\n },\n });\n}\n\nexport function nextPage({\n pages,\n setIsRequestingPermission,\n}: {\n pages: RecordedTaskPage[];\n setIsRequestingPermission?: (data: boolean) => void | undefined;\n}) {\n const { recorderEventEmitter, eventEmitFn } = useConfig.getState();\n const {\n updatePage,\n currentPage,\n recordingMediaTypes,\n screenPermissionRequested,\n } = useRecordedTaskStore.getState();\n if (!currentPage) return;\n const currentPageIndex = pages.indexOf(currentPage);\n\n switch (currentPage.type) {\n case \"av_permission\": {\n // if we didn't successfully obtain a stream then page transition to next question otherwise go to screen recording page\n const nextPageTarget = screenPermissionRequested\n ? currentPageIndex + 2\n : currentPageIndex + 1;\n screenPermissionRequested &&\n recordingMediaTypes &&\n recorderEventEmitter.emit(\"begin.recording\", {\n \"recording.media.types\": recordingMediaTypes,\n \"start.recording.callback\": (mediaRecordingUids: UUID[]) => {\n updatePage({ mediaRecordingUids });\n },\n });\n updatePage({ currentPage: pages[nextPageTarget] });\n return;\n }\n case \"screen_permission\":\n recorderEventEmitter.emit(\"screen.permission\", {\n \"screen.permission.requested\": setIsRequestingPermission,\n \"stream.ready.callback\": (avStream, captureStream) => {\n const nextPage = captureStream\n ? pages[currentPageIndex + 1]\n : currentPage;\n captureStream &&\n recordingMediaTypes &&\n recorderEventEmitter.emit(\"begin.recording\", {\n \"recording.media.types\": recordingMediaTypes,\n \"start.recording.callback\": (mediaRecordingUids: UUID[]) => {\n updatePage({ captureStream, mediaRecordingUids });\n },\n });\n updatePage({\n currentPage: nextPage,\n screenPermissionRequested: true,\n captureStream,\n });\n },\n });\n return;\n case \"start_task\":\n eventEmitFn(\"recorded.task.start\");\n recorderEventEmitter.emit(\"recorded.task.start\");\n recorderEventEmitter.emit(\"start.task\");\n updatePage({\n currentPage: pages[currentPageIndex + 1],\n screenPermissionRequested: true,\n });\n return;\n case \"complete_task\":\n return;\n }\n}\n","import { useEffect, useState } from \"react\";\n\nimport { nextPage, completeTask, requestAVPermissions } from \"./actions\";\nimport { AvStreamStatus } from \"./constants\";\nimport { getAvStreamRequestStatus, isPermissionTaskPage } from \"./helpers\";\nimport { useRecordedTaskStore } from \"./store\";\nimport { CssConstant } from \"../../../constants/css\";\nimport {\n CompleteTaskPage,\n PermissionTaskPage,\n RecordedTaskCardProperties,\n RecordedTaskPage,\n ScreenTaskPage,\n StartTaskPage,\n} from \"../../../types/card\";\nimport { Button, MobileEmbedView } from \"../../components\";\nimport { cc } from \"../../helpers/classes\";\nimport { useConfig } from \"../../store\";\n\nconst PERMISSION_GRAPHICS_CONTAINER = \"ul-permission-graphics-container\";\nconst PERMISSION_BODY = \"ul-permission-body\";\nconst PERMISSION_GRAPHICS_CLASSES = cc(\n PERMISSION_GRAPHICS_CONTAINER,\n \"ul_recorded-task-inset-spacing\",\n);\nconst BUTTON_CONTAINER_CLASSES_LEFT = cc(\n \"ul-horizontal-button-container\",\n \"ul-horizontal-button-container-left\",\n);\n\nconst RichTextCaption = ({ richTextBody }: { richTextBody: string }) => {\n return (\n <div\n className=\"ul-rich-text-body\"\n dangerouslySetInnerHTML={{ __html: richTextBody }}\n id=\"ul-task-detail-container\"\n />\n );\n};\n\nconst SkipButton = ({\n required,\n skipButtonText,\n bottom = false,\n}: {\n required: boolean;\n skipButtonText?: string;\n bottom?: boolean;\n}) => {\n if (required) return null;\n return (\n <Button\n className={cc(\n bottom && \"ul-skip-button-below\",\n \"ul-button-inactive\" satisfies CssConstant,\n )}\n onClick={completeTask.bind(null, { status: \"abandoned\" })}\n >\n {skipButtonText || \"Skip\"}\n </Button>\n );\n};\n\nconst ListenForFailedStreams = (pages: RecordedTaskPage[]) => {\n const { avStream, captureStream, recordingMediaTypes, updatePage } =\n useRecordedTaskStore.getState();\n const hasAVMedia =\n recordingMediaTypes?.includes(\"audio\") ||\n recordingMediaTypes?.includes(\"video\");\n\n useEffect(() => {\n // Listens for AV stream failing\n const interval = setInterval(() => {\n if (hasAVMedia && avStream && !avStream.active)\n updatePage({ avStream: null, currentPage: pages[0] });\n else if (!captureStream || !captureStream.active)\n updatePage({\n captureStream: undefined,\n currentPage: pages[hasAVMedia ? 1 : 0],\n });\n }, 1000);\n return () => clearInterval(interval);\n }, [\n avStream,\n captureStream,\n hasAVMedia,\n pages,\n recordingMediaTypes,\n updatePage,\n ]);\n};\n\nexport const StartTaskPageContent = ({\n content,\n pages,\n required,\n}: {\n content: StartTaskPage;\n pages: RecordedTaskPage[];\n required: boolean;\n}) => {\n const { buttonText, skipButtonText, taskDetail } = content;\n ListenForFailedStreams(pages);\n return (\n <div className=\"ul-task-page\" key=\"start-task\">\n {taskDetail && <RichTextCaption richTextBody={taskDetail} />}\n <div className={BUTTON_CONTAINER_CLASSES_LEFT}>\n <Button onClick={nextPage.bind(null, { pages })}>{buttonText}</Button>\n <SkipButton required={required} skipButtonText={skipButtonText} />\n </div>\n </div>\n );\n};\n\nexport const CompleteTaskPageContent = ({\n content,\n pages,\n properties,\n}: {\n content: CompleteTaskPage;\n pages: RecordedTaskPage[];\n properties: RecordedTaskCardProperties;\n}) => {\n const { buttonText, skipButtonText } = content;\n ListenForFailedStreams(pages);\n\n const finishTaskButtons = () => (\n <div className={BUTTON_CONTAINER_CLASSES_LEFT}>\n <Button\n className=\"ul-complete-task-button\"\n onClick={completeTask.bind(null, { status: \"completed\" })}\n >\n {buttonText}\n </Button>\n <Button\n className={cc(\"ul-button-inactive\" satisfies CssConstant)}\n onClick={completeTask.bind(null, { status: \"given.up\" })}\n >\n {skipButtonText}\n </Button>\n </div>\n );\n\n const finishTaskButtonViewPrototypeWrapper = (\n <MobileEmbedView\n {...{\n properties,\n defaultBody: finishTaskButtons,\n }}\n />\n );\n return (\n <div className=\"ul-task-page\" key=\"complete-task\">\n {content.taskDetail && (\n <RichTextCaption richTextBody={content.taskDetail} />\n )}\n {finishTaskButtonViewPrototypeWrapper}\n </div>\n );\n};\n\nexport const ScreenPermissionPageContent = ({\n content,\n pages,\n required,\n}: {\n content: ScreenTaskPage;\n required: boolean;\n pages: RecordedTaskPage[];\n}) => {\n const { buttonText, skipButtonText } = content;\n const [tabTitle] = useConfig((c) => [c.tabTitle]);\n const [isRequestingPermission, setIsRequestingPermission] = useState(false);\n return (\n <div>\n <div className={PERMISSION_GRAPHICS_CLASSES}>\n <p style={{ marginTop: \"auto\" }}>{content.selectTabText}</p>\n <div className=\"ul-select-tab-container\">\n <p className={PERMISSION_BODY}>{tabTitle}</p>\n </div>\n </div>\n <div className={!required ? BUTTON_CONTAINER_CLASSES_LEFT : \"\"}>\n <Button\n disabled={isRequestingPermission}\n onClick={nextPage.bind(null, { pages, setIsRequestingPermission })}\n >\n {buttonText}\n </Button>\n <SkipButton required={required} skipButtonText={skipButtonText} />\n </div>\n </div>\n );\n};\n\nexport const AVPermissionRequestPageContent = ({\n content,\n}: {\n content: PermissionTaskPage;\n}) => {\n return (\n <div\n className={cc(\n PERMISSION_GRAPHICS_CONTAINER,\n \"ul_permission_svg_container\",\n \"ul_recorded-task-inset-spacing\",\n \"ul-center-horizontally\",\n )}\n dangerouslySetInnerHTML={{ __html: content.svg }}\n key=\"ul-permission-request-graphic\"\n />\n );\n};\n\nexport const AVPermissionFailurePageContent = ({\n content,\n pages,\n required,\n}: {\n content: PermissionTaskPage;\n required: boolean;\n pages: RecordedTaskPage[];\n}) => {\n const {\n permissionDeniedHeadline,\n permissionDeniedBody,\n skipButtonText,\n tryAgainButtonText,\n } = content;\n const permissionPage = isPermissionTaskPage(pages[0]) ? pages[0] : null;\n\n useEffect(() => {\n // If the page fail, continue to request for AV permission in the background every second\n const interval = setInterval(() => {\n if (permissionPage !== null)\n requestAVPermissions({\n currentPage: permissionPage,\n pages,\n });\n }, 1000);\n return () => clearInterval(interval);\n }, [permissionPage, pages]);\n\n if (!permissionPage) return null;\n\n return (\n <div>\n <div className={PERMISSION_GRAPHICS_CLASSES}>\n <p className=\"ul-av-permission-denied-paragraph\">\n <span className=\"ul-av-permission-denied-headline\">\n {permissionDeniedHeadline}\n </span>\n <span className={PERMISSION_BODY}>{permissionDeniedBody}</span>\n </p>\n </div>\n <div className={BUTTON_CONTAINER_CLASSES_LEFT}>\n <Button\n onClick={requestAVPermissions.bind(null, {\n currentPage: permissionPage,\n pages,\n })}\n >\n {tryAgainButtonText}\n </Button>\n <SkipButton required={required} skipButtonText={skipButtonText} />\n </div>\n </div>\n );\n};\n\nconst StreamVideo = ({\n stream,\n}: {\n stream: MediaStream | null | undefined;\n}) => {\n return (\n <video\n autoPlay\n className={cc(\"ul_recorded-task-inset-spacing\")}\n id=\"ul-record-task-video-preview\"\n muted\n ref={(video) => {\n if (video) {\n video.srcObject = stream || null;\n }\n }}\n />\n );\n};\n\nexport const AVPermissionGrantedPageContent = ({\n content,\n pages,\n required,\n}: {\n content: PermissionTaskPage;\n required: boolean;\n pages: RecordedTaskPage[];\n}) => {\n const { skipButtonText } = content;\n const { avStream } = useRecordedTaskStore.getState();\n ListenForFailedStreams(pages);\n\n return (\n <div>\n <StreamVideo stream={avStream} />\n <div className={\"ul-vertical-button-container-center\"}>\n <Button onClick={nextPage.bind(null, { pages })}>\n {content.buttonText}\n </Button>\n <SkipButton\n bottom\n required={required}\n skipButtonText={skipButtonText}\n />\n </div>\n </div>\n );\n};\n\nexport const PageContent = ({\n properties,\n}: {\n properties: RecordedTaskCardProperties;\n}) => {\n const { pages, required } = properties;\n const { avStream, currentPage } = useRecordedTaskStore.getState();\n\n if (currentPage === undefined) return null;\n\n switch (currentPage?.type) {\n case \"av_permission\": {\n const permissionStatus = getAvStreamRequestStatus(avStream, currentPage);\n\n if (permissionStatus === AvStreamStatus.RequestNeeded) {\n return <AVPermissionRequestPageContent content={currentPage} />;\n } else if (permissionStatus === AvStreamStatus.TryAgain) {\n return (\n <AVPermissionFailurePageContent\n content={currentPage}\n pages={pages}\n required={required}\n />\n );\n } else {\n return (\n <AVPermissionGrantedPageContent\n content={currentPage}\n pages={pages}\n required={required}\n />\n );\n }\n }\n case \"screen_permission\":\n return (\n <ScreenPermissionPageContent\n content={currentPage}\n pages={pages}\n required={required}\n />\n );\n case \"start_task\":\n return (\n <StartTaskPageContent\n content={currentPage}\n pages={pages}\n required={required}\n />\n );\n case \"complete_task\":\n return (\n <CompleteTaskPageContent\n content={currentPage}\n pages={pages}\n properties={properties}\n />\n );\n default:\n return null;\n }\n};\n","import { initializeRecordTask } from \"./actions\";\nimport { PageContent } from \"./components\";\nimport { AvStreamStatus } from \"./constants\";\nimport {\n getAvStreamRequestStatus,\n isPermissionTaskPage,\n isScreenTaskPage,\n} from \"./helpers\";\nimport { RecordedTaskResponseType, useRecordedTaskStore } from \"./store\";\nimport { CssConstant } from \"../../../constants/css\";\nimport { RecordedTaskCard as RecordedTaskCardType } from \"../../../types/card\";\nimport { useConfig } from \"../../../view/store\";\nimport { QuestionBodyWrapper } from \"../../components\";\nimport Header from \"../../components/header\";\nimport { cc } from \"../../helpers/classes\";\nimport { BaseCardProps } from \"../types\";\n\ntype Props = RecordedTaskCardType[\"props\"] & BaseCardProps;\n\nconst RecordedTaskCard = ({\n className,\n properties,\n next,\n questionId,\n}: Props) => {\n const appStore = useConfig();\n const { surveyId, responseGroupUid, userId } = appStore;\n const store = useRecordedTaskStore();\n const { screenPermissionRequested } = store;\n const avStream = useRecordedTaskStore((state) => state.avStream);\n let currentPage = useRecordedTaskStore((state) => state.currentPage);\n if (!currentPage) {\n // check if we have already obtained permission from previous session\n currentPage = initializeRecordTask({\n questionId,\n surveyId,\n next: (response: RecordedTaskResponseType) => {\n next(response, true);\n },\n pages: properties.pages,\n responseGroupUid,\n userId,\n });\n }\n\n // screen permission page changes headline and caption upon request failure\n let headline: string | undefined = currentPage.headline;\n let captionText: string | undefined = currentPage.captionText;\n const permissionRequestStatus = getAvStreamRequestStatus(\n avStream,\n currentPage,\n );\n if (isScreenTaskPage(currentPage) && screenPermissionRequested) {\n headline = currentPage.permissionDeniedHeadline;\n captionText = currentPage.permissionDeniedCaptionText;\n }\n if (\n isPermissionTaskPage(currentPage) &&\n permissionRequestStatus === AvStreamStatus.Ready\n ) {\n headline = currentPage.permissionGrantedHeadline;\n captionText = currentPage.permissionGrantedCaptionText;\n }\n\n return (\n <div\n className={cc(\n className,\n \"ul-center-horizontally\",\n \"fade-in-transition\" satisfies CssConstant,\n )}\n >\n <Header message={headline} properties={{ captionText }} />\n <QuestionBodyWrapper>\n <PageContent properties={properties} />\n </QuestionBodyWrapper>\n </div>\n );\n};\n\nexport default RecordedTaskCard;\n","const ATTRIBUTE_URL_TO_PROPERTY_MAP = {\n \"{{user_id}}\": \"externalUserId\",\n \"{{email}}\": \"email\",\n};\n\n/**\n * Set visitor attributes and returns url with substitutions made\n * @param rawUrl - url possibly containing tags like {{user_id}}\n * @param visitorAttributes - attributes to substitute in the url\n */\nexport const getAttributedUrl = (\n rawUrl: string | undefined = undefined,\n visitorAttributes: Record<string, string> = {}\n) => {\n if (!rawUrl) return rawUrl;\n try {\n const testUrl = new URL(rawUrl);\n if (testUrl.protocol !== \"http:\" && testUrl.protocol !== \"https:\") {\n return undefined;\n }\n } catch (e) {\n return undefined;\n }\n let attributedUrl = rawUrl;\n const unmatchedUrlTags: string[] = [];\n for (const [urlKey, propertyKey] of Object.entries(\n ATTRIBUTE_URL_TO_PROPERTY_MAP,\n )) {\n if (attributedUrl.toLowerCase().includes(urlKey)) {\n if (visitorAttributes[propertyKey]) {\n const regex = new RegExp(urlKey, \"gi\");\n attributedUrl = attributedUrl.replace(\n regex,\n visitorAttributes[propertyKey],\n );\n } else {\n unmatchedUrlTags.push(urlKey);\n }\n }\n }\n\n if (unmatchedUrlTags.length === 0) return attributedUrl;\n\n // some attributes were not matched; if they're part of query params, attempt to remove them\n // rather than returning 'https://example.com?user_id={{user_id}}' or 'https://example.com?user_id='\n if (!attributedUrl.includes(\"?\")) return attributedUrl;\n\n // source: https://masteringjs.io/tutorials/fundamentals/query-string\n const baseUrl = attributedUrl.slice(0, attributedUrl.indexOf(\"?\"));\n const queryParams = attributedUrl\n .slice(attributedUrl.indexOf(\"?\") + 1)\n .split(\"&\")\n .map((str) => str.split(\"=\"));\n const filteredQueryParams = queryParams.filter(\n (queryParam) => !unmatchedUrlTags.includes(queryParam[1])\n );\n\n if (filteredQueryParams.length === 0) return baseUrl;\n const joinedQueryParams = filteredQueryParams\n .map((queryParam) => queryParam.join(\"=\"))\n .join(\"&\");\n return `${baseUrl}?${joinedQueryParams}`;\n};\n","import { BaseCardProps } from \"./types\";\nimport { CssConstant } from \"../../constants/css\";\nimport { TextUrlPromptCard as TextUrlPromptCardType } from \"../../types/card\";\nimport { useConfig } from \"../../view/store\";\nimport {\n Header,\n MobileEmbedView,\n QuestionBodyFooterContainer,\n QuestionBodyWrapper,\n} from \"../components\";\nimport { getButtonText, getSkipButtonText } from \"../helpers/card\";\nimport { cc } from \"../helpers/classes\";\nimport { getAttributedUrl } from \"../helpers/getAttributedUrl\";\n\ntype Props = TextUrlPromptCardType[\"props\"] & BaseCardProps;\n\nconst TextUrlPromptCard = ({\n className,\n message,\n next,\n properties,\n questionId,\n type,\n}: Props) => {\n const { visitorAttributes } = useConfig((s) => ({\n visitorAttributes: s.visitorAttributes,\n }));\n\n const handleLinkButtonTap = (_: unknown, skipped = false) => {\n const optionalValue = skipped ? { skipped: true } : undefined;\n next({ value: optionalValue, questionId, type }, true);\n };\n\n const handleKeyPressLinkButton = (e: KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \")\n next({ value: undefined, questionId, type }, true);\n };\n\n // TODO consider extracting CSS\n const getBody = (richTextBody: string, plaintextBody: string) => {\n if (richTextBody) {\n return (\n <div\n className=\"ul-rich-text-body\"\n dangerouslySetInnerHTML={{ __html: richTextBody }}\n id=\"ul-card__text-url-body-container\"\n />\n );\n }\n if (!plaintextBody) return null;\n\n return (\n <div className=\"ul-rich-text-body\" id=\"ul-card__text-url-body-container\">\n {(plaintextBody ? plaintextBody.split(/\\n\\s*\\n/g) : []).map(\n (line, index) => {\n return <p key={index}>{line}</p>;\n },\n )}\n </div>\n );\n };\n\n const href = getAttributedUrl(\n properties && properties.buttonUrl,\n visitorAttributes,\n );\n const footer = () => (\n <QuestionBodyFooterContainer>\n <div className=\"ul-card-button-group\">\n <a\n className=\"ul-card-text__button ul-card__text-url-prompt-button\"\n href={href}\n id=\"ul-card-text__button\"\n onClick={handleLinkButtonTap}\n onKeyPress={handleKeyPressLinkButton}\n rel=\"noreferrer\"\n role={href ? \"link\" : \"button\"}\n tabIndex={0}\n target=\"_blank\"\n >\n {getButtonText(properties)}\n </a>\n {properties.required === false && (\n <button\n className={\"ul-card-skip__button\" satisfies CssConstant}\n onClick={(e) => handleLinkButtonTap(e, true)}\n >\n {getSkipButtonText(properties)}\n </button>\n )}\n </div>\n </QuestionBodyFooterContainer>\n );\n\n return (\n <div\n className={cc(\n className,\n \"ul-card__text-url-prompt\",\n \"fade-in-transition\" satisfies CssConstant,\n )}\n key={questionId}\n >\n <Header\n message={message}\n properties={{ questionHtml: properties.questionHtml }}\n />\n <QuestionBodyWrapper>\n {getBody(properties?.richTextBody, properties?.body)}\n </QuestionBodyWrapper>\n <MobileEmbedView\n {...{\n defaultBody: footer,\n properties,\n }}\n />\n </div>\n );\n};\n\nexport default TextUrlPromptCard;\n","import { useEffect } from \"react\";\n\nimport { BaseCardProps } from \"./types\";\nimport { APP_ID, CssConstant } from \"../../constants/css\";\nimport { ThanksCard as ThanksCardType } from \"../../types/card\";\nimport { useConfig } from \"../../view/store\";\nimport { Header } from \"../components\";\nimport { cc } from \"../helpers/classes\";\n\ntype Props = ThanksCardType[\"props\"] & BaseCardProps;\n\nconst ThanksCard = ({ className, questionId }: Props) => {\n const { border, destroy, endCard, forceBrandedLogo } = useConfig((s) => ({\n border: s.border,\n destroy: s.destroy,\n endCard: s.endCard,\n forceBrandedLogo: s.forceBrandedLogo,\n }));\n\n useEffect(() => {\n // Free plans longer time to timeout to show logo branding at the end\n const timeoutTime = forceBrandedLogo ? 4000 : 2000;\n setTimeout(() => {\n destroy(APP_ID);\n }, timeoutTime);\n }, [destroy, forceBrandedLogo]);\n\n const caption =\n endCard && endCard.subheader ? (\n <p className={\"ul-caption\" satisfies CssConstant}>{endCard.subheader}</p>\n ) : null;\n const headline = endCard && endCard.headline ? endCard.headline : \"\";\n\n return (\n <div\n className={cc(\n className,\n \"ul-card--thanks\",\n \"fade-in-transition\" satisfies CssConstant,\n )}\n key={questionId}\n >\n <div>\n <div className=\"ul-card--thanks-content\">\n <div className=\"ul-thanks-check\">\n <svg\n aria-labelledby=\"title\"\n fill=\"none\"\n height=\"99\"\n viewBox=\"0 0 81 99\"\n width=\"81\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M40.5 77C60.9345 77 77.5 60.4345 77.5 40C77.5 19.5655 60.9345 3 40.5 3C20.0655 3 3.5 19.5655 3.5 40C3.5 60.4345 20.0655 77 40.5 77ZM80.5 40C80.5 62.0914 62.5914 80 40.5 80C18.4086 80 0.5 62.0914 0.5 40C0.5 17.9086 18.4086 0 40.5 0C62.5914 0 80.5 17.9086 80.5 40Z\"\n fill={border}\n fillRule=\"evenodd\"\n />\n <path\n clipRule=\"evenodd\"\n d=\"M55.025 22.9046C55.6299 23.4705 55.6616 24.4198 55.0956 25.0247C54.8724 25.2634 54.6109 25.5285 54.3157 25.8277C52.2547 27.9168 48.5549 31.667 44.8135 39.6658C43.2818 42.9406 42.0864 45.8386 41.0823 48.2729C40.6539 49.3116 40.2603 50.2659 39.8902 51.129C39.287 52.5359 38.7248 53.7508 38.1744 54.625C37.8997 55.0613 37.5806 55.4905 37.2017 55.8245C36.8201 56.1607 36.2613 56.5 35.5457 56.5C34.6742 56.5 34.0892 55.9692 33.7774 55.6083C33.4502 55.2296 33.1752 54.7511 32.9396 54.301C32.7305 53.9013 32.5088 53.4367 32.2797 52.9565C32.2429 52.8794 32.2059 52.8019 32.1688 52.7243C31.8942 52.1499 31.5959 51.534 31.2537 50.8868C29.8886 48.305 27.8539 45.2878 24.2343 43.1382C23.522 42.7152 23.2875 41.7949 23.7105 41.0826C24.1335 40.3703 25.0539 40.1358 25.7662 40.5588C30.0556 43.1062 32.4149 46.6647 33.9058 49.4845C34.2776 50.1876 34.5973 50.8487 34.8753 51.4302C34.9147 51.5124 34.9529 51.5926 34.9902 51.6707C35.2222 52.1567 35.4164 52.5637 35.5978 52.9102C35.6151 52.9434 35.6321 52.9754 35.6485 53.0061C36.0565 52.3531 36.5341 51.3434 37.133 49.9468C37.4781 49.1418 37.8572 48.2229 38.2761 47.2074C39.2886 44.7532 40.5339 41.7347 42.0961 38.3948C46.0591 29.9221 50.0641 25.8648 52.1535 23.7482C52.4423 23.4556 52.6944 23.2002 52.9048 22.9753C53.4708 22.3703 54.42 22.3387 55.025 22.9046ZM35.1994 53.5892C35.1994 53.5892 35.2 53.5888 35.2012 53.5879C35.2 53.5889 35.1994 53.5893 35.1994 53.5892ZM36.0666 53.6682C36.0732 53.674 36.0765 53.6775 36.0765 53.6777C36.0765 53.678 36.0732 53.6751 36.0666 53.6682Z\"\n fill={border}\n fillRule=\"evenodd\"\n />\n <path\n d=\"M69.5 97C69.5 98.1046 56.2924 99 40 99C23.7076 99 10.5 98.1046 10.5 97C10.5 95.8954 23.7076 95 40 95C56.2924 95 69.5 95.8954 69.5 97Z\"\n fill=\"black\"\n fillOpacity=\"0.2\"\n />\n </svg>\n </div>\n <Header message={headline} />\n {caption}\n </div>\n </div>\n </div>\n );\n};\n\nexport default ThanksCard;\n","import { BaseCardProps } from \"./types\";\nimport { CssConstant } from \"../../constants/css\";\nimport { UploadingCard as UploadingCardType } from \"../../types/card\";\nimport { useConfig } from \"../../view/store\";\nimport { Header } from \"../components\";\nimport { cc } from \"../helpers/classes\";\n\ntype Props = UploadingCardType[\"props\"] & BaseCardProps;\n\nconst UploadingCard = ({ className }: Props) => {\n const { uploadProgress } = useConfig((s) => ({\n uploadProgress: s.uploadProgress,\n }));\n\n let headline;\n let caption;\n if (Object.values(uploadProgress).filter((v) => v.isSubmitted).length > 1) {\n headline = \"Your responses are processing\";\n caption =\n \"Please keep this tab open until your responses are fully processed.\";\n } else {\n headline = \"Your response is processing\";\n caption =\n \"Please keep this tab open until your response is fully processed.\";\n }\n\n // use the lowest value of any upload (rather than, say, the average), otherwise it might start too close to 100, this way it'll go up more quickly.\n // cap this at 99, because there's a time between the \"100%\" upload progress notification and the upload success notification. Better to encourage them\n // to keep the tab open until we get the upload success notification\n const uploadProgressPct = Math.round(\n Math.min(\n 99,\n ...Object.values(uploadProgress)\n .filter((v) => v.isSubmitted)\n .map((v) => v.progressPct || 0),\n ),\n );\n\n return (\n <div\n className={cc(\n className,\n \"ul-card--uploading\",\n \"fade-in-transition\" satisfies CssConstant,\n )}\n >\n <div\n aria-busy=\"true\"\n aria-label=\"Processing...\"\n aria-live=\"polite\"\n className={\"ul-loading-spinner-container\" satisfies CssConstant}\n role=\"progressbar\"\n >\n <div className={\"ul-loading-spinner\" satisfies CssConstant}>\n <div className=\"first\" />\n <div className=\"second\" />\n <div className=\"third\" />\n <div className=\"fourth\" />\n </div>\n </div>\n <Header message={`${headline} (${uploadProgressPct}% complete)`} />\n <p className={\"ul-caption\" satisfies CssConstant}>{caption}</p>\n </div>\n );\n};\n\nexport default UploadingCard;\n","import { useEffect, useRef } from \"react\";\n\nimport { getMaxRemainingCards } from \"./helpers/skipLogicHelpers\";\nimport { ThankYouLink, SprigBrandLogo } from \"./components\";\nimport { useConfig } from \"./store\";\nimport { buildMarketingUrl } from \"./helpers/card\";\n\nconst Footer = () => {\n const {\n border,\n cards,\n forceBrandedLogo,\n headers,\n index,\n marketingUrl,\n showSurveyBrand,\n slugName,\n surveyId,\n viewedCardCount,\n } = useConfig((s) => ({\n border: s.border,\n cards: s.cards,\n forceBrandedLogo: s.forceBrandedLogo,\n headers: s.headers,\n index: s.index,\n marketingUrl: s.marketingUrl,\n showSurveyBrand: s.showSurveyBrand,\n slugName: s.slugName,\n surveyId: s.surveyId,\n viewedCardCount: s.viewedCardCount,\n }));\n\n const progressRef = useRef<HTMLDivElement>(null);\n\n const questionSteps = cards.filter(\n (step) => step.type !== \"uploading\" && step.type !== \"thanks\",\n );\n const maxRemainingCards = getMaxRemainingCards(cards, index);\n\n // count the current card as viewed so there is not 0 progress for first question.\n // note this increases total denominator by 1\n // ex: if there are 2 questions, it will look 1/3 done for the first question, and 2/3 done for the second.\n const paddedViewedCardCount = viewedCardCount + 1;\n const fractionCompleted =\n paddedViewedCardCount / (paddedViewedCardCount + maxRemainingCards);\n\n const marketingUrlLink = buildMarketingUrl({\n marketingUrl,\n slugName,\n surveyId,\n forceBrandedLogo,\n });\n\n useEffect(() => {\n if (progressRef.current) {\n progressRef.current.style.width = `${fractionCompleted * 100}%`;\n }\n }, [fractionCompleted]);\n\n // Render progress bar and \"Powered by Sprig\" logo\n const renderBrandedLogo = () => {\n return (\n <>\n {/* Progress bar */}\n {questionSteps.length > 1 && (\n <div className=\"ul-progress-bar-container ul-progress-bar-container__footer\">\n <div\n className=\"ul-progress-bar-current\"\n ref={progressRef}\n style={{\n border: `1px solid ${border ? border : \"#000\"}`,\n }}\n />\n </div>\n )}\n {/* Sprig Brand Logo */}\n {showSurveyBrand ? (\n <SprigBrandLogo\n forceBrandedLogo={forceBrandedLogo}\n marketingUrlLink={marketingUrlLink}\n />\n ) : null}\n </>\n );\n };\n\n const isCurrentlyThankYouCard = cards[index]?.type === \"thanks\";\n return (\n <footer\n className={`ul-footer ${\n headers[\"userleap-platform\"] === \"link\" ? \"ul-footer__link\" : \"\"\n }`}\n >\n {isCurrentlyThankYouCard && forceBrandedLogo ? (\n <ThankYouLink marketingUrlLink={marketingUrlLink} />\n ) : (\n renderBrandedLogo()\n )}\n </footer>\n );\n};\n\nexport default Footer;\n","import { useMemo } from \"react\";\nimport { useConfig } from \"./store\";\n\nconst ProgressBar = () => {\n const border = useConfig((s) => s.border);\n const cards = useConfig((s) => s.cards);\n const index = useConfig((s) => s.index);\n const focusedQuestionId = useConfig((s) => s.focusedQuestionId);\n\n const { totalQuestions, fraction } = useMemo(() => {\n const questionCards = cards.filter(\n (c) => c.type !== \"uploading\" && c.type !== \"thanks\",\n );\n\n const totalQuestions = questionCards.length;\n if (totalQuestions <= 1) return { totalQuestions, fraction: 0 };\n\n // Show full bar on thanks card\n if (cards[index]?.type === \"thanks\") {\n return { totalQuestions, fraction: 1 };\n }\n\n const position = questionCards.findIndex((c) => c.name === focusedQuestionId);\n const completed = position >= 0 ? position : 0;\n\n return { totalQuestions, fraction: completed / totalQuestions };\n }, [cards, index, focusedQuestionId]);\n\n if (totalQuestions <= 1) return null;\n\n return (\n <div className=\"ul-progress-bar-container ul-progress-bar-container__header\">\n <div\n className=\"ul-progress-bar-current\"\n style={{\n width: `${fraction * 100}%`,\n border: `1px solid ${border ?? \"#000\"}`,\n }}\n />\n </div>\n );\n};\n\nexport default ProgressBar;\n","import { useEffect, useRef, useMemo, useCallback } from \"react\";\n\nimport { PageCard } from \"./cards\";\nimport Footer from \"./footer\";\nimport { cc, getClasses, getPlatformClass } from \"./helpers/classes\";\nimport ProgressBar from \"./progressBar\";\nimport { useConfig } from \"./store\";\nimport { APP_ID, CssConstant } from \"../constants/css\";\nimport { SprigEvent } from \"../constants/sprigEvents\";\nimport { resetScrollPosition } from \"../helpers/document\";\nimport {\n shouldDirectEmbed,\n groupCards,\n isLongFormSurvey,\n} from \"../helpers/general\";\nimport { ResponseData } from \"../types/config\";\n\nconst App = () => {\n const {\n answers,\n border,\n cards,\n close,\n configureExitOnOverlayClick,\n destroy,\n endCard,\n eventEmitFn,\n fontFamily,\n headers,\n index,\n minScrollableHeight,\n next,\n previewMode,\n productConfig,\n seen,\n showStripes,\n studyType,\n surveyId,\n update,\n useMobileStyling,\n viewDocument,\n } = useConfig((s) => ({\n answers: s.answers,\n border: s.border,\n cards: s.cards,\n close: s.close,\n configureExitOnOverlayClick: s.configureExitOnOverlayClick,\n destroy: s.destroy,\n endCard: s.endCard,\n eventEmitFn: s.eventEmitFn,\n fontFamily: s.fontFamily,\n headers: s.headers,\n index: s.index,\n previewMode: s.previewMode,\n productConfig: s.productConfig,\n minScrollableHeight: s.minScrollableHeight,\n next: s.next,\n seen: s.seen,\n showStripes: s.showStripes,\n studyType: s.studyType,\n surveyId: s.surveyId,\n update: s.update,\n useMobileStyling: s.useMobileStyling,\n viewDocument: s.viewDocument,\n }));\n\n const appRef = useRef<HTMLDivElement>(null);\n const firedAppeared = useRef(false);\n const platform = headers[\"userleap-platform\"];\n\n const { props, type, name } = cards[index];\n\n useEffect(() => {\n if (!window.Sprig) return;\n window.Sprig.trackHistory = (args) => {\n return useConfig.getState().trackHistory(args);\n };\n return () => {\n window.Sprig.trackHistory = undefined;\n };\n }, []);\n\n useEffect(() => {\n if (appRef.current) {\n if (!appRef.current.classList.contains(\"ul-app--visible\")) {\n appRef.current.classList.add(\"ul-app--visible\");\n }\n if (!firedAppeared.current && eventEmitFn) {\n firedAppeared.current = true;\n eventEmitFn(SprigEvent.SurveyAppeared, {\n name: SprigEvent.SurveyAppeared,\n \"survey.id\": surveyId,\n });\n }\n }\n }, [eventEmitFn, surveyId]);\n\n useEffect(() => {\n const handleVisibilityChange = () => {\n if (viewDocument.visibilityState === \"visible\") {\n seen();\n viewDocument.removeEventListener(\n \"visibilitychange\",\n handleVisibilityChange,\n );\n }\n };\n\n viewDocument.addEventListener(\"visibilitychange\", handleVisibilityChange);\n handleVisibilityChange();\n return () => {\n viewDocument.removeEventListener(\n \"visibilitychange\",\n handleVisibilityChange,\n );\n };\n }, [seen, viewDocument]);\n\n useEffect(() => {\n update();\n }, [index, update]);\n\n useEffect(() => {\n configureExitOnOverlayClick(() => close());\n }, [close, configureExitOnOverlayClick]);\n\n const groupedCards = useMemo(() => groupCards(cards, index), [cards, index]);\n\n // nextFunction includes the normal next function with a completeSurvey\n // routine to call when we are at the end of the survey\n const nextFunction = useCallback(\n (data: ResponseData | ResponseData[]) => {\n next({\n data,\n completeSurvey: () => destroy(APP_ID),\n endCard,\n });\n resetScrollPosition(viewDocument);\n },\n [next, destroy, endCard, viewDocument],\n );\n // for email surveys, skip to next question\n if (answers) {\n for (const answer of answers) {\n if (answer.questionId === name) {\n let data;\n if (type === \"multiplechoice\") {\n const option = props.options.find(\n ({ value }) => value === answer.value,\n );\n if (!option) break;\n data = { [option.id]: option.value };\n } else {\n data = answer.value;\n }\n\n nextFunction({ value: data, type, questionId: answer.questionId });\n break;\n }\n }\n }\n\n const onClickUrl = (event: MouseEvent) => {\n const api = window.sprigAPI;\n const target = event.target as HTMLElement;\n if (!api || !target) return;\n\n const tagCheck = [target, target.parentElement];\n for (const tag of tagCheck) {\n if (tag?.tagName?.toLowerCase() === \"a\") {\n event.preventDefault();\n try {\n // @ts-expect-error - href is not a property on HTMLElement\n const url = new URL(tag.href);\n // Only allow http/https protocols\n if (url.protocol === \"http:\" || url.protocol === \"https:\") {\n api?.openUrl(url.toString());\n }\n } catch (e) {\n console.error(e);\n }\n return;\n }\n }\n };\n\n const isStudyCenteredPosition =\n !useMobileStyling &&\n (productConfig?.framePosition === \"center\" ||\n productConfig?.desktopDisplay === \"center-modal\" ||\n (productConfig?.placement || \"\").includes(\"center\"));\n\n return (\n <div\n className={cc(\n \"ul-app\",\n shouldDirectEmbed(headers) ? \"ul-app--visible\" : \"ul-app--overlay\",\n )}\n dir=\"auto\"\n id={APP_ID}\n onClick={onClickUrl}\n ref={appRef}\n style={{\n \"--theme\": border,\n ...(fontFamily ? { fontFamily: fontFamily.replace(\";\", \"\") } : {}),\n ...(isStudyCenteredPosition ? { position: \"relative\" } : {}),\n }}\n >\n <div className=\"ul-app__container\">\n <div\n className={cc(\n getClasses(\n \"ul-card__container\" satisfies CssConstant,\n useMobileStyling,\n studyType,\n ),\n )}\n style={{\n ...(studyType !== \"feedbackButton\" ||\n productConfig?.desktopDisplay === \"center-modal\"\n ? { borderColor: border }\n : {}),\n ...(productConfig?.desktopDisplay === \"slider\"\n ? { margin: \"0px\" }\n : {}),\n }}\n >\n <div\n className={\"sprig-container\" satisfies CssConstant}\n style={{\n minHeight: minScrollableHeight,\n }}\n >\n {showStripes && (\n <div className=\"ul-header__container\" dir=\"ltr\">\n <div className=\"ul-header\">For development purposes only</div>\n </div>\n )}\n {previewMode && (\n <div className=\"ul-header__container\" dir=\"ltr\">\n <div className=\"ul-header\">\n Preview Mode: Response will not be recorded.\n </div>\n </div>\n )}\n {isLongFormSurvey(studyType) && <ProgressBar />}\n <div\n className={cc(getPlatformClass(\"ul-card-main-content\", platform))}\n >\n <PageCard cards={groupedCards} next={nextFunction} />\n </div>\n {!isLongFormSurvey(studyType) && <Footer />}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default App;\n","import { v4 as uuid } from \"uuid\";\n\nimport { MediaType } from \"../../constants/sprigRecordingEvents\";\nimport { SprigEventEmitter, EventPayload } from \"../../helpers/eventEmitter\";\nimport { AppCard } from \"../../types/card\";\nimport { RecordedTaskResponseType } from \"../../view/cards/recordedTask/store\";\nimport { useConfig } from \"../../view/store\";\nimport { getNextCardIndex } from \"../helpers/skipLogicHelpers\";\n\ntype UuidDecoratedMediaRecorder = MediaRecorder & {\n currentMediaRecordingUid?: UUID;\n};\n\n// media recorder state\ntype VideoFormat = \"video/webm\" | \"video/mp4\";\n\nconst createUploadUrl = async (body: unknown, uploadApiEndpoint: string) => {\n const response = await fetch(uploadApiEndpoint, {\n method: \"POST\",\n cache: \"no-cache\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n\n if (response.ok) {\n const uploadResponse = await response.json();\n return uploadResponse?.upload?.url;\n } else {\n return null;\n }\n};\n\nconst getSupportedMimeType = (): VideoFormat => {\n return MediaRecorder.isTypeSupported(\"video/webm\")\n ? \"video/webm\"\n : \"video/mp4\";\n};\n\nconst createRecorder = (stream: MediaStream) => {\n const recordingOptions = {\n audioBitsPerSecond: 128000, //standard setting based on documentation's example\n videoBitsPerSecond: 2500000,\n mimeType: getSupportedMimeType(),\n };\n const recorder: UuidDecoratedMediaRecorder = new MediaRecorder(\n stream,\n recordingOptions,\n );\n return recorder;\n};\n\nconst startRecording = (\n recorder: UuidDecoratedMediaRecorder,\n mediaRecordingUid: UUID,\n chunks: Record<string, Blob[]>,\n) => {\n chunks[mediaRecordingUid] = [];\n recorder.ondataavailable = function (e) {\n chunks[mediaRecordingUid].push(e.data);\n };\n recorder.currentMediaRecordingUid = mediaRecordingUid;\n recorder.start();\n};\n\nfunction stopRecorderAndUpload(\n recorder: UuidDecoratedMediaRecorder,\n uploadApiEndpoint: string,\n mediaType: MediaType,\n payload: EventPayload[\"finish.task\"],\n UpChunk: Window[\"UpChunk\"],\n chunkData: Blob[],\n) {\n if (recorder && recorder.state !== \"inactive\") {\n const { \"begin.callback\": beginCallback } = payload;\n const uuid = recorder.currentMediaRecordingUid;\n if (!uuid) return;\n if (beginCallback) {\n beginCallback(uuid);\n }\n recorder.onstop = () =>\n createUpload(\n uploadApiEndpoint,\n recorder,\n mediaType,\n payload,\n uuid,\n UpChunk,\n chunkData,\n );\n recorder.stop();\n }\n}\n\nasync function createUpload(\n uploadApiEndpoint: string,\n recorder: UuidDecoratedMediaRecorder,\n mediaType: MediaType,\n payload: EventPayload[\"finish.task\"],\n mediaRecordingUid: string,\n UpChunk: Window[\"UpChunk\"],\n chunkData: Blob[],\n) {\n const viewDocument = useConfig.getState().viewDocument;\n\n const {\n \"upload.callback\": uploadCallback,\n \"progress.callback\": progressCallback,\n } = payload;\n const body = {\n mediaType,\n updatedAt: new Date().toISOString(),\n mediaRecordingUid,\n ...payload[\"passthrough.data\"],\n };\n const url = await createUploadUrl(body, uploadApiEndpoint);\n if (!url) {\n uploadCallback &&\n uploadCallback(null, { message: \"failed to get upload url\" });\n return;\n }\n const blob = new Blob(chunkData, { type: getSupportedMimeType() });\n if (!viewDocument.defaultView) {\n return;\n }\n const file = new viewDocument.defaultView.File(\n [blob],\n `recording video ${Date.now()}`,\n );\n\n const upload = UpChunk.createUpload({\n // endpoint computed from backend separately and hacked together\n endpoint: url,\n file,\n chunkSize: 5120, // Uploads the file in ~5mb chunks\n });\n\n // subscribe to events\n upload.on(\"error\", (err) => {\n uploadCallback && uploadCallback(null, err);\n });\n\n upload.on(\"progress\", (progress) => {\n progressCallback && progressCallback(mediaRecordingUid, progress);\n });\n\n upload.on(\"success\", () => {\n uploadCallback && uploadCallback(mediaRecordingUid, true);\n });\n}\n\ninterface RecorderState {\n uploadApiEndpoint?: string;\n avRecorder?: UuidDecoratedMediaRecorder;\n screenRecorder?: UuidDecoratedMediaRecorder;\n UpChunk?: Window[\"UpChunk\"];\n avStream?: MediaStream;\n captureStream?: MediaStream;\n chunks: Record<string, Blob[]>;\n startTime?: Date;\n cards?: AppCard[];\n hasEndCard?: boolean;\n}\n\nconst initialRecorderState: RecorderState = { chunks: {} };\n\nconst ULRecorder = {\n state: { ...initialRecorderState },\n stopRecording(payload: EventPayload[\"finish.task\"]) {\n const { uploadApiEndpoint, avRecorder, screenRecorder, UpChunk } =\n this.state;\n const mediaType: MediaType =\n this.state.avStream && this.state.avStream.getVideoTracks().length > 0\n ? \"video\"\n : \"audio\";\n if (this.state.chunks && uploadApiEndpoint && UpChunk) {\n if (avRecorder?.currentMediaRecordingUid) {\n stopRecorderAndUpload(\n avRecorder,\n uploadApiEndpoint,\n mediaType,\n payload,\n UpChunk,\n this.state.chunks[avRecorder?.currentMediaRecordingUid],\n );\n }\n if (screenRecorder?.currentMediaRecordingUid) {\n stopRecorderAndUpload(\n screenRecorder,\n uploadApiEndpoint,\n \"screen\",\n payload,\n UpChunk,\n this.state.chunks[screenRecorder?.currentMediaRecordingUid],\n );\n }\n }\n },\n\n handleCancelledStream(stream: MediaStream) {\n const videoTracks = stream.getVideoTracks();\n const audioTracks = stream.getAudioTracks();\n let track = videoTracks.length && videoTracks[0];\n track = track || (audioTracks.length && audioTracks[0]);\n if (track) {\n track.addEventListener(\"ended\", () => {\n [this.state.avRecorder, this.state.screenRecorder].map((recorder) => {\n if (recorder) {\n recorder.state === \"recording\" && recorder.stop();\n recorder.stream.getTracks().map((track) => {\n track.readyState === \"live\" && track.stop();\n });\n }\n });\n Object.assign(this.state, {\n avStream: null,\n captureStream: null,\n avRecorder: null,\n screenRecorder: null,\n });\n });\n }\n },\n taskDurationMillisecond() {\n if (!this.state.startTime) return 0;\n const currentTime = new Date();\n return currentTime.getTime() - this.state.startTime.getTime();\n },\n setUpChunk(UpChunk: Window[\"UpChunk\"]) {\n this.state.UpChunk = UpChunk;\n },\n configure(\n eventEmitter: SprigEventEmitter,\n initialState: Partial<RecorderState> & {\n cards: AppCard[];\n hasEndCard: boolean;\n apiURL: string;\n },\n ) {\n Object.assign(this.state, initialState); // options may be used to augment the settings for videos\n this.state.uploadApiEndpoint = `${initialState.apiURL}/2/environments/integrations/upload`;\n this.state.chunks = {};\n\n // defining event listener callbacks into object to reference once stream is done\n eventEmitter.on(\n \"permission.status\",\n this.permissionStatusCallback.bind(this),\n );\n eventEmitter.on(\"av.permission\", async (payload) => {\n // handle request AV permission\n this.avPermissionCallback(payload);\n });\n eventEmitter.on(\"begin.recording\", this.beginRecordingCallback.bind(this));\n eventEmitter.on(\"start.task\", this.startTaskCallback.bind(this));\n eventEmitter.on(\"screen.permission\", async (payload) => {\n // handle request screen permission\n this.screenPermissionCallback(payload);\n });\n eventEmitter.on(\"finish.task\", async (payload) => {\n // handle stop recording due to various reasons\n this.finishTaskCallback(payload);\n });\n },\n async avPermissionCallback(payload: EventPayload[\"av.permission\"]) {\n const {\n \"stream.ready\": streamReady,\n \"permission.descriptors\": permissionDescriptors,\n } = payload;\n try {\n if (this.state.avStream?.active) {\n // stop previous stream before opening a new one\n this.state.avStream\n .getTracks()\n .map((track) => track.readyState === \"live\" && track.stop());\n\n // remove track from capture stream and add it back again after getting new user media object below\n this.state.captureStream?.getAudioTracks().length === 1 &&\n this.state.captureStream.removeTrack(\n this.state.captureStream.getAudioTracks()[0],\n );\n }\n\n this.state.avStream = await navigator.mediaDevices.getUserMedia({\n video: permissionDescriptors.includes(\"camera\"),\n audio: true,\n });\n\n this.state.captureStream?.getAudioTracks().length === 0 &&\n this.state.captureStream.addTrack(\n this.state.avStream.getAudioTracks()[0],\n );\n\n this.handleCancelledStream(this.state.avStream);\n } catch (err) {\n console.warn(\"Error: failed to get permissions: \" + err);\n streamReady && streamReady(null, null);\n return;\n }\n streamReady && streamReady(this.state.avStream, this.state.captureStream);\n },\n async screenPermissionCallback(payload: EventPayload[\"screen.permission\"]) {\n const {\n \"screen.permission.requested\": setIsRequestingPermission,\n \"stream.ready.callback\": streamReady,\n } = payload;\n setIsRequestingPermission?.(true);\n try {\n this.state.captureStream = await navigator.mediaDevices.getDisplayMedia({\n video: true,\n cursor: \"always\",\n displaySurface: \"browser\",\n preferCurrentTab: true,\n } as MediaStreamConstraints); //typings do not support the cursor property\n } catch (err) {\n setIsRequestingPermission?.(false);\n console.warn(\"Error: failed to get permissions: \" + err);\n streamReady && streamReady(null, null);\n return;\n }\n setIsRequestingPermission?.(false);\n this.state.avStream &&\n this.state.avStream.getAudioTracks().length > 0 &&\n this.state.captureStream.addTrack(\n this.state.avStream.getAudioTracks()[0],\n );\n this.handleCancelledStream(this.state.captureStream);\n streamReady &&\n streamReady(this.state.avStream || null, this.state.captureStream);\n },\n beginRecordingCallback(payload: EventPayload[\"begin.recording\"]) {\n const {\n \"recording.media.types\": mediaTypes,\n \"start.recording.callback\": startRecordingCallback = () => {},\n } = payload;\n if (!mediaTypes) return;\n const mediaRecordingUids = [];\n if (mediaTypes.includes(\"video\") && this.state.avStream) {\n // only need to record video if video is specified\n this.state.avRecorder = createRecorder(this.state.avStream);\n const mediaRecordingUid = uuid();\n startRecording(\n this.state.avRecorder,\n mediaRecordingUid,\n this.state.chunks,\n );\n mediaRecordingUids.push(mediaRecordingUid);\n }\n if (mediaTypes.includes(\"screen\") && this.state.captureStream) {\n this.state.screenRecorder = createRecorder(this.state.captureStream);\n const mediaRecordingUid = uuid();\n startRecording(\n this.state.screenRecorder,\n mediaRecordingUid,\n this.state.chunks,\n );\n mediaRecordingUids.push(mediaRecordingUid);\n }\n mediaRecordingUids &&\n startRecordingCallback &&\n startRecordingCallback(mediaRecordingUids);\n },\n async finishTaskCallback(payload: EventPayload[\"finish.task\"]) {\n const {\n \"current.index\": currentIndex,\n \"task.response\": response,\n \"task.complete.callback\": taskCompleteCallback,\n } = payload;\n await this.stopRecording(payload);\n taskCompleteCallback &&\n taskCompleteCallback(this.taskDurationMillisecond());\n this.state.cards &&\n this.state.hasEndCard !== undefined &&\n this.lookAheadAndStopStream(\n currentIndex,\n response,\n this.state.cards,\n this.state.hasEndCard,\n );\n },\n startTaskCallback() {\n this.state.startTime = new Date();\n },\n permissionStatusCallback(payload: EventPayload[\"permission.status\"]) {\n const { [\"permission.status.callback\"]: permissionStatusCallback } =\n payload;\n const avStream = this.state.avStream;\n permissionStatusCallback &&\n permissionStatusCallback(\n avStream,\n avStream ? avStream?.getVideoTracks().length > 0 : false,\n !!this.state.captureStream?.active,\n this.state.captureStream,\n );\n },\n lookAheadAndStopStream(\n currentIndex: number,\n response: RecordedTaskResponseType,\n cards: AppCard[],\n hasEndCard: boolean,\n ) {\n // we don't have access to uploadProgress, but we don't need to pass it into getNextCardIndex\n // because uploadProgress is only used if currentIndex is the last question index\n // (in which case there's no recorded task after this question anyway)\n // TODO we need to revisit this scenario when we refactor skip logic to display logic.. quite buggy here..\n const { avRecorder, screenRecorder } = this.state;\n const { allResponses } = useConfig.getState();\n const nextCardIndex = getNextCardIndex({\n cards: cards,\n index: currentIndex,\n hasEndCard: hasEndCard,\n allResponses,\n });\n if (\n nextCardIndex !== null &&\n cards[nextCardIndex].type === \"recordedtask\"\n ) {\n // if the next card is a recorded task then don't stop the stream\n return;\n }\n // stops the active stream because the next question is not a recorded question\n [avRecorder, screenRecorder].map((recorder) => {\n if (recorder) {\n recorder.state === \"recording\" && recorder.stop();\n recorder.stream.getTracks().map((track) => {\n track.readyState === \"live\" && track.stop();\n });\n }\n });\n },\n};\n\nconst instance = Object.create(ULRecorder);\nObject.freeze(instance);\nexport default instance;\n","import { render } from \"preact\";\n\nimport App from \"./app\";\nimport { useConfig } from \"./store\";\nimport css from \"./styles/index.css?inline\";\nimport { SprigEvent } from \"../constants/sprigEvents\";\nimport { setSurveyStyles } from \"../helpers/document\";\nimport eventEmitter from \"../helpers/eventEmitter\";\nimport { shouldDirectEmbed } from \"../helpers/general\";\nimport { AppCard, Card, CardType } from \"../types/card\";\nimport { Config } from \"../types/config\";\nimport recorder from \"../view/recorder/recorder\";\nimport { unmountComponentAtNode } from \"preact/compat\";\n\nconst addNonQuestionCards = (initialCards: Card[], hasEndCard: boolean) => {\n const cards: AppCard[] = [...initialCards];\n const uploadSet = new Set<CardType>([\"videovoice\", \"recordedtask\"]);\n\n if (initialCards.some((card) => uploadSet.has(card.type))) {\n cards.push({\n name: -2,\n props: {\n routingOptions: [],\n },\n type: \"uploading\",\n });\n }\n\n if (hasEndCard) {\n cards.push({\n name: -1,\n props: {\n routingOptions: [],\n },\n type: \"thanks\",\n });\n }\n\n return cards;\n};\n\nconst getUserMeta = ({\n mode = null,\n viewWindow,\n viewDocument,\n trackPageViewUrl,\n}: {\n mode: Config[\"mode\"] | null;\n viewWindow: Config[\"viewWindow\"];\n viewDocument: Config[\"viewDocument\"];\n trackPageViewUrl: Config[\"trackPageViewUrl\"];\n}) => {\n const pde = viewDocument.documentElement;\n let parentHref: string;\n try {\n parentHref = viewWindow.parent.location.href;\n } catch (err) {\n // Calling parent throws if inside cross-origin iframe (CORS)\n parentHref = viewWindow.location.href;\n }\n return {\n mode,\n sw: viewWindow.screen.width,\n sh: viewWindow.screen.height,\n cw: pde.clientWidth,\n ch: pde.clientHeight,\n p: trackPageViewUrl ?? parentHref,\n l: viewWindow.navigator.language,\n };\n};\n\nfunction configure(config: Window[\"__cfg\"], shouldRender = true) {\n const {\n answers,\n apiURL,\n endCard,\n eventEmitFn,\n fontFamilyURL,\n frame,\n previewKey,\n viewDocument,\n viewWindow,\n } = config;\n const container = shouldDirectEmbed(config.headers)\n ? config.frame\n : viewDocument.body;\n const UpChunk = config.UpChunk || window.UpChunk;\n const recorderEventEmitter = eventEmitter;\n\n const updatedCards = addNonQuestionCards(config.cards, !!endCard);\n recorder.configure(recorderEventEmitter, {\n cards: updatedCards,\n hasEndCard: !!endCard,\n apiURL,\n UpChunk,\n });\n // load store / context\n useConfig.setState({\n apiURL,\n answers,\n border: config.border,\n index: config.startingQuestionIdx || 0,\n cards: updatedCards,\n configureExitOnOverlayClick: config.configureExitOnOverlayClick,\n customMetadata: config.customMetadata,\n endCard: config.endCard,\n envId: config.envId,\n eventEmitFn,\n fontFamily: config.fontFamily,\n forceBrandedLogo: config.forceBrandedLogo,\n frame,\n headers: config.headers,\n hasViewedEmbed: false,\n isPreview: config.isPreview,\n marketingUrl: \"https://sprig.com\",\n meta: getUserMeta({\n mode: config.mode,\n viewWindow,\n viewDocument,\n trackPageViewUrl: config.trackPageViewUrl,\n }),\n mode: config.mode,\n previewKey,\n previewMode: config.previewMode,\n productConfig: config.productConfig,\n recorder,\n recorderEventEmitter,\n responseGroupUid: config.responseGroupUid,\n showStripes: config.showStripes,\n showSurveyBrand: config.showSurveyBrand,\n slugName: config.slugName,\n styleNonce: config.styleNonce,\n studyType: config.studyType,\n surveyId: config.surveyId,\n tabTitle: config.tabTitle,\n uploadingCardViewed: false,\n uploadProgress: {},\n useMobileStyling: config.useMobileStyling,\n useDesktopPrototype: config.useDesktopPrototype,\n userId: config.userId,\n viewDocument: config.viewDocument,\n visitorAttributes: config.visitorAttributes,\n viewedCardCount: config.startingQuestionIdx || 0,\n });\n\n const { head } = viewDocument;\n\n // Inject default Sprig styles\n setSurveyStyles({\n document: viewDocument,\n elementId: \"sprig-style\",\n styleString: css,\n });\n\n // I imagine you already have unsafe-inline turned on for style-src in CSP\n if (config.customStyles) {\n setSurveyStyles({\n document: viewDocument,\n elementId: \"ul-custom-style\",\n styleString: config.customStyles,\n nonce: config.styleNonce,\n });\n }\n\n // Inject brand fonts\n if (config.fontFamily && fontFamilyURL && parent) {\n // parent comes from the DOM\n const links = viewDocument.createElement(\"link\");\n links.rel = \"stylesheet\";\n links.href = fontFamilyURL;\n head.appendChild(links);\n }\n\n if (!__NPM_BUNDLED___ && !UpChunk) {\n const hasRecordedTaskCard = config.cards.some(\n (card) => card.type === \"recordedtask\",\n );\n if (hasRecordedTaskCard) {\n const hostedUpChunk = viewDocument.createElement(\"script\");\n hostedUpChunk.src =\n config.upchunkLibraryURL ??\n \"https://cdn.sprig.com/userleap-web-upchunk-v2.2.2.js\";\n hostedUpChunk.onload = () => {\n recorder.setUpChunk(viewWindow.UpChunk);\n };\n hostedUpChunk.onerror = () => {\n console.warn(\n \"[Sprig] - recording functionality not configured due to UpChunk library load failure\",\n );\n };\n head.appendChild(hostedUpChunk);\n }\n }\n\n const viewSdkVersion = __SDK_VERSION__;\n const backwardCompatibleEventEmitterFn =\n eventEmitFn || frame.eventEmitter?.emit;\n backwardCompatibleEventEmitterFn?.(\"verify.view.version\", {\n \"view.version\": viewSdkVersion,\n });\n\n if (container && shouldRender) {\n render(<App />, container);\n eventEmitter.once(SprigEvent.SurveyClosed, () => {\n unmountComponentAtNode(container);\n });\n }\n}\n\nexport default { configure };\n"],"names":["n","l","u","i","o","r","f","e","c","s","a","h","Array","isArray","v","p","parentNode","removeChild","y","t","arguments","length","children","call","defaultProps","d","type","props","key","ref","__k","__","__b","__e","__d","__c","constructor","__v","__i","__u","vnode","_","current","g","b","this","context","m","k","base","w","push","x","__r","debounceRendering","sort","shift","__P","L","__n","ownerSVGElement","M","C","String","H","N","z","S","nextSibling","insertBefore","$","some","I","setProperty","test","T","style","cssText","replace","toLowerCase","slice","Date","now","addEventListener","D","A","removeEventListener","removeAttribute","setAttribute","event","P","contextType","value","__E","prototype","render","O","sub","state","__h","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","forEach","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","indexOf","j","diffed","localName","nodeType","document","createTextNode","createElementNS","createElement","is","data","childNodes","attributes","name","__html","innerHTML","unmount","componentWillUnmount","q","firstChild","B","E","F","Consumer","Provider","splice","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","Promise","then","bind","resolve","setTimeout","__source","__self","__H","__V","__N","filter","every","concat","useDebugValue","V","__m","requestAnimationFrame","clearTimeout","cancelAnimationFrame","displayName","isReactComponent","__f","isPureReactComponent","R","Symbol","for","$$typeof","map","count","only","toArray","appendChild","U","__a","default","__R","__O","pop","fallback","delete","revealOrder","size","W","containerInfo","get","Map","reverse","set","Z","Y","textContent","G","Object","defineProperty","configurable","writable","J","K","Q","cancelBubble","X","defaultPrevented","persist","isPropagationStopped","isDefaultPrevented","nativeEvent","nn","tn","enumerable","class","en","multiple","selected","defaultValue","className","rn","un","on","ReactCurrentDispatcher","readContext","cn","fn","an","sn","apply","hn","vn","dn","pn","mn","yn","_n","bn","Sn","gn","Cn","En","wn","useState","useId","useReducer","useEffect","useLayoutEffect","useInsertionEffect","useTransition","useDeferredValue","useSyncExternalStore","startTransition","useRef","useImperativeHandle","useMemo","useCallback","useContext","version","Children","hydrate","unmountComponentAtNode","createPortal","createContext","createFactory","cloneElement","createRef","Fragment","isValidElement","isElement","isFragment","findDOMNode","Component","PureComponent","memo","forwardRef","flushSync","unstable_batchedUpdates","StrictMode","Suspense","SuspenseList","lazy","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","createStoreImpl","createState","listeners","Set","partial","nextState","previousState","assign","listener","getState","api","subscribe","add","destroy","clear","shimModule","exports","require$$0","getSnapshot","window","inst","useSyncExternalStoreShim_production_min","withSelectorModule","require$$1","withSelector_production_min","useSyncExternalStoreWithSelector","hasValue","useSyncExternalStoreExports","createImpl","useBoundStore","selector","equalityFn","getServerState","create","BOOLEAN_OPERATOR","comparators","eq","gt","gte","lt","lte","list_exact","join","list_all","val","transformA","aSet","has","setA","aLower","bLower","includes","contains","getHasValidAnswer","response","routingValue","Boolean","keys","taskStatus","values","getHasPartialAnswer","numRows","numAnswered","getNextCardIndex","cards","index","hasEndCard","allResponses","uploadProgress","card","nextIndex","routingOptions","group","target","questionIndex","matches","evaluateRule","comparator","op","rule","ruleMatches","uploadCardIndex","findIndex","lastQuestionIndex","isSubmitted","isComplete","submitted","Number","isInteger","mediaRecordingUid","skipped","generatePossibleSelectedValues","options","option","array","allowEmpty","properties","required","reduce","subsets","arr","possibleValues","matrixColumns","matrixColumn","matrixRows","emptyResponse","prevMap","id","range","from","res","hasComparator","hasTaskStatus","getFlattenRoutingOption","acc","flattenGroup","item","NON_QUESTION_SET","useConfig","answers","apiURL","border","close","async","APP_ID","app","fadeout","remove","trackHistory","studyType","skipWriteForAction","logger","breadcrumbsLogger","info","surveyId","ConflictingWidgets","enable","initiator","DismissReason","Closed","configureExitOnOverlayClick","customMetadata","eventEmitFn","Complete","endCard","headline","envId","eventEmitter","emit","headers","viewDocument","shouldDirectEmbed","SprigEvent","SurveyFadingOut","el","getElementById","classList","forceBrandedLogo","frame","handleClickEmbedButton","buttonEventName","qid","hasViewedEmbed","handleUploadUpdate","progressPct","newISComplete","newProgress","uploadComplete","entries","mRUid","uploadingCardViewed","Authorization","isPreview","marketingUrl","meta","ch","cw","mode","sh","sw","next","params","responseGroupUid","submit","viewedCardCount","minScrollableHeight","responses","answeredAt","newCards","submission","routingTarget","newResponses","rawResponse","rest","isQuestionCard","find","accumulator","completedAt","completeSurvey","finally","newCard","pendingRemoveIframeReason","previewKey","previewMode","recorder","recorderEventEmitter","resolveTrackedPromise","removeIframeIfReady","unresolvedRequestCount","SurveyCloseRequested","SurveyWillClose","seen","isNew","slugName","showStripes","showSurveyBrand","styleNonce","payload","result","trackPromise","sprigFetch","userId","body","JSON","stringify","method","ok","resp","QuestionAnswered","reportError","console","warn","error","tabTitle","overrideIndex","currentIndex","hist","sid","action","vid","eid","nextCard","groupId","promise","catch","err","update","useMobileStyling","isWeb","directEmbed","isTableMatrixCard","displayMatrixAsAccordion","setWidth","DEFAULT_WIDTH_PX","height","width","minHeight","calculateFrameDimensions","SurveyHeight","contentFrameHeight","SurveyWidth","contentFrameWidth","setHeight","useDesktopPrototype","focusedQuestionId","setFocusedQuestionId","pde","documentElement","screenWidth","screen","screenHeight","clientWidth","clientHeight","location","href","language","navigator","message","stack","btoa","SvgCaret","React.createElement","fill","viewBox","xmlns","stroke","strokeLinecap","strokeLinejoin","strokeWidth","SvgCheckmark","Checkmark","visible","jsx","opacity","CheckSvg","ANIMATION_DURATION","Accordion","animate","header","isOpen","onClick","showHeaderCheck","wrapperRef","transition","setTransition","isInitialRender","setIsInitialRender","rect","getBoundingClientRect","jsxs","Caret","transitionDuration","transform","Arrow","cc","args","getClasses","baseClass","suffix","getPlatformClass","platform","Button","useIsCardScrollable","isScrollable","setIsScrollable","querySelector","observer","ResizeObserver","isHTMLElement","scrollHeight","offsetHeight","observe","disconnect","RichOrPlainTextLabel","plainText","richText","isHeader","dangerouslySetInnerHTML","CloseButton","steps","closeApp","onKeyPress","role","tabIndex","Header","caption","captionText","questionHtml","captionHtml","CheckMark","LongformSubmitButton","isSubmitDisabled","handleSubmit","disabled","ViewEmbedButton","buttonText","handleClick","MobileEmbedView","defaultBody","embeddedType","hasEmbed","conceptUrl","consentDocument","url","isMobileEmbedViewportWidth","innerWidth","EMBED_MOBILE_MAX_WIDTH","handleEmbedButtonClick","preventDefault","viewDocumentText","Checkbox","isSelected","divId","themeColor","backgroundColor","borderColor","boxShadow","useAutoSize","textAreaRef","sizeUpdate","heightRef","elem","totalHeight","maxHeight","parseInt","getComputedStyle","getPropertyValue","Option","ariaLabel","choiceStyle","label","text","isRadio","allowTextEntry","noneOfTheAbove","promptText","onUserInputChanged","isActive","setIsActive","createStyles","onStateUpdated","userText","onClickEvent","stopPropagation","onActive","onInactive","clickArgs","onTouchStart","onTouchCancel","onTouchEnd","onMouseDown","onMouseLeave","conditionalSelectedStyles","SELECT_ACTIVE_STYLE_CLASS","additionalContainerStyles","SELECT_ERROR_STYLE_CLASS","optionLabel","ERROR_BORDER_COLOR","htmlFor","TextEntryBox","onTextChange","textValue","inputRef","autosize","focus","maxLength","onChange","currentTarget","placeholder","rows","SELECT_STYLE_ELEM_ID","nonce","selectStyle","elementCreated","tagName","getSelectStyle","head","QuestionBodyWrapper","QuestionBodyFooterContainer","Logo","logoOnly","alt","display","fillOpacity","SprigBrandLogo","marketingUrlLink","marginTop","marginBottom","rel","margin","ThankYouLink","dir","marginInlineStart","verticalAlign","getButtonText","getSkipButtonText","skipButtonText","buildMarketingUrl","ConsentLegalCard","questionId","isLongFormSurvey","longFormSurveyCheck","isConsentSelected","setIsConsentSelected","setName","hasValidationError","setHasValidationError","isLongFormQuestionFocused","collectName","nameLabelText","consentText","submitButtonText","isNamePresent","trim","isSubmitEnabled","handleNameChange","setActiveBorder","setDefaultBorder","DEFAULT_BORDER_COLOR","footer","onBlur","onFocus","onInput","richTextBody","getModifiedIconSvg","icon","scaleLabelType","selectedValue","LikertOption","activeValue","isPressed","onSubmit","setSelectedValue","setActiveValue","setIsPressed","isNumber","isStar","isSmiley","isNumberActive","activeColor","activeOpacity","buttonStyles","baseStyles","zIndex","color","onKeyDown","buttons","querySelectorAll","onPointerDown","onPointerEnter","onPointerLeave","LikertCard","labels","leftLabel","left","rightLabel","right","scaleRange","ratingIcons","questionRange","getIcon","svg","nums","handleSkipped","findScrollable","parentElement","getVerticalMargin","HTMLElement","parseFloat","borderTopWidth","borderBottomWidth","MatrixAccordionView","columns","onSelect","selectedOptions","refs","firstUnansweredIndex","focusedIndex","setFocusedIndex","select","column","nextOption","accordionRef","firstElementChild","scrollableParent","headerElem","heightToScroll","scrollTo","offsetTop","renderAccordion","idx","isFocused","UserLeap","isMobileSDK","paddingTop","col","MatrixTableView","numColumns","matrixContainerRef","showGradient","setShowGradient","Math","round","contentRect","scrollWidth","unobserve","onScroll","abs","scrollLeft","checkCompletelyScrolled","background","padding","scrollTarget","isRTL","direction","MatrixCard","showIndividualSubmit","onSubmitButtonClick","isRequired","optionSelectedMap","optionsMap","setOptionSelectedMap","setSelectedState","rowId","colValue","prev","isAccordionDisplay","DropdownPanel","selectItem","showCheckbox","doc","ev","Select","isMultiSelect","multiselectText","placeholderText","setIsOpen","toggleOpen","handleClickOutside","parent","placeholderStyles","isNoneOfTheAboveSelected","optionProperties","BaseMultiChoiceCard","noneOfTheAboveOption","opt","isTextEmpty","allowsTextEntry","isTextOptionSelectedWithoutTextEntered","isTextEntryOptionSelected","shouldShowSubmitButton","choices","idKey","newState","selectedRequiresText","submitEnabled","isDropdown","dropdownMultiselectedText","items","dropdownPlaceholderText","SingleSelectCard","optionMap","isValidToSubmit","selectedEntry","selectedId","selectedState","selectedOption","secondaryValue","MultiSelectCard","valueToSubmit","selectedMap","textMap","newMap","NPSCard","OpenTextCard","setValue","textRef","blur","trimmedValue","handleChange","targetVal","isValid","openTextPlaceholder","handleFocus","footerHtml","questionsRequireSubmit","DisplayQuestion","cardInstance","moveToNextQuestion","submitQuestion","updateCardValues","hasSubmitButton","baseProps","cardComponent","MultipleChoiceSingleSelectCard","MultipleChoiceMultipleSelectCard","RecordedTask","TextUrlPromptCard","ThanksCard","UploadingCard","LongFormQuestionsFooter","isCurrentlyThankYouCard","PageCard","cardValues","setCardValues","questionHasValidState","setQuestionHasValidState","listRef","isScrollingProgrammatically","expectedFocusFromManualScroll","scrollToFocusedQuestion","scrollContainer","closest","elRect","containerRect","elRelativeTop","top","scrollTop","elCenter","thresholdHeight","innerHeight","targetScrollTop","containerHeight","maxScrollTop","clampedScrollTop","max","min","behavior","handleScroll","cardElements","scrollContainerRect","centerY","closestIndex","closestDistance","Infinity","cardElement","cardRect","cardCenterY","distance","closestQuestion","passive","canSubmit","initialValues","currentQuestionId","nextQuestionId","shouldAutoAdvanceFocus","cardType","isThanksCard","orderedValues","AvStreamStatus","isPermissionTaskPage","page","isScreenTaskPage","getAvStreamRequestStatus","avstream","permissionDescriptors","getVideoTracks","initialState","avStream","currentPage","mediaRecordingUids","nextQuestion","passthroughData","recordingMediaTypes","screenPermissionRequested","useRecordedTaskStore","reset","updatePage","requestAVPermissions","pages","existingAvStream","captureStream","destinationPage","currentPageIndex","nextPageTarget","active","completeTask","status","responseValues","detail","taskDurationMillisecond","nextPage","setIsRequestingPermission","PERMISSION_GRAPHICS_CONTAINER","PERMISSION_BODY","PERMISSION_GRAPHICS_CLASSES","BUTTON_CONTAINER_CLASSES_LEFT","RichTextCaption","SkipButton","bottom","ListenForFailedStreams","hasAVMedia","interval","setInterval","clearInterval","StartTaskPageContent","content","taskDetail","CompleteTaskPageContent","finishTaskButtonViewPrototypeWrapper","ScreenPermissionPageContent","isRequestingPermission","selectTabText","AVPermissionRequestPageContent","AVPermissionFailurePageContent","permissionDeniedHeadline","permissionDeniedBody","tryAgainButtonText","permissionPage","StreamVideo","stream","autoPlay","muted","video","srcObject","AVPermissionGrantedPageContent","PageContent","permissionStatus","RecordedTaskCard","appStore","store","visitorId","hasVideoPermission","hasScreenPermission","audioPermissionRequired","videoPermissionRequired","permissionRequestStatus","permissionDeniedCaptionText","permissionGrantedHeadline","permissionGrantedCaptionText","ATTRIBUTE_URL_TO_PROPERTY_MAP","visitorAttributes","handleLinkButtonTap","handleKeyPressLinkButton","rawUrl","testUrl","URL","protocol","attributedUrl","unmatchedUrlTags","urlKey","propertyKey","regex","RegExp","baseUrl","filteredQueryParams","split","str","queryParam","buttonUrl","plaintextBody","line","subheader","clipRule","fillRule","uploadProgressPct","Footer","progressRef","questionSteps","step","maxRemainingCards","invalidCardTypes","filteredCards","cache","possibleSelectedValues","routingOptionIndex","newPossibleSelectedValues","isValueValid","isPartial","paddedViewedCardCount","fractionCompleted","ProgressBar","totalQuestions","fraction","questionCards","position","App","fontFamily","productConfig","appRef","firedAppeared","Sprig","SurveyAppeared","handleVisibilityChange","visibilityState","groupedCards","groupCards","nextFunction","resetScrollPosition","answer","isStudyCenteredPosition","framePosition","desktopDisplay","placement","sprigAPI","tagCheck","tag","openUrl","toString","getSupportedMimeType","MediaRecorder","isTypeSupported","createRecorder","recordingOptions","audioBitsPerSecond","videoBitsPerSecond","mimeType","startRecording","chunks","ondataavailable","currentMediaRecordingUid","start","stopRecorderAndUpload","uploadApiEndpoint","mediaType","UpChunk","chunkData","beginCallback","uuid","onstop","uploadCallback","progressCallback","updatedAt","toISOString","fetch","uploadResponse","json","upload","blob","Blob","defaultView","file","File","createUpload","endpoint","chunkSize","progress","stop","ULRecorder","avRecorder","screenRecorder","videoTracks","audioTracks","getAudioTracks","track","getTracks","readyState","startTime","getTime","permissionStatusCallback","avPermissionCallback","beginRecordingCallback","startTaskCallback","screenPermissionCallback","finishTaskCallback","streamReady","removeTrack","mediaDevices","getUserMedia","audio","addTrack","handleCancelledStream","getDisplayMedia","cursor","displaySurface","preferCurrentTab","mediaTypes","startRecordingCallback","taskCompleteCallback","stopRecording","lookAheadAndStopStream","nextCardIndex","instance","freeze","getUserMeta","viewWindow","trackPageViewUrl","parentHref","view","configure","config","shouldRender","fontFamilyURL","container","updatedCards","initialCards","uploadSet","startingQuestionIdx","setSurveyStyles","elementId","styleString","customStyles","links","backwardCompatibleEventEmitterFn","once","SurveyClosed"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}