userflow.js-self-hosted 0.1.1023312 → 0.1.1023316
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ResourceCenterAssistantChat.js +4 -4
- package/SitePage.js +1 -1
- package/WorkflowApp.js +1 -1
- package/bubble-frame.css +21 -2
- package/client-context.js +1 -1
- package/hash.txt +1 -1
- package/package.json +1 -1
- package/site.css +21 -2
- package/stylesheets.js +1 -1
- package/ui.js +1 -1
- package/use-selector-element-monitoring.js +1 -1
- package/userflow.js +4 -4
- package/vendor.core-js.js +1 -1
- package/vendor.fortawesome.pro-regular-svg-icons.js +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{r as u,R as s}from"./vendor.react.js";import{ah as Ie,ai as _,aj as K,H as X,X as Z}from"./userflow.js";import{u as Ce}from"./client-context.js";import{a2 as je,K as Me,a5 as ee,a6 as te,a7 as Re,a8 as U,a9 as z,aa as se,ab as ne,ac as ae}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{p as Ne}from"./vendor.dompurify.js";import{m as Fe}from"./vendor.marked.js";import{o as P}from"./vendor.obj-str.js";import{A as ve,d as Ae,G as ye}from"./ResourceCenterApp.js";import{r as ue,R as fe,s as xe,n as Le}from"./TreeDoc.js";import{D as A}from"./stylesheets.js";import{U as de}from"./roots.js";import{r as re}from"./vendor.react-dom.js";import{S as He}from"./AnnouncementEngagement.js";import"./vendor.core-js.js";import{g as oe}from"./flow-condition-types.js";import{u as Te}from"./vendor.react-i18next.js";import"./vendor.object-assign.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";import"./vendor.i18next.js";import"./vendor.babel.runtime.js";import"./flow-host.styl.js";import"./use-selector-element-monitoring.js";import"./Frame.js";import"./iframe-reset.styl.js";import"./use-window-resize.js";import"./logomark.js";import"./ChecklistUI.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./FlowChrome.js";import"./use-confetti.js";import"./vendor.canvas-confetti.js";import"./vendor.memoize-one.js";import"./vendor.bignumber.js.js";import"./use-element-rect.js";import"./vendor.scheduler.js";import"./vendor.date-fns.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]="9295ff4a-0450-4092-a638-6793f7b5a0b3",t._sentryDebugIdIdentifier="sentry-dbid-9295ff4a-0450-4092-a638-6793f7b5a0b3")}catch{}})();function De(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 le=[];function Ke({assistant:t,lookupAttribute:e,initialConversationId:r,initialHistory:c,initialUserContent:p,onConversationIdChange:f,submitMessage:h,submitRating:m,submitFeedback:i,InsideMessage:o,onContactClick:d,contactButtonText:l,onFlowSuggestionClick:g}){const[a,b]=u.useState(null),[w,C]=u.useState(()=>c?c.map(n=>({...n,assistantHtml:x(G(n.assistantContent),!1)})):le),[R,L]=u.useState(""),j=u.useRef(null),k=u.useRef(null),S=u.useRef(!0),I=u.useRef(r||null),[H,he]=u.useState(I.current),W=u.useCallback(n=>{I.current=n,he(n),f&&f(n)},[f]),$=u.useCallback(()=>{a?.focus({preventScroll:!0})},[a]);u.useEffect(()=>{$()},[$]),u.useLayoutEffect(()=>{const n=k.current;n&&(n.scrollTop=Math.ceil(n.scrollHeight-n.clientHeight))},[]);const B=u.useCallback(()=>{const n=k.current;n&&(S.current=!0,typeof n.scrollTo=="function"&&n.scrollTo({top:Math.ceil(n.scrollHeight-n.clientHeight),behavior:"smooth"}))},[]),Y=u.useRef(0);u.useLayoutEffect(()=>{const n=k.current;n&&n.scrollHeight!==Y.current&&(Y.current=n.scrollHeight,S.current&&B())},[w,B]);const y=u.useCallback(()=>{j.current&&j.current()},[]);u.useEffect(()=>()=>{y()},[y]);const q=(n,N)=>{C(F=>F.map(M=>{if(n===M.id){const v=N(M);return{...M,...v}}else return M}))},T=n=>{C(N=>N.map((F,M)=>{if(M===N.length-1){const v=n(F);return{...F,...v}}else return F}))},O=u.useCallback(n=>{const{userContent:N,workflow:F}=n;y(),C(E=>[...E,{id:null,userContent:N??"",assistantContent:"",assistantFallbackContent:null,assistantHtml:x("","enter"),enterAnimation:!0,sources:[],flowSuggestions:[],completed:!1,rating:null,scaleRating:null,scaleMax:null,feedbackSubmitted:!1,handover:null}]),B();let M=!1;const v=()=>{M=!0,j.current=null},Se=h({conversationId:I.current,userContent:N??"",workflow:F,callback:E=>{if(M){console.log("Userflow.js AssistantChat got message after being done",E);return}switch(E.kind){case"conversation_created":W(E.conversationId);break;case"message_created":T(()=>({id:E.messageId,warning:E.warning}));break;case"assistant_content_delta":T(D=>{const V=D.assistantContent+E.delta;return{assistantContent:V,assistantHtml:x(G(V))}});break;case"done":v(),T(D=>({assistantHtml:x(D.assistantContent,"exit"),assistantFallbackContent:E.fallbackContent,flowSuggestions:E.flowSuggestions,completed:!0,sources:E.sources}));break;case"error":v(),T(D=>({failed:!0,error:E.message,assistantHtml:x(G(D.assistantContent),!1)}));break;default:console.log("Userflow.js AssistantChat got unknown message",E)}}});j.current=()=>{v(),Se.abort(),T(E=>({assistantHtml:x(G(E.assistantContent),!1)}))}},[y,B,W,h]),J=u.useCallback(n=>{n=n.trim(),n!==""&&(L(""),O({userContent:n}))},[O]),Q=u.useRef(!1);u.useEffect(()=>{Q.current||(Q.current=!0,p&&J(p))},[J,p]);const pe=u.useCallback(n=>{O({userContent:"Hey, can you please fill in the field",workflow:n})},[O]),be=u.useCallback(()=>{y(),W(null),C(le),$()},[y,$,W]),[Ee,_e]=u.useState(!0),we=u.useCallback(()=>{const n=k.current;n&&_e(n.scrollTop===0)},[]),ke=u.useCallback(()=>{const n=k.current;n&&(S.current=Math.ceil(n.scrollHeight-n.clientHeight)==Math.ceil(n.scrollTop))},[]);return{assistant:t,lookupAttribute:e,history:w,setInput:b,contentElRef:k,scrolledToTop:Ee,userContent:R,setUserContent:L,onSubmitMessage:J,supportsFeedback:!!m&&!!i,onSubmitRating:n=>{if(m){switch(n.ratingMode){case _.LIKE:q(n.messageId,()=>({rating:n.rating}));break;case _.SCALE:q(n.messageId,()=>({scaleRating:n.scaleRating,scaleMax:n.scaleMax}));break;default:throw new de(n)}m(n)}},onSubmitFeedback:n=>{i&&(q(n.messageId,()=>({feedbackSubmitted:!0})),i(n))},onFlowSuggestionClick:g,InsideMessage:o,onContactClick:d,contactButtonText:l,reset:be,onContentScroll:we,onContentWheel:ke,conversationId:H,startWorkflowFill:pe}}const Pe=({assistant:t,lookupAttribute:e,history:r,setInput:c,contentElRef:p,scrolledToTop:f,userContent:h,setUserContent:m,onSubmitMessage:i,supportsFeedback:o,onSubmitRating:d,onSubmitFeedback:l,onFlowSuggestionClick:g,InsideMessage:a,onContactClick:b,contactButtonText:w,reset:C,onContentScroll:R,onContentWheel:L,conversationId:j})=>{const k=r.some(S=>S.completed||S.failed);return s.createElement("div",{className:"userflowjs-assistant-chat"},s.createElement("div",{className:P({"userflowjs-assistant-chat__header":!0,"userflowjs-assistant-chat__header--content-scrolled":!f})}),s.createElement("div",{className:P({"userflowjs-assistant-chat__header":!0,"userflowjs-assistant-chat__header--content-scrolled":!f})},s.createElement(s.Fragment,null,s.createElement("h2",{className:"userflowjs-assistant-chat__title"},t.title),s.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--default",onClick:C},t.resetText))),s.createElement("div",{ref:p,className:"userflowjs-assistant-chat__content",onScroll:R,onWheel:L},!ue(t.intro)&&s.createElement("div",{className:"userflowjs-assistant-chat__intro"},s.createElement(fe,{doc:t.intro,lookupAttribute:e})),r.map((S,I)=>s.createElement(We,{key:I,assistant:t,message:S,supportsFeedback:o,onSubmitRating:d,onSubmitFeedback:l,InsideMessage:a,conversationId:j,isLast:I===r.length-1,onFlowSuggestionClick:g}))),s.createElement("div",{className:"userflowjs-assistant-chat__prompt"},s.createElement(ve,{textareaRef:c,placeholder:(r.length===0?t.promptEmptyPlaceholder:t.promptNonemptyPlaceholder)||"",value:h,onChange:m,onSubmit:()=>i(h)})),k&&b&&s.createElement("div",{className:"userflowjs-assistant-chat__contact"},s.createElement("button",{className:"userflowjs-tertiary-button",onClick:()=>b()},w)))},We=({assistant:t,message:e,supportsFeedback:r,onSubmitRating:c,onSubmitFeedback:p,onFlowSuggestionClick:f,InsideMessage:h,conversationId:m,isLast:i})=>{const o=!ue(e.assistantFallbackContent),d=e.flowSuggestions[0],[l,g]=u.useState(!1),a=async()=>{try{g(!0),await f({messageId:e.id,flowSuggestion:d})}finally{g(!1)}};return s.createElement("div",{className:"userflowjs-assistant-chat__message"},h&&s.createElement(h,{message:e}),s.createElement("div",{className:P({"userflowjs-assistant-chat__user-content":!0,"userflowjs-assistant-chat__user-content--enter":!!e.enterAnimation}),"data-assistant-conversation-id":m,"data-assistant-message-id":e.id},s.createElement("div",{style:{whiteSpace:"pre-wrap"}},e.userContent)),e.warning&&s.createElement("div",{className:"userflowjs-assistant-chat__error"},"Warning: ",e.warning),s.createElement("div",{className:"userflowjs-assistant-chat__assistant-content"},o&&s.createElement("div",null,s.createElement(fe,{doc:e.assistantFallbackContent})),!o&&s.createElement("div",null,s.createElement(Be,{html:e.assistantHtml})),e.error&&s.createElement("div",{className:"userflowjs-assistant-chat__error"},e.error)),e.id&&d&&s.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--default userflowjs-assistant-chat__flow-suggestion",onClick:a},s.createElement("span",{className:"userflowjs-assistant-chat__flow-suggestion-content"},!l&&d.iconSetting!==Ie.HIDE&&(d.icon?s.createElement(A,{icon:d.icon,size:20}):s.createElement(A,{icon:je,size:20})),l&&s.createElement(He,null),s.createElement("span",{className:"userflowjs-assistant-chat__flow-suggestion-title"},d.name)),s.createElement(A,{icon:Me})),e.sources&&e.sources.length>0&&s.createElement("div",{className:"userflowjs-assistant-chat__sources"},s.createElement("div",{className:"userflowjs-assistant-chat__sources-title"},t.sourcesText),e.sources.map((b,w)=>s.createElement("a",{key:w,className:"userflowjs-assistant-chat__source",href:Ae(b.url),target:"_blank",rel:"noreferrer noopener"},b.title))),r&&e.completed&&e.id&&(t.ratingMode===_.LIKE||t.ratingMode===_.SCALE&&i)&&s.createElement($e,{assistant:t,message:e,onSubmitRating:c,onSubmitFeedback:p}))},$e=({assistant:t,message:e,onSubmitRating:r,onSubmitFeedback:c})=>{const p=u.useRef(null),[f,h]=u.useState(""),m=l=>{const g=e.id;g&&(re.flushSync(()=>{r({ratingMode:_.LIKE,messageId:g,rating:l})}),p.current?.focus({preventScroll:!0}))},i=l=>{const g=e.id;g&&(re.flushSync(()=>{r({ratingMode:_.SCALE,messageId:g,scaleRating:l,scaleMax:t.scaleMax})}),p.current?.focus({preventScroll:!0}))},o=()=>{e.id&&(c({messageId:e.id,feedback:f.trim()}),h(""))},d=t.ratingMode===_.LIKE?s.createElement("button",{className:"userflowjs-assistant-chat__rating-option",disabled:!0},s.createElement(A,{icon:e.rating==K.DISLIKE?ee:te})):e.scaleRating&&e.scaleMax&&s.createElement("button",{className:P({"userflowjs-assistant-chat__rating-option":!0,"userflowjs-assistant-chat__rating-option--scale":!0}),disabled:!0},ge(t,e.scaleRating,e.scaleMax));return s.createElement("div",{className:`userflowjs-assistant-chat__rating userflowjs-assistant-chat__rating--${t.ratingMode}`},t.ratingMode===_.SCALE&&s.createElement("div",{className:"userflowjs-assistant-chat__rating-question"},t.scaleQuestion),e.feedbackSubmitted?s.createElement("div",{className:"userflowjs-assistant-chat__rating-thanks"},d,s.createElement("div",{className:"userflowjs-assistant-chat__rating-thanks-message"},t.feedbackThanksText)):(t.ratingMode===_.LIKE?e.rating:e.scaleRating)?s.createElement(ye,{textareaRef:p,className:"userflowjs-growing-textarea userflowjs-assistant-chat__feedback-textarea",mirrorClassName:"userflowjs-growing-textarea__mirror",textareaClassName:"userflowjs-textarea",placeholder:(t.ratingMode===_.LIKE?e.rating===K.LIKE?t.feedbackLikePlaceholder:t.feedbackDislikePlaceholder:t.scaleFeedbackPlaceholder)||"",value:f,onChange:h,onKeyDown:l=>{!l.shiftKey&&l.key==="Enter"&&(l.preventDefault(),o())}},d,s.createElement("button",{className:"userflowjs-assistant-chat__feedback-submit",onClick:()=>o()},s.createElement(A,{icon:Re}))):s.createElement("div",{className:"userflowjs-assistant-chat__rating-options"},t.ratingMode===_.LIKE?[K.LIKE,K.DISLIKE].map(l=>(!e.rating||e.rating===l)&&s.createElement("button",{key:l,className:"userflowjs-assistant-chat__rating-option",onClick:e.rating?void 0:()=>m(l),disabled:!!e.rating,"data-testid":`assistant-chat-rating-${l}`},s.createElement(A,{icon:l==K.DISLIKE?ee:te}))):Oe(t).map(({value:l,label:g})=>s.createElement("button",{key:l,className:P({"userflowjs-assistant-chat__rating-option":!0,"userflowjs-assistant-chat__rating-option--large-scale":De(g||"")}),onClick:e.scaleRating?void 0:()=>i(l),disabled:!!e.scaleRating,"data-testid":`assistant-chat-rating-${l}`},g))))};function G(t){let e=t;const r=f=>(f=f.replace(/\s*[*_`]*$/,""),f=f.replace(/(^|\n)\s*(\d+\.?|-|=)$/,""),f);e=r(e),e=e.replace(/\[([^\]\n]*)(\](\([^)\n]*)?)?$/,"$1"),e=r(e);const c=Array.from(e.matchAll(/\n( *)```/g));if(c.length%2===1){const f=c[c.length-1][1];e+=`
|
|
2
|
-
`+f+"```"}else{let f=0;for(let
|
|
3
|
-
`&&e[
|
|
4
|
-
`){f=
|
|
1
|
+
import{r as c,R as s}from"./vendor.react.js";import{ah as Ce,ai as Z,aj as _,ak as W,H as ee,X as te}from"./userflow.js";import{u as Me}from"./client-context.js";import{a3 as Ne,K as Re,a6 as se,a7 as ne,a8 as Fe,a9 as z,aa as q,ab as ae,ac as re,ad as oe}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{p as ve}from"./vendor.dompurify.js";import{m as ye}from"./vendor.marked.js";import{o as $}from"./vendor.obj-str.js";import{A as Ae,d as Le,G as xe}from"./ResourceCenterApp.js";import{r as de,R as me,s as Te,n as He}from"./TreeDoc.js";import{D as x}from"./stylesheets.js";import{U as ge}from"./roots.js";import{r as le}from"./vendor.react-dom.js";import{S as De}from"./AnnouncementEngagement.js";import"./vendor.core-js.js";import{u as he}from"./vendor.react-i18next.js";import{g as ce}from"./flow-condition-types.js";import"./vendor.object-assign.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";import"./vendor.i18next.js";import"./vendor.babel.runtime.js";import"./flow-host.styl.js";import"./use-selector-element-monitoring.js";import"./Frame.js";import"./iframe-reset.styl.js";import"./use-window-resize.js";import"./logomark.js";import"./ChecklistUI.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./FlowChrome.js";import"./use-confetti.js";import"./vendor.canvas-confetti.js";import"./vendor.memoize-one.js";import"./vendor.bignumber.js.js";import"./use-element-rect.js";import"./vendor.scheduler.js";import"./vendor.date-fns.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]="22783ca4-2907-4a65-a7db-68115fa592c0",t._sentryDebugIdIdentifier="sentry-dbid-22783ca4-2907-4a65-a7db-68115fa592c0")}catch{}})();function Ke(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 ie=[];function Pe({assistant:t,lookupAttribute:e,initialConversationId:r,initialHistory:i,initialUserContent:g,onConversationIdChange:f,submitMessage:h,submitRating:d,submitFeedback:u,InsideMessage:l,onContactClick:p,contactButtonText:o,onFlowSuggestionClick:m}){const[a,b]=c.useState(null),[k,S]=c.useState(()=>i?i.map(n=>({...n,assistantHtml:H(G(n.assistantContent),!1)})):ie),[N,D]=c.useState(""),j=c.useRef(null),E=c.useRef(null),R=c.useRef(!0),I=c.useRef(r||null),[C,F]=c.useState(I.current),v=c.useCallback(n=>{I.current=n,F(n),f&&f(n)},[f]),O=c.useCallback(()=>{a?.focus({preventScroll:!0})},[a]);c.useEffect(()=>{O()},[O]),c.useLayoutEffect(()=>{const n=E.current;n&&(n.scrollTop=Math.ceil(n.scrollHeight-n.clientHeight))},[]);const B=c.useCallback(()=>{const n=E.current;n&&(R.current=!0,typeof n.scrollTo=="function"&&n.scrollTo({top:Math.ceil(n.scrollHeight-n.clientHeight),behavior:"smooth"}))},[]),Q=c.useRef(0);c.useLayoutEffect(()=>{const n=E.current;n&&n.scrollHeight!==Q.current&&(Q.current=n.scrollHeight,R.current&&B())},[k,B]);const T=c.useCallback(()=>{j.current&&j.current()},[]);c.useEffect(()=>()=>{T()},[T]);const Y=(n,y)=>{S(A=>A.map(M=>{if(n===M.id){const L=y(M);return{...M,...L}}else return M}))},K=n=>{S(y=>y.map((A,M)=>{if(M===y.length-1){const L=n(A);return{...A,...L}}else return A}))},U=c.useCallback(n=>{const{userContent:y,workflow:A}=n;T(),S(w=>[...w,{id:null,userContent:y??"",assistantContent:"",assistantFallbackContent:null,assistantHtml:H("","enter"),enterAnimation:!0,sources:[],flowSuggestions:[],completed:!1,rating:null,scaleRating:null,scaleMax:null,feedbackSubmitted:!1,handover:null}]),B();let M=!1;const L=()=>{M=!0,j.current=null},je=h({conversationId:I.current,userContent:y??"",workflow:A,callback:w=>{if(M){console.log("Userflow.js AssistantChat got message after being done",w);return}switch(w.kind){case"conversation_created":v(w.conversationId);break;case"message_created":K(()=>({id:w.messageId,warning:w.warning}));break;case"assistant_content_delta":K(P=>{const X=P.assistantContent+w.delta;return{assistantContent:X,assistantHtml:H(G(X))}});break;case"done":L(),K(P=>({assistantHtml:H(P.assistantContent,"exit"),assistantFallbackContent:w.fallbackContent,flowSuggestions:w.flowSuggestions,completed:!0,sources:w.sources}));break;case"error":L(),K(P=>({failed:!0,error:w.message,assistantHtml:H(G(P.assistantContent),!1)}));break;default:console.log("Userflow.js AssistantChat got unknown message",w)}}});j.current=()=>{L(),je.abort(),K(w=>({assistantHtml:H(G(w.assistantContent),!1)}))}},[T,B,v,h]),J=c.useCallback(n=>{n=n.trim(),n!==""&&(D(""),U({userContent:n}))},[U]),V=c.useRef(!1);c.useEffect(()=>{V.current||(V.current=!0,g&&J(g))},[J,g]);const we=c.useCallback(n=>{U({userContent:"Hey, can you please fill in the field",workflow:n})},[U]),Ee=c.useCallback(()=>{T(),v(null),S(ie),O()},[T,O,v]),[_e,ke]=c.useState(!0),Se=c.useCallback(()=>{const n=E.current;n&&ke(n.scrollTop===0)},[]),Ie=c.useCallback(()=>{const n=E.current;n&&(R.current=Math.ceil(n.scrollHeight-n.clientHeight)==Math.ceil(n.scrollTop))},[]);return{assistant:t,lookupAttribute:e,history:k,setInput:b,contentElRef:E,scrolledToTop:_e,userContent:N,setUserContent:D,onSubmitMessage:J,supportsFeedback:!!d&&!!u,onSubmitRating:n=>{if(d){switch(n.ratingMode){case _.LIKE:Y(n.messageId,()=>({rating:n.rating}));break;case _.SCALE:Y(n.messageId,()=>({scaleRating:n.scaleRating,scaleMax:n.scaleMax}));break;default:throw new ge(n)}d(n)}},onSubmitFeedback:n=>{u&&(Y(n.messageId,()=>({feedbackSubmitted:!0})),u(n))},onFlowSuggestionClick:m,InsideMessage:l,onContactClick:p,contactButtonText:o,reset:Ee,onContentScroll:Se,onContentWheel:Ie,conversationId:C,startWorkflowFill:we}}const We=({assistant:t,lookupAttribute:e,history:r,setInput:i,contentElRef:g,scrolledToTop:f,userContent:h,setUserContent:d,onSubmitMessage:u,supportsFeedback:l,onSubmitRating:p,onSubmitFeedback:o,onFlowSuggestionClick:m,InsideMessage:a,onContactClick:b,contactButtonText:k,reset:S,onContentScroll:N,onContentWheel:D,conversationId:j})=>{const{t:E}=he(),R=r.some(F=>F.completed||F.failed),[I,C]=c.useState(null);return s.createElement("div",{className:"userflowjs-assistant-chat"},s.createElement("div",{className:$({"userflowjs-assistant-chat__header":!0,"userflowjs-assistant-chat__header--content-scrolled":!f})}),s.createElement("div",{className:$({"userflowjs-assistant-chat__header":!0,"userflowjs-assistant-chat__header--content-scrolled":!f})},s.createElement(s.Fragment,null,s.createElement("h2",{className:"userflowjs-assistant-chat__title"},t.title),s.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--default",onClick:S},t.resetText))),s.createElement("div",{ref:g,className:"userflowjs-assistant-chat__content",onScroll:N,onWheel:D},!de(t.intro)&&s.createElement("div",{className:"userflowjs-assistant-chat__intro"},s.createElement(me,{doc:t.intro,lookupAttribute:e})),r.map((F,v)=>s.createElement($e,{key:v,assistant:t,message:F,supportsFeedback:l,onSubmitRating:p,onSubmitFeedback:o,InsideMessage:a,conversationId:j,isLast:v===r.length-1,onFlowSuggestionClick:m,onRequestConfirm:C}))),I?s.createElement("div",{className:"userflowjs-bubble-buttons userflowjs-assistant-chat__confirm"},s.createElement("p",{className:"userflowjs-assistant-chat__confirm-text"},E("resource_center.confirm_action")),s.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--default",onClick:()=>C(null)},E("resource_center.deny")),s.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--primary",onClick:async()=>{const F=I;C(null),await m(F)}},E("resource_center.allow"))):s.createElement("div",{className:"userflowjs-assistant-chat__prompt"},s.createElement(Ae,{textareaRef:i,placeholder:(r.length===0?t.promptEmptyPlaceholder:t.promptNonemptyPlaceholder)||"",value:h,onChange:d,onSubmit:()=>u(h)})),R&&b&&s.createElement("div",{className:"userflowjs-assistant-chat__contact"},s.createElement("button",{className:"userflowjs-tertiary-button",onClick:()=>b()},k)))},$e=({assistant:t,message:e,supportsFeedback:r,onSubmitRating:i,onSubmitFeedback:g,onFlowSuggestionClick:f,onRequestConfirm:h,InsideMessage:d,conversationId:u,isLast:l})=>{const p=!de(e.assistantFallbackContent),o=e.flowSuggestions[0],[m,a]=c.useState(!1),b=async()=>{if(o.flowType===Z.WORKFLOW){h({messageId:e.id,flowSuggestion:o});return}try{a(!0),await f({messageId:e.id,flowSuggestion:o})}finally{a(!1)}};return s.createElement("div",{className:"userflowjs-assistant-chat__message"},d&&s.createElement(d,{message:e}),s.createElement("div",{className:$({"userflowjs-assistant-chat__user-content":!0,"userflowjs-assistant-chat__user-content--enter":!!e.enterAnimation}),"data-assistant-conversation-id":u,"data-assistant-message-id":e.id},s.createElement("div",{style:{whiteSpace:"pre-wrap"}},e.userContent)),e.warning&&s.createElement("div",{className:"userflowjs-assistant-chat__error"},"Warning: ",e.warning),s.createElement("div",{className:"userflowjs-assistant-chat__assistant-content"},p&&s.createElement("div",null,s.createElement(me,{doc:e.assistantFallbackContent})),!p&&s.createElement("div",null,s.createElement(Be,{html:e.assistantHtml})),e.error&&s.createElement("div",{className:"userflowjs-assistant-chat__error"},e.error)),e.id&&o&&s.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--default userflowjs-assistant-chat__flow-suggestion",onClick:b},s.createElement("span",{className:"userflowjs-assistant-chat__flow-suggestion-content"},!m&&o.iconSetting!==Ce.HIDE&&(o.icon?s.createElement(x,{icon:o.icon,size:20}):s.createElement(x,{icon:Ne,size:20})),m&&s.createElement(De,null),s.createElement("div",{className:"userflowjs-assistant-chat__flow-suggestion-title"},s.createElement("span",null,o.name),o.flowType===Z.FLOW?s.createElement("span",{className:"userflowjs-assistant-chat__flow-suggestion-info"},"You will be guided through the process"):s.createElement("span",{className:"userflowjs-assistant-chat__flow-suggestion-info"},"The action will be performed on your behalf"))),s.createElement(x,{size:32,icon:Re})),e.sources&&e.sources.length>0&&s.createElement("div",{className:"userflowjs-assistant-chat__sources"},s.createElement("div",{className:"userflowjs-assistant-chat__sources-title"},t.sourcesText),e.sources.map((k,S)=>s.createElement("a",{key:S,className:"userflowjs-assistant-chat__source",href:Le(k.url),target:"_blank",rel:"noreferrer noopener"},k.title))),r&&e.completed&&e.id&&(t.ratingMode===_.LIKE||t.ratingMode===_.SCALE&&l)&&s.createElement(Oe,{assistant:t,message:e,onSubmitRating:i,onSubmitFeedback:g}))},Oe=({assistant:t,message:e,onSubmitRating:r,onSubmitFeedback:i})=>{const g=c.useRef(null),[f,h]=c.useState(""),d=o=>{const m=e.id;m&&(le.flushSync(()=>{r({ratingMode:_.LIKE,messageId:m,rating:o})}),g.current?.focus({preventScroll:!0}))},u=o=>{const m=e.id;m&&(le.flushSync(()=>{r({ratingMode:_.SCALE,messageId:m,scaleRating:o,scaleMax:t.scaleMax})}),g.current?.focus({preventScroll:!0}))},l=()=>{e.id&&(i({messageId:e.id,feedback:f.trim()}),h(""))},p=t.ratingMode===_.LIKE?s.createElement("button",{className:"userflowjs-assistant-chat__rating-option",disabled:!0},s.createElement(x,{icon:e.rating==W.DISLIKE?se:ne})):e.scaleRating&&e.scaleMax&&s.createElement("button",{className:$({"userflowjs-assistant-chat__rating-option":!0,"userflowjs-assistant-chat__rating-option--scale":!0}),disabled:!0},be(t,e.scaleRating,e.scaleMax));return s.createElement("div",{className:`userflowjs-assistant-chat__rating userflowjs-assistant-chat__rating--${t.ratingMode}`},t.ratingMode===_.SCALE&&s.createElement("div",{className:"userflowjs-assistant-chat__rating-question"},t.scaleQuestion),e.feedbackSubmitted?s.createElement("div",{className:"userflowjs-assistant-chat__rating-thanks"},p,s.createElement("div",{className:"userflowjs-assistant-chat__rating-thanks-message"},t.feedbackThanksText)):(t.ratingMode===_.LIKE?e.rating:e.scaleRating)?s.createElement(xe,{textareaRef:g,className:"userflowjs-growing-textarea userflowjs-assistant-chat__feedback-textarea",mirrorClassName:"userflowjs-growing-textarea__mirror",textareaClassName:"userflowjs-textarea",placeholder:(t.ratingMode===_.LIKE?e.rating===W.LIKE?t.feedbackLikePlaceholder:t.feedbackDislikePlaceholder:t.scaleFeedbackPlaceholder)||"",value:f,onChange:h,onKeyDown:o=>{!o.shiftKey&&o.key==="Enter"&&(o.preventDefault(),l())}},p,s.createElement("button",{className:"userflowjs-assistant-chat__feedback-submit",onClick:()=>l()},s.createElement(x,{icon:Fe}))):s.createElement("div",{className:"userflowjs-assistant-chat__rating-options"},t.ratingMode===_.LIKE?[W.LIKE,W.DISLIKE].map(o=>(!e.rating||e.rating===o)&&s.createElement("button",{key:o,className:"userflowjs-assistant-chat__rating-option",onClick:e.rating?void 0:()=>d(o),disabled:!!e.rating,"data-testid":`assistant-chat-rating-${o}`},s.createElement(x,{icon:o==W.DISLIKE?se:ne}))):Ue(t).map(({value:o,label:m})=>s.createElement("button",{key:o,className:$({"userflowjs-assistant-chat__rating-option":!0,"userflowjs-assistant-chat__rating-option--large-scale":Ke(m||"")}),onClick:e.scaleRating?void 0:()=>u(o),disabled:!!e.scaleRating,"data-testid":`assistant-chat-rating-${o}`},m))))};function G(t){let e=t;const r=f=>(f=f.replace(/\s*[*_`]*$/,""),f=f.replace(/(^|\n)\s*(\d+\.?|-|=)$/,""),f);e=r(e),e=e.replace(/\[([^\]\n]*)(\](\([^)\n]*)?)?$/,"$1"),e=r(e);const i=Array.from(e.matchAll(/\n( *)```/g));if(i.length%2===1){const f=i[i.length-1][1];e+=`
|
|
2
|
+
`+f+"```"}else{let f=0;for(let l=e.length-1;l>=0;l--)if(e[l]===`
|
|
3
|
+
`&&e[l-1]===`
|
|
4
|
+
`){f=l;break}const h=[];let d=!1;const u=l=>l==null||l.match(/\W/);for(let l=f;l<e.length;l++){const p=e[l],o=p+e[l+1],m=o+e[l+2];let a=null;!d&&m==="***"||!d&&m==="___"&&(u(e[l-1])||u(e[l+3]))?a=m:!d&&o==="**"||!d&&o==="__"&&(u(e[l-1])||u(e[l+2]))?a=o:(!d&&p==="*"||!d&&p==="_"&&(u(e[l-1])||u(e[l+1]))||p==="`")&&(a=p),a!=null&&(e.slice(f,l+a.length).match(/\[[^\]\n]*\]\([^)\n]*$/)||(h[h.length-1]===a?(a==="`"&&(d=!1),h.pop()):(a==="`"&&(d=!0),h.push(a))),l+=a.length-1)}e+=h.reverse().join("")}return e}function H(t,e){t=t.trim(),e!==!1&&(t=t.replace(/(\n *```)?$/," {{USERFLOWCHATBRAIN}}$1"));let r=ve.sanitize(ye.parse(t));if(e!==!1){let i="userflowjs-assistant-brain";e&&(i+=` userflowjs-assistant-brain--${e}`),r=r.replace("{{USERFLOWCHATBRAIN}}",`<span class="${i}"><span></span><span></span><span></span><span></span></span>`)}return r=r.replace(/<a href=/g,'<a target="_blank" rel="noopener noreferrer" href='),r}const Be=({html:t})=>c.useMemo(()=>{if(!t)return null;const r=new DOMParser().parseFromString(t,"text/html");return pe(r.body)},[t]);function pe(t,e){if(t instanceof Element){if(t.tagName==="BODY")return s.createElement(s.Fragment,{key:e},ue(t));{if(["script","style"].includes(t.tagName))return null;const r={key:e};for(const i of t.attributes){let g=i.name;g.startsWith("on")||(g==="class"&&(g="className"),r[g]=i.value)}return s.createElement(t.tagName.toLowerCase(),r,ue(t))}}else return t instanceof Text?t.textContent:null}function ue(t){const e=[];let r=0;for(const i of t.childNodes)e.push(pe(i,r)),r++;return e}function Ue(t){let e=[];const r=t.scaleMax||5;for(let i=1;i<=r;i++)e.push({value:i,label:be(t,i,r)});return e}function be(t,e,r){if(t.scaleLabels)return t.scaleLabels[e-1]||e;{const i=fe[r]&&fe[r][e];return i?s.createElement(x,{icon:i,size:24}):e}}const fe={2:{1:z,2:q},3:{1:z,2:ae,3:q},4:{1:re,2:z,3:q,4:oe},5:{1:re,2:z,3:ae,4:q,5:oe}},vt=({block:t,session:e,assistantReply:r,initialUserContent:i,onContactClick:g,contactButtonText:f,workflow:h})=>{const d=t.assistantFlowId,u=Me(),{t:l}=he(),p=l("assistant.generic_error"),o=l("assistant.disconnected_error"),m=Pe(c.useMemo(()=>({assistant:r.assistant,lookupAttribute:ce(e.data),initialConversationId:r.conversationId,initialHistory:r.history,initialUserContent:i,onConversationIdChange:a=>{const b="assistantConversationId:"+d;a?ee.setItem(b,a):ee.removeItem(b)},submitMessage:({conversationId:a,userContent:b,workflow:k,callback:S})=>{u.assistantMessageInProgress=!0;const N=u.nextRef();u.send(k?{kind:"WorkflowRequestFillValue",ref:N,assistantFlowId:d,sessionId:k.workflowSessionId,stepId:k.stepId,conversationId:a,userContent:b}:{kind:"SubmitAssistantMessage",ref:N,assistantFlowId:d,conversationId:a,userContent:b},{handlesRejection:!0}).catch(I=>{S({kind:"error",message:I.humanMessage||p})});const j=()=>{u.assistantMessageInProgress=void 0,u.off("private:assistantMessageEvent",E),u.off("private:disconnect",R)},E=I=>{if(I.ref!==N){console.error(`The ${N} for the messages didn't match`);return}const{event:C}=I;S(C),(C.kind=="done"||C.kind=="error")&&j()},R=()=>{S({kind:"error",message:o}),j()};return u.on("private:assistantMessageEvent",E),u.on("private:disconnect",R),{abort:()=>{u.send({kind:"AbortAssistantMessage"}),j()}}},submitRating:a=>{switch(a.ratingMode){case _.LIKE:u.send({kind:"SubmitAssistantRating",messageId:a.messageId,rating:a.rating});break;case _.SCALE:u.send({kind:"SubmitAssistantScaleRating",messageId:a.messageId,scaleRating:a.scaleRating,scaleMax:a.scaleMax});break;default:throw new ge(a)}},submitFeedback:a=>{u.send({kind:"SubmitAssistantFeedback",messageId:a.messageId,feedback:a.feedback})},onContactClick:g,contactButtonText:f,onFlowSuggestionClick:async a=>{await u.send({kind:"ClickAssistantFlowSuggestion",messageId:a.messageId,flowSuggestionId:a.flowSuggestion.id}),await u.startFlow({flowId:a.flowSuggestion.flowId,startReason:e.draftMode?te.DRAFT:te.ASSISTANT,replaceCurrent:!0});const b=Te(a.flowSuggestion.url,{lookupAttribute:ce(e.data)});b&&He(b)}}),[r,d,u,i,e.data,g,f,p,o,e.draftMode]));return c.useEffect(()=>{h&&m.startWorkflowFill(h)},[h?.stepId]),s.createElement(s.Fragment,null,s.createElement(We,{...m}))};export{vt as ResourceCenterAssistantChat};
|
|
5
5
|
//# sourceMappingURL=ResourceCenterAssistantChat.js.map
|
package/SitePage.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{R as e,r as h}from"./vendor.react.js";import{U as W,u as A,i as L}from"./client-context.js";import{r as Y}from"./vendor.react-dom.js";import{B as O,L as k}from"./vendor.react-router-dom.js";import{A as z,u as T,S as _,a as G,b as Q}from"./AnnouncementEngagement.js";import{D as I,u as S,a as $,g as q}from"./stylesheets.js";import{i as J}from"./iframe-reset.styl.js";import{S as X,u as E,R as N}from"./TreeDoc.js";import{g as C}from"./flow-condition-types.js";import{f as Z,a as ee,b as D}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{f as te}from"./vendor.fortawesome.pro-solid-svg-icons.js";import{d as oe}from"./userflow.js";import{P as ne}from"./Popover.js";import{o as se}from"./vendor.obj-str.js";import{m as re}from"./vendor.memoize-one.js";import"./vendor.core-js.js";import{u as ie}from"./react-hooks.js";import{S as le,a as H,u as P,b as R,d as B}from"./vendor.react-router.js";import{u as V}from"./vendor.react-i18next.js";import"./vendor.object-assign.js";import"./vendor.i18next.js";import"./vendor.babel.runtime.js";import"./vendor.scheduler.js";import"./vendor.history.js";import"./vendor.resolve-pathname.js";import"./vendor.value-equal.js";import"./vendor.tiny-invariant.js";import"./vendor.prop-types.js";import"./use-confetti.js";import"./vendor.canvas-confetti.js";import"./roots.js";import"./vendor.date-fns.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";import"./vendor.lodash.js";import"./vendor.mini-create-react-context.js";import"./vendor.path-to-regexp.js";import"./vendor.react-is.js";(function(){try{var o=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},t=new Error().stack;t&&(o._sentryDebugIds=o._sentryDebugIds||{},o._sentryDebugIds[t]="c2156454-7496-4b2e-9a25-a4398ae3229c",o._sentryDebugIdIdentifier="sentry-dbid-c2156454-7496-4b2e-9a25-a4398ae3229c")}catch{}})();const ae=new URL("popover.css",import.meta.url).href,ce=new URL("site.css",import.meta.url).href;class F extends e.PureComponent{constructor(){super(...arguments),this.rootRef=e.createRef(),this.isScrollingIntoView=!1,this.state={highlightedIdx:this.props.disableAutoHighlight?-1:0},this.onKeyDown=t=>{const{highlightedIdx:n}=this.state,{items:r}=this.props,s=()=>{t.stopPropagation(),t.preventDefault()};switch(t.key){case"ArrowUp":s(),n>0?this.setHighlighted(n-1):n===-1&&this.setHighlighted(r.length-1);break;case"ArrowDown":s(),n<r.length-1?this.setHighlighted(n+1):n===-1&&this.setHighlighted(0);break;case"Enter":s(),this.selectItem(r[n]);break}},this.selectItem=t=>{this.props.onSelect(t)},this.onItemHover=t=>{this.isScrollingIntoView||(this.setState({highlightedIdx:t}),this.props.onItemHighlighted?.(this.props.items[t]))},this.onMouseLeave=()=>{const{clearHoverOnMouseLeave:t,selectedItem:n,items:r}=this.props;if(t)if(n){const s=r.findIndex(l=>l===n);this.setState({highlightedIdx:s})}else this.setState({highlightedIdx:-1})},this.memoizedStyle=re(t=>t==null?{}:{maxHeight:t,overflowY:"auto"})}componentDidMount(){this.props.autoFocus&&this.rootRef.current.focus({preventScroll:!0}),this.props.forwardedRef&&this.rootRef.current&&(typeof this.props.forwardedRef=="function"?this.props.forwardedRef(this.rootRef.current):this.props.forwardedRef.current=this.rootRef.current)}render(){const t=this.state,{selectedItem:n,clearHoverOnMouseLeave:r,items:s,getItemGroup:l}=this.props;let a=null;const m=s.reduce((i,c,f)=>{const u=l?l(c):null;return u&&u!==a&&i.push(e.createElement("div",{key:`group-${u}-${f}`,className:"key-nav-list__group-header"},u)),a=u,i.push(e.createElement(me,{key:f,item:c,idx:f,className:se({"key-nav-list__item":!0,"key-nav-list__item--highlighted":f===t.highlightedIdx,"key-nav-list__item--selected":c===n}),renderContent:this.props.children,onClick:this.selectItem,onHover:this.onItemHover})),i},[]);return e.createElement("div",{ref:this.rootRef,className:"key-nav-list",style:this.memoizedStyle(this.props.maxHeight),onKeyDown:this.onKeyDown,onMouseLeave:r?this.onMouseLeave:void 0,tabIndex:0},m)}scrollHighlightedItemIntoView(){const t=this.rootRef.current,n=t.querySelector(".key-nav-list__item--highlighted");if(n){this.isScrollingIntoView=!0,window.clearTimeout(this.isScrollingIntoViewTimeout),this.isScrollingIntoViewTimeout=window.setTimeout(()=>this.isScrollingIntoView=!1,250);const r=t.getBoundingClientRect(),s=n.getBoundingClientRect();s.top<r.top?t.scrollTop+=s.top-r.top:s.bottom>r.bottom&&(t.scrollTop+=s.bottom-r.bottom)}}setHighlighted(t){this.setState({highlightedIdx:t},this.scrollHighlightedItemIntoView),this.props.onItemHighlighted?.(this.props.items[t])}}class me extends e.PureComponent{constructor(){super(...arguments),this.onClick=()=>this.props.onClick(this.props.item),this.onHover=()=>this.props.onHover(this.props.idx)}render(){const{props:t}=this;return e.createElement("div",{className:t.className,onClick:this.onClick,onMouseMove:this.onHover},t.renderContent(t.item,t.idx))}}e.forwardRef((o,t)=>e.createElement(F,{...o,forwardedRef:t}));function ue({testid:o,buttonText:t,value:n,onChange:r,options:s,renderOption:l,disabled:a,buttonStyle:m,htmlAttributes:i,comparator:c,showCheckIcon:f=!0}){const u=h.useRef(null),[p,g]=h.useState(!1),w=()=>{g(!1),u.current&&u.current.focus()},v=({key:d})=>{if(d.length===1){d=d.toLowerCase();for(const y of s){const x=l(y);if(typeof x=="string"&&x.toLowerCase().startsWith(d)){r(y);return}}}};return e.createElement(e.Fragment,null,e.createElement("button",{ref:u,"data-testid":o,type:"button",className:`btn btn-dynamic-icon ${m||"btn--plain-blue"} btn--sm ${p&&!a?"btn--popover-open":""}`,onClick:()=>g(!p),disabled:a,onKeyDown:v,...i},t||l(n),e.createElement(I,{icon:Z})),p&&!a&&u.current&&e.createElement(ne,{target:u.current,matchMinWidth:!0,onDismiss:w},e.createElement(F,{items:s,onSelect:d=>{w(),r(d)},autoFocus:!0},d=>e.createElement("div",{className:"d-flex"},f&&e.createElement("div",{className:"mr-8",style:(c?c(d,n):d===n)?void 0:{visibility:"hidden"}},e.createElement(I,{icon:ee})),l(d)))))}function de(o){const t=o?new Date(o):new Date;let n=new Intl.DateTimeFormat(L.language,{weekday:"long",day:"numeric",month:"short",year:t.getFullYear()===new Date().getFullYear()?void 0:"numeric"}).format(t);return n.substring(0,1).toUpperCase()+n.substring(1)}class ot{constructor(t,n){this.client=t,this.selector=n}mount(){if(this.container)throw new Error("SiteRoute has already been mounted");const t=document.querySelector(this.selector);if(!t)throw new Error(`SitePage: No element found for selector ${this.selector}`);this.container=t,Y.render(e.createElement(O,null,e.createElement(W.Provider,{value:this.client},e.createElement(fe,null))),this.container)}}const fe=()=>{const o=A();S(window,J),S(window,ae);const{loaded:t}=S(window,ce),[n,r]=h.useState(null),[s,l]=h.useState(void 0),a=n?.locale.standardLocaleId||n?.version.theme.languageId;return h.useEffect(()=>{a&&L.changeLanguage(a)},[a]),h.useEffect(()=>{const m=i=>{oe("Received site session",i),r(i)};return o.on("private:siteSession",m),()=>{o.off("private:siteSession",m)}},[o]),!n||!t?null:e.createElement(X.Provider,{value:n},e.createElement(z,{key:n.locale.standardLocaleId},e.createElement(le,null,e.createElement(H,{exact:!0,path:"/:locale/:announcementId"},e.createElement(M,null,e.createElement(pe,{key:n.locale.standardLocaleId}))),e.createElement(H,{path:"/:locale"},e.createElement(M,null,e.createElement(he,{key:n.locale.standardLocaleId,listScrollTop:s,onSaveScrollPosition:()=>{l(window.scrollY)}}))))))},M=({children:o})=>{const t=E(),n=$(t.version.theme),r=t.version.theme.siteLogoAsset?.assetUrl,s=t.version.site,l=b();if(!s)return null;const{headerText:a,headerDescription:m,logoUrl:i}=s;return e.createElement("div",{style:q(n),className:"userflow-site__announcements"},l?e.createElement("div",{className:"text-bolder userflow-site-preview-banner"},"PREVIEW"):null,e.createElement(we,{headerText:a,headerDescription:m,companyLogoSrc:r,logoUrl:i,localeDropdown:e.createElement(ge,null)}),o)},he=({listScrollTop:o,onSaveScrollPosition:t})=>{const{t:n}=V(),r=E(),{announcements:s,loading:l,loadingMore:a,error:m,truncated:i,loadMore:c,submitReaction:f,submitComment:u}=T(),p=h.useRef(!1);return h.useLayoutEffect(()=>{o!=null&&window.scrollTo(0,o)},[o]),h.useEffect(()=>{if(l||a||i)return;const g=()=>{if(p.current)return;const w=window.scrollY,v=window.innerHeight;document.documentElement.scrollHeight-(w+v)<=400&&(p.current=!0,c().finally(()=>{p.current=!1}))};return window.addEventListener("scroll",g),()=>window.removeEventListener("scroll",g)},[i,l,a,c]),m?e.createElement("div",{className:"userflow-site__announcement-content"},"Failed in loading announcements"):l?e.createElement("div",{className:"userflow-site__announcement-content"},e.createElement(_,{center:!0,fadeIn:!0})):e.createElement("div",{className:"userflow-site__announcement-content"},s.length>0?e.createElement("div",{className:"userflow-site__announcement-list"},s.map(g=>e.createElement(U,{expanded:!1,key:g.id,announcement:g,enableTitleLinks:r.version.site?.enableTitleLinks,onReactionChange:f,onCommentSubmit:u,onSaveScrollPosition:t})),a?e.createElement(_,{center:!0,fadeIn:!0}):null):null,s.length===0?e.createElement("h3",{className:"userflow-site-empty-state text-extra-bold"},L.exists("resource_center.no_announcements",{fallbackLng:[]})?n("resource_center.no_announcements"):n("resource_center.no_results_found")):null)},U=({announcement:o,expanded:t=!1,enableTitleLinks:n,onReactionChange:r,onCommentSubmit:s,onSaveScrollPosition:l})=>{const a=P(),m=j(),i=A(),c=E(),f=$(c.version.theme),u=b(),p=h.useRef(null),g=n&&!!m,w=ie(p,{once:!0,rootMargin:"100px",disabled:o.seen===!0}),v=K(`/${m}/${u?o.id:o.permalink}`);h.useEffect(()=>{w&&o.seen===!1&&i.send({kind:"MarkAnnouncementSeen",announcementId:o.id,versionId:o.versionId},{batch:!0})},[w,o,i]);const d=()=>{m&&(l?.(),a.push(v))};return e.createElement("div",{ref:p,className:"userflow-site__card"},e.createElement("div",null,e.createElement("span",{className:"text-small text-secondary"},de(o.time)),e.createElement("div",null,g?e.createElement(k,{to:v,className:"h2-like text-extra-bold"},o.title):e.createElement("h2",{className:"h2-like text-extra-bold"},o.title))),e.createElement(N,{doc:o.content,buttons:o.buttons,lookupAttribute:C(o.data)}),o.moreEnabled&&t?e.createElement(N,{doc:o.moreContent,buttons:o.moreButtons,lookupAttribute:C(o.data)}):null,e.createElement(G,{announcement:t?{...o,moreEnabled:!1}:o,confettiColors:f.confettiColors,onReactionChange:r,onCommentSubmit:s,onMoreClick:t?void 0:d},!t&&o.moreEnabled&&e.createElement("div",{className:"userflowjs-announcement-more--modal"},e.createElement("button",{className:"userflowjs-tertiary-button",onClick:d},o.moreButtonText||"Read more",e.createElement("span",{className:"userflowjs-rtl-mirrored userflowjs-tertiary-button__icon"},e.createElement(I,{icon:te}))))))},pe=()=>{const o=E(),{announcementId:t}=R(),{submitReaction:n,submitComment:r}=T(),s=b(),l=j(),a=K(`/${l}`),{t:m}=V(),{loading:i,data:c,error:f}=Q({message:{kind:"GetAnnouncement",announcementId:t,permalink:!s},skip:!t});return i?e.createElement(_,{center:!0,fadeIn:!0}):f||!c?.announcement?e.createElement("div",{className:"userflow-site__announcement-content"},e.createElement("div",{className:"d-flex gap-16 flex-column mt-24"},e.createElement(k,{to:a,className:"userflow-site-link-button userflow-site-home-back-button"},e.createElement(I,{icon:D}),o.version.site?.homeButtonText||"All Announcements"),e.createElement("div",{className:"userflow-site__card userflow-site__card--not-found"},e.createElement("h3",{className:"userflow-site__announcement-not-found text-extra-bold"},m("site.page_not_found"))))):e.createElement("div",{className:"userflow-site__announcement-content"},c?.announcement&&e.createElement("div",{className:"d-flex gap-16 flex-column mt-24"},e.createElement(k,{to:a,className:"userflow-site-link-button userflow-site-home-back-button"},e.createElement(I,{icon:D}),o.version.site?.homeButtonText||"All Announcements"),e.createElement(U,{expanded:!0,announcement:c.announcement,onReactionChange:n,onCommentSubmit:r})))},ge=()=>{const o=P(),t=E(),n=b(),r=B(),{announcementId:s}=R();if(t?.kind!=="site"||n)return null;const l=t.locales.find(i=>i.code===t.locale.standardLocaleId);if(t.locales.length===1&&t.locales[0].code===t.locale.standardLocaleId||t.locales.length===0||!l)return null;const m=i=>{const c=s?`/${i.code}/${s}`:`/${i.code}`;o.push(n?`${c}${r.search}`:c)};return e.createElement(ue,{buttonStyle:"userflow-site-locale-dropdown",value:l,options:t.locales,onChange:m,comparator:(i,c)=>i.code===c.code,renderOption:i=>i.name})},we=({companyLogoSrc:o,headerText:t,headerDescription:n,logoUrl:r,localeDropdown:s})=>e.createElement(e.Fragment,null,e.createElement("div",{className:"userflow-site-header-wrapper"},e.createElement("div",{className:"d-flex justify-space-between align-items-center userflow-site-logo-wrapper"},e.createElement("div",null,o?e.createElement(e.Fragment,null,r?e.createElement("a",{href:r,target:"_blank",rel:"noopener noreferrer"},e.createElement("img",{src:o,className:"userflow-site-logo"})):e.createElement("img",{src:o,className:"userflow-site-logo"})):null),s),e.createElement("div",{className:"userflow-site__announcements-heading"},e.createElement("h1",{className:"text-bold"},t),e.createElement("p",null,n)))),b=()=>E().draftMode,j=()=>{const o=E(),t=b(),{locale:n}=R();return t?n:n??o.locale.standardLocaleId},K=o=>{const t=b(),n=B();return t?`${o}${n.search}`:o};export{fe as SiteAnnouncementsWrapper,M as SiteContentWrapper,we as SiteHeader,U as SiteListItem,ot as SitePage};
|
|
1
|
+
import{R as e,r as h}from"./vendor.react.js";import{U as W,u as A,i as L}from"./client-context.js";import{r as Y}from"./vendor.react-dom.js";import{B as O,L as k}from"./vendor.react-router-dom.js";import{A as z,u as T,S as _,a as G,b as Q}from"./AnnouncementEngagement.js";import{D as I,u as S,a as $,g as q}from"./stylesheets.js";import{i as J}from"./iframe-reset.styl.js";import{S as X,u as E,R as N}from"./TreeDoc.js";import{g as C}from"./flow-condition-types.js";import{f as Z,a as ee,b as D}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{f as te}from"./vendor.fortawesome.pro-solid-svg-icons.js";import{d as oe}from"./userflow.js";import{P as ne}from"./Popover.js";import{o as se}from"./vendor.obj-str.js";import{m as re}from"./vendor.memoize-one.js";import"./vendor.core-js.js";import{u as ie}from"./react-hooks.js";import{S as le,a as H,u as P,b as R,d as B}from"./vendor.react-router.js";import{u as V}from"./vendor.react-i18next.js";import"./vendor.object-assign.js";import"./vendor.i18next.js";import"./vendor.babel.runtime.js";import"./vendor.scheduler.js";import"./vendor.history.js";import"./vendor.resolve-pathname.js";import"./vendor.value-equal.js";import"./vendor.tiny-invariant.js";import"./vendor.prop-types.js";import"./use-confetti.js";import"./vendor.canvas-confetti.js";import"./roots.js";import"./vendor.date-fns.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";import"./vendor.lodash.js";import"./vendor.mini-create-react-context.js";import"./vendor.path-to-regexp.js";import"./vendor.react-is.js";(function(){try{var o=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},t=new Error().stack;t&&(o._sentryDebugIds=o._sentryDebugIds||{},o._sentryDebugIds[t]="358e8388-ea02-439d-a97a-47c0fb06a313",o._sentryDebugIdIdentifier="sentry-dbid-358e8388-ea02-439d-a97a-47c0fb06a313")}catch{}})();const ae=new URL("popover.css",import.meta.url).href,ce=new URL("site.css",import.meta.url).href;class F extends e.PureComponent{constructor(){super(...arguments),this.rootRef=e.createRef(),this.isScrollingIntoView=!1,this.state={highlightedIdx:this.props.disableAutoHighlight?-1:0},this.onKeyDown=t=>{const{highlightedIdx:n}=this.state,{items:r}=this.props,s=()=>{t.stopPropagation(),t.preventDefault()};switch(t.key){case"ArrowUp":s(),n>0?this.setHighlighted(n-1):n===-1&&this.setHighlighted(r.length-1);break;case"ArrowDown":s(),n<r.length-1?this.setHighlighted(n+1):n===-1&&this.setHighlighted(0);break;case"Enter":s(),this.selectItem(r[n]);break}},this.selectItem=t=>{this.props.onSelect(t)},this.onItemHover=t=>{this.isScrollingIntoView||(this.setState({highlightedIdx:t}),this.props.onItemHighlighted?.(this.props.items[t]))},this.onMouseLeave=()=>{const{clearHoverOnMouseLeave:t,selectedItem:n,items:r}=this.props;if(t)if(n){const s=r.findIndex(l=>l===n);this.setState({highlightedIdx:s})}else this.setState({highlightedIdx:-1})},this.memoizedStyle=re(t=>t==null?{}:{maxHeight:t,overflowY:"auto"})}componentDidMount(){this.props.autoFocus&&this.rootRef.current.focus({preventScroll:!0}),this.props.forwardedRef&&this.rootRef.current&&(typeof this.props.forwardedRef=="function"?this.props.forwardedRef(this.rootRef.current):this.props.forwardedRef.current=this.rootRef.current)}render(){const t=this.state,{selectedItem:n,clearHoverOnMouseLeave:r,items:s,getItemGroup:l}=this.props;let a=null;const m=s.reduce((i,c,f)=>{const u=l?l(c):null;return u&&u!==a&&i.push(e.createElement("div",{key:`group-${u}-${f}`,className:"key-nav-list__group-header"},u)),a=u,i.push(e.createElement(me,{key:f,item:c,idx:f,className:se({"key-nav-list__item":!0,"key-nav-list__item--highlighted":f===t.highlightedIdx,"key-nav-list__item--selected":c===n}),renderContent:this.props.children,onClick:this.selectItem,onHover:this.onItemHover})),i},[]);return e.createElement("div",{ref:this.rootRef,className:"key-nav-list",style:this.memoizedStyle(this.props.maxHeight),onKeyDown:this.onKeyDown,onMouseLeave:r?this.onMouseLeave:void 0,tabIndex:0},m)}scrollHighlightedItemIntoView(){const t=this.rootRef.current,n=t.querySelector(".key-nav-list__item--highlighted");if(n){this.isScrollingIntoView=!0,window.clearTimeout(this.isScrollingIntoViewTimeout),this.isScrollingIntoViewTimeout=window.setTimeout(()=>this.isScrollingIntoView=!1,250);const r=t.getBoundingClientRect(),s=n.getBoundingClientRect();s.top<r.top?t.scrollTop+=s.top-r.top:s.bottom>r.bottom&&(t.scrollTop+=s.bottom-r.bottom)}}setHighlighted(t){this.setState({highlightedIdx:t},this.scrollHighlightedItemIntoView),this.props.onItemHighlighted?.(this.props.items[t])}}class me extends e.PureComponent{constructor(){super(...arguments),this.onClick=()=>this.props.onClick(this.props.item),this.onHover=()=>this.props.onHover(this.props.idx)}render(){const{props:t}=this;return e.createElement("div",{className:t.className,onClick:this.onClick,onMouseMove:this.onHover},t.renderContent(t.item,t.idx))}}e.forwardRef((o,t)=>e.createElement(F,{...o,forwardedRef:t}));function ue({testid:o,buttonText:t,value:n,onChange:r,options:s,renderOption:l,disabled:a,buttonStyle:m,htmlAttributes:i,comparator:c,showCheckIcon:f=!0}){const u=h.useRef(null),[p,g]=h.useState(!1),w=()=>{g(!1),u.current&&u.current.focus()},v=({key:d})=>{if(d.length===1){d=d.toLowerCase();for(const y of s){const x=l(y);if(typeof x=="string"&&x.toLowerCase().startsWith(d)){r(y);return}}}};return e.createElement(e.Fragment,null,e.createElement("button",{ref:u,"data-testid":o,type:"button",className:`btn btn-dynamic-icon ${m||"btn--plain-blue"} btn--sm ${p&&!a?"btn--popover-open":""}`,onClick:()=>g(!p),disabled:a,onKeyDown:v,...i},t||l(n),e.createElement(I,{icon:Z})),p&&!a&&u.current&&e.createElement(ne,{target:u.current,matchMinWidth:!0,onDismiss:w},e.createElement(F,{items:s,onSelect:d=>{w(),r(d)},autoFocus:!0},d=>e.createElement("div",{className:"d-flex"},f&&e.createElement("div",{className:"mr-8",style:(c?c(d,n):d===n)?void 0:{visibility:"hidden"}},e.createElement(I,{icon:ee})),l(d)))))}function de(o){const t=o?new Date(o):new Date;let n=new Intl.DateTimeFormat(L.language,{weekday:"long",day:"numeric",month:"short",year:t.getFullYear()===new Date().getFullYear()?void 0:"numeric"}).format(t);return n.substring(0,1).toUpperCase()+n.substring(1)}class ot{constructor(t,n){this.client=t,this.selector=n}mount(){if(this.container)throw new Error("SiteRoute has already been mounted");const t=document.querySelector(this.selector);if(!t)throw new Error(`SitePage: No element found for selector ${this.selector}`);this.container=t,Y.render(e.createElement(O,null,e.createElement(W.Provider,{value:this.client},e.createElement(fe,null))),this.container)}}const fe=()=>{const o=A();S(window,J),S(window,ae);const{loaded:t}=S(window,ce),[n,r]=h.useState(null),[s,l]=h.useState(void 0),a=n?.locale.standardLocaleId||n?.version.theme.languageId;return h.useEffect(()=>{a&&L.changeLanguage(a)},[a]),h.useEffect(()=>{const m=i=>{oe("Received site session",i),r(i)};return o.on("private:siteSession",m),()=>{o.off("private:siteSession",m)}},[o]),!n||!t?null:e.createElement(X.Provider,{value:n},e.createElement(z,{key:n.locale.standardLocaleId},e.createElement(le,null,e.createElement(H,{exact:!0,path:"/:locale/:announcementId"},e.createElement(M,null,e.createElement(pe,{key:n.locale.standardLocaleId}))),e.createElement(H,{path:"/:locale"},e.createElement(M,null,e.createElement(he,{key:n.locale.standardLocaleId,listScrollTop:s,onSaveScrollPosition:()=>{l(window.scrollY)}}))))))},M=({children:o})=>{const t=E(),n=$(t.version.theme),r=t.version.theme.siteLogoAsset?.assetUrl,s=t.version.site,l=b();if(!s)return null;const{headerText:a,headerDescription:m,logoUrl:i}=s;return e.createElement("div",{style:q(n),className:"userflow-site__announcements"},l?e.createElement("div",{className:"text-bolder userflow-site-preview-banner"},"PREVIEW"):null,e.createElement(we,{headerText:a,headerDescription:m,companyLogoSrc:r,logoUrl:i,localeDropdown:e.createElement(ge,null)}),o)},he=({listScrollTop:o,onSaveScrollPosition:t})=>{const{t:n}=V(),r=E(),{announcements:s,loading:l,loadingMore:a,error:m,truncated:i,loadMore:c,submitReaction:f,submitComment:u}=T(),p=h.useRef(!1);return h.useLayoutEffect(()=>{o!=null&&window.scrollTo(0,o)},[o]),h.useEffect(()=>{if(l||a||i)return;const g=()=>{if(p.current)return;const w=window.scrollY,v=window.innerHeight;document.documentElement.scrollHeight-(w+v)<=400&&(p.current=!0,c().finally(()=>{p.current=!1}))};return window.addEventListener("scroll",g),()=>window.removeEventListener("scroll",g)},[i,l,a,c]),m?e.createElement("div",{className:"userflow-site__announcement-content"},"Failed in loading announcements"):l?e.createElement("div",{className:"userflow-site__announcement-content"},e.createElement(_,{center:!0,fadeIn:!0})):e.createElement("div",{className:"userflow-site__announcement-content"},s.length>0?e.createElement("div",{className:"userflow-site__announcement-list"},s.map(g=>e.createElement(U,{expanded:!1,key:g.id,announcement:g,enableTitleLinks:r.version.site?.enableTitleLinks,onReactionChange:f,onCommentSubmit:u,onSaveScrollPosition:t})),a?e.createElement(_,{center:!0,fadeIn:!0}):null):null,s.length===0?e.createElement("h3",{className:"userflow-site-empty-state text-extra-bold"},L.exists("resource_center.no_announcements",{fallbackLng:[]})?n("resource_center.no_announcements"):n("resource_center.no_results_found")):null)},U=({announcement:o,expanded:t=!1,enableTitleLinks:n,onReactionChange:r,onCommentSubmit:s,onSaveScrollPosition:l})=>{const a=P(),m=j(),i=A(),c=E(),f=$(c.version.theme),u=b(),p=h.useRef(null),g=n&&!!m,w=ie(p,{once:!0,rootMargin:"100px",disabled:o.seen===!0}),v=K(`/${m}/${u?o.id:o.permalink}`);h.useEffect(()=>{w&&o.seen===!1&&i.send({kind:"MarkAnnouncementSeen",announcementId:o.id,versionId:o.versionId},{batch:!0})},[w,o,i]);const d=()=>{m&&(l?.(),a.push(v))};return e.createElement("div",{ref:p,className:"userflow-site__card"},e.createElement("div",null,e.createElement("span",{className:"text-small text-secondary"},de(o.time)),e.createElement("div",null,g?e.createElement(k,{to:v,className:"h2-like text-extra-bold"},o.title):e.createElement("h2",{className:"h2-like text-extra-bold"},o.title))),e.createElement(N,{doc:o.content,buttons:o.buttons,lookupAttribute:C(o.data)}),o.moreEnabled&&t?e.createElement(N,{doc:o.moreContent,buttons:o.moreButtons,lookupAttribute:C(o.data)}):null,e.createElement(G,{announcement:t?{...o,moreEnabled:!1}:o,confettiColors:f.confettiColors,onReactionChange:r,onCommentSubmit:s,onMoreClick:t?void 0:d},!t&&o.moreEnabled&&e.createElement("div",{className:"userflowjs-announcement-more--modal"},e.createElement("button",{className:"userflowjs-tertiary-button",onClick:d},o.moreButtonText||"Read more",e.createElement("span",{className:"userflowjs-rtl-mirrored userflowjs-tertiary-button__icon"},e.createElement(I,{icon:te}))))))},pe=()=>{const o=E(),{announcementId:t}=R(),{submitReaction:n,submitComment:r}=T(),s=b(),l=j(),a=K(`/${l}`),{t:m}=V(),{loading:i,data:c,error:f}=Q({message:{kind:"GetAnnouncement",announcementId:t,permalink:!s},skip:!t});return i?e.createElement(_,{center:!0,fadeIn:!0}):f||!c?.announcement?e.createElement("div",{className:"userflow-site__announcement-content"},e.createElement("div",{className:"d-flex gap-16 flex-column mt-24"},e.createElement(k,{to:a,className:"userflow-site-link-button userflow-site-home-back-button"},e.createElement(I,{icon:D}),o.version.site?.homeButtonText||"All Announcements"),e.createElement("div",{className:"userflow-site__card userflow-site__card--not-found"},e.createElement("h3",{className:"userflow-site__announcement-not-found text-extra-bold"},m("site.page_not_found"))))):e.createElement("div",{className:"userflow-site__announcement-content"},c?.announcement&&e.createElement("div",{className:"d-flex gap-16 flex-column mt-24"},e.createElement(k,{to:a,className:"userflow-site-link-button userflow-site-home-back-button"},e.createElement(I,{icon:D}),o.version.site?.homeButtonText||"All Announcements"),e.createElement(U,{expanded:!0,announcement:c.announcement,onReactionChange:n,onCommentSubmit:r})))},ge=()=>{const o=P(),t=E(),n=b(),r=B(),{announcementId:s}=R();if(t?.kind!=="site"||n)return null;const l=t.locales.find(i=>i.code===t.locale.standardLocaleId);if(t.locales.length===1&&t.locales[0].code===t.locale.standardLocaleId||t.locales.length===0||!l)return null;const m=i=>{const c=s?`/${i.code}/${s}`:`/${i.code}`;o.push(n?`${c}${r.search}`:c)};return e.createElement(ue,{buttonStyle:"userflow-site-locale-dropdown",value:l,options:t.locales,onChange:m,comparator:(i,c)=>i.code===c.code,renderOption:i=>i.name})},we=({companyLogoSrc:o,headerText:t,headerDescription:n,logoUrl:r,localeDropdown:s})=>e.createElement(e.Fragment,null,e.createElement("div",{className:"userflow-site-header-wrapper"},e.createElement("div",{className:"d-flex justify-space-between align-items-center userflow-site-logo-wrapper"},e.createElement("div",null,o?e.createElement(e.Fragment,null,r?e.createElement("a",{href:r,target:"_blank",rel:"noopener noreferrer"},e.createElement("img",{src:o,className:"userflow-site-logo"})):e.createElement("img",{src:o,className:"userflow-site-logo"})):null),s),e.createElement("div",{className:"userflow-site__announcements-heading"},e.createElement("h1",{className:"text-bold"},t),e.createElement("p",null,n)))),b=()=>E().draftMode,j=()=>{const o=E(),t=b(),{locale:n}=R();return t?n:n??o.locale.standardLocaleId},K=o=>{const t=b(),n=B();return t?`${o}${n.search}`:o};export{fe as SiteAnnouncementsWrapper,M as SiteContentWrapper,we as SiteHeader,U as SiteListItem,ot as SitePage};
|
|
2
2
|
//# sourceMappingURL=SitePage.js.map
|
package/WorkflowApp.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as
|
|
1
|
+
import{r as w}from"./vendor.react.js";import{w as k,U as d,x as p,y as x,d as m,j as A,E as D}from"./userflow.js";import{f as v}from"./steps.js";import{u as H}from"./client-context.js";import{u as b,v as T}from"./roots.js";import{s as S,n as R,h as V}from"./TreeDoc.js";import{o as M,g as h,c as O}from"./flow-condition-types.js";import"./vendor.core-js.js";import{u as P}from"./stylesheets.js";import"./vendor.object-assign.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";import"./vendor.i18next.js";import"./vendor.babel.runtime.js";import"./vendor.react-i18next.js";import"./vendor.obj-str.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./vendor.date-fns.js";import"./vendor.fortawesome.pro-regular-svg-icons.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},t=new Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="fa0f249e-c75c-49d9-996b-6ae588bf8ead",e._sentryDebugIdIdentifier="sentry-dbid-fa0f249e-c75c-49d9-996b-6ae588bf8ead")}catch{}})();const E=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value")?.set;function N(e,t){return e.style.setProperty("--userflow-workflow-glow-color",t),e.classList.add("userflow-workflow-input-glow"),()=>C(e)}function C(e){e.classList.remove("userflow-workflow-input-glow"),e.style.removeProperty("--userflow-workflow-glow-color")}function W(e,t){E?E.call(e,t):e.value=t,e.dispatchEvent(new Event("input",{bubbles:!0}))}const U=3e4,j=100;function g(e){const t=Number(e.stepTimeoutSeconds);return t>0?t*1e3:U}async function F(e,t,o=()=>!1){const s=Date.now()+t;for(;!o();){if(await e())return!0;if(Date.now()>=s)return!1;await new Promise(r=>window.setTimeout(r,j))}return!1}async function L(e,t,o=U,s){let r=null;return await F(async()=>{const n=T(e);return n instanceof t?(r=n,!0):!1},o,s),r}const B={[k.CLICK]:{execute:async(e,t,o,s)=>{if(!e.selector)return;const r=await L(e.selector,HTMLElement,g(t),s.isCanceled);if(!r)throw new d("Userflow.js: Element not found for click step.");r.click()},verify:async()=>!0},[k.FILL]:{execute:async(e,t,o,s)=>{if(!e.selector)return;const r=await L(e.selector,HTMLInputElement,g(t),s.isCanceled);if(!r)throw new d("Userflow.js: Input element not found for fill step.");if(s.isCanceled())return;const n=N(r,t.version.theme.brandBackgroundColor);await o.openResourceCenter(),o.emit("private:workflowFillStep",{stepId:e.id,workflowSessionId:t.id});try{await new Promise((f,u)=>{let i=b(r),l,c;const a=()=>{window.clearTimeout(c),window.clearTimeout(l),_()},I=()=>{const y=b(r);y?y!==i&&(window.clearTimeout(l),l=window.setTimeout(()=>{a(),f()},1e3)):window.clearTimeout(l),i=y},{disconnect:_}=M(I,{observeInput:!0});c=window.setTimeout(()=>{a(),u(new d("Userflow.js: No input received for fill step, within the configured timeout."))},g(t)),I(),s.onCancel(()=>{a(),u(new d("Userflow.js: Fill step canceled."))})})}finally{n()}},verify:async()=>!0},[k.NAVIGATE]:{execute:async(e,t)=>{if(!e.url)return;const o=S(e.url,{lookupAttribute:h(t.data)}),s=new URL(o,p()).toString();if(p()!==s){if(e.navigateTarget===x.NEW_TAB){window.open(o);return}R(o)}},verify:async(e,t)=>{if(!e.url)return!1;const o=S(e.url,{lookupAttribute:h(t.data)});return p()===new URL(o,p()).toString()}}};function G(e,t,o,s,r){let n=!1,f;const u={isCanceled:()=>n,onCancel:c=>{n?c():f=c}},i=()=>{n||(n=!0,f?.())};async function l(){const c=B[e.type];try{m("executing workflow-step",e),await c.execute(e,t,o,u),m("verifying workflow-step",e);const a=await F(()=>c.verify(e,t),g(t),u.isCanceled);if(m(`workflow-step verified ${a}`,e),n)return;if(!a)throw new d("Userflow.js: Workflow step timed out.");s()}catch(a){if(n)return;r(),console.error(a)}}return{cancel:i,start:l}}function J(e,t,o){const s=new A(t.data),r=[];for(const n of e){const{condition:f}=n;if(!f)continue;let u=!1;const l=O[f.type].track({condition:n.condition,sessionData:s,callback:c=>{c&&!u&&(u=!0,V(o,t,n.actions))}});r.push(l)}return()=>r.forEach(n=>n())}const K=new URL("workflow.css",import.meta.url).href,de=({session:e})=>{const t=H();P(window,K);const[o,s]=w.useReducer(X,void 0,()=>({session:e,step:v(e)})),{session:r,step:n}=o,f=w.useCallback(()=>{if(n.selector){const i=T(n.selector);i instanceof HTMLInputElement&&C(i)}},[n]);w.useEffect(()=>{r!==e&&s({kind:"updateSession",session:e});const i=l=>{l.session.id===r.id&&(s({kind:"goToStep",stepId:l.step.id}),m("workflow-step moving to",l.step))};return t.on("gotostep",i),()=>{t.off("gotostep",i)}},[t,r,e]),w.useEffect(()=>{const i=l=>{if(!n.selector)return;const c=T(n.selector);c instanceof HTMLInputElement&&W(c,l.value)};return t.on("private:workflowFillStepValue",i),()=>{t.off("private:workflowFillStepValue",i)}},[t,n]);const u=n.id;return w.useEffect(()=>{let i;const l=()=>{i=J(n.triggers,r,t)},{cancel:c,start:a}=G(n,r,t,l,()=>{t.endFlow(r,{endReason:D.USERFLOWJS})});return a(),()=>{c(),i?.(),f()}},[t,u]),null};function X(e,t){switch(t.kind){case"updateSession":{let o;return t.session.id===e.session.id?o=t.session.version.workflowSteps.find(({crossVersionId:s})=>s===e.step.crossVersionId)||v(t.session):o=v(t.session),{...e,session:t.session,step:o}}case"goToStep":{const o=e.session.version.workflowSteps.find(s=>s.id===t.stepId);return o?{...e,step:o}:e}}}export{de as WorkflowApp,de as default};
|
|
2
2
|
//# sourceMappingURL=WorkflowApp.js.map
|
package/bubble-frame.css
CHANGED
|
@@ -2332,7 +2332,7 @@ a.userflowjs-resource-center-block--clickable:hover {
|
|
|
2332
2332
|
}
|
|
2333
2333
|
.userflowjs-assistant-chat__flow-suggestion {
|
|
2334
2334
|
margin: 0.5rem 0;
|
|
2335
|
-
padding: 0.
|
|
2335
|
+
padding: 0.5rem 1rem;
|
|
2336
2336
|
width: 100%;
|
|
2337
2337
|
display: flex;
|
|
2338
2338
|
justify-content: space-between;
|
|
@@ -2343,12 +2343,31 @@ a.userflowjs-resource-center-block--clickable:hover {
|
|
|
2343
2343
|
align-items: center;
|
|
2344
2344
|
overflow: hidden;
|
|
2345
2345
|
}
|
|
2346
|
+
.userflowjs-assistant-chat__flow-suggestion-content svg {
|
|
2347
|
+
width: 32px;
|
|
2348
|
+
flex-shrink: 0;
|
|
2349
|
+
}
|
|
2346
2350
|
.userflowjs-assistant-chat__flow-suggestion-title {
|
|
2347
2351
|
padding-left: 0.5rem;
|
|
2348
|
-
font-weight:
|
|
2352
|
+
font-weight: 600;
|
|
2349
2353
|
text-overflow: ellipsis;
|
|
2350
2354
|
overflow: hidden;
|
|
2351
2355
|
white-space: nowrap;
|
|
2356
|
+
display: flex;
|
|
2357
|
+
flex-direction: column;
|
|
2358
|
+
align-items: start;
|
|
2359
|
+
}
|
|
2360
|
+
.userflowjs-assistant-chat__flow-suggestion-info {
|
|
2361
|
+
font-size: 12px;
|
|
2362
|
+
}
|
|
2363
|
+
.userflowjs-assistant-chat__confirm {
|
|
2364
|
+
padding: 0.75rem 1rem;
|
|
2365
|
+
border-top: 1px solid var(--userflow-border-color);
|
|
2366
|
+
}
|
|
2367
|
+
.userflowjs-assistant-chat__confirm-text {
|
|
2368
|
+
width: 100%;
|
|
2369
|
+
margin: 0 0 0.5rem 0;
|
|
2370
|
+
font-size: inherit;
|
|
2352
2371
|
}
|
|
2353
2372
|
.userflowjs-assistant-chat__sources {
|
|
2354
2373
|
margin-top: 0.25rem;
|