userflow.js-self-hosted 0.1.1003773 → 0.1.1003813

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 +1 @@
1
- import{h as e,C as t,i as r,j as s,c as n,k as o,l as c,E as a,m as l,n as i,p as u,S as d,_ as m}from"./userflow.js";import{r as f}from"./vendor.react.js";import{u as w,i as h}from"./client-context.js";import{u as b,w as E,C as k}from"./z-index.js";import{b as p,h as v,s as g,B as C,R as j,a as S,n as y,f as N}from"./BubbleToolbar.js";import{M as _,g as I,a as x,b as T}from"./flow-condition-types.js";import{D as R,u as A,a as M,g as B}from"./stylesheets.js";import{u as L,F as H,S as P}from"./logomark.js";import{o as W}from"./vendor.obj-str.js";import{f as F,C as O}from"./ChecklistUI.js";import{f as $,a as D,b as U,c as z,d as q,e as K,g as V,h as G,i as Q,j as Z}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{u as J}from"./vendor.react-i18next.js";function X(t){return t!==e.ACTION&&t!==e.ASSISTANT&&t!==e.CONTACT&&t!==e.FLOWS&&t!==e.KNOWLEDGE_BASE&&t!==e.SUBPAGE}const Y=window,ee={[t.CRISP]:{configure:({onShow:e,onHide:t})=>{!function(){if(te)return;te=!0,Y.$crisp||(Y.$crisp=[]);Y.$crisp.push(["do","chat:hide"])}();let r=!1,s=!1;const n=()=>{r||s?(Y.$crisp.push(["do","chat:show"]),e()):(Y.$crisp.push(["do","chat:hide"]),t())},o=()=>{r=!0,n()};Y.$crisp.push(["on","chat:opened",o]);const c=()=>{r=!1,n()};Y.$crisp.push(["on","chat:closed",c]);const a=()=>{s=!0,n()};Y.$crisp.push(["on","message:received",a]);const l=window.setInterval((()=>{const e=(()=>{const e=document.getElementById("crisp-chatbox");if(!e||"block"!==window.getComputedStyle(e).display)return!1;const t=e.querySelector('[data-id="new_messages"]');return!(!t||"block"!==window.getComputedStyle(t).display)})();e!==s&&(s=e,n())}),200);return()=>{Y.$crisp.push(["off","chat:opened",o]),Y.$crisp.push(["off","chat:closed",c]),Y.$crisp.push(["off","message:received",a]),window.clearInterval(l)}},show:()=>{Y.$crisp.push(["do","chat:show"]),Y.$crisp.push(["do","chat:open"])},hide:()=>{Y.$crisp.push(["do","chat:hide"]),Y.$crisp.push(["do","chat:close"])}},[t.CUSTOM]:{configure:()=>()=>{},show:({block:e})=>{try{new Function('"use strict";\n'+e.chatCode)()}catch(t){console.error(`Userflow.js: Showing custom chat provider failed. Code: ${e.chatCode}`,t)}},hide:()=>{}},[t.FRESHCHAT]:{configure:({onShow:e,onHide:t})=>{if(!Y.fcWidget)throw new Error("Freshchat is not installed");let r=!1,s=!1;const n=()=>{r||s?e():t()},o=()=>{r=!0,n()};Y.fcWidget.on("widget:opened",o);const c=()=>{r=!1,n()};Y.fcWidget.on("widget:closed",c);const a=()=>{const e=!!document.querySelector("#fc_frame.h-open-notify");e!==s&&(s=e,n())},l=window.setInterval(a,200);return Y.fcWidget.on("unreadCount:notify",a),()=>{Y.fcWidget.off("widget:opened",o),Y.fcWidget.off("widget:closed",c),Y.fcWidget.off("unreadCount:notify",a),window.clearInterval(l)}},show:()=>{Y.fcWidget.open()},hide:()=>{Y.fcWidget.close()}},[t.HELPSCOUT]:{configure:({onShow:e,onHide:t})=>{if(!Y.Beacon)throw new Error("Help Scout is not installed");!function(){if(re)return;re=!0,ne()}();let r=!1,s=!1;const n=()=>{r||s?(se(),e()):(ne(),t())},o=()=>{r=!0,n()};Y.Beacon("on","open",o),Y.Beacon("info")?.status.isOpened&&o();const c=()=>{r=!1,n()};Y.Beacon("on","close",c);const a=window.setInterval((()=>{const e=!!document.querySelector(".BeaconNotificationsFrame");e!==s&&(s=e,n())}),200);return()=>{Y.Beacon("off","open",o),Y.Beacon("off","close",c),window.clearInterval(a)}},show:()=>{se(),Y.Beacon("open")},hide:()=>{ne(),Y.Beacon("close")}},[t.HUBSPOT]:{configure:({onShow:e,onHide:t})=>{const r=()=>{const r=document.getElementById("hubspot-messages-iframe-container");if(!Y.HubSpotConversations||!r)return;window.clearInterval(n),function(){if(oe)return;oe=!0,ce?ae():le()}();let o=!1,c=!1;const a=()=>{o||c?(ae(),e()):(le(),t())},l=()=>{const e=!!document.querySelector("#hubspot-messages-iframe-container .hs-shadow-container.active");e!==o&&(o=e,a())},i=new _(l);i.observe(r,{attributes:!0,subtree:!0,attributeFilter:["class"]}),l();const u=({unreadCount:e})=>{const t=e>0;t!==c&&(c=t,a())};Y.HubSpotConversations.on("unreadConversationCountChanged",u),s=()=>{i.disconnect(),Y.HubSpotConversations.off("unreadConversationCountChanged",u)}};let s=()=>{window.clearInterval(n)};const n=window.setInterval(r,100);return r(),()=>{s()}},show:()=>{ae(),Y.HubSpotConversations.widget.open()},hide:()=>{le(),Y.HubSpotConversations.widget.close()}},[t.INTERCOM]:{configure:({onShow:e,onHide:t})=>{if(!Y.Intercom)throw new Error("Intercom is not installed");return function(){if(ie)return;ie=!0,fe();let e=!1,t=!1;const r=()=>{me();for(const e of ue)e()},s=()=>{fe();for(const e of de)e()},n=()=>{e||t?r():s()};Y.Intercom("onShow",(()=>{e=!0,n()})),Y.Intercom("onHide",(()=>{e=!1,n()}));const o=()=>{const e=!!document.querySelector('iframe[name="intercom-borderless-frame"], iframe[name="intercom-notifications-frame"]');t!==e&&(t=e,n())};Y.Intercom("onUnreadCountChange",(()=>{o()})),window.setInterval(o,200)}(),ue.add(e),de.add(t),()=>{ue.delete(e),de.delete(t)}},show:()=>{me(),Y.Intercom("show")},hide:()=>{fe(),Y.Intercom("hide")}},[t.ZENDESK]:{configure:({onShow:e,onHide:t})=>{if(!Y.zE)throw new Error("Zendesk is not installed");!function(){if(we)return;we=!0,Y.zE("webWidget","hide"),Y.zE("webWidget","close"),Y.zE("webWidget:on","open",(()=>{for(const e of he)e()})),Y.zE("webWidget:on","close",(()=>{for(const e of be)e()})),Y.zE("webWidget:on","chat:unreadMessages",(e=>{for(const t of Ee)t(e)}))}();let r=!1,s=!1;const n=()=>{r||s?(Y.zE("webWidget","show"),e()):(Y.zE("webWidget","hide"),t())},o=()=>{r=!0,s=!1,n()};he.add(o);const c=()=>{r=!1,s=!1,n()};be.add(c);const a=e=>{const t=e>0;t!==s&&(s=t,n())};return Ee.add(a),()=>{he.delete(o),be.delete(c),Ee.delete(a)}},show:()=>{Y.zE("webWidget","show"),Y.zE("webWidget","open")},hide:()=>{Y.zE("webWidget","hide"),Y.zE("webWidget","close")}},[t.ZENDESK_MESSENGER]:{configure:({onShow:e,onHide:t})=>{if(!Y.zE)throw new Error("Zendesk is not installed");let r=!1;const s=window.setInterval((()=>{const s=(()=>{const e=document.querySelector('iframe[title="Messaging window"]');return!!e&&"0px"!==window.getComputedStyle(e).height})();s!==r&&(r=s,r?e():t())}),200);return()=>{window.clearInterval(s)}},show:()=>{Y.zE("messenger","open")},hide:()=>{Y.zE("messenger","close")}}};let te=!1;let re=!1;function se(){Y.Beacon("config",{display:{style:"icon"}})}function ne(){Y.Beacon("config",{display:{style:"manual"}})}let oe=!1,ce=!1;function ae(){ce=!0;document.getElementById("hubspot-messages-iframe-container")?.style.setProperty("visibility","visible","important")}function le(){ce=!1;document.getElementById("hubspot-messages-iframe-container")?.style.setProperty("visibility","hidden","important")}let ie=!1,ue=new Set,de=new Set;function me(){Y.Intercom("update",{hide_default_launcher:!1,vertical_padding:20})}function fe(){Y.Intercom("update",{hide_default_launcher:!0,vertical_padding:100})}let we=!1,he=new Set,be=new Set,Ee=new Set;const ke=e=>f.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100"},e),f.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"}),f.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"})),pe=({center:e,fadeIn:t})=>{const r=12;return f.createElement("div",{className:W({"userflowjs-spinner":!0,"userflowjs-spinner--center":!!e,"userflowjs-spinner--fade-in":!!t})},f.createElement("svg",{viewBox:"0 0 24 24",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},f.createElement("circle",{className:"userflowjs-spinner__bg",fill:"none",cx:r,cy:r,r:10,style:{strokeWidth:"4px"}}),f.createElement("circle",{className:"userflowjs-spinner__fill",fill:"none",cx:r,cy:r,r:10,transform:"translate(12, 12) rotate(-90) translate(-12, -12)",style:{strokeWidth:"4px",strokeDasharray:20*Math.PI*.25+"px, 1000"}})))};function ve(e){const t=w(),[r,s]=f.useState(!0),[n,o]=f.useState(!1),[c,a]=f.useState(null),[l,i]=f.useState(null),[u,d]=f.useState(null),m=f.useRef(0),h=f.useRef(null),b=f.useRef((()=>{}));return f.useEffect((()=>{const r=JSON.stringify(e);if(r===h.current)return;h.current=r;const n=++m.current;let c,l;let u=!1;b.current=async(e,r)=>{if(!u){u=!0,o(!0);try{const s=e(c,l);l=s;const i=await t.send(s,{handlesRejection:!0});if(n!==m.current)return;c=r(c,i),a(c),d(null)}catch(s){if(n!==m.current)return;d(s)}finally{u=!1,o(!1)}}},(async()=>{s(!0);try{l=e;const r=await t.send(e,{handlesRejection:!0});if(n!==m.current)return;c=r,a(c),i(e),d(null)}catch(r){if(n!==m.current)return;d(r)}finally{s(!1)}})()}),[t,e]),{loading:r,loadingMore:n,data:c,messageForData:l,error:u,loadMore:b.current}}function ge(e,t){const[r,s]=f.useState(e),n=f.useRef(void 0),o=f.useCallback((e=>{window.clearTimeout(n.current),s(e),t(e)}),[t]),c=f.useCallback((e=>{window.clearTimeout(n.current),s(e),n.current=window.setTimeout((()=>{t(e)}),200)}),[t]);return f.useEffect((()=>()=>{window.clearTimeout(n.current)}),[]),[r,c,o]}const Ce=({textareaRef:e,value:t,onChange:r,onBlur:s,onKeyDown:n,onMouseDown:o,placeholder:c,disabled:a,readOnly:l,className:i,mirrorClassName:u,textareaClassName:d,children:m})=>{let w=t||c||"";return(""===w||w.endsWith("\n"))&&(w+=" "),i=i||"growing-textarea",u=u||i+"__mirror",f.createElement("div",{className:i},f.createElement("div",{className:u+" "+(d||"")},w),f.createElement("textarea",{ref:e,value:t,onChange:e=>r&&r(e.target.value),onBlur:s,onKeyDown:n,onMouseDown:o,placeholder:c,disabled:a,readOnly:l,className:d}),m)},je=({textareaRef:e,value:t,onChange:r,onSubmit:s,placeholder:n,readOnly:o})=>{const c=()=>{s&&s()};return f.createElement("div",{className:"userflowjs-assistant-chat-input"},f.createElement(Ce,{textareaRef:e,className:"userflowjs-growing-textarea",mirrorClassName:"userflowjs-growing-textarea__mirror",textareaClassName:"userflowjs-textarea userflowjs-assistant-chat-input__textarea",placeholder:n,readOnly:o,value:t||"",onChange:r,onKeyDown:e=>{e.shiftKey||"Enter"!==e.key||(e.preventDefault(),c())}}),f.createElement("button",{"data-testid":"assistant-chat-input-submit",className:"userflowjs-assistant-chat-input__submit",onClick:()=>c()},f.createElement(R,{icon:$})))};const Se=async()=>(await m((()=>import("./ResourceCenterAssistantChat.js")),[new URL("ResourceCenterAssistantChat.js",import.meta.url).toString(),new URL("vendor.react.js",import.meta.url).toString(),new URL("vendor.object-assign.js",import.meta.url).toString(),new URL("client-context.js",import.meta.url).toString(),new URL("vendor.i18next.js",import.meta.url).toString(),new URL("vendor.react-i18next.js",import.meta.url).toString(),new URL("vendor.babel.runtime.js",import.meta.url).toString(),new URL("vendor.fortawesome.pro-regular-svg-icons.js",import.meta.url).toString(),new URL("vendor.dompurify.js",import.meta.url).toString(),new URL("vendor.marked.js",import.meta.url).toString(),new URL("vendor.obj-str.js",import.meta.url).toString(),new URL("userflow.js",import.meta.url).toString(),new URL("vendor.phoenix.js",import.meta.url).toString(),new URL("vendor.uuid.js",import.meta.url).toString(),new URL("BubbleToolbar.js",import.meta.url).toString(),new URL("flow-condition-types.js",import.meta.url).toString(),new URL("vendor.date-fns.js",import.meta.url).toString(),new URL("stylesheets.js",import.meta.url).toString(),new URL("vendor.fortawesome.pro-solid-svg-icons.js",import.meta.url).toString(),new URL("z-index.js",import.meta.url).toString(),new URL("logomark.js",import.meta.url).toString(),new URL("vendor.react-dom.js",import.meta.url).toString(),new URL("vendor.scheduler.js",import.meta.url).toString(),new URL("ChecklistUI.js",import.meta.url).toString()])).ResourceCenterAssistantChat,ye=({session:l,isOpen:i,flowSession:u,checklistSession:d})=>{const m=w(),{t:v}=J(),{company:g}=l.flow,{version:C}=l,j=C.resourceCenter,S=A(C.theme),y=l.locale?l.locale.standardLocaleId:l.version.theme.languageId;f.useEffect((()=>{h.changeLanguage(y)}),[y]);const{loaded:T}=M(window,N,S),[O,$]=f.useState(!1),K=T&&O,[V,G]=f.useState(I()),[Q,Z]=f.useState(x()),Y=f.useCallback((()=>{G(I()),Z(x())}),[]);L(Y);const{zIndex:te,bringToFront:re}=b(),se=f.useRef(null),[ne,oe]=f.useState(null),[ce,ae]=f.useState(null),[le,ie]=f.useState(null),ue=f.useRef(null),[de,me]=f.useState(null),[fe,we]=f.useState(null),[he,be]=f.useState(null),[Ee,pe]=f.useState(0),[ve,ge]=f.useState(0),Ce=f.useCallback((()=>{ce&&pe(ce.offsetWidth),ge((le?.offsetHeight||0)+(de?.offsetHeight||0)+(fe?.offsetHeight||0)+(he?.offsetHeight||0))}),[ce,le,de,fe,he]);f.useLayoutEffect((()=>{if(!ne||"function"!=typeof _)return;const e=new _((()=>{Ce()}));return e.observe(ne,{childList:!0,attributes:!0,subtree:!0}),()=>{e.disconnect()}}),[ne,Ce]),f.useLayoutEffect((()=>{Ce()}));const[je,Se]=f.useState(!1),ye=f.useRef(),Ie=f.useCallback((()=>{Se(!0),window.clearTimeout(ye.current),ye.current=window.setTimeout((()=>{Se(!1)}),S.resourceCenterTransitionDuration)}),[S.resourceCenterTransitionDuration]);f.useEffect((()=>()=>{window.clearTimeout(ye.current)}),[]);const xe=f.useCallback((()=>{re(),Ie(),m.openResourceCenter()}),[re,m,Ie]),Be=f.useCallback((()=>{Ie(),m.closeResourceCenter()}),[m,Ie]),[Le,Pe]=f.useState(!1);f.useEffect((()=>{if(Le){if(!("ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0))if(i){const e='button:not([tabindex="-1"]), [tabindex]:not([tabindex="-1"]), input, textarea';let t=de?.querySelector(".userflowjs-assistant-chat-input textarea")||de?.querySelector(e)||le?.querySelector(e);if(t){const e=t.closest&&t.closest(".userflowjs-resource-center-checklist")||null;e?F(e):t.focus({preventScroll:!0})}}else ce?.focus({preventScroll:!0});Pe(!1)}}),[Le,i,de,le,ce]),f.useEffect((()=>{const e=ne?.ownerDocument.defaultView;if(!i||!e)return;const t=e=>{"Escape"===e.key&&(Be(),Pe(!0))};return e.addEventListener("keydown",t),()=>e.removeEventListener("keydown",t)}),[i,ne,Pe,Be]);const[$e,De]=f.useState((()=>function(e,t){if(!t)return null;const r=JSON.parse(t);let s;r.blockCvid&&(s=e.version.resourceCenter?.blocks.find((e=>e.cvid===r.blockCvid)));if(!s&&"search"!==r.kind)return null;return{kind:r.kind,block:s}}(l,r.getItem(`resourceCenterRoute:v1:${l.id}`)))),Ue=f.useCallback(((e,t)=>{De(e);const s=function(e){if(!e)return null;let t;"block"in e&&null!=e.block&&(t=e.block.cvid);return JSON.stringify({kind:e.kind,blockCvid:t})}(e);s?r.setItem(`resourceCenterRoute:v1:${l.id}`,s):r.removeItem(`resourceCenterRoute:v1:${l.id}`),0===t?.detail&&Pe(!0)}),[l.id]),ze=f.useMemo((()=>j.blocks.filter((t=>!(t.type===e.CHECKLIST&&!d)&&((t.type!==e.DIVIDER||!S.resourceCenterAutoDividers)&&(!t.hiddenWhenFlowsActive||!t.hiddenWhenFlowsActive.some((e=>e===u?.flow.id||e===d?.flow.id))))))),[j,u,d,S.resourceCenterAutoDividers]),qe=f.useMemo((()=>Ne(ze)),[ze]),Ke=f.useMemo((()=>d&&j.blocks.some((t=>t.type===e.CHECKLIST))?s(d):0),[j,d]),Ve=f.useMemo((()=>j.blocks.find((t=>t.type===e.CONTACT&&t.chatEnabled&&t.chatProvider))),[j]),[Ge,Qe]=f.useState(!1),Ze=f.useCallback((()=>{m.closeResourceCenter(),Ve&&Ve.chatProvider!==t.CUSTOM&&Qe(!0)}),[m,Ve]),Je=f.useCallback((()=>{Qe(!1)}),[]),Xe=f.useCallback((()=>{if(Ve)try{ee[Ve.chatProvider].hide({block:Ve}),Je()}catch(e){console.error(`Userflow.js: Error when hiding ${Ve.chatProvider}:`,e)}}),[Ve,Je]);f.useEffect((()=>{if(!Ve)return;n.autoHide3pDisabled=!0;const e=ee[Ve.chatProvider];try{const t=e.configure({block:Ve,onShow:Ze,onHide:Je});return()=>{t()}}catch(t){return void console.error(`Userflow.js: Error when configuring ${Ve.chatProvider}:`,t)}}),[Ve,Ze,Je]),f.useEffect((()=>{i&&Xe()}),[Xe,i]);const Ye=!!$e&&("search"===$e.kind||"flows"===$e.kind||"knowledgeBase"===$e.kind),et="assistant"===$e?.kind,tt=Math.min(et?S.resourceCenterFullWidth:S.resourceCenterWidth,V-2*S.resourceCenterPaddingX),rt={zIndex:null!=S.resourceCenterZIndex?S.resourceCenterZIndex:i?te:E(k),width:(i?tt:Ee)+"px",height:i?Math.min(Ye?540:et?720:ve,Q-2*S.resourceCenterPaddingY,null==S.resourceCenterMaxHeight?Number.MAX_VALUE:S.resourceCenterMaxHeight)+"px":void 0,position:K?void 0:"absolute",visibility:K&&!Ge?void 0:"hidden"},st=S.resourceCenterDisplayChecklistProgress&&d&&Ke>0?f.createElement("div",{"data-testid":"resource-center-launcher-badge",className:"userflowjs-resource-center-launcher-badge"},Ke,f.createElement("div",{className:"userflowjs-a11y-only"},"uncompleted tasks")):null;let nt="",ot="";return S.resourceCenterLauncherTextMode===o.CHECKLIST_OVERRIDE&&d&&Ke>0?nt=d.version.checklist?.launcherText||"Get Started":S.resourceCenterLauncherTextMode!==o.NONE&&(ot=j.buttonText),f.createElement("div",{"data-testid":"resource-center-app",className:"userflowjs-resource-center userflowjs-theme-root",style:B(S),dir:h.dir()},f.createElement(H,{elRef:se,className:W({"userflowjs-resource-center-frame":!0,"userflowjs-resource-center-frame--fixed":!0,[`userflowjs-resource-center-frame--placement-${S.resourceCenterPlacement.toLowerCase().replace(/_/g,"-")}`]:!0,"userflowjs-resource-center-frame--animating":je,"userflowjs-resource-center-frame--open":i,"userflowjs-resource-center-frame--closed":!i}),style:{...rt},stylesheet:p,theme:S,onStylesheetsLoad:$},K&&f.createElement(f.Fragment,null,f.createElement("div",{ref:oe,className:W({"userflowjs-resource-center-frame-root":!0,[`userflowjs-resource-center-frame-root--placement-${S.resourceCenterPlacement.toLowerCase().replace(/_/g,"-")}`]:!0,"userflowjs-resource-center-frame-root--animating":je,"userflowjs-resource-center-frame-root--open":i,"userflowjs-resource-center-frame-root--closed":!i}),role:i?"dialog":void 0,"aria-label":i?j.headerText:void 0},f.createElement("div",{className:"userflowjs-resource-center-launcher-container"},f.createElement("button",{ref:ae,className:"userflowjs-resource-center-launcher-button",onClick:()=>{xe(),Pe(!0)},"aria-label":`Open ${j.headerText}`},st,nt&&f.createElement("div",{"data-testid":"resource-center-launcher-text",className:"userflowjs-resource-center-launcher-text"},nt),(st||nt)&&f.createElement("div",{className:"userflowjs-resource-center-launcher-divider"}),ot&&f.createElement("div",{"data-testid":"resource-center-launcher-text",className:"userflowjs-resource-center-launcher-text"},ot),f.createElement("div",{className:"userflowjs-resource-center-launcher-icon"},S.resourceCenterLauncherIconType===c.PLAINTEXT?"?":f.createElement(ke,null)))),f.createElement("div",{ref:ue,className:"userflowjs-resource-center-body",style:{width:tt+"px"}},f.createElement("div",{ref:me,className:W({"userflowjs-resource-center-body-content":!0,"userflowjs-resource-center-body-content--padding":"assistant"!==$e?.kind,"userflowjs-resource-center-body-content--same-background":S.sameBackground,"userflowjs-resource-center-body-content--with-made-with-userflow":g.resourceCenterBranding})},i&&f.createElement(f.Fragment,null,$e?"search"===$e.kind?f.createElement(Te,{session:l,navigate:Ue}):"email"===$e.kind?f.createElement(Re,{block:$e.block,session:l}):"phone"===$e.kind?f.createElement(Ae,{block:$e.block,session:l}):"flows"===$e.kind?f.createElement(Me,{block:$e.block,initialQ:$e.initialQ,session:l,navigate:Ue}):"knowledgeBase"===$e.kind?f.createElement(He,{block:$e.block,initialQ:$e.initialQ,session:l,bodyRef:ue}):"subpage"===$e.kind?f.createElement(We,{block:$e.block,session:l}):"assistant"===$e.kind?f.createElement(Fe,{block:$e.block,initialUserContent:$e.initialUserContent,session:l,navigate:Ue}):null:f.createElement(f.Fragment,null,ze.map(((e,t)=>{const r=_e[e.type],s=ze[t+1];return r?f.createElement(f.Fragment,{key:e.id},f.createElement(r.View,{session:l,flowSession:u,checklistSession:d,block:e,navigate:Ue,onChatShow:Ze}),s&&function(e,t,r){return!!e.resourceCenterAutoDividers&&(X(t)||X(r))}(S,e.type,s.type)&&f.createElement("div",{className:"userflowjs-resource-center-divider"})):null})))))),g.resourceCenterBranding&&f.createElement("div",{className:"userflowjs-resource-center-made-with-userflow"},f.createElement("div",{className:"userflowjs-resource-center-made-with-userflow-content",ref:we},f.createElement("a",{href:"https://userflow.com/?utm_source=made-with-userflow&utm_medium=link&utm_campaign=made-with-userflow-"+g.slug+"&utm_content=resource-center",target:"_blank",rel:"noopener noreferrer"},f.createElement(P,null),f.createElement("div",null,"Made with Userflow")))),l.draftMode&&f.createElement("div",{className:"userflowjs-resource-center-preview"},f.createElement("div",{ref:be,className:"userflowjs-resource-center-preview-content"},f.createElement("div",{className:"userflowjs-resource-center-preview-text"},"Preview"),f.createElement("button",{className:"userflowjs-resource-center-preview-button",onClick:()=>{m.endFlow(l,{endReason:a.USER_CLOSED})}},f.createElement(R,{icon:D})))),f.createElement("div",{className:"userflowjs-resource-center-header",style:{width:tt+"px"}},f.createElement("div",{ref:ie,className:"userflowjs-resource-center-header-content"},null==$e?f.createElement("div",{className:"userflowjs-resource-center-header-text"},j.headerText):f.createElement("button",{className:"userflowjs-resource-center-icon-button",onClick:e=>Ue(null,e)},f.createElement("div",{className:"userflowjs-rtl-mirrored"},f.createElement(R,{icon:U})),f.createElement("div",{className:"userflowjs-resource-center-icon-button__text"},v("resource_center.back"))),f.createElement("div",{className:"flex-1"}),qe.length>0&&f.createElement("button",{className:"userflowjs-resource-center-icon-button",onClick:()=>{let e={kind:"search"};if(1===qe.length){const t=qe[0],r=_e[t.type];r.routeTo&&(e=r.routeTo({block:t}))}"search"===$e?.kind?Ue(null):(Oe(m,l,null,"Search icon"),Ue(e))},"aria-label":"Search"},f.createElement(R,{icon:z})),f.createElement("button",{className:"userflowjs-resource-center-icon-button userflowjs-resource-center-close-button",onClick:e=>{Be(),0===e.detail&&Pe(!0)},"aria-label":`Close ${j.headerText}`},f.createElement(R,{icon:q}))))))))};function Ne(e){return e.filter((e=>{const t=_e[e.type];return t.isSearchable?t.isSearchable(e):!!t.search}))}const _e={[e.ACTION]:{View:e=>{const{block:t,session:r,flowSession:s,checklistSession:n}=e,o=w(),[c,a]=f.useState(!1),i=s?.id,u=n?.id;return f.useEffect((()=>{a(!1)}),[i,u]),f.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:c?void 0:()=>{Oe(o,r,t);const e=t.actions.find((e=>e.type===l.START_FLOW));if(e){e.otherFlow?.id!==n?.flow.id&&a(!0)}else o.closeResourceCenter();v(o,r,t.actions)},disabled:c},f.createElement(Ie,{...e}),f.createElement(xe,{...e}),c&&f.createElement(pe,null))}},[e.ASSISTANT]:{View:e=>{const{block:t,session:r,navigate:s}=e,n=w(),[o,c]=f.useState("");return t.assistantAppearance===i.INPUT?f.createElement("div",{className:"userflowjs-resource-center-assistant-block"},f.createElement(je,{value:o,onChange:c,placeholder:g(t.name,{lookupAttribute:T(r.data)}),onSubmit:()=>{Oe(n,r,t),s({kind:"assistant",block:t,initialUserContent:o})}})):f.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:()=>{Oe(n,r,t),s({kind:"assistant",block:t,initialUserContent:""})}},f.createElement(Ie,{...e}),f.createElement(xe,{...e}))}},[e.CHECKLIST]:{View:({checklistSession:e})=>f.createElement("div",{"data-testid":"resource-center-checklist",className:"userflowjs-resource-center-checklist"},f.createElement(O,{session:e}),f.createElement(C,{draftMode:!!e.draftMode&&"CHECKLIST PREVIEW"}))},[e.CONTACT]:{View:e=>{const{block:t,session:r,navigate:s,onChatShow:n}=e,o=w(),c=[];return t.emailEnabled&&c.push({icon:G,label:"Email",isRoute:!0,onClick:e=>{Oe(o,r,t,"Email"),s({kind:"email",block:t},e)}}),t.phoneEnabled&&c.push({icon:Q,label:"Phone",isRoute:!0,onClick:e=>{Oe(o,r,t,"Phone"),s({kind:"phone",block:t},e)}}),t.chatEnabled&&c.push({icon:Z,label:"Live-chat",isRoute:!1,onClick:()=>{if(Oe(o,r,t,"Chat"),t.chatProvider){const r=ee[t.chatProvider];try{r.show({block:t})}catch(e){console.error(`Userflow.js: Error when showing ${t.chatProvider}:`,e)}n()}else r.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.")}}),f.createElement("div",{className:W({"userflowjs-resource-center-block":!0,"userflowjs-resource-center-block--clickable":1===c.length}),onClick:1===c.length?c[0].onClick:void 0},1===c.length&&f.createElement("div",{className:"userflowjs-resource-center-block-icon"},f.createElement(R,{icon:c[0].icon})),f.createElement(xe,{...e}),c.length>1&&c.map((({icon:e,label:t,onClick:r},s)=>f.createElement("button",{key:s,className:"userflowjs-resource-center-icon-button",onClick:r,"aria-label":t},f.createElement(R,{icon:e})))),1===c.length&&c[0].isRoute&&f.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},f.createElement(R,{icon:K})))}},[e.DIVIDER]:{View:()=>f.createElement("div",{className:"userflowjs-resource-center-divider"})},[e.FLOWS]:{View:e=>{const{block:t,session:r,navigate:s}=e,n=w();return f.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:e=>{Oe(n,r,t),s({kind:"flows",block:t},e)}},f.createElement(Ie,{...e}),f.createElement(xe,{...e}),f.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},f.createElement(R,{icon:K})))},routeTo:({block:e,initialQ:t})=>({kind:"flows",block:e,initialQ:t}),isSearchable:e=>!!e.searchEnabled,search:async({client:e,session:t,block:r,q:s})=>{const{flows:n}=await e.send({kind:"ListResourceCenterBlockFlows",sessionId:t.id,blockCvid:r.cvid},{handlesRejection:!0}),o=Be(n,s),c=o.slice(0,5);return{block:r,truncated:c.length===o.length,results:c.map((e=>({kind:"flow",flow:e})))}}},[e.KNOWLEDGE_BASE]:{View:e=>{const{block:t,session:r,navigate:s}=e,n=w();return f.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:e=>{Oe(n,r,t),s({kind:"knowledgeBase",block:t},e)}},f.createElement(Ie,{...e}),f.createElement(xe,{...e}),f.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},f.createElement(R,{icon:K})))},routeTo:({block:e,initialQ:t})=>({kind:"knowledgeBase",block:e,initialQ:t}),search:async({client:e,session:t,block:r,q:s})=>{const{truncated:n,articles:o}=await e.send({kind:"SearchKnowledgeBase",sessionId:t.id,blockCvid:r.cvid,q:s,offset:0,limit:5},{handlesRejection:!0});return{block:r,truncated:n,results:o.map((e=>({kind:"article",article:e})))}}},[e.MESSAGE]:{View:({block:e,session:t})=>f.createElement("div",{className:"userflowjs-resource-center-block"},f.createElement("div",{className:"userflowjs-resource-center-block-text userflowjs-bubble-content"},f.createElement(j,{doc:e.content,lookupAttribute:T(t.data)})))},[e.SUBPAGE]:{View:e=>{const{block:t,session:r,navigate:s}=e,n=w();return f.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:e=>{Oe(n,r,t),s({kind:"subpage",block:t},e)}},f.createElement(Ie,{...e}),f.createElement(xe,{...e}),f.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},f.createElement(R,{icon:K})))}}},Ie=({block:e})=>e.icon?f.createElement("div",{className:"userflowjs-resource-center-block-icon"},f.createElement(R,{icon:e.icon,size:16})):null,xe=({block:e,session:t})=>f.createElement("div",{className:"userflowjs-resource-center-block-text"},f.createElement(S,{doc:e.name,lookupAttribute:T(t.data)}));const Te=({session:e,navigate:t})=>{const r=w(),s=e.version.resourceCenter.blocks,n=Ne(s),{t:o}=J(),c=f.useRef(null),[a,l]=f.useState(""),[i,u]=ge(a,l),[d,m]=f.useState(null);return f.useEffect((()=>{if(""===a.trim())return void m(null);let t=!1;return(async()=>{m(null);const n=await Promise.all(s.map((async t=>{const{search:s}=_e[t.type];if(!s)return null;try{return await s({client:r,session:e,block:t,q:a})}catch(n){return console.error(`Userflow.js: Global search failed for ${t.type} block=`,t,"error=",n),null}})));t||m(n.filter((e=>null!=e&&e.results.length>0)))})(),()=>{t=!0}}),[r,e,s,a]),f.useEffect((()=>{c.current?.focus({preventScroll:!0})}),[]),f.createElement(f.Fragment,null,f.createElement("div",{className:"userflowjs-resource-center-list-route-search"},f.createElement("input",{ref:c,className:"userflowjs-text-input",type:"text",value:i,onChange:e=>u(e.target.value),placeholder:o("resource_center.search_placeholder")})),""===a.trim()?f.createElement("div",{"data-testid":"resource-center-empty-query",className:"userflowjs-resource-center-list-route-error"},o("resource_center.search_in")," ",n.map(((t,r)=>f.createElement(f.Fragment,{key:t.cvid},r>0&&(r===n.length-1?` ${o("and")} `:", "),f.createElement("b",null,f.createElement(S,{doc:t.name,lookupAttribute:T(e.data)}))))),"."):d?0===d.length?f.createElement("div",{className:"userflowjs-resource-center-list-route-error"},o("resource_center.no_results_found")):d.map((({block:s,truncated:n,results:c},l)=>{const i=_e[s.type],u=i.routeTo&&i.routeTo({block:s,initialQ:a});return f.createElement(f.Fragment,{key:s.cvid},l>0&&f.createElement("div",{className:"userflowjs-resource-center-divider"}),f.createElement("div",{className:"userflowjs-resource-center-label"},f.createElement(S,{doc:s.name,lookupAttribute:T(e.data)})),c.map(((r,n)=>"flow"===r.kind?f.createElement(Le,{key:r.flow.id,block:s,session:e,flow:r.flow,navigate:t}):"article"===r.kind?f.createElement(Pe,{key:n,block:s,session:e,article:r.article}):null)),!n&&u&&f.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:n=>{Oe(r,e,s),t(u,n)}},f.createElement("div",{className:"userflowjs-resource-center-block-text"},o("more"),":"," ",f.createElement(S,{doc:s.name,lookupAttribute:T(e.data)})),f.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},f.createElement(R,{icon:K}))))})):f.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},f.createElement(pe,null)))},Re=({block:e,session:t})=>f.createElement("div",{className:"userflowjs-resource-center-content-route userflowjs-bubble-content"},f.createElement(j,{doc:e.emailContent,lookupAttribute:T(t.data)})),Ae=({block:e,session:t})=>f.createElement("div",{className:"userflowjs-resource-center-content-route userflowjs-bubble-content"},f.createElement(j,{doc:e.phoneContent,lookupAttribute:T(t.data)})),Me=({block:e,initialQ:t,session:r,navigate:s})=>{const{t:n}=J(),o=f.useRef(null),[c,a]=f.useState(t||""),[l,i]=ge(c,a),{data:u,error:d}=ve({kind:"ListResourceCenterBlockFlows",sessionId:r.id,blockCvid:e.cvid}),m=u?.flows,w=f.useMemo((()=>m?Be(m,c):null),[m,c]);return f.useEffect((()=>{o.current?.focus({preventScroll:!0})}),[]),f.createElement(f.Fragment,null,f.createElement("div",{className:"userflowjs-resource-center-list-route-header"},f.createElement("div",{className:"userflowjs-resource-center-list-route-title"},f.createElement(S,{doc:e.name,lookupAttribute:T(r.data)}))),e.searchEnabled&&f.createElement("div",{className:"userflowjs-resource-center-list-route-search"},f.createElement("input",{ref:o,className:"userflowjs-text-input",type:"text",value:l,onChange:e=>i(e.target.value),placeholder:n("resource_center.search_placeholder")})),d?f.createElement("div",{className:"userflowjs-resource-center-list-route-error"},n("resource_center.generic_error")):w?0===w.length?f.createElement("div",{className:"userflowjs-resource-center-list-route-error"},n("resource_center.no_results_found")):w.map((t=>f.createElement(Le,{key:t.id,block:e,session:r,flow:t,navigate:s}))):f.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},f.createElement(pe,{fadeIn:!0})))};function Be(e,t){const r=t.toLowerCase().trim();return""===r?e:e.filter((e=>e.name.toLowerCase().includes(r)))}const Le=({block:e,session:t,flow:r,navigate:s})=>{const n=w(),[o,c]=f.useState(!1);return f.useEffect((()=>{if(!o||r.type!==u.CHECKLIST)return;const e=()=>{n.checklistSession?.flow.id===r.id&&(t(),s(null))},t=()=>{n.off("checklistChanged",e)};return n.on("checklistChanged",e),t}),[n,o,r.type,r.id,s]),f.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:()=>{if(Oe(n,t,e,r.name),n.checklistSession?.flow.id===r.id)return void s(null);n.startFlow({flowId:r.id,startReason:d.RESOURCE_CENTER,replaceCurrent:!0}),c(!0);const o=g(r.url,{lookupAttribute:T(t.data)});o&&y(o)},disabled:o},f.createElement("div",{className:"userflowjs-resource-center-block-icon"},f.createElement(R,{icon:r.type===u.CHECKLIST?"regular/tasks":"regular/shoe-prints",size:16})),f.createElement("div",{className:"userflowjs-resource-center-block-text"},r.name),o&&f.createElement(pe,null))},He=({block:e,initialQ:t,session:r,bodyRef:s})=>{const{t:n}=J(),o=f.useRef(null),[c,a]=f.useState(t||""),[l,i]=ge(c,a),{loading:u,loadingMore:d,data:m,messageForData:w,error:h,loadMore:b}=ve({kind:"SearchKnowledgeBase",sessionId:r.id,blockCvid:e.cvid,q:c,offset:0}),E=m?.truncated,k=f.useCallback((()=>{b(((e,t)=>({...t,offset:e.articles.length})),((e,t)=>({...t,articles:[...e.articles,...t.articles]})))}),[b]);f.useEffect((()=>{const e=s.current;if(!e||u||d||E)return;const t=()=>{e.scrollHeight-e.clientHeight-e.scrollTop>400||k()};return e.addEventListener("scroll",t),()=>{e.removeEventListener("scroll",t)}}),[s,u,d,E,k]),f.useEffect((()=>{o.current?.focus({preventScroll:!0})}),[]);let p=e.knowledgeBaseUrl||"";return p.match(/^https?:\/\//)||(p=`http://${p}`),f.createElement(f.Fragment,null,f.createElement("div",{className:"userflowjs-resource-center-list-route-header"},f.createElement("div",{className:"userflowjs-resource-center-list-route-title"},f.createElement(S,{doc:e.name,lookupAttribute:T(r.data)})),f.createElement("a",{className:"userflowjs-resource-center-icon-button",href:p,target:"_blank",rel:"noopener noreferrer"},f.createElement(R,{icon:V}))),f.createElement("div",{className:"userflowjs-resource-center-list-route-search"},f.createElement("input",{ref:o,className:"userflowjs-text-input",type:"text",value:l,onChange:e=>i(e.target.value),placeholder:n("resource_center.search_placeholder")})),h?f.createElement("div",{className:"userflowjs-resource-center-list-route-error"},"quota_exceeded"===h.code?"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.":h.humanMessage||n("resource_center.generic_error")):u||!m?f.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},f.createElement(pe,null)):0===m.articles.length?""===w?.q?null:f.createElement("div",{className:"userflowjs-resource-center-list-route-error"},n("resource_center.no_results_found")):f.createElement(f.Fragment,null,""===w?.q&&f.createElement("div",{className:"userflowjs-resource-center-label"},n("resource_center.suggested_articles")),m.articles.map(((t,s)=>f.createElement(Pe,{key:s,block:e,session:r,article:t}))),d&&f.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},f.createElement(pe,null))))},Pe=({block:e,article:t,session:r})=>{const s=w();return f.createElement("a",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:()=>{Oe(s,r,e,t.title)},href:t.url,target:"_blank",rel:"noopener noreferrer"},f.createElement("div",{className:"userflowjs-resource-center-block-icon"},f.createElement(R,{icon:"regular/file-alt",size:16})),f.createElement("div",{className:"userflowjs-resource-center-block-text"},f.createElement("span",{dangerouslySetInnerHTML:{__html:t.htmlTitle}}),f.createElement("div",{className:"userflowjs-resource-center-block-subtext",dangerouslySetInnerHTML:{__html:t.htmlSnippet}})))},We=({block:e,session:t})=>f.createElement("div",{className:"userflowjs-resource-center-content-route userflowjs-bubble-content"},f.createElement(j,{doc:e.content,lookupAttribute:T(t.data)})),Fe=({block:e,initialUserContent:t,session:s,navigate:n})=>{const o=e.assistantFlowId,c=w(),[a,l]=f.useState(null),[i,u]=f.useState(null),[d,m]=f.useState(null),[h]=f.useState(t);return f.useEffect((()=>{t&&n({kind:"assistant",block:e,initialUserContent:""})}),[t,e,n]),f.useEffect((()=>{let e=!1;return(async()=>{try{const t=r.getItem("assistantConversationId:"+o),[s,n]=await Promise.all([Se(),c.send({kind:"GetAssistant",assistantFlowId:o,conversationId:t},{handlesRejection:!0,endBatch:!0})]);if(e)return;l((()=>s)),u(n)}catch(t){console.error("Resource center assistant route failed to load:",t),m(t.humanMessage||"Sorry, something went wrong. Please try again or contact my human friends.")}})(),()=>{e=!0}}),[c,o]),d?f.createElement("div",{className:"userflowjs-assistant-chat"},f.createElement("div",{className:"userflowjs-assistant-chat__content"},f.createElement("div",{className:"userflowjs-assistant-chat__error"},d))):a&&i?f.createElement(a,{block:e,session:s,assistantReply:i,initialUserContent:h}):f.createElement(pe,{center:!0,fadeIn:!0})};function Oe(e,t,r,s){e.send({kind:"ClickResourceCenter",sessionId:t.id,description:r?g(r.name,{lookupAttribute:T(t.data)})+(s?` - ${s}`:""):s},{batch:!0})}var $e=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",ResourceCenterApp:ye,default:ye});export{je as A,Ce as G,$e as R};
1
+ import{h as e,C as t,i as r,j as s,c as n,k as o,l as c,E as a,m as l,n as i,p as u,S as d,_ as m}from"./userflow.js";import{r as f}from"./vendor.react.js";import{u as w,i as h}from"./client-context.js";import{u as b,w as E,f as k,C as p}from"./flow-host.styl.js";import{b as v,h as g,s as C,R as j,a as S,n as y}from"./bubble-frame.styl.js";import{M as N,g as _,a as I,b as x}from"./flow-condition-types.js";import{D as T,u as R,a as A,g as M}from"./stylesheets.js";import{u as B,F as L}from"./use-window-resize.js";import{o as H}from"./vendor.obj-str.js";import{S as P}from"./logomark.js";import{f as W,C as F}from"./ChecklistUI.js";import{f as O,a as $,b as D,c as U,d as z,e as q,g as K,h as V,i as G,j as Q}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{B as Z}from"./BubbleToolbar.js";import{u as J}from"./vendor.react-i18next.js";function X(t){return t!==e.ACTION&&t!==e.ASSISTANT&&t!==e.CONTACT&&t!==e.FLOWS&&t!==e.KNOWLEDGE_BASE&&t!==e.SUBPAGE}const Y=window,ee={[t.CRISP]:{configure:({onShow:e,onHide:t})=>{!function(){if(te)return;te=!0,Y.$crisp||(Y.$crisp=[]);Y.$crisp.push(["do","chat:hide"])}();let r=!1,s=!1;const n=()=>{r||s?(Y.$crisp.push(["do","chat:show"]),e()):(Y.$crisp.push(["do","chat:hide"]),t())},o=()=>{r=!0,n()};Y.$crisp.push(["on","chat:opened",o]);const c=()=>{r=!1,n()};Y.$crisp.push(["on","chat:closed",c]);const a=()=>{s=!0,n()};Y.$crisp.push(["on","message:received",a]);const l=window.setInterval((()=>{const e=(()=>{const e=document.getElementById("crisp-chatbox");if(!e||"block"!==window.getComputedStyle(e).display)return!1;const t=e.querySelector('[data-id="new_messages"]');return!(!t||"block"!==window.getComputedStyle(t).display)})();e!==s&&(s=e,n())}),200);return()=>{Y.$crisp.push(["off","chat:opened",o]),Y.$crisp.push(["off","chat:closed",c]),Y.$crisp.push(["off","message:received",a]),window.clearInterval(l)}},show:()=>{Y.$crisp.push(["do","chat:show"]),Y.$crisp.push(["do","chat:open"])},hide:()=>{Y.$crisp.push(["do","chat:hide"]),Y.$crisp.push(["do","chat:close"])}},[t.CUSTOM]:{configure:()=>()=>{},show:({block:e})=>{try{new Function('"use strict";\n'+e.chatCode)()}catch(t){console.error(`Userflow.js: Showing custom chat provider failed. Code: ${e.chatCode}`,t)}},hide:()=>{}},[t.FRESHCHAT]:{configure:({onShow:e,onHide:t})=>{if(!Y.fcWidget)throw new Error("Freshchat is not installed");let r=!1,s=!1;const n=()=>{r||s?e():t()},o=()=>{r=!0,n()};Y.fcWidget.on("widget:opened",o);const c=()=>{r=!1,n()};Y.fcWidget.on("widget:closed",c);const a=()=>{const e=!!document.querySelector("#fc_frame.h-open-notify");e!==s&&(s=e,n())},l=window.setInterval(a,200);return Y.fcWidget.on("unreadCount:notify",a),()=>{Y.fcWidget.off("widget:opened",o),Y.fcWidget.off("widget:closed",c),Y.fcWidget.off("unreadCount:notify",a),window.clearInterval(l)}},show:()=>{Y.fcWidget.open()},hide:()=>{Y.fcWidget.close()}},[t.HELPSCOUT]:{configure:({onShow:e,onHide:t})=>{if(!Y.Beacon)throw new Error("Help Scout is not installed");!function(){if(re)return;re=!0,ne()}();let r=!1,s=!1;const n=()=>{r||s?(se(),e()):(ne(),t())},o=()=>{r=!0,n()};Y.Beacon("on","open",o),Y.Beacon("info")?.status.isOpened&&o();const c=()=>{r=!1,n()};Y.Beacon("on","close",c);const a=window.setInterval((()=>{const e=!!document.querySelector(".BeaconNotificationsFrame");e!==s&&(s=e,n())}),200);return()=>{Y.Beacon("off","open",o),Y.Beacon("off","close",c),window.clearInterval(a)}},show:()=>{se(),Y.Beacon("open")},hide:()=>{ne(),Y.Beacon("close")}},[t.HUBSPOT]:{configure:({onShow:e,onHide:t})=>{const r=()=>{const r=document.getElementById("hubspot-messages-iframe-container");if(!Y.HubSpotConversations||!r)return;window.clearInterval(n),function(){if(oe)return;oe=!0,ce?ae():le()}();let o=!1,c=!1;const a=()=>{o||c?(ae(),e()):(le(),t())},l=()=>{const e=!!document.querySelector("#hubspot-messages-iframe-container .hs-shadow-container.active");e!==o&&(o=e,a())},i=new N(l);i.observe(r,{attributes:!0,subtree:!0,attributeFilter:["class"]}),l();const u=({unreadCount:e})=>{const t=e>0;t!==c&&(c=t,a())};Y.HubSpotConversations.on("unreadConversationCountChanged",u),s=()=>{i.disconnect(),Y.HubSpotConversations.off("unreadConversationCountChanged",u)}};let s=()=>{window.clearInterval(n)};const n=window.setInterval(r,100);return r(),()=>{s()}},show:()=>{ae(),Y.HubSpotConversations.widget.open()},hide:()=>{le(),Y.HubSpotConversations.widget.close()}},[t.INTERCOM]:{configure:({onShow:e,onHide:t})=>{if(!Y.Intercom)throw new Error("Intercom is not installed");return function(){if(ie)return;ie=!0,fe();let e=!1,t=!1;const r=()=>{me();for(const e of ue)e()},s=()=>{fe();for(const e of de)e()},n=()=>{e||t?r():s()};Y.Intercom("onShow",(()=>{e=!0,n()})),Y.Intercom("onHide",(()=>{e=!1,n()}));const o=()=>{const e=!!document.querySelector('iframe[name="intercom-borderless-frame"], iframe[name="intercom-notifications-frame"]');t!==e&&(t=e,n())};Y.Intercom("onUnreadCountChange",(()=>{o()})),window.setInterval(o,200)}(),ue.add(e),de.add(t),()=>{ue.delete(e),de.delete(t)}},show:()=>{me(),Y.Intercom("show")},hide:()=>{fe(),Y.Intercom("hide")}},[t.ZENDESK]:{configure:({onShow:e,onHide:t})=>{if(!Y.zE)throw new Error("Zendesk is not installed");!function(){if(we)return;we=!0,Y.zE("webWidget","hide"),Y.zE("webWidget","close"),Y.zE("webWidget:on","open",(()=>{for(const e of he)e()})),Y.zE("webWidget:on","close",(()=>{for(const e of be)e()})),Y.zE("webWidget:on","chat:unreadMessages",(e=>{for(const t of Ee)t(e)}))}();let r=!1,s=!1;const n=()=>{r||s?(Y.zE("webWidget","show"),e()):(Y.zE("webWidget","hide"),t())},o=()=>{r=!0,s=!1,n()};he.add(o);const c=()=>{r=!1,s=!1,n()};be.add(c);const a=e=>{const t=e>0;t!==s&&(s=t,n())};return Ee.add(a),()=>{he.delete(o),be.delete(c),Ee.delete(a)}},show:()=>{Y.zE("webWidget","show"),Y.zE("webWidget","open")},hide:()=>{Y.zE("webWidget","hide"),Y.zE("webWidget","close")}},[t.ZENDESK_MESSENGER]:{configure:({onShow:e,onHide:t})=>{if(!Y.zE)throw new Error("Zendesk is not installed");let r=!1;const s=window.setInterval((()=>{const s=(()=>{const e=document.querySelector('iframe[title="Messaging window"]');return!!e&&"0px"!==window.getComputedStyle(e).height})();s!==r&&(r=s,r?e():t())}),200);return()=>{window.clearInterval(s)}},show:()=>{Y.zE("messenger","open")},hide:()=>{Y.zE("messenger","close")}}};let te=!1;let re=!1;function se(){Y.Beacon("config",{display:{style:"icon"}})}function ne(){Y.Beacon("config",{display:{style:"manual"}})}let oe=!1,ce=!1;function ae(){ce=!0;document.getElementById("hubspot-messages-iframe-container")?.style.setProperty("visibility","visible","important")}function le(){ce=!1;document.getElementById("hubspot-messages-iframe-container")?.style.setProperty("visibility","hidden","important")}let ie=!1,ue=new Set,de=new Set;function me(){Y.Intercom("update",{hide_default_launcher:!1,vertical_padding:20})}function fe(){Y.Intercom("update",{hide_default_launcher:!0,vertical_padding:100})}let we=!1,he=new Set,be=new Set,Ee=new Set;const ke=e=>f.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100"},e),f.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"}),f.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"})),pe=({center:e,fadeIn:t})=>{const r=12;return f.createElement("div",{className:H({"userflowjs-spinner":!0,"userflowjs-spinner--center":!!e,"userflowjs-spinner--fade-in":!!t})},f.createElement("svg",{viewBox:"0 0 24 24",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},f.createElement("circle",{className:"userflowjs-spinner__bg",fill:"none",cx:r,cy:r,r:10,style:{strokeWidth:"4px"}}),f.createElement("circle",{className:"userflowjs-spinner__fill",fill:"none",cx:r,cy:r,r:10,transform:"translate(12, 12) rotate(-90) translate(-12, -12)",style:{strokeWidth:"4px",strokeDasharray:20*Math.PI*.25+"px, 1000"}})))};function ve(e){const t=w(),[r,s]=f.useState(!0),[n,o]=f.useState(!1),[c,a]=f.useState(null),[l,i]=f.useState(null),[u,d]=f.useState(null),m=f.useRef(0),h=f.useRef(null),b=f.useRef((()=>{}));return f.useEffect((()=>{const r=JSON.stringify(e);if(r===h.current)return;h.current=r;const n=++m.current;let c,l;let u=!1;b.current=async(e,r)=>{if(!u){u=!0,o(!0);try{const s=e(c,l);l=s;const i=await t.send(s,{handlesRejection:!0});if(n!==m.current)return;c=r(c,i),a(c),d(null)}catch(s){if(n!==m.current)return;d(s)}finally{u=!1,o(!1)}}},(async()=>{s(!0);try{l=e;const r=await t.send(e,{handlesRejection:!0});if(n!==m.current)return;c=r,a(c),i(e),d(null)}catch(r){if(n!==m.current)return;d(r)}finally{s(!1)}})()}),[t,e]),{loading:r,loadingMore:n,data:c,messageForData:l,error:u,loadMore:b.current}}function ge(e,t){const[r,s]=f.useState(e),n=f.useRef(void 0),o=f.useCallback((e=>{window.clearTimeout(n.current),s(e),t(e)}),[t]),c=f.useCallback((e=>{window.clearTimeout(n.current),s(e),n.current=window.setTimeout((()=>{t(e)}),200)}),[t]);return f.useEffect((()=>()=>{window.clearTimeout(n.current)}),[]),[r,c,o]}const Ce=({textareaRef:e,value:t,onChange:r,onBlur:s,onKeyDown:n,onMouseDown:o,placeholder:c,disabled:a,readOnly:l,className:i,mirrorClassName:u,textareaClassName:d,children:m})=>{let w=t||c||"";return(""===w||w.endsWith("\n"))&&(w+=" "),i=i||"growing-textarea",u=u||i+"__mirror",f.createElement("div",{className:i},f.createElement("div",{className:u+" "+(d||"")},w),f.createElement("textarea",{ref:e,value:t,onChange:e=>r&&r(e.target.value),onBlur:s,onKeyDown:n,onMouseDown:o,placeholder:c,disabled:a,readOnly:l,className:d}),m)},je=({textareaRef:e,value:t,onChange:r,onSubmit:s,placeholder:n,readOnly:o})=>{const c=()=>{s&&s()};return f.createElement("div",{className:"userflowjs-assistant-chat-input"},f.createElement(Ce,{textareaRef:e,className:"userflowjs-growing-textarea",mirrorClassName:"userflowjs-growing-textarea__mirror",textareaClassName:"userflowjs-textarea userflowjs-assistant-chat-input__textarea",placeholder:n,readOnly:o,value:t||"",onChange:r,onKeyDown:e=>{e.shiftKey||"Enter"!==e.key||(e.preventDefault(),c())}}),f.createElement("button",{"data-testid":"assistant-chat-input-submit",className:"userflowjs-assistant-chat-input__submit",onClick:()=>c()},f.createElement(T,{icon:O})))};const Se=async()=>(await m((()=>import("./ResourceCenterAssistantChat.js")),[new URL("ResourceCenterAssistantChat.js",import.meta.url).toString(),new URL("vendor.react.js",import.meta.url).toString(),new URL("vendor.object-assign.js",import.meta.url).toString(),new URL("client-context.js",import.meta.url).toString(),new URL("vendor.i18next.js",import.meta.url).toString(),new URL("vendor.react-i18next.js",import.meta.url).toString(),new URL("vendor.babel.runtime.js",import.meta.url).toString(),new URL("vendor.fortawesome.pro-regular-svg-icons.js",import.meta.url).toString(),new URL("vendor.dompurify.js",import.meta.url).toString(),new URL("vendor.marked.js",import.meta.url).toString(),new URL("vendor.obj-str.js",import.meta.url).toString(),new URL("userflow.js",import.meta.url).toString(),new URL("vendor.phoenix.js",import.meta.url).toString(),new URL("vendor.uuid.js",import.meta.url).toString(),new URL("bubble-frame.styl.js",import.meta.url).toString(),new URL("flow-condition-types.js",import.meta.url).toString(),new URL("vendor.date-fns.js",import.meta.url).toString(),new URL("stylesheets.js",import.meta.url).toString(),new URL("vendor.fortawesome.pro-solid-svg-icons.js",import.meta.url).toString(),new URL("flow-host.styl.js",import.meta.url).toString(),new URL("use-window-resize.js",import.meta.url).toString(),new URL("vendor.react-dom.js",import.meta.url).toString(),new URL("vendor.scheduler.js",import.meta.url).toString(),new URL("logomark.js",import.meta.url).toString(),new URL("ChecklistUI.js",import.meta.url).toString(),new URL("BubbleToolbar.js",import.meta.url).toString()])).ResourceCenterAssistantChat,ye=({session:l,isOpen:i,flowSession:u,checklistSession:d})=>{const m=w(),{t:g}=J(),{company:C}=l.flow,{version:j}=l,S=j.resourceCenter,y=R(j.theme),x=l.locale?l.locale.standardLocaleId:l.version.theme.languageId;f.useEffect((()=>{h.changeLanguage(x)}),[x]);const{loaded:F}=A(window,k,y),[O,q]=f.useState(!1),K=F&&O,[V,G]=f.useState(_()),[Q,Z]=f.useState(I()),Y=f.useCallback((()=>{G(_()),Z(I())}),[]);B(Y);const{zIndex:te,bringToFront:re}=b(),se=f.useRef(null),[ne,oe]=f.useState(null),[ce,ae]=f.useState(null),[le,ie]=f.useState(null),ue=f.useRef(null),[de,me]=f.useState(null),[fe,we]=f.useState(null),[he,be]=f.useState(null),[Ee,pe]=f.useState(0),[ve,ge]=f.useState(0),Ce=f.useCallback((()=>{ce&&pe(ce.offsetWidth),ge((le?.offsetHeight||0)+(de?.offsetHeight||0)+(fe?.offsetHeight||0)+(he?.offsetHeight||0))}),[ce,le,de,fe,he]);f.useLayoutEffect((()=>{if(!ne||"function"!=typeof N)return;const e=new N((()=>{Ce()}));return e.observe(ne,{childList:!0,attributes:!0,subtree:!0}),()=>{e.disconnect()}}),[ne,Ce]),f.useLayoutEffect((()=>{Ce()}));const[je,Se]=f.useState(!1),ye=f.useRef(),Ie=f.useCallback((()=>{Se(!0),window.clearTimeout(ye.current),ye.current=window.setTimeout((()=>{Se(!1)}),y.resourceCenterTransitionDuration)}),[y.resourceCenterTransitionDuration]);f.useEffect((()=>()=>{window.clearTimeout(ye.current)}),[]);const xe=f.useCallback((()=>{re(),Ie(),m.openResourceCenter()}),[re,m,Ie]),Be=f.useCallback((()=>{Ie(),m.closeResourceCenter()}),[m,Ie]),[Le,Pe]=f.useState(!1);f.useEffect((()=>{if(Le){if(!("ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0))if(i){const e='button:not([tabindex="-1"]), [tabindex]:not([tabindex="-1"]), input, textarea';let t=de?.querySelector(".userflowjs-assistant-chat-input textarea")||de?.querySelector(e)||le?.querySelector(e);if(t){const e=t.closest&&t.closest(".userflowjs-resource-center-checklist")||null;e?W(e):t.focus({preventScroll:!0})}}else ce?.focus({preventScroll:!0});Pe(!1)}}),[Le,i,de,le,ce]),f.useEffect((()=>{const e=ne?.ownerDocument.defaultView;if(!i||!e)return;const t=e=>{"Escape"===e.key&&(Be(),Pe(!0))};return e.addEventListener("keydown",t),()=>e.removeEventListener("keydown",t)}),[i,ne,Pe,Be]);const[$e,De]=f.useState((()=>function(e,t){if(!t)return null;const r=JSON.parse(t);let s;r.blockCvid&&(s=e.version.resourceCenter?.blocks.find((e=>e.cvid===r.blockCvid)));if(!s&&"search"!==r.kind)return null;return{kind:r.kind,block:s}}(l,r.getItem(`resourceCenterRoute:v1:${l.id}`)))),Ue=f.useCallback(((e,t)=>{De(e);const s=function(e){if(!e)return null;let t;"block"in e&&null!=e.block&&(t=e.block.cvid);return JSON.stringify({kind:e.kind,blockCvid:t})}(e);s?r.setItem(`resourceCenterRoute:v1:${l.id}`,s):r.removeItem(`resourceCenterRoute:v1:${l.id}`),0===t?.detail&&Pe(!0)}),[l.id]),ze=f.useMemo((()=>S.blocks.filter((t=>!(t.type===e.CHECKLIST&&!d)&&((t.type!==e.DIVIDER||!y.resourceCenterAutoDividers)&&(!t.hiddenWhenFlowsActive||!t.hiddenWhenFlowsActive.some((e=>e===u?.flow.id||e===d?.flow.id))))))),[S,u,d,y.resourceCenterAutoDividers]),qe=f.useMemo((()=>Ne(ze)),[ze]),Ke=f.useMemo((()=>d&&S.blocks.some((t=>t.type===e.CHECKLIST))?s(d):0),[S,d]),Ve=f.useMemo((()=>S.blocks.find((t=>t.type===e.CONTACT&&t.chatEnabled&&t.chatProvider))),[S]),[Ge,Qe]=f.useState(!1),Ze=f.useCallback((()=>{m.closeResourceCenter(),Ve&&Ve.chatProvider!==t.CUSTOM&&Qe(!0)}),[m,Ve]),Je=f.useCallback((()=>{Qe(!1)}),[]),Xe=f.useCallback((()=>{if(Ve)try{ee[Ve.chatProvider].hide({block:Ve}),Je()}catch(e){console.error(`Userflow.js: Error when hiding ${Ve.chatProvider}:`,e)}}),[Ve,Je]);f.useEffect((()=>{if(!Ve)return;n.autoHide3pDisabled=!0;const e=ee[Ve.chatProvider];try{const t=e.configure({block:Ve,onShow:Ze,onHide:Je});return()=>{t()}}catch(t){return void console.error(`Userflow.js: Error when configuring ${Ve.chatProvider}:`,t)}}),[Ve,Ze,Je]),f.useEffect((()=>{i&&Xe()}),[Xe,i]);const Ye=!!$e&&("search"===$e.kind||"flows"===$e.kind||"knowledgeBase"===$e.kind),et="assistant"===$e?.kind,tt=Math.min(et?y.resourceCenterFullWidth:y.resourceCenterWidth,V-2*y.resourceCenterPaddingX),rt={zIndex:null!=y.resourceCenterZIndex?y.resourceCenterZIndex:i?te:E(p),width:(i?tt:Ee)+"px",height:i?Math.min(Ye?540:et?720:ve,Q-2*y.resourceCenterPaddingY,null==y.resourceCenterMaxHeight?Number.MAX_VALUE:y.resourceCenterMaxHeight)+"px":void 0,position:K?void 0:"absolute",visibility:K&&!Ge?void 0:"hidden"},st=y.resourceCenterDisplayChecklistProgress&&d&&Ke>0?f.createElement("div",{"data-testid":"resource-center-launcher-badge",className:"userflowjs-resource-center-launcher-badge"},Ke,f.createElement("div",{className:"userflowjs-a11y-only"},"uncompleted tasks")):null;let nt="",ot="";return y.resourceCenterLauncherTextMode===o.CHECKLIST_OVERRIDE&&d&&Ke>0?nt=d.version.checklist?.launcherText||"Get Started":y.resourceCenterLauncherTextMode!==o.NONE&&(ot=S.buttonText),f.createElement("div",{"data-testid":"resource-center-app",className:"userflowjs-resource-center userflowjs-theme-root",style:M(y),dir:h.dir()},f.createElement(L,{elRef:se,className:H({"userflowjs-resource-center-frame":!0,"userflowjs-resource-center-frame--fixed":!0,[`userflowjs-resource-center-frame--placement-${y.resourceCenterPlacement.toLowerCase().replace(/_/g,"-")}`]:!0,"userflowjs-resource-center-frame--animating":je,"userflowjs-resource-center-frame--open":i,"userflowjs-resource-center-frame--closed":!i}),style:{...rt},stylesheet:v,theme:y,onStylesheetsLoad:q},K&&f.createElement(f.Fragment,null,f.createElement("div",{ref:oe,className:H({"userflowjs-resource-center-frame-root":!0,[`userflowjs-resource-center-frame-root--placement-${y.resourceCenterPlacement.toLowerCase().replace(/_/g,"-")}`]:!0,"userflowjs-resource-center-frame-root--animating":je,"userflowjs-resource-center-frame-root--open":i,"userflowjs-resource-center-frame-root--closed":!i}),role:i?"dialog":void 0,"aria-label":i?S.headerText:void 0},f.createElement("div",{className:"userflowjs-resource-center-launcher-container"},f.createElement("button",{ref:ae,className:"userflowjs-resource-center-launcher-button",onClick:()=>{xe(),Pe(!0)},"aria-label":`Open ${S.headerText}`},st,nt&&f.createElement("div",{"data-testid":"resource-center-launcher-text",className:"userflowjs-resource-center-launcher-text"},nt),(st||nt)&&f.createElement("div",{className:"userflowjs-resource-center-launcher-divider"}),ot&&f.createElement("div",{"data-testid":"resource-center-launcher-text",className:"userflowjs-resource-center-launcher-text"},ot),f.createElement("div",{className:"userflowjs-resource-center-launcher-icon"},y.resourceCenterLauncherIconType===c.PLAINTEXT?"?":f.createElement(ke,null)))),f.createElement("div",{ref:ue,className:"userflowjs-resource-center-body",style:{width:tt+"px"}},f.createElement("div",{ref:me,className:H({"userflowjs-resource-center-body-content":!0,"userflowjs-resource-center-body-content--padding":"assistant"!==$e?.kind,"userflowjs-resource-center-body-content--same-background":y.sameBackground,"userflowjs-resource-center-body-content--with-made-with-userflow":C.resourceCenterBranding})},i&&f.createElement(f.Fragment,null,$e?"search"===$e.kind?f.createElement(Te,{session:l,navigate:Ue}):"email"===$e.kind?f.createElement(Re,{block:$e.block,session:l}):"phone"===$e.kind?f.createElement(Ae,{block:$e.block,session:l}):"flows"===$e.kind?f.createElement(Me,{block:$e.block,initialQ:$e.initialQ,session:l,navigate:Ue}):"knowledgeBase"===$e.kind?f.createElement(He,{block:$e.block,initialQ:$e.initialQ,session:l,bodyRef:ue}):"subpage"===$e.kind?f.createElement(We,{block:$e.block,session:l}):"assistant"===$e.kind?f.createElement(Fe,{block:$e.block,initialUserContent:$e.initialUserContent,session:l,navigate:Ue}):null:f.createElement(f.Fragment,null,ze.map(((e,t)=>{const r=_e[e.type],s=ze[t+1];return r?f.createElement(f.Fragment,{key:e.id},f.createElement(r.View,{session:l,flowSession:u,checklistSession:d,block:e,navigate:Ue,onChatShow:Ze}),s&&function(e,t,r){return!!e.resourceCenterAutoDividers&&(X(t)||X(r))}(y,e.type,s.type)&&f.createElement("div",{className:"userflowjs-resource-center-divider"})):null})))))),C.resourceCenterBranding&&f.createElement("div",{className:"userflowjs-resource-center-made-with-userflow"},f.createElement("div",{className:"userflowjs-resource-center-made-with-userflow-content",ref:we},f.createElement("a",{href:"https://userflow.com/?utm_source=made-with-userflow&utm_medium=link&utm_campaign=made-with-userflow-"+C.slug+"&utm_content=resource-center",target:"_blank",rel:"noopener noreferrer"},f.createElement(P,null),f.createElement("div",null,"Made with Userflow")))),l.draftMode&&f.createElement("div",{className:"userflowjs-resource-center-preview"},f.createElement("div",{ref:be,className:"userflowjs-resource-center-preview-content"},f.createElement("div",{className:"userflowjs-resource-center-preview-text"},"Preview"),f.createElement("button",{className:"userflowjs-resource-center-preview-button",onClick:()=>{m.endFlow(l,{endReason:a.USER_CLOSED})}},f.createElement(T,{icon:$})))),f.createElement("div",{className:"userflowjs-resource-center-header",style:{width:tt+"px"}},f.createElement("div",{ref:ie,className:"userflowjs-resource-center-header-content"},null==$e?f.createElement("div",{className:"userflowjs-resource-center-header-text"},S.headerText):f.createElement("button",{className:"userflowjs-resource-center-icon-button",onClick:e=>Ue(null,e)},f.createElement("div",{className:"userflowjs-rtl-mirrored"},f.createElement(T,{icon:D})),f.createElement("div",{className:"userflowjs-resource-center-icon-button__text"},g("resource_center.back"))),f.createElement("div",{className:"flex-1"}),qe.length>0&&f.createElement("button",{className:"userflowjs-resource-center-icon-button",onClick:()=>{let e={kind:"search"};if(1===qe.length){const t=qe[0],r=_e[t.type];r.routeTo&&(e=r.routeTo({block:t}))}"search"===$e?.kind?Ue(null):(Oe(m,l,null,"Search icon"),Ue(e))},"aria-label":"Search"},f.createElement(T,{icon:U})),f.createElement("button",{className:"userflowjs-resource-center-icon-button userflowjs-resource-center-close-button",onClick:e=>{Be(),0===e.detail&&Pe(!0)},"aria-label":`Close ${S.headerText}`},f.createElement(T,{icon:z}))))))))};function Ne(e){return e.filter((e=>{const t=_e[e.type];return t.isSearchable?t.isSearchable(e):!!t.search}))}const _e={[e.ACTION]:{View:e=>{const{block:t,session:r,flowSession:s,checklistSession:n}=e,o=w(),[c,a]=f.useState(!1),i=s?.id,u=n?.id;return f.useEffect((()=>{a(!1)}),[i,u]),f.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:c?void 0:()=>{Oe(o,r,t);const e=t.actions.find((e=>e.type===l.START_FLOW));if(e){e.otherFlow?.id!==n?.flow.id&&a(!0)}else o.closeResourceCenter();g(o,r,t.actions)},disabled:c},f.createElement(Ie,{...e}),f.createElement(xe,{...e}),c&&f.createElement(pe,null))}},[e.ASSISTANT]:{View:e=>{const{block:t,session:r,navigate:s}=e,n=w(),[o,c]=f.useState("");return t.assistantAppearance===i.INPUT?f.createElement("div",{className:"userflowjs-resource-center-assistant-block"},f.createElement(je,{value:o,onChange:c,placeholder:C(t.name,{lookupAttribute:x(r.data)}),onSubmit:()=>{Oe(n,r,t),s({kind:"assistant",block:t,initialUserContent:o})}})):f.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:()=>{Oe(n,r,t),s({kind:"assistant",block:t,initialUserContent:""})}},f.createElement(Ie,{...e}),f.createElement(xe,{...e}))}},[e.CHECKLIST]:{View:({checklistSession:e})=>f.createElement("div",{"data-testid":"resource-center-checklist",className:"userflowjs-resource-center-checklist"},f.createElement(F,{session:e}),f.createElement(Z,{draftMode:!!e.draftMode&&"CHECKLIST PREVIEW"}))},[e.CONTACT]:{View:e=>{const{block:t,session:r,navigate:s,onChatShow:n}=e,o=w(),c=[];return t.emailEnabled&&c.push({icon:V,label:"Email",isRoute:!0,onClick:e=>{Oe(o,r,t,"Email"),s({kind:"email",block:t},e)}}),t.phoneEnabled&&c.push({icon:G,label:"Phone",isRoute:!0,onClick:e=>{Oe(o,r,t,"Phone"),s({kind:"phone",block:t},e)}}),t.chatEnabled&&c.push({icon:Q,label:"Live-chat",isRoute:!1,onClick:()=>{if(Oe(o,r,t,"Chat"),t.chatProvider){const r=ee[t.chatProvider];try{r.show({block:t})}catch(e){console.error(`Userflow.js: Error when showing ${t.chatProvider}:`,e)}n()}else r.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.")}}),f.createElement("div",{className:H({"userflowjs-resource-center-block":!0,"userflowjs-resource-center-block--clickable":1===c.length}),onClick:1===c.length?c[0].onClick:void 0},1===c.length&&f.createElement("div",{className:"userflowjs-resource-center-block-icon"},f.createElement(T,{icon:c[0].icon})),f.createElement(xe,{...e}),c.length>1&&c.map((({icon:e,label:t,onClick:r},s)=>f.createElement("button",{key:s,className:"userflowjs-resource-center-icon-button",onClick:r,"aria-label":t},f.createElement(T,{icon:e})))),1===c.length&&c[0].isRoute&&f.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},f.createElement(T,{icon:q})))}},[e.DIVIDER]:{View:()=>f.createElement("div",{className:"userflowjs-resource-center-divider"})},[e.FLOWS]:{View:e=>{const{block:t,session:r,navigate:s}=e,n=w();return f.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:e=>{Oe(n,r,t),s({kind:"flows",block:t},e)}},f.createElement(Ie,{...e}),f.createElement(xe,{...e}),f.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},f.createElement(T,{icon:q})))},routeTo:({block:e,initialQ:t})=>({kind:"flows",block:e,initialQ:t}),isSearchable:e=>!!e.searchEnabled,search:async({client:e,session:t,block:r,q:s})=>{const{flows:n}=await e.send({kind:"ListResourceCenterBlockFlows",sessionId:t.id,blockCvid:r.cvid},{handlesRejection:!0}),o=Be(n,s),c=o.slice(0,5);return{block:r,truncated:c.length===o.length,results:c.map((e=>({kind:"flow",flow:e})))}}},[e.KNOWLEDGE_BASE]:{View:e=>{const{block:t,session:r,navigate:s}=e,n=w();return f.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:e=>{Oe(n,r,t),s({kind:"knowledgeBase",block:t},e)}},f.createElement(Ie,{...e}),f.createElement(xe,{...e}),f.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},f.createElement(T,{icon:q})))},routeTo:({block:e,initialQ:t})=>({kind:"knowledgeBase",block:e,initialQ:t}),search:async({client:e,session:t,block:r,q:s})=>{const{truncated:n,articles:o}=await e.send({kind:"SearchKnowledgeBase",sessionId:t.id,blockCvid:r.cvid,q:s,offset:0,limit:5},{handlesRejection:!0});return{block:r,truncated:n,results:o.map((e=>({kind:"article",article:e})))}}},[e.MESSAGE]:{View:({block:e,session:t})=>f.createElement("div",{className:"userflowjs-resource-center-block"},f.createElement("div",{className:"userflowjs-resource-center-block-text userflowjs-bubble-content"},f.createElement(j,{doc:e.content,lookupAttribute:x(t.data)})))},[e.SUBPAGE]:{View:e=>{const{block:t,session:r,navigate:s}=e,n=w();return f.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:e=>{Oe(n,r,t),s({kind:"subpage",block:t},e)}},f.createElement(Ie,{...e}),f.createElement(xe,{...e}),f.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},f.createElement(T,{icon:q})))}}},Ie=({block:e})=>e.icon?f.createElement("div",{className:"userflowjs-resource-center-block-icon"},f.createElement(T,{icon:e.icon,size:16})):null,xe=({block:e,session:t})=>f.createElement("div",{className:"userflowjs-resource-center-block-text"},f.createElement(S,{doc:e.name,lookupAttribute:x(t.data)}));const Te=({session:e,navigate:t})=>{const r=w(),s=e.version.resourceCenter.blocks,n=Ne(s),{t:o}=J(),c=f.useRef(null),[a,l]=f.useState(""),[i,u]=ge(a,l),[d,m]=f.useState(null);return f.useEffect((()=>{if(""===a.trim())return void m(null);let t=!1;return(async()=>{m(null);const n=await Promise.all(s.map((async t=>{const{search:s}=_e[t.type];if(!s)return null;try{return await s({client:r,session:e,block:t,q:a})}catch(n){return console.error(`Userflow.js: Global search failed for ${t.type} block=`,t,"error=",n),null}})));t||m(n.filter((e=>null!=e&&e.results.length>0)))})(),()=>{t=!0}}),[r,e,s,a]),f.useEffect((()=>{c.current?.focus({preventScroll:!0})}),[]),f.createElement(f.Fragment,null,f.createElement("div",{className:"userflowjs-resource-center-list-route-search"},f.createElement("input",{ref:c,className:"userflowjs-text-input",type:"text",value:i,onChange:e=>u(e.target.value),placeholder:o("resource_center.search_placeholder")})),""===a.trim()?f.createElement("div",{"data-testid":"resource-center-empty-query",className:"userflowjs-resource-center-list-route-error"},o("resource_center.search_in")," ",n.map(((t,r)=>f.createElement(f.Fragment,{key:t.cvid},r>0&&(r===n.length-1?` ${o("and")} `:", "),f.createElement("b",null,f.createElement(S,{doc:t.name,lookupAttribute:x(e.data)}))))),"."):d?0===d.length?f.createElement("div",{className:"userflowjs-resource-center-list-route-error"},o("resource_center.no_results_found")):d.map((({block:s,truncated:n,results:c},l)=>{const i=_e[s.type],u=i.routeTo&&i.routeTo({block:s,initialQ:a});return f.createElement(f.Fragment,{key:s.cvid},l>0&&f.createElement("div",{className:"userflowjs-resource-center-divider"}),f.createElement("div",{className:"userflowjs-resource-center-label"},f.createElement(S,{doc:s.name,lookupAttribute:x(e.data)})),c.map(((r,n)=>"flow"===r.kind?f.createElement(Le,{key:r.flow.id,block:s,session:e,flow:r.flow,navigate:t}):"article"===r.kind?f.createElement(Pe,{key:n,block:s,session:e,article:r.article}):null)),!n&&u&&f.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:n=>{Oe(r,e,s),t(u,n)}},f.createElement("div",{className:"userflowjs-resource-center-block-text"},o("more"),":"," ",f.createElement(S,{doc:s.name,lookupAttribute:x(e.data)})),f.createElement("div",{className:"userflowjs-resource-center-block-nav-icon"},f.createElement(T,{icon:q}))))})):f.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},f.createElement(pe,null)))},Re=({block:e,session:t})=>f.createElement("div",{className:"userflowjs-resource-center-content-route userflowjs-bubble-content"},f.createElement(j,{doc:e.emailContent,lookupAttribute:x(t.data)})),Ae=({block:e,session:t})=>f.createElement("div",{className:"userflowjs-resource-center-content-route userflowjs-bubble-content"},f.createElement(j,{doc:e.phoneContent,lookupAttribute:x(t.data)})),Me=({block:e,initialQ:t,session:r,navigate:s})=>{const{t:n}=J(),o=f.useRef(null),[c,a]=f.useState(t||""),[l,i]=ge(c,a),{data:u,error:d}=ve({kind:"ListResourceCenterBlockFlows",sessionId:r.id,blockCvid:e.cvid}),m=u?.flows,w=f.useMemo((()=>m?Be(m,c):null),[m,c]);return f.useEffect((()=>{o.current?.focus({preventScroll:!0})}),[]),f.createElement(f.Fragment,null,f.createElement("div",{className:"userflowjs-resource-center-list-route-header"},f.createElement("div",{className:"userflowjs-resource-center-list-route-title"},f.createElement(S,{doc:e.name,lookupAttribute:x(r.data)}))),e.searchEnabled&&f.createElement("div",{className:"userflowjs-resource-center-list-route-search"},f.createElement("input",{ref:o,className:"userflowjs-text-input",type:"text",value:l,onChange:e=>i(e.target.value),placeholder:n("resource_center.search_placeholder")})),d?f.createElement("div",{className:"userflowjs-resource-center-list-route-error"},n("resource_center.generic_error")):w?0===w.length?f.createElement("div",{className:"userflowjs-resource-center-list-route-error"},n("resource_center.no_results_found")):w.map((t=>f.createElement(Le,{key:t.id,block:e,session:r,flow:t,navigate:s}))):f.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},f.createElement(pe,{fadeIn:!0})))};function Be(e,t){const r=t.toLowerCase().trim();return""===r?e:e.filter((e=>e.name.toLowerCase().includes(r)))}const Le=({block:e,session:t,flow:r,navigate:s})=>{const n=w(),[o,c]=f.useState(!1);return f.useEffect((()=>{if(!o||r.type!==u.CHECKLIST)return;const e=()=>{n.checklistSession?.flow.id===r.id&&(t(),s(null))},t=()=>{n.off("checklistChanged",e)};return n.on("checklistChanged",e),t}),[n,o,r.type,r.id,s]),f.createElement("button",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:()=>{if(Oe(n,t,e,r.name),n.checklistSession?.flow.id===r.id)return void s(null);n.startFlow({flowId:r.id,startReason:d.RESOURCE_CENTER,replaceCurrent:!0}),c(!0);const o=C(r.url,{lookupAttribute:x(t.data)});o&&y(o)},disabled:o},f.createElement("div",{className:"userflowjs-resource-center-block-icon"},f.createElement(T,{icon:r.type===u.CHECKLIST?"regular/tasks":"regular/shoe-prints",size:16})),f.createElement("div",{className:"userflowjs-resource-center-block-text"},r.name),o&&f.createElement(pe,null))},He=({block:e,initialQ:t,session:r,bodyRef:s})=>{const{t:n}=J(),o=f.useRef(null),[c,a]=f.useState(t||""),[l,i]=ge(c,a),{loading:u,loadingMore:d,data:m,messageForData:w,error:h,loadMore:b}=ve({kind:"SearchKnowledgeBase",sessionId:r.id,blockCvid:e.cvid,q:c,offset:0}),E=m?.truncated,k=f.useCallback((()=>{b(((e,t)=>({...t,offset:e.articles.length})),((e,t)=>({...t,articles:[...e.articles,...t.articles]})))}),[b]);f.useEffect((()=>{const e=s.current;if(!e||u||d||E)return;const t=()=>{e.scrollHeight-e.clientHeight-e.scrollTop>400||k()};return e.addEventListener("scroll",t),()=>{e.removeEventListener("scroll",t)}}),[s,u,d,E,k]),f.useEffect((()=>{o.current?.focus({preventScroll:!0})}),[]);let p=e.knowledgeBaseUrl||"";return p.match(/^https?:\/\//)||(p=`http://${p}`),f.createElement(f.Fragment,null,f.createElement("div",{className:"userflowjs-resource-center-list-route-header"},f.createElement("div",{className:"userflowjs-resource-center-list-route-title"},f.createElement(S,{doc:e.name,lookupAttribute:x(r.data)})),f.createElement("a",{className:"userflowjs-resource-center-icon-button",href:p,target:"_blank",rel:"noopener noreferrer"},f.createElement(T,{icon:K}))),f.createElement("div",{className:"userflowjs-resource-center-list-route-search"},f.createElement("input",{ref:o,className:"userflowjs-text-input",type:"text",value:l,onChange:e=>i(e.target.value),placeholder:n("resource_center.search_placeholder")})),h?f.createElement("div",{className:"userflowjs-resource-center-list-route-error"},"quota_exceeded"===h.code?"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.":h.humanMessage||n("resource_center.generic_error")):u||!m?f.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},f.createElement(pe,null)):0===m.articles.length?""===w?.q?null:f.createElement("div",{className:"userflowjs-resource-center-list-route-error"},n("resource_center.no_results_found")):f.createElement(f.Fragment,null,""===w?.q&&f.createElement("div",{className:"userflowjs-resource-center-label"},n("resource_center.suggested_articles")),m.articles.map(((t,s)=>f.createElement(Pe,{key:s,block:e,session:r,article:t}))),d&&f.createElement("div",{className:"userflowjs-resource-center-list-route-spinner"},f.createElement(pe,null))))},Pe=({block:e,article:t,session:r})=>{const s=w();return f.createElement("a",{className:"userflowjs-resource-center-block userflowjs-resource-center-block--clickable",onClick:()=>{Oe(s,r,e,t.title)},href:t.url,target:"_blank",rel:"noopener noreferrer"},f.createElement("div",{className:"userflowjs-resource-center-block-icon"},f.createElement(T,{icon:"regular/file-alt",size:16})),f.createElement("div",{className:"userflowjs-resource-center-block-text"},f.createElement("span",{dangerouslySetInnerHTML:{__html:t.htmlTitle}}),f.createElement("div",{className:"userflowjs-resource-center-block-subtext",dangerouslySetInnerHTML:{__html:t.htmlSnippet}})))},We=({block:e,session:t})=>f.createElement("div",{className:"userflowjs-resource-center-content-route userflowjs-bubble-content"},f.createElement(j,{doc:e.content,lookupAttribute:x(t.data)})),Fe=({block:e,initialUserContent:t,session:s,navigate:n})=>{const o=e.assistantFlowId,c=w(),[a,l]=f.useState(null),[i,u]=f.useState(null),[d,m]=f.useState(null),[h]=f.useState(t);return f.useEffect((()=>{t&&n({kind:"assistant",block:e,initialUserContent:""})}),[t,e,n]),f.useEffect((()=>{let e=!1;return(async()=>{try{const t=r.getItem("assistantConversationId:"+o),[s,n]=await Promise.all([Se(),c.send({kind:"GetAssistant",assistantFlowId:o,conversationId:t},{handlesRejection:!0,endBatch:!0})]);if(e)return;l((()=>s)),u(n)}catch(t){console.error("Resource center assistant route failed to load:",t),m(t.humanMessage||"Sorry, something went wrong. Please try again or contact my human friends.")}})(),()=>{e=!0}}),[c,o]),d?f.createElement("div",{className:"userflowjs-assistant-chat"},f.createElement("div",{className:"userflowjs-assistant-chat__content"},f.createElement("div",{className:"userflowjs-assistant-chat__error"},d))):a&&i?f.createElement(a,{block:e,session:s,assistantReply:i,initialUserContent:h}):f.createElement(pe,{center:!0,fadeIn:!0})};function Oe(e,t,r,s){e.send({kind:"ClickResourceCenter",sessionId:t.id,description:r?C(r.name,{lookupAttribute:x(t.data)})+(s?` - ${s}`:""):s},{batch:!0})}var $e=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",ResourceCenterApp:ye,default:ye});export{je as A,Ce as G,$e as R};
@@ -1 +1 @@
1
- import{r as e}from"./vendor.react.js";import{u as t}from"./client-context.js";import{C as s,D as a,E as n}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{p as r}from"./vendor.dompurify.js";import{m as o}from"./vendor.marked.js";import{o as i}from"./vendor.obj-str.js";import{W as l,i as c}from"./userflow.js";import{A as u,G as m}from"./ResourceCenterApp.js";import{r as d,R as f}from"./BubbleToolbar.js";import{D as g}from"./stylesheets.js";import{b as p}from"./flow-condition-types.js";import"./vendor.object-assign.js";import"./vendor.i18next.js";import"./vendor.react-i18next.js";import"./vendor.babel.runtime.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";import"./z-index.js";import"./logomark.js";import"./vendor.react-dom.js";import"./vendor.scheduler.js";import"./ChecklistUI.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./vendor.date-fns.js";const b=[];const h=({assistant:t,lookupAttribute:s,history:a,setInput:n,contentElRef:r,scrolledToTop:o,userContent:l,setUserContent:c,onSubmitMessage:m,supportsFeedback:g,onSubmitRating:p,onSubmitFeedback:b,InsideMessage:h,reset:v,onContentScroll:_,onContentWheel:j,conversationId:E})=>e.createElement("div",{className:"userflowjs-assistant-chat"},e.createElement("div",{className:i({"userflowjs-assistant-chat__header":!0,"userflowjs-assistant-chat__header--content-scrolled":!o})},e.createElement("h2",{className:"userflowjs-assistant-chat__title"},t.title),e.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--default",onClick:v},t.resetText)),e.createElement("div",{ref:r,className:"userflowjs-assistant-chat__content",onScroll:_,onWheel:j},!d(t.intro)&&e.createElement("div",{className:"userflowjs-assistant-chat__intro"},e.createElement(f,{doc:t.intro,lookupAttribute:s})),a.map(((s,a)=>e.createElement(k,{key:a,assistant:t,message:s,supportsFeedback:g,onSubmitRating:p,onSubmitFeedback:b,InsideMessage:h,conversationId:E})))),e.createElement("div",{className:"userflowjs-assistant-chat__prompt"},e.createElement(u,{textareaRef:n,placeholder:(0===a.length?t.promptEmptyPlaceholder:t.promptNonemptyPlaceholder)||"",value:l,onChange:c,onSubmit:()=>m(l)}))),k=({assistant:t,message:r,supportsFeedback:o,onSubmitRating:c,onSubmitFeedback:u,InsideMessage:d,conversationId:f})=>{const p=e.useRef(null),[b,h]=e.useState(""),k=()=>{r.id&&(u({messageId:r.id,feedback:b.trim()}),h(""))};return e.useEffect((()=>{r.rating&&p.current?.focus({preventScroll:!0})}),[r.rating]),e.createElement("div",{className:"userflowjs-assistant-chat__message"},d&&e.createElement(d,{message:r}),e.createElement("div",{className:i({"userflowjs-assistant-chat__user-content":!0,"userflowjs-assistant-chat__user-content--enter":!!r.enterAnimation}),"data-assistant-conversation-id":f,"data-assistant-message-id":r.id},e.createElement("div",{style:{whiteSpace:"pre-wrap"}},r.userContent)),r.warning&&e.createElement("div",{className:"userflowjs-assistant-chat__error"},"Warning: ",r.warning),e.createElement("div",{className:"userflowjs-assistant-chat__assistant-content"},e.createElement("div",null,e.createElement(j,{html:r.assistantHtml})),r.error&&e.createElement("div",{className:"userflowjs-assistant-chat__error"},r.error)),r.sources&&r.sources.length>0&&e.createElement("div",{className:"userflowjs-assistant-chat__sources"},e.createElement("div",{className:"userflowjs-assistant-chat__sources-title"},t.sourcesText),r.sources.map(((t,s)=>e.createElement("a",{key:s,className:"userflowjs-assistant-chat__source",href:t.url,target:"_blank",rel:"noreferrer noopener"},t.title)))),o&&r.completed&&r.id&&e.createElement("div",{className:i({"userflowjs-assistant-chat__feedback":!0,"userflowjs-assistant-chat__feedback--with-textarea":!!r.rating&&!r.feedbackSubmitted})},r.feedbackSubmitted?e.createElement(e.Fragment,null,e.createElement("button",{className:"userflowjs-assistant-chat__rating",disabled:!0},e.createElement(g,{icon:r.rating==l.DISLIKE?s:a})),e.createElement("div",{className:"userflowjs-assistant-chat__feedback-thanks"},t.feedbackThanksText)):r.rating?e.createElement(m,{textareaRef:p,className:"userflowjs-growing-textarea userflowjs-assistant-chat__feedback-textarea",mirrorClassName:"userflowjs-growing-textarea__mirror",textareaClassName:"userflowjs-textarea",placeholder:(r.rating===l.LIKE?t.feedbackLikePlaceholder:t.feedbackDislikePlaceholder)||"",value:b,onChange:h,onKeyDown:e=>{e.shiftKey||"Enter"!==e.key||(e.preventDefault(),k())}},e.createElement("button",{className:"userflowjs-assistant-chat__rating",disabled:!0},e.createElement(g,{icon:r.rating==l.DISLIKE?s:a})),e.createElement("button",{className:"userflowjs-assistant-chat__feedback-submit",onClick:()=>k()},e.createElement(g,{icon:n}))):[l.LIKE,l.DISLIKE].map((t=>(!r.rating||r.rating===t)&&e.createElement("button",{key:t,className:"userflowjs-assistant-chat__rating",onClick:r.rating?void 0:()=>(e=>{r.id&&c({messageId:r.id,rating:e})})(t),disabled:!!r.rating,"data-testid":`assistant-chat-rating-${t}`},e.createElement(g,{icon:t==l.DISLIKE?s:a}))))))};function v(e){let t=e;const s=e=>e=(e=e.replace(/\s*[*_`]*$/,"")).replace(/(^|\n)\s*(\d+\.?|-|=)$/,"");t=s(t),t=t.replace(/\[([^\]\n]*)(\](\([^)\n]*)?)?$/,"$1"),t=s(t);const a=Array.from(t.matchAll(/\n( *)```/g));if(a.length%2==1){t+="\n"+a[a.length-1][1]+"```"}else{let e=0;for(let r=t.length-1;r>=0;r--)if("\n"===t[r]&&"\n"===t[r-1]){e=r;break}const s=[];let a=!1;const n=e=>null==e||e.match(/\W/);for(let r=e;r<t.length;r++){const o=t[r],i=o+t[r+1],l=i+t[r+2];let c=null;if((a||"***"!==l)&&(a||"___"!==l||!n(t[r-1])&&!n(t[r+3]))?(a||"**"!==i)&&(a||"__"!==i||!n(t[r-1])&&!n(t[r+2]))?(a||"*"!==o)&&(a||"_"!==o||!n(t[r-1])&&!n(t[r+1]))?"`"===o&&(c=o):c=o:c=i:c=l,null!=c){!!t.slice(e,r+c.length).match(/\[[^\]\n]*\]\([^)\n]*$/)||(s[s.length-1]===c?("`"===c&&(a=!1),s.pop()):("`"===c&&(a=!0),s.push(c))),r+=c.length-1}}t+=s.reverse().join("")}return t}function _(e,t){e=e.trim(),!1!==t&&(e=e.replace(/(\n *```)?$/," {{USERFLOWCHATBRAIN}}$1"));let s=r.sanitize(o.parse(e));if(!1!==t){let e="userflowjs-assistant-brain";t&&(e+=` userflowjs-assistant-brain--${t}`),s=s.replace("{{USERFLOWCHATBRAIN}}",`<span class="${e}"><span></span><span></span><span></span><span></span></span>`)}return s=s.replace(/<a href=/g,'<a target="_blank" rel="noopener noreferrer" href='),s}const j=({html:t})=>e.useMemo((()=>{if(!t)return null;return E((new DOMParser).parseFromString(t,"text/html").body)}),[t]);function E(t,s){if(t instanceof Element){if("BODY"===t.tagName)return e.createElement(e.Fragment,{key:s},w(t));{if(["script","style"].includes(t.tagName))return null;const a={key:s};for(const e of t.attributes){let t=e.name;t.startsWith("on")||("class"===t&&(t="className"),a[t]=e.value)}return e.createElement(t.tagName.toLowerCase(),a,w(t))}}return t instanceof Text?t.textContent:null}function w(e){const t=[];let s=0;for(const a of e.childNodes)t.push(E(a,s)),s++;return t}const C=({block:s,session:a,assistantReply:n,initialUserContent:r})=>{const o=s.assistantFlowId,i=t(),l=function({assistant:t,lookupAttribute:s,initialConversationId:a,initialHistory:n,initialUserContent:r,onConversationIdChange:o,submitMessage:i,submitRating:l,submitFeedback:c,InsideMessage:u}){const[m,d]=e.useState(null),[f,g]=e.useState((()=>n?n.map((e=>({...e,assistantHtml:_(v(e.assistantContent),!1)}))):b)),[p,h]=e.useState(""),k=e.useRef(null),j=e.useRef(null),E=e.useRef(!0),w=e.useRef(a||null),[C,I]=e.useState(w.current),S=e.useCallback((e=>{w.current=e,I(e),o&&o(e)}),[o]),y=e.useCallback((()=>{m?.focus({preventScroll:!0})}),[m]);e.useEffect((()=>{y()}),[y]),e.useLayoutEffect((()=>{const e=j.current;e&&(e.scrollTop=Math.ceil(e.scrollHeight-e.clientHeight))}),[]);const N=e.useCallback((()=>{const e=j.current;e&&(E.current=!0,"function"==typeof e.scrollTo&&e.scrollTo({top:Math.ceil(e.scrollHeight-e.clientHeight),behavior:"smooth"}))}),[]),R=e.useRef(0);e.useLayoutEffect((()=>{const e=j.current;e&&e.scrollHeight!==R.current&&(R.current=e.scrollHeight,E.current&&N())}),[f,N]);const M=e.useCallback((()=>{k.current&&k.current()}),[]);e.useEffect((()=>()=>{M()}),[M]);const x=(e,t)=>{g((s=>s.map((s=>{if(e===s.id){const e=t(s);return{...s,...e}}return s}))))},A=e=>{g((t=>t.map(((s,a)=>{if(a===t.length-1){const t=e(s);return{...s,...t}}return s}))))},F=e.useCallback((async e=>{if(""===(e=e.trim()))return;M(),g((t=>[...t,{id:null,userContent:e,assistantContent:"",assistantHtml:_("","enter"),enterAnimation:!0,sources:[],completed:!1,rating:null,feedbackSubmitted:!1}])),h(""),N();let t=!1;const s=()=>{t=!0,k.current=null},a=i({conversationId:w.current,userContent:e,callback:e=>{if(t)console.log("Userflow.js AssistantChat got message after being done",e);else switch(e.kind){case"conversation_created":S(e.conversationId);break;case"message_created":A((()=>({id:e.messageId,warning:e.warning})));break;case"assistant_content_delta":A((t=>{const s=e.delta,a=t.assistantContent+s;return{assistantContent:a,assistantHtml:_(v(a))}}));break;case"done":s(),A((t=>({assistantHtml:_(t.assistantContent,"exit"),completed:!0,sources:e.sources})));break;case"error":s(),A((t=>({failed:!0,error:e.message,assistantHtml:_(v(t.assistantContent),!1)})));break;default:console.log("Userflow.js AssistantChat got unknown message",e)}}});k.current=()=>{s(),a.abort(),A((e=>({assistantHtml:_(v(e.assistantContent),!1)})))}}),[M,N,i,S]),H=e.useRef(!1);e.useEffect((()=>{H.current||(H.current=!0,r&&F(r))}),[F,r]);const T=e.useCallback((()=>{M(),S(null),g(b),y()}),[M,y,S]),[L,D]=e.useState(!0),U=e.useCallback((()=>{const e=j.current;e&&D(0===e.scrollTop)}),[]),$=e.useCallback((()=>{const e=j.current;e&&(E.current=Math.ceil(e.scrollHeight-e.clientHeight)==Math.ceil(e.scrollTop))}),[]);return{assistant:t,lookupAttribute:s,history:f,setInput:d,contentElRef:j,scrolledToTop:L,userContent:p,setUserContent:h,onSubmitMessage:F,supportsFeedback:!!l&&!!c,onSubmitRating:e=>{l&&(x(e.messageId,(()=>({rating:e.rating}))),l(e))},onSubmitFeedback:e=>{c&&(x(e.messageId,(()=>({feedbackSubmitted:!0}))),c(e))},InsideMessage:u,reset:T,onContentScroll:U,onContentWheel:$,conversationId:C}}(e.useMemo((()=>({assistant:n.assistant,lookupAttribute:p(a.data),initialConversationId:n.conversationId,initialHistory:n.history,initialUserContent:r,onConversationIdChange:e=>{const t="assistantConversationId:"+o;e?c.setItem(t,e):c.removeItem(t)},submitMessage:({conversationId:e,userContent:t,callback:s})=>{i.assistantMessageInProgress=!0;const a=i.nextRef();i.send({kind:"SubmitAssistantMessage",ref:a,assistantFlowId:o,conversationId:e,userContent:t}).catch((e=>{s({kind:"error",message:e.humanMessage||"I'm sorry, but something went wrong. Please try again."})}));const n=()=>{i.assistantMessageInProgress=void 0,i.off("private:assistantMessageEvent",r),i.off("private:disconnect",l)},r=e=>{if(e.ref!==a)return;const{event:t}=e;s(t),"done"!=t.kind&&"error"!=t.kind||n()},l=()=>{s({kind:"error",message:"Sorry, my connection got disconnected. Please try again or contact my human friends."}),n()};return i.on("private:assistantMessageEvent",r),i.on("private:disconnect",l),{abort:()=>{i.send({kind:"AbortAssistantMessage"}),n()}}},submitRating:e=>{i.send({kind:"SubmitAssistantRating",messageId:e.messageId,rating:e.rating})},submitFeedback:e=>{i.send({kind:"SubmitAssistantFeedback",messageId:e.messageId,feedback:e.feedback})}})),[n,o,i,r,a.data]));return e.createElement(e.Fragment,null,e.createElement(h,{...l}))};export{C as ResourceCenterAssistantChat};
1
+ import{r as e}from"./vendor.react.js";import{u as t}from"./client-context.js";import{C as s,D as a,E as n}from"./vendor.fortawesome.pro-regular-svg-icons.js";import{p as r}from"./vendor.dompurify.js";import{m as o}from"./vendor.marked.js";import{o as i}from"./vendor.obj-str.js";import{Y as l,i as c}from"./userflow.js";import{A as u,G as m}from"./ResourceCenterApp.js";import{r as d,R as f}from"./bubble-frame.styl.js";import{D as g}from"./stylesheets.js";import{b}from"./flow-condition-types.js";import"./vendor.object-assign.js";import"./vendor.i18next.js";import"./vendor.react-i18next.js";import"./vendor.babel.runtime.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";import"./flow-host.styl.js";import"./use-window-resize.js";import"./vendor.react-dom.js";import"./vendor.scheduler.js";import"./logomark.js";import"./ChecklistUI.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./BubbleToolbar.js";import"./vendor.date-fns.js";const p=[];const h=({assistant:t,lookupAttribute:s,history:a,setInput:n,contentElRef:r,scrolledToTop:o,userContent:l,setUserContent:c,onSubmitMessage:m,supportsFeedback:g,onSubmitRating:b,onSubmitFeedback:p,InsideMessage:h,reset:v,onContentScroll:j,onContentWheel:_,conversationId:E})=>e.createElement("div",{className:"userflowjs-assistant-chat"},e.createElement("div",{className:i({"userflowjs-assistant-chat__header":!0,"userflowjs-assistant-chat__header--content-scrolled":!o})},e.createElement("h2",{className:"userflowjs-assistant-chat__title"},t.title),e.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--default",onClick:v},t.resetText)),e.createElement("div",{ref:r,className:"userflowjs-assistant-chat__content",onScroll:j,onWheel:_},!d(t.intro)&&e.createElement("div",{className:"userflowjs-assistant-chat__intro"},e.createElement(f,{doc:t.intro,lookupAttribute:s})),a.map(((s,a)=>e.createElement(k,{key:a,assistant:t,message:s,supportsFeedback:g,onSubmitRating:b,onSubmitFeedback:p,InsideMessage:h,conversationId:E})))),e.createElement("div",{className:"userflowjs-assistant-chat__prompt"},e.createElement(u,{textareaRef:n,placeholder:(0===a.length?t.promptEmptyPlaceholder:t.promptNonemptyPlaceholder)||"",value:l,onChange:c,onSubmit:()=>m(l)}))),k=({assistant:t,message:r,supportsFeedback:o,onSubmitRating:c,onSubmitFeedback:u,InsideMessage:d,conversationId:f})=>{const b=e.useRef(null),[p,h]=e.useState(""),k=()=>{r.id&&(u({messageId:r.id,feedback:p.trim()}),h(""))};return e.useEffect((()=>{r.rating&&b.current?.focus({preventScroll:!0})}),[r.rating]),e.createElement("div",{className:"userflowjs-assistant-chat__message"},d&&e.createElement(d,{message:r}),e.createElement("div",{className:i({"userflowjs-assistant-chat__user-content":!0,"userflowjs-assistant-chat__user-content--enter":!!r.enterAnimation}),"data-assistant-conversation-id":f,"data-assistant-message-id":r.id},e.createElement("div",{style:{whiteSpace:"pre-wrap"}},r.userContent)),r.warning&&e.createElement("div",{className:"userflowjs-assistant-chat__error"},"Warning: ",r.warning),e.createElement("div",{className:"userflowjs-assistant-chat__assistant-content"},e.createElement("div",null,e.createElement(_,{html:r.assistantHtml})),r.error&&e.createElement("div",{className:"userflowjs-assistant-chat__error"},r.error)),r.sources&&r.sources.length>0&&e.createElement("div",{className:"userflowjs-assistant-chat__sources"},e.createElement("div",{className:"userflowjs-assistant-chat__sources-title"},t.sourcesText),r.sources.map(((t,s)=>e.createElement("a",{key:s,className:"userflowjs-assistant-chat__source",href:t.url,target:"_blank",rel:"noreferrer noopener"},t.title)))),o&&r.completed&&r.id&&e.createElement("div",{className:i({"userflowjs-assistant-chat__feedback":!0,"userflowjs-assistant-chat__feedback--with-textarea":!!r.rating&&!r.feedbackSubmitted})},r.feedbackSubmitted?e.createElement(e.Fragment,null,e.createElement("button",{className:"userflowjs-assistant-chat__rating",disabled:!0},e.createElement(g,{icon:r.rating==l.DISLIKE?s:a})),e.createElement("div",{className:"userflowjs-assistant-chat__feedback-thanks"},t.feedbackThanksText)):r.rating?e.createElement(m,{textareaRef:b,className:"userflowjs-growing-textarea userflowjs-assistant-chat__feedback-textarea",mirrorClassName:"userflowjs-growing-textarea__mirror",textareaClassName:"userflowjs-textarea",placeholder:(r.rating===l.LIKE?t.feedbackLikePlaceholder:t.feedbackDislikePlaceholder)||"",value:p,onChange:h,onKeyDown:e=>{e.shiftKey||"Enter"!==e.key||(e.preventDefault(),k())}},e.createElement("button",{className:"userflowjs-assistant-chat__rating",disabled:!0},e.createElement(g,{icon:r.rating==l.DISLIKE?s:a})),e.createElement("button",{className:"userflowjs-assistant-chat__feedback-submit",onClick:()=>k()},e.createElement(g,{icon:n}))):[l.LIKE,l.DISLIKE].map((t=>(!r.rating||r.rating===t)&&e.createElement("button",{key:t,className:"userflowjs-assistant-chat__rating",onClick:r.rating?void 0:()=>(e=>{r.id&&c({messageId:r.id,rating:e})})(t),disabled:!!r.rating,"data-testid":`assistant-chat-rating-${t}`},e.createElement(g,{icon:t==l.DISLIKE?s:a}))))))};function v(e){let t=e;const s=e=>e=(e=e.replace(/\s*[*_`]*$/,"")).replace(/(^|\n)\s*(\d+\.?|-|=)$/,"");t=s(t),t=t.replace(/\[([^\]\n]*)(\](\([^)\n]*)?)?$/,"$1"),t=s(t);const a=Array.from(t.matchAll(/\n( *)```/g));if(a.length%2==1){t+="\n"+a[a.length-1][1]+"```"}else{let e=0;for(let r=t.length-1;r>=0;r--)if("\n"===t[r]&&"\n"===t[r-1]){e=r;break}const s=[];let a=!1;const n=e=>null==e||e.match(/\W/);for(let r=e;r<t.length;r++){const o=t[r],i=o+t[r+1],l=i+t[r+2];let c=null;if((a||"***"!==l)&&(a||"___"!==l||!n(t[r-1])&&!n(t[r+3]))?(a||"**"!==i)&&(a||"__"!==i||!n(t[r-1])&&!n(t[r+2]))?(a||"*"!==o)&&(a||"_"!==o||!n(t[r-1])&&!n(t[r+1]))?"`"===o&&(c=o):c=o:c=i:c=l,null!=c){!!t.slice(e,r+c.length).match(/\[[^\]\n]*\]\([^)\n]*$/)||(s[s.length-1]===c?("`"===c&&(a=!1),s.pop()):("`"===c&&(a=!0),s.push(c))),r+=c.length-1}}t+=s.reverse().join("")}return t}function j(e,t){e=e.trim(),!1!==t&&(e=e.replace(/(\n *```)?$/," {{USERFLOWCHATBRAIN}}$1"));let s=r.sanitize(o.parse(e));if(!1!==t){let e="userflowjs-assistant-brain";t&&(e+=` userflowjs-assistant-brain--${t}`),s=s.replace("{{USERFLOWCHATBRAIN}}",`<span class="${e}"><span></span><span></span><span></span><span></span></span>`)}return s=s.replace(/<a href=/g,'<a target="_blank" rel="noopener noreferrer" href='),s}const _=({html:t})=>e.useMemo((()=>{if(!t)return null;return E((new DOMParser).parseFromString(t,"text/html").body)}),[t]);function E(t,s){if(t instanceof Element){if("BODY"===t.tagName)return e.createElement(e.Fragment,{key:s},w(t));{if(["script","style"].includes(t.tagName))return null;const a={key:s};for(const e of t.attributes){let t=e.name;t.startsWith("on")||("class"===t&&(t="className"),a[t]=e.value)}return e.createElement(t.tagName.toLowerCase(),a,w(t))}}return t instanceof Text?t.textContent:null}function w(e){const t=[];let s=0;for(const a of e.childNodes)t.push(E(a,s)),s++;return t}const C=({block:s,session:a,assistantReply:n,initialUserContent:r})=>{const o=s.assistantFlowId,i=t(),l=function({assistant:t,lookupAttribute:s,initialConversationId:a,initialHistory:n,initialUserContent:r,onConversationIdChange:o,submitMessage:i,submitRating:l,submitFeedback:c,InsideMessage:u}){const[m,d]=e.useState(null),[f,g]=e.useState((()=>n?n.map((e=>({...e,assistantHtml:j(v(e.assistantContent),!1)}))):p)),[b,h]=e.useState(""),k=e.useRef(null),_=e.useRef(null),E=e.useRef(!0),w=e.useRef(a||null),[C,I]=e.useState(w.current),S=e.useCallback((e=>{w.current=e,I(e),o&&o(e)}),[o]),y=e.useCallback((()=>{m?.focus({preventScroll:!0})}),[m]);e.useEffect((()=>{y()}),[y]),e.useLayoutEffect((()=>{const e=_.current;e&&(e.scrollTop=Math.ceil(e.scrollHeight-e.clientHeight))}),[]);const N=e.useCallback((()=>{const e=_.current;e&&(E.current=!0,"function"==typeof e.scrollTo&&e.scrollTo({top:Math.ceil(e.scrollHeight-e.clientHeight),behavior:"smooth"}))}),[]),R=e.useRef(0);e.useLayoutEffect((()=>{const e=_.current;e&&e.scrollHeight!==R.current&&(R.current=e.scrollHeight,E.current&&N())}),[f,N]);const M=e.useCallback((()=>{k.current&&k.current()}),[]);e.useEffect((()=>()=>{M()}),[M]);const A=(e,t)=>{g((s=>s.map((s=>{if(e===s.id){const e=t(s);return{...s,...e}}return s}))))},x=e=>{g((t=>t.map(((s,a)=>{if(a===t.length-1){const t=e(s);return{...s,...t}}return s}))))},F=e.useCallback((async e=>{if(""===(e=e.trim()))return;M(),g((t=>[...t,{id:null,userContent:e,assistantContent:"",assistantHtml:j("","enter"),enterAnimation:!0,sources:[],completed:!1,rating:null,feedbackSubmitted:!1}])),h(""),N();let t=!1;const s=()=>{t=!0,k.current=null},a=i({conversationId:w.current,userContent:e,callback:e=>{if(t)console.log("Userflow.js AssistantChat got message after being done",e);else switch(e.kind){case"conversation_created":S(e.conversationId);break;case"message_created":x((()=>({id:e.messageId,warning:e.warning})));break;case"assistant_content_delta":x((t=>{const s=e.delta,a=t.assistantContent+s;return{assistantContent:a,assistantHtml:j(v(a))}}));break;case"done":s(),x((t=>({assistantHtml:j(t.assistantContent,"exit"),completed:!0,sources:e.sources})));break;case"error":s(),x((t=>({failed:!0,error:e.message,assistantHtml:j(v(t.assistantContent),!1)})));break;default:console.log("Userflow.js AssistantChat got unknown message",e)}}});k.current=()=>{s(),a.abort(),x((e=>({assistantHtml:j(v(e.assistantContent),!1)})))}}),[M,N,i,S]),H=e.useRef(!1);e.useEffect((()=>{H.current||(H.current=!0,r&&F(r))}),[F,r]);const T=e.useCallback((()=>{M(),S(null),g(p),y()}),[M,y,S]),[L,D]=e.useState(!0),U=e.useCallback((()=>{const e=_.current;e&&D(0===e.scrollTop)}),[]),$=e.useCallback((()=>{const e=_.current;e&&(E.current=Math.ceil(e.scrollHeight-e.clientHeight)==Math.ceil(e.scrollTop))}),[]);return{assistant:t,lookupAttribute:s,history:f,setInput:d,contentElRef:_,scrolledToTop:L,userContent:b,setUserContent:h,onSubmitMessage:F,supportsFeedback:!!l&&!!c,onSubmitRating:e=>{l&&(A(e.messageId,(()=>({rating:e.rating}))),l(e))},onSubmitFeedback:e=>{c&&(A(e.messageId,(()=>({feedbackSubmitted:!0}))),c(e))},InsideMessage:u,reset:T,onContentScroll:U,onContentWheel:$,conversationId:C}}(e.useMemo((()=>({assistant:n.assistant,lookupAttribute:b(a.data),initialConversationId:n.conversationId,initialHistory:n.history,initialUserContent:r,onConversationIdChange:e=>{const t="assistantConversationId:"+o;e?c.setItem(t,e):c.removeItem(t)},submitMessage:({conversationId:e,userContent:t,callback:s})=>{i.assistantMessageInProgress=!0;const a=i.nextRef();i.send({kind:"SubmitAssistantMessage",ref:a,assistantFlowId:o,conversationId:e,userContent:t}).catch((e=>{s({kind:"error",message:e.humanMessage||"I'm sorry, but something went wrong. Please try again."})}));const n=()=>{i.assistantMessageInProgress=void 0,i.off("private:assistantMessageEvent",r),i.off("private:disconnect",l)},r=e=>{if(e.ref!==a)return;const{event:t}=e;s(t),"done"!=t.kind&&"error"!=t.kind||n()},l=()=>{s({kind:"error",message:"Sorry, my connection got disconnected. Please try again or contact my human friends."}),n()};return i.on("private:assistantMessageEvent",r),i.on("private:disconnect",l),{abort:()=>{i.send({kind:"AbortAssistantMessage"}),n()}}},submitRating:e=>{i.send({kind:"SubmitAssistantRating",messageId:e.messageId,rating:e.rating})},submitFeedback:e=>{i.send({kind:"SubmitAssistantFeedback",messageId:e.messageId,feedback:e.feedback})}})),[n,o,i,r,a.data]));return e.createElement(e.Fragment,null,e.createElement(h,{...l}))};export{C as ResourceCenterAssistantChat};
@@ -1 +1 @@
1
- import{r as e}from"./vendor.react.js";import{u as t}from"./client-context.js";import{B as r}from"./BuilderBar.js";import{c as o}from"./flow-condition-types.js";import{x as s}from"./userflow.js";import"./vendor.object-assign.js";import"./vendor.i18next.js";import"./vendor.react-i18next.js";import"./vendor.babel.runtime.js";import"./logomark.js";import"./vendor.react-dom.js";import"./vendor.scheduler.js";import"./stylesheets.js";import"./vendor.fortawesome.pro-regular-svg-icons.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./vendor.obj-str.js";import"./vendor.fortawesome.pro-light-svg-icons.js";import"./vendor.date-fns.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";const n=({state:n})=>{const i=t(),[a,c]=e.useState("notIdentified");e.useEffect((()=>{let e,t,r=!1;const a=async()=>{c("trackerLoading");const{tracker:e}=await i.send({kind:"GetTrackerForTesting",token:n.token});if(r)return;const{condition:a}=e,d=o[a.type];let l=!1;t=d.track({sessionData:new s(e.data),condition:a,flipBackEvents:!0,callback:e=>{const t=l;l=e,!t&&e&&i.setSessionStorageState((e=>({...e,trackerTesting:{...e.trackerTesting,events:e.trackerTesting.events+1}})))}}),c("trackerLoaded")};return e=()=>{i.off("private:identified",e),a()},i.isIdentified()?e():i.on("private:identified",e),()=>{r=!0,e&&i.off("private:identified",e),t&&t()}}),[i,n.token]);const d=e.useCallback((async()=>{i.setSessionStorageState((e=>({...e,activeApp:null,trackerTesting:null}))),i.getTargetEnv().postBuilderMessage({kind:"userflow:testTrackerClosed"})}),[i]);return e.createElement(r,{buttons:e.createElement("button",{className:"btn btn--default",onClick:()=>d()},"Back to Builder")},e.createElement("div",null,e.createElement("div",{className:"label"},"Testing tracker: ",n.trackerName),"notIdentified"===a?e.createElement("div",null,"Waiting for your app to identify user..."):"trackerLoading"===a?e.createElement("div",null,"Loading tracker..."):0===n.events?e.createElement("div",{className:"error"},"Not tracked yet"):e.createElement("div",{className:"success"},"Tracked ",n.events," time",1===n.events?"":"s")))};export default n;export{n as TrackerTestingApp};
1
+ import{r as e}from"./vendor.react.js";import{u as t}from"./client-context.js";import{B as r}from"./BuilderBar.js";import{c as o}from"./flow-condition-types.js";import{x as s}from"./userflow.js";import"./vendor.object-assign.js";import"./vendor.i18next.js";import"./vendor.react-i18next.js";import"./vendor.babel.runtime.js";import"./use-window-resize.js";import"./vendor.react-dom.js";import"./vendor.scheduler.js";import"./stylesheets.js";import"./vendor.fortawesome.pro-regular-svg-icons.js";import"./vendor.fortawesome.pro-solid-svg-icons.js";import"./logomark.js";import"./vendor.obj-str.js";import"./vendor.fortawesome.pro-light-svg-icons.js";import"./vendor.date-fns.js";import"./vendor.phoenix.js";import"./vendor.uuid.js";const n=({state:n})=>{const i=t(),[a,c]=e.useState("notIdentified");e.useEffect((()=>{let e,t,r=!1;const a=async()=>{c("trackerLoading");const{tracker:e}=await i.send({kind:"GetTrackerForTesting",token:n.token});if(r)return;const{condition:a}=e,d=o[a.type];let l=!1;t=d.track({sessionData:new s(e.data),condition:a,flipBackEvents:!0,callback:e=>{const t=l;l=e,!t&&e&&i.setSessionStorageState((e=>({...e,trackerTesting:{...e.trackerTesting,events:e.trackerTesting.events+1}})))}}),c("trackerLoaded")};return e=()=>{i.off("private:identified",e),a()},i.isIdentified()?e():i.on("private:identified",e),()=>{r=!0,e&&i.off("private:identified",e),t&&t()}}),[i,n.token]);const d=e.useCallback((async()=>{i.setSessionStorageState((e=>({...e,activeApp:null,trackerTesting:null}))),i.getTargetEnv().postBuilderMessage({kind:"userflow:testTrackerClosed"})}),[i]);return e.createElement(r,{buttons:e.createElement("button",{className:"btn btn--default",onClick:()=>d()},"Back to Builder")},e.createElement("div",null,e.createElement("div",{className:"label"},"Testing tracker: ",n.trackerName),"notIdentified"===a?e.createElement("div",null,"Waiting for your app to identify user..."):"trackerLoading"===a?e.createElement("div",null,"Loading tracker..."):0===n.events?e.createElement("div",{className:"error"},"Not tracked yet"):e.createElement("div",{className:"success"},"Tracked ",n.events," time",1===n.events?"":"s")))};export default n;export{n as TrackerTestingApp};
package/Trigger.js CHANGED
@@ -1 +1 @@
1
- import{r}from"./vendor.react.js";import{e as t,u as o,h as e}from"./BubbleToolbar.js";import{u as s}from"./client-context.js";const n=({trigger:n})=>{const a=s(),c=t(),u=r.useRef(!1),i=o(n.condition);return r.useLayoutEffect((()=>{i&&!u.current&&(u.current=!0,e(a,c,n.actions))}),[i,u,a,c,n.actions]),null};export{n as T};
1
+ import{r as t}from"./vendor.react.js";import{e as r,u as e,h as o}from"./bubble-frame.styl.js";import{u as s}from"./client-context.js";const n=({trigger:n})=>{const a=s(),c=r(),u=t.useRef(!1),i=e(n.condition);return t.useLayoutEffect((()=>{i&&!u.current&&(u.current=!0,o(a,c,n.actions))}),[i,u,a,c,n.actions]),null};export{n as T};
package/bubble-frame.css CHANGED
@@ -296,8 +296,11 @@
296
296
  .userflowjs-bubble-toolbar-button,
297
297
  .userflowjs-bubble-button--primary,
298
298
  .userflowjs-bubble-button--default,
299
+ .userflowjs-bubble-button--banner-primary,
300
+ .userflowjs-bubble-button--banner-secondary,
299
301
  .userflowjs-bubble-section-button,
300
302
  .userflowjs-bubble-dismiss-button,
303
+ .userflowjs-banner-close,
301
304
  .userflowjs-resource-center-launcher-button,
302
305
  .userflowjs-resource-center-preview-button,
303
306
  .userflowjs-assistant-chat__rating,
@@ -314,8 +317,11 @@
314
317
  .userflowjs-bubble-toolbar-button:not(:disabled),
315
318
  .userflowjs-bubble-button--primary:not(:disabled),
316
319
  .userflowjs-bubble-button--default:not(:disabled),
320
+ .userflowjs-bubble-button--banner-primary:not(:disabled),
321
+ .userflowjs-bubble-button--banner-secondary:not(:disabled),
317
322
  .userflowjs-bubble-section-button:not(:disabled),
318
323
  .userflowjs-bubble-dismiss-button:not(:disabled),
324
+ .userflowjs-banner-close:not(:disabled),
319
325
  .userflowjs-resource-center-launcher-button:not(:disabled),
320
326
  .userflowjs-resource-center-preview-button:not(:disabled),
321
327
  .userflowjs-assistant-chat__rating:not(:disabled),
@@ -327,8 +333,11 @@
327
333
  .userflowjs-bubble-toolbar-button,
328
334
  .userflowjs-bubble-button--primary,
329
335
  .userflowjs-bubble-button--default,
336
+ .userflowjs-bubble-button--banner-primary,
337
+ .userflowjs-bubble-button--banner-secondary,
330
338
  .userflowjs-bubble-section-button,
331
339
  .userflowjs-bubble-dismiss-button,
340
+ .userflowjs-banner-close,
332
341
  .userflowjs-assistant-chat__rating,
333
342
  .userflowjs-assistant-chat__feedback-submit,
334
343
  .userflowjs-assistant-chat-input__submit {
@@ -351,8 +360,11 @@
351
360
  .userflowjs-bubble-toolbar-button::-moz-focus-inner,
352
361
  .userflowjs-bubble-button--primary::-moz-focus-inner,
353
362
  .userflowjs-bubble-button--default::-moz-focus-inner,
363
+ .userflowjs-bubble-button--banner-primary::-moz-focus-inner,
364
+ .userflowjs-bubble-button--banner-secondary::-moz-focus-inner,
354
365
  .userflowjs-bubble-section-button::-moz-focus-inner,
355
366
  .userflowjs-bubble-dismiss-button::-moz-focus-inner,
367
+ .userflowjs-banner-close::-moz-focus-inner,
356
368
  .userflowjs-assistant-chat__rating::-moz-focus-inner,
357
369
  .userflowjs-assistant-chat__feedback-submit::-moz-focus-inner,
358
370
  .userflowjs-assistant-chat-input__submit::-moz-focus-inner {
@@ -362,8 +374,11 @@
362
374
  .userflowjs-bubble-toolbar-button:focus-visible,
363
375
  .userflowjs-bubble-button--primary:focus-visible,
364
376
  .userflowjs-bubble-button--default:focus-visible,
377
+ .userflowjs-bubble-button--banner-primary:focus-visible,
378
+ .userflowjs-bubble-button--banner-secondary:focus-visible,
365
379
  .userflowjs-bubble-section-button:focus-visible,
366
380
  .userflowjs-bubble-dismiss-button:focus-visible,
381
+ .userflowjs-banner-close:focus-visible,
367
382
  .userflowjs-assistant-chat__rating:focus-visible,
368
383
  .userflowjs-assistant-chat__feedback-submit:focus-visible,
369
384
  .userflowjs-assistant-chat-input__submit:focus-visible {
@@ -373,8 +388,11 @@
373
388
  .userflowjs-bubble-toolbar-button > svg,
374
389
  .userflowjs-bubble-button--primary > svg,
375
390
  .userflowjs-bubble-button--default > svg,
391
+ .userflowjs-bubble-button--banner-primary > svg,
392
+ .userflowjs-bubble-button--banner-secondary > svg,
376
393
  .userflowjs-bubble-section-button > svg,
377
394
  .userflowjs-bubble-dismiss-button > svg,
395
+ .userflowjs-banner-close > svg,
378
396
  .userflowjs-assistant-chat__rating > svg,
379
397
  .userflowjs-assistant-chat__feedback-submit > svg,
380
398
  .userflowjs-assistant-chat-input__submit > svg {
@@ -519,7 +537,9 @@
519
537
  align-items: center;
520
538
  }
521
539
  .userflowjs-bubble-button--primary,
522
- .userflowjs-bubble-button--default {
540
+ .userflowjs-bubble-button--default,
541
+ .userflowjs-bubble-button--banner-primary,
542
+ .userflowjs-bubble-button--banner-secondary {
523
543
  font-family: var(--userflow-font-family);
524
544
  font-size: var(--userflow-font-size, 16px);
525
545
  border-radius: var(--userflow-button-border-radius);
@@ -529,7 +549,9 @@
529
549
  max-width: 100%;
530
550
  }
531
551
  .userflowjs-bubble-button--primary:disabled,
532
- .userflowjs-bubble-button--default:disabled {
552
+ .userflowjs-bubble-button--default:disabled,
553
+ .userflowjs-bubble-button--banner-primary:disabled,
554
+ .userflowjs-bubble-button--banner-secondary:disabled {
533
555
  background-color: #f4f8fb;
534
556
  border-color: #c3d5e0;
535
557
  color: #c3d5e0;
@@ -570,6 +592,39 @@
570
592
  background-color: var(--userflow-default-button-active-background-color);
571
593
  color: var(--userflow-default-button-active-font-color);
572
594
  }
595
+ .userflowjs-bubble-button--banner-primary,
596
+ .userflowjs-bubble-button--banner-secondary {
597
+ min-width: 0;
598
+ padding-left: 0.75rem;
599
+ padding-right: 0.75rem;
600
+ }
601
+ .userflowjs-bubble-button--banner-primary {
602
+ background-color: var(--userflow-banner-foreground-color);
603
+ color: var(--userflow-banner-background-color);
604
+ border: 0;
605
+ padding-top: calc((var(--userflow-button-height) - var(--userflow-line-height)) / 2);
606
+ padding-bottom: calc((var(--userflow-button-height) - var(--userflow-line-height)) / 2);
607
+ }
608
+ .userflowjs-bubble-button--banner-primary:not(:disabled):hover {
609
+ background-color: var(--userflow-banner-hover-foreground-color);
610
+ }
611
+ .userflowjs-bubble-button--banner-primary:not(:disabled):active:not(.userflowjs-bubble-button--no-active) {
612
+ background-color: var(--userflow-banner-active-foreground-color);
613
+ }
614
+ .userflowjs-bubble-button--banner-secondary {
615
+ min-width: none;
616
+ background-color: var(--userflow-banner-background-color);
617
+ color: var(--userflow-banner-foreground-color);
618
+ border: 1px solid var(--userflow-banner-foreground-color);
619
+ padding-top: calc((var(--userflow-button-height) - var(--userflow-line-height)) / 2 - 1px);
620
+ padding-bottom: calc((var(--userflow-button-height) - var(--userflow-line-height)) / 2 - 1px);
621
+ }
622
+ .userflowjs-bubble-button--banner-secondary:not(:disabled):hover {
623
+ background-color: var(--userflow-banner-hover-background-color);
624
+ }
625
+ .userflowjs-bubble-button--banner-secondary:not(:disabled):active:not(.userflowjs-bubble-button--no-active) {
626
+ background-color: var(--userflow-banner-active-background-color);
627
+ }
573
628
  .userflowjs-bubble-button--hidden {
574
629
  display: none;
575
630
  }
@@ -1256,6 +1311,93 @@
1256
1311
  color: var(--userflow-link-color);
1257
1312
  font-weight: var(--userflow-font-weight-bold);
1258
1313
  }
1314
+ .userflowjs-banner-root {
1315
+ position: relative;
1316
+ background: var(--userflow-banner-background-color);
1317
+ color: var(--userflow-banner-foreground-color);
1318
+ padding: 0.5rem;
1319
+ display: flex;
1320
+ align-items: center;
1321
+ justify-content: space-between;
1322
+ }
1323
+ .userflowjs-banner-root--content-layout-START .userflowjs-banner-inner {
1324
+ justify-content: start;
1325
+ }
1326
+ .userflowjs-banner-root--content-layout-CENTER .userflowjs-banner-inner {
1327
+ justify-content: center;
1328
+ }
1329
+ .userflowjs-banner-root--content-layout-SPACE_BETWEEN .userflowjs-banner-inner {
1330
+ justify-content: start;
1331
+ }
1332
+ .userflowjs-banner-root--content-layout-SPACE_BETWEEN .userflowjs-banner-content {
1333
+ min-width: 0;
1334
+ flex: 1 1 0%;
1335
+ }
1336
+ .userflowjs-banner-inner {
1337
+ min-width: 0;
1338
+ flex: 1000000 1 0%;
1339
+ display: flex;
1340
+ align-items: center;
1341
+ margin: 0 0.5rem;
1342
+ }
1343
+ .userflowjs-banner-content {
1344
+ white-space: pre-wrap;
1345
+ overflow-wrap: break-word;
1346
+ }
1347
+ [dir="ltr"] .userflowjs-banner-buttons {
1348
+ margin-left: 1rem;
1349
+ }
1350
+ [dir="rtl"] .userflowjs-banner-buttons {
1351
+ margin-right: 1rem;
1352
+ }
1353
+ [dir="ltr"] .userflowjs-banner-buttons {
1354
+ margin-right: -0.5rem;
1355
+ }
1356
+ [dir="rtl"] .userflowjs-banner-buttons {
1357
+ margin-left: -0.5rem;
1358
+ }
1359
+ .userflowjs-banner-buttons {
1360
+ display: flex;
1361
+ margin-top: -0.5rem;
1362
+ }
1363
+ [dir="ltr"] .userflowjs-banner-buttons > * {
1364
+ margin-right: 0.5rem;
1365
+ }
1366
+ [dir="rtl"] .userflowjs-banner-buttons > * {
1367
+ margin-left: 0.5rem;
1368
+ }
1369
+ .userflowjs-banner-buttons > * {
1370
+ margin-top: 0.5rem;
1371
+ white-space: nowrap;
1372
+ }
1373
+ .userflowjs-banner-start-spacer {
1374
+ min-width: 0;
1375
+ flex: 1 1 0%;
1376
+ max-width: var(--userflow-button-height);
1377
+ height: var(--userflow-button-height);
1378
+ }
1379
+ .userflowjs-banner-close {
1380
+ flex-shrink: 0;
1381
+ display: flex;
1382
+ align-items: center;
1383
+ justify-content: center;
1384
+ width: var(--userflow-button-height);
1385
+ height: var(--userflow-button-height);
1386
+ color: #fff;
1387
+ background: transparent;
1388
+ padding: 0;
1389
+ border-radius: 0.25rem;
1390
+ }
1391
+ .userflowjs-banner-close:hover {
1392
+ background-color: var(--userflow-banner-hover-background-color);
1393
+ }
1394
+ .userflowjs-banner-close:active {
1395
+ background-color: var(--userflow-banner-active-background-color);
1396
+ }
1397
+ .userflowjs-banner-close:disabled {
1398
+ cursor: default !important;
1399
+ color: opacity 0.5;
1400
+ }
1259
1401
  .userflowjs-resource-center-frame-root {
1260
1402
  position: relative;
1261
1403
  height: 100%;
@@ -0,0 +1 @@
1
+ import{r as e}from"./vendor.react.js";import{c as t,b as n,i as r,d as l}from"./flow-condition-types.js";import{b as o,D as a}from"./stylesheets.js";import{o as i}from"./vendor.obj-str.js";import{c as s,s as u,q as c,m as d,r as m,S as b,E as p,v as h,U as f,w,d as g}from"./userflow.js";import{f as v}from"./vendor.fortawesome.pro-solid-svg-icons.js";import{u as E}from"./vendor.react-i18next.js";import{u as y}from"./client-context.js";const k=e.createContext(null);function _(){const t=e.useContext(k);if(!t)throw new Error("useSession: Session was not set");return t}function x(n){const r=_(),[l,a]=e.useState(!1),i=o(r.data),s=function(t){const n=e.useRef(t),r=e.useRef(t);return t!==r.current&&JSON.stringify(t)!==JSON.stringify(r.current)&&(n.current=t),r.current=t,n.current}(n);return e.useLayoutEffect((()=>{if(s){return t[s.type].track({sessionData:i,condition:s,callback:e=>{a(e)}})}}),[i,s]),null!=s&&l}const j=({appearance:t,hidden:n,disabled:r,onMouseDown:l,onClick:o,text:a,active:s,children:u})=>e.createElement("button",{className:i({[se(t)]:!0,"userflowjs-bubble-button--hidden":!!n,"userflowjs-bubble-button--active":!!s}),onMouseDown:l,onClick:o,disabled:r},u||e.createElement("div",{className:"userflowjs-bubble-button-text",role:"presentation"},a));function q(e){const t=c();t!==new URL(e,t).toString()&&(s.customNavigate?s.customNavigate(e):window.setTimeout((()=>{u(e)}),0))}async function N(e,t,l){const{steps:o}=t.version;switch(l.type){case d.CLOSE_FLOW:switch(t.kind){case"launcher":await e.dismissLauncher(t,{endReason:p.ACTION});break;case"banner":case"flow":case"checklist":await e.endFlow(t,{endReason:p.ACTION})}return;case d.EVAL_JS:try{const e=r(l.code||"",t.data);new Function('"use strict";\n'+e)()}catch(a){console.error(`Userflow.js: Evaluate JavaScript action failed.\n\nError:\n${a.stack||a.message||a}\n\nCode:\n${l.code}`)}return;case d.GO_TO_STEP:{if("flow"!==t.kind)return;const n=o.find((({crossVersionId:e})=>e===l.stepCvid));if(!n)throw new f("Action points to unknown step: "+l.stepCvid);return void(await e.goToStep(t,n))}case d.NAVIGATE:{if(!l.url)return void console.warn("Userflow.js: NAVIGATE action is missing url property");const e=M(l.url,{lookupAttribute:n(t.data)});return void(l.navigateTarget===m.NEW_TAB?window.open(e):q(e))}case d.SET_ATTRIBUTE:{let t;const n=l.attributeValue||"";switch(l.attributeOperation){case h.SET:t={set:n};break;case h.SET_ONCE:t={set_once:n};break;case h.ADD:t={add:n};break;case h.SUBTRACT:t={subtract:n};break;case h.APPEND:t={append:n};break;case h.PREPEND:t={prepend:n};break;case h.REMOVE:t={remove:n};break;case h.UNSET:t={set:null};break;default:return}const r=l.attributeFqn||"",o=r.split("/");return void(1===o.length?e.updateUser({[r]:t}):"group"===o[0]?e.updateGroup({[o[1]]:t}):"group_membership"===o[0]&&e.updateGroup({},{membership:{[o[1]]:t}}))}case d.SNOOZE:return void("flow"===t.kind&&l.timeValue&&l.timeUnit&&(e.endFlow(t,{endReason:p.SNOOZED,batch:!0}),t.draftMode?window.alert(`In preview mode, flows can't be snoozed.\n\nBut if this flow was running in published mode, the flow would now be snoozed for ${l.timeValue} ${l.timeUnit.toLowerCase()+(1===l.timeValue?"":"s")}.`):e.send({kind:"Snooze",flowId:t.flow.id,timeValue:l.timeValue,timeUnit:l.timeUnit},{batch:!0})));case d.START_FLOW:return"launcher"===t.kind&&e.deactivateLauncher(t),void(l.otherFlow?await e.startFlow({flowId:l.otherFlow.id,stepCvid:l.otherFlowStepCvid,startReason:t.draftMode?b.DRAFT:b.ACTION,replaceCurrent:!0}):console.warn("Userflow.js: START_FLOW action is missing other flow"))}}async function S(e,t,n){const r=[],l=[],o=[];for(const a of n)a.type===d.NAVIGATE?a.navigateTarget===m.NEW_TAB?r.push(a):o.push(a):l.push(a);for(const a of r)N(e,t,a);await Promise.all(l.map((n=>N(e,t,n))));for(const a of o)N(e,t,a)}const T=({button:t})=>{const n=y(),l=_(),o=x(t.disabledCondition),a=x(t.hiddenCondition);return e.createElement(j,{appearance:t.appearance,hidden:a,disabled:o,onClick:()=>S(n,l,t.actions),text:r(t.text,l.data)})},C=()=>e.createElement("svg",{viewBox:"0 0 32 32",xmlns:"http://www.w3.org/2000/svg"},e.createElement("polygon",{className:"userflowjs-star-shape",fill:"#fff",points:"16 22.7785728 7.18322122 29.1352549 10.5042507 18.7856772 1.73415226 12.3647451 12.6034401 12.3250364 16 2 19.3965599 12.3250364 30.2658477 12.3647451 21.4957493 18.7856772 24.8167788 29.1352549"})),A=({type:t,required:n,placeholder:r,buttonText:l,options:o,otherOption:s,multipleSelection:u,shuffleOptions:c,labelLeft:d,labelCenter:m,labelRight:b,minValue:p,maxValue:h,onSubmit:f,inert:g})=>{const{t:y}=E(),k=e.useRef(null),[_,x]=e.useState(""),[j,q]=e.useState(new Set),[N,S]=e.useState(),[T,A]=e.useState(),[I,L]=e.useState(!1),[$,R]=e.useState(!1),[M,O]=e.useState(null),F=e.useMemo((()=>o&&(c?[...o].sort((()=>Math.random()-.5)):o)),[o,c]),U=e=>{if(!g&&f){if(n&&""===_&&[w.MULTILINE_TEXT,w.TEXT].includes(t))return O(y("question.requiredError")),void D();R(!0),O(null),f({...e,onCancel:()=>{R(!1)},onError:e=>{R(!1),O(e||"Sorry, something went wrong saving your answer. Please try again.")}})}},D=e.useCallback((()=>{!g&&k.current&&k.current.focus()}),[g]),[B,W]=e.useState(!1);e.useEffect((()=>{B&&(D(),W(!1))}),[D,B]);const V=e.createElement("div",{className:"userflowjs-bubble-buttons"},e.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--primary",onClick:()=>U({answer:{kind:"text",value:_}}),tabIndex:g?-1:void 0,disabled:$},e.createElement("div",{className:"userflowjs-bubble-button-text",role:"presentation"},l||y("question.submit"))));let K=null,z=0;if(t===w.NPS)d=d||y("question.npsLabelLeft"),b=b||y("question.npsLabelRight"),K=[0,1,2,3,4,5,6,7,8,9,10],z=K.length;else if([w.SCALE,w.STARS].includes(t)){h=null!=h?h:5,K=[];for(let e=p=null!=p?p:1;e<=h;e++)K.push(e);z=K.length}else t===w.MULTIPLE_CHOICE&&(z=(F?F.length:0)+(s&&!I?1:0));const[J,G]=e.useState(-1),H=-1===J?-1:Math.min(J,z-1),X=e=>{if(!e.target.closest('[role="radio"], [role="checkbox"], [role="radiogroup"], [role="group"]'))return;let t=null;if("ArrowRight"===e.key||"ArrowDown"===e.key?t=1:"ArrowLeft"!==e.key&&"ArrowUp"!==e.key||(t=-1),null!=t){e.preventDefault();const n=e.currentTarget.querySelectorAll('[role="radio"], [role="checkbox"]');let r=H+t;r<0?r=n.length-1:r>n.length-1&&(r=0),G(r),n[r].focus()}};let Q,Z=null,Y=null;if(K&&(d||m||b)){const t=[];d&&t.push(K[0],d),b&&t.push(K[K.length-1],b),Z=e.createElement("div",{id:"a11y-scale-labels",className:"userflowjs-a11y-only"},t.join(", ")),Y=e.createElement("div",{id:"userflowjs-bubble-question-labels",className:"userflowjs-bubble-question__scale-labels","aria-hidden":"true"},e.createElement("div",{className:"userflowjs-bubble-question__scale-label"},d),m&&e.createElement("div",{className:"userflowjs-bubble-question__scale-label userflowjs-bubble-question__scale-label--center"},m),e.createElement("div",{className:"userflowjs-bubble-question__scale-label userflowjs-bubble-question__scale-label--right"},b))}switch(t){case w.MULTILINE_TEXT:Q=e.createElement(e.Fragment,null,e.createElement("textarea",{ref:k,className:"userflowjs-textarea userflowjs-bubble-question__textarea",value:_,onChange:e=>x(e.target.value),onKeyDown:e=>{(e.ctrlKey||e.metaKey)&&"Enter"===e.key&&U({answer:{kind:"text",value:_}})},placeholder:r||y("question.placeholder"),readOnly:g||$,tabIndex:g?-1:void 0,rows:3,"aria-required":n?"true":void 0,"aria-invalid":null!=M?"true":void 0}),V);break;case w.MULTIPLE_CHOICE:{const t=()=>{_&&U({answer:{kind:"text",value:_},animationPromise:P()})},n=(F?.length||0)+(s?1:0),o=Math.max(0,Math.min(n,null==p?1:p)),c=Math.max(0,Math.min(n,null==h?n:h)),d=()=>{const e=(F||[]).filter(((e,t)=>j.has(t))).map((e=>e.value));s&&I&&""!==_&&e.push(_),o!==c||e.length===o?e.length<o?O(y("question.multiple_selection_too_few",{count:o})):e.length>c?O(y("question.multiple_selection_too_many",{count:c})):U({answer:{kind:"list",values:e}}):O(y("question.multiple_selection_wrong",{count:o}))};Q=e.createElement(e.Fragment,null,u&&e.createElement("div",{className:i({"userflowjs-bubble-question__multiple-choice-hint":!0,"userflowjs-bubble-question__multiple-choice-hint--error":!!M})},y("question.multiple_selection_hint",{replace:{selected:j.size+(s&&I&&""!==_?1:0),range:o===c?o:`${o}-${c}`}}),M&&e.createElement(e.Fragment,null,". ",e.createElement("span",{role:"alert"},M))),e.createElement("div",{className:i({"userflowjs-bubble-question__multiple-choice":!0,"userflowjs-bubble-question__multiple-choice--single-selection":!u,"userflowjs-bubble-question__multiple-choice--multiple-selection":!!u}),role:u?"group":"radiogroup",tabIndex:g||-1!==H?-1:0,onKeyDown:X},F?.map((({value:t,label:n},r)=>e.createElement("button",{key:r,className:i({"userflowjs-bubble-question__multiple-choice-option":!0,"userflowjs-bubble-question__multiple-choice-option--selected":u?j.has(r):$&&!I&&_==t}),onClick:$?void 0:()=>{if(u){O(null);const e=new Set(j);j.has(r)?e.delete(r):e.add(r),q(e)}else L(!1),x(t),U({answer:{kind:"text",value:t},animationPromise:P()})},disabled:$,tabIndex:g||r!==H?-1:0,role:u?"checkbox":"radio","aria-label":n||t,"aria-checked":!I&&_==t},u?e.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox"},e.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox-inner"},e.createElement(a,{icon:v}))):e.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio"},e.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio-inner"})),e.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-option-text","aria-hidden":"true"},n||t)))),s&&(I?e.createElement("div",{className:i({"userflowjs-bubble-question__multiple-choice-option":!0,"userflowjs-bubble-question__multiple-choice-option--other":!0,"userflowjs-bubble-question__multiple-choice-option--selected":u?""!=_:$})},u?e.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox",onClick:()=>{x(""),L(!1)}},e.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox-inner"},e.createElement(a,{icon:v}))):e.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio"},e.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio-inner"})),e.createElement("input",{ref:k,className:"userflowjs-bubble-question__multiple-choice-option-input",value:_,onChange:e=>x(e.target.value),onKeyDown:e=>{e.shiftKey||"Enter"!==e.key?"Escape"===e.key&&(e.stopPropagation(),x(""),L(!1)):u?d():t()},onBlur:()=>{""===_&&L(!1)},placeholder:r||y("question.placeholder"),readOnly:g||$,tabIndex:g?-1:void 0}),!u&&e.createElement("button",{"data-testid":"multiple-choice-other-submit",className:"userflowjs-bubble-question__multiple-choice-option-submit",onClick:()=>t(),disabled:$,"aria-label":y("question.submit")},e.createElement(a,{icon:v}))):e.createElement("button",{className:"userflowjs-bubble-question__multiple-choice-option",onClick:$?void 0:()=>{O(null),L(!0),W(!0)},disabled:$,tabIndex:g||F?.length!==H?-1:0,role:"radio","aria-label":y("question.other"),"aria-checked":"false"},u?e.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox"},e.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-checkbox-inner"},e.createElement(a,{icon:v}))):e.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio"},e.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-radio-inner"})),e.createElement("div",{className:"userflowjs-bubble-question__multiple-choice-option-text","aria-hidden":"true"},y("question.other"))))),u&&e.createElement("div",{className:"userflowjs-bubble-buttons"},e.createElement("button",{className:"userflowjs-bubble-button userflowjs-bubble-button--primary",onClick:d,tabIndex:g?-1:void 0,disabled:$},e.createElement("div",{className:"userflowjs-bubble-button-text",role:"presentation"},l||y("question.submit")))));break}case w.NPS:case w.SCALE:Q=e.createElement(e.Fragment,null,Z,e.createElement("div",{className:"userflowjs-bubble-question__scale-options",role:"radiogroup",tabIndex:g||-1!==H?-1:0,onKeyDown:X},K?.map(((t,n)=>e.createElement("button",{className:i({"userflowjs-bubble-question__scale-option":!0,"userflowjs-bubble-question__scale-option--selected":$&&N==t}),key:t,tabIndex:g||n!==H?-1:0,onClick:()=>{S(t),U({answer:{kind:"number",value:t},animationPromise:P()})},disabled:$,role:"radio","aria-checked":N==t},t)))),Y);break;case w.STARS:Q=e.createElement("div",{className:"userflowjs-bubble-question__stars-wrapper"},Z,e.createElement("div",{className:"userflowjs-bubble-question__stars",role:"radiogroup",tabIndex:g||-1!==H?-1:0,onKeyDown:X},K?.map(((t,n)=>e.createElement("button",{className:i({"userflowjs-bubble-question__star":!0,"userflowjs-bubble-question__star--hovered":!$&&null!=T&&T>=t,"userflowjs-bubble-question__star--selected":$&&null!=N&&N>=t,"userflowjs-bubble-question__star--not-selected":$&&null!=N&&N<t}),key:t,tabIndex:g||n!==H?-1:0,onClick:()=>{S(t),U({answer:{kind:"number",value:t},animationPromise:P()})},onMouseOver:()=>A(t),onMouseLeave:()=>A(null),disabled:$,role:"radio","aria-checked":N==t,"aria-label":String(t)},e.createElement("div",{className:"userflowjs-bubble-question__star-icon","aria-hidden":"true"},e.createElement(C,null)),e.createElement("div",{className:"userflowjs-bubble-question__star-value","aria-hidden":"true"},t))))),Y);break;case w.TEXT:Q=e.createElement(e.Fragment,null,e.createElement("input",{ref:k,className:"userflowjs-text-input userflowjs-bubble-question__text-input",value:_,onChange:e=>x(e.target.value),onKeyDown:e=>{e.shiftKey||"Enter"!==e.key||U({answer:{kind:"text",value:_}})},placeholder:r||y("question.placeholder"),readOnly:g||$,tabIndex:g?-1:void 0,"aria-required":n?"true":void 0,"aria-invalid":null!=M?"true":void 0}),V)}return e.createElement("div",{className:"userflowjs-bubble-question",style:{pointerEvents:g?"none":void 0}},M&&!(t===w.MULTIPLE_CHOICE&&u)&&e.createElement("div",{className:"userflowjs-bubble-question__error",role:"alert"},M),Q)};function P(){return new Promise((e=>window.setTimeout(e,250)))}const I=({question:t})=>{const n=y(),r=function(){const e=_();if("flow"!==e.kind)throw new Error("useFlowSession: Wrong session kind");return e}();return e.createElement(A,{type:t.type,required:!!t.required,placeholder:t.placeholder||"",buttonText:t.buttonText||"",options:t.options,otherOption:t.otherOption,multipleSelection:t.multipleSelection,shuffleOptions:t.shuffleOptions,labelLeft:t.labelLeft||"",labelCenter:t.labelCenter||"",labelRight:t.labelRight||"",minValue:t.minValue,maxValue:t.maxValue,onSubmit:async e=>{g("answerQuestion",r.id,t.cvid,e);const{answer:l}=e;try{await Promise.all([await n.send({kind:"AnswerQuestion",sessionId:r.id,questionName:t.name,questionCvid:t.cvid,textAnswer:"text"==l.kind?l.value:null,numberAnswer:"number"==l.kind?String(l.value):null,listAnswer:"list"==l.kind?l.values:null}),e.animationPromise])}catch(a){return console.log("Userflow.js: Error when answering question:",a),void e.onError()}const{bindAttributeFqn:o}=t;if(o&&n.flowSession?.id===r.id){let e;switch(l.kind){case"text":e={name:o,value:l.value};break;case"number":e={name:o,value:String(l.value)};break;case"list":e={name:o,value:l.values}}n.optimisticClockUIUpdate((()=>{n.setFlowSession({...r,data:[...r.data.filter((e=>e.name!==o)),e]})}))}S(n,r,t.actions)}})},L=({text:t})=>{if(!t)return null;const n=t.split(/\n/);return 1===n.length?e.createElement(e.Fragment,null,n[0]):e.createElement(e.Fragment,null,n.map(((t,n)=>e.createElement(e.Fragment,{key:n},n>0&&e.createElement("br",null),t))))};function $(e=""){return{type:"paragraph",children:[{text:e}]}}function R(e){if(e){let n;try{n=JSON.parse(e)}catch(t){throw new Error("Could not JSON.parse rich content doc: "+e)}if("rich2"===n.type)return n;throw new Error("Could not recognize rich content doc: "+e)}return function(e=""){return{type:"rich2",children:[$(e)]}}()}function M(e,{lookupAttribute:t}){if(!e)return"";"string"==typeof e&&(e=function(e){if(e){let n;try{n=JSON.parse(e)}catch(t){throw new Error("Could not JSON.parse plaintext doc: "+e)}if("plaintext2"===n.type)return n;throw new Error("Could not recognize plaintext doc: "+e)}return function(e=""){return{type:"plaintext2",children:[{type:"plaintext",children:[{text:e}]}]}}()}(e));const n=[];function r(e){e&&e.forEach((e=>e&&function(e){if(le(e))e.text&&n.push(e.text);else switch(e.type){case"attribute":{const r=te(e,t);r&&n.push(r);break}default:r(e.children)}}(e)))}return r(e.children),n.join("")}function O(e){let t=!0;if(!e)return!0;"string"==typeof e&&(e=R(e));const n=new Set(["attribute","button","image","question","video"]);return oe(e,(e=>{le(e)?""!==e.text&&(t=!1):"type"in e&&n.has(e.type)&&(t=!1)})),t}const F=e.memo((({doc:t,...n})=>t?("string"==typeof t&&(t=R(t)),e.createElement(U,{parent:t,...n})):null)),U=({parent:t,...n})=>e.createElement(e.Fragment,null,t.children.map(((r,l)=>le(r)?e.createElement(D,{key:l,node:r}):e.createElement(W,{key:l,node:r,parent:t,...n})))),D=({node:t})=>t.text?e.createElement(B,{node:t},e.createElement(L,{text:t.text})):null,B=({node:t,children:n})=>(t.color&&"string"==typeof t.color&&(n=e.createElement("span",{style:{color:t.color}},n)),t.bold&&(n=e.createElement("b",null,n)),t.italic&&(n=e.createElement("i",null,n)),t.underline&&(n=e.createElement("u",null,n)),t.strikeThrough&&(n=e.createElement("s",null,n)),t.code&&(n=e.createElement("code",null,n)),t.sup&&(n=e.createElement("sup",null,n)),n),W=({node:t,parent:n,...r})=>{const{lookupAttribute:l}=r,o=e.createElement(U,{parent:t,...r});switch(t.type){case"attribute":return e.createElement(V,{node:t,...r});case"button":return e.createElement(K,{node:t,...r});case"button-group":return e.createElement("div",{className:"userflowjs-bubble-buttons"},o);case"column":return e.createElement("div",{style:Y(t,n)},o);case"column-group":return e.createElement("div",{className:"p-like",style:Z(t)},o);case"container":return e.createElement("div",{className:"p-like"+(t.className?` ${t.className}`:""),style:ee(t)},o);case"image":return e.createElement(J,{node:t,...r});case"link":return e.createElement("a",{href:M(t.href,{lookupAttribute:l}),target:"same"===t.target?"_top":"_blank",rel:"noopener noreferrer"},o);case"paragraph":return e.createElement("p",{className:X(t)},o);case"heading1":return e.createElement("h1",{className:X(t)},o);case"heading2":return e.createElement("h2",{className:X(t)},o);case"question":return e.createElement(z,{node:t,...r});case"quote":return e.createElement("blockquote",null,o);case"code-block":return e.createElement("pre",null,e.createElement("code",null,o));case"ordered-list":return e.createElement("ol",null,o);case"unordered-list":return e.createElement("ul",null,o);case"list-item":return e.createElement("li",null,o);case"video":return e.createElement(G,{node:t,...r});default:return e.createElement("div",null,o)}},V=({node:t,lookupAttribute:n})=>{let r=te(t,n);return e.createElement(B,{node:t},r)},K=({node:t,buttons:n})=>{const r=n?.find((e=>e.cvid===t.cvid));return r?e.createElement(T,{key:r.id,button:r}):null},z=({node:t,questions:n})=>{const r=n?.find((e=>e.cvid===t.cvid));return r?e.createElement(I,{key:r.id,question:r}):null},J=({node:t,lookupAttribute:n})=>{const{src:r,widthMode:o,displayWidth:a,width:i,height:s,marginTop:u,marginRight:c,marginBottom:d,marginLeft:m,align:b,hasLink:p,href:h}=t;if("string"!=typeof r||!r)return null;const{wrapperStyle:f,blockStyle:w}=Q({widthMode:o,displayWidth:a,width:i,height:s,marginTop:u,marginRight:c,marginBottom:d,marginLeft:m,align:b});let g=e.createElement("img",{src:l(r,(e=>encodeURIComponent(n(e)||""))),style:{...w,objectFit:"contain"},alt:""});return p&&h&&(g=e.createElement("a",{href:M(h,{lookupAttribute:n}),target:"same"===t.target?"_top":"_blank",rel:"noopener noreferrer",style:w},g)),e.createElement("div",{className:"p-like"},e.createElement("div",{style:f},g))},G=({node:t,lookupAttribute:n})=>{const{url:r,widthMode:l,displayWidth:o,width:a,height:i,marginTop:s,marginRight:u,marginBottom:c,marginLeft:d,align:m}=t;if("string"!=typeof r||!r)return null;const{wrapperStyle:b,blockStyle:p}=Q({widthMode:l,displayWidth:o,width:a,height:i,marginTop:s,marginRight:u,marginBottom:c,marginLeft:d,align:m});return e.createElement("div",{className:"p-like"},e.createElement("div",{style:b},e.createElement("div",{style:p},e.createElement(H,{element:t,noFocus:!0,lookupAttribute:n}))))},H=({element:{embedType:t,url:n,src:r,autoPlay:o,controls:a,loop:i,muted:s},noFocus:u,forceMuted:c,lookupAttribute:d})=>{if(!n)return null;const m={width:"100%",height:"100%",frameBorder:"0",allow:"accelerometer; autoplay; fullscreen; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,allowtransparency:"true",mozallowfullscreen:"true",webkitallowfullscreen:"true",oallowfullscreen:"true",msallowfullscreen:"true",style:{display:"block"},tabIndex:u?-1:void 0};if("video"===t)return e.createElement("video",{key:n+";"+String(o)+";"+String(a)+";"+String(i)+";"+String(s),src:n,style:{width:"100%",height:"100%",display:"block"},autoPlay:!!o,controls:!1!==a,loop:i,muted:c||s});if(r){let t;try{t=new URL(r)}catch(w){return null}return c&&(t.searchParams.has("autoplay")||t.searchParams.has("autoPlay"))&&(t.searchParams.set("mute","1"),t.searchParams.set("muted","1"),t.searchParams.set("volume","0")),e.createElement("iframe",{src:t.toString(),...m})}let b=function(e,{iframeFallback:t}={}){let n;try{n=new URL(e)}catch(w){return{kind:"invalid"}}const{hostname:r,pathname:l,searchParams:o}=n;if(r.match(/^(www\.)?(use)?loom\.com$/)){const e=l.match(/^\/share\/([a-z0-9]+)$/i);if(e){const[,t]=e;return{kind:"ok",videoProvider:"loom",videoId:t,searchParams:o}}}if(e.startsWith("raw:")){return{kind:"ok",videoProvider:"raw",videoId:e.replace(/^raw:/,""),searchParams:o}}if(e.startsWith("iframe:")){return{kind:"ok",videoProvider:"iframe",videoId:e.replace(/^iframe:/,""),searchParams:o}}if(["youtube.com","www.youtube.com"].includes(r)){const e=o.get("v");if(e)return o.delete("v"),{kind:"ok",videoProvider:"youtube",videoId:e,searchParams:o}}if("youtu.be"===r){const e=l.match(/^\/([^/]+)$/);if(e){const[,t]=e;return{kind:"ok",videoProvider:"youtube",videoId:t,searchParams:o}}}if("vimeo.com"===r){const e=l.match(/^\/(\d+)$/);if(e){const[,t]=e;return{kind:"ok",videoProvider:"vimeo",videoId:t,searchParams:o}}}if("player.vimeo.com"===r){const e=l.match(/^\/video\/([^/]+)$/);if(e){const[,t]=e;return{kind:"ok",videoProvider:"vimeo",videoId:t,searchParams:o}}}if(r.match(/^[^.]+\.wistia.com$/)){const e=l.match(/^\/medias\/([^/]+)$/);if(e){const[,t]=e;return{kind:"ok",videoProvider:"wistia",videoId:t,searchParams:o}}}return t?{kind:"ok",videoProvider:"iframe",videoId:e,searchParams:o}:{kind:"invalid"}}(n,{iframeFallback:!0});if("invalid"===b.kind)return null;const{videoProvider:p,videoId:h,searchParams:f}=b;switch(o=o||f.has("autoplay")||f.has("autoPlay"),p){case"iframe":return e.createElement("iframe",{src:l(h,(e=>encodeURIComponent(d(e)||""))),scrolling:f.get("scrolling")||void 0,...m});case"loom":return e.createElement("iframe",{src:`https://www.loom.com/embed/${h}?${f.toString()}`,...m});case"raw":return e.createElement("video",{src:h,controls:!0,style:{width:"100%",height:"100%",display:"block"},autoPlay:f.has("autoplay"),muted:c||f.has("muted")});case"youtube":return c&&o&&f.set("mute","1"),e.createElement("iframe",{src:`https://www.youtube.com/embed/${h}?${f.toString()}`,...m});case"vimeo":return c&&o&&f.set("muted","1"),e.createElement("iframe",{src:`https://player.vimeo.com/video/${h}?${f.toString()}`,...m});case"wistia":return f.set("videoFoam","true"),c&&o&&f.set("volume","0"),e.createElement(e.Fragment,null,e.createElement("iframe",{src:`https://fast.wistia.net/embed/iframe/${h}?${f.toString()}`,...m}))}};function X(e){return"right"===e.align?"userflowjs-text-align-end":"center"===e.align?"userflowjs-text-align-center":"justify"===e.align?"userflowjs-text-align-justify":""}function Q({widthMode:e,displayWidth:t,width:n,height:r,marginTop:l,marginRight:o,marginBottom:a,marginLeft:i,align:s}){const u={position:"relative"};"number"!=typeof t&&(t=100,e="percent"),"center"===s?(u.marginLeft="auto",u.marginRight="auto"):"right"===s&&(u.marginLeft="auto");let c=0;if(null!=l&&"number"==typeof l&&(u.marginTop=`${l}px`),null!=o&&"number"==typeof o&&(u.marginRight=`${o}px`,c+=o),null!=a&&"number"==typeof a&&(u.marginBottom=`${a}px`),null!=i&&"number"==typeof i&&(u.marginLeft=`${i}px`,c+=i),"number"!=typeof t||"number"!=typeof n||"number"!=typeof r)u.width="100px",u.height="100px";else if("px"===e){const e=10,l=Math.max(e,t);u.width=`${l}px`,u.height=l/(n/r)+"px"}else{const e=Math.max(0,Math.min(100,t));u.width=`calc(${e}% - ${c}px)`,u.height="0",u.paddingBottom=`calc((${e}% - ${c}px) / (${n} / ${r})`}return{wrapperStyle:u,blockStyle:{position:"absolute",top:"0",left:"0",display:"block",width:"100%",height:"100%"}}}function Z(e){return{display:"flex",alignItems:"stretch",marginRight:`-${null==e.spacing?16:e.spacing}px`}}function Y(e,t){const n="fill"===e.widthMode||null==e.displayWidth;return{display:"flex",flexDirection:"column",justifyContent:e.justifyContent,width:n?void 0:"px"===e.widthMode?`${e.displayWidth||50}px`:"percent"===e.widthMode?`${e.displayWidth||50}%`:void 0,flex:n?"1 0 0":void 0,marginRight:`${null==t.spacing?16:t.spacing}px`,marginBottom:"0"}}function ee(e){return{display:"flex",flexDirection:"column",justifyContent:e.justifyContent,width:"px"===e.widthMode&&null!=e.displayWidth?`${e.displayWidth}px`:"percent"===e.widthMode&&null!=e.displayWidth?`${e.displayWidth}%`:void 0,minHeight:"px"===e.heightMode?`${e.displayHeight||50}px`:void 0,flex:"fill"===e.heightMode?"1 0 0":void 0,marginTop:null!=e.marginTop?`${e.marginTop}px`:void 0,marginRight:null!=e.marginRight?`${e.marginRight}px`:"fill"!==e.widthMode&&"center"===e.align?"auto":void 0,marginBottom:null!=e.marginBottom?`${e.marginBottom}px`:void 0,marginLeft:null!=e.marginLeft?`${e.marginLeft}px`:"fill"===e.widthMode||"center"!==e.align&&"right"!==e.align?void 0:"auto"}}function te(e,t){const n=e.attributeName;if("string"==typeof n){const r=t(n)||e.fallback;if("string"==typeof r)return r}return null}function ne(e){return Array.isArray(e.children)&&void 0===e.addMark}function re(e,t,n="type"){return ne(e)&&e[n]===t}function le(e){return"string"==typeof e.text}function oe(e,t){function n(e){e&&e.forEach(((e,r)=>e&&function(e,r){t(e,r),ne(e)&&n(e.children)}(e,r)))}n(Array.isArray(e)?e:e.children)}const ae=e.memo((({doc:t,lookupAttribute:n})=>t?e.createElement(e.Fragment,null,M(t,{lookupAttribute:n})):null));function ie(e,{buttons:t,questions:n}){const r=new Set,l=new Set;if(oe(e,(e=>{re(e,"button")&&r.add(e.cvid),re(e,"question")&&l.add(e.cvid)})),n){const t=n.filter((e=>!l.has(e.cvid)));t.length>0&&(e={...e,children:[...e.children,...t.map((e=>({type:"question",cvid:e.cvid,children:[{text:""}]})))]})}if(t){const n=t.filter((e=>!r.has(e.cvid)));n.length>0&&(e={...e,children:[...e.children,{type:"button-group",children:n.map((e=>({type:"button",cvid:e.cvid,children:[{text:""}]})))}]})}return e}function se(e){return"userflowjs-bubble-button "+("primary"===(e=e||"default")||"PRIMARY"===e||"default"===e||"DEFAULT"===e||"banner-primary"===e||"banner-secondary"===e?`userflowjs-bubble-button--${e.toLowerCase()}`:e)}var ue=new URL("bubble-frame.css",import.meta.url).href;export{T as B,F as R,k as S,ae as a,ue as b,j as c,R as d,_ as e,te as g,S as h,le as i,ie as m,q as n,O as r,M as s,x as u};