userflow.js-self-hosted 0.1.1008940 → 0.1.1008964

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.
@@ -1,4 +1,4 @@
1
- import{r as u,R as n}from"./vendor.react.js";import{$ as _,a0 as y,u as Y}from"./userflow.js";import{u as Ee}from"./client-context.js";import{D as q,E as Q,F as be,G as P,H as $,I as V,J as X,K as Z}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{p as _e}from"./vendor.dompurify.js";import{m as ke}from"./vendor.marked.js";import{o as F}from"./vendor.obj-str.js";import{A as we,d as Ie,G as Se}from"./ResourceCenterApp.js";import{r as je,R as Ce}from"./bubble-frame.styl.js";import{D as W}from"./stylesheets.js";import{U as ae,b as Me}from"./flow-condition-types.js";import{r as ee}from"./vendor.react-dom.js";import"./vendor.html-parse-stringify2.js";import{u as ve}from"./vendor.react-i18next.js";import"./vendor.object-assign.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";import"./vendor.i18next.js";import"./flow-host.styl.js";import"./use-window-resize.js";import"./logomark.js";import"./ChecklistUI.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./BubbleToolbar.js";import"./use-element-rect.js";import"./vendor.date-fns.js";import"./vendor.scheduler.js";import"./vendor.babel.runtime.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},e=new Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="4077707c-fbcb-4659-9612-8646750137a6",t._sentryDebugIdIdentifier="sentry-dbid-4077707c-fbcb-4659-9612-8646750137a6")}catch{}})();function Re(t){const e=Intl.Segmenter;return e?/(\p{Emoji_Presentation}|\p{Extended_Pictographic})(\p{Emoji_Modifier_Base}?\p{Emoji_Modifier}?|\uFE0F\u200D(\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?\uFE0F\u200D)*\p{Emoji_Presentation}|\uFE0F\u200D\p{Extended_Pictographic})/u.test(t)&&[...new e().segment(t)].length===1:!1}const te=[];function Ne({assistant:t,lookupAttribute:e,initialConversationId:a,initialHistory:c,initialUserContent:m,onConversationIdChange:f,submitMessage:h,submitRating:l,submitFeedback:g,InsideMessage:r,onContactClick:p,contactButtonText:i}){const[o,d]=u.useState(null),[S,w]=u.useState(()=>c?c.map(s=>({...s,assistantHtml:x(B(s.assistantContent),!1)})):te),[D,M]=u.useState(""),j=u.useRef(null),k=u.useRef(null),b=u.useRef(!0),I=u.useRef(a||null),[ce,le]=u.useState(I.current),H=u.useCallback(s=>{I.current=s,le(s),f&&f(s)},[f]),T=u.useCallback(()=>{o?.focus({preventScroll:!0})},[o]);u.useEffect(()=>{T()},[T]),u.useLayoutEffect(()=>{const s=k.current;s&&(s.scrollTop=Math.ceil(s.scrollHeight-s.clientHeight))},[]);const K=u.useCallback(()=>{const s=k.current;s&&(b.current=!0,typeof s.scrollTo=="function"&&s.scrollTo({top:Math.ceil(s.scrollHeight-s.clientHeight),behavior:"smooth"}))},[]),G=u.useRef(0);u.useLayoutEffect(()=>{const s=k.current;s&&s.scrollHeight!==G.current&&(G.current=s.scrollHeight,b.current&&K())},[S,K]);const N=u.useCallback(()=>{j.current&&j.current()},[]);u.useEffect(()=>()=>{N()},[N]);const O=(s,R)=>{w(C=>C.map(v=>{if(s===v.id){const E=R(v);return{...v,...E}}else return v}))},L=s=>{w(R=>R.map((C,v)=>{if(v===R.length-1){const E=s(C);return{...C,...E}}else return C}))},U=u.useCallback(async s=>{if(s=s.trim(),s==="")return;N(),w(E=>[...E,{id:null,userContent:s,assistantContent:"",assistantHtml:x("","enter"),enterAnimation:!0,sources:[],completed:!1,rating:null,scaleRating:null,scaleMax:null,feedbackSubmitted:!1}]),M(""),K();let R=!1;const C=()=>{R=!0,j.current=null},v=h({conversationId:I.current,userContent:s,callback:E=>{if(R){console.log("Userflow.js AssistantChat got message after being done",E);return}switch(E.kind){case"conversation_created":H(E.conversationId);break;case"message_created":L(()=>({id:E.messageId,warning:E.warning}));break;case"assistant_content_delta":L(A=>{const he=E.delta,z=A.assistantContent+he,ge=B(z),pe=x(ge);return{assistantContent:z,assistantHtml:pe}});break;case"done":C(),L(A=>({assistantHtml:x(A.assistantContent,"exit"),completed:!0,sources:E.sources}));break;case"error":C(),L(A=>({failed:!0,error:E.message,assistantHtml:x(B(A.assistantContent),!1)}));break;default:console.log("Userflow.js AssistantChat got unknown message",E)}}});j.current=()=>{C(),v.abort(),L(E=>({assistantHtml:x(B(E.assistantContent),!1)}))}},[N,K,h,H]),J=u.useRef(!1);u.useEffect(()=>{J.current||(J.current=!0,m&&U(m))},[U,m]);const ie=u.useCallback(()=>{N(),H(null),w(te),T()},[N,T,H]),[ue,fe]=u.useState(!0),de=u.useCallback(()=>{const s=k.current;s&&fe(s.scrollTop===0)},[]),me=u.useCallback(()=>{const s=k.current;s&&(b.current=Math.ceil(s.scrollHeight-s.clientHeight)==Math.ceil(s.scrollTop))},[]);return{assistant:t,lookupAttribute:e,history:S,setInput:d,contentElRef:k,scrolledToTop:ue,userContent:D,setUserContent:M,onSubmitMessage:U,supportsFeedback:!!l&&!!g,onSubmitRating:s=>{if(l){switch(s.ratingMode){case _.LIKE:O(s.messageId,()=>({rating:s.rating}));break;case _.SCALE:O(s.messageId,()=>({scaleRating:s.scaleRating,scaleMax:s.scaleMax}));break;default:throw new ae(s)}l(s)}},onSubmitFeedback:s=>{g&&(O(s.messageId,()=>({feedbackSubmitted:!0})),g(s))},InsideMessage:r,onContactClick:p,contactButtonText:i,reset:ie,onContentScroll:de,onContentWheel:me,conversationId:ce}}const xe=({assistant:t,lookupAttribute:e,history:a,setInput:c,contentElRef:m,scrolledToTop:f,userContent:h,setUserContent:l,onSubmitMessage:g,supportsFeedback:r,onSubmitRating:p,onSubmitFeedback:i,InsideMessage:o,onContactClick:d,contactButtonText:S,reset:w,onContentScroll:D,onContentWheel:M,conversationId:j})=>{const k=a.some(b=>b.completed||b.failed);return n.createElement("div",{className:"userflowjs-assistant-chat"},n.createElement("div",{className:F({"userflowjs-assistant-chat__header":!0,"userflowjs-assistant-chat__header--content-scrolled":!f})}),n.createElement("div",{className:F({"userflowjs-assistant-chat__header":!0,"userflowjs-assistant-chat__header--content-scrolled":!f})},n.createElement(n.Fragment,null,n.createElement("h2",{className:"userflowjs-assistant-chat__title"},t.title),n.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--default",onClick:w},t.resetText))),n.createElement("div",{ref:m,className:"userflowjs-assistant-chat__content",onScroll:D,onWheel:M},!je(t.intro)&&n.createElement("div",{className:"userflowjs-assistant-chat__intro"},n.createElement(Ce,{doc:t.intro,lookupAttribute:e})),a.map((b,I)=>n.createElement(Le,{key:I,assistant:t,message:b,supportsFeedback:r,onSubmitRating:p,onSubmitFeedback:i,InsideMessage:o,conversationId:j,isLast:I===a.length-1}))),n.createElement("div",{className:"userflowjs-assistant-chat__prompt"},n.createElement(we,{textareaRef:c,placeholder:(a.length===0?t.promptEmptyPlaceholder:t.promptNonemptyPlaceholder)||"",value:h,onChange:l,onSubmit:()=>g(h)})),k&&d&&n.createElement("div",{className:"userflowjs-assistant-chat__contact"},n.createElement("button",{className:"userflowjs-tertiary-button",onClick:()=>d()},S)))},Le=({assistant:t,message:e,supportsFeedback:a,onSubmitRating:c,onSubmitFeedback:m,InsideMessage:f,conversationId:h,isLast:l})=>n.createElement("div",{className:"userflowjs-assistant-chat__message"},f&&n.createElement(f,{message:e}),n.createElement("div",{className:F({"userflowjs-assistant-chat__user-content":!0,"userflowjs-assistant-chat__user-content--enter":!!e.enterAnimation}),"data-assistant-conversation-id":h,"data-assistant-message-id":e.id},n.createElement("div",{style:{whiteSpace:"pre-wrap"}},e.userContent)),e.warning&&n.createElement("div",{className:"userflowjs-assistant-chat__error"},"Warning: ",e.warning),n.createElement("div",{className:"userflowjs-assistant-chat__assistant-content"},n.createElement("div",null,n.createElement(ye,{html:e.assistantHtml})),e.error&&n.createElement("div",{className:"userflowjs-assistant-chat__error"},e.error)),e.sources&&e.sources.length>0&&n.createElement("div",{className:"userflowjs-assistant-chat__sources"},n.createElement("div",{className:"userflowjs-assistant-chat__sources-title"},t.sourcesText),e.sources.map((g,r)=>n.createElement("a",{key:r,className:"userflowjs-assistant-chat__source",href:Ie(g.url),target:"_blank",rel:"noreferrer noopener"},g.title))),a&&e.completed&&e.id&&(t.ratingMode===_.LIKE||t.ratingMode===_.SCALE&&l)&&n.createElement(Ae,{assistant:t,message:e,onSubmitRating:c,onSubmitFeedback:m})),Ae=({assistant:t,message:e,onSubmitRating:a,onSubmitFeedback:c})=>{const m=u.useRef(null),[f,h]=u.useState(""),l=i=>{const o=e.id;o&&(ee.flushSync(()=>{a({ratingMode:_.LIKE,messageId:o,rating:i})}),m.current?.focus({preventScroll:!0}))},g=i=>{const o=e.id;o&&(ee.flushSync(()=>{a({ratingMode:_.SCALE,messageId:o,scaleRating:i,scaleMax:t.scaleMax})}),m.current?.focus({preventScroll:!0}))},r=()=>{e.id&&(c({messageId:e.id,feedback:f.trim()}),h(""))},p=t.ratingMode===_.LIKE?n.createElement("button",{className:"userflowjs-assistant-chat__rating-option",disabled:!0},n.createElement(W,{icon:e.rating==y.DISLIKE?q:Q})):e.scaleRating&&e.scaleMax&&n.createElement("button",{className:F({"userflowjs-assistant-chat__rating-option":!0,"userflowjs-assistant-chat__rating-option--scale":!0}),disabled:!0},oe(t,e.scaleRating,e.scaleMax));return n.createElement("div",{className:`userflowjs-assistant-chat__rating userflowjs-assistant-chat__rating--${t.ratingMode}`},t.ratingMode===_.SCALE&&n.createElement("div",{className:"userflowjs-assistant-chat__rating-question"},t.scaleQuestion),e.feedbackSubmitted?n.createElement("div",{className:"userflowjs-assistant-chat__rating-thanks"},p,n.createElement("div",{className:"userflowjs-assistant-chat__rating-thanks-message"},t.feedbackThanksText)):(t.ratingMode===_.LIKE?e.rating:e.scaleRating)?n.createElement(Se,{textareaRef:m,className:"userflowjs-growing-textarea userflowjs-assistant-chat__feedback-textarea",mirrorClassName:"userflowjs-growing-textarea__mirror",textareaClassName:"userflowjs-textarea",placeholder:(t.ratingMode===_.LIKE?e.rating===y.LIKE?t.feedbackLikePlaceholder:t.feedbackDislikePlaceholder:t.scaleFeedbackPlaceholder)||"",value:f,onChange:h,onKeyDown:i=>{!i.shiftKey&&i.key==="Enter"&&(i.preventDefault(),r())}},p,n.createElement("button",{className:"userflowjs-assistant-chat__feedback-submit",onClick:()=>r()},n.createElement(W,{icon:be}))):n.createElement("div",{className:"userflowjs-assistant-chat__rating-options"},t.ratingMode===_.LIKE?[y.LIKE,y.DISLIKE].map(i=>(!e.rating||e.rating===i)&&n.createElement("button",{key:i,className:"userflowjs-assistant-chat__rating-option",onClick:e.rating?void 0:()=>l(i),disabled:!!e.rating,"data-testid":`assistant-chat-rating-${i}`},n.createElement(W,{icon:i==y.DISLIKE?q:Q}))):Fe(t).map(({value:i,label:o})=>n.createElement("button",{key:i,className:F({"userflowjs-assistant-chat__rating-option":!0,"userflowjs-assistant-chat__rating-option--large-scale":Re(o||"")}),onClick:e.scaleRating?void 0:()=>g(i),disabled:!!e.scaleRating,"data-testid":`assistant-chat-rating-${i}`},o))))};function B(t){let e=t;const a=f=>(f=f.replace(/\s*[*_`]*$/,""),f=f.replace(/(^|\n)\s*(\d+\.?|-|=)$/,""),f);e=a(e),e=e.replace(/\[([^\]\n]*)(\](\([^)\n]*)?)?$/,"$1"),e=a(e);const c=Array.from(e.matchAll(/\n( *)```/g));if(c.length%2===1){const f=c[c.length-1][1];e+=`
1
+ import{r as u,R as n}from"./vendor.react.js";import{$ as _,a0 as y,u as Y}from"./userflow.js";import{u as Ee}from"./client-context.js";import{D as q,E as Q,F as be,G as P,H as $,I as V,J as X,K as Z}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{p as _e}from"./vendor.dompurify.js";import{m as ke}from"./vendor.marked.js";import{o as F}from"./vendor.obj-str.js";import{A as we,d as Ie,G as Se}from"./ResourceCenterApp.js";import{r as je,R as Ce}from"./bubble-frame.styl.js";import{D as W}from"./stylesheets.js";import{U as ae,b as Me}from"./flow-condition-types.js";import{r as ee}from"./vendor.react-dom.js";import"./vendor.core-js.js";import{u as ve}from"./vendor.react-i18next.js";import"./vendor.object-assign.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";import"./vendor.i18next.js";import"./flow-host.styl.js";import"./use-window-resize.js";import"./logomark.js";import"./ChecklistUI.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./BubbleToolbar.js";import"./use-element-rect.js";import"./vendor.date-fns.js";import"./vendor.scheduler.js";import"./vendor.babel.runtime.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},e=new Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="b3879987-5bc5-4318-82a2-7ca856d36d3c",t._sentryDebugIdIdentifier="sentry-dbid-b3879987-5bc5-4318-82a2-7ca856d36d3c")}catch{}})();function Re(t){const e=Intl.Segmenter;return e?/(\p{Emoji_Presentation}|\p{Extended_Pictographic})(\p{Emoji_Modifier_Base}?\p{Emoji_Modifier}?|\uFE0F\u200D(\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?\uFE0F\u200D)*\p{Emoji_Presentation}|\uFE0F\u200D\p{Extended_Pictographic})/u.test(t)&&[...new e().segment(t)].length===1:!1}const te=[];function Ne({assistant:t,lookupAttribute:e,initialConversationId:a,initialHistory:c,initialUserContent:m,onConversationIdChange:f,submitMessage:h,submitRating:l,submitFeedback:g,InsideMessage:r,onContactClick:p,contactButtonText:i}){const[o,d]=u.useState(null),[S,w]=u.useState(()=>c?c.map(s=>({...s,assistantHtml:x(B(s.assistantContent),!1)})):te),[D,M]=u.useState(""),j=u.useRef(null),k=u.useRef(null),b=u.useRef(!0),I=u.useRef(a||null),[ce,le]=u.useState(I.current),H=u.useCallback(s=>{I.current=s,le(s),f&&f(s)},[f]),T=u.useCallback(()=>{o?.focus({preventScroll:!0})},[o]);u.useEffect(()=>{T()},[T]),u.useLayoutEffect(()=>{const s=k.current;s&&(s.scrollTop=Math.ceil(s.scrollHeight-s.clientHeight))},[]);const K=u.useCallback(()=>{const s=k.current;s&&(b.current=!0,typeof s.scrollTo=="function"&&s.scrollTo({top:Math.ceil(s.scrollHeight-s.clientHeight),behavior:"smooth"}))},[]),G=u.useRef(0);u.useLayoutEffect(()=>{const s=k.current;s&&s.scrollHeight!==G.current&&(G.current=s.scrollHeight,b.current&&K())},[S,K]);const N=u.useCallback(()=>{j.current&&j.current()},[]);u.useEffect(()=>()=>{N()},[N]);const O=(s,R)=>{w(C=>C.map(v=>{if(s===v.id){const E=R(v);return{...v,...E}}else return v}))},L=s=>{w(R=>R.map((C,v)=>{if(v===R.length-1){const E=s(C);return{...C,...E}}else return C}))},U=u.useCallback(async s=>{if(s=s.trim(),s==="")return;N(),w(E=>[...E,{id:null,userContent:s,assistantContent:"",assistantHtml:x("","enter"),enterAnimation:!0,sources:[],completed:!1,rating:null,scaleRating:null,scaleMax:null,feedbackSubmitted:!1}]),M(""),K();let R=!1;const C=()=>{R=!0,j.current=null},v=h({conversationId:I.current,userContent:s,callback:E=>{if(R){console.log("Userflow.js AssistantChat got message after being done",E);return}switch(E.kind){case"conversation_created":H(E.conversationId);break;case"message_created":L(()=>({id:E.messageId,warning:E.warning}));break;case"assistant_content_delta":L(A=>{const he=E.delta,z=A.assistantContent+he,ge=B(z),pe=x(ge);return{assistantContent:z,assistantHtml:pe}});break;case"done":C(),L(A=>({assistantHtml:x(A.assistantContent,"exit"),completed:!0,sources:E.sources}));break;case"error":C(),L(A=>({failed:!0,error:E.message,assistantHtml:x(B(A.assistantContent),!1)}));break;default:console.log("Userflow.js AssistantChat got unknown message",E)}}});j.current=()=>{C(),v.abort(),L(E=>({assistantHtml:x(B(E.assistantContent),!1)}))}},[N,K,h,H]),J=u.useRef(!1);u.useEffect(()=>{J.current||(J.current=!0,m&&U(m))},[U,m]);const ie=u.useCallback(()=>{N(),H(null),w(te),T()},[N,T,H]),[ue,fe]=u.useState(!0),de=u.useCallback(()=>{const s=k.current;s&&fe(s.scrollTop===0)},[]),me=u.useCallback(()=>{const s=k.current;s&&(b.current=Math.ceil(s.scrollHeight-s.clientHeight)==Math.ceil(s.scrollTop))},[]);return{assistant:t,lookupAttribute:e,history:S,setInput:d,contentElRef:k,scrolledToTop:ue,userContent:D,setUserContent:M,onSubmitMessage:U,supportsFeedback:!!l&&!!g,onSubmitRating:s=>{if(l){switch(s.ratingMode){case _.LIKE:O(s.messageId,()=>({rating:s.rating}));break;case _.SCALE:O(s.messageId,()=>({scaleRating:s.scaleRating,scaleMax:s.scaleMax}));break;default:throw new ae(s)}l(s)}},onSubmitFeedback:s=>{g&&(O(s.messageId,()=>({feedbackSubmitted:!0})),g(s))},InsideMessage:r,onContactClick:p,contactButtonText:i,reset:ie,onContentScroll:de,onContentWheel:me,conversationId:ce}}const xe=({assistant:t,lookupAttribute:e,history:a,setInput:c,contentElRef:m,scrolledToTop:f,userContent:h,setUserContent:l,onSubmitMessage:g,supportsFeedback:r,onSubmitRating:p,onSubmitFeedback:i,InsideMessage:o,onContactClick:d,contactButtonText:S,reset:w,onContentScroll:D,onContentWheel:M,conversationId:j})=>{const k=a.some(b=>b.completed||b.failed);return n.createElement("div",{className:"userflowjs-assistant-chat"},n.createElement("div",{className:F({"userflowjs-assistant-chat__header":!0,"userflowjs-assistant-chat__header--content-scrolled":!f})}),n.createElement("div",{className:F({"userflowjs-assistant-chat__header":!0,"userflowjs-assistant-chat__header--content-scrolled":!f})},n.createElement(n.Fragment,null,n.createElement("h2",{className:"userflowjs-assistant-chat__title"},t.title),n.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--default",onClick:w},t.resetText))),n.createElement("div",{ref:m,className:"userflowjs-assistant-chat__content",onScroll:D,onWheel:M},!je(t.intro)&&n.createElement("div",{className:"userflowjs-assistant-chat__intro"},n.createElement(Ce,{doc:t.intro,lookupAttribute:e})),a.map((b,I)=>n.createElement(Le,{key:I,assistant:t,message:b,supportsFeedback:r,onSubmitRating:p,onSubmitFeedback:i,InsideMessage:o,conversationId:j,isLast:I===a.length-1}))),n.createElement("div",{className:"userflowjs-assistant-chat__prompt"},n.createElement(we,{textareaRef:c,placeholder:(a.length===0?t.promptEmptyPlaceholder:t.promptNonemptyPlaceholder)||"",value:h,onChange:l,onSubmit:()=>g(h)})),k&&d&&n.createElement("div",{className:"userflowjs-assistant-chat__contact"},n.createElement("button",{className:"userflowjs-tertiary-button",onClick:()=>d()},S)))},Le=({assistant:t,message:e,supportsFeedback:a,onSubmitRating:c,onSubmitFeedback:m,InsideMessage:f,conversationId:h,isLast:l})=>n.createElement("div",{className:"userflowjs-assistant-chat__message"},f&&n.createElement(f,{message:e}),n.createElement("div",{className:F({"userflowjs-assistant-chat__user-content":!0,"userflowjs-assistant-chat__user-content--enter":!!e.enterAnimation}),"data-assistant-conversation-id":h,"data-assistant-message-id":e.id},n.createElement("div",{style:{whiteSpace:"pre-wrap"}},e.userContent)),e.warning&&n.createElement("div",{className:"userflowjs-assistant-chat__error"},"Warning: ",e.warning),n.createElement("div",{className:"userflowjs-assistant-chat__assistant-content"},n.createElement("div",null,n.createElement(ye,{html:e.assistantHtml})),e.error&&n.createElement("div",{className:"userflowjs-assistant-chat__error"},e.error)),e.sources&&e.sources.length>0&&n.createElement("div",{className:"userflowjs-assistant-chat__sources"},n.createElement("div",{className:"userflowjs-assistant-chat__sources-title"},t.sourcesText),e.sources.map((g,r)=>n.createElement("a",{key:r,className:"userflowjs-assistant-chat__source",href:Ie(g.url),target:"_blank",rel:"noreferrer noopener"},g.title))),a&&e.completed&&e.id&&(t.ratingMode===_.LIKE||t.ratingMode===_.SCALE&&l)&&n.createElement(Ae,{assistant:t,message:e,onSubmitRating:c,onSubmitFeedback:m})),Ae=({assistant:t,message:e,onSubmitRating:a,onSubmitFeedback:c})=>{const m=u.useRef(null),[f,h]=u.useState(""),l=i=>{const o=e.id;o&&(ee.flushSync(()=>{a({ratingMode:_.LIKE,messageId:o,rating:i})}),m.current?.focus({preventScroll:!0}))},g=i=>{const o=e.id;o&&(ee.flushSync(()=>{a({ratingMode:_.SCALE,messageId:o,scaleRating:i,scaleMax:t.scaleMax})}),m.current?.focus({preventScroll:!0}))},r=()=>{e.id&&(c({messageId:e.id,feedback:f.trim()}),h(""))},p=t.ratingMode===_.LIKE?n.createElement("button",{className:"userflowjs-assistant-chat__rating-option",disabled:!0},n.createElement(W,{icon:e.rating==y.DISLIKE?q:Q})):e.scaleRating&&e.scaleMax&&n.createElement("button",{className:F({"userflowjs-assistant-chat__rating-option":!0,"userflowjs-assistant-chat__rating-option--scale":!0}),disabled:!0},oe(t,e.scaleRating,e.scaleMax));return n.createElement("div",{className:`userflowjs-assistant-chat__rating userflowjs-assistant-chat__rating--${t.ratingMode}`},t.ratingMode===_.SCALE&&n.createElement("div",{className:"userflowjs-assistant-chat__rating-question"},t.scaleQuestion),e.feedbackSubmitted?n.createElement("div",{className:"userflowjs-assistant-chat__rating-thanks"},p,n.createElement("div",{className:"userflowjs-assistant-chat__rating-thanks-message"},t.feedbackThanksText)):(t.ratingMode===_.LIKE?e.rating:e.scaleRating)?n.createElement(Se,{textareaRef:m,className:"userflowjs-growing-textarea userflowjs-assistant-chat__feedback-textarea",mirrorClassName:"userflowjs-growing-textarea__mirror",textareaClassName:"userflowjs-textarea",placeholder:(t.ratingMode===_.LIKE?e.rating===y.LIKE?t.feedbackLikePlaceholder:t.feedbackDislikePlaceholder:t.scaleFeedbackPlaceholder)||"",value:f,onChange:h,onKeyDown:i=>{!i.shiftKey&&i.key==="Enter"&&(i.preventDefault(),r())}},p,n.createElement("button",{className:"userflowjs-assistant-chat__feedback-submit",onClick:()=>r()},n.createElement(W,{icon:be}))):n.createElement("div",{className:"userflowjs-assistant-chat__rating-options"},t.ratingMode===_.LIKE?[y.LIKE,y.DISLIKE].map(i=>(!e.rating||e.rating===i)&&n.createElement("button",{key:i,className:"userflowjs-assistant-chat__rating-option",onClick:e.rating?void 0:()=>l(i),disabled:!!e.rating,"data-testid":`assistant-chat-rating-${i}`},n.createElement(W,{icon:i==y.DISLIKE?q:Q}))):Fe(t).map(({value:i,label:o})=>n.createElement("button",{key:i,className:F({"userflowjs-assistant-chat__rating-option":!0,"userflowjs-assistant-chat__rating-option--large-scale":Re(o||"")}),onClick:e.scaleRating?void 0:()=>g(i),disabled:!!e.scaleRating,"data-testid":`assistant-chat-rating-${i}`},o))))};function B(t){let e=t;const a=f=>(f=f.replace(/\s*[*_`]*$/,""),f=f.replace(/(^|\n)\s*(\d+\.?|-|=)$/,""),f);e=a(e),e=e.replace(/\[([^\]\n]*)(\](\([^)\n]*)?)?$/,"$1"),e=a(e);const c=Array.from(e.matchAll(/\n( *)```/g));if(c.length%2===1){const f=c[c.length-1][1];e+=`
2
2
  `+f+"```"}else{let f=0;for(let r=e.length-1;r>=0;r--)if(e[r]===`
3
3
  `&&e[r-1]===`
4
4
  `){f=r;break}const h=[];let l=!1;const g=r=>r==null||r.match(/\W/);for(let r=f;r<e.length;r++){const p=e[r],i=p+e[r+1],o=i+e[r+2];let d=null;!l&&o==="***"||!l&&o==="___"&&(g(e[r-1])||g(e[r+3]))?d=o:!l&&i==="**"||!l&&i==="__"&&(g(e[r-1])||g(e[r+2]))?d=i:(!l&&p==="*"||!l&&p==="_"&&(g(e[r-1])||g(e[r+1]))||p==="`")&&(d=p),d!=null&&(e.slice(f,r+d.length).match(/\[[^\]\n]*\]\([^)\n]*$/)||(h[h.length-1]===d?(d==="`"&&(l=!1),h.pop()):(d==="`"&&(l=!0),h.push(d))),r+=d.length-1)}e+=h.reverse().join("")}return e}function x(t,e){t=t.trim(),e!==!1&&(t=t.replace(/(\n *```)?$/," {{USERFLOWCHATBRAIN}}$1"));let a=_e.sanitize(ke.parse(t));if(e!==!1){let c="userflowjs-assistant-brain";e&&(c+=` userflowjs-assistant-brain--${e}`),a=a.replace("{{USERFLOWCHATBRAIN}}",`<span class="${c}"><span></span><span></span><span></span><span></span></span>`)}return a=a.replace(/<a href=/g,'<a target="_blank" rel="noopener noreferrer" href='),a}const ye=({html:t})=>u.useMemo(()=>{if(!t)return null;const a=new DOMParser().parseFromString(t,"text/html");return re(a.body)},[t]);function re(t,e){if(t instanceof Element){if(t.tagName==="BODY")return n.createElement(n.Fragment,{key:e},se(t));{if(["script","style"].includes(t.tagName))return null;const a={key:e};for(const c of t.attributes){let m=c.name;m.startsWith("on")||(m==="class"&&(m="className"),a[m]=c.value)}return n.createElement(t.tagName.toLowerCase(),a,se(t))}}else return t instanceof Text?t.textContent:null}function se(t){const e=[];let a=0;for(const c of t.childNodes)e.push(re(c,a)),a++;return e}function Fe(t){let e=[];const a=t.scaleMax||5;for(let c=1;c<=a;c++)e.push({value:c,label:oe(t,c,a)});return e}function oe(t,e,a){if(t.scaleLabels)return t.scaleLabels[e-1]||e;{const c=ne[a]&&ne[a][e];return c?n.createElement(W,{icon:c,size:24}):e}}const ne={2:{1:P,2:$},3:{1:P,2:V,3:$},4:{1:X,2:P,3:$,4:Z},5:{1:X,2:P,3:V,4:$,5:Z}},ft=({block:t,session:e,assistantReply:a,initialUserContent:c,onContactClick:m,contactButtonText:f})=>{const h=t.assistantFlowId,l=Ee(),{t:g}=ve(),r=g("assistant.generic_error"),p=g("assistant.disconnected_error"),i=Ne(u.useMemo(()=>({assistant:a.assistant,lookupAttribute:Me(e.data),initialConversationId:a.conversationId,initialHistory:a.history,initialUserContent:c,onConversationIdChange:o=>{const d="assistantConversationId:"+h;o?Y.setItem(d,o):Y.removeItem(d)},submitMessage:({conversationId:o,userContent:d,callback:S})=>{l.assistantMessageInProgress=!0;const w=l.nextRef();l.send({kind:"SubmitAssistantMessage",ref:w,assistantFlowId:h,conversationId:o,userContent:d},{handlesRejection:!0}).catch(b=>{S({kind:"error",message:b.humanMessage||r})});const M=()=>{l.assistantMessageInProgress=void 0,l.off("private:assistantMessageEvent",j),l.off("private:disconnect",k)},j=b=>{if(b.ref!==w)return;const{event:I}=b;S(I),(I.kind=="done"||I.kind=="error")&&M()},k=()=>{S({kind:"error",message:p}),M()};return l.on("private:assistantMessageEvent",j),l.on("private:disconnect",k),{abort:()=>{l.send({kind:"AbortAssistantMessage"}),M()}}},submitRating:o=>{switch(o.ratingMode){case _.LIKE:l.send({kind:"SubmitAssistantRating",messageId:o.messageId,rating:o.rating});break;case _.SCALE:l.send({kind:"SubmitAssistantScaleRating",messageId:o.messageId,scaleRating:o.scaleRating,scaleMax:o.scaleMax});break;default:throw new ae(o)}},submitFeedback:o=>{l.send({kind:"SubmitAssistantFeedback",messageId:o.messageId,feedback:o.feedback})},onContactClick:m,contactButtonText:f}),[a,h,l,c,e.data,m,f,r,p]));return n.createElement(n.Fragment,null,n.createElement(xe,{...i}))};export{ft as ResourceCenterAssistantChat};
@@ -1,2 +1,2 @@
1
- import{r as t,R as r}from"./vendor.react.js";import{u as b}from"./client-context.js";import{B as y}from"./BuilderBar.js";import"./vendor.html-parse-stringify2.js";import"./vendor.object-assign.js";import"./vendor.i18next.js";import"./vendor.react-i18next.js";import"./vendor.babel.runtime.js";import"./use-window-resize.js";import"./vendor.react-dom.js";import"./vendor.scheduler.js";import"./stylesheets.js";import"./vendor.fortawesome.pro-regular-svg-icons.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./userflow.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";import"./flow-condition-types.js";import"./vendor.date-fns.js";import"./logomark.js";import"./vendor.obj-str.js";import"./vendor.fortawesome.pro-light-svg-icons.js";(function(){try{var n=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},e=new Error().stack;e&&(n._sentryDebugIds=n._sentryDebugIds||{},n._sentryDebugIds[e]="947112aa-080b-4a8f-90ba-316ccc41ba2d",n._sentryDebugIdIdentifier="sentry-dbid-947112aa-080b-4a8f-90ba-316ccc41ba2d")}catch{}})();const q=({token:n})=>{const e=b(),[a,s]=t.useState("notIdentified"),[d,u]=t.useState(null),[m,p]=t.useState(null);let l=t.useRef(!1);t.useEffect(()=>()=>{l.current&&(l.current=!1,e.send({kind:"TestStartConditionCancel"}))},[e]);const o=t.useCallback(()=>{e.setSessionStorageState(i=>({...i,activeApp:null,testStartConditionToken:void 0}))},[e]);t.useEffect(()=>{let i=!1;return e.onceIdentified(async()=>{s("loading"),l.current=!0;let c;try{c=await e.send({kind:"TestStartCondition",token:n},{handlesRejection:!0})}catch(g){if(i)return;s("error"),p(g.humanMessage||"Sorry, something went wrong. Please try again or contact Userflow.");return}i||(u(c),s("loaded"),e.on("private:testStartConditionSuccess",o))}),()=>{i=!0,e.off("private:testStartConditionSuccess",o)}},[e,n,o]);const f=t.useCallback(async()=>{o(),e.getTargetEnv().postBuilderMessage({kind:"userflow:activateBuilder"})},[e,o]);return r.createElement(y,{buttons:r.createElement("button",{className:"btn btn--default",onClick:()=>f()},"Back to Builder")},r.createElement("div",null,r.createElement("div",{className:"label"},"Testing: ",d?.flowName||"..."),a==="notIdentified"?r.createElement("div",null,"Waiting for your app to identify user..."):a==="loading"?r.createElement("div",null,"Loading..."):a==="error"?r.createElement("div",{className:"error"},m):r.createElement("div",{className:"error"},"Auto-start condition not triggered yet...")))};export{q as StartConditionTestingApp,q as default};
1
+ import{r as t,R as r}from"./vendor.react.js";import{u as y}from"./client-context.js";import{B as b}from"./BuilderBar.js";import"./vendor.core-js.js";import"./vendor.object-assign.js";import"./vendor.i18next.js";import"./vendor.react-i18next.js";import"./vendor.babel.runtime.js";import"./use-window-resize.js";import"./vendor.react-dom.js";import"./vendor.scheduler.js";import"./stylesheets.js";import"./vendor.fortawesome.pro-regular-svg-icons.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./userflow.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";import"./flow-condition-types.js";import"./vendor.date-fns.js";import"./logomark.js";import"./vendor.obj-str.js";import"./vendor.fortawesome.pro-light-svg-icons.js";(function(){try{var n=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},e=new Error().stack;e&&(n._sentryDebugIds=n._sentryDebugIds||{},n._sentryDebugIds[e]="ef4a4f3f-c9c0-417a-aac1-514bff04cb8a",n._sentryDebugIdIdentifier="sentry-dbid-ef4a4f3f-c9c0-417a-aac1-514bff04cb8a")}catch{}})();const q=({token:n})=>{const e=y(),[a,s]=t.useState("notIdentified"),[d,u]=t.useState(null),[f,m]=t.useState(null);let l=t.useRef(!1);t.useEffect(()=>()=>{l.current&&(l.current=!1,e.send({kind:"TestStartConditionCancel"}))},[e]);const o=t.useCallback(()=>{e.setSessionStorageState(i=>({...i,activeApp:null,testStartConditionToken:void 0}))},[e]);t.useEffect(()=>{let i=!1;return e.onceIdentified(async()=>{s("loading"),l.current=!0;let c;try{c=await e.send({kind:"TestStartCondition",token:n},{handlesRejection:!0})}catch(g){if(i)return;s("error"),m(g.humanMessage||"Sorry, something went wrong. Please try again or contact Userflow.");return}i||(u(c),s("loaded"),e.on("private:testStartConditionSuccess",o))}),()=>{i=!0,e.off("private:testStartConditionSuccess",o)}},[e,n,o]);const p=t.useCallback(async()=>{o(),e.getTargetEnv().postBuilderMessage({kind:"userflow:activateBuilder"})},[e,o]);return r.createElement(b,{buttons:r.createElement("button",{className:"btn btn--default",onClick:()=>p()},"Back to Builder")},r.createElement("div",null,r.createElement("div",{className:"label"},"Testing: ",d?.flowName||"..."),a==="notIdentified"?r.createElement("div",null,"Waiting for your app to identify user..."):a==="loading"?r.createElement("div",null,"Loading..."):a==="error"?r.createElement("div",{className:"error"},f):r.createElement("div",{className:"error"},"Auto-start condition not triggered yet...")))};export{q as StartConditionTestingApp,q as default};
2
2
  //# sourceMappingURL=StartConditionTestingApp.js.map
@@ -1,2 +1,2 @@
1
- import{r as d,R as r}from"./vendor.react.js";import{u as y}from"./client-context.js";import{B as T}from"./BuilderBar.js";import{s as E}from"./flow-condition-types.js";import{J as I}from"./userflow.js";import"./vendor.html-parse-stringify2.js";import"./vendor.object-assign.js";import"./vendor.i18next.js";import"./vendor.react-i18next.js";import"./vendor.babel.runtime.js";import"./use-window-resize.js";import"./vendor.react-dom.js";import"./vendor.scheduler.js";import"./stylesheets.js";import"./vendor.fortawesome.pro-regular-svg-icons.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./logomark.js";import"./vendor.obj-str.js";import"./vendor.fortawesome.pro-light-svg-icons.js";import"./vendor.date-fns.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},e=new Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="781cb0d9-d629-439f-89dd-8f0ddd22ff57",t._sentryDebugIdIdentifier="sentry-dbid-781cb0d9-d629-439f-89dd-8f0ddd22ff57")}catch{}})();const H=({state:t})=>{const e=y(),[o,c]=d.useState("notIdentified");d.useEffect(()=>{let n=!1,i,a;function k(){i=()=>{e.off("private:identified",i),g()},e.isIdentified()?i():e.on("private:identified",i)}const g=async()=>{c("trackerLoading");const{tracker:l}=await e.send({kind:"GetTrackerForTesting",token:t.token});if(n)return;const{condition:f}=l,v=E[f.type];let m=!1;a=v.track({sessionData:new I(l.data),condition:f,flipBackEvents:!0,callback:p=>{const b=m;m=p,!b&&p&&e.setSessionStorageState(s=>({...s,trackerTesting:{...s.trackerTesting,events:s.trackerTesting.events+1}}))}}),c("trackerLoaded")};return k(),()=>{n=!0,i&&e.off("private:identified",i),a&&a()}},[e,t.token]);const u=d.useCallback(async()=>{e.setSessionStorageState(n=>({...n,activeApp:null,trackerTesting:null})),e.getTargetEnv().postBuilderMessage({kind:"userflow:testTrackerClosed"})},[e]);return r.createElement(T,{buttons:r.createElement("button",{className:"btn btn--default",onClick:()=>u()},"Back to Builder")},r.createElement("div",null,r.createElement("div",{className:"label"},"Testing tracker: ",t.trackerName),o==="notIdentified"?r.createElement("div",null,"Waiting for your app to identify user..."):o==="trackerLoading"?r.createElement("div",null,"Loading tracker..."):t.events===0?r.createElement("div",{className:"error"},"Not tracked yet"):r.createElement("div",{className:"success"},"Tracked ",t.events," time",t.events===1?"":"s")))};export{H as TrackerTestingApp,H as default};
1
+ import{r as c,R as r}from"./vendor.react.js";import{u as y}from"./client-context.js";import{B as T}from"./BuilderBar.js";import{s as E}from"./flow-condition-types.js";import{J as I}from"./userflow.js";import"./vendor.core-js.js";import"./vendor.object-assign.js";import"./vendor.i18next.js";import"./vendor.react-i18next.js";import"./vendor.babel.runtime.js";import"./use-window-resize.js";import"./vendor.react-dom.js";import"./vendor.scheduler.js";import"./stylesheets.js";import"./vendor.fortawesome.pro-regular-svg-icons.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./logomark.js";import"./vendor.obj-str.js";import"./vendor.fortawesome.pro-light-svg-icons.js";import"./vendor.date-fns.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},e=new Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="b23b71a4-f87f-4e5a-ba9e-1544d83a2ac9",t._sentryDebugIdIdentifier="sentry-dbid-b23b71a4-f87f-4e5a-ba9e-1544d83a2ac9")}catch{}})();const H=({state:t})=>{const e=y(),[a,d]=c.useState("notIdentified");c.useEffect(()=>{let n=!1,i,o;function k(){i=()=>{e.off("private:identified",i),b()},e.isIdentified()?i():e.on("private:identified",i)}const b=async()=>{d("trackerLoading");const{tracker:l}=await e.send({kind:"GetTrackerForTesting",token:t.token});if(n)return;const{condition:f}=l,g=E[f.type];let m=!1;o=g.track({sessionData:new I(l.data),condition:f,flipBackEvents:!0,callback:p=>{const v=m;m=p,!v&&p&&e.setSessionStorageState(s=>({...s,trackerTesting:{...s.trackerTesting,events:s.trackerTesting.events+1}}))}}),d("trackerLoaded")};return k(),()=>{n=!0,i&&e.off("private:identified",i),o&&o()}},[e,t.token]);const u=c.useCallback(async()=>{e.setSessionStorageState(n=>({...n,activeApp:null,trackerTesting:null})),e.getTargetEnv().postBuilderMessage({kind:"userflow:testTrackerClosed"})},[e]);return r.createElement(T,{buttons:r.createElement("button",{className:"btn btn--default",onClick:()=>u()},"Back to Builder")},r.createElement("div",null,r.createElement("div",{className:"label"},"Testing tracker: ",t.trackerName),a==="notIdentified"?r.createElement("div",null,"Waiting for your app to identify user..."):a==="trackerLoading"?r.createElement("div",null,"Loading tracker..."):t.events===0?r.createElement("div",{className:"error"},"Not tracked yet"):r.createElement("div",{className:"success"},"Tracked ",t.events," time",t.events===1?"":"s")))};export{H as TrackerTestingApp,H as default};
2
2
  //# sourceMappingURL=TrackerTestingApp.js.map
package/Trigger.js CHANGED
@@ -1,2 +1,2 @@
1
- import{r}from"./vendor.react.js";import{e as a,u as i,h as d}from"./bubble-frame.styl.js";import{u}from"./client-context.js";import"./vendor.html-parse-stringify2.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},s=new Error().stack;s&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[s]="bbc2a4da-529a-4504-8db1-076aaab709b8",e._sentryDebugIdIdentifier="sentry-dbid-bbc2a4da-529a-4504-8db1-076aaab709b8")}catch{}})();const y=({trigger:e})=>{const s=u(),n=a(),t=r.useRef(!1),o=i(e.condition);return r.useLayoutEffect(()=>{o&&!t.current&&(t.current=!0,d(s,n,e.actions))},[o,t,s,n,e.actions]),null};export{y as T};
1
+ import{r}from"./vendor.react.js";import{e as i,u as d,h as f}from"./bubble-frame.styl.js";import{u}from"./client-context.js";import"./vendor.core-js.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},s=new Error().stack;s&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[s]="3d7fe2d1-3d71-4725-b301-6b6893211b24",e._sentryDebugIdIdentifier="sentry-dbid-3d7fe2d1-3d71-4725-b301-6b6893211b24")}catch{}})();const y=({trigger:e})=>{const s=u(),n=i(),t=r.useRef(!1),o=d(e.condition);return r.useLayoutEffect(()=>{o&&!t.current&&(t.current=!0,f(s,n,e.actions))},[o,t,s,n,e.actions]),null};export{y as T};
2
2
  //# sourceMappingURL=Trigger.js.map
@@ -1,4 +1,4 @@
1
- import{R as t,r as v}from"./vendor.react.js";import{s as Re,b as Fe,t as ge,u as ve}from"./flow-condition-types.js";import{c as $e,D as J}from"./stylesheets.js";import"./vendor.html-parse-stringify2.js";import{o as $}from"./vendor.obj-str.js";import{c as ae,z as De,D as Le,F as A,G as Ee,S as we,E as re,H as j,U as Pe,o as _,I as Oe}from"./userflow.js";import{a as K}from"./vendor.fortawesome.pro-solid-svg-icons.js";import{u as Ue}from"./vendor.react-i18next.js";import{u as ye}from"./client-context.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},r=new Error().stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="63df8eaf-5a47-4c21-a345-6c38ee22473b",e._sentryDebugIdIdentifier="sentry-dbid-63df8eaf-5a47-4c21-a345-6c38ee22473b")}catch{}})();const Me=t.createContext(null);function le(){const e=v.useContext(Me);if(!e)throw new Error("useSession: Session was not set");return e}function Be(){const e=le();if(e.kind!=="flow")throw new Error("useFlowSession: Wrong session kind");return e}function We(e){const r=v.useRef(e),n=v.useRef(e);return e!==n.current&&JSON.stringify(e)!==JSON.stringify(n.current)&&(r.current=e),n.current=e,r.current}function he(e){const r=le(),[n,i]=v.useState(!1),s=$e(r.data),l=We(e);return v.useLayoutEffect(()=>{if(l)return Re[l.type].track({sessionData:s,condition:l,callback:b=>{i(b)}})},[s,l]),l==null?!1:n}const ze=({appearance:e,hidden:r,disabled:n,onMouseDown:i,onClick:s,text:l,active:a,children:u})=>t.createElement("button",{className:$({[dt(e)]:!0,"userflowjs-bubble-button--hidden":!!r,"userflowjs-bubble-button--active":!!a}),onMouseDown:i,onClick:s,disabled:n},u||t.createElement("div",{className:"userflowjs-bubble-button-text",role:"presentation"},l));function Ge(e){const r=Le(),n=new URL(e,r).toString();r!==n&&(ae.customNavigate?ae.customNavigate(e):window.setTimeout(()=>{De(e)},0))}async function ne(e,r,n){const{steps:i}=r.version;switch(n.type){case A.CLOSE_FLOW:switch(r.kind){case"launcher":await e.dismissLauncher(r,{endReason:re.ACTION});break;case"banner":case"flow":case"checklist":await e.endFlow(r,{endReason:re.ACTION});break}return;case A.EVAL_JS:if(ae.evalJsDisabled){console.error('Userflow.js: Blocked "Evaluate JavaScript" action from running, since userflow.disableEvalJs() has been called.');return}try{const s=ge(n.code||"",r.data);new Function(`"use strict";
1
+ import{R as t,r as v}from"./vendor.react.js";import{s as Re,b as Fe,t as ge,u as ve}from"./flow-condition-types.js";import{c as $e,D as J}from"./stylesheets.js";import"./vendor.core-js.js";import{o as $}from"./vendor.obj-str.js";import{c as ae,z as De,D as Le,F as A,G as Ee,S as we,E as re,H as j,U as Pe,o as _,I as Oe}from"./userflow.js";import{a as K}from"./vendor.fortawesome.pro-solid-svg-icons.js";import{u as Ue}from"./vendor.react-i18next.js";import{u as ye}from"./client-context.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},r=new Error().stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="0350475f-f304-4cf9-9e4f-2b46e9695847",e._sentryDebugIdIdentifier="sentry-dbid-0350475f-f304-4cf9-9e4f-2b46e9695847")}catch{}})();const Me=t.createContext(null);function le(){const e=v.useContext(Me);if(!e)throw new Error("useSession: Session was not set");return e}function Be(){const e=le();if(e.kind!=="flow")throw new Error("useFlowSession: Wrong session kind");return e}function We(e){const r=v.useRef(e),n=v.useRef(e);return e!==n.current&&JSON.stringify(e)!==JSON.stringify(n.current)&&(r.current=e),n.current=e,r.current}function he(e){const r=le(),[n,i]=v.useState(!1),s=$e(r.data),l=We(e);return v.useLayoutEffect(()=>{if(l)return Re[l.type].track({sessionData:s,condition:l,callback:b=>{i(b)}})},[s,l]),l==null?!1:n}const ze=({appearance:e,hidden:r,disabled:n,onMouseDown:i,onClick:s,text:l,active:a,children:u})=>t.createElement("button",{className:$({[dt(e)]:!0,"userflowjs-bubble-button--hidden":!!r,"userflowjs-bubble-button--active":!!a}),onMouseDown:i,onClick:s,disabled:n},u||t.createElement("div",{className:"userflowjs-bubble-button-text",role:"presentation"},l));function Ge(e){const r=Le(),n=new URL(e,r).toString();r!==n&&(ae.customNavigate?ae.customNavigate(e):window.setTimeout(()=>{De(e)},0))}async function ne(e,r,n){const{steps:i}=r.version;switch(n.type){case A.CLOSE_FLOW:switch(r.kind){case"launcher":await e.dismissLauncher(r,{endReason:re.ACTION});break;case"banner":case"flow":case"checklist":await e.endFlow(r,{endReason:re.ACTION});break}return;case A.EVAL_JS:if(ae.evalJsDisabled){console.error('Userflow.js: Blocked "Evaluate JavaScript" action from running, since userflow.disableEvalJs() has been called.');return}try{const s=ge(n.code||"",r.data);new Function(`"use strict";
2
2
  `+s)()}catch(s){console.error(`Userflow.js: Evaluate JavaScript action failed.
3
3
 
4
4
  Error:
@@ -7,5 +7,5 @@ ${s.stack||s.message||s}
7
7
  Code:
8
8
  ${n.code}`)}return;case A.GO_TO_STEP:{if(r.kind!=="flow")return;const s=i.find(({crossVersionId:l})=>l===n.stepCvid);if(!s)throw new Pe("Action points to unknown step: "+n.stepCvid);await e.goToStep(r,s);return}case A.NAVIGATE:{if(!n.url){console.warn("Userflow.js: NAVIGATE action is missing url property");return}const s=H(n.url,{lookupAttribute:Fe(r.data)});n.navigateTarget===Ee.NEW_TAB?window.open(s):Ge(s);return}case A.SET_ATTRIBUTE:{let s;const l=n.attributeValue||"";switch(n.attributeOperation){case j.SET:s={set:l};break;case j.SET_DATETIME:s={set:new Date().toISOString()};break;case j.SET_DATETIME_ONCE:s={set_once:new Date().toISOString()};break;case j.SET_ONCE:s={set_once:l};break;case j.ADD:s={add:l};break;case j.SUBTRACT:s={subtract:l};break;case j.APPEND:s={append:l};break;case j.PREPEND:s={prepend:l};break;case j.REMOVE:s={remove:l};break;case j.UNSET:s={set:null};break;default:return}const a=n.attributeFqn||"",u=a.split("/");u.length===1?e.updateUser({[a]:s}):u[0]==="group"?e.updateGroup({[u[1]]:s}):u[0]==="group_membership"&&e.updateGroup({},{membership:{[u[1]]:s}});return}case A.SNOOZE:r.kind==="flow"&&n.timeValue&&n.timeUnit&&(e.endFlow(r,{endReason:re.SNOOZED,batch:!0}),r.draftMode?window.alert(`In preview mode, flows can't be snoozed.
9
9
 
10
- But if this flow was running in published mode, the flow would now be snoozed for ${n.timeValue} ${n.timeUnit.toLowerCase()+(n.timeValue===1?"":"s")}.`):e.send({kind:"Snooze",flowId:r.flow.id,timeValue:n.timeValue,timeUnit:n.timeUnit},{batch:!0}));return;case A.START_FLOW:r.kind==="launcher"&&e.deactivateLauncher(r),n.otherFlow?await e.startFlow({flowId:n.otherFlow.id,stepCvid:n.otherFlowStepCvid,startReason:r.draftMode?we.DRAFT:we.ACTION,replaceCurrent:!0}):console.warn("Userflow.js: START_FLOW action is missing other flow");return}}async function ke(e,r,n){const i=[],s=[],l=[];for(const a of n)a.type===A.NAVIGATE?a.navigateTarget===Ee.NEW_TAB?i.push(a):l.push(a):s.push(a);for(const a of i)ne(e,r,a);await Promise.all(s.map(a=>ne(e,r,a)));for(const a of l)ne(e,r,a)}const Je=({button:e})=>{const r=ye(),n=le(),i=he(e.disabledCondition),s=he(e.hiddenCondition);return t.createElement(ze,{appearance:e.appearance,hidden:s,disabled:i,onClick:()=>ke(r,n,e.actions),text:ge(e.text,n.data)})},Ke=()=>t.createElement("svg",{viewBox:"0 0 32 32",xmlns:"http://www.w3.org/2000/svg"},t.createElement("polygon",{className:"userflowjs-star-shape",fill:"#fff",points:"16 22.7785728 7.18322122 29.1352549 10.5042507 18.7856772 1.73415226 12.3647451 12.6034401 12.3250364 16 2 19.3965599 12.3250364 30.2658477 12.3647451 21.4957493 18.7856772 24.8167788 29.1352549"})),Ve=({type:e,required:r,placeholder:n,buttonText:i,options:s,otherOption:l,multipleSelection:a,shuffleOptions:u,labelLeft:b,labelCenter:f,labelRight:w,minValue:h,maxValue:y,onSubmit:E,inert:c})=>{const{t:m}=Ue(),N=v.useRef(null),[p,D]=v.useState(""),[B,qe]=v.useState(new Set),[R,oe]=v.useState(),[ue,ce]=v.useState(),[L,W]=v.useState(!1),[g,Q]=v.useState(!1),[F,C]=v.useState(null),P=v.useMemo(()=>s&&(u?[...s].sort(()=>Math.random()-.5):s),[s,u]),T=o=>{if(!(c||!E)){if(r&&p===""&&[_.MULTILINE_TEXT,_.TEXT].includes(e)){C(m("question.requiredError")),X();return}Q(!0),C(null),E({...o,onCancel:()=>{Q(!1)},onError:S=>{Q(!1),C(S||"Sorry, something went wrong saving your answer. Please try again.")}})}},X=v.useCallback(()=>{c||!N.current||N.current.focus()},[c]),[me,fe]=v.useState(!1);v.useEffect(()=>{me&&(X(),fe(!1))},[X,me]);const de=t.createElement("div",{className:"userflowjs-bubble-buttons"},t.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--primary",onClick:()=>T({answer:{kind:"text",value:p}}),tabIndex:c?-1:void 0,disabled:g},t.createElement("div",{className:"userflowjs-bubble-button-text",role:"presentation"},i||m("question.submit"))));let x=null,G=0;if(e===_.NPS)b=b||m("question.npsLabelLeft"),w=w||m("question.npsLabelRight"),x=[0,1,2,3,4,5,6,7,8,9,10],G=x.length;else if([_.SCALE,_.STARS].includes(e)){h=h??1,y=y??5,x=[];for(let o=h;o<=y;o++)x.push(o);G=x.length}else e===_.MULTIPLE_CHOICE&&(G=(P?P.length:0)+(l&&!L?1:0));const[be,Ae]=v.useState(-1),I=be===-1?-1:Math.min(be,G-1),Z=o=>{if(!o.target.closest('[role="radio"], [role="checkbox"], [role="radiogroup"], [role="group"]'))return;let k=null;if(o.key==="ArrowRight"||o.key==="ArrowDown"?k=1:(o.key==="ArrowLeft"||o.key==="ArrowUp")&&(k=-1),k!=null){o.preventDefault();const M=o.currentTarget.querySelectorAll('[role="radio"], [role="checkbox"]');let d=I+k;d<0?d=M.length-1:d>M.length-1&&(d=0),Ae(d),M[d].focus()}};let Y=null,ee=null;if(x&&(b||f||w)){const o=[];b&&o.push(x[0],b),w&&o.push(x[x.length-1],w),Y=t.createElement("div",{id:"a11y-scale-labels",className:"userflowjs-a11y-only"},o.join(", ")),ee=t.createElement("div",{id:"userflowjs-bubble-question-labels",className:"userflowjs-bubble-question__scale-labels","aria-hidden":"true"},t.createElement("div",{className:"userflowjs-bubble-question__scale-label"},b),f&&t.createElement("div",{className:"userflowjs-bubble-question__scale-label userflowjs-bubble-question__scale-label--center"},f),t.createElement("div",{className:"userflowjs-bubble-question__scale-label userflowjs-bubble-question__scale-label--right"},w))}let O;switch(e){case _.MULTILINE_TEXT:O=t.createElement(t.Fragment,null,t.createElement("textarea",{ref:N,className:"userflowjs-textarea userflowjs-bubble-question__textarea",value:p,onChange:o=>D(o.target.value),onKeyDown:o=>{(o.ctrlKey||o.metaKey)&&o.key==="Enter"&&T({answer:{kind:"text",value:p}})},placeholder:n||m("question.placeholder"),readOnly:c||g,tabIndex:c?-1:void 0,rows:3,"aria-required":r?"true":void 0,"aria-invalid":F!=null?"true":void 0}),de);break;case _.MULTIPLE_CHOICE:{const o=()=>{p&&T({answer:{kind:"text",value:p},animationPromise:V()})},S=(P?.length||0)+(l?1:0),k=Math.max(0,Math.min(S,h??1)),U=Math.max(0,Math.min(S,y??S)),M=()=>{const d=(P||[]).filter((z,q)=>B.has(q)).map(z=>z.value);if(l&&L&&p!==""&&d.push(p),k===U&&d.length!==k){C(m("question.multiple_selection_wrong",{count:k}));return}else if(d.length<k){C(m("question.multiple_selection_too_few",{count:k}));return}else if(d.length>U){C(m("question.multiple_selection_too_many",{count:U}));return}T({answer:{kind:"list",values:d}})};O=t.createElement(t.Fragment,null,a&&t.createElement("div",{className:$({"userflowjs-bubble-question__multiple-choice-hint":!0,"userflowjs-bubble-question__multiple-choice-hint--error":!!F})},m("question.multiple_selection_hint",{replace:{selected:B.size+(l&&L&&p!==""?1:0),range:k===U?k:`${k}-${U}`}}),F&&t.createElement(t.Fragment,null,". ",t.createElement("span",{role:"alert"},F))),t.createElement("div",{className:$({"userflowjs-bubble-question__multiple-choice":!0,"userflowjs-bubble-question__multiple-choice--single-selection":!a,"userflowjs-bubble-question__multiple-choice--multiple-selection":!!a}),role:a?"group":"radiogroup",tabIndex:!c&&I===-1?0:-1,onKeyDown:Z},P?.map(({value:d,label:z},q)=>t.createElement("button",{key:q,className:$({"userflowjs-bubble-question__multiple-choice-option":!0,"userflowjs-bubble-question__multiple-choice-option--selected":a?B.has(q):g&&!L&&p==d}),onClick:g?void 0:()=>{if(a){C(null);const te=new Set(B);B.has(q)?te.delete(q):te.add(q),qe(te)}else W(!1),D(d),T({answer:{kind:"text",value:d},animationPromise:V()})},disabled:g,tabIndex:!c&&q===I?0:-1,role:a?"checkbox":"radio","aria-label":z||d,"aria-checked":!L&&p==d},a?t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox"},t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox-inner"},t.createElement(J,{icon:K}))):t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio"},t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio-inner"})),t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-option-text","aria-hidden":"true"},z||d))),l&&(L?t.createElement("div",{className:$({"userflowjs-bubble-question__multiple-choice-option":!0,"userflowjs-bubble-question__multiple-choice-option--other":!0,"userflowjs-bubble-question__multiple-choice-option--selected":a?p!="":g})},a?t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox",onClick:()=>{D(""),W(!1)}},t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox-inner"},t.createElement(J,{icon:K}))):t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio"},t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio-inner"})),t.createElement("input",{ref:N,className:"userflowjs-bubble-question__multiple-choice-option-input",value:p,onChange:d=>D(d.target.value),onKeyDown:d=>{!d.shiftKey&&d.key==="Enter"?a?M():o():d.key==="Escape"&&(d.stopPropagation(),D(""),W(!1))},onBlur:()=>{p===""&&W(!1)},placeholder:n||m("question.placeholder"),readOnly:c||g,tabIndex:c?-1:void 0}),!a&&t.createElement("button",{"data-testid":"multiple-choice-other-submit",className:"userflowjs-bubble-question__multiple-choice-option-submit",onClick:()=>o(),disabled:g,"aria-label":m("question.submit")},t.createElement(J,{icon:K}))):t.createElement("button",{className:"userflowjs-bubble-question__multiple-choice-option",onClick:g?void 0:()=>{C(null),W(!0),fe(!0)},disabled:g,tabIndex:!c&&P?.length===I?0:-1,role:"radio","aria-label":m("question.other"),"aria-checked":"false"},a?t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox"},t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox-inner"},t.createElement(J,{icon:K}))):t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio"},t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio-inner"})),t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-option-text","aria-hidden":"true"},m("question.other"))))),a&&t.createElement("div",{className:"userflowjs-bubble-buttons"},t.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--primary",onClick:M,tabIndex:c?-1:void 0,disabled:g},t.createElement("div",{className:"userflowjs-bubble-button-text",role:"presentation"},i||m("question.submit")))));break}case _.NPS:case _.SCALE:{O=t.createElement(t.Fragment,null,Y,t.createElement("div",{className:"userflowjs-bubble-question__scale-options",role:"radiogroup",tabIndex:!c&&I===-1?0:-1,onKeyDown:Z},x?.map((o,S)=>t.createElement("button",{className:$({"userflowjs-bubble-question__scale-option":!0,"userflowjs-bubble-question__scale-option--selected":g&&R==o}),key:o,tabIndex:!c&&S===I?0:-1,onClick:()=>{oe(o),T({answer:{kind:"number",value:o},animationPromise:V()})},disabled:g,role:"radio","aria-checked":R==o},o))),ee);break}case _.STARS:{O=t.createElement("div",{className:"userflowjs-bubble-question__stars-wrapper"},Y,t.createElement("div",{className:"userflowjs-bubble-question__stars",role:"radiogroup",tabIndex:!c&&I===-1?0:-1,onKeyDown:Z},x?.map((o,S)=>t.createElement("button",{className:$({"userflowjs-bubble-question__star":!0,"userflowjs-bubble-question__star--hovered":!g&&ue!=null&&ue>=o,"userflowjs-bubble-question__star--selected":g&&R!=null&&R>=o,"userflowjs-bubble-question__star--not-selected":g&&R!=null&&R<o}),key:o,tabIndex:!c&&S===I?0:-1,onClick:()=>{oe(o),T({answer:{kind:"number",value:o},animationPromise:V()})},onMouseOver:()=>ce(o),onMouseLeave:()=>ce(null),disabled:g,role:"radio","aria-checked":R==o,"aria-label":String(o)},t.createElement("div",{className:"userflowjs-bubble-question__star-icon","aria-hidden":"true"},t.createElement(Ke,null)),t.createElement("div",{className:"userflowjs-bubble-question__star-value","aria-hidden":"true"},o)))),ee);break}case _.TEXT:O=t.createElement(t.Fragment,null,t.createElement("input",{ref:N,className:"userflowjs-text-input userflowjs-bubble-question__text-input",value:p,onChange:o=>D(o.target.value),onKeyDown:o=>{!o.shiftKey&&o.key==="Enter"&&T({answer:{kind:"text",value:p}})},placeholder:n||m("question.placeholder"),readOnly:c||g,tabIndex:c?-1:void 0,"aria-required":r?"true":void 0,"aria-invalid":F!=null?"true":void 0}),de);break}return t.createElement("div",{className:"userflowjs-bubble-question",style:{pointerEvents:c?"none":void 0}},F&&!(e===_.MULTIPLE_CHOICE&&a)&&t.createElement("div",{className:"userflowjs-bubble-question__error",role:"alert"},F),O)};function V(){return new Promise(e=>window.setTimeout(e,250))}const He=({question:e})=>{const r=ye(),n=Be();return t.createElement(Ve,{type:e.type,required:!!e.required,placeholder:e.placeholder||"",buttonText:e.buttonText||"",options:e.options,otherOption:e.otherOption,multipleSelection:e.multipleSelection,shuffleOptions:e.shuffleOptions,labelLeft:e.labelLeft||"",labelCenter:e.labelCenter||"",labelRight:e.labelRight||"",minValue:e.minValue,maxValue:e.maxValue,onSubmit:async i=>{Oe("answerQuestion",n.id,e.cvid,i);const{answer:s}=i;try{await Promise.all([await r.send({kind:"AnswerQuestion",sessionId:n.id,questionName:e.name,questionCvid:e.cvid,textAnswer:s.kind=="text"?s.value:null,numberAnswer:s.kind=="number"?String(s.value):null,listAnswer:s.kind=="list"?s.values:null}),i.animationPromise])}catch(a){console.log("Userflow.js: Error when answering question:",a),i.onError();return}const{bindAttributeFqn:l}=e;if(l&&r.flowSession?.id===n.id){let a;switch(s.kind){case"text":a={name:l,value:s.value};break;case"number":a={name:l,value:String(s.value)};break;case"list":a={name:l,value:s.values};break}r.optimisticClockUIUpdate(()=>{r.setFlowSession({...n,data:[...n.data.filter(u=>u.name!==l),a]})})}ke(r,n,e.actions)}})},Qe=({text:e})=>{if(!e)return null;const r=e.split(/\n/);return r.length===1?t.createElement(t.Fragment,null,r[0]):t.createElement(t.Fragment,null,r.map((n,i)=>t.createElement(t.Fragment,{key:i},i>0&&t.createElement("br",null),n)))};function Xe(e=""){return{type:"rich2",children:[Ze(e)]}}function Ze(e=""){return{type:"paragraph",children:[{text:e}]}}function _e(e){if(e){let r;try{r=JSON.parse(e)}catch{throw new Error("Could not JSON.parse rich content doc: "+e)}if(r.type==="rich2")return r;throw new Error("Could not recognize rich content doc: "+e)}else return Xe()}function Ye(e=""){return{type:"plaintext2",children:[{type:"plaintext",children:[{text:e}]}]}}function et(e){if(e){let r;try{r=JSON.parse(e)}catch{throw new Error("Could not JSON.parse plaintext doc: "+e)}if(r.type==="plaintext2")return r;throw new Error("Could not recognize plaintext doc: "+e)}else return Ye()}function H(e,{lookupAttribute:r}){if(!e)return"";typeof e=="string"&&(e=et(e));const n=[];function i(l){if(ie(l)){l.text&&n.push(l.text);return}switch(l.type){case"attribute":{const a=Ce(l,r);a&&n.push(a);break}default:s(l.children);break}}function s(l){l&&l.forEach(a=>a&&i(a))}return s(e.children),n.join("")}function _t(e){let r=!0;if(!e)return!0;typeof e=="string"&&(e=_e(e));const n=new Set(["attribute","button","image","question","video"]);return Ie(e,i=>{if(ie(i)){i.text!==""&&(r=!1);return}"type"in i&&n.has(i.type)&&(r=!1)}),r}const xt=t.memo(({doc:e,...r})=>e?(typeof e=="string"&&(e=_e(e)),t.createElement(xe,{parent:e,...r})):null),xe=({parent:e,...r})=>t.createElement(t.Fragment,null,e.children.map((n,i)=>ie(n)?t.createElement(tt,{key:i,node:n}):t.createElement(rt,{key:i,node:n,parent:e,...r}))),tt=({node:e})=>e.text?t.createElement(Ne,{node:e},t.createElement(Qe,{text:e.text})):null,Ne=({node:e,children:r})=>(e.color&&typeof e.color=="string"&&(r=t.createElement("span",{style:{color:e.color}},r)),e.bold&&(r=t.createElement("b",null,r)),e.italic&&(r=t.createElement("i",null,r)),e.underline&&(r=t.createElement("u",null,r)),e.strikeThrough&&(r=t.createElement("s",null,r)),e.code&&(r=t.createElement("code",null,r)),e.small&&(r=t.createElement("small",null,r)),e.sup&&(r=t.createElement("sup",null,r)),r),rt=({node:e,parent:r,...n})=>{const{lookupAttribute:i}=n,s=t.createElement(xe,{parent:e,...n});switch(e.type){case"attribute":return t.createElement(nt,{node:e,...n});case"button":return t.createElement(st,{node:e,...n});case"button-group":return t.createElement("div",{className:"userflowjs-bubble-buttons",style:{justifyContent:e.align}},s);case"column":return t.createElement("div",{style:mt(e,r)},s);case"column-group":return t.createElement("div",{className:"p-like",style:ct(e)},s);case"container":return t.createElement("div",{className:"p-like"+(e.className?` ${e.className}`:""),style:ft(e)},s);case"image":return t.createElement(lt,{node:e,...n});case"link":return t.createElement("a",{href:H(e.href,{lookupAttribute:i}),target:e.target==="same"?"_top":"_blank",rel:"noopener noreferrer"},s);case"paragraph":return t.createElement("p",{className:se(e)},s);case"heading1":return t.createElement("h1",{className:se(e)},s);case"heading2":return t.createElement("h2",{className:se(e)},s);case"question":return t.createElement(at,{node:e,...n});case"quote":return t.createElement("blockquote",null,s);case"code-block":return t.createElement("pre",null,t.createElement("code",null,s));case"ordered-list":return t.createElement("ol",null,s);case"unordered-list":return t.createElement("ul",null,s);case"list-item":return t.createElement("li",null,s);case"video":return t.createElement(it,{node:e,...n});default:return t.createElement("div",null,s)}},nt=({node:e,lookupAttribute:r})=>{let n=Ce(e,r);return t.createElement(Ne,{node:e},n)},st=({node:e,buttons:r})=>{const n=r?.find(i=>i.cvid===e.cvid);return n?t.createElement(Je,{key:n.id,button:n}):null},at=({node:e,questions:r})=>{const n=r?.find(i=>i.cvid===e.cvid);return n?t.createElement(He,{key:n.id,question:n}):null},lt=({node:e,lookupAttribute:r})=>{const{src:n,widthMode:i,displayWidth:s,width:l,height:a,marginTop:u,marginRight:b,marginBottom:f,marginLeft:w,align:h,hasLink:y,href:E}=e;if(typeof n!="string"||!n)return null;const{wrapperStyle:c,blockStyle:m}=Se({widthMode:i,displayWidth:s,width:l,height:a,marginTop:u,marginRight:b,marginBottom:f,marginLeft:w,align:h});let N=t.createElement("img",{src:ve(n,p=>encodeURIComponent((r?r(p):"")||"")),style:{...m,objectFit:"contain"},alt:""});return y&&E&&(N=t.createElement("a",{href:H(E,{lookupAttribute:r}),target:e.target==="same"?"_top":"_blank",rel:"noopener noreferrer",style:m},N)),t.createElement("div",{className:"p-like"},t.createElement("div",{style:c},N))},it=({node:e,lookupAttribute:r})=>{const{url:n,widthMode:i,displayWidth:s,width:l,height:a,marginTop:u,marginRight:b,marginBottom:f,marginLeft:w,align:h}=e;if(typeof n!="string"||!n)return null;const{wrapperStyle:y,blockStyle:E}=Se({widthMode:i,displayWidth:s,width:l,height:a,marginTop:u,marginRight:b,marginBottom:f,marginLeft:w,align:h});return t.createElement("div",{className:"p-like"},t.createElement("div",{style:y},t.createElement("div",{style:E},t.createElement(ot,{element:e,noFocus:!0,lookupAttribute:r}))))},ot=({element:{embedType:e,url:r,src:n,autoPlay:i,controls:s,loop:l,muted:a},noFocus:u,forceMuted:b,lookupAttribute:f})=>{if(!r)return null;const w={width:"100%",height:"100%",allow:"accelerometer; autoplay; fullscreen; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,allowtransparency:"true",mozallowfullscreen:"true",webkitallowfullscreen:"true",oallowfullscreen:"true",msallowfullscreen:"true",style:{display:"block",border:"none"},tabIndex:u?-1:void 0};if(e==="video")return t.createElement("video",{key:r+";"+String(i)+";"+String(s)+";"+String(l)+";"+String(a),src:r,style:{width:"100%",height:"100%",display:"block"},autoPlay:!!i,controls:s!==!1,loop:l,muted:b||a});if(n){let m;try{m=new URL(n)}catch{return null}return b&&(m.searchParams.has("autoplay")||m.searchParams.has("autoPlay"))&&(m.searchParams.set("mute","1"),m.searchParams.set("muted","1"),m.searchParams.set("volume","0")),t.createElement("iframe",{src:m.toString(),...w})}let h=ut(r,{iframeFallback:!0});if(h.kind==="invalid")return null;const{videoProvider:y,videoId:E,searchParams:c}=h;switch(i=i||c.has("autoplay")||c.has("autoPlay"),y){case"iframe":return t.createElement("iframe",{src:ve(E,m=>encodeURIComponent((f?f(m):"")||"")),scrolling:c.get("scrolling")||void 0,...w});case"loom":return t.createElement("iframe",{src:`https://www.loom.com/embed/${E}?${c.toString()}`,...w});case"raw":return t.createElement("video",{src:E,controls:!0,style:{width:"100%",height:"100%",display:"block"},autoPlay:c.has("autoplay"),muted:b||c.has("muted")});case"youtube":return b&&i&&c.set("mute","1"),t.createElement("iframe",{src:`https://www.youtube.com/embed/${E}?${c.toString()}`,...w});case"vimeo":return b&&i&&c.set("muted","1"),t.createElement("iframe",{src:`https://player.vimeo.com/video/${E}?${c.toString()}`,...w});case"wistia":return c.set("videoFoam","true"),b&&i&&c.set("volume","0"),t.createElement(t.Fragment,null,t.createElement("iframe",{src:`https://fast.wistia.net/embed/iframe/${E}?${c.toString()}`,...w}))}};function ut(e,{iframeFallback:r}={}){let n;try{n=new URL(e)}catch{return{kind:"invalid"}}const{hostname:i,pathname:s,searchParams:l}=n;if(i.match(/^(www\.)?(use)?loom\.com$/)){const a=s.match(/^\/share\/([a-z0-9]+)$/i);if(a){const[,u]=a;return{kind:"ok",videoProvider:"loom",videoId:u,searchParams:l}}}if(e.startsWith("raw:"))return{kind:"ok",videoProvider:"raw",videoId:e.replace(/^raw:/,""),searchParams:l};if(e.startsWith("iframe:"))return{kind:"ok",videoProvider:"iframe",videoId:e.replace(/^iframe:/,""),searchParams:l};if(["youtube.com","www.youtube.com"].includes(i)){const a=l.get("v");if(a)return l.delete("v"),{kind:"ok",videoProvider:"youtube",videoId:a,searchParams:l}}if(i==="youtu.be"){const a=s.match(/^\/([^/]+)$/);if(a){const[,u]=a;return{kind:"ok",videoProvider:"youtube",videoId:u,searchParams:l}}}if(i==="vimeo.com"){const a=s.match(/^\/(\d+)$/);if(a){const[,u]=a;return{kind:"ok",videoProvider:"vimeo",videoId:u,searchParams:l}}}if(i==="player.vimeo.com"){const a=s.match(/^\/video\/([^/]+)$/);if(a){const[,u]=a;return{kind:"ok",videoProvider:"vimeo",videoId:u,searchParams:l}}}if(i.match(/^[^.]+\.wistia.com$/)){const a=s.match(/^\/medias\/([^/]+)$/);if(a){const[,u]=a;return{kind:"ok",videoProvider:"wistia",videoId:u,searchParams:l}}}return r?{kind:"ok",videoProvider:"iframe",videoId:e,searchParams:l}:{kind:"invalid"}}function se(e){return e.align==="right"?"userflowjs-text-align-end":e.align==="center"?"userflowjs-text-align-center":e.align==="justify"?"userflowjs-text-align-justify":""}function Se({widthMode:e,displayWidth:r,width:n,height:i,marginTop:s,marginRight:l,marginBottom:a,marginLeft:u,align:b}){const f={position:"relative"},w={position:"absolute",top:"0",left:"0",display:"block",width:"100%",height:"100%"};typeof r!="number"&&(r=100,e="percent"),b==="center"?(f.marginLeft="auto",f.marginRight="auto"):b==="right"&&(f.marginLeft="auto");let h=0;if(s!=null&&typeof s=="number"&&(f.marginTop=`${s}px`),l!=null&&typeof l=="number"&&(f.marginRight=`${l}px`,h+=l),a!=null&&typeof a=="number"&&(f.marginBottom=`${a}px`),u!=null&&typeof u=="number"&&(f.marginLeft=`${u}px`,h+=u),typeof r!="number"||typeof n!="number"||typeof i!="number")f.width="100px",f.height="100px";else if(e==="px"){const E=Math.max(10,r);f.width=`${E}px`,f.height=`${E/(n/i)}px`}else{const y=Math.max(0,Math.min(100,r));f.width=`calc(${y}% - ${h}px)`,f.height="0",f.paddingBottom=`calc((${y}% - ${h}px) / (${n} / ${i})`}return{wrapperStyle:f,blockStyle:w}}const je=16;function ct(e){return{display:"flex",alignItems:"stretch",marginRight:`-${e.spacing==null?je:e.spacing}px`}}function mt(e,r){const n=e.widthMode==="fill"||e.displayWidth==null;return{display:"flex",flexDirection:"column",justifyContent:e.justifyContent,width:n?void 0:e.widthMode==="px"?`${e.displayWidth||50}px`:e.widthMode==="percent"?`${e.displayWidth||50}%`:void 0,flex:n?"1 0 0":void 0,marginRight:`${r.spacing==null?je:r.spacing}px`,marginBottom:"0"}}function ft(e){return{display:"flex",flexDirection:"column",justifyContent:e.justifyContent,width:e.widthMode==="px"&&e.displayWidth!=null?`${e.displayWidth}px`:e.widthMode==="percent"&&e.displayWidth!=null?`${e.displayWidth}%`:void 0,minHeight:e.heightMode==="px"?`${e.displayHeight||50}px`:void 0,flex:e.heightMode==="fill"?"1 0 0":void 0,marginTop:e.marginTop!=null?`${e.marginTop}px`:void 0,marginRight:e.marginRight!=null?`${e.marginRight}px`:e.widthMode!=="fill"&&e.align==="center"?"auto":void 0,marginBottom:e.marginBottom!=null?`${e.marginBottom}px`:void 0,marginLeft:e.marginLeft!=null?`${e.marginLeft}px`:e.widthMode!=="fill"&&(e.align==="center"||e.align==="right")?"auto":void 0}}function Ce(e,r){if(!r)return null;const n=e.attributeName;if(typeof n=="string"){const i=r(n)||e.fallback;if(typeof i=="string")return i}return null}function Te(e){return Array.isArray(e.children)&&typeof e.addMark>"u"}function pe(e,r,n="type"){return Te(e)&&e[n]===r}function ie(e){return typeof e.text=="string"}function Ie(e,r){function n(s,l){r(s,l),Te(s)&&i(s.children)}function i(s){s&&s.forEach((l,a)=>l&&n(l,a))}i(Array.isArray(e)?e:e.children)}const Nt=t.memo(({doc:e,lookupAttribute:r})=>e?t.createElement(t.Fragment,null,H(e,{lookupAttribute:r})):null);function St(e,{buttons:r,questions:n}){const i=new Set,s=new Set;if(Ie(e,l=>{pe(l,"button")&&i.add(l.cvid),pe(l,"question")&&s.add(l.cvid)}),n){const l=n.filter(a=>!s.has(a.cvid));l.length>0&&(e={...e,children:[...e.children,...l.map(a=>({type:"question",cvid:a.cvid,children:[{text:""}]}))]})}if(r){const l=r.filter(a=>!i.has(a.cvid));l.length>0&&(e={...e,children:[...e.children,{type:"button-group",children:l.map(a=>({type:"button",cvid:a.cvid,children:[{text:""}]}))}]})}return e}function dt(e){return e=e||"default","userflowjs-bubble-button "+(e==="primary"||e==="PRIMARY"||e==="default"||e==="DEFAULT"||e==="banner-primary"||e==="banner-secondary"?`userflowjs-bubble-button--${e.toLowerCase()}`:e)}const jt=new URL("bubble-frame.css",import.meta.url).href;export{Je as B,xt as R,Me as S,Nt as a,jt as b,ze as c,_e as d,le as e,Ce as g,ke as h,ie as i,St as m,Ge as n,_t as r,H as s,he as u};
10
+ But if this flow was running in published mode, the flow would now be snoozed for ${n.timeValue} ${n.timeUnit.toLowerCase()+(n.timeValue===1?"":"s")}.`):e.send({kind:"Snooze",flowId:r.flow.id,timeValue:n.timeValue,timeUnit:n.timeUnit},{batch:!0}));return;case A.START_FLOW:r.kind==="launcher"&&e.deactivateLauncher(r),n.otherFlow?await e.startFlow({flowId:n.otherFlow.id,stepCvid:n.otherFlowStepCvid,startReason:r.draftMode?we.DRAFT:we.ACTION,replaceCurrent:!0}):console.warn("Userflow.js: START_FLOW action is missing other flow");return}}async function ke(e,r,n){const i=[],s=[],l=[];for(const a of n)a.type===A.NAVIGATE?a.navigateTarget===Ee.NEW_TAB?i.push(a):l.push(a):s.push(a);for(const a of i)ne(e,r,a);await Promise.all(s.map(a=>ne(e,r,a)));for(const a of l)ne(e,r,a)}const Je=({button:e})=>{const r=ye(),n=le(),i=he(e.disabledCondition),s=he(e.hiddenCondition);return t.createElement(ze,{appearance:e.appearance,hidden:s,disabled:i,onClick:()=>ke(r,n,e.actions),text:ge(e.text,n.data)})},Ke=()=>t.createElement("svg",{viewBox:"0 0 32 32",xmlns:"http://www.w3.org/2000/svg"},t.createElement("polygon",{className:"userflowjs-star-shape",fill:"#fff",points:"16 22.7785728 7.18322122 29.1352549 10.5042507 18.7856772 1.73415226 12.3647451 12.6034401 12.3250364 16 2 19.3965599 12.3250364 30.2658477 12.3647451 21.4957493 18.7856772 24.8167788 29.1352549"})),Ve=({type:e,required:r,placeholder:n,buttonText:i,options:s,otherOption:l,multipleSelection:a,shuffleOptions:u,labelLeft:b,labelCenter:f,labelRight:w,minValue:h,maxValue:y,onSubmit:E,inert:c})=>{const{t:m}=Ue(),N=v.useRef(null),[p,D]=v.useState(""),[B,qe]=v.useState(new Set),[R,oe]=v.useState(),[ue,ce]=v.useState(),[L,W]=v.useState(!1),[g,Q]=v.useState(!1),[F,C]=v.useState(null),P=v.useMemo(()=>s&&(u?[...s].sort(()=>Math.random()-.5):s),[s,u]),T=o=>{if(!(c||!E)){if(r&&p===""&&[_.MULTILINE_TEXT,_.TEXT].includes(e)){C(m("question.requiredError")),X();return}Q(!0),C(null),E({...o,onCancel:()=>{Q(!1)},onError:S=>{Q(!1),C(S||"Sorry, something went wrong saving your answer. Please try again.")}})}},X=v.useCallback(()=>{c||!N.current||N.current.focus()},[c]),[me,fe]=v.useState(!1);v.useEffect(()=>{me&&(X(),fe(!1))},[X,me]);const de=t.createElement("div",{className:"userflowjs-bubble-buttons"},t.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--primary",onClick:()=>T({answer:{kind:"text",value:p}}),tabIndex:c?-1:void 0,disabled:g},t.createElement("div",{className:"userflowjs-bubble-button-text",role:"presentation"},i||m("question.submit"))));let x=null,G=0;if(e===_.NPS)b=b||m("question.npsLabelLeft"),w=w||m("question.npsLabelRight"),x=[0,1,2,3,4,5,6,7,8,9,10],G=x.length;else if([_.SCALE,_.STARS].includes(e)){h=h??1,y=y??5,x=[];for(let o=h;o<=y;o++)x.push(o);G=x.length}else e===_.MULTIPLE_CHOICE&&(G=(P?P.length:0)+(l&&!L?1:0));const[be,Ae]=v.useState(-1),I=be===-1?-1:Math.min(be,G-1),Z=o=>{if(!o.target.closest('[role="radio"], [role="checkbox"], [role="radiogroup"], [role="group"]'))return;let k=null;if(o.key==="ArrowRight"||o.key==="ArrowDown"?k=1:(o.key==="ArrowLeft"||o.key==="ArrowUp")&&(k=-1),k!=null){o.preventDefault();const M=o.currentTarget.querySelectorAll('[role="radio"], [role="checkbox"]');let d=I+k;d<0?d=M.length-1:d>M.length-1&&(d=0),Ae(d),M[d].focus()}};let Y=null,ee=null;if(x&&(b||f||w)){const o=[];b&&o.push(x[0],b),w&&o.push(x[x.length-1],w),Y=t.createElement("div",{id:"a11y-scale-labels",className:"userflowjs-a11y-only"},o.join(", ")),ee=t.createElement("div",{id:"userflowjs-bubble-question-labels",className:"userflowjs-bubble-question__scale-labels","aria-hidden":"true"},t.createElement("div",{className:"userflowjs-bubble-question__scale-label"},b),f&&t.createElement("div",{className:"userflowjs-bubble-question__scale-label userflowjs-bubble-question__scale-label--center"},f),t.createElement("div",{className:"userflowjs-bubble-question__scale-label userflowjs-bubble-question__scale-label--right"},w))}let O;switch(e){case _.MULTILINE_TEXT:O=t.createElement(t.Fragment,null,t.createElement("textarea",{ref:N,className:"userflowjs-textarea userflowjs-bubble-question__textarea",value:p,onChange:o=>D(o.target.value),onKeyDown:o=>{(o.ctrlKey||o.metaKey)&&o.key==="Enter"&&T({answer:{kind:"text",value:p}})},placeholder:n||m("question.placeholder"),readOnly:c||g,tabIndex:c?-1:void 0,rows:3,"aria-required":r?"true":void 0,"aria-invalid":F!=null?"true":void 0}),de);break;case _.MULTIPLE_CHOICE:{const o=()=>{p&&T({answer:{kind:"text",value:p},animationPromise:V()})},S=(P?.length||0)+(l?1:0),k=Math.max(0,Math.min(S,h??1)),U=Math.max(0,Math.min(S,y??S)),M=()=>{const d=(P||[]).filter((z,q)=>B.has(q)).map(z=>z.value);if(l&&L&&p!==""&&d.push(p),k===U&&d.length!==k){C(m("question.multiple_selection_wrong",{count:k}));return}else if(d.length<k){C(m("question.multiple_selection_too_few",{count:k}));return}else if(d.length>U){C(m("question.multiple_selection_too_many",{count:U}));return}T({answer:{kind:"list",values:d}})};O=t.createElement(t.Fragment,null,a&&t.createElement("div",{className:$({"userflowjs-bubble-question__multiple-choice-hint":!0,"userflowjs-bubble-question__multiple-choice-hint--error":!!F})},m("question.multiple_selection_hint",{replace:{selected:B.size+(l&&L&&p!==""?1:0),range:k===U?k:`${k}-${U}`}}),F&&t.createElement(t.Fragment,null,". ",t.createElement("span",{role:"alert"},F))),t.createElement("div",{className:$({"userflowjs-bubble-question__multiple-choice":!0,"userflowjs-bubble-question__multiple-choice--single-selection":!a,"userflowjs-bubble-question__multiple-choice--multiple-selection":!!a}),role:a?"group":"radiogroup",tabIndex:!c&&I===-1?0:-1,onKeyDown:Z},P?.map(({value:d,label:z},q)=>t.createElement("button",{key:q,className:$({"userflowjs-bubble-question__multiple-choice-option":!0,"userflowjs-bubble-question__multiple-choice-option--selected":a?B.has(q):g&&!L&&p==d}),onClick:g?void 0:()=>{if(a){C(null);const te=new Set(B);B.has(q)?te.delete(q):te.add(q),qe(te)}else W(!1),D(d),T({answer:{kind:"text",value:d},animationPromise:V()})},disabled:g,tabIndex:!c&&q===I?0:-1,role:a?"checkbox":"radio","aria-label":z||d,"aria-checked":!L&&p==d},a?t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox"},t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox-inner"},t.createElement(J,{icon:K}))):t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio"},t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio-inner"})),t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-option-text","aria-hidden":"true"},z||d))),l&&(L?t.createElement("div",{className:$({"userflowjs-bubble-question__multiple-choice-option":!0,"userflowjs-bubble-question__multiple-choice-option--other":!0,"userflowjs-bubble-question__multiple-choice-option--selected":a?p!="":g})},a?t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox",onClick:()=>{D(""),W(!1)}},t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox-inner"},t.createElement(J,{icon:K}))):t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio"},t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio-inner"})),t.createElement("input",{ref:N,className:"userflowjs-bubble-question__multiple-choice-option-input",value:p,onChange:d=>D(d.target.value),onKeyDown:d=>{!d.shiftKey&&d.key==="Enter"?a?M():o():d.key==="Escape"&&(d.stopPropagation(),D(""),W(!1))},onBlur:()=>{p===""&&W(!1)},placeholder:n||m("question.placeholder"),readOnly:c||g,tabIndex:c?-1:void 0}),!a&&t.createElement("button",{"data-testid":"multiple-choice-other-submit",className:"userflowjs-bubble-question__multiple-choice-option-submit",onClick:()=>o(),disabled:g,"aria-label":m("question.submit")},t.createElement(J,{icon:K}))):t.createElement("button",{className:"userflowjs-bubble-question__multiple-choice-option",onClick:g?void 0:()=>{C(null),W(!0),fe(!0)},disabled:g,tabIndex:!c&&P?.length===I?0:-1,role:"radio","aria-label":m("question.other"),"aria-checked":"false"},a?t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox"},t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox-inner"},t.createElement(J,{icon:K}))):t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio"},t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio-inner"})),t.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-option-text","aria-hidden":"true"},m("question.other"))))),a&&t.createElement("div",{className:"userflowjs-bubble-buttons"},t.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--primary",onClick:M,tabIndex:c?-1:void 0,disabled:g},t.createElement("div",{className:"userflowjs-bubble-button-text",role:"presentation"},i||m("question.submit")))));break}case _.NPS:case _.SCALE:{O=t.createElement(t.Fragment,null,Y,t.createElement("div",{className:"userflowjs-bubble-question__scale-options",role:"radiogroup",tabIndex:!c&&I===-1?0:-1,onKeyDown:Z},x?.map((o,S)=>t.createElement("button",{className:$({"userflowjs-bubble-question__scale-option":!0,"userflowjs-bubble-question__scale-option--selected":g&&R==o}),key:o,tabIndex:!c&&S===I?0:-1,onClick:()=>{oe(o),T({answer:{kind:"number",value:o},animationPromise:V()})},disabled:g,role:"radio","aria-checked":R==o},o))),ee);break}case _.STARS:{O=t.createElement("div",{className:"userflowjs-bubble-question__stars-wrapper"},Y,t.createElement("div",{className:"userflowjs-bubble-question__stars",role:"radiogroup",tabIndex:!c&&I===-1?0:-1,onKeyDown:Z},x?.map((o,S)=>t.createElement("button",{className:$({"userflowjs-bubble-question__star":!0,"userflowjs-bubble-question__star--hovered":!g&&ue!=null&&ue>=o,"userflowjs-bubble-question__star--selected":g&&R!=null&&R>=o,"userflowjs-bubble-question__star--not-selected":g&&R!=null&&R<o}),key:o,tabIndex:!c&&S===I?0:-1,onClick:()=>{oe(o),T({answer:{kind:"number",value:o},animationPromise:V()})},onMouseOver:()=>ce(o),onMouseLeave:()=>ce(null),disabled:g,role:"radio","aria-checked":R==o,"aria-label":String(o)},t.createElement("div",{className:"userflowjs-bubble-question__star-icon","aria-hidden":"true"},t.createElement(Ke,null)),t.createElement("div",{className:"userflowjs-bubble-question__star-value","aria-hidden":"true"},o)))),ee);break}case _.TEXT:O=t.createElement(t.Fragment,null,t.createElement("input",{ref:N,className:"userflowjs-text-input userflowjs-bubble-question__text-input",value:p,onChange:o=>D(o.target.value),onKeyDown:o=>{!o.shiftKey&&o.key==="Enter"&&T({answer:{kind:"text",value:p}})},placeholder:n||m("question.placeholder"),readOnly:c||g,tabIndex:c?-1:void 0,"aria-required":r?"true":void 0,"aria-invalid":F!=null?"true":void 0}),de);break}return t.createElement("div",{className:"userflowjs-bubble-question",style:{pointerEvents:c?"none":void 0}},F&&!(e===_.MULTIPLE_CHOICE&&a)&&t.createElement("div",{className:"userflowjs-bubble-question__error",role:"alert"},F),O)};function V(){return new Promise(e=>window.setTimeout(e,250))}const He=({question:e})=>{const r=ye(),n=Be();return t.createElement(Ve,{type:e.type,required:!!e.required,placeholder:e.placeholder||"",buttonText:e.buttonText||"",options:e.options,otherOption:e.otherOption,multipleSelection:e.multipleSelection,shuffleOptions:e.shuffleOptions,labelLeft:e.labelLeft||"",labelCenter:e.labelCenter||"",labelRight:e.labelRight||"",minValue:e.minValue,maxValue:e.maxValue,onSubmit:async i=>{Oe("answerQuestion",n.id,e.cvid,i);const{answer:s}=i;try{await Promise.all([await r.send({kind:"AnswerQuestion",sessionId:n.id,questionName:e.name,questionCvid:e.cvid,textAnswer:s.kind=="text"?s.value:null,numberAnswer:s.kind=="number"?String(s.value):null,listAnswer:s.kind=="list"?s.values:null}),i.animationPromise])}catch(a){console.log("Userflow.js: Error when answering question:",a),i.onError();return}const{bindAttributeFqn:l}=e;if(l&&r.flowSession?.id===n.id){let a;switch(s.kind){case"text":a={name:l,value:s.value};break;case"number":a={name:l,value:String(s.value)};break;case"list":a={name:l,value:s.values};break}r.optimisticClockUIUpdate(()=>{r.setFlowSession({...n,data:[...n.data.filter(u=>u.name!==l),a]})})}ke(r,n,e.actions)}})},Qe=({text:e})=>{if(!e)return null;const r=e.split(/\n/);return r.length===1?t.createElement(t.Fragment,null,r[0]):t.createElement(t.Fragment,null,r.map((n,i)=>t.createElement(t.Fragment,{key:i},i>0&&t.createElement("br",null),n)))};function Xe(e=""){return{type:"rich2",children:[Ze(e)]}}function Ze(e=""){return{type:"paragraph",children:[{text:e}]}}function _e(e){if(e){let r;try{r=JSON.parse(e)}catch{throw new Error("Could not JSON.parse rich content doc: "+e)}if(r.type==="rich2")return r;throw new Error("Could not recognize rich content doc: "+e)}else return Xe()}function Ye(e=""){return{type:"plaintext2",children:[{type:"plaintext",children:[{text:e}]}]}}function et(e){if(e){let r;try{r=JSON.parse(e)}catch{throw new Error("Could not JSON.parse plaintext doc: "+e)}if(r.type==="plaintext2")return r;throw new Error("Could not recognize plaintext doc: "+e)}else return Ye()}function H(e,{lookupAttribute:r}){if(!e)return"";typeof e=="string"&&(e=et(e));const n=[];function i(l){if(ie(l)){l.text&&n.push(l.text);return}switch(l.type){case"attribute":{const a=Ce(l,r);a&&n.push(a);break}default:s(l.children);break}}function s(l){l&&l.forEach(a=>a&&i(a))}return s(e.children),n.join("")}function _t(e){let r=!0;if(!e)return!0;typeof e=="string"&&(e=_e(e));const n=new Set(["attribute","button","image","question","video"]);return Ie(e,i=>{if(ie(i)){i.text!==""&&(r=!1);return}"type"in i&&n.has(i.type)&&(r=!1)}),r}const xt=t.memo(({doc:e,...r})=>e?(typeof e=="string"&&(e=_e(e)),t.createElement(xe,{parent:e,...r})):null),xe=({parent:e,...r})=>t.createElement(t.Fragment,null,e.children.map((n,i)=>ie(n)?t.createElement(tt,{key:i,node:n}):t.createElement(rt,{key:i,node:n,parent:e,...r}))),tt=({node:e})=>e.text?t.createElement(Ne,{node:e},t.createElement(Qe,{text:e.text})):null,Ne=({node:e,children:r})=>(e.color&&typeof e.color=="string"&&(r=t.createElement("span",{style:{color:e.color}},r)),e.bold&&(r=t.createElement("b",null,r)),e.italic&&(r=t.createElement("i",null,r)),e.underline&&(r=t.createElement("u",null,r)),e.strikeThrough&&(r=t.createElement("s",null,r)),e.code&&(r=t.createElement("code",null,r)),e.small&&(r=t.createElement("small",null,r)),e.sup&&(r=t.createElement("sup",null,r)),r),rt=({node:e,parent:r,...n})=>{const{lookupAttribute:i}=n,s=t.createElement(xe,{parent:e,...n});switch(e.type){case"attribute":return t.createElement(nt,{node:e,...n});case"button":return t.createElement(st,{node:e,...n});case"button-group":return t.createElement("div",{className:"userflowjs-bubble-buttons",style:{justifyContent:e.align}},s);case"column":return t.createElement("div",{style:mt(e,r)},s);case"column-group":return t.createElement("div",{className:"p-like",style:ct(e)},s);case"container":return t.createElement("div",{className:"p-like"+(e.className?` ${e.className}`:""),style:ft(e)},s);case"image":return t.createElement(lt,{node:e,...n});case"link":return t.createElement("a",{href:H(e.href,{lookupAttribute:i}),target:e.target==="same"?"_top":"_blank",rel:"noopener noreferrer"},s);case"paragraph":return t.createElement("p",{className:se(e)},s);case"heading1":return t.createElement("h1",{className:se(e)},s);case"heading2":return t.createElement("h2",{className:se(e)},s);case"question":return t.createElement(at,{node:e,...n});case"quote":return t.createElement("blockquote",null,s);case"code-block":return t.createElement("pre",null,t.createElement("code",null,s));case"ordered-list":return t.createElement("ol",null,s);case"unordered-list":return t.createElement("ul",null,s);case"list-item":return t.createElement("li",null,s);case"video":return t.createElement(it,{node:e,...n});default:return t.createElement("div",null,s)}},nt=({node:e,lookupAttribute:r})=>{let n=Ce(e,r);return t.createElement(Ne,{node:e},n)},st=({node:e,buttons:r})=>{const n=r?.find(i=>i.cvid===e.cvid);return n?t.createElement(Je,{key:n.id,button:n}):null},at=({node:e,questions:r})=>{const n=r?.find(i=>i.cvid===e.cvid);return n?t.createElement(He,{key:n.id,question:n}):null},lt=({node:e,lookupAttribute:r})=>{const{src:n,widthMode:i,displayWidth:s,width:l,height:a,marginTop:u,marginRight:b,marginBottom:f,marginLeft:w,align:h,hasLink:y,href:E}=e;if(typeof n!="string"||!n)return null;const{wrapperStyle:c,blockStyle:m}=Se({widthMode:i,displayWidth:s,width:l,height:a,marginTop:u,marginRight:b,marginBottom:f,marginLeft:w,align:h});let N=t.createElement("img",{src:ve(n,p=>encodeURIComponent((r?r(p):"")||"")),style:{...m,objectFit:"contain"},alt:""});return y&&E&&(N=t.createElement("a",{href:H(E,{lookupAttribute:r}),target:e.target==="same"?"_top":"_blank",rel:"noopener noreferrer",style:m},N)),t.createElement("div",{className:"p-like"},t.createElement("div",{style:c},N))},it=({node:e,lookupAttribute:r})=>{const{url:n,widthMode:i,displayWidth:s,width:l,height:a,marginTop:u,marginRight:b,marginBottom:f,marginLeft:w,align:h}=e;if(typeof n!="string"||!n)return null;const{wrapperStyle:y,blockStyle:E}=Se({widthMode:i,displayWidth:s,width:l,height:a,marginTop:u,marginRight:b,marginBottom:f,marginLeft:w,align:h});return t.createElement("div",{className:"p-like"},t.createElement("div",{style:y},t.createElement("div",{style:E},t.createElement(ot,{element:e,noFocus:!0,lookupAttribute:r}))))},ot=({element:{embedType:e,url:r,src:n,autoPlay:i,controls:s,loop:l,muted:a},noFocus:u,forceMuted:b,lookupAttribute:f})=>{if(!r)return null;const w={width:"100%",height:"100%",allow:"accelerometer; autoplay; fullscreen; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,allowtransparency:"true",mozallowfullscreen:"true",webkitallowfullscreen:"true",oallowfullscreen:"true",msallowfullscreen:"true",style:{display:"block",border:"none"},tabIndex:u?-1:void 0};if(e==="video")return t.createElement("video",{key:r+";"+String(i)+";"+String(s)+";"+String(l)+";"+String(a),src:r,style:{width:"100%",height:"100%",display:"block"},autoPlay:!!i,controls:s!==!1,loop:l,muted:b||a});if(n){let m;try{m=new URL(n)}catch{return null}return b&&(m.searchParams.has("autoplay")||m.searchParams.has("autoPlay"))&&(m.searchParams.set("mute","1"),m.searchParams.set("muted","1"),m.searchParams.set("volume","0")),t.createElement("iframe",{src:m.toString(),...w})}let h=ut(r,{iframeFallback:!0});if(h.kind==="invalid")return null;const{videoProvider:y,videoId:E,searchParams:c}=h;switch(i=i||c.has("autoplay")||c.has("autoPlay"),y){case"iframe":return t.createElement("iframe",{src:ve(E,m=>encodeURIComponent((f?f(m):"")||"")),scrolling:c.get("scrolling")||void 0,...w});case"loom":return t.createElement("iframe",{src:`https://www.loom.com/embed/${E}?${c.toString()}`,...w});case"raw":return t.createElement("video",{src:E,controls:!0,style:{width:"100%",height:"100%",display:"block"},autoPlay:c.has("autoplay"),muted:b||c.has("muted")});case"youtube":return b&&i&&c.set("mute","1"),t.createElement("iframe",{src:`https://www.youtube.com/embed/${E}?${c.toString()}`,...w});case"vimeo":return b&&i&&c.set("muted","1"),t.createElement("iframe",{src:`https://player.vimeo.com/video/${E}?${c.toString()}`,...w});case"wistia":return c.set("videoFoam","true"),b&&i&&c.set("volume","0"),t.createElement(t.Fragment,null,t.createElement("iframe",{src:`https://fast.wistia.net/embed/iframe/${E}?${c.toString()}`,...w}))}};function ut(e,{iframeFallback:r}={}){let n;try{n=new URL(e)}catch{return{kind:"invalid"}}const{hostname:i,pathname:s,searchParams:l}=n;if(i.match(/^(www\.)?(use)?loom\.com$/)){const a=s.match(/^\/share\/([a-z0-9]+)$/i);if(a){const[,u]=a;return{kind:"ok",videoProvider:"loom",videoId:u,searchParams:l}}}if(e.startsWith("raw:"))return{kind:"ok",videoProvider:"raw",videoId:e.replace(/^raw:/,""),searchParams:l};if(e.startsWith("iframe:"))return{kind:"ok",videoProvider:"iframe",videoId:e.replace(/^iframe:/,""),searchParams:l};if(["youtube.com","www.youtube.com"].includes(i)){const a=l.get("v");if(a)return l.delete("v"),{kind:"ok",videoProvider:"youtube",videoId:a,searchParams:l}}if(i==="youtu.be"){const a=s.match(/^\/([^/]+)$/);if(a){const[,u]=a;return{kind:"ok",videoProvider:"youtube",videoId:u,searchParams:l}}}if(i==="vimeo.com"){const a=s.match(/^\/(\d+)$/);if(a){const[,u]=a;return{kind:"ok",videoProvider:"vimeo",videoId:u,searchParams:l}}}if(i==="player.vimeo.com"){const a=s.match(/^\/video\/([^/]+)$/);if(a){const[,u]=a;return{kind:"ok",videoProvider:"vimeo",videoId:u,searchParams:l}}}if(i.match(/^[^.]+\.wistia.com$/)){const a=s.match(/^\/medias\/([^/]+)$/);if(a){const[,u]=a;return{kind:"ok",videoProvider:"wistia",videoId:u,searchParams:l}}}return r?{kind:"ok",videoProvider:"iframe",videoId:e,searchParams:l}:{kind:"invalid"}}function se(e){return e.align==="right"?"userflowjs-text-align-end":e.align==="center"?"userflowjs-text-align-center":e.align==="justify"?"userflowjs-text-align-justify":""}function Se({widthMode:e,displayWidth:r,width:n,height:i,marginTop:s,marginRight:l,marginBottom:a,marginLeft:u,align:b}){const f={position:"relative"},w={position:"absolute",top:"0",left:"0",display:"block",width:"100%",height:"100%"};typeof r!="number"&&(r=100,e="percent"),b==="center"?(f.marginLeft="auto",f.marginRight="auto"):b==="right"&&(f.marginLeft="auto");let h=0;if(s!=null&&typeof s=="number"&&(f.marginTop=`${s}px`),l!=null&&typeof l=="number"&&(f.marginRight=`${l}px`,h+=l),a!=null&&typeof a=="number"&&(f.marginBottom=`${a}px`),u!=null&&typeof u=="number"&&(f.marginLeft=`${u}px`,h+=u),typeof r!="number"||typeof n!="number"||typeof i!="number")f.width="100px",f.height="100px";else if(e==="px"){const E=Math.max(10,r);f.width=`${E}px`,f.height=`${E/(n/i)}px`}else{const y=Math.max(0,Math.min(100,r));f.width=`calc(${y}% - ${h}px)`,f.height="0",f.paddingBottom=`calc((${y}% - ${h}px) / (${n} / ${i})`}return{wrapperStyle:f,blockStyle:w}}const je=16;function ct(e){return{display:"flex",alignItems:"stretch",marginRight:`-${e.spacing==null?je:e.spacing}px`}}function mt(e,r){const n=e.widthMode==="fill"||e.displayWidth==null;return{display:"flex",flexDirection:"column",justifyContent:e.justifyContent,width:n?void 0:e.widthMode==="px"?`${e.displayWidth||50}px`:e.widthMode==="percent"?`${e.displayWidth||50}%`:void 0,flex:n?"1 0 0":void 0,marginRight:`${r.spacing==null?je:r.spacing}px`,marginBottom:"0"}}function ft(e){return{display:"flex",flexDirection:"column",justifyContent:e.justifyContent,width:e.widthMode==="px"&&e.displayWidth!=null?`${e.displayWidth}px`:e.widthMode==="percent"&&e.displayWidth!=null?`${e.displayWidth}%`:void 0,minHeight:e.heightMode==="px"?`${e.displayHeight||50}px`:void 0,flex:e.heightMode==="fill"?"1 0 0":void 0,marginTop:e.marginTop!=null?`${e.marginTop}px`:void 0,marginRight:e.marginRight!=null?`${e.marginRight}px`:e.widthMode!=="fill"&&e.align==="center"?"auto":void 0,marginBottom:e.marginBottom!=null?`${e.marginBottom}px`:void 0,marginLeft:e.marginLeft!=null?`${e.marginLeft}px`:e.widthMode!=="fill"&&(e.align==="center"||e.align==="right")?"auto":void 0}}function Ce(e,r){if(!r)return null;const n=e.attributeName;if(typeof n=="string"){const i=r(n)||e.fallback;if(typeof i=="string")return i}return null}function Te(e){return Array.isArray(e.children)&&typeof e.addMark>"u"}function pe(e,r,n="type"){return Te(e)&&typeof e=="object"&&e[n]===r}function ie(e){return typeof e.text=="string"}function Ie(e,r){function n(s,l){r(s,l),Te(s)&&i(s.children)}function i(s){s&&s.forEach((l,a)=>l&&n(l,a))}i(Array.isArray(e)?e:e.children)}const Nt=t.memo(({doc:e,lookupAttribute:r})=>e?t.createElement(t.Fragment,null,H(e,{lookupAttribute:r})):null);function St(e,{buttons:r,questions:n}){const i=new Set,s=new Set;if(Ie(e,l=>{pe(l,"button")&&i.add(l.cvid),pe(l,"question")&&s.add(l.cvid)}),n){const l=n.filter(a=>!s.has(a.cvid));l.length>0&&(e={...e,children:[...e.children,...l.map(a=>({type:"question",cvid:a.cvid,children:[{text:""}]}))]})}if(r){const l=r.filter(a=>!i.has(a.cvid));l.length>0&&(e={...e,children:[...e.children,{type:"button-group",children:l.map(a=>({type:"button",cvid:a.cvid,children:[{text:""}]}))}]})}return e}function dt(e){return e=e||"default","userflowjs-bubble-button "+(e==="primary"||e==="PRIMARY"||e==="default"||e==="DEFAULT"||e==="banner-primary"||e==="banner-secondary"?`userflowjs-bubble-button--${e.toLowerCase()}`:e)}const jt=new URL("bubble-frame.css",import.meta.url).href;export{Je as B,xt as R,Me as S,Nt as a,jt as b,ze as c,_e as d,le as e,Ce as g,ke as h,ie as i,St as m,Ge as n,_t as r,H as s,he as u};
11
11
  //# sourceMappingURL=bubble-frame.styl.js.map