userflow.js-self-hosted 0.1.1016725 → 0.1.1016778

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,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["ResourceCenterAssistantChat.js","vendor.react.js","vendor.core-js.js","vendor.object-assign.js","userflow.js","vendor.phoenix.js","vendor.uuid.js","client-context.js","vendor.i18next.js","vendor.babel.runtime.js","vendor.react-i18next.js","vendor.fortawesome.pro-regular-svg-icons.js","vendor.dompurify.js","vendor.marked.js","vendor.obj-str.js","use-selector-element-monitoring.js","flow-condition-types.js","vendor.date-fns.js","roots.js","stylesheets.js","vendor.fortawesome.pro-solid-svg-icons.js","vendor.react-dom.js","vendor.scheduler.js","flow-host.styl.js","Frame.js","use-window-resize.js","logomark.js","ChecklistUI.js","FlowChrome.js","vendor.canvas-confetti.js","vendor.memoize-one.js","vendor.bignumber.js.js","use-element-rect.js"])))=>i.map(i=>d[i]);
2
- import{k as y,C as W,l as Te,u as re,m as mn,n as B,o as ut,p as dt,E as fn,q as hn,r as wn,s as En,a as mt,t as ft,v as pn,w as ht,_ as bn}from"./userflow.js";import{r as l,R as e}from"./vendor.react.js";import{u as x,i as pe}from"./client-context.js";import{f as wt,u as vn,w as Et,C as gn,N as Cn}from"./flow-host.styl.js";import{S as se,b as He,R as H,h as kn,s as Ve,a as G,n as Nn,u as Mt}from"./use-selector-element-monitoring.js";import{g as _}from"./flow-condition-types.js";import{D as A,u as be,a as pt,g as Re}from"./stylesheets.js";import{F as qe}from"./Frame.js";import{o as D}from"./vendor.obj-str.js";import{M as _e,d as bt,e as vt}from"./roots.js";import{u as jn}from"./use-window-resize.js";import{S as yn}from"./logomark.js";import"./vendor.core-js.js";import{f as Sn,C as In}from"./ChecklistUI.js";import{J as An,C as Ke,K as Tn,L as Rn,M as _n,N as Bt,O as te,z as xn,P as Ln,Q as Mn,R as Bn}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{F as Dn,B as Fn}from"./FlowChrome.js";import{m as gt}from"./vendor.memoize-one.js";import{B as Dt}from"./vendor.bignumber.js.js";import{u as Pn}from"./use-element-rect.js";import{u as ne}from"./vendor.react-i18next.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},n=new Error().stack;n&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[n]="6a9d2eb6-cb50-4268-9649-cee98f2bec1f",t._sentryDebugIdIdentifier="sentry-dbid-6a9d2eb6-cb50-4268-9649-cee98f2bec1f")}catch{}})();function On(t,n,r){return t.resourceCenterAutoDividers?Ct(n)||Ct(r):!1}function Ct(t){return t!==y.ACTION&&t!==y.ANNOUNCEMENTS&&t!==y.ASSISTANT&&t!==y.CONTACT&&t!==y.FLOWS&&t!==y.KNOWLEDGE_BASE&&t!==y.SUBPAGE}const m=window,xe={[W.CRISP]:{configure:({onShow:t,onHide:n})=>{$n();let r=!1,s=!1;const o=()=>{r||s?(m.$crisp.push(["do","chat:show"]),t()):(m.$crisp.push(["do","chat:hide"]),n())},c=()=>{r=!0,o()};m.$crisp.push(["on","chat:opened",c]);const i=()=>{r=!1,o()};m.$crisp.push(["on","chat:closed",i]);const a=()=>{s=!0,o()};m.$crisp.push(["on","message:received",a]);const E=()=>{const p=document.getElementById("crisp-chatbox");if(!p||window.getComputedStyle(p).display!=="block")return!1;const h=p.querySelector('[data-id="new_messages"]');return!(!h||window.getComputedStyle(h).display!=="block")},d=()=>{const p=E();p!==s&&(s=p,o())},u=window.setInterval(d,200);return()=>{m.$crisp.push(["off","chat:opened",c]),m.$crisp.push(["off","chat:closed",i]),m.$crisp.push(["off","message:received",a]),window.clearInterval(u)}},show:()=>{m.$crisp.push(["do","chat:show"]),m.$crisp.push(["do","chat:open"])},hide:()=>{m.$crisp.push(["do","chat:hide"]),m.$crisp.push(["do","chat:close"])}},[W.CUSTOM]:{configure:()=>()=>{},show:({block:t})=>{try{new Function(`"use strict";
3
- `+t.chatCode)()}catch(n){console.error(`Userflow.js: Showing custom chat provider failed. Code: ${t.chatCode}`,n)}},hide:()=>{}},[W.FRESHCHAT]:{configure:({onShow:t,onHide:n})=>{if(!m.fcWidget)throw new Error("Freshchat is not installed");let r=!1,s=!1;const o=()=>{r||s?t():n()},c=()=>{r=!0,o()};m.fcWidget.on("widget:opened",c);const i=()=>{r=!1,o()};m.fcWidget.on("widget:closed",i);const a=()=>{const d=!!document.querySelector("#fc_frame.h-open-notify");d!==s&&(s=d,o())},E=window.setInterval(a,200);return m.fcWidget.on("unreadCount:notify",a),()=>{m.fcWidget.off("widget:opened",c),m.fcWidget.off("widget:closed",i),m.fcWidget.off("unreadCount:notify",a),window.clearInterval(E)}},show:()=>{m.fcWidget.open()},hide:()=>{m.fcWidget.close()}},[W.HELPSCOUT]:{configure:({onShow:t,onHide:n})=>{if(!m.Beacon)throw new Error("Help Scout is not installed");Un();let r=!1,s=!1;const o=()=>{r||s?(jt(),t()):(Le(),n())},c=()=>{r=!0,o()};m.Beacon("on","open",c),m.Beacon("info")?.status.isOpened&&c();const i=()=>{r=!1,o()};m.Beacon("on","close",i);const a=()=>{const d=!!document.querySelector(".BeaconNotificationsFrame");d!==s&&(s=d,o())},E=window.setInterval(a,200);return()=>{m.Beacon("off","open",c),m.Beacon("off","close",i),window.clearInterval(E)}},show:()=>{jt(),m.Beacon("open")},hide:()=>{Le(),m.Beacon("close")}},[W.HUBSPOT]:{configure:({onShow:t,onHide:n})=>{const r=()=>{const c=document.getElementById("hubspot-messages-iframe-container");if(!m.HubSpotConversations||!c)return;window.clearInterval(o),Wn();let i=!1,a=!1;const E=()=>{i||a?(Me(),t()):(Be(),n())},d=()=>{const h=!!document.querySelector("#hubspot-messages-iframe-container .hs-shadow-container.active");h!==i&&(i=h,E())},u=new _e(d);u.observe(c,{attributes:!0,subtree:!0,attributeFilter:["class"]}),d();const p=({unreadCount:h})=>{const w=h>0;w!==a&&(a=w,E())};m.HubSpotConversations.on("unreadConversationCountChanged",p),s=()=>{u.disconnect(),m.HubSpotConversations.off("unreadConversationCountChanged",p)}};let s=()=>{window.clearInterval(o)};const o=window.setInterval(r,100);return r(),()=>{s()}},show:()=>{Me(),m.HubSpotConversations.widget.open()},hide:()=>{Be(),m.HubSpotConversations.widget.close()}},[W.INTERCOM]:{configure:({onShow:t,onHide:n})=>{if(!m.Intercom)throw new Error("Intercom is not installed");return zn(),De.add(t),Fe.add(n),()=>{De.delete(t),Fe.delete(n)}},show:()=>{Ft(),m.Intercom("show")},hide:()=>{Pe(),m.Intercom("hide")}},[W.ZENDESK]:{configure:({onShow:t,onHide:n})=>{if(!m.zE)throw new Error("Zendesk is not installed");Hn();let r=!1,s=!1;const o=()=>{r||s?(m.zE("webWidget","show"),t()):(m.zE("webWidget","hide"),n())},c=()=>{r=!0,s=!1,o()};Oe.add(c);const i=()=>{r=!1,s=!1,o()};$e.add(i);const a=E=>{const d=E>0;d!==s&&(s=d,o())};return Ue.add(a),()=>{Oe.delete(c),$e.delete(i),Ue.delete(a)}},show:()=>{m.zE("webWidget","show"),m.zE("webWidget","open")},hide:()=>{m.zE("webWidget","hide"),m.zE("webWidget","close")}},[W.ZENDESK_MESSENGER]:{configure:({onShow:t,onHide:n})=>{if(!m.zE)throw new Error("Zendesk is not installed");const r=()=>{t()},s=()=>{n()};return We.add(r),ze.add(s),Vn(),()=>{We.delete(r),ze.delete(s)}},show:()=>{m.zE("messenger","open")},hide:()=>{m.zE("messenger","close")}}};let kt=!1;function $n(){kt||(kt=!0,m.$crisp||(m.$crisp=[]),m.$crisp.push(["do","chat:hide"]))}let Nt=!1;function Un(){Nt||(Nt=!0,Le())}function jt(){m.Beacon("config",{display:{style:"icon"}})}function Le(){m.Beacon("config",{display:{style:"manual"}})}let yt=!1,Qe=!1;function Wn(){yt||(yt=!0,Qe?Me():Be())}function Me(){Qe=!0,document.getElementById("hubspot-messages-iframe-container")?.style.setProperty("visibility","visible","important")}function Be(){Qe=!1,document.getElementById("hubspot-messages-iframe-container")?.style.setProperty("visibility","hidden","important")}let St=!1,De=new Set,Fe=new Set;function zn(){if(St)return;St=!0,Pe();let t=!1,n=!1;const r=()=>{Ft();for(const i of De)i()},s=()=>{Pe();for(const i of Fe)i()},o=()=>{t||n?r():s()};m.Intercom("onShow",()=>{t=!0,o()}),m.Intercom("onHide",()=>{t=!1,o()});const c=()=>{const i=!!document.querySelector('iframe[name="intercom-borderless-frame"], iframe[name="intercom-notifications-frame"]');n!==i&&(n=i,o())};m.Intercom("onUnreadCountChange",()=>{c()}),window.setInterval(c,200)}function Ft(){m.Intercom("update",{hide_default_launcher:!1,vertical_padding:20})}function Pe(){m.Intercom("update",{hide_default_launcher:!0,vertical_padding:100})}let It=!1,Oe=new Set,$e=new Set,Ue=new Set;function Hn(){It||(It=!0,m.zE("webWidget","hide"),m.zE("webWidget","close"),m.zE("webWidget:on","open",()=>{for(const t of Oe)t()}),m.zE("webWidget:on","close",()=>{for(const t of $e)t()}),m.zE("webWidget:on","chat:unreadMessages",t=>{for(const n of Ue)n(t)}))}let At=!1,We=new Set,ze=new Set;function Vn(){At||(At=!0,m.zE("messenger:on","open",function(){for(const t of We)t()}),m.zE("messenger:on","close",function(){for(const t of ze)t()}))}const qn=t=>l.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100"},t),l.createElement("path",{fill:"currentColor",d:"M24.049 79.74h36.003c8.185 0 15.985-6.621 17.43-14.814l6.091-34.556h3.997c8.149 0 13.645 6.63 12.2 14.815l-7.051 40C91.274 93.363 83.474 100 75.288 100h-40c-8.185 0-13.645-6.667-12.2-14.815l.96-5.444Z"}),l.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M12.437 69.63h40c8.148 0 15.978-6.637 17.422-14.815l7.052-40C78.355 6.63 72.896 0 64.711 0h-40C16.533 0 8.726 6.63 7.281 14.815l-7.052 40C-1.215 62.963 4.252 69.63 12.437 69.63Zm33.628-33.798c3.756-2.064 8.725-4.795 9.907-11.844C57.385 15.458 50.065 8.983 42.168 9c-7.452 0-12.771 3.195-17.508 8.892-.858 1.034-.884 2.45-.053 3.212l3.472 3.196c.847.767 2.25.589 3.176-.406 2.842-3.068 4.869-4.83 8.51-4.83 2.864 0 6.077 1.934 5.59 4.847-.37 2.223-2.292 3.334-5.4 5.001l-.28.151c-3.582 1.92-8.134 4.362-9.124 10.247l-.16.956c-.055.28-.05.571.014.85.065.278.188.538.362.76.173.222.391.4.639.522.247.121.518.183.79.18h6.744a2.709 2.709 0 0 0 1.712-.688c.481-.426.81-1.01.934-1.657l.095-.556c.266-1.582 2.101-2.59 4.384-3.845ZM32.837 59c3.552 0 6.955-3.034 7.58-6.769.63-3.729-1.742-6.763-5.293-6.763-3.552 0-6.934 3.028-7.58 6.763C26.9 55.966 29.286 59 32.837 59Z"})),$=({center:t,fadeIn:n})=>e.createElement("div",{className:D({"userflowjs-spinner":!0,"userflowjs-spinner--center":!!t,"userflowjs-spinner--fade-in":!!n})},e.createElement("svg",{viewBox:"0 0 24 24",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},e.createElement("circle",{className:"userflowjs-spinner__bg",fill:"none",cx:12,cy:12,r:10,style:{strokeWidth:"4px"}}),e.createElement("circle",{className:"userflowjs-spinner__fill",fill:"none",cx:12,cy:12,r:10,transform:"translate(12, 12) rotate(-90) translate(-12, -12)",style:{strokeWidth:"4px",strokeDasharray:10*2*Math.PI*.25+"px, 1000"}})));function ve({message:t,skip:n}){const r=x(),[s,o]=l.useState(!0),[c,i]=l.useState(!1),[a,E]=l.useState(null),[d,u]=l.useState(null),[p,h]=l.useState(null),w=l.useRef(0),b=l.useRef(null),v=l.useRef(()=>{});return l.useEffect(()=>{if(n)return;const N=JSON.stringify(t);if(N===b.current)return;b.current=N;const S=++w.current;let j,C;const L=async()=>{o(!0);try{C=t;const P=await r.send(t,{handlesRejection:!0});if(S!==w.current)return;j=P,E(j),u(t),h(null)}catch(P){if(S!==w.current)return;h(P)}finally{o(!1)}};let K=!1;v.current=async(P,O)=>{if(!K){K=!0,i(!0);try{const V=P(j,C);C=V;const U=await r.send(V,{handlesRejection:!0});if(S!==w.current)return;j=O(j,U),E(j),h(null)}catch(V){if(S!==w.current)return;h(V)}finally{K=!1,i(!1)}}},L()},[n,r,t]),{loading:s,loadingMore:c,data:a,messageForData:d,error:p,loadMore:v.current}}const Kn=200;function Ze(t,n){const[r,s]=l.useState(t),o=l.useRef(void 0),c=l.useCallback(a=>{window.clearTimeout(o.current),s(a),n(a)},[n]),i=l.useCallback(a=>{window.clearTimeout(o.current),s(a),o.current=window.setTimeout(()=>{n(a)},Kn)},[n]);return l.useEffect(()=>()=>{window.clearTimeout(o.current)},[]),[r,i,c]}const Qn={xs:[16,3],sm:[24,4],md32:[32,4],md:[40,4],lg:[56,4]};class Zn extends e.PureComponent{constructor(){super(...arguments),this.memoizedBgStyle=gt(n=>({strokeWidth:`${n}px`})),this.memoizedFillStyle=gt((n,r,s)=>({strokeWidth:`${n}px`,strokeDasharray:r*2*Math.PI*new Dt(s).toNumber()+"px, 1000"}))}render(){const{props:n}=this,{size:r,indeterminate:s,className:o,center:c,right:i,color:a}=this.props,E=["progress-spinner"];r&&E.push(`progress-spinner--${r}`),s&&E.push("progress-spinner--indeterminate"),o&&E.push(o);const d=s?.25:n.progress||0,[u,p]=Qn[r||"md"],h=u/2,w=(u-p)/2;let b=e.createElement("div",{className:E.join(" ")},e.createElement("svg",{viewBox:`0 0 ${u} ${u}`,version:"1.1",xmlns:"http://www.w3.org/2000/svg"},e.createElement("circle",{className:"progress-spinner__bg",fill:"none",cx:h,cy:h,r:w,style:this.memoizedBgStyle(p)}),e.createElement("circle",{className:a==="purple"?"progress-spinner__fill-purple":"progress-spinner__fill",fill:"none",cx:h,cy:h,r:w,transform:`translate(${h}, ${h}) rotate(-90) translate(-${h}, -${h})`,style:this.memoizedFillStyle(p,w,d)})));return c?b=e.createElement("div",{className:"progress-spinner-center-aligner"},b):i&&(b=e.createElement("div",{className:"progress-spinner-right-aligner"},b)),b}}const Gn=({textareaRef:t,value:n,onChange:r,onBlur:s,onKeyDown:o,onMouseDown:c,placeholder:i,disabled:a,readOnly:E,className:d,mirrorClassName:u,textareaClassName:p,icon:h,onIconClick:w,loading:b=!1,children:v})=>{let N=n||i||"";(N===""||N.endsWith(`
4
- `))&&(N+=" "),d=d||"growing-textarea",u=u||d+"__mirror";const[S,j]=l.useState(!1);return e.createElement("div",{className:D({[d]:!0,[`${d}__loading`]:b})},e.createElement("div",{className:u+" "+(p||"")},N),e.createElement("textarea",{ref:t,value:n,onChange:C=>r&&r(C.target.value),onBlur:s,onKeyDown:C=>{if(C.key==="Enter"&&S){C.preventDefault();return}o&&o(C)},onMouseDown:c,placeholder:i,disabled:a||b,readOnly:E,className:D({"growing-textarea__input":!0,[p||""]:!0,[`${d}__with-icon`]:!!h,[`${d}__loading-input`]:b}),onCompositionStart:()=>j(!0),onCompositionEnd:()=>j(!1)}),h&&!b&&e.createElement("div",{className:`${d}__icon`},e.createElement("button",{className:"btn btn--plain-blue btn--square btn--md32",onClick:w},e.createElement(A,{icon:h}))),b&&e.createElement("div",{className:`${d}__loader`},e.createElement(Zn,{indeterminate:!0,size:"xs",color:"purple"})),v)},Jn=({textareaRef:t,value:n,onChange:r,onSubmit:s,placeholder:o,readOnly:c})=>{const i=()=>{s&&s()};return e.createElement("div",{className:"userflowjs-assistant-chat-input"},e.createElement(Gn,{textareaRef:t,className:"userflowjs-growing-textarea",mirrorClassName:"userflowjs-growing-textarea__mirror",textareaClassName:"userflowjs-textarea userflowjs-assistant-chat-input__textarea",placeholder:o,readOnly:c,value:n||"",onChange:r,onKeyDown:a=>{!a.shiftKey&&a.key==="Enter"&&(a.preventDefault(),i())}}),e.createElement("button",{"data-testid":"assistant-chat-input-submit",className:"userflowjs-assistant-chat-input__submit",onClick:()=>i()},e.createElement(A,{icon:An})))};function Xn(){return"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0}function Pt(t){return Te.linkUrlDecorator?Te.linkUrlDecorator(t):t}const Tt=5,Yn=async()=>(await bn(async()=>{const{ResourceCenterAssistantChat:t}=await import("./ResourceCenterAssistantChat.js");return{ResourceCenterAssistantChat:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]))).ResourceCenterAssistantChat,Rt=({session:t,isOpen:n,flowSession:r,checklistSession:s,resourceCenterLauncherHidden:o})=>{const c=x(),{t:i}=ne(),{company:a}=t.flow,{version:E}=t,d=E.resourceCenter,u=be(E.theme),p=t.locale?t.locale.standardLocaleId:t.version.theme.languageId;l.useEffect(()=>{pe.changeLanguage(p)},[p]);const{loaded:h}=pt(window,wt,u),[w,b]=l.useState(!1),v=h&&w,[N,S]=l.useState(bt()),[j,C]=l.useState(vt()),L=l.useCallback(()=>{S(bt()),C(vt())},[]);jn(L);const{zIndex:K,bringToFront:P}=vn(),[O,V]=l.useState(null),[U,Q]=l.useState(null),[J,ce]=l.useState(null),ae=l.useRef(null),[q,Gt]=l.useState(null),[Je,Jt]=l.useState(null),[Xe,Xt]=l.useState(null),[Yt,en]=l.useState(0),[tn,nn]=l.useState(0),Ce=l.useCallback(()=>{U&&en(Math.round(U?.offsetWidth||0)),nn(Math.round((J?.offsetHeight||0)+(q?.offsetHeight||0)+(Je?.offsetHeight||0)+(Xe?.offsetHeight||0)))},[U,J,q,Je,Xe]);l.useLayoutEffect(()=>{if(!O||typeof _e!="function")return;const f=new _e(()=>{Ce()});return f.observe(O,{childList:!0,attributes:!0,subtree:!0}),()=>{f.disconnect()}},[O,Ce]),l.useLayoutEffect(()=>{Ce()});const[Ye,et]=l.useState(!1),ke=l.useRef(),le=l.useCallback(()=>{et(!0),window.clearTimeout(ke.current),ke.current=window.setTimeout(()=>{et(!1)},u.resourceCenterTransitionDuration)},[u.resourceCenterTransitionDuration]);l.useEffect(()=>()=>{window.clearTimeout(ke.current)},[]);const ie=l.useCallback(()=>{P(),le(),c.openResourceCenter()},[P,c,le]),Ne=l.useCallback(()=>{le(),c.closeResourceCenter()},[c,le]),[tt,X]=l.useState(!1);l.useEffect(()=>{if(tt){if(!Xn())if(n){const f='button:not([tabindex="-1"]), [tabindex]:not([tabindex="-1"]), input, textarea';let k=q?.querySelector(".userflowjs-assistant-chat-input textarea")||q?.querySelector(f)||J?.querySelector(f);if(k){const T=k.closest&&k.closest(".userflowjs-resource-center-checklist")||null;T?Sn(T):k.focus({preventScroll:!0})}}else U?.focus({preventScroll:!0});X(!1)}},[tt,n,q,J,U]),l.useEffect(()=>{const f=O?.ownerDocument.defaultView;if(!n||!f)return;const k=T=>{T.key==="Escape"&&(Ne(),X(!0))};return f.addEventListener("keydown",k),()=>f.removeEventListener("keydown",k)},[n,O,X,Ne]);const[g,ue]=l.useState(()=>_t(t,re.getItem(`resourceCenterRoute:v1:${t.id}`))),F=l.useCallback((f,k)=>{ue(f);const T=zt(f);T?re.setItem(`resourceCenterRoute:v1:${t.id}`,T):re.removeItem(`resourceCenterRoute:v1:${t.id}`),k?.detail===0&&X(!0)},[t.id]);l.useEffect(()=>{const f=re.getItem(`resourceCenterRoute:v1:${t.id}`);ue(_t(t,f))},[t]),l.useEffect(()=>{if(!t.draftMode||!g||!("block"in g)||!g.block)return;const f=d.blocks.find(k=>k.cvid===g.block.cvid);f?JSON.stringify(f)!==JSON.stringify(g.block)&&ue({...g,block:f}):ue(null),g.block},[t.draftMode,d,g]);const de=l.useMemo(()=>d.blocks.filter(f=>!(f.type===y.CHECKLIST&&!s||f.type===y.DIVIDER&&u.resourceCenterAutoDividers||f.hiddenWhenFlowsActive&&f.hiddenWhenFlowsActive.some(k=>k===r?.flow.id||k===s?.flow.id))),[d,r,s,u.resourceCenterAutoDividers]),je=l.useMemo(()=>Wt(de),[de]),ye=l.useMemo(()=>!s||!d.blocks.some(f=>f.type===y.CHECKLIST)?0:mn(s),[d,s]),M=l.useMemo(()=>d.blocks.find(f=>f.type===y.CONTACT&&f.chatEnabled&&f.chatProvider),[d]),[rn,nt]=l.useState(!1),me=l.useCallback(()=>{c.closeResourceCenter(),M&&M.chatProvider!==W.CUSTOM&&nt(!0)},[c,M]),fe=l.useCallback(()=>{nt(!1)},[]),rt=l.useCallback(()=>{if(M)try{xe[M.chatProvider].hide({block:M}),fe()}catch(f){console.error(`Userflow.js: Error when hiding ${M.chatProvider}:`,f)}},[M,fe]);l.useEffect(()=>{if(!M)return;Te.autoHide3pDisabled=!0;const f=xe[M.chatProvider];try{const k=f.configure({block:M,onShow:me,onHide:fe});return()=>{k()}}catch(k){console.error(`Userflow.js: Error when configuring ${M.chatProvider}:`,k);return}},[M,me,fe]),l.useEffect(()=>{n&&rt()},[rt,n]);const I=Zt(t),Se=l.useMemo(()=>{if(!I)return null;if(I.boosterAnnouncement){const f=I.boosterAnnouncement;if(!f.seen&&(f.level===B.TOAST||f.level===B.MODAL))return f}return I.popoutAnnouncement&&!I.popoutAnnouncement.seen?I.popoutAnnouncement:null},[I]),st=be(Se?.theme||E.theme);pt(window,wt,o?st:void 0);const he=l.useCallback((f,k,T,Y,Ee)=>{const it=()=>{Ge(c,f)};return e.createElement(se.Provider,{value:{...T,data:f.data}},f.level===B.MODAL&&e.createElement(Ut,{session:T,open:ie,navigate:F,block:k,announcement:f,onDismiss:it}),(f.level===B.TOAST||f.level===B.POPOUT)&&e.createElement($t,{session:T,open:ie,navigate:F,block:k,announcement:f,onDismiss:it,isStandalonePopout:Ee?.isStandalonePopout,rcPlacement:Y.resourceCenterPlacement}))},[c,ie,F]),sn=(f,k,T)=>{const Y={...Re(T),zIndex:Et(Cn),position:"fixed",top:0,left:0,width:"100vw",height:"100vh",pointerEvents:f.level===B.MODAL?"auto":"none"},Ee={...t,data:{...t.data,...f.data||{}}};return e.createElement(se.Provider,{value:Ee},e.createElement("div",{className:"userflowjs-theme-root",style:Y,id:"userflowjs-announcement-app"},he(f,k,Ee,T,{isStandalonePopout:f.level===B.POPOUT})))},on=!!g&&(g.kind==="search"||g.kind==="flows"||g.kind==="knowledgeBase"),ot=g?.kind==="assistant"||g?.kind==="announcementList"||g?.kind==="announcementShow",Ie=Math.min(ot?u.resourceCenterFullWidth:u.resourceCenterWidth,N-2*u.resourceCenterPaddingX),cn=540,an=720,ln={zIndex:u.resourceCenterZIndex!=null?u.resourceCenterZIndex:n?K:Et(gn),position:v?void 0:"absolute",visibility:v&&!rn?void 0:"hidden"},un={width:(n?Ie:Yt)+"px",height:n?Math.min(on?cn:ot?an:tn,j-2*u.resourceCenterPaddingY,u.resourceCenterMaxHeight==null?Number.MAX_VALUE:u.resourceCenterMaxHeight)+"px":void 0,display:o&&!n?"none":void 0},[dn,ct]=l.useState(!1),at=()=>{ie(),X(!0)},lt=u.resourceCenterDisplayChecklistProgress&&s&&ye>0?e.createElement("div",{"data-testid":"resource-center-launcher-badge",className:"userflowjs-resource-center-launcher-badge"},ye,e.createElement("div",{className:"userflowjs-a11y-only"},"uncompleted tasks")):null;let we="",Ae="";return u.resourceCenterLauncherTextMode===ut.CHECKLIST_OVERRIDE&&s&&ye>0?we=s.version.checklist?.launcherText||"Get Started":u.resourceCenterLauncherTextMode!==ut.NONE&&(Ae=d.buttonText),o&&!n&&Se&&I?sn(Se,I,st):e.createElement(se.Provider,{value:t},e.createElement("div",{"data-testid":"resource-center-app",className:"userflowjs-resource-center-app userflowjs-theme-root",style:Re(u),dir:pe.dir()},e.createElement("div",{className:D({"userflowjs-resource-center":!0,"userflowjs-resource-center--fixed":!0,[`userflowjs-resource-center--placement-${u.resourceCenterPlacement.toLowerCase().replace(/_/g,"-")}`]:!0}),style:ln},e.createElement("div",{className:"userflowjs-resource-center-frame-wrapper",onMouseEnter:()=>ct(!0),onMouseLeave:()=>ct(!1)},e.createElement(qe,{className:D({"userflowjs-resource-center-frame":!0,"userflowjs-resource-center-frame--animating":Ye,"userflowjs-resource-center-frame--open":n,"userflowjs-resource-center-frame--closed":!n}),style:un,stylesheet:He,theme:u,onStylesheetsLoad:b,title:"Resource center"},v&&e.createElement(e.Fragment,null,e.createElement("div",{ref:V,className:D({"userflowjs-resource-center-frame-root":!0,[`userflowjs-resource-center-frame-root--placement-${u.resourceCenterPlacement.toLowerCase().replace(/_/g,"-")}`]:!0,"userflowjs-resource-center-frame-root--animating":Ye,"userflowjs-resource-center-frame-root--open":n,"userflowjs-resource-center-frame-root--closed":!n}),role:n?"dialog":void 0,"aria-label":n?d.headerText:void 0},!o&&e.createElement("div",{className:"userflowjs-resource-center-launcher-container"},e.createElement("button",{ref:Q,className:D({"userflowjs-resource-center-launcher-button":!0,"userflowjs-resource-center-launcher-button--hover":dn}),onClick:at,"aria-label":`Open ${d.headerText}`},lt,we&&e.createElement("div",{"data-testid":"resource-center-launcher-text",className:"userflowjs-resource-center-launcher-text"},we),(lt||we)&&e.createElement("div",{className:"userflowjs-resource-center-launcher-divider"}),Ae&&e.createElement("div",{"data-testid":"resource-center-launcher-text",className:"userflowjs-resource-center-launcher-text"},Ae),e.createElement("div",{className:"userflowjs-resource-center-launcher-icon"},u.resourceCenterLauncherIconType===dt.PLAINTEXT?"?":u.resourceCenterLauncherIconType===dt.DEFAULT?e.createElement(qn,null):u.rcIconAsset&&u.rcIconAsset.assetUrl?e.createElement("img",{src:u.rcIconAsset.assetUrl,className:"company-icon",style:{height:`${u.rcIconSize}px`,width:`${u.rcIconSize}px`}}):e.createElement("span",null)))),e.createElement("div",{ref:ae,className:"userflowjs-resource-center-body",style:{width:Ie+"px"}},e.createElement("div",{ref:Gt,className:D({"userflowjs-resource-center-body-content":!0,"userflowjs-resource-center-body-content--padding":g?.kind!=="assistant","userflowjs-resource-center-body-content--same-background":u.sameBackground,"userflowjs-resource-center-body-content--with-made-with-userflow":a.resourceCenterBranding})},n&&e.createElement(e.Fragment,null,g?g.kind==="search"?e.createElement(tr,{session:t,navigate:F}):g.kind==="email"?e.createElement(nr,{block:g.block,session:t}):g.kind==="phone"?e.createElement(rr,{block:g.block,session:t}):g.kind==="flows"?e.createElement(sr,{block:g.block,initialQ:g.initialQ,session:t,navigate:F}):g.kind==="knowledgeBase"?e.createElement(or,{block:g.block,initialQ:g.initialQ,session:t,bodyRef:ae}):g.kind==="subpage"?e.createElement(cr,{block:g.block,session:t}):g.kind==="announcementList"||g.kind==="announcementShow"?e.createElement(ar,{bodyRef:ae,session:t,route:g,navigate:F}):g.kind==="assistant"?e.createElement(ur,{block:g.block,initialUserContent:g.initialUserContent,session:t,navigate:F,chatBlock:M,onChatShow:me}):null:e.createElement(e.Fragment,null,de.map((f,k)=>{const T=oe[f.type],Y=de[k+1];return T?e.createElement(e.Fragment,{key:f.id},e.createElement(T.View,{session:t,flowSession:r,checklistSession:s,block:f,navigate:F,onChatShow:me}),Y&&On(u,f.type,Y.type)&&e.createElement("div",{className:"userflowjs-resource-center-divider"})):null}))))),a.resourceCenterBranding&&e.createElement("div",{className:"userflowjs-resource-center-made-with-userflow"},e.createElement("div",{className:"userflowjs-resource-center-made-with-userflow-content",ref:Jt},e.createElement("a",{href:"https://userflow.com/?utm_source=made-with-userflow&utm_medium=link&utm_campaign=made-with-userflow-"+a.slug+"&utm_content=resource-center",target:"_blank",rel:"noopener noreferrer"},e.createElement(yn,null),e.createElement("div",null,"Made with Userflow")))),t.draftMode&&e.createElement("div",{className:"userflowjs-resource-center-preview"},e.createElement("div",{ref:Xt,className:"userflowjs-resource-center-preview-content"},e.createElement("div",{className:"userflowjs-resource-center-preview-text"},"Preview"),e.createElement("button",{className:"userflowjs-resource-center-preview-button",onClick:()=>{c.endFlow(t,{endReason:fn.USER_CLOSED})}},e.createElement(A,{icon:Ke})))),e.createElement("div",{className:"userflowjs-resource-center-header",style:{width:Ie+"px"}},e.createElement("div",{ref:ce,className:"userflowjs-resource-center-header-content"},g==null?e.createElement("div",{className:"userflowjs-resource-center-header-text"},d.headerText):e.createElement("button",{className:"userflowjs-resource-center-icon-button",onClick:f=>F(g?.kind==="announcementShow"?{kind:"announcementList",block:g.block}:null,f)},e.createElement("div",{className:"userflowjs-rtl-mirrored"},e.createElement(A,{icon:Tn})),e.createElement("div",{className:"userflowjs-resource-center-icon-button__text"},i("resource_center.back"))),e.createElement("div",{className:"flex-1"}),je.length>0&&e.createElement("button",{className:"userflowjs-resource-center-icon-button",onClick:()=>{let f={kind:"search"};if(je.length===1){const k=je[0],T=oe[k.type];T.routeTo&&(f=T.routeTo({block:k}))}g?.kind==="search"?F(null):(R(c,t,null,"Search icon"),F(f))},"aria-label":"Search"},e.createElement(A,{icon:Rn})),e.createElement("button",{className:"userflowjs-resource-center-icon-button userflowjs-resource-center-close-button",onClick:f=>{Ne(),f.detail===0&&X(!0)},"aria-label":`Close ${d.headerText}`},e.createElement(A,{icon:_n}))))))),!n&&!r&&!o&&I&&I.unreadAnnouncementCount>0&&e.createElement(er,{theme:u,count:I.unreadAnnouncementCount,onClick:at})),!n&&!r&&!o&&I?.popoutAnnouncement&&he(I.popoutAnnouncement,I,t,u),!n&&!r&&!o&&I?.boosterAnnouncement&&I.boosterAnnouncement.level===B.MODAL&&he(I.boosterAnnouncement,I,t,u),!n&&!r&&!o&&I?.boosterAnnouncement&&I.boosterAnnouncement.level===B.TOAST&&he(I.boosterAnnouncement,I,t,u))))},er=({theme:t,count:n,onClick:r})=>{const[s,o]=l.useState(!1);return e.createElement(qe,{className:D({"userflowjs-resource-center-launcher-unread-badge":!0}),noScroll:!0,style:{position:s?void 0:"absolute",visibility:s?void 0:"hidden"},stylesheet:He,theme:t,onStylesheetsLoad:o,title:"Resource center unread badge"},e.createElement(Ot,{count:n,onClick:r}))},Ot=({count:t,onClick:n})=>{let r=null;return t>9&&(t=9,r=e.createElement("span",{className:"userflowjs-unread-badge-plus"},"+")),e.createElement("div",{className:D({"userflowjs-unread-badge":!0,"userflowjs-unread-badge--clickable":!!n}),onClick:n},e.createElement("span",null,t),r)},$t=({session:t,open:n,navigate:r,announcement:s,block:o,rcPlacement:c,onDismiss:i,isStandalonePopout:a})=>{const E=l.useRef(null),d=be(s.theme),u=d.toastPlacement,p=!!o.boosterAnnouncement||a!==void 0&&s?.level===B.TOAST,h=u===c;let w=null,b=null;s&&(w=s.toastAutoDismiss??d.toastAutoDismiss,b=s.toastWidth?s.toastWidth:d.toastWidth);const v=x(),[N,S]=l.useState(!1),{height:j,setEl:C}=Pn();l.useEffect(()=>{const Q=E.current;if(!Q||w===null)return;const J=Date.now(),ce=()=>{const q=1-(Date.now()-J)/(new Dt(w||0).toNumber()*1e3);q<=0?(Q.style.width="0%",s&&z(v,s)):(Q.style.width=`${q*100}%`,requestAnimationFrame(ce))};return requestAnimationFrame(ce),()=>{Q&&(Q.style.width="0%")}},[E.current,w,v,s,z]);const L=i||(()=>{s&&z(v,s)}),K=20,P=l.useMemo(()=>CSS.supports("height: 100dvh")?"dvh":"vh",[]),O=()=>{p&&s&&(z(v,s),R(v,t,o,s.title),r({kind:"announcementShow",block:o,announcementId:s.id}),n())};if(!s)return null;const V=!!a&&!!c,U=(a!==void 0||!h)&&!!u&&p;return e.createElement("div",{className:D({"userflowjs-resource-center-popout":!p,"userflowjs-resource-center-toast":p,[`userflowjs-resource-center-popout-standalone--${c?.toLowerCase()?.replace(/_/g,"-")}`]:V,[`userflowjs-resource-center-toast--${u?.toLowerCase()?.replace(/_/g,"-")}`]:U}),style:Re(d)},e.createElement(qe,{className:D({"userflowjs-resource-center-popout-frame":!0}),style:{height:`calc(min(${j}px, 100${P} - 2 * var(--userflow-resource-center-padding-y) - var(--userflow-resource-center-collapsed-height) - ${K}px)`,position:N?void 0:"absolute",visibility:N?void 0:"hidden",...b&&p?{width:b}:{}},stylesheet:He,theme:d,onStylesheetsLoad:S,title:"Resource center popout"},p&&e.createElement("div",{className:"userflowjs-bubble-progress--default"},e.createElement("div",{className:"userflowjs-bubble-progress__fill",ref:E})),e.createElement("div",{ref:C,className:"userflowjs-resource-center-popout-frame-root",style:{cursor:p?"pointer":"auto",padding:p&&d.toastPadding||void 0}},e.createElement("div",{onClick:O},e.createElement("h2",{className:"userflowjs-announcement-title"},e.createElement("span",{className:"userflowjs-unread-dot"}),e.createElement("span",null,s.title)),e.createElement("div",{className:"userflowjs-announcement-time"},e.createElement("div",{className:"userflowjs-announcement-time-text"},ge(s.time))),e.createElement("div",{className:"userflowjs-announcement-content userflowjs-bubble-content"},e.createElement(H,{doc:s.content,buttons:s.buttons,lookupAttribute:_(s.data)})),!p&&e.createElement(e.Fragment,null,s.moreEnabled&&e.createElement("div",{className:"userflowjs-announcement-more"},e.createElement("button",{className:"userflowjs-tertiary-button",onClick:()=>{z(v,s),R(v,t,o,s.title),r({kind:"announcementShow",block:o,announcementId:s.id}),n()}},e.createElement("div",null,(s.moreEnabled?s.moreButtonText:null)||"Read more"),!p&&e.createElement("span",{className:"userflowjs-rtl-mirrored"},e.createElement(A,{icon:Bt})))))),p&&s.moreEnabled&&e.createElement("div",{onClick:O,className:"userflowjs-announcement-more--toast"},(s.moreEnabled?s.moreButtonText:null)||"Read more"),e.createElement("div",{className:"userflowjs-bubble-toolbar"},e.createElement("button",{className:"userflowjs-bubble-toolbar-button",onClick:L,"aria-label":"Dismiss announcement"},e.createElement(A,{icon:Ke}))))),!p&&!a&&e.createElement("div",{className:"userflowjs-resource-center-popout-notch"}))},Ut=({session:t,open:n,navigate:r,announcement:s,block:o,onDismiss:c})=>{const i=x(),a=be(s.theme),d=c||(()=>{z(i,s)});return e.createElement(Dn,{company:t.flow.company,theme:a,position:"fixed",width:s.modalWidth,stepAppearance:hn.MODAL,zIndex:a.checklistZIndex,autoHide3pEnabled:!0,onModalBackdropClick:d,noIframe:!0,isModalAnnouncement:!0},e.createElement("div",{id:"userflowjs-bubble-content",className:"userflowjs-bubble-content"},e.createElement("h1",null,s.title),e.createElement(H,{doc:s.content,buttons:s.buttons,lookupAttribute:_(s.data)})),e.createElement("div",{className:"userflowjs-bubble-toolbar"},e.createElement("button",{className:"userflowjs-bubble-toolbar-button",onClick:d,"aria-label":"Dismiss announcement"},e.createElement(A,{icon:Ke}))),s.moreEnabled&&e.createElement("div",{className:"userflowjs-announcement-more--modal"},e.createElement("button",{className:"userflowjs-bubble-button--primary",onClick:()=>{z(i,s),R(i,t,o,s.title),r({kind:"announcementShow",block:o,announcementId:s.id}),n()}},e.createElement("div",null,(s.moreEnabled?s.moreButtonText:null)||"Read more"))))};function Wt(t){return t.filter(n=>{const r=oe[n.type];return r.isSearchable?r.isSearchable(n):!!r.search})}const oe={[y.ACTION]:{View:t=>{const{block:n,session:r,flowSession:s,checklistSession:o}=t,c=x(),[i,a]=l.useState(!1),E=s?.id,d=o?.id;return l.useEffect(()=>{a(!1)},[E,d]),e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:i?void 0:()=>{R(c,r,n);const u=n.actions.find(p=>p.type===wn.START_FLOW);u?u.otherFlow?.id!==o?.flow.id&&a(!0):c.closeResourceCenter(),kn(c,r,n.actions)},disabled:i},e.createElement(ee,{...t}),e.createElement(Z,{...t}),i&&e.createElement($,null))}},[y.ANNOUNCEMENTS]:{View:t=>{const{block:n,session:r,navigate:s}=t,o=x();return e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:c=>{R(o,r,n),s({kind:"announcementList",block:n},c)}},n.unreadAnnouncementCount>0?e.createElement("div",{className:"userflowjs-resource-center-block-icon"},e.createElement(Ot,{count:n.unreadAnnouncementCount})):e.createElement(ee,{...t}),e.createElement(Z,{...t}),e.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},e.createElement(A,{icon:te})))}},[y.ASSISTANT]:{View:t=>{const{block:n,session:r,navigate:s}=t,o=x(),[c,i]=l.useState("");return n.assistantAppearance===En.INPUT?e.createElement("div",{className:"userflowjs-resource-center-assistant-block"},e.createElement(Jn,{value:c,onChange:i,placeholder:Ve(n.name,{lookupAttribute:_(r.data)}),onSubmit:()=>{R(o,r,n),s({kind:"assistant",block:n,initialUserContent:c})}})):e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:()=>{R(o,r,n),s({kind:"assistant",block:n,initialUserContent:""})}},e.createElement(ee,{...t}),e.createElement(Z,{...t}))}},[y.CHECKLIST]:{View:({checklistSession:t})=>e.createElement("div",{"data-testid":"resource-center-checklist",className:"userflowjs-resource-center-checklist"},e.createElement(In,{session:t}),e.createElement(Fn,{draftMode:t.draftMode?"CHECKLIST PREVIEW":!1}))},[y.CONTACT]:{View:t=>{const{block:n,session:r,navigate:s,onChatShow:o}=t,c=x(),i=[];return n.emailEnabled&&i.push({icon:Ln,label:"Email",isRoute:!0,onClick:a=>{R(c,r,n,"Email"),s({kind:"email",block:n},a)}}),n.phoneEnabled&&i.push({icon:Mn,label:"Phone",isRoute:!0,onClick:a=>{R(c,r,n,"Phone"),s({kind:"phone",block:n},a)}}),n.chatEnabled&&i.push({icon:Bn,label:"Live-chat",isRoute:!1,onClick:()=>{R(c,r,n,"Chat"),Qt(r,n,o)}}),e.createElement("div",{className:D({"userflowjs-resource-center-block":!0,"userflowjs-resource-center-block--clickable":i.length===1}),onClick:i.length===1?i[0].onClick:void 0},i.length===1&&e.createElement("div",{className:"userflowjs-resource-center-block-icon"},e.createElement(A,{icon:i[0].icon})),e.createElement(Z,{...t}),i.length>1&&i.map(({icon:a,label:E,onClick:d},u)=>e.createElement("button",{key:u,className:"userflowjs-resource-center-icon-button",onClick:d,"aria-label":E},e.createElement(A,{icon:a}))),i.length===1&&i[0].isRoute&&e.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},e.createElement(A,{icon:te})))}},[y.DIVIDER]:{View:()=>e.createElement("div",{className:"userflowjs-resource-center-divider"})},[y.FLOWS]:{View:t=>{const{block:n,session:r,navigate:s}=t,o=x();return e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:c=>{R(o,r,n),s({kind:"flows",block:n},c)}},e.createElement(ee,{...t}),e.createElement(Z,{...t}),e.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},e.createElement(A,{icon:te})))},routeTo:({block:t,initialQ:n})=>({kind:"flows",block:t,initialQ:n}),isSearchable:t=>!!t.searchEnabled,search:async({client:t,session:n,block:r,q:s})=>{const{flows:o}=await t.send({kind:"ListResourceCenterBlockFlows",sessionId:n.id,blockCvid:r.cvid},{handlesRejection:!0}),c=Ht(o,s),i=c.slice(0,Tt);return{block:r,truncated:i.length===c.length,results:i.map(a=>({kind:"flow",flow:a}))}}},[y.KNOWLEDGE_BASE]:{View:t=>{const{block:n,session:r,navigate:s}=t,o=x();return e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:c=>{R(o,r,n),s({kind:"knowledgeBase",block:n},c)}},e.createElement(ee,{...t}),e.createElement(Z,{...t}),e.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},e.createElement(A,{icon:te})))},routeTo:({block:t,initialQ:n})=>({kind:"knowledgeBase",block:t,initialQ:n}),search:async({client:t,session:n,block:r,q:s})=>{const{truncated:o,articles:c}=await t.send({kind:"SearchKnowledgeBase",sessionId:n.id,blockCvid:r.cvid,q:s,offset:0,limit:Tt},{handlesRejection:!0});return{block:r,truncated:o,results:c.map(i=>({kind:"article",article:i}))}}},[y.MESSAGE]:{View:({block:t,session:n})=>e.createElement("div",{className:"userflowjs-resource-center-block"},e.createElement("div",{className:"userflowjs-resource-center-block-text userflowjs-bubble-content"},e.createElement(H,{doc:t.content,lookupAttribute:_(n.data)})))},[y.SUBPAGE]:{View:t=>{const{block:n,session:r,navigate:s}=t,o=x();return e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:c=>{R(o,r,n),s({kind:"subpage",block:n},c)}},e.createElement(ee,{...t}),e.createElement(Z,{...t}),e.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},e.createElement(A,{icon:te})))}}},ee=({block:t})=>t.icon?e.createElement("div",{className:"userflowjs-resource-center-block-icon"},e.createElement(A,{icon:t.icon,size:16})):null,Z=({block:t,session:n})=>e.createElement("div",{className:"userflowjs-resource-center-block-text"},e.createElement(G,{doc:t.name,lookupAttribute:_(n.data)}));function zt(t){if(!t)return null;let n;"block"in t&&t.block!=null&&(n=t.block.cvid);const r={kind:t.kind,blockCvid:n};switch(t.kind){case"announcementShow":r.announcementId=t.announcementId;break}return JSON.stringify(r)}function _t(t,n){if(!n)return null;const r=JSON.parse(n);let s;if(r.blockCvid&&(s=t.version.resourceCenter?.blocks.find(c=>c.cvid===r.blockCvid)),!s&&r.kind!=="search")return null;const o={kind:r.kind,block:s};switch(o.kind){case"announcementShow":o.announcementId=r.announcementId;break}return o}const tr=({session:t,navigate:n})=>{const r=x(),s=t.version.resourceCenter.blocks,o=Wt(s),{t:c}=ne(),i=l.useRef(null),[a,E]=l.useState(""),[d,u]=Ze(a,E),[p,h]=l.useState(null);return l.useEffect(()=>{if(a.trim()===""){h(null);return}let w=!1;return(async()=>{h(null);const v=await Promise.all(s.map(async N=>{const{search:S}=oe[N.type];if(!S)return null;try{return await S({client:r,session:t,block:N,q:a})}catch(j){return console.error(`Userflow.js: Global search failed for ${N.type} block=`,N,"error=",j),null}}));w||h(v.filter(N=>N!=null&&N.results.length>0))})(),()=>{w=!0}},[r,t,s,a]),l.useEffect(()=>{i.current?.focus({preventScroll:!0})},[]),e.createElement(e.Fragment,null,e.createElement("div",{className:"userflowjs-resource-center-list-route-search"},e.createElement("input",{ref:i,className:"userflowjs-text-input",type:"text",value:d,onChange:w=>u(w.target.value),placeholder:c("resource_center.search_placeholder")})),a.trim()===""?e.createElement("div",{"data-testid":"resource-center-empty-query",className:"userflowjs-resource-center-list-route-error"},c("resource_center.search_in")," ",o.map((w,b)=>e.createElement(e.Fragment,{key:w.cvid},b>0&&(b===o.length-1?` ${c("and")} `:", "),e.createElement("b",null,e.createElement(G,{doc:w.name,lookupAttribute:_(t.data)})))),"."):p?p.length===0?e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},c("resource_center.no_results_found")):p.map(({block:w,truncated:b,results:v},N)=>{const S=oe[w.type],j=S.routeTo&&S.routeTo({block:w,initialQ:a});return e.createElement(e.Fragment,{key:w.cvid},N>0&&e.createElement("div",{className:"userflowjs-resource-center-divider"}),e.createElement("div",{className:"userflowjs-resource-center-label"},e.createElement(G,{doc:w.name,lookupAttribute:_(t.data)})),v.map((C,L)=>C.kind==="flow"?e.createElement(Vt,{key:C.flow.id,block:w,session:t,flow:C.flow,navigate:n}):C.kind==="article"?e.createElement(qt,{key:L,block:w,session:t,article:C.article}):null),!b&&j&&e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:C=>{R(r,t,w),n(j,C)}},e.createElement("div",{className:"userflowjs-resource-center-block-text"},c("more"),":"," ",e.createElement(G,{doc:w.name,lookupAttribute:_(t.data)})),e.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},e.createElement(A,{icon:te}))))}):e.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},e.createElement($,null)))},nr=({block:t,session:n})=>e.createElement("div",{className:"userflowjs-resource-center-content-route userflowjs-bubble-content"},e.createElement(H,{doc:t.emailContent,lookupAttribute:_(n.data)})),rr=({block:t,session:n})=>e.createElement("div",{className:"userflowjs-resource-center-content-route userflowjs-bubble-content"},e.createElement(H,{doc:t.phoneContent,lookupAttribute:_(n.data)})),sr=({block:t,initialQ:n,session:r,navigate:s})=>{const{t:o}=ne(),c=l.useRef(null),[i,a]=l.useState(n||""),[E,d]=Ze(i,a),{data:u,error:p}=ve({message:{kind:"ListResourceCenterBlockFlows",sessionId:r.id,blockCvid:t.cvid}}),h=u?.flows,w=l.useMemo(()=>h?Ht(h,i):null,[h,i]);return l.useEffect(()=>{c.current?.focus({preventScroll:!0})},[]),e.createElement(e.Fragment,null,e.createElement("div",{className:"userflowjs-resource-center-list-route-header"},e.createElement("div",{className:"userflowjs-resource-center-list-route-title"},e.createElement(G,{doc:t.name,lookupAttribute:_(r.data)}))),t.searchEnabled&&e.createElement("div",{className:"userflowjs-resource-center-list-route-search"},e.createElement("input",{ref:c,className:"userflowjs-text-input",type:"text",value:E,onChange:b=>d(b.target.value),placeholder:o("resource_center.search_placeholder")})),p?e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},o("resource_center.generic_error")):w?w.length===0?e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},o("resource_center.no_results_found")):w.map(b=>e.createElement(Vt,{key:b.id,block:t,session:r,flow:b,navigate:s})):e.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},e.createElement($,{fadeIn:!0})))};function Ht(t,n){const r=n.toLowerCase().trim();return r===""?t:t.filter(s=>s.name.toLowerCase().includes(r))}const Vt=({block:t,session:n,flow:r,navigate:s})=>{const o=x(),[c,i]=l.useState(!1);return l.useEffect(()=>{if(!c||r.type!==mt.CHECKLIST)return;const a=()=>{o.checklistSession?.flow.id===r.id&&(E(),s(null))},E=()=>{o.off("checklistChanged",a)};return o.on("checklistChanged",a),E},[o,c,r.type,r.id,s]),e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:()=>{if(R(o,n,t,r.name),o.checklistSession?.flow.id===r.id){s(null);return}o.startFlow({flowId:r.id,startReason:n.draftMode?ft.DRAFT:ft.RESOURCE_CENTER,replaceCurrent:!0}),i(!0);const a=Ve(r.url,{lookupAttribute:_(n.data)});a&&Nn(a)},disabled:c},r.iconSetting!==pn.HIDE&&e.createElement("div",{className:"userflowjs-resource-center-block-icon"},r.icon?e.createElement(A,{icon:r.icon,size:16}):e.createElement(A,{icon:r.type===mt.CHECKLIST?"regular/tasks":"regular/shoe-prints",size:16})),n.draftMode&&!r.published&&e.createElement("div",{className:"userflowjs-resource-center-code-block"},e.createElement("div",{title:"Unpublished. Preview only"},e.createElement("code",null,"P"))),e.createElement("div",{className:"userflowjs-resource-center-block-text"},r.name),c&&e.createElement($,null))},or=({block:t,initialQ:n,session:r,bodyRef:s})=>{const{t:o}=ne(),c=l.useRef(null),[i,a]=l.useState(n||""),[E,d]=Ze(i,a),{loading:u,loadingMore:p,data:h,messageForData:w,error:b,loadMore:v}=ve({message:{kind:"SearchKnowledgeBase",sessionId:r.id,blockCvid:t.cvid,q:i,offset:0}}),N=h?.truncated,S=l.useCallback(()=>{v((C,L)=>({...L,offset:C.articles.length}),(C,L)=>({...L,articles:[...C.articles,...L.articles]}))},[v]);Kt({bodyRef:s,loading:u,loadingMore:p,truncated:N,loadMoreHelper:S}),l.useEffect(()=>{c.current?.focus({preventScroll:!0})},[]);let j=t.knowledgeBaseUrl||"";return j.match(/^https?:\/\//)||(j=`http://${j}`),j=Pt(j),e.createElement(e.Fragment,null,e.createElement("div",{className:"userflowjs-resource-center-list-route-header"},e.createElement("div",{className:"userflowjs-resource-center-list-route-title"},e.createElement(G,{doc:t.name,lookupAttribute:_(r.data)})),e.createElement("a",{className:"userflowjs-resource-center-icon-button",href:j,target:"_blank",rel:"noopener noreferrer"},e.createElement(A,{icon:xn}))),e.createElement("div",{className:"userflowjs-resource-center-list-route-search"},e.createElement("input",{ref:c,className:"userflowjs-text-input",type:"text",value:E,onChange:C=>d(C.target.value),placeholder:o("resource_center.search_placeholder")})),b?e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},b.code==="quota_exceeded"?"Sorry, this company has reached its max number of searches. Consider asking Userflow to be moved to a dedicated search engine for a higher quota.":b.humanMessage||o("resource_center.generic_error")):u||!h?e.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},e.createElement($,null)):h.articles.length===0?w?.q===""?null:e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},o("resource_center.no_results_found")):e.createElement(e.Fragment,null,w?.q===""&&e.createElement("div",{className:"userflowjs-resource-center-label"},o("resource_center.suggested_articles")),h.articles.map((C,L)=>e.createElement(qt,{key:L,block:t,session:r,article:C})),p&&e.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},e.createElement($,null))))},qt=({block:t,article:n,session:r})=>{const s=x();return e.createElement("a",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:()=>{R(s,r,t,n.title)},href:Pt(n.url),target:"_blank",rel:"noopener noreferrer"},e.createElement("div",{className:"userflowjs-resource-center-block-icon"},e.createElement(A,{icon:"regular/file-alt",size:16})),e.createElement("div",{className:"userflowjs-resource-center-block-text"},e.createElement("span",{dangerouslySetInnerHTML:{__html:n.htmlTitle}}),e.createElement("div",{className:"userflowjs-resource-center-block-subtext",dangerouslySetInnerHTML:{__html:n.htmlSnippet}})))},cr=({block:t,session:n})=>e.createElement("div",{className:"userflowjs-resource-center-content-route userflowjs-bubble-content"},e.createElement(H,{doc:t.content,lookupAttribute:_(n.data)})),ar=({bodyRef:t,session:n,route:r,navigate:s})=>{const o=x(),c=ve({message:{kind:"ListAnnouncements",beforeAnnouncementId:null},skip:r?.kind!=="announcementList"}),{loading:i,loadingMore:a,data:E,loadMore:d}=c,u=E?.truncated,p=l.useCallback(()=>{d((b,v)=>b.announcements.length>0?{...v,beforeAnnouncementId:b.announcements[b.announcements.length-1].id}:v,(b,v)=>({...v,announcements:[...b.announcements,...v.announcements]}))},[d]);Kt({bodyRef:t,loading:i,loadingMore:a,truncated:u,loadMoreHelper:p});const[h,w]=l.useState(void 0);return l.useLayoutEffect(()=>{t.current&&h!=null&&r?.kind==="announcementList"&&(t.current.scrollTop=h)},[t,h,r?.kind]),r?.kind==="announcementList"?e.createElement(lr,{bodyRef:t,session:n,block:r.block,onMoreClick:b=>{w(t.current?.scrollTop),R(o,n,r.block,b.title),s({kind:"announcementShow",block:r.block,announcementId:b.id})},...c}):r?.kind==="announcementShow"?e.createElement(ir,{announcementId:r.announcementId}):null},lr=({bodyRef:t,block:n,session:r,onMoreClick:s,error:o,loading:c,loadingMore:i,data:a})=>{const{t:E}=ne(),[d,u]=l.useMemo(()=>{const h=[],w=[];if(a){let b=-1;for(const v of a.announcements)b++,b<a.pageSize&&!v.seen&&v.level!==B.SILENT?h.push(v):w.push(v)}return[h,w]},[a]),p=d.length;return e.createElement(e.Fragment,null,e.createElement("div",{className:"userflowjs-resource-center-list-route-header"},e.createElement("div",{className:"userflowjs-resource-center-list-route-title"},e.createElement(G,{doc:n.name,lookupAttribute:_(r.data)}))),o?e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},o.humanMessage||E("resource_center.generic_error")):c||!a?e.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},e.createElement($,null)):a.announcements.length===0?e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},pe.exists("resource_center.no_announcements",{fallbackLng:[]})?E("resource_center.no_announcements"):E("resource_center.no_results_found")):e.createElement(e.Fragment,null,p>0&&e.createElement("div",{className:"userflowjs-announcement-unread-header"},E("resource_center.unread",{count:p})),d.map((h,w)=>e.createElement(Lt,{key:w,bodyRef:t,onMoreClick:()=>s(h),announcement:h})),d.length>0&&u.length>0&&e.createElement("div",{className:"userflowjs-announcement-seen-divider"}),u.map((h,w)=>e.createElement(Lt,{key:w,bodyRef:t,onMoreClick:()=>s(h),announcement:h})),i&&e.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},e.createElement($,null))))},xt=new Set;function z(t,n){xt.has(n.id)&&n.seen||(xt.add(n.id),Ge(t,n))}const Lt=({bodyRef:t,onMoreClick:n,announcement:r})=>{const s=x(),o=Mt(),c=l.useRef(null),i=l.useRef(!1);return l.useEffect(()=>{if(i.current||r.seen)return;const a=new IntersectionObserver(d=>{const u=d[0];u&&u.isIntersecting&&(z(s,r),i.current=!0,E())},{root:t.current,threshold:1}),E=()=>{a.disconnect()};return a.observe(c.current),E},[t,s,r]),e.createElement("div",{className:"userflowjs-announcement-list-item"},e.createElement("div",{className:"userflowjs-announcement-time-divider"},e.createElement("div",{className:"userflowjs-announcement-time-divider-line"}),e.createElement("div",{className:"userflowjs-announcement-time-text"},ge(r.time)),e.createElement("div",{className:"userflowjs-announcement-time-divider-line"})),e.createElement("h2",{ref:c,className:"userflowjs-announcement-title"},!r.seen&&r.level!==B.SILENT&&e.createElement("span",{className:"userflowjs-unread-dot"}),e.createElement("span",null,r.title)),e.createElement("div",{className:"userflowjs-announcement-content userflowjs-bubble-content"},e.createElement(se.Provider,{value:{...o,data:r.data}},e.createElement(H,{doc:r.content,buttons:r.buttons,lookupAttribute:_(r.data)}))),e.createElement("div",{className:"userflowjs-announcement-more"},r.moreEnabled&&e.createElement("button",{className:"userflowjs-tertiary-button",onClick:n},e.createElement("div",null,r.moreButtonText||"Read more"),e.createElement("span",{className:"userflowjs-rtl-mirrored"},e.createElement(A,{icon:Bt})))))},ir=({announcementId:t})=>{const n=x(),r=Mt(),{t:s}=ne(),{loading:o,data:c,error:i}=ve({message:{kind:"GetAnnouncement",announcementId:t}}),a=c?.announcement;return l.useEffect(()=>{!a||a.seen||z(n,a)},[n,a]),e.createElement(e.Fragment,null,i?e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},i.humanMessage||s("resource_center.generic_error")):o||!a?e.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},e.createElement($,null)):e.createElement(e.Fragment,null,e.createElement("div",{className:"userflowjs-announcement-show"},e.createElement("h2",{className:"userflowjs-announcement-title"},a?.title),e.createElement("div",{className:"userflowjs-announcement-time"},e.createElement("div",{className:"userflowjs-announcement-time-text"},ge(a.time))),e.createElement("div",{className:"userflowjs-bubble-content"},e.createElement(se.Provider,{value:{...r,data:a.data}},e.createElement(H,{doc:a.content,buttons:a.buttons,lookupAttribute:_(a.data)}),a.moreEnabled&&e.createElement(H,{doc:a.moreContent,buttons:a.moreButtons,lookupAttribute:_(a.data)}))))))},ur=({block:t,initialUserContent:n,session:r,navigate:s,onChatShow:o})=>{const c=t.assistantFlowId,i=x(),[a,E]=l.useState(null),[d,u]=l.useState(null),[p,h]=l.useState(null),[w]=l.useState(n);l.useEffect(()=>{n&&s({kind:"assistant",block:t,initialUserContent:""})},[n,t,s]),l.useEffect(()=>{let v=!1;return(async()=>{try{const S=re.getItem("assistantConversationId:"+c),[j,C]=await Promise.all([Yn(),i.send({kind:"GetAssistant",assistantFlowId:c,conversationId:S},{handlesRejection:!0,endBatch:!0})]);if(v)return;E(()=>j),u(C)}catch(S){console.error("Resource center assistant route failed to load:",S),h(S.humanMessage||"Sorry, something went wrong. Please try again or contact my human friends.")}})(),()=>{v=!0}},[i,c]);const b=l.useMemo(()=>{if(!t.assistantContactEnabled)return;const v=r.version.resourceCenter?.blocks.find(N=>N.type===y.CONTACT);if(v)return()=>{switch(R(i,r,t,t.assistantContactButtonText||void 0),t.assistantContactMethod){case ht.EMAIL:s({kind:"email",block:v});break;case ht.PHONE:s({kind:"phone",block:v});break;default:s(null),Qt(r,v,o);break}}},[i,r,t,o,s]);return p?e.createElement("div",{className:"userflowjs-assistant-chat"},e.createElement("div",{className:"userflowjs-assistant-chat__content"},e.createElement("div",{className:"userflowjs-assistant-chat__error"},p))):!a||!d?e.createElement($,{center:!0,fadeIn:!0}):e.createElement(a,{block:t,session:r,assistantReply:d,initialUserContent:w,onContactClick:b,contactButtonText:t.assistantContactButtonText||void 0})};function R(t,n,r,s){t.send({kind:"ClickResourceCenter",sessionId:n.id,description:r?Ve(r.name,{lookupAttribute:_(n.data)})+(s?` - ${s}`:""):s},{batch:!0})}function Kt({bodyRef:t,loading:n,loadingMore:r,truncated:s,loadMoreHelper:o}){l.useEffect(()=>{const c=t.current;if(!c||n||r||s)return;const i=()=>{c.scrollHeight-c.clientHeight-c.scrollTop>400||o()};return c.addEventListener("scroll",i),()=>{c.removeEventListener("scroll",i)}},[t,n,r,s,o])}function Qt(t,n,r){if(n.chatProvider){const s=xe[n.chatProvider];try{s.show({block:n})}catch(o){console.error(`Userflow.js: Error when showing ${n.chatProvider}:`,o)}r()}else t.draftMode&&window.alert("You have not selected a chat provider. Go to the resource center builder in Userflow. Click the Contact block. Pick a chat provider in the side panel.")}function Ge(t,n){t.setResourceCenterSession(r=>r?{...r,version:{...r.version,resourceCenter:{...r.version.resourceCenter,blocks:r.version.resourceCenter.blocks.map(s=>s.type===y.ANNOUNCEMENTS?{...s,unreadAnnouncementCount:n.level===B.SILENT?s.unreadAnnouncementCount:s.unreadAnnouncementCount-1,popoutAnnouncement:s.popoutAnnouncement?.id===n.id?null:s.popoutAnnouncement,boosterAnnouncement:s.boosterAnnouncement?.id===n.id?null:s.boosterAnnouncement}:s)}}}:null),t.send({kind:"MarkAnnouncementSeen",announcementId:n.id,versionId:n.versionId}),t.toggleUI()}function Zt(t){return t?.version.resourceCenter?.blocks.find(n=>n.type===y.ANNOUNCEMENTS)||null}function ge(t){const n=t?new Date(t):new Date;let r=new Intl.DateTimeFormat(pe.language,{weekday:"long",day:"numeric",month:"short",year:n.getFullYear()===new Date().getFullYear()?void 0:"numeric"}).format(n);return r.substring(0,1).toUpperCase()+r.substring(1)}const _r=Object.freeze(Object.defineProperty({__proto__:null,FloatingAnnouncements:$t,ModalAnnouncement:Ut,ResourceCenterApp:Rt,default:Rt,formatAnnouncementTime:ge,getAnnouncementsBlock:Zt,serializeRoute:zt,syncAnnouncementSeen:Ge},Symbol.toStringTag,{value:"Module"}));export{Jn as A,Gn as G,_r as R,Pt as d};
2
+ import{z as y,D as z,G as Re,C as re,x as En,H as L,I as dt,k as pn,J as mt,E as bn,r as vn,K as gn,L as Cn,a as ft,N as ht,O as kn,Q as wt,_ as Nn}from"./userflow.js";import{r as l,R as e}from"./vendor.react.js";import{u as x,i as be}from"./client-context.js";import{f as Et,a as jn,w as pt,C as yn,N as Sn}from"./flow-host.styl.js";import{S as se,b as Ve,R as H,h as In,s as qe,e as G,n as An,f as Bt}from"./use-selector-element-monitoring.js";import{g as _}from"./flow-condition-types.js";import{D as A,u as ve,a as bt,g as _e}from"./stylesheets.js";import{F as Ke}from"./Frame.js";import{o as D}from"./vendor.obj-str.js";import{M as xe,e as vt,h as gt}from"./roots.js";import{u as Tn}from"./use-window-resize.js";import{S as Rn}from"./logomark.js";import"./vendor.core-js.js";import{f as _n,C as xn}from"./ChecklistUI.js";import{K as Ln,C as Qe,L as Mn,M as Bn,N as Dn,J as Dt,O as te,z as Fn,P as Pn,Q as On,R as $n}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{F as Un,B as Wn}from"./FlowChrome.js";import{m as Ct}from"./vendor.memoize-one.js";import{B as Ft}from"./vendor.bignumber.js.js";import{u as zn}from"./use-element-rect.js";import{u as ne}from"./vendor.react-i18next.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},n=new Error().stack;n&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[n]="129dce21-507c-409a-b0e4-a4bd124b288f",t._sentryDebugIdIdentifier="sentry-dbid-129dce21-507c-409a-b0e4-a4bd124b288f")}catch{}})();function Hn(t,n,r){return t.resourceCenterAutoDividers?kt(n)||kt(r):!1}function kt(t){return t!==y.ACTION&&t!==y.ANNOUNCEMENTS&&t!==y.ASSISTANT&&t!==y.CONTACT&&t!==y.FLOWS&&t!==y.KNOWLEDGE_BASE&&t!==y.SUBPAGE}const m=window,Le={[z.CRISP]:{configure:({onShow:t,onHide:n})=>{Vn();let r=!1,s=!1;const o=()=>{r||s?(m.$crisp.push(["do","chat:show"]),t()):(m.$crisp.push(["do","chat:hide"]),n())},c=()=>{r=!0,o()};m.$crisp.push(["on","chat:opened",c]);const i=()=>{r=!1,o()};m.$crisp.push(["on","chat:closed",i]);const a=()=>{s=!0,o()};m.$crisp.push(["on","message:received",a]);const E=()=>{const p=document.getElementById("crisp-chatbox");if(!p||window.getComputedStyle(p).display!=="block")return!1;const h=p.querySelector('[data-id="new_messages"]');return!(!h||window.getComputedStyle(h).display!=="block")},d=()=>{const p=E();p!==s&&(s=p,o())},u=window.setInterval(d,200);return()=>{m.$crisp.push(["off","chat:opened",c]),m.$crisp.push(["off","chat:closed",i]),m.$crisp.push(["off","message:received",a]),window.clearInterval(u)}},show:()=>{m.$crisp.push(["do","chat:show"]),m.$crisp.push(["do","chat:open"])},hide:()=>{m.$crisp.push(["do","chat:hide"]),m.$crisp.push(["do","chat:close"])}},[z.CUSTOM]:{configure:()=>()=>{},show:({block:t})=>{try{new Function(`"use strict";
3
+ `+t.chatCode)()}catch(n){console.error(`Userflow.js: Showing custom chat provider failed. Code: ${t.chatCode}`,n)}},hide:()=>{}},[z.FRESHCHAT]:{configure:({onShow:t,onHide:n})=>{if(!m.fcWidget)throw new Error("Freshchat is not installed");let r=!1,s=!1;const o=()=>{r||s?t():n()},c=()=>{r=!0,o()};m.fcWidget.on("widget:opened",c);const i=()=>{r=!1,o()};m.fcWidget.on("widget:closed",i);const a=()=>{const d=!!document.querySelector("#fc_frame.h-open-notify");d!==s&&(s=d,o())},E=window.setInterval(a,200);return m.fcWidget.on("unreadCount:notify",a),()=>{m.fcWidget.off("widget:opened",c),m.fcWidget.off("widget:closed",i),m.fcWidget.off("unreadCount:notify",a),window.clearInterval(E)}},show:()=>{m.fcWidget.open()},hide:()=>{m.fcWidget.close()}},[z.HELPSCOUT]:{configure:({onShow:t,onHide:n})=>{if(!m.Beacon)throw new Error("Help Scout is not installed");qn();let r=!1,s=!1;const o=()=>{r||s?(yt(),t()):(Me(),n())},c=()=>{r=!0,o()};m.Beacon("on","open",c),m.Beacon("info")?.status.isOpened&&c();const i=()=>{r=!1,o()};m.Beacon("on","close",i);const a=()=>{const d=!!document.querySelector(".BeaconNotificationsFrame");d!==s&&(s=d,o())},E=window.setInterval(a,200);return()=>{m.Beacon("off","open",c),m.Beacon("off","close",i),window.clearInterval(E)}},show:()=>{yt(),m.Beacon("open")},hide:()=>{Me(),m.Beacon("close")}},[z.HUBSPOT]:{configure:({onShow:t,onHide:n})=>{const r=()=>{const c=document.getElementById("hubspot-messages-iframe-container");if(!m.HubSpotConversations||!c)return;window.clearInterval(o),Kn();let i=!1,a=!1;const E=()=>{i||a?(Be(),t()):(De(),n())},d=()=>{const h=!!document.querySelector("#hubspot-messages-iframe-container .hs-shadow-container.active");h!==i&&(i=h,E())},u=new xe(d);u.observe(c,{attributes:!0,subtree:!0,attributeFilter:["class"]}),d();const p=({unreadCount:h})=>{const w=h>0;w!==a&&(a=w,E())};m.HubSpotConversations.on("unreadConversationCountChanged",p),s=()=>{u.disconnect(),m.HubSpotConversations.off("unreadConversationCountChanged",p)}};let s=()=>{window.clearInterval(o)};const o=window.setInterval(r,100);return r(),()=>{s()}},show:()=>{Be(),m.HubSpotConversations.widget.open()},hide:()=>{De(),m.HubSpotConversations.widget.close()}},[z.INTERCOM]:{configure:({onShow:t,onHide:n})=>{if(!m.Intercom)throw new Error("Intercom is not installed");return Qn(),Fe.add(t),Pe.add(n),()=>{Fe.delete(t),Pe.delete(n)}},show:()=>{Pt(),m.Intercom("show")},hide:()=>{Oe(),m.Intercom("hide")}},[z.ZENDESK]:{configure:({onShow:t,onHide:n})=>{if(!m.zE)throw new Error("Zendesk is not installed");Zn();let r=!1,s=!1;const o=()=>{r||s?(m.zE("webWidget","show"),t()):(m.zE("webWidget","hide"),n())},c=()=>{r=!0,s=!1,o()};$e.add(c);const i=()=>{r=!1,s=!1,o()};Ue.add(i);const a=E=>{const d=E>0;d!==s&&(s=d,o())};return We.add(a),()=>{$e.delete(c),Ue.delete(i),We.delete(a)}},show:()=>{m.zE("webWidget","show"),m.zE("webWidget","open")},hide:()=>{m.zE("webWidget","hide"),m.zE("webWidget","close")}},[z.ZENDESK_MESSENGER]:{configure:({onShow:t,onHide:n})=>{if(!m.zE)throw new Error("Zendesk is not installed");const r=()=>{t()},s=()=>{n()};return ze.add(r),He.add(s),Gn(),()=>{ze.delete(r),He.delete(s)}},show:()=>{m.zE("messenger","open")},hide:()=>{m.zE("messenger","close")}}};let Nt=!1;function Vn(){Nt||(Nt=!0,m.$crisp||(m.$crisp=[]),m.$crisp.push(["do","chat:hide"]))}let jt=!1;function qn(){jt||(jt=!0,Me())}function yt(){m.Beacon("config",{display:{style:"icon"}})}function Me(){m.Beacon("config",{display:{style:"manual"}})}let St=!1,Ze=!1;function Kn(){St||(St=!0,Ze?Be():De())}function Be(){Ze=!0,document.getElementById("hubspot-messages-iframe-container")?.style.setProperty("visibility","visible","important")}function De(){Ze=!1,document.getElementById("hubspot-messages-iframe-container")?.style.setProperty("visibility","hidden","important")}let It=!1,Fe=new Set,Pe=new Set;function Qn(){if(It)return;It=!0,Oe();let t=!1,n=!1;const r=()=>{Pt();for(const i of Fe)i()},s=()=>{Oe();for(const i of Pe)i()},o=()=>{t||n?r():s()};m.Intercom("onShow",()=>{t=!0,o()}),m.Intercom("onHide",()=>{t=!1,o()});const c=()=>{const i=!!document.querySelector('iframe[name="intercom-borderless-frame"], iframe[name="intercom-notifications-frame"]');n!==i&&(n=i,o())};m.Intercom("onUnreadCountChange",()=>{c()}),window.setInterval(c,200)}function Pt(){m.Intercom("update",{hide_default_launcher:!1,vertical_padding:20})}function Oe(){m.Intercom("update",{hide_default_launcher:!0,vertical_padding:100})}let At=!1,$e=new Set,Ue=new Set,We=new Set;function Zn(){At||(At=!0,m.zE("webWidget","hide"),m.zE("webWidget","close"),m.zE("webWidget:on","open",()=>{for(const t of $e)t()}),m.zE("webWidget:on","close",()=>{for(const t of Ue)t()}),m.zE("webWidget:on","chat:unreadMessages",t=>{for(const n of We)n(t)}))}let Tt=!1,ze=new Set,He=new Set;function Gn(){Tt||(Tt=!0,m.zE("messenger:on","open",function(){for(const t of ze)t()}),m.zE("messenger:on","close",function(){for(const t of He)t()}))}const Jn=t=>l.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100"},t),l.createElement("path",{fill:"currentColor",d:"M24.049 79.74h36.003c8.185 0 15.985-6.621 17.43-14.814l6.091-34.556h3.997c8.149 0 13.645 6.63 12.2 14.815l-7.051 40C91.274 93.363 83.474 100 75.288 100h-40c-8.185 0-13.645-6.667-12.2-14.815l.96-5.444Z"}),l.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M12.437 69.63h40c8.148 0 15.978-6.637 17.422-14.815l7.052-40C78.355 6.63 72.896 0 64.711 0h-40C16.533 0 8.726 6.63 7.281 14.815l-7.052 40C-1.215 62.963 4.252 69.63 12.437 69.63Zm33.628-33.798c3.756-2.064 8.725-4.795 9.907-11.844C57.385 15.458 50.065 8.983 42.168 9c-7.452 0-12.771 3.195-17.508 8.892-.858 1.034-.884 2.45-.053 3.212l3.472 3.196c.847.767 2.25.589 3.176-.406 2.842-3.068 4.869-4.83 8.51-4.83 2.864 0 6.077 1.934 5.59 4.847-.37 2.223-2.292 3.334-5.4 5.001l-.28.151c-3.582 1.92-8.134 4.362-9.124 10.247l-.16.956c-.055.28-.05.571.014.85.065.278.188.538.362.76.173.222.391.4.639.522.247.121.518.183.79.18h6.744a2.709 2.709 0 0 0 1.712-.688c.481-.426.81-1.01.934-1.657l.095-.556c.266-1.582 2.101-2.59 4.384-3.845ZM32.837 59c3.552 0 6.955-3.034 7.58-6.769.63-3.729-1.742-6.763-5.293-6.763-3.552 0-6.934 3.028-7.58 6.763C26.9 55.966 29.286 59 32.837 59Z"})),U=({center:t,fadeIn:n})=>e.createElement("div",{className:D({"userflowjs-spinner":!0,"userflowjs-spinner--center":!!t,"userflowjs-spinner--fade-in":!!n})},e.createElement("svg",{viewBox:"0 0 24 24",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},e.createElement("circle",{className:"userflowjs-spinner__bg",fill:"none",cx:12,cy:12,r:10,style:{strokeWidth:"4px"}}),e.createElement("circle",{className:"userflowjs-spinner__fill",fill:"none",cx:12,cy:12,r:10,transform:"translate(12, 12) rotate(-90) translate(-12, -12)",style:{strokeWidth:"4px",strokeDasharray:10*2*Math.PI*.25+"px, 1000"}})));function ge({message:t,skip:n}){const r=x(),[s,o]=l.useState(!0),[c,i]=l.useState(!1),[a,E]=l.useState(null),[d,u]=l.useState(null),[p,h]=l.useState(null),w=l.useRef(0),b=l.useRef(null),v=l.useRef(()=>{});return l.useEffect(()=>{if(n)return;const N=JSON.stringify(t);if(N===b.current)return;b.current=N;const S=++w.current;let j,C;const M=async()=>{o(!0);try{C=t;const P=await r.send(t,{handlesRejection:!0});if(S!==w.current)return;j=P,E(j),u(t),h(null)}catch(P){if(S!==w.current)return;h(P)}finally{o(!1)}};let K=!1;v.current=async(P,O)=>{if(!K){K=!0,i(!0);try{const V=P(j,C);C=V;const W=await r.send(V,{handlesRejection:!0});if(S!==w.current)return;j=O(j,W),E(j),h(null)}catch(V){if(S!==w.current)return;h(V)}finally{K=!1,i(!1)}}},M()},[n,r,t]),{loading:s,loadingMore:c,data:a,messageForData:d,error:p,loadMore:v.current}}const Xn=200;function Ge(t,n){const[r,s]=l.useState(t),o=l.useRef(void 0),c=l.useCallback(a=>{window.clearTimeout(o.current),s(a),n(a)},[n]),i=l.useCallback(a=>{window.clearTimeout(o.current),s(a),o.current=window.setTimeout(()=>{n(a)},Xn)},[n]);return l.useEffect(()=>()=>{window.clearTimeout(o.current)},[]),[r,i,c]}const Yn={xs:[16,3],sm:[24,4],md32:[32,4],md:[40,4],lg:[56,4]};class er extends e.PureComponent{constructor(){super(...arguments),this.memoizedBgStyle=Ct(n=>({strokeWidth:`${n}px`})),this.memoizedFillStyle=Ct((n,r,s)=>({strokeWidth:`${n}px`,strokeDasharray:r*2*Math.PI*new Ft(s).toNumber()+"px, 1000"}))}render(){const{props:n}=this,{size:r,indeterminate:s,className:o,center:c,right:i,color:a}=this.props,E=["progress-spinner"];r&&E.push(`progress-spinner--${r}`),s&&E.push("progress-spinner--indeterminate"),o&&E.push(o);const d=s?.25:n.progress||0,[u,p]=Yn[r||"md"],h=u/2,w=(u-p)/2;let b=e.createElement("div",{className:E.join(" ")},e.createElement("svg",{viewBox:`0 0 ${u} ${u}`,version:"1.1",xmlns:"http://www.w3.org/2000/svg"},e.createElement("circle",{className:"progress-spinner__bg",fill:"none",cx:h,cy:h,r:w,style:this.memoizedBgStyle(p)}),e.createElement("circle",{className:a==="purple"?"progress-spinner__fill-purple":"progress-spinner__fill",fill:"none",cx:h,cy:h,r:w,transform:`translate(${h}, ${h}) rotate(-90) translate(-${h}, -${h})`,style:this.memoizedFillStyle(p,w,d)})));return c?b=e.createElement("div",{className:"progress-spinner-center-aligner"},b):i&&(b=e.createElement("div",{className:"progress-spinner-right-aligner"},b)),b}}const tr=({textareaRef:t,value:n,onChange:r,onBlur:s,onKeyDown:o,onMouseDown:c,placeholder:i,disabled:a,readOnly:E,className:d,mirrorClassName:u,textareaClassName:p,icon:h,onIconClick:w,loading:b=!1,children:v})=>{let N=n||i||"";(N===""||N.endsWith(`
4
+ `))&&(N+=" "),d=d||"growing-textarea",u=u||d+"__mirror";const[S,j]=l.useState(!1);return e.createElement("div",{className:D({[d]:!0,[`${d}__loading`]:b})},e.createElement("div",{className:u+" "+(p||"")},N),e.createElement("textarea",{ref:t,value:n,onChange:C=>r&&r(C.target.value),onBlur:s,onKeyDown:C=>{if(C.key==="Enter"&&S){C.preventDefault();return}o&&o(C)},onMouseDown:c,placeholder:i,disabled:a||b,readOnly:E,className:D({"growing-textarea__input":!0,[p||""]:!0,[`${d}__with-icon`]:!!h,[`${d}__loading-input`]:b}),onCompositionStart:()=>j(!0),onCompositionEnd:()=>j(!1)}),h&&!b&&e.createElement("div",{className:`${d}__icon`},e.createElement("button",{className:"btn btn--plain-blue btn--square btn--md32",onClick:w},e.createElement(A,{icon:h}))),b&&e.createElement("div",{className:`${d}__loader`},e.createElement(er,{indeterminate:!0,size:"xs",color:"purple"})),v)},nr=({textareaRef:t,value:n,onChange:r,onSubmit:s,placeholder:o,readOnly:c})=>{const i=()=>{s&&s()};return e.createElement("div",{className:"userflowjs-assistant-chat-input"},e.createElement(tr,{textareaRef:t,className:"userflowjs-growing-textarea",mirrorClassName:"userflowjs-growing-textarea__mirror",textareaClassName:"userflowjs-textarea userflowjs-assistant-chat-input__textarea",placeholder:o,readOnly:c,value:n||"",onChange:r,onKeyDown:a=>{!a.shiftKey&&a.key==="Enter"&&(a.preventDefault(),i())}}),e.createElement("button",{"data-testid":"assistant-chat-input-submit",className:"userflowjs-assistant-chat-input__submit",onClick:()=>i()},e.createElement(A,{icon:Ln})))};function rr(){return"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0}function Ot(t){return Re.linkUrlDecorator?Re.linkUrlDecorator(t):t}const Rt=5,sr=async()=>(await Nn(async()=>{const{ResourceCenterAssistantChat:t}=await import("./ResourceCenterAssistantChat.js");return{ResourceCenterAssistantChat:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]))).ResourceCenterAssistantChat,_t=({session:t,isOpen:n,flowSession:r,checklistSession:s,resourceCenterLauncherHidden:o})=>{const c=x(),{t:i}=ne(),{company:a}=t.flow,{version:E}=t,d=E.resourceCenter,u=ve(E.theme),p=t.locale?t.locale.standardLocaleId:t.version.theme.languageId;l.useEffect(()=>{be.changeLanguage(p)},[p]);const{loaded:h}=bt(window,Et,u),[w,b]=l.useState(!1),v=h&&w,[N,S]=l.useState(vt()),[j,C]=l.useState(gt()),M=l.useCallback(()=>{S(vt()),C(gt())},[]);Tn(M);const{zIndex:K,bringToFront:P}=jn(),[O,V]=l.useState(null),[W,Q]=l.useState(null),[J,ce]=l.useState(null),ae=l.useRef(null),[q,Xt]=l.useState(null),[Xe,Yt]=l.useState(null),[Ye,en]=l.useState(null),[tn,nn]=l.useState(0),[rn,sn]=l.useState(0),ke=l.useCallback(()=>{W&&nn(Math.round(W?.offsetWidth||0)),sn(Math.round((J?.offsetHeight||0)+(q?.offsetHeight||0)+(Xe?.offsetHeight||0)+(Ye?.offsetHeight||0)))},[W,J,q,Xe,Ye]);l.useLayoutEffect(()=>{if(!O||typeof xe!="function")return;const f=new xe(()=>{ke()});return f.observe(O,{childList:!0,attributes:!0,subtree:!0}),()=>{f.disconnect()}},[O,ke]),l.useLayoutEffect(()=>{ke()});const[et,tt]=l.useState(!1),Ne=l.useRef(),le=l.useCallback(()=>{tt(!0),window.clearTimeout(Ne.current),Ne.current=window.setTimeout(()=>{tt(!1)},u.resourceCenterTransitionDuration)},[u.resourceCenterTransitionDuration]);l.useEffect(()=>()=>{window.clearTimeout(Ne.current)},[]);const ie=l.useCallback(()=>{P(),le(),c.openResourceCenter()},[P,c,le]),je=l.useCallback(()=>{le(),c.closeResourceCenter()},[c,le]),[nt,X]=l.useState(!1);l.useEffect(()=>{if(nt){if(!rr())if(n){const f='button:not([tabindex="-1"]), [tabindex]:not([tabindex="-1"]), input, textarea';let k=q?.querySelector(".userflowjs-assistant-chat-input textarea")||q?.querySelector(f)||J?.querySelector(f);if(k){const T=k.closest&&k.closest(".userflowjs-resource-center-checklist")||null;T?_n(T):k.focus({preventScroll:!0})}}else W?.focus({preventScroll:!0});X(!1)}},[nt,n,q,J,W]),l.useEffect(()=>{const f=O?.ownerDocument.defaultView;if(!n||!f)return;const k=T=>{T.key==="Escape"&&(je(),X(!0))};return f.addEventListener("keydown",k),()=>f.removeEventListener("keydown",k)},[n,O,X,je]);const[g,ue]=l.useState(()=>xt(t,re.getItem(`resourceCenterRoute:v1:${t.id}`))),F=l.useCallback((f,k)=>{ue(f);const T=Vt(f);T?re.setItem(`resourceCenterRoute:v1:${t.id}`,T):re.removeItem(`resourceCenterRoute:v1:${t.id}`),k?.detail===0&&X(!0)},[t.id]);l.useEffect(()=>{const f=re.getItem(`resourceCenterRoute:v1:${t.id}`);ue(xt(t,f))},[t]),l.useEffect(()=>{if(!t.draftMode||!g||!("block"in g)||!g.block)return;const f=d.blocks.find(k=>k.cvid===g.block.cvid);f?JSON.stringify(f)!==JSON.stringify(g.block)&&ue({...g,block:f}):ue(null),g.block},[t.draftMode,d,g]);const de=l.useMemo(()=>d.blocks.filter(f=>!(f.type===y.CHECKLIST&&!s||f.type===y.DIVIDER&&u.resourceCenterAutoDividers||f.hiddenWhenFlowsActive&&f.hiddenWhenFlowsActive.some(k=>k===r?.flow.id||k===s?.flow.id))),[d,r,s,u.resourceCenterAutoDividers]),ye=l.useMemo(()=>Ht(de),[de]),Se=l.useMemo(()=>!s||!d.blocks.some(f=>f.type===y.CHECKLIST)?0:En(s),[d,s]),B=l.useMemo(()=>d.blocks.find(f=>f.type===y.CONTACT&&f.chatEnabled&&f.chatProvider),[d]),[on,rt]=l.useState(!1),me=l.useCallback(()=>{c.closeResourceCenter(),B&&B.chatProvider!==z.CUSTOM&&rt(!0)},[c,B]),fe=l.useCallback(()=>{rt(!1)},[]),st=l.useCallback(()=>{if(B)try{Le[B.chatProvider].hide({block:B}),fe()}catch(f){console.error(`Userflow.js: Error when hiding ${B.chatProvider}:`,f)}},[B,fe]);l.useEffect(()=>{if(!B)return;Re.autoHide3pDisabled=!0;const f=Le[B.chatProvider];try{const k=f.configure({block:B,onShow:me,onHide:fe});return()=>{k()}}catch(k){console.error(`Userflow.js: Error when configuring ${B.chatProvider}:`,k);return}},[B,me,fe]),l.useEffect(()=>{n&&st()},[st,n]);const I=Jt(t),he=l.useMemo(()=>{if(!I)return null;if(I.boosterAnnouncement){const f=I.boosterAnnouncement;if(!f.seen&&(f.level===L.TOAST||f.level===L.MODAL))return f}return I.popoutAnnouncement&&!I.popoutAnnouncement.seen?I.popoutAnnouncement:null},[I]),ot=ve(he?.theme||E.theme);bt(window,Et,o?ot:void 0);const we=l.useCallback((f,k,T,Y,pe)=>{const ut=()=>{Je(c,f)};return e.createElement(se.Provider,{value:{...T,data:f.data}},f.level===L.MODAL&&e.createElement(zt,{session:T,open:ie,navigate:F,block:k,announcement:f,onDismiss:ut}),(f.level===L.TOAST||f.level===L.POPOUT)&&e.createElement(Wt,{session:T,open:ie,navigate:F,block:k,announcement:f,onDismiss:ut,isStandalonePopout:pe?.isStandalonePopout,rcPlacement:Y.resourceCenterPlacement}))},[c,ie,F]),cn=(f,k,T)=>{const Y={..._e(T),zIndex:pt(Sn),position:"fixed",top:0,left:0,width:"100vw",height:"100vh",pointerEvents:f.level===L.MODAL?"auto":"none"},pe={...t,data:{...t.data,...f.data||{}}};return e.createElement(se.Provider,{value:pe},e.createElement("div",{className:"userflowjs-theme-root",style:Y,id:"userflowjs-announcement-app"},we(f,k,pe,T,{isStandalonePopout:f.level===L.POPOUT})))},an=!!g&&(g.kind==="search"||g.kind==="flows"||g.kind==="knowledgeBase"),ct=g?.kind==="assistant"||g?.kind==="announcementList"||g?.kind==="announcementShow",Ie=Math.min(ct?u.resourceCenterFullWidth:u.resourceCenterWidth,N-2*u.resourceCenterPaddingX),ln=540,un=720,dn={zIndex:u.resourceCenterZIndex!=null?u.resourceCenterZIndex:n?K:pt(yn),position:v?void 0:"absolute",visibility:v&&!on?void 0:"hidden"},mn={width:(n?Ie:tn)+"px",height:n?Math.min(an?ln:ct?un:rn,j-2*u.resourceCenterPaddingY,u.resourceCenterMaxHeight==null?Number.MAX_VALUE:u.resourceCenterMaxHeight)+"px":void 0,display:o&&!n?"none":void 0},[fn,at]=l.useState(!1),lt=()=>{ie(),X(!0)},it=u.resourceCenterDisplayChecklistProgress&&s&&Se>0?e.createElement("div",{"data-testid":"resource-center-launcher-badge",className:"userflowjs-resource-center-launcher-badge"},Se,e.createElement("div",{className:"userflowjs-a11y-only"},"uncompleted tasks")):null;let Ee="",Ae="";u.resourceCenterLauncherTextMode===dt.CHECKLIST_OVERRIDE&&s&&Se>0?Ee=s.version.checklist?.launcherText||"Get Started":u.resourceCenterLauncherTextMode!==dt.NONE&&(Ae=d.buttonText);const hn=t.version.resourceCenter?.launcherType,Te=he?.level,wn=Te===L.MODAL||Te===L.TOAST||Te===L.POPOUT&&hn!==pn.CUSTOM;return o&&!n&&he&&I&&wn?cn(he,I,ot):e.createElement(se.Provider,{value:t},e.createElement("div",{"data-testid":"resource-center-app",className:"userflowjs-resource-center-app userflowjs-theme-root",style:_e(u),dir:be.dir()},e.createElement("div",{className:D({"userflowjs-resource-center":!0,"userflowjs-resource-center--fixed":!0,[`userflowjs-resource-center--placement-${u.resourceCenterPlacement.toLowerCase().replace(/_/g,"-")}`]:!0}),style:dn},e.createElement("div",{className:"userflowjs-resource-center-frame-wrapper",onMouseEnter:()=>at(!0),onMouseLeave:()=>at(!1)},e.createElement(Ke,{className:D({"userflowjs-resource-center-frame":!0,"userflowjs-resource-center-frame--animating":et,"userflowjs-resource-center-frame--open":n,"userflowjs-resource-center-frame--closed":!n}),style:mn,stylesheet:Ve,theme:u,onStylesheetsLoad:b,title:"Resource center"},v&&e.createElement(e.Fragment,null,e.createElement("div",{ref:V,className:D({"userflowjs-resource-center-frame-root":!0,[`userflowjs-resource-center-frame-root--placement-${u.resourceCenterPlacement.toLowerCase().replace(/_/g,"-")}`]:!0,"userflowjs-resource-center-frame-root--animating":et,"userflowjs-resource-center-frame-root--open":n,"userflowjs-resource-center-frame-root--closed":!n}),role:n?"dialog":void 0,"aria-label":n?d.headerText:void 0},!o&&e.createElement("div",{className:"userflowjs-resource-center-launcher-container"},e.createElement("button",{ref:Q,className:D({"userflowjs-resource-center-launcher-button":!0,"userflowjs-resource-center-launcher-button--hover":fn}),onClick:lt,"aria-label":`Open ${d.headerText}`},it,Ee&&e.createElement("div",{"data-testid":"resource-center-launcher-text",className:"userflowjs-resource-center-launcher-text"},Ee),(it||Ee)&&e.createElement("div",{className:"userflowjs-resource-center-launcher-divider"}),Ae&&e.createElement("div",{"data-testid":"resource-center-launcher-text",className:"userflowjs-resource-center-launcher-text"},Ae),e.createElement("div",{className:"userflowjs-resource-center-launcher-icon"},u.resourceCenterLauncherIconType===mt.PLAINTEXT?"?":u.resourceCenterLauncherIconType===mt.DEFAULT?e.createElement(Jn,null):u.rcIconAsset&&u.rcIconAsset.assetUrl?e.createElement("img",{src:u.rcIconAsset.assetUrl,className:"company-icon",style:{height:`${u.rcIconSize}px`,width:`${u.rcIconSize}px`}}):e.createElement("span",null)))),e.createElement("div",{ref:ae,className:"userflowjs-resource-center-body",style:{width:Ie+"px"}},e.createElement("div",{ref:Xt,className:D({"userflowjs-resource-center-body-content":!0,"userflowjs-resource-center-body-content--padding":g?.kind!=="assistant","userflowjs-resource-center-body-content--same-background":u.sameBackground,"userflowjs-resource-center-body-content--with-made-with-userflow":a.resourceCenterBranding})},n&&e.createElement(e.Fragment,null,g?g.kind==="search"?e.createElement(or,{session:t,navigate:F}):g.kind==="email"?e.createElement(cr,{block:g.block,session:t}):g.kind==="phone"?e.createElement(ar,{block:g.block,session:t}):g.kind==="flows"?e.createElement(lr,{block:g.block,initialQ:g.initialQ,session:t,navigate:F}):g.kind==="knowledgeBase"?e.createElement(ir,{block:g.block,initialQ:g.initialQ,session:t,bodyRef:ae}):g.kind==="subpage"?e.createElement(ur,{block:g.block,session:t}):g.kind==="announcementList"||g.kind==="announcementShow"?e.createElement(dr,{bodyRef:ae,session:t,route:g,navigate:F}):g.kind==="assistant"?e.createElement(hr,{block:g.block,initialUserContent:g.initialUserContent,session:t,navigate:F,chatBlock:B,onChatShow:me}):null:e.createElement(e.Fragment,null,de.map((f,k)=>{const T=oe[f.type],Y=de[k+1];return T?e.createElement(e.Fragment,{key:f.id},e.createElement(T.View,{session:t,flowSession:r,checklistSession:s,block:f,navigate:F,onChatShow:me}),Y&&Hn(u,f.type,Y.type)&&e.createElement("div",{className:"userflowjs-resource-center-divider"})):null}))))),a.resourceCenterBranding&&e.createElement("div",{className:"userflowjs-resource-center-made-with-userflow"},e.createElement("div",{className:"userflowjs-resource-center-made-with-userflow-content",ref:Yt},e.createElement("a",{href:"https://userflow.com/?utm_source=made-with-userflow&utm_medium=link&utm_campaign=made-with-userflow-"+a.slug+"&utm_content=resource-center",target:"_blank",rel:"noopener noreferrer"},e.createElement(Rn,null),e.createElement("div",null,"Made with Userflow")))),t.draftMode&&e.createElement("div",{className:"userflowjs-resource-center-preview"},e.createElement("div",{ref:en,className:"userflowjs-resource-center-preview-content"},e.createElement("div",{className:"userflowjs-resource-center-preview-text"},"Preview"),e.createElement("button",{className:"userflowjs-resource-center-preview-button",onClick:()=>{c.endFlow(t,{endReason:bn.USER_CLOSED})}},e.createElement(A,{icon:Qe})))),e.createElement("div",{className:"userflowjs-resource-center-header",style:{width:Ie+"px"}},e.createElement("div",{ref:ce,className:"userflowjs-resource-center-header-content"},g==null?e.createElement("div",{className:"userflowjs-resource-center-header-text"},d.headerText):e.createElement("button",{className:"userflowjs-resource-center-icon-button",onClick:f=>F(g?.kind==="announcementShow"?{kind:"announcementList",block:g.block}:null,f)},e.createElement("div",{className:"userflowjs-rtl-mirrored"},e.createElement(A,{icon:Mn})),e.createElement("div",{className:"userflowjs-resource-center-icon-button__text"},i("resource_center.back"))),e.createElement("div",{className:"flex-1"}),ye.length>0&&e.createElement("button",{className:"userflowjs-resource-center-icon-button",onClick:()=>{let f={kind:"search"};if(ye.length===1){const k=ye[0],T=oe[k.type];T.routeTo&&(f=T.routeTo({block:k}))}g?.kind==="search"?F(null):(R(c,t,null,"Search icon"),F(f))},"aria-label":"Search"},e.createElement(A,{icon:Bn})),e.createElement("button",{className:"userflowjs-resource-center-icon-button userflowjs-resource-center-close-button",onClick:f=>{je(),f.detail===0&&X(!0)},"aria-label":`Close ${d.headerText}`},e.createElement(A,{icon:Dn}))))))),!n&&!r&&!o&&I&&I.unreadAnnouncementCount>0&&e.createElement($t,{theme:u,count:I.unreadAnnouncementCount,onClick:lt})),!n&&!r&&!o&&I?.popoutAnnouncement&&we(I.popoutAnnouncement,I,t,u),!n&&!r&&!o&&I?.boosterAnnouncement&&I.boosterAnnouncement.level===L.MODAL&&we(I.boosterAnnouncement,I,t,u),!n&&!r&&!o&&I?.boosterAnnouncement&&I.boosterAnnouncement.level===L.TOAST&&we(I.boosterAnnouncement,I,t,u))))},$t=({theme:t,count:n,onClick:r,style:s})=>{const[o,c]=l.useState(!1);return e.createElement(Ke,{className:D({"userflowjs-resource-center-launcher-unread-badge":!0}),noScroll:!0,style:{position:o?void 0:"absolute",visibility:o?void 0:"hidden",...s},stylesheet:Ve,theme:t,onStylesheetsLoad:c,title:"Resource center unread badge"},e.createElement(Ut,{count:n,onClick:r}))},Ut=({count:t,onClick:n})=>{let r=null;return t>9&&(t=9,r=e.createElement("span",{className:"userflowjs-unread-badge-plus"},"+")),e.createElement("div",{className:D({"userflowjs-unread-badge":!0,"userflowjs-unread-badge--clickable":!!n}),onClick:n},e.createElement("span",null,t),r)},Wt=({session:t,open:n,navigate:r,announcement:s,block:o,rcPlacement:c,onDismiss:i,isStandalonePopout:a})=>{const E=l.useRef(null),d=ve(s.theme),u=d.toastPlacement,p=!!o.boosterAnnouncement||a!==void 0&&s?.level===L.TOAST,h=u===c;let w=null,b=null;s&&(w=s.toastAutoDismiss??d.toastAutoDismiss,b=s.toastWidth?s.toastWidth:d.toastWidth);const v=x(),[N,S]=l.useState(!1),{height:j,setEl:C}=zn();l.useEffect(()=>{const Q=E.current;if(!Q||w===null)return;const J=Date.now(),ce=()=>{const q=1-(Date.now()-J)/(new Ft(w||0).toNumber()*1e3);q<=0?(Q.style.width="0%",s&&$(v,s)):(Q.style.width=`${q*100}%`,requestAnimationFrame(ce))};return requestAnimationFrame(ce),()=>{Q&&(Q.style.width="0%")}},[E.current,w,v,s,$]);const M=i||(()=>{s&&$(v,s)}),K=20,P=l.useMemo(()=>CSS.supports("height: 100dvh")?"dvh":"vh",[]),O=()=>{p&&s&&($(v,s),R(v,t,o,s.title),r({kind:"announcementShow",block:o,announcementId:s.id}),n())};if(!s)return null;const V=!!a&&!!c,W=(a!==void 0||!h)&&!!u&&p;return e.createElement("div",{className:D({"userflowjs-resource-center-popout":!p,"userflowjs-resource-center-toast":p,[`userflowjs-resource-center-popout-standalone--${c?.toLowerCase()?.replace(/_/g,"-")}`]:V,[`userflowjs-resource-center-toast--${u?.toLowerCase()?.replace(/_/g,"-")}`]:W}),style:_e(d)},e.createElement(Ke,{className:D({"userflowjs-resource-center-popout-frame":!0}),style:{height:`calc(min(${j}px, 100${P} - 2 * var(--userflow-resource-center-padding-y) - var(--userflow-resource-center-collapsed-height) - ${K}px)`,position:N?void 0:"absolute",visibility:N?void 0:"hidden",...b&&p?{width:b}:{}},stylesheet:Ve,theme:d,onStylesheetsLoad:S,title:"Resource center popout"},p&&e.createElement("div",{className:"userflowjs-bubble-progress--default"},e.createElement("div",{className:"userflowjs-bubble-progress__fill",ref:E})),e.createElement("div",{ref:C,className:"userflowjs-resource-center-popout-frame-root",style:{cursor:p?"pointer":"auto",padding:p&&d.toastPadding||void 0}},e.createElement("div",{onClick:O},e.createElement("h2",{className:"userflowjs-announcement-title"},e.createElement("span",{className:"userflowjs-unread-dot"}),e.createElement("span",null,s.title)),e.createElement("div",{className:"userflowjs-announcement-time"},e.createElement("div",{className:"userflowjs-announcement-time-text"},Ce(s.time))),e.createElement("div",{className:"userflowjs-announcement-content userflowjs-bubble-content"},e.createElement(H,{doc:s.content,buttons:s.buttons,lookupAttribute:_(s.data)})),!p&&e.createElement(e.Fragment,null,s.moreEnabled&&e.createElement("div",{className:"userflowjs-announcement-more"},e.createElement("button",{className:"userflowjs-tertiary-button",onClick:()=>{$(v,s),R(v,t,o,s.title),r({kind:"announcementShow",block:o,announcementId:s.id}),n()}},e.createElement("div",null,(s.moreEnabled?s.moreButtonText:null)||"Read more"),!p&&e.createElement("span",{className:"userflowjs-rtl-mirrored"},e.createElement(A,{icon:Dt})))))),p&&s.moreEnabled&&e.createElement("div",{onClick:O,className:"userflowjs-announcement-more--toast"},(s.moreEnabled?s.moreButtonText:null)||"Read more"),e.createElement("div",{className:"userflowjs-bubble-toolbar"},e.createElement("button",{className:"userflowjs-bubble-toolbar-button",onClick:M,"aria-label":"Dismiss announcement"},e.createElement(A,{icon:Qe}))))),!p&&!a&&e.createElement("div",{className:"userflowjs-resource-center-popout-notch"}))},zt=({session:t,open:n,navigate:r,announcement:s,block:o,onDismiss:c})=>{const i=x(),a=ve(s.theme),d=c||(()=>{$(i,s)});return e.createElement(Un,{company:t.flow.company,theme:a,position:"fixed",width:s.modalWidth,stepAppearance:vn.MODAL,zIndex:a.checklistZIndex,autoHide3pEnabled:!0,onModalBackdropClick:d,noIframe:!0,isModalAnnouncement:!0},e.createElement("div",{id:"userflowjs-bubble-content",className:"userflowjs-bubble-content"},e.createElement("h1",null,s.title),e.createElement(H,{doc:s.content,buttons:s.buttons,lookupAttribute:_(s.data)})),e.createElement("div",{className:"userflowjs-bubble-toolbar"},e.createElement("button",{className:"userflowjs-bubble-toolbar-button",onClick:d,"aria-label":"Dismiss announcement"},e.createElement(A,{icon:Qe}))),s.moreEnabled&&e.createElement("div",{className:"userflowjs-announcement-more--modal"},e.createElement("button",{className:"userflowjs-bubble-button--primary",onClick:()=>{$(i,s),R(i,t,o,s.title),r({kind:"announcementShow",block:o,announcementId:s.id}),n()}},e.createElement("div",null,(s.moreEnabled?s.moreButtonText:null)||"Read more"))))};function Ht(t){return t.filter(n=>{const r=oe[n.type];return r.isSearchable?r.isSearchable(n):!!r.search})}const oe={[y.ACTION]:{View:t=>{const{block:n,session:r,flowSession:s,checklistSession:o}=t,c=x(),[i,a]=l.useState(!1),E=s?.id,d=o?.id;return l.useEffect(()=>{a(!1)},[E,d]),e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:i?void 0:()=>{R(c,r,n);const u=n.actions.find(p=>p.type===gn.START_FLOW);u?u.otherFlow?.id!==o?.flow.id&&a(!0):c.closeResourceCenter(),In(c,r,n.actions)},disabled:i},e.createElement(ee,{...t}),e.createElement(Z,{...t}),i&&e.createElement(U,null))}},[y.ANNOUNCEMENTS]:{View:t=>{const{block:n,session:r,navigate:s}=t,o=x();return e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:c=>{R(o,r,n),s({kind:"announcementList",block:n},c)}},n.unreadAnnouncementCount>0?e.createElement("div",{className:"userflowjs-resource-center-block-icon"},e.createElement(Ut,{count:n.unreadAnnouncementCount})):e.createElement(ee,{...t}),e.createElement(Z,{...t}),e.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},e.createElement(A,{icon:te})))}},[y.ASSISTANT]:{View:t=>{const{block:n,session:r,navigate:s}=t,o=x(),[c,i]=l.useState("");return n.assistantAppearance===Cn.INPUT?e.createElement("div",{className:"userflowjs-resource-center-assistant-block"},e.createElement(nr,{value:c,onChange:i,placeholder:qe(n.name,{lookupAttribute:_(r.data)}),onSubmit:()=>{R(o,r,n),s({kind:"assistant",block:n,initialUserContent:c})}})):e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:()=>{R(o,r,n),s({kind:"assistant",block:n,initialUserContent:""})}},e.createElement(ee,{...t}),e.createElement(Z,{...t}))}},[y.CHECKLIST]:{View:({checklistSession:t})=>e.createElement("div",{"data-testid":"resource-center-checklist",className:"userflowjs-resource-center-checklist"},e.createElement(xn,{session:t}),e.createElement(Wn,{draftMode:t.draftMode?"CHECKLIST PREVIEW":!1}))},[y.CONTACT]:{View:t=>{const{block:n,session:r,navigate:s,onChatShow:o}=t,c=x(),i=[];return n.emailEnabled&&i.push({icon:Pn,label:"Email",isRoute:!0,onClick:a=>{R(c,r,n,"Email"),s({kind:"email",block:n},a)}}),n.phoneEnabled&&i.push({icon:On,label:"Phone",isRoute:!0,onClick:a=>{R(c,r,n,"Phone"),s({kind:"phone",block:n},a)}}),n.chatEnabled&&i.push({icon:$n,label:"Live-chat",isRoute:!1,onClick:()=>{R(c,r,n,"Chat"),Gt(r,n,o)}}),e.createElement("div",{className:D({"userflowjs-resource-center-block":!0,"userflowjs-resource-center-block--clickable":i.length===1}),onClick:i.length===1?i[0].onClick:void 0},i.length===1&&e.createElement("div",{className:"userflowjs-resource-center-block-icon"},e.createElement(A,{icon:i[0].icon})),e.createElement(Z,{...t}),i.length>1&&i.map(({icon:a,label:E,onClick:d},u)=>e.createElement("button",{key:u,className:"userflowjs-resource-center-icon-button",onClick:d,"aria-label":E},e.createElement(A,{icon:a}))),i.length===1&&i[0].isRoute&&e.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},e.createElement(A,{icon:te})))}},[y.DIVIDER]:{View:()=>e.createElement("div",{className:"userflowjs-resource-center-divider"})},[y.FLOWS]:{View:t=>{const{block:n,session:r,navigate:s}=t,o=x();return e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:c=>{R(o,r,n),s({kind:"flows",block:n},c)}},e.createElement(ee,{...t}),e.createElement(Z,{...t}),e.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},e.createElement(A,{icon:te})))},routeTo:({block:t,initialQ:n})=>({kind:"flows",block:t,initialQ:n}),isSearchable:t=>!!t.searchEnabled,search:async({client:t,session:n,block:r,q:s})=>{const{flows:o}=await t.send({kind:"ListResourceCenterBlockFlows",sessionId:n.id,blockCvid:r.cvid},{handlesRejection:!0}),c=qt(o,s),i=c.slice(0,Rt);return{block:r,truncated:i.length===c.length,results:i.map(a=>({kind:"flow",flow:a}))}}},[y.KNOWLEDGE_BASE]:{View:t=>{const{block:n,session:r,navigate:s}=t,o=x();return e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:c=>{R(o,r,n),s({kind:"knowledgeBase",block:n},c)}},e.createElement(ee,{...t}),e.createElement(Z,{...t}),e.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},e.createElement(A,{icon:te})))},routeTo:({block:t,initialQ:n})=>({kind:"knowledgeBase",block:t,initialQ:n}),search:async({client:t,session:n,block:r,q:s})=>{const{truncated:o,articles:c}=await t.send({kind:"SearchKnowledgeBase",sessionId:n.id,blockCvid:r.cvid,q:s,offset:0,limit:Rt},{handlesRejection:!0});return{block:r,truncated:o,results:c.map(i=>({kind:"article",article:i}))}}},[y.MESSAGE]:{View:({block:t,session:n})=>e.createElement("div",{className:"userflowjs-resource-center-block"},e.createElement("div",{className:"userflowjs-resource-center-block-text userflowjs-bubble-content"},e.createElement(H,{doc:t.content,lookupAttribute:_(n.data)})))},[y.SUBPAGE]:{View:t=>{const{block:n,session:r,navigate:s}=t,o=x();return e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:c=>{R(o,r,n),s({kind:"subpage",block:n},c)}},e.createElement(ee,{...t}),e.createElement(Z,{...t}),e.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},e.createElement(A,{icon:te})))}}},ee=({block:t})=>t.icon?e.createElement("div",{className:"userflowjs-resource-center-block-icon"},e.createElement(A,{icon:t.icon,size:16})):null,Z=({block:t,session:n})=>e.createElement("div",{className:"userflowjs-resource-center-block-text"},e.createElement(G,{doc:t.name,lookupAttribute:_(n.data)}));function Vt(t){if(!t)return null;let n;"block"in t&&t.block!=null&&(n=t.block.cvid);const r={kind:t.kind,blockCvid:n};switch(t.kind){case"announcementShow":r.announcementId=t.announcementId;break}return JSON.stringify(r)}function xt(t,n){if(!n)return null;const r=JSON.parse(n);let s;if(r.blockCvid&&(s=t.version.resourceCenter?.blocks.find(c=>c.cvid===r.blockCvid)),!s&&r.kind!=="search")return null;const o={kind:r.kind,block:s};switch(o.kind){case"announcementShow":o.announcementId=r.announcementId;break}return o}const or=({session:t,navigate:n})=>{const r=x(),s=t.version.resourceCenter.blocks,o=Ht(s),{t:c}=ne(),i=l.useRef(null),[a,E]=l.useState(""),[d,u]=Ge(a,E),[p,h]=l.useState(null);return l.useEffect(()=>{if(a.trim()===""){h(null);return}let w=!1;return(async()=>{h(null);const v=await Promise.all(s.map(async N=>{const{search:S}=oe[N.type];if(!S)return null;try{return await S({client:r,session:t,block:N,q:a})}catch(j){return console.error(`Userflow.js: Global search failed for ${N.type} block=`,N,"error=",j),null}}));w||h(v.filter(N=>N!=null&&N.results.length>0))})(),()=>{w=!0}},[r,t,s,a]),l.useEffect(()=>{i.current?.focus({preventScroll:!0})},[]),e.createElement(e.Fragment,null,e.createElement("div",{className:"userflowjs-resource-center-list-route-search"},e.createElement("input",{ref:i,className:"userflowjs-text-input",type:"text",value:d,onChange:w=>u(w.target.value),placeholder:c("resource_center.search_placeholder")})),a.trim()===""?e.createElement("div",{"data-testid":"resource-center-empty-query",className:"userflowjs-resource-center-list-route-error"},c("resource_center.search_in")," ",o.map((w,b)=>e.createElement(e.Fragment,{key:w.cvid},b>0&&(b===o.length-1?` ${c("and")} `:", "),e.createElement("b",null,e.createElement(G,{doc:w.name,lookupAttribute:_(t.data)})))),"."):p?p.length===0?e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},c("resource_center.no_results_found")):p.map(({block:w,truncated:b,results:v},N)=>{const S=oe[w.type],j=S.routeTo&&S.routeTo({block:w,initialQ:a});return e.createElement(e.Fragment,{key:w.cvid},N>0&&e.createElement("div",{className:"userflowjs-resource-center-divider"}),e.createElement("div",{className:"userflowjs-resource-center-label"},e.createElement(G,{doc:w.name,lookupAttribute:_(t.data)})),v.map((C,M)=>C.kind==="flow"?e.createElement(Kt,{key:C.flow.id,block:w,session:t,flow:C.flow,navigate:n}):C.kind==="article"?e.createElement(Qt,{key:M,block:w,session:t,article:C.article}):null),!b&&j&&e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:C=>{R(r,t,w),n(j,C)}},e.createElement("div",{className:"userflowjs-resource-center-block-text"},c("more"),":"," ",e.createElement(G,{doc:w.name,lookupAttribute:_(t.data)})),e.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},e.createElement(A,{icon:te}))))}):e.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},e.createElement(U,null)))},cr=({block:t,session:n})=>e.createElement("div",{className:"userflowjs-resource-center-content-route userflowjs-bubble-content"},e.createElement(H,{doc:t.emailContent,lookupAttribute:_(n.data)})),ar=({block:t,session:n})=>e.createElement("div",{className:"userflowjs-resource-center-content-route userflowjs-bubble-content"},e.createElement(H,{doc:t.phoneContent,lookupAttribute:_(n.data)})),lr=({block:t,initialQ:n,session:r,navigate:s})=>{const{t:o}=ne(),c=l.useRef(null),[i,a]=l.useState(n||""),[E,d]=Ge(i,a),{data:u,error:p}=ge({message:{kind:"ListResourceCenterBlockFlows",sessionId:r.id,blockCvid:t.cvid}}),h=u?.flows,w=l.useMemo(()=>h?qt(h,i):null,[h,i]);return l.useEffect(()=>{c.current?.focus({preventScroll:!0})},[]),e.createElement(e.Fragment,null,e.createElement("div",{className:"userflowjs-resource-center-list-route-header"},e.createElement("div",{className:"userflowjs-resource-center-list-route-title"},e.createElement(G,{doc:t.name,lookupAttribute:_(r.data)}))),t.searchEnabled&&e.createElement("div",{className:"userflowjs-resource-center-list-route-search"},e.createElement("input",{ref:c,className:"userflowjs-text-input",type:"text",value:E,onChange:b=>d(b.target.value),placeholder:o("resource_center.search_placeholder")})),p?e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},o("resource_center.generic_error")):w?w.length===0?e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},o("resource_center.no_results_found")):w.map(b=>e.createElement(Kt,{key:b.id,block:t,session:r,flow:b,navigate:s})):e.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},e.createElement(U,{fadeIn:!0})))};function qt(t,n){const r=n.toLowerCase().trim();return r===""?t:t.filter(s=>s.name.toLowerCase().includes(r))}const Kt=({block:t,session:n,flow:r,navigate:s})=>{const o=x(),[c,i]=l.useState(!1);return l.useEffect(()=>{if(!c||r.type!==ft.CHECKLIST)return;const a=()=>{o.checklistSession?.flow.id===r.id&&(E(),s(null))},E=()=>{o.off("checklistChanged",a)};return o.on("checklistChanged",a),E},[o,c,r.type,r.id,s]),e.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:()=>{if(R(o,n,t,r.name),o.checklistSession?.flow.id===r.id){s(null);return}o.startFlow({flowId:r.id,startReason:n.draftMode?ht.DRAFT:ht.RESOURCE_CENTER,replaceCurrent:!0}),i(!0);const a=qe(r.url,{lookupAttribute:_(n.data)});a&&An(a)},disabled:c},r.iconSetting!==kn.HIDE&&e.createElement("div",{className:"userflowjs-resource-center-block-icon"},r.icon?e.createElement(A,{icon:r.icon,size:16}):e.createElement(A,{icon:r.type===ft.CHECKLIST?"regular/tasks":"regular/shoe-prints",size:16})),n.draftMode&&!r.published&&e.createElement("div",{className:"userflowjs-resource-center-code-block"},e.createElement("div",{title:"Unpublished. Preview only"},e.createElement("code",null,"P"))),e.createElement("div",{className:"userflowjs-resource-center-block-text"},r.name),c&&e.createElement(U,null))},ir=({block:t,initialQ:n,session:r,bodyRef:s})=>{const{t:o}=ne(),c=l.useRef(null),[i,a]=l.useState(n||""),[E,d]=Ge(i,a),{loading:u,loadingMore:p,data:h,messageForData:w,error:b,loadMore:v}=ge({message:{kind:"SearchKnowledgeBase",sessionId:r.id,blockCvid:t.cvid,q:i,offset:0}}),N=h?.truncated,S=l.useCallback(()=>{v((C,M)=>({...M,offset:C.articles.length}),(C,M)=>({...M,articles:[...C.articles,...M.articles]}))},[v]);Zt({bodyRef:s,loading:u,loadingMore:p,truncated:N,loadMoreHelper:S}),l.useEffect(()=>{c.current?.focus({preventScroll:!0})},[]);let j=t.knowledgeBaseUrl||"";return j.match(/^https?:\/\//)||(j=`http://${j}`),j=Ot(j),e.createElement(e.Fragment,null,e.createElement("div",{className:"userflowjs-resource-center-list-route-header"},e.createElement("div",{className:"userflowjs-resource-center-list-route-title"},e.createElement(G,{doc:t.name,lookupAttribute:_(r.data)})),e.createElement("a",{className:"userflowjs-resource-center-icon-button",href:j,target:"_blank",rel:"noopener noreferrer"},e.createElement(A,{icon:Fn}))),e.createElement("div",{className:"userflowjs-resource-center-list-route-search"},e.createElement("input",{ref:c,className:"userflowjs-text-input",type:"text",value:E,onChange:C=>d(C.target.value),placeholder:o("resource_center.search_placeholder")})),b?e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},b.code==="quota_exceeded"?"Sorry, this company has reached its max number of searches. Consider asking Userflow to be moved to a dedicated search engine for a higher quota.":b.humanMessage||o("resource_center.generic_error")):u||!h?e.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},e.createElement(U,null)):h.articles.length===0?w?.q===""?null:e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},o("resource_center.no_results_found")):e.createElement(e.Fragment,null,w?.q===""&&e.createElement("div",{className:"userflowjs-resource-center-label"},o("resource_center.suggested_articles")),h.articles.map((C,M)=>e.createElement(Qt,{key:M,block:t,session:r,article:C})),p&&e.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},e.createElement(U,null))))},Qt=({block:t,article:n,session:r})=>{const s=x();return e.createElement("a",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:()=>{R(s,r,t,n.title)},href:Ot(n.url),target:"_blank",rel:"noopener noreferrer"},e.createElement("div",{className:"userflowjs-resource-center-block-icon"},e.createElement(A,{icon:"regular/file-alt",size:16})),e.createElement("div",{className:"userflowjs-resource-center-block-text"},e.createElement("span",{dangerouslySetInnerHTML:{__html:n.htmlTitle}}),e.createElement("div",{className:"userflowjs-resource-center-block-subtext",dangerouslySetInnerHTML:{__html:n.htmlSnippet}})))},ur=({block:t,session:n})=>e.createElement("div",{className:"userflowjs-resource-center-content-route userflowjs-bubble-content"},e.createElement(H,{doc:t.content,lookupAttribute:_(n.data)})),dr=({bodyRef:t,session:n,route:r,navigate:s})=>{const o=x(),c=ge({message:{kind:"ListAnnouncements",beforeAnnouncementId:null},skip:r?.kind!=="announcementList"}),{loading:i,loadingMore:a,data:E,loadMore:d}=c,u=E?.truncated,p=l.useCallback(()=>{d((b,v)=>b.announcements.length>0?{...v,beforeAnnouncementId:b.announcements[b.announcements.length-1].id}:v,(b,v)=>({...v,announcements:[...b.announcements,...v.announcements]}))},[d]);Zt({bodyRef:t,loading:i,loadingMore:a,truncated:u,loadMoreHelper:p});const[h,w]=l.useState(void 0);return l.useLayoutEffect(()=>{t.current&&h!=null&&r?.kind==="announcementList"&&(t.current.scrollTop=h)},[t,h,r?.kind]),r?.kind==="announcementList"?e.createElement(mr,{bodyRef:t,session:n,block:r.block,onMoreClick:b=>{w(t.current?.scrollTop),R(o,n,r.block,b.title),s({kind:"announcementShow",block:r.block,announcementId:b.id})},...c}):r?.kind==="announcementShow"?e.createElement(fr,{announcementId:r.announcementId}):null},mr=({bodyRef:t,block:n,session:r,onMoreClick:s,error:o,loading:c,loadingMore:i,data:a})=>{const{t:E}=ne(),[d,u]=l.useMemo(()=>{const h=[],w=[];if(a){let b=-1;for(const v of a.announcements)b++,b<a.pageSize&&!v.seen&&v.level!==L.SILENT?h.push(v):w.push(v)}return[h,w]},[a]),p=d.length;return e.createElement(e.Fragment,null,e.createElement("div",{className:"userflowjs-resource-center-list-route-header"},e.createElement("div",{className:"userflowjs-resource-center-list-route-title"},e.createElement(G,{doc:n.name,lookupAttribute:_(r.data)}))),o?e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},o.humanMessage||E("resource_center.generic_error")):c||!a?e.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},e.createElement(U,null)):a.announcements.length===0?e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},be.exists("resource_center.no_announcements",{fallbackLng:[]})?E("resource_center.no_announcements"):E("resource_center.no_results_found")):e.createElement(e.Fragment,null,p>0&&e.createElement("div",{className:"userflowjs-announcement-unread-header"},E("resource_center.unread",{count:p})),d.map((h,w)=>e.createElement(Mt,{key:w,bodyRef:t,onMoreClick:()=>s(h),announcement:h})),d.length>0&&u.length>0&&e.createElement("div",{className:"userflowjs-announcement-seen-divider"}),u.map((h,w)=>e.createElement(Mt,{key:w,bodyRef:t,onMoreClick:()=>s(h),announcement:h})),i&&e.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},e.createElement(U,null))))},Lt=new Set;function $(t,n){Lt.has(n.id)&&n.seen||(Lt.add(n.id),Je(t,n))}const Mt=({bodyRef:t,onMoreClick:n,announcement:r})=>{const s=x(),o=Bt(),c=l.useRef(null),i=l.useRef(!1);return l.useEffect(()=>{if(i.current||r.seen)return;const a=new IntersectionObserver(d=>{const u=d[0];u&&u.isIntersecting&&($(s,r),i.current=!0,E())},{root:t.current,threshold:1}),E=()=>{a.disconnect()};return a.observe(c.current),E},[t,s,r]),e.createElement("div",{className:"userflowjs-announcement-list-item"},e.createElement("div",{className:"userflowjs-announcement-time-divider"},e.createElement("div",{className:"userflowjs-announcement-time-divider-line"}),e.createElement("div",{className:"userflowjs-announcement-time-text"},Ce(r.time)),e.createElement("div",{className:"userflowjs-announcement-time-divider-line"})),e.createElement("h2",{ref:c,className:"userflowjs-announcement-title"},!r.seen&&r.level!==L.SILENT&&e.createElement("span",{className:"userflowjs-unread-dot"}),e.createElement("span",null,r.title)),e.createElement("div",{className:"userflowjs-announcement-content userflowjs-bubble-content"},e.createElement(se.Provider,{value:{...o,data:r.data}},e.createElement(H,{doc:r.content,buttons:r.buttons,lookupAttribute:_(r.data)}))),e.createElement("div",{className:"userflowjs-announcement-more"},r.moreEnabled&&e.createElement("button",{className:"userflowjs-tertiary-button",onClick:n},e.createElement("div",null,r.moreButtonText||"Read more"),e.createElement("span",{className:"userflowjs-rtl-mirrored"},e.createElement(A,{icon:Dt})))))},fr=({announcementId:t})=>{const n=x(),r=Bt(),{t:s}=ne(),{loading:o,data:c,error:i}=ge({message:{kind:"GetAnnouncement",announcementId:t}}),a=c?.announcement;return l.useEffect(()=>{!a||a.seen||$(n,a)},[n,a]),e.createElement(e.Fragment,null,i?e.createElement("div",{className:"userflowjs-resource-center-list-route-error"},i.humanMessage||s("resource_center.generic_error")):o||!a?e.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},e.createElement(U,null)):e.createElement(e.Fragment,null,e.createElement("div",{className:"userflowjs-announcement-show"},e.createElement("h2",{className:"userflowjs-announcement-title"},a?.title),e.createElement("div",{className:"userflowjs-announcement-time"},e.createElement("div",{className:"userflowjs-announcement-time-text"},Ce(a.time))),e.createElement("div",{className:"userflowjs-bubble-content"},e.createElement(se.Provider,{value:{...r,data:a.data}},e.createElement(H,{doc:a.content,buttons:a.buttons,lookupAttribute:_(a.data)}),a.moreEnabled&&e.createElement(H,{doc:a.moreContent,buttons:a.moreButtons,lookupAttribute:_(a.data)}))))))},hr=({block:t,initialUserContent:n,session:r,navigate:s,onChatShow:o})=>{const c=t.assistantFlowId,i=x(),[a,E]=l.useState(null),[d,u]=l.useState(null),[p,h]=l.useState(null),[w]=l.useState(n);l.useEffect(()=>{n&&s({kind:"assistant",block:t,initialUserContent:""})},[n,t,s]),l.useEffect(()=>{let v=!1;return(async()=>{try{const S=re.getItem("assistantConversationId:"+c),[j,C]=await Promise.all([sr(),i.send({kind:"GetAssistant",assistantFlowId:c,conversationId:S},{handlesRejection:!0,endBatch:!0})]);if(v)return;E(()=>j),u(C)}catch(S){console.error("Resource center assistant route failed to load:",S),h(S.humanMessage||"Sorry, something went wrong. Please try again or contact my human friends.")}})(),()=>{v=!0}},[i,c]);const b=l.useMemo(()=>{if(!t.assistantContactEnabled)return;const v=r.version.resourceCenter?.blocks.find(N=>N.type===y.CONTACT);if(v)return()=>{switch(R(i,r,t,t.assistantContactButtonText||void 0),t.assistantContactMethod){case wt.EMAIL:s({kind:"email",block:v});break;case wt.PHONE:s({kind:"phone",block:v});break;default:s(null),Gt(r,v,o);break}}},[i,r,t,o,s]);return p?e.createElement("div",{className:"userflowjs-assistant-chat"},e.createElement("div",{className:"userflowjs-assistant-chat__content"},e.createElement("div",{className:"userflowjs-assistant-chat__error"},p))):!a||!d?e.createElement(U,{center:!0,fadeIn:!0}):e.createElement(a,{block:t,session:r,assistantReply:d,initialUserContent:w,onContactClick:b,contactButtonText:t.assistantContactButtonText||void 0})};function R(t,n,r,s){t.send({kind:"ClickResourceCenter",sessionId:n.id,description:r?qe(r.name,{lookupAttribute:_(n.data)})+(s?` - ${s}`:""):s},{batch:!0})}function Zt({bodyRef:t,loading:n,loadingMore:r,truncated:s,loadMoreHelper:o}){l.useEffect(()=>{const c=t.current;if(!c||n||r||s)return;const i=()=>{c.scrollHeight-c.clientHeight-c.scrollTop>400||o()};return c.addEventListener("scroll",i),()=>{c.removeEventListener("scroll",i)}},[t,n,r,s,o])}function Gt(t,n,r){if(n.chatProvider){const s=Le[n.chatProvider];try{s.show({block:n})}catch(o){console.error(`Userflow.js: Error when showing ${n.chatProvider}:`,o)}r()}else t.draftMode&&window.alert("You have not selected a chat provider. Go to the resource center builder in Userflow. Click the Contact block. Pick a chat provider in the side panel.")}function Je(t,n){t.setResourceCenterSession(r=>r?{...r,version:{...r.version,resourceCenter:{...r.version.resourceCenter,blocks:r.version.resourceCenter.blocks.map(s=>s.type===y.ANNOUNCEMENTS?{...s,unreadAnnouncementCount:n.level===L.SILENT?s.unreadAnnouncementCount:s.unreadAnnouncementCount-1,popoutAnnouncement:s.popoutAnnouncement?.id===n.id?null:s.popoutAnnouncement,boosterAnnouncement:s.boosterAnnouncement?.id===n.id?null:s.boosterAnnouncement}:s)}}}:null),t.send({kind:"MarkAnnouncementSeen",announcementId:n.id,versionId:n.versionId}),t.toggleUI()}function Jt(t){return t?.version.resourceCenter?.blocks.find(n=>n.type===y.ANNOUNCEMENTS)||null}function Ce(t){const n=t?new Date(t):new Date;let r=new Intl.DateTimeFormat(be.language,{weekday:"long",day:"numeric",month:"short",year:n.getFullYear()===new Date().getFullYear()?void 0:"numeric"}).format(n);return r.substring(0,1).toUpperCase()+r.substring(1)}const Br=Object.freeze(Object.defineProperty({__proto__:null,FloatingAnnouncements:Wt,LauncherUnreadBadge:$t,ModalAnnouncement:zt,ResourceCenterApp:_t,default:_t,formatAnnouncementTime:Ce,getAnnouncementsBlock:Jt,markAnnouncementSeen:$,serializeRoute:Vt,syncAnnouncementSeen:Je},Symbol.toStringTag,{value:"Module"}));export{nr as A,tr as G,$t as L,Br as R,Ot as d,Ce as f,$ as m,Vt as s};
5
5
  //# sourceMappingURL=ResourceCenterApp.js.map
@@ -1,5 +1,5 @@
1
- import{r as u,R as n}from"./vendor.react.js";import{ae as _,af as A,u as Y}from"./userflow.js";import{u as _e}from"./client-context.js";import{a5 as q,a6 as Q,a7 as ke,a8 as P,a9 as $,aa as V,ab as X,ac as Z}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{p as we}from"./vendor.dompurify.js";import{m as Ie}from"./vendor.marked.js";import{o as y}from"./vendor.obj-str.js";import{A as je,d as Ce,G as Se}from"./ResourceCenterApp.js";import{j as ae,R as re}from"./use-selector-element-monitoring.js";import{D as W}from"./stylesheets.js";import{U as oe}from"./roots.js";import{r as ee}from"./vendor.react-dom.js";import"./vendor.core-js.js";import{g as Me}from"./flow-condition-types.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"./vendor.babel.runtime.js";import"./flow-host.styl.js";import"./Frame.js";import"./use-window-resize.js";import"./logomark.js";import"./ChecklistUI.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./FlowChrome.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]="9a1bc5ce-2115-4fa6-a6a3-a4f485dcb82a",t._sentryDebugIdIdentifier="sentry-dbid-9a1bc5ce-2115-4fa6-a6a3-a4f485dcb82a")}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:p,InsideMessage:r,onContactClick:g,contactButtonText:i}){const[o,d]=u.useState(null),[j,w]=u.useState(()=>c?c.map(s=>({...s,assistantHtml:x(B(s.assistantContent),!1)})):te),[D,M]=u.useState(""),C=u.useRef(null),k=u.useRef(null),E=u.useRef(!0),I=u.useRef(a||null),[ie,ue]=u.useState(I.current),H=u.useCallback(s=>{I.current=s,ue(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&&(E.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,E.current&&K())},[j,K]);const N=u.useCallback(()=>{C.current&&C.current()},[]);u.useEffect(()=>()=>{N()},[N]);const O=(s,R)=>{w(S=>S.map(v=>{if(s===v.id){const b=R(v);return{...v,...b}}else return v}))},L=s=>{w(R=>R.map((S,v)=>{if(v===R.length-1){const b=s(S);return{...S,...b}}else return S}))},U=u.useCallback(async s=>{if(s=s.trim(),s==="")return;N(),w(b=>[...b,{id:null,userContent:s,assistantContent:"",assistantFallbackContent:null,assistantHtml:x("","enter"),enterAnimation:!0,sources:[],completed:!1,rating:null,scaleRating:null,scaleMax:null,feedbackSubmitted:!1}]),M(""),K();let R=!1;const S=()=>{R=!0,C.current=null},v=h({conversationId:I.current,userContent:s,callback:b=>{if(R){console.log("Userflow.js AssistantChat got message after being done",b);return}switch(b.kind){case"conversation_created":H(b.conversationId);break;case"message_created":L(()=>({id:b.messageId,warning:b.warning}));break;case"assistant_content_delta":L(F=>{const ge=b.delta,J=F.assistantContent+ge,be=B(J),Ee=x(be);return{assistantContent:J,assistantHtml:Ee}});break;case"done":S(),L(F=>({assistantHtml:x(F.assistantContent,"exit"),assistantFallbackContent:b.fallbackContent,completed:!0,sources:b.sources}));break;case"error":S(),L(F=>({failed:!0,error:b.message,assistantHtml:x(B(F.assistantContent),!1)}));break;default:console.log("Userflow.js AssistantChat got unknown message",b)}}});C.current=()=>{S(),v.abort(),L(b=>({assistantHtml:x(B(b.assistantContent),!1)}))}},[N,K,h,H]),z=u.useRef(!1);u.useEffect(()=>{z.current||(z.current=!0,m&&U(m))},[U,m]);const fe=u.useCallback(()=>{N(),H(null),w(te),T()},[N,T,H]),[de,me]=u.useState(!0),he=u.useCallback(()=>{const s=k.current;s&&me(s.scrollTop===0)},[]),pe=u.useCallback(()=>{const s=k.current;s&&(E.current=Math.ceil(s.scrollHeight-s.clientHeight)==Math.ceil(s.scrollTop))},[]);return{assistant:t,lookupAttribute:e,history:j,setInput:d,contentElRef:k,scrolledToTop:de,userContent:D,setUserContent:M,onSubmitMessage:U,supportsFeedback:!!l&&!!p,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 oe(s)}l(s)}},onSubmitFeedback:s=>{p&&(O(s.messageId,()=>({feedbackSubmitted:!0})),p(s))},InsideMessage:r,onContactClick:g,contactButtonText:i,reset:fe,onContentScroll:he,onContentWheel:pe,conversationId:ie}}const xe=({assistant:t,lookupAttribute:e,history:a,setInput:c,contentElRef:m,scrolledToTop:f,userContent:h,setUserContent:l,onSubmitMessage:p,supportsFeedback:r,onSubmitRating:g,onSubmitFeedback:i,InsideMessage:o,onContactClick:d,contactButtonText:j,reset:w,onContentScroll:D,onContentWheel:M,conversationId:C})=>{const k=a.some(E=>E.completed||E.failed);return n.createElement("div",{className:"userflowjs-assistant-chat"},n.createElement("div",{className:y({"userflowjs-assistant-chat__header":!0,"userflowjs-assistant-chat__header--content-scrolled":!f})}),n.createElement("div",{className:y({"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},!ae(t.intro)&&n.createElement("div",{className:"userflowjs-assistant-chat__intro"},n.createElement(re,{doc:t.intro,lookupAttribute:e})),a.map((E,I)=>n.createElement(Le,{key:I,assistant:t,message:E,supportsFeedback:r,onSubmitRating:g,onSubmitFeedback:i,InsideMessage:o,conversationId:C,isLast:I===a.length-1}))),n.createElement("div",{className:"userflowjs-assistant-chat__prompt"},n.createElement(je,{textareaRef:c,placeholder:(a.length===0?t.promptEmptyPlaceholder:t.promptNonemptyPlaceholder)||"",value:h,onChange:l,onSubmit:()=>p(h)})),k&&d&&n.createElement("div",{className:"userflowjs-assistant-chat__contact"},n.createElement("button",{className:"userflowjs-tertiary-button",onClick:()=>d()},j)))},Le=({assistant:t,message:e,supportsFeedback:a,onSubmitRating:c,onSubmitFeedback:m,InsideMessage:f,conversationId:h,isLast:l})=>{const p=!ae(e.assistantFallbackContent);return n.createElement("div",{className:"userflowjs-assistant-chat__message"},f&&n.createElement(f,{message:e}),n.createElement("div",{className:y({"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"},p&&n.createElement("div",null,n.createElement(re,{doc:e.assistantFallbackContent})),!p&&n.createElement("div",null,n.createElement(Ae,{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((r,g)=>n.createElement("a",{key:g,className:"userflowjs-assistant-chat__source",href:Ce(r.url),target:"_blank",rel:"noreferrer noopener"},r.title))),a&&e.completed&&e.id&&(t.ratingMode===_.LIKE||t.ratingMode===_.SCALE&&l)&&n.createElement(Fe,{assistant:t,message:e,onSubmitRating:c,onSubmitFeedback:m}))},Fe=({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}))},p=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(""))},g=t.ratingMode===_.LIKE?n.createElement("button",{className:"userflowjs-assistant-chat__rating-option",disabled:!0},n.createElement(W,{icon:e.rating==A.DISLIKE?q:Q})):e.scaleRating&&e.scaleMax&&n.createElement("button",{className:y({"userflowjs-assistant-chat__rating-option":!0,"userflowjs-assistant-chat__rating-option--scale":!0}),disabled:!0},le(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"},g,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===A.LIKE?t.feedbackLikePlaceholder:t.feedbackDislikePlaceholder:t.scaleFeedbackPlaceholder)||"",value:f,onChange:h,onKeyDown:i=>{!i.shiftKey&&i.key==="Enter"&&(i.preventDefault(),r())}},g,n.createElement("button",{className:"userflowjs-assistant-chat__feedback-submit",onClick:()=>r()},n.createElement(W,{icon:ke}))):n.createElement("div",{className:"userflowjs-assistant-chat__rating-options"},t.ratingMode===_.LIKE?[A.LIKE,A.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==A.DISLIKE?q:Q}))):ye(t).map(({value:i,label:o})=>n.createElement("button",{key:i,className:y({"userflowjs-assistant-chat__rating-option":!0,"userflowjs-assistant-chat__rating-option--large-scale":Re(o||"")}),onClick:e.scaleRating?void 0:()=>p(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{af as _,ag as A,C as Y}from"./userflow.js";import{u as _e}from"./client-context.js";import{a5 as q,a6 as Q,a7 as ke,a8 as P,a9 as $,aa as V,ab as X,ac as Z}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{p as we}from"./vendor.dompurify.js";import{m as Ie}from"./vendor.marked.js";import{o as y}from"./vendor.obj-str.js";import{A as Ce,d as je,G as Se}from"./ResourceCenterApp.js";import{j as ae,R as re}from"./use-selector-element-monitoring.js";import{D as W}from"./stylesheets.js";import{U as oe}from"./roots.js";import{r as ee}from"./vendor.react-dom.js";import"./vendor.core-js.js";import{g as Me}from"./flow-condition-types.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"./vendor.babel.runtime.js";import"./flow-host.styl.js";import"./Frame.js";import"./use-window-resize.js";import"./logomark.js";import"./ChecklistUI.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./FlowChrome.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]="ad695eee-b2ee-4b14-84aa-2302f5f78f77",t._sentryDebugIdIdentifier="sentry-dbid-ad695eee-b2ee-4b14-84aa-2302f5f78f77")}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:p,InsideMessage:r,onContactClick:g,contactButtonText:i}){const[o,d]=u.useState(null),[C,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),E=u.useRef(!0),I=u.useRef(a||null),[ie,ue]=u.useState(I.current),H=u.useCallback(s=>{I.current=s,ue(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&&(E.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,E.current&&K())},[C,K]);const N=u.useCallback(()=>{j.current&&j.current()},[]);u.useEffect(()=>()=>{N()},[N]);const O=(s,R)=>{w(S=>S.map(v=>{if(s===v.id){const b=R(v);return{...v,...b}}else return v}))},L=s=>{w(R=>R.map((S,v)=>{if(v===R.length-1){const b=s(S);return{...S,...b}}else return S}))},U=u.useCallback(async s=>{if(s=s.trim(),s==="")return;N(),w(b=>[...b,{id:null,userContent:s,assistantContent:"",assistantFallbackContent:null,assistantHtml:x("","enter"),enterAnimation:!0,sources:[],completed:!1,rating:null,scaleRating:null,scaleMax:null,feedbackSubmitted:!1}]),M(""),K();let R=!1;const S=()=>{R=!0,j.current=null},v=h({conversationId:I.current,userContent:s,callback:b=>{if(R){console.log("Userflow.js AssistantChat got message after being done",b);return}switch(b.kind){case"conversation_created":H(b.conversationId);break;case"message_created":L(()=>({id:b.messageId,warning:b.warning}));break;case"assistant_content_delta":L(F=>{const ge=b.delta,J=F.assistantContent+ge,be=B(J),Ee=x(be);return{assistantContent:J,assistantHtml:Ee}});break;case"done":S(),L(F=>({assistantHtml:x(F.assistantContent,"exit"),assistantFallbackContent:b.fallbackContent,completed:!0,sources:b.sources}));break;case"error":S(),L(F=>({failed:!0,error:b.message,assistantHtml:x(B(F.assistantContent),!1)}));break;default:console.log("Userflow.js AssistantChat got unknown message",b)}}});j.current=()=>{S(),v.abort(),L(b=>({assistantHtml:x(B(b.assistantContent),!1)}))}},[N,K,h,H]),z=u.useRef(!1);u.useEffect(()=>{z.current||(z.current=!0,m&&U(m))},[U,m]);const fe=u.useCallback(()=>{N(),H(null),w(te),T()},[N,T,H]),[de,me]=u.useState(!0),he=u.useCallback(()=>{const s=k.current;s&&me(s.scrollTop===0)},[]),pe=u.useCallback(()=>{const s=k.current;s&&(E.current=Math.ceil(s.scrollHeight-s.clientHeight)==Math.ceil(s.scrollTop))},[]);return{assistant:t,lookupAttribute:e,history:C,setInput:d,contentElRef:k,scrolledToTop:de,userContent:D,setUserContent:M,onSubmitMessage:U,supportsFeedback:!!l&&!!p,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 oe(s)}l(s)}},onSubmitFeedback:s=>{p&&(O(s.messageId,()=>({feedbackSubmitted:!0})),p(s))},InsideMessage:r,onContactClick:g,contactButtonText:i,reset:fe,onContentScroll:he,onContentWheel:pe,conversationId:ie}}const xe=({assistant:t,lookupAttribute:e,history:a,setInput:c,contentElRef:m,scrolledToTop:f,userContent:h,setUserContent:l,onSubmitMessage:p,supportsFeedback:r,onSubmitRating:g,onSubmitFeedback:i,InsideMessage:o,onContactClick:d,contactButtonText:C,reset:w,onContentScroll:D,onContentWheel:M,conversationId:j})=>{const k=a.some(E=>E.completed||E.failed);return n.createElement("div",{className:"userflowjs-assistant-chat"},n.createElement("div",{className:y({"userflowjs-assistant-chat__header":!0,"userflowjs-assistant-chat__header--content-scrolled":!f})}),n.createElement("div",{className:y({"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},!ae(t.intro)&&n.createElement("div",{className:"userflowjs-assistant-chat__intro"},n.createElement(re,{doc:t.intro,lookupAttribute:e})),a.map((E,I)=>n.createElement(Le,{key:I,assistant:t,message:E,supportsFeedback:r,onSubmitRating:g,onSubmitFeedback:i,InsideMessage:o,conversationId:j,isLast:I===a.length-1}))),n.createElement("div",{className:"userflowjs-assistant-chat__prompt"},n.createElement(Ce,{textareaRef:c,placeholder:(a.length===0?t.promptEmptyPlaceholder:t.promptNonemptyPlaceholder)||"",value:h,onChange:l,onSubmit:()=>p(h)})),k&&d&&n.createElement("div",{className:"userflowjs-assistant-chat__contact"},n.createElement("button",{className:"userflowjs-tertiary-button",onClick:()=>d()},C)))},Le=({assistant:t,message:e,supportsFeedback:a,onSubmitRating:c,onSubmitFeedback:m,InsideMessage:f,conversationId:h,isLast:l})=>{const p=!ae(e.assistantFallbackContent);return n.createElement("div",{className:"userflowjs-assistant-chat__message"},f&&n.createElement(f,{message:e}),n.createElement("div",{className:y({"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"},p&&n.createElement("div",null,n.createElement(re,{doc:e.assistantFallbackContent})),!p&&n.createElement("div",null,n.createElement(Ae,{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((r,g)=>n.createElement("a",{key:g,className:"userflowjs-assistant-chat__source",href:je(r.url),target:"_blank",rel:"noreferrer noopener"},r.title))),a&&e.completed&&e.id&&(t.ratingMode===_.LIKE||t.ratingMode===_.SCALE&&l)&&n.createElement(Fe,{assistant:t,message:e,onSubmitRating:c,onSubmitFeedback:m}))},Fe=({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}))},p=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(""))},g=t.ratingMode===_.LIKE?n.createElement("button",{className:"userflowjs-assistant-chat__rating-option",disabled:!0},n.createElement(W,{icon:e.rating==A.DISLIKE?q:Q})):e.scaleRating&&e.scaleMax&&n.createElement("button",{className:y({"userflowjs-assistant-chat__rating-option":!0,"userflowjs-assistant-chat__rating-option--scale":!0}),disabled:!0},le(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"},g,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===A.LIKE?t.feedbackLikePlaceholder:t.feedbackDislikePlaceholder:t.scaleFeedbackPlaceholder)||"",value:f,onChange:h,onKeyDown:i=>{!i.shiftKey&&i.key==="Enter"&&(i.preventDefault(),r())}},g,n.createElement("button",{className:"userflowjs-assistant-chat__feedback-submit",onClick:()=>r()},n.createElement(W,{icon:ke}))):n.createElement("div",{className:"userflowjs-assistant-chat__rating-options"},t.ratingMode===_.LIKE?[A.LIKE,A.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==A.DISLIKE?q:Q}))):ye(t).map(({value:i,label:o})=>n.createElement("button",{key:i,className:y({"userflowjs-assistant-chat__rating-option":!0,"userflowjs-assistant-chat__rating-option--large-scale":Re(o||"")}),onClick:e.scaleRating?void 0:()=>p(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
- `){f=r;break}const h=[];let l=!1;const p=r=>r==null||r.match(/\W/);for(let r=f;r<e.length;r++){const g=e[r],i=g+e[r+1],o=i+e[r+2];let d=null;!l&&o==="***"||!l&&o==="___"&&(p(e[r-1])||p(e[r+3]))?d=o:!l&&i==="**"||!l&&i==="__"&&(p(e[r-1])||p(e[r+2]))?d=i:(!l&&g==="*"||!l&&g==="_"&&(p(e[r-1])||p(e[r+1]))||g==="`")&&(d=g),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=we.sanitize(Ie.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 Ae=({html:t})=>u.useMemo(()=>{if(!t)return null;const a=new DOMParser().parseFromString(t,"text/html");return ce(a.body)},[t]);function ce(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(ce(c,a)),a++;return e}function ye(t){let e=[];const a=t.scaleMax||5;for(let c=1;c<=a;c++)e.push({value:c,label:le(t,c,a)});return e}function le(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}},gt=({block:t,session:e,assistantReply:a,initialUserContent:c,onContactClick:m,contactButtonText:f})=>{const h=t.assistantFlowId,l=_e(),{t:p}=ve(),r=p("assistant.generic_error"),g=p("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:j})=>{l.assistantMessageInProgress=!0;const w=l.nextRef();l.send({kind:"SubmitAssistantMessage",ref:w,assistantFlowId:h,conversationId:o,userContent:d},{handlesRejection:!0}).catch(E=>{j({kind:"error",message:E.humanMessage||r})});const M=()=>{l.assistantMessageInProgress=void 0,l.off("private:assistantMessageEvent",C),l.off("private:disconnect",k)},C=E=>{if(E.ref!==w)return;const{event:I}=E;j(I),(I.kind=="done"||I.kind=="error")&&M()},k=()=>{j({kind:"error",message:g}),M()};return l.on("private:assistantMessageEvent",C),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 oe(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,g]));return n.createElement(n.Fragment,null,n.createElement(xe,{...i}))};export{gt as ResourceCenterAssistantChat};
4
+ `){f=r;break}const h=[];let l=!1;const p=r=>r==null||r.match(/\W/);for(let r=f;r<e.length;r++){const g=e[r],i=g+e[r+1],o=i+e[r+2];let d=null;!l&&o==="***"||!l&&o==="___"&&(p(e[r-1])||p(e[r+3]))?d=o:!l&&i==="**"||!l&&i==="__"&&(p(e[r-1])||p(e[r+2]))?d=i:(!l&&g==="*"||!l&&g==="_"&&(p(e[r-1])||p(e[r+1]))||g==="`")&&(d=g),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=we.sanitize(Ie.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 Ae=({html:t})=>u.useMemo(()=>{if(!t)return null;const a=new DOMParser().parseFromString(t,"text/html");return ce(a.body)},[t]);function ce(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(ce(c,a)),a++;return e}function ye(t){let e=[];const a=t.scaleMax||5;for(let c=1;c<=a;c++)e.push({value:c,label:le(t,c,a)});return e}function le(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}},gt=({block:t,session:e,assistantReply:a,initialUserContent:c,onContactClick:m,contactButtonText:f})=>{const h=t.assistantFlowId,l=_e(),{t:p}=ve(),r=p("assistant.generic_error"),g=p("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:C})=>{l.assistantMessageInProgress=!0;const w=l.nextRef();l.send({kind:"SubmitAssistantMessage",ref:w,assistantFlowId:h,conversationId:o,userContent:d},{handlesRejection:!0}).catch(E=>{C({kind:"error",message:E.humanMessage||r})});const M=()=>{l.assistantMessageInProgress=void 0,l.off("private:assistantMessageEvent",j),l.off("private:disconnect",k)},j=E=>{if(E.ref!==w)return;const{event:I}=E;C(I),(I.kind=="done"||I.kind=="error")&&M()},k=()=>{C({kind:"error",message:g}),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 oe(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,g]));return n.createElement(n.Fragment,null,n.createElement(xe,{...i}))};export{gt as ResourceCenterAssistantChat};
5
5
  //# sourceMappingURL=ResourceCenterAssistantChat.js.map
@@ -0,0 +1,2 @@
1
+ import{r as i,R as e}from"./vendor.react.js";import{k as E,z as C,r as R,C as h}from"./userflow.js";import{u as g}from"./client-context.js";import{u as v,S,R as A}from"./use-selector-element-monitoring.js";import{u as b,D as k}from"./stylesheets.js";import{L,m as T,f as I,s as M}from"./ResourceCenterApp.js";import{g as x}from"./flow-condition-types.js";import{J as O}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{F as j,B as D}from"./FlowChrome.js";import"./vendor.core-js.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"./roots.js";import"./flow-host.styl.js";import"./Frame.js";import"./vendor.react-dom.js";import"./vendor.scheduler.js";import"./use-window-resize.js";import"./logomark.js";import"./ChecklistUI.js";import"./vendor.memoize-one.js";import"./vendor.bignumber.js.js";import"./use-element-rect.js";import"./vendor.date-fns.js";import"./vendor.canvas-confetti.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]="8c21e0ac-9c87-4c35-a5dc-1a6bf8d9cdae",o._sentryDebugIdIdentifier="sentry-dbid-8c21e0ac-9c87-4c35-a5dc-1a6bf8d9cdae")}catch{}})();const Ee=({session:o,isOpen:t,flowSession:l})=>{const a=g(),r=o.version.resourceCenter,p=b(o.version.theme),[n,m]=i.useState(null);i.useEffect(()=>{if(r.launcherType===E.CUSTOM||r.launcherType===E.NONE)return a.setResourceCenterLauncherHidden(!0),()=>{a.setResourceCenterLauncherHidden(!1)}},[a,r.launcherType]);const s=()=>{a.toggleResourceCenter()},d=u=>{m(u)},w=()=>{m(null)};v({selector:r.launcherType===E.CUSTOM?r.launcherTargetSelector:null,targetMoved:d,targetLost:w,onTargetClick:s});const c=i.useMemo(()=>r.blocks.find(u=>u.type===C.ANNOUNCEMENTS),[r]),y=!t&&!l&&c&&c.unreadAnnouncementCount>0&&n,f=i.useMemo(()=>c?.popoutAnnouncement,[c]),N=!t&&!l&&f&&n;return e.createElement(S.Provider,{value:o},y&&e.createElement(L,{theme:p,count:c.unreadAnnouncementCount,onClick:s,style:{position:"fixed",top:`${n.targetRect.top}px`,left:`${n.targetRect.left}px`,transform:"translate(-50%, -50%)",zIndex:999999}}),N&&c&&e.createElement(U,{session:o,announcement:f,targetParams:n,onDismiss:()=>{T(a,f)},onOpen:s}))},P=320,U=({session:o,announcement:t,targetParams:l,onOpen:a})=>{const r=g(),p=b(t.theme),n=()=>{T(r,t)},m=()=>{n(),a();const s=M({kind:"announcementShow",block:o.version.resourceCenter.blocks.find(d=>d.type===C.ANNOUNCEMENTS),announcementId:t.id});s?h.setItem(`resourceCenterRoute:v1:${o.id}`,s):h.removeItem(`resourceCenterRoute:v1:${o.id}`)};return e.createElement(j,{company:o.flow.company,theme:p,position:"fixed",stepAppearance:R.TOOLTIP,width:P,tooltipSelector:l.targetEl,tooltipPlacement:null,isModalAnnouncement:!0},e.createElement(D,{close:n}),e.createElement("div",{className:"userflowjs-bubble-content"},e.createElement("div",null,e.createElement("h2",{className:"userflowjs-announcement-title"},e.createElement("span",{className:"userflowjs-unread-dot"}),e.createElement("span",null,t.title)),e.createElement("div",{className:"userflowjs-announcement-time"},e.createElement("div",{className:"userflowjs-announcement-time-text"},I(t.time))),e.createElement("div",{className:"userflowjs-announcement-content"},e.createElement(A,{doc:t.content,buttons:t.buttons,lookupAttribute:x(t.data)})),t.moreEnabled&&e.createElement("div",{className:"userflowjs-announcement-more"},e.createElement("button",{className:"userflowjs-tertiary-button",onClick:m},e.createElement("div",null,t.moreButtonText||"Read more"),e.createElement("span",{className:"userflowjs-rtl-mirrored"},e.createElement(k,{icon:O})))))))};export{Ee as ResourceCenterLauncherHandler,Ee as default};
2
+ //# sourceMappingURL=ResourceCenterLauncherHandler.js.map
@@ -1,2 +1,2 @@
1
- import{r as i,R as o}from"./vendor.react.js";import{u as W}from"./client-context.js";import{B as q}from"./BuilderBar.js";import"./vendor.core-js.js";import{v as L}from"./vendor.uuid.js";import{s as $,p as Z,a as G,j as V,f as J}from"./roots.js";import{z as E,D as Q,y as ee,G as te,H as re}from"./userflow.js";import{D as ne}from"./stylesheets.js";import{f as oe}from"./vendor.fortawesome.pro-light-svg-icons.js";import"./vendor.object-assign.js";import"./vendor.i18next.js";import"./vendor.babel.runtime.js";import"./vendor.react-i18next.js";import"./Frame.js";import"./vendor.react-dom.js";import"./vendor.scheduler.js";import"./logomark.js";import"./vendor.obj-str.js";import"./use-window-resize.js";import"./vendor.phoenix.js";import"./vendor.fortawesome.pro-regular-svg-icons.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./flow-condition-types.js";import"./vendor.date-fns.js";(function(){try{var r=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},u=new Error().stack;u&&(r._sentryDebugIds=r._sentryDebugIds||{},r._sentryDebugIds[u]="54c4b1d9-f9f3-4823-9c7f-a633c1777175",r._sentryDebugIdIdentifier="sentry-dbid-54c4b1d9-f9f3-4823-9c7f-a633c1777175")}catch{}})();const O=r=>L();let _=O;function B(r){return _(r)}B.uuidv4=L;B.mock=r=>{_=r};B.unmock=()=>{_=O};const se=500,ce=500,ae=5e3,ie="builderBarPos",le=50,ue=500;function de(r){try{const u=r.tagName.toLowerCase(),v=["input","textarea","select"].includes(u)||r.getAttribute("contenteditable")==="true"?ee.INPUT:void 0,N=G(r,{elementType:v});if(!N)return null;const R=r.getBoundingClientRect(),S=x=>Math.round(x/V(1)),w={...N.selector,targetX1:S(R.left),targetY1:S(R.top),targetX2:S(R.right),targetY2:S(R.bottom),screenshotWidth:window.innerWidth,screenshotHeight:window.innerHeight};return w.autoData&&J(w)?.length===0?null:w}catch{return null}}const je=({state:r})=>{const u=W(),C=i.useRef(null),[v,N]=i.useState(!1),[R,S]=i.useState(0),[w,x]=i.useState(!1),t=i.useRef(null),b=i.useRef(new Map),f=i.useRef(new Map),y=i.useRef(),I=i.useRef(!1),s=i.useRef(null),m=i.useRef();i.useEffect(()=>{if(!v||!r.isRecording)return;t.current||(Z(),t.current={sessionId:r.sessionId,isRecording:!0,startUrl:r.startUrl,steps:[]},E({kind:"userflow:crxSendProxyMessage",direction:"targetToBuilder",message:{kind:"userflow:smartFlowRecording",isRecording:!0}}));const a=t.current.sessionId,d={capture:!0},T=document.getElementById("userflow-ui"),F=()=>{const e=re.getItem(ie)==="top"?"top":"bottom",c=C.current?.getRootEl()?.clientHeight||0;return{position:e,height:c}},D=async()=>{const{position:e,height:n}=F(),c=0,l=e==="top"?n:0,p=Math.round(window.innerWidth),g=Math.round(window.innerHeight)-n;try{const h=await new Promise((U,k)=>{const z=window.setTimeout(()=>{s.current=null,k(new Error("Screenshot timeout"))},ae);s.current={resolve:U,reject:k,timeoutId:z},E({kind:"userflow:crxScreenshot",x:c,y:l,width:p,height:g,devicePixelRatio:window.devicePixelRatio})});return h?.startsWith("data:image")?h:null}catch{return s.current=null,null}},M=(e,n)=>{if(!e.selector){console.warn("SmartFlowRecordingApp: Cannot send step without selector");return}if(f.current.has(e.stepId))return;const c=te(p=>p.kind==="userflow:smartFlowStepAcknowledgment"&&p.stepId===e.stepId?p:null).then(()=>{});f.current.set(e.stepId,c);const l={kind:"userflow:smartFlowStep",stepId:e.stepId,selectorData:e.selector,screenshotDataUrl:n,action:e.action,url:e.url};E({kind:"userflow:crxSendProxyMessage",direction:"targetToBuilder",message:l})},A=async(e,n,c)=>{if(!t.current?.isRecording)return;const l=e?de(e):null;if(e&&!l){console.warn("SmartFlowRecordingApp: Failed to generate selector for element");return}const g={stepId:B("smart-flow-step"),element:e,selector:l,action:n,url:c||window.location.href};t.current.steps.push(g);let h=null;g.element&&(h=await D()),M(g,h)},j=e=>{if(!t.current?.isRecording){console.debug("SmartFlowRecordingApp: Not recording, ignoring click");return}if(I.current||!e.isTrusted)return;let c=e.composedPath()[0];if(c&&c.nodeType===Node.TEXT_NODE&&(c=c.parentElement),!(c instanceof Element))return;const l=c;if(T&&T.contains(l))return;const p=window.location.href,g=Date.now(),h=$(l),U=b.current.get(h)||0;g-U<se||(b.current.set(h,g),e.preventDefault(),e.stopImmediatePropagation(),I.current=!0,A(l,"click",p).catch(k=>{console.error("Recording failed, dispatching fallback click:",{error:k.message,element:{tagName:l.tagName,id:l.id,className:l.className},coordinates:{x:e.clientX,y:e.clientY}})}).finally(()=>{I.current=!1;const k=new MouseEvent(e.type,{bubbles:e.bubbles,cancelable:e.cancelable,view:e.view,detail:e.detail,screenX:e.screenX,screenY:e.screenY,clientX:e.clientX,clientY:e.clientY,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey,metaKey:e.metaKey,button:e.button,buttons:e.buttons,relatedTarget:e.relatedTarget});l.dispatchEvent(k)}))},P=e=>{if(!t.current?.isRecording)return;const n=e.target;if(!n||T&&T.contains(n))return;const c=window.location.href;y.current&&window.clearTimeout(y.current),y.current=window.setTimeout(()=>{A(n,"input",c)},ce)},X=Q(e=>{switch(e.kind){case"userflow:crxScreenshotResult":{s.current&&(window.clearTimeout(s.current.timeoutId),e.imageDataUrl&&e.imageDataUrl.startsWith("data:image")?s.current.resolve(e.imageDataUrl):s.current.reject(new Error("Invalid screenshot data from Chrome extension")),s.current=null);break}case"userflow:smartFlowStepAcknowledgment":{f.current.delete(e.stepId),S(e.stepCount);break}case"userflow:stepCountResponse":{const n=e;n.sessionId===t.current?.sessionId&&(S(n.stepCount),x(!0),m.current&&(window.clearInterval(m.current),m.current=void 0));break}case"userflow:smartFlowCancel":{const n=e.sessionId;t.current&&t.current.sessionId===n&&(t.current.isRecording=!1,f.current.clear(),t.current=null,b.current.clear(),I.current=!1,s.current&&(window.clearTimeout(s.current.timeoutId),s.current=null),u.setSessionStorageState(c=>({...c,activeApp:null,smartFlowRecording:null})));break}case"userflow:smartFlowStartOverAck":{const n=e.startUrl;n&&window.location.href!==n&&(window.location.href=n);break}}return!1});return(()=>{if(!a)return;const e={kind:"userflow:requestStepCount",sessionId:a};E({kind:"userflow:crxSendProxyMessage",direction:"targetToBuilder",message:e}),m.current&&window.clearInterval(m.current),m.current=window.setInterval(()=>{E({kind:"userflow:crxSendProxyMessage",direction:"targetToBuilder",message:e})},le),window.setTimeout(()=>{m.current&&(window.clearInterval(m.current),m.current=void 0)},ue)})(),w&&(document.addEventListener("click",j,d),document.addEventListener("input",P,d),document.addEventListener("change",P,d)),()=>{X(),document.removeEventListener("click",j,d),document.removeEventListener("input",P,d),document.removeEventListener("change",P,d),y.current&&(window.clearTimeout(y.current),y.current=void 0),m.current&&(window.clearInterval(m.current),m.current=void 0)}},[r.isRecording,r.sessionId,r.startUrl,v,w,u]);const Y=i.useCallback(async()=>{if(!t.current)return;const a=t.current.sessionId;if(t.current.isRecording=!1,f.current.size>0){const d=f.current.size,T=new Promise((D,M)=>setTimeout(()=>M(new Error(`Timeout waiting for ${d} pending step(s)`)),2e4)),F=Promise.allSettled(Array.from(f.current.values()));try{await Promise.race([F,T])}catch(D){throw console.error(`Failed to wait for ${d} pending step(s)`,D),new Error("Some steps were not acknowledged. Please try again.")}}f.current.clear(),t.current=null,b.current.clear(),I.current=!1,s.current&&(window.clearTimeout(s.current.timeoutId),s.current=null),E({kind:"userflow:crxSendProxyMessage",direction:"targetToBuilder",message:{kind:"userflow:smartFlowComplete",sessionId:a}}),u.setSessionStorageState(d=>({...d,activeApp:null,smartFlowRecording:null}))},[u]),H=i.useCallback(()=>{t.current&&(E({kind:"userflow:crxSendProxyMessage",direction:"targetToBuilder",message:{kind:"userflow:smartFlowStartOver"}}),t.current.isRecording=!1,f.current.clear(),t.current=null,b.current.clear(),I.current=!1,s.current&&(window.clearTimeout(s.current.timeoutId),s.current=null),u.setSessionStorageState(a=>({...a,activeApp:null,smartFlowRecording:null})))},[u]),K=i.useCallback(()=>{const a=t.current?.sessionId||null;t.current&&(t.current.isRecording=!1,f.current.clear(),t.current=null,b.current.clear(),I.current=!1,s.current&&(window.clearTimeout(s.current.timeoutId),s.current=null)),E({kind:"userflow:crxSendProxyMessage",direction:"targetToBuilder",message:{kind:"userflow:smartFlowCancel",sessionId:a}}),u.setSessionStorageState(d=>({...d,activeApp:null,smartFlowRecording:null}))},[u]);return o.createElement(q,{ref:C,onReadyChange:N,buttons:o.createElement(o.Fragment,null,o.createElement("button",{className:"btn btn--default",disabled:!w||R===0,onMouseDown:a=>{a.preventDefault(),a.stopPropagation(),Y()}},"Done"),o.createElement("button",{className:"btn btn--secondary-on-dark",onMouseDown:a=>{a.preventDefault(),a.stopPropagation(),K()}},"Cancel"))},o.createElement("div",{className:"userflowjs-smart-flow-layout"},o.createElement("div",{className:"userflowjs-smart-flow-title"},"Userflow Smart Flow Creation"),o.createElement("div",{className:"userflowjs-smart-flow-status-container"},o.createElement("div",{className:"userflowjs-smart-flow-status"},w?o.createElement("div",{className:"userflowjs-smart-flow-recording"},o.createElement("div",{className:"userflowjs-smart-flow-pulse-dot"}),o.createElement("div",{className:"userflowjs-smart-flow-text"},o.createElement("span",{className:"userflowjs-smart-flow-text--bold"},"Recording flow"),o.createElement("span",{className:"userflowjs-smart-flow-text--gray"},` ${R} steps recorded`))):o.createElement("div",{className:"userflowjs-smart-flow-recording"},o.createElement("div",{className:"userflowjs-smart-flow-pulse-dot"}),o.createElement("div",{className:"userflowjs-smart-flow-text"},o.createElement("span",{className:"userflowjs-smart-flow-text--bold"},"Initializing Recorder..."))),w&&o.createElement("button",{className:"userflowjs-smart-flow-start-over",onMouseDown:a=>{a.preventDefault(),a.stopPropagation(),H()}},o.createElement("span",null,"Start over"),o.createElement(ne,{icon:oe,size:12}))))))};export{je as SmartFlowRecordingApp,je as default};
1
+ import{r as l,R as n}from"./vendor.react.js";import{o as Z}from"./vendor.obj-str.js";import{u as V}from"./client-context.js";import{B as G}from"./BuilderBar.js";import"./vendor.core-js.js";import{v as K}from"./vendor.uuid.js";import{s as Y,p as J,a as Q,j as ee,f as te}from"./roots.js";import{u as S,n as re,m as ne,o as oe,p as se}from"./userflow.js";import{D as ce}from"./stylesheets.js";import{f as ae}from"./vendor.fortawesome.pro-light-svg-icons.js";import"./vendor.object-assign.js";import"./vendor.i18next.js";import"./vendor.babel.runtime.js";import"./vendor.react-i18next.js";import"./Frame.js";import"./vendor.react-dom.js";import"./vendor.scheduler.js";import"./logomark.js";import"./use-window-resize.js";import"./vendor.phoenix.js";import"./vendor.fortawesome.pro-regular-svg-icons.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./flow-condition-types.js";import"./vendor.date-fns.js";(function(){try{var o=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},u=new Error().stack;u&&(o._sentryDebugIds=o._sentryDebugIds||{},o._sentryDebugIds[u]="3e4db385-76ad-4a74-88f8-596e886f54db",o._sentryDebugIdIdentifier="sentry-dbid-3e4db385-76ad-4a74-88f8-596e886f54db")}catch{}})();const X=o=>K();let j=X;function M(o){return j(o)}M.uuidv4=K;M.mock=o=>{j=o};M.unmock=()=>{j=X};const ie=500,le=500,ue=5e3,de="builderBarPos",me=50,fe=500,y=30;function we(o){try{const u=o.tagName.toLowerCase(),N=["input","textarea","select"].includes(u)||o.getAttribute("contenteditable")==="true"?ne.INPUT:void 0,P=Q(o,{elementType:N});if(!P)return null;const d=o.getBoundingClientRect(),E=D=>Math.round(D/ee(1)),p={...P.selector,targetX1:E(d.left),targetY1:E(d.top),targetX2:E(d.right),targetY2:E(d.bottom),screenshotWidth:window.innerWidth,screenshotHeight:window.innerHeight};return p.autoData&&te(p)?.length===0?null:p}catch{return null}}const Ye=({state:o})=>{const u=V(),x=l.useRef(null),[N,P]=l.useState(!1),[d,E]=l.useState(0),[p,D]=l.useState(!1),t=l.useRef(null),T=l.useRef(new Map),w=l.useRef(new Map),k=l.useRef(),I=l.useRef(new Set),b=l.useRef(!1),s=l.useRef(null),f=l.useRef();l.useEffect(()=>{if(!N||!o.isRecording)return;t.current||(J(),I.current.clear(),t.current={sessionId:o.sessionId,isRecording:!0,startUrl:o.startUrl,steps:[]},S({kind:"userflow:crxSendProxyMessage",direction:"targetToBuilder",message:{kind:"userflow:smartFlowRecording",isRecording:!0}}));const a=t.current.sessionId,m={capture:!0},C=document.getElementById("userflow-ui"),U=()=>{const e=se.getItem(de)==="top"?"top":"bottom",c=x.current?.getRootEl()?.clientHeight||0;return{position:e,height:c}},B=async()=>{const{position:e,height:r}=U(),c=0,i=e==="top"?r:0,g=Math.round(window.innerWidth),h=Math.round(window.innerHeight)-r;try{const R=await new Promise((_,v)=>{const $=window.setTimeout(()=>{s.current=null,v(new Error("Screenshot timeout"))},ue);s.current={resolve:_,reject:v,timeoutId:$},S({kind:"userflow:crxScreenshot",x:c,y:i,width:g,height:h,devicePixelRatio:window.devicePixelRatio})});return R?.startsWith("data:image")?R:null}catch{return s.current=null,null}},A=(e,r)=>{if(!e.selector){console.warn("SmartFlowRecordingApp: Cannot send step without selector");return}if(w.current.has(e.stepId))return;const c=oe(g=>g.kind==="userflow:smartFlowStepAcknowledgment"&&g.stepId===e.stepId?g:null).then(()=>{});w.current.set(e.stepId,c);const i={kind:"userflow:smartFlowStep",stepId:e.stepId,selectorData:e.selector,screenshotDataUrl:r,action:e.action,url:e.url};S({kind:"userflow:crxSendProxyMessage",direction:"targetToBuilder",message:i})},L=async(e,r,c)=>{if(!t.current?.isRecording)return;const i=e?we(e):null;if(e&&!i){console.warn("SmartFlowRecordingApp: Failed to generate selector for element");return}const h={stepId:M("smart-flow-step"),element:e,selector:i,action:r,url:c||window.location.href};t.current.steps.push(h);let R=null;h.element&&(R=await B()),A(h,R)},O=e=>{if(!t.current?.isRecording){console.debug("SmartFlowRecordingApp: Not recording, ignoring click");return}if(t.current?.steps.length>=y){console.warn("SmartFlowRecordingApp: Maximum step limit reached, ignoring click");return}if(b.current||!e.isTrusted)return;let c=e.composedPath()[0];if(c&&c.nodeType===Node.TEXT_NODE&&(c=c.parentElement),!(c instanceof Element))return;const i=c;if(C&&C.contains(i))return;const g=window.location.href,h=Date.now(),R=Y(i),_=T.current.get(R)||0;h-_<ie||(T.current.set(R,h),e.preventDefault(),e.stopImmediatePropagation(),b.current=!0,L(i,"click",g).catch(v=>{console.error("Recording failed, dispatching fallback click:",{error:v.message,element:{tagName:i.tagName,id:i.id,className:i.className},coordinates:{x:e.clientX,y:e.clientY}})}).finally(()=>{b.current=!1;const v=new MouseEvent(e.type,{bubbles:e.bubbles,cancelable:e.cancelable,view:e.view,detail:e.detail,screenX:e.screenX,screenY:e.screenY,clientX:e.clientX,clientY:e.clientY,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey,metaKey:e.metaKey,button:e.button,buttons:e.buttons,relatedTarget:e.relatedTarget});i.dispatchEvent(v)}))},F=e=>{if(!t.current?.isRecording)return;if(t.current?.steps.length>=y){console.warn("SmartFlowRecordingApp: Maximum step limit reached, ignoring input");return}const r=e.target;if(!r||C&&C.contains(r))return;const c=Y(r);if(I.current.has(c))return;const i=window.location.href;k.current&&window.clearTimeout(k.current),k.current=window.setTimeout(()=>{I.current.add(c),L(r,"input",i)},le)},q=re(e=>{switch(e.kind){case"userflow:crxScreenshotResult":{s.current&&(window.clearTimeout(s.current.timeoutId),e.imageDataUrl&&e.imageDataUrl.startsWith("data:image")?s.current.resolve(e.imageDataUrl):s.current.reject(new Error("Invalid screenshot data from Chrome extension")),s.current=null);break}case"userflow:smartFlowStepAcknowledgment":{w.current.delete(e.stepId),E(e.stepCount);break}case"userflow:stepCountResponse":{const r=e;r.sessionId===t.current?.sessionId&&(E(r.stepCount),D(!0),f.current&&(window.clearInterval(f.current),f.current=void 0));break}case"userflow:smartFlowCancel":{const r=e.sessionId;t.current&&t.current.sessionId===r&&(t.current.isRecording=!1,w.current.clear(),t.current=null,T.current.clear(),I.current.clear(),b.current=!1,s.current&&(window.clearTimeout(s.current.timeoutId),s.current=null),u.setSessionStorageState(c=>({...c,activeApp:null,smartFlowRecording:null})));break}case"userflow:smartFlowStartOverAck":{const r=e.startUrl;r&&window.location.href!==r&&(window.location.href=r);break}}return!1});return(()=>{if(!a)return;const e={kind:"userflow:requestStepCount",sessionId:a};S({kind:"userflow:crxSendProxyMessage",direction:"targetToBuilder",message:e}),f.current&&window.clearInterval(f.current),f.current=window.setInterval(()=>{S({kind:"userflow:crxSendProxyMessage",direction:"targetToBuilder",message:e})},me),window.setTimeout(()=>{f.current&&(window.clearInterval(f.current),f.current=void 0)},fe)})(),p&&(document.addEventListener("click",O,m),document.addEventListener("input",F,m),document.addEventListener("change",F,m)),()=>{q(),document.removeEventListener("click",O,m),document.removeEventListener("input",F,m),document.removeEventListener("change",F,m),k.current&&(window.clearTimeout(k.current),k.current=void 0),f.current&&(window.clearInterval(f.current),f.current=void 0)}},[o.isRecording,o.sessionId,o.startUrl,N,p,u]);const H=l.useCallback(async()=>{if(!t.current)return;const a=t.current.sessionId;if(t.current.isRecording=!1,w.current.size>0){const m=w.current.size,C=new Promise((B,A)=>setTimeout(()=>A(new Error(`Timeout waiting for ${m} pending step(s)`)),2e4)),U=Promise.allSettled(Array.from(w.current.values()));try{await Promise.race([U,C])}catch(B){throw console.error(`Failed to wait for ${m} pending step(s)`,B),new Error("Some steps were not acknowledged. Please try again.")}}w.current.clear(),t.current=null,T.current.clear(),I.current.clear(),b.current=!1,s.current&&(window.clearTimeout(s.current.timeoutId),s.current=null),S({kind:"userflow:crxSendProxyMessage",direction:"targetToBuilder",message:{kind:"userflow:smartFlowComplete",sessionId:a}}),u.setSessionStorageState(m=>({...m,activeApp:null,smartFlowRecording:null}))},[u]),W=l.useCallback(()=>{t.current&&(S({kind:"userflow:crxSendProxyMessage",direction:"targetToBuilder",message:{kind:"userflow:smartFlowStartOver"}}),t.current.isRecording=!1,w.current.clear(),t.current=null,T.current.clear(),I.current.clear(),b.current=!1,s.current&&(window.clearTimeout(s.current.timeoutId),s.current=null),u.setSessionStorageState(a=>({...a,activeApp:null,smartFlowRecording:null})))},[u]),z=l.useCallback(()=>{const a=t.current?.sessionId||null;t.current&&(t.current.isRecording=!1,w.current.clear(),t.current=null,T.current.clear(),I.current.clear(),b.current=!1,s.current&&(window.clearTimeout(s.current.timeoutId),s.current=null)),S({kind:"userflow:crxSendProxyMessage",direction:"targetToBuilder",message:{kind:"userflow:smartFlowCancel",sessionId:a}}),u.setSessionStorageState(m=>({...m,activeApp:null,smartFlowRecording:null}))},[u]);return n.createElement(G,{ref:x,onReadyChange:P,buttons:n.createElement(n.Fragment,null,n.createElement("button",{className:"btn btn--default",disabled:!p||d===0,onMouseDown:a=>{a.preventDefault(),a.stopPropagation(),H()}},"Done"),n.createElement("button",{className:"btn btn--secondary-on-dark",onMouseDown:a=>{a.preventDefault(),a.stopPropagation(),z()}},"Cancel"))},n.createElement("div",{className:"userflowjs-smart-flow-layout"},n.createElement("div",{className:"userflowjs-smart-flow-title"},"Userflow Smartflow Creation"),n.createElement("div",{className:"userflowjs-smart-flow-status-container"},n.createElement("div",{className:"userflowjs-smart-flow-status"},p?n.createElement("div",{className:"userflowjs-smart-flow-recording"},d>=y?n.createElement("div",{className:"userflowjs-smart-flow-square"}):n.createElement("div",{className:"userflowjs-smart-flow-pulse-dot"}),n.createElement("div",{className:"userflowjs-smart-flow-text"},n.createElement("span",{className:"userflowjs-smart-flow-text--bold"},d>=y?"Stopped recording":"Recording flow"),n.createElement("span",{className:Z({"userflowjs-smart-flow-text":!0,"text-normal":d<25,"text-warning":d>=25&&d<y,"text-danger":d>=y})},` ${d} steps recorded / ${y} steps limit`))):n.createElement("div",{className:"userflowjs-smart-flow-recording"},n.createElement("div",{className:"userflowjs-smart-flow-pulse-dot"}),n.createElement("div",{className:"userflowjs-smart-flow-text"},n.createElement("span",{className:"userflowjs-smart-flow-text--bold"},"Initializing Recorder..."))),p&&n.createElement("button",{className:"userflowjs-smart-flow-start-over",onMouseDown:a=>{a.preventDefault(),a.stopPropagation(),W()}},n.createElement("span",null,"Start over"),n.createElement(ce,{icon:ae,size:12}))))))};export{Ye as SmartFlowRecordingApp,Ye as default};
2
2
  //# sourceMappingURL=SmartFlowRecordingApp.js.map
package/Trigger.js CHANGED
@@ -1,2 +1,2 @@
1
- import{r}from"./vendor.react.js";import{u as f,e as i,h as a}from"./use-selector-element-monitoring.js";import{u as d}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]="0d78a8f3-8df3-4aaf-8a9f-24e6beb2271c",e._sentryDebugIdIdentifier="sentry-dbid-0d78a8f3-8df3-4aaf-8a9f-24e6beb2271c")}catch{}})();const y=({trigger:e})=>{const s=d(),n=f(),t=r.useRef(!1),o=i(e.condition);return r.useLayoutEffect(()=>{o&&!t.current&&(t.current=!0,a(s,n,e.actions))},[o,t,s,n,e.actions]),null};export{y as T};
1
+ import{r}from"./vendor.react.js";import{f as i,a,h as f}from"./use-selector-element-monitoring.js";import{u as c}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]="461cb656-f7b3-498a-ab07-148523801e1b",e._sentryDebugIdIdentifier="sentry-dbid-461cb656-f7b3-498a-ab07-148523801e1b")}catch{}})();const y=({trigger:e})=>{const s=c(),n=i(),t=r.useRef(!1),o=a(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
@@ -849,17 +849,29 @@ body {
849
849
  border-radius: 50%;
850
850
  animation: userflowjs-pulse 2s infinite;
851
851
  }
852
+ .userflowjs-smart-flow-square {
853
+ width: 16px;
854
+ height: 16px;
855
+ background: #537388;
856
+ border-radius: 2px;
857
+ }
852
858
  .userflowjs-smart-flow-text {
853
859
  color: #fff;
854
860
  font-size: 14px;
855
861
  }
862
+ .userflowjs-smart-flow-text.text-normal {
863
+ color: #5d7f92;
864
+ }
865
+ .userflowjs-smart-flow-text.text-warning {
866
+ color: #f0c000;
867
+ }
868
+ .userflowjs-smart-flow-text.text-danger {
869
+ color: #eb1e47;
870
+ }
856
871
  .userflowjs-smart-flow-text--bold {
857
872
  color: #fff;
858
873
  font-weight: 600;
859
874
  }
860
- .userflowjs-smart-flow-text--gray {
861
- color: #5d7f92;
862
- }
863
875
  .userflowjs-smart-flow-start-over {
864
876
  background: none;
865
877
  border: none;