UNPKG

@flows/js

Version:

Flows JS SDK - Build native product growth experiences, your way

543 lines (506 loc) 40.4 kB
"use strict";var _=Object.defineProperty,nr=Object.defineProperties,et=Object.getOwnPropertyDescriptor,sr=Object.getOwnPropertyDescriptors,ir=Object.getOwnPropertyNames,ie=Object.getOwnPropertySymbols;var he=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable;var ot=e=>{throw TypeError(e)};var Qe=(e,t,o)=>t in e?_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,b=(e,t)=>{for(var o in t||(t={}))he.call(t,o)&&Qe(e,o,t[o]);if(ie)for(var o of ie(t))tt.call(t,o)&&Qe(e,o,t[o]);return e},k=(e,t)=>nr(e,sr(t));var rt=(e,t)=>{var o={};for(var r in e)he.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(e!=null&&ie)for(var r of ie(e))t.indexOf(r)<0&&tt.call(e,r)&&(o[r]=e[r]);return o};var c=(e,t)=>()=>(e&&(t=e(e=0)),t);var nt=(e,t)=>{for(var o in t)_(e,o,{get:t[o],enumerable:!0})},ar=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ir(t))!he.call(e,n)&&n!==o&&_(e,n,{get:()=>t[n],enumerable:!(r=et(t,n))||r.enumerable});return e};var lr=e=>ar(_({},"__esModule",{value:!0}),e),V=(e,t,o,r)=>{for(var n=r>1?void 0:r?et(t,o):t,s=e.length-1,a;s>=0;s--)(a=e[s])&&(n=(r?a(t,o,n):a(n))||n);return r&&n&&_(t,o,n),n};var st=(e,t,o)=>t.has(e)||ot("Cannot "+o);var ae=(e,t,o)=>(st(e,t,"read from private field"),o?o.call(e):t.get(e)),le=(e,t,o)=>t.has(e)?ot("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,o),pe=(e,t,o,r)=>(st(e,t,"write to private field"),r?r.call(e,o):t.set(e,o),o);var it,ue,at=c(()=>{"use strict";it=(e,{body:t,method:o,version:r})=>fetch(e,{method:o,headers:{"Content-Type":"application/json","x-flows-version":r},body:t?JSON.stringify(t):void 0}).then(async n=>{var i;let s=await n.text(),a=s?JSON.parse(s):void 0;if(!n.ok){let l=a;throw new Error((i=l==null?void 0:l.message)!=null?i:n.statusText)}return a}),ue=(e,t)=>({getBlocks:o=>it(`${e}/v2/sdk/blocks`,{method:"POST",body:o,version:t}),sendEvent:o=>it(`${e}/v2/sdk/events`,{method:"POST",body:o,version:t})})});var pr,ur,xe,Be,B,ce=c(()=>{"use strict";pr="#22262d",ur="#fff",xe="%cFlows%c",Be=`color:${ur};background:${pr};padding:2px 4px;border-radius:4px`,B={error:(e,...t)=>{console.error(`${xe} ${e}`,Be,"",...t)},warn:(e,...t)=>{console.warn(`${xe} ${e}`,Be,"",...t)},info:(e,...t)=>{console.info(`${xe} ${e}`,Be,"",...t)}}});var Pe,lt,pt,ut=c(()=>{"use strict";ce();Pe=(e,t)=>{let o=new Set([...t.exitedBlockIds,...t.updatedBlocks.map(r=>r.id)]);return[...e.filter(r=>!o.has(r.id)),...t.updatedBlocks]},lt=(e,t)=>{e.slottable&&!e.slotId&&(t==="component"&&B.error(`Encountered workflow block "${e.componentType}" that is slottable but has no slotId`),t==="tour-component"&&B.error(`Encountered tour block "${e.componentType}" that is slottable but has no slotId`))},pt=e=>{e.forEach(t=>{var o;lt(t,"component"),(o=t.tourBlocks)==null||o.forEach(r=>{lt(r,"tour-component")})})}});var W,ct=c(()=>{"use strict";W=(e,t)=>{let o="",r=0;for(;r<e.length;){let n=e.indexOf("{{",r);if(n===-1){o+=e.slice(r);break}o+=e.slice(r,n);let s=e.indexOf("}}",n+2);if(s===-1){o+=e.slice(n);break}let i=e.slice(n+2,s).trim(),l=i.indexOf("|"),m=(l===-1?i:i.slice(0,l)).trim(),d=l===-1?void 0:i.slice(l+1).trim(),f=e.slice(n,s+2);if(!m){o+=f,r=s+2;continue}let p=t[m];if(typeof p=="string"||typeof p=="number"||typeof p=="boolean"){o+=p.toString(),r=s+2;continue}o+=d!=null?d:"",r=s+2}return o}});var F,H,dt,Te,gt,ft=c(()=>{"use strict";F=require("es-toolkit/compat"),H=require("es-toolkit");ct();dt=({propMeta:e,userProperties:t})=>{let o=e.value,r={label:W(o.label,t),openInNew:o.openInNew};return o.url!==void 0&&(r.url=W(o.url,t)),r},Te=e=>{var d,f;let{block:t,exitNodeCb:o,removeBlock:r,setStateMemory:n}=e,s=({properties:p,parentKey:u})=>{var L;let g=b({},p);return delete g.f__exit_nodes,(L=p.f__exit_nodes)==null||L.forEach(I=>{let E=()=>o({key:[u,I].filter(C=>C!==void 0).join("."),blockId:t.id});g[I]=E}),Object.entries(p).forEach(([I,E])=>{Array.isArray(E)&&(g[I]=E.map((C,ne)=>typeof C=="object"?s({properties:C,parentKey:[u,I,ne].filter(se=>se!==void 0).join(".")}):C))}),g},a=s({properties:t.data}),i=({value:p,parentKey:u})=>typeof p=="string"?W(p,e.userProperties):Array.isArray(p)?p.map((g,L)=>g&&typeof g=="object"?(0,H.mapValues)(g,(I,E)=>{let C=[u,L,E].join(".");return i({value:I,parentKey:C})}):g):p,l=(0,H.mapValues)(a,(p,u)=>i({value:p,parentKey:u}));for(let p of(d=t.propertyMeta)!=null?d:[]){if(p.type==="state-memory"){let u={value:p.value,setValue:g=>{n({key:p.key,value:g,blockId:t.id})},triggers:(f=p.triggers)!=null?f:[]};(0,F.set)(l,p.key,u)}if(p.type==="block-state"){let u=Te(k(b({},e),{block:p.value}));(0,F.set)(l,p.key,u)}if(p.type==="action"){let u=dt({propMeta:p,userProperties:e.userProperties}),g=p.value.exitNode;g&&(u.callAction=()=>(t.exitNodes.includes(g)&&r(t.id),o({key:g,blockId:t.id}))),(0,F.set)(l,p.key,u)}}let m=t.exitNodes.reduce((p,u)=>{let g=()=>(r(t.id),o({key:u,blockId:t.id}));return p[u]=g,p},{});return b(b({__flows:{id:t.id,key:t.key,workflowId:t.workflowId}},l),m)},gt=({tourSteps:e,tourStep:t,currentIndex:o,userProperties:r,handleCancel:n,handleContinue:s,handlePrevious:a})=>{var p;let i=o===0,l=u=>typeof u=="string"?W(u,r):Array.isArray(u)?u.map(g=>g&&typeof g=="object"?(0,H.mapValues)(g,l):g):u,m=(0,H.mapValues)(t.data,l);for(let u of(p=t.propertyMeta)!=null?p:[])if(u.type==="action"){let g=dt({propMeta:u,userProperties:r});u.value.exitNode&&(g.callAction=async()=>{u.value.exitNode==="continue"&&s(),u.value.exitNode==="previous"&&a(),u.value.exitNode==="cancel"&&n()}),(0,F.set)(m,u.key,g)}let d=e.filter(u=>u.type==="tour-component"),f=d.findIndex(u=>u.id===t.id);return k(b({__flows:{id:t.id,key:t.key,workflowId:t.workflowId,tourVisibleStepCount:d.length,tourVisibleStepIndex:f}},m),{continue:s,previous:i?void 0:a,cancel:n})}});var cr,mt,bt,Ie,Ce,Me,vt,Se,kt,yt,wt,de,ht,xt=c(()=>{"use strict";cr=/^https?:\/\/localhost/,mt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,bt=e=>(!!e).toString(),Ie="flows-debug-enabled",Ce="flows-debug-position",Me=[{value:"top-left",label:"Top Left"},{value:"top-right",label:"Top Right"},{value:"bottom-left",label:"Bottom Left"},{value:"bottom-right",label:"Bottom Right"}],vt=()=>{let e=localStorage.getItem(Ce);return Me.some(t=>t.value===e)?e:"bottom-right"},Se={organizationId:{true:"Organization ID is valid.",false:"Organization ID is not valid."},userId:{true:"User ID is set.",false:"User ID is not set."},environment:{true:"Environment is set.",false:"Environment is not set."},apiError:{true:"API responded successfully.",false:"API returned an error. Check the browser console for details."},title:{user:"User Information","sdk-setup":"SDK Setup",blocks:"Blocks",pathname:"Pathname",settings:"Settings"}},kt=e=>{if(typeof e!="undefined")return e;let t=sessionStorage.getItem(Ie);return t?t==="true":cr.test(window.location.origin)},yt=e=>`https://app.flows.sh/org/${e}`,wt="https://flows.sh/docs/sdk-overview#debug-mode",de=()=>{if(typeof window=="undefined")return!1;let e=navigator.userAgent.includes("Mac"),t=/(?:iphone|ipad|ipod)/i.test(navigator.userAgent);return e||t},ht=e=>(de()?e.metaKey:e.ctrlKey)&&e.shiftKey&&e.altKey&&e.key.toLowerCase()==="f"});var Bt,Pt=c(()=>{"use strict";Bt=e=>{var t;if(!(!e||e==="disabled"))return e==="automatic"?(t=navigator.languages.at(0))!=null?t:navigator.language:e}});var Ee,Ae,Re,Le,Ne,De,$e,Oe,Ue,Tt=c(()=>{"use strict";Ee=(e,t)=>t?Array.isArray(t)?t.some(o=>Ee(e,o)):typeof e!="string"?!1:new RegExp(t).test(e):!0,Ae=(e,t)=>t===void 0?!0:Array.isArray(t)?t.some(o=>Ae(e,o)):e===t,Re=(e,t)=>t===void 0?!0:Array.isArray(t)?t.every(o=>Re(e,o)):e!==t,Le=(e,t)=>t?Array.isArray(t)?t.some(o=>Le(e,o)):typeof e!="string"?!1:e.includes(t):!0,Ne=(e,t)=>t?Array.isArray(t)?t.every(o=>Ne(e,o)):typeof e!="string"?!1:!e.includes(t):!0,De=(e,t)=>t?Array.isArray(t)?t.some(o=>De(e,o)):typeof e!="string"?!1:e.startsWith(t):!0,$e=(e,t)=>t?Array.isArray(t)?t.some(o=>$e(e,o)):typeof e!="string"?!1:e.endsWith(t):!0,Oe=(e,t)=>t?Array.isArray(t)?t.every(o=>Oe(e,o)):typeof e!="string"?!1:!e.startsWith(t):!0,Ue=(e,t)=>t?Array.isArray(t)?t.every(o=>Ue(e,o)):typeof e!="string"?!1:!e.endsWith(t):!0});var It=c(()=>{"use strict";Tt()});var M,ge,Ct,Mt,St=c(()=>{"use strict";It();M=({operator:e,pathname:t,value:o})=>e==="eq"?Ae(t,o):e==="ne"?Re(t,o):e==="contains"?Le(t,o):e==="notContains"?Ne(t,o):e==="startsWith"?De(t,o):e==="endsWith"?$e(t,o):e==="notStartsWith"?Oe(t,o):e==="notEndsWith"?Ue(t,o):e==="regex"?Ee(t,o):!0,ge=({eventTarget:e,value:t})=>t?Array.from(document.querySelectorAll(t)).some(o=>o.contains(e)):!1,Ct=e=>typeof e!="string"?!1:e.trim()?!!document.querySelector(e):!0,Mt=e=>typeof e!="string"?!1:e.trim()?!document.querySelector(e):!0});var Ke=c(()=>{"use strict";St()});var A,Et=c(()=>{"use strict";A=()=>window.location.pathname+window.location.search});var At,Rt=c(()=>{"use strict";ce();Ke();At=(e,t)=>{var n;let o=e.tour_trigger;return((n=e.currentTourIndex)!=null?n:0)>0||!o?!0:o.$and?o.$and.every(s=>{let a=s.type;if(a==="navigation"){if(!s.operator)return!0;let i=s.values;return i!=null&&i.every(l=>!l)?!0:M({operator:s.operator,pathname:t.pathname,value:i})}if(a==="dom-element"){let i=s.value;return typeof i!="string"?!1:i?!!document.querySelector(i):!0}if(a==="not-dom-element"){let i=s.value;return typeof i!="string"?!1:i?!document.querySelector(i):!0}if(a==="click"){let i=s.value;if(typeof i!="string")return!1;if(!i)return!0;if(!t.event||!(t.event instanceof MouseEvent))return!1;let l=t.event.target;return!l||!(l instanceof Element)?!1:ge({eventTarget:l,value:i})}return B.error(`Aborting tour start due to an unrecognized tour trigger type: ${a}. Try updating the SDK or changing the tour trigger configuration.`),!1}):(B.error("Aborting tour start due to an unsupported tour trigger format. Try updating the SDK or changing the tour trigger configuration."),!1)}});var ze,Lt=c(()=>{"use strict";ze=(e,t)=>new Proxy(e,{get(o,r,n){return r==="props"&&t(e.id),Reflect.get(o,r,n)}})});var Nt=c(()=>{"use strict"});var Dt=c(()=>{"use strict"});var $t=c(()=>{"use strict"});var Ot=c(()=>{"use strict"});var Ut=c(()=>{"use strict"});var Kt=c(()=>{"use strict"});var zt=c(()=>{"use strict";Lt();Nt();Dt();$t();Ot();Ut();Kt()});function dr(e){return typeof e=="object"&&e!==null&&"exitedBlockIds"in e&&"updatedBlocks"in e}var Gt,_t=c(()=>{"use strict";Gt=e=>{let t=e.data;if(typeof t!="string")return null;try{let o=JSON.parse(t);if(dr(o))return{type:"block-updates",exitedBlockIds:o.exitedBlockIds,updatedBlocks:o.updatedBlocks}}catch(o){}return null}});var P=c(()=>{"use strict";at();ut();ft();xt();Pt();ce();Ke();Et();Rt();zt();_t()});var w,v,T,N,y,Z,j,q,Y,Vt,K,h,S=c(()=>{"use strict";P();w=require("@preact/signals-core"),v=(0,w.signal)(),T=(0,w.signal)(),N=(0,w.signal)(null),y=(0,w.computed)(()=>{var e;return(e=N.value)!=null?e:[]}),Z=(0,w.signal)([]);(0,w.effect)(()=>{let e=y.value;pt(e)});j=(0,w.signal)(!1),q=(0,w.signal)(!1),Y=e=>{N.value=y.value.filter(t=>t.id!==e)},Vt=(e,t)=>{N.value=y.value.map(o=>o.id===e?t(o):o)},K=(0,w.computed)(()=>y.value.filter(e=>e.type==="tour")),h=(0,w.signal)([])});var Ht,Zt,Ft=c(()=>{Ht="@flows/js",Zt="1.19.4"});var R,J=c(()=>{"use strict";Ft();R=`${Ht}@${Zt}`});var io,so=c(()=>{io=`:root { --flows-debug-bg-default: #ffffff; --flows-debug-bg-subtle: #f9fafc; --flows-debug-bg-hover: #ebeef3; --flows-debug-fg-default: #15181c; --flows-debug-fg-subtle: #6b727b; --flows-debug-border: 1px solid #d9dde2; --flows-debug-fg-success: #188635; --flows-debug-fg-error: #cf2320; --flows-debug-overlay: hsla(0, 0%, 100%, 0.2); --flows-debug-overlay-hover: hsla(0, 0%, 100%, 0.3); --flows-debug-small-shadow: 0px 0px 1px rgba(0, 0, 0, 0.06), 0px 4px 4px -1px rgba(0, 0, 0, 0.02); --flows-debug-shadow: 0px 3px 8px rgba(0, 0, 0, 0.07), 0px 2px 5px rgba(0, 0, 0, 0.07), 0px 1px 1px rgba(0, 0, 0, 0.07); --flows-debug-system-font: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; --flows-debug-mono-font: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } .dark { --flows-debug-bg-default: #15181c; --flows-debug-bg-subtle: #22262d; --flows-debug-bg-hover: #2b313a; --flows-debug-fg-default: #f9fafc; --flows-debug-fg-subtle: #8b929b; --flows-debug-border: 1px solid #353c46; --flows-debug-fg-success: #33a449; --flows-debug-fg-error: #ea6369; --flows-debug-overlay: hsla(0, 0%, 100%, 0.1); --flows-debug-overlay-hover: hsla(0, 0%, 100%, 0.2); --flows-debug-small-shadow: 0px 4px 4px -1px rgba(0, 0, 0, 0.06), 0px 1px 1px 0px rgba(0, 0, 0, 0.12); --flows-debug-shadow: 0px 3px 8px rgba(0, 0, 0, 0.188), 0px 2px 5px rgba(0, 0, 0, 0.188), 0px 1px 1px rgba(0, 0, 0, 0.188); } @keyframes flows-debug-fadeIn { from { opacity: 0; scale: 0.5; } 80% { opacity: 1; scale: 1.2; } to { scale: 1; } } .flows-debug { position: fixed; z-index: 10000; color: var(--flows-debug-fg-default); } :where(.flows-debug) hr { border-top: var(--flows-debug-border); } :where(.flows-debug) a { color: inherit; text-decoration: none; } :where(.flows-debug) p { margin: 0; } .flows-debug-btn { border: none; background: transparent; cursor: pointer; padding: 0; color: var(--flows-debug-fg-default); } .flows-debug-top-left { top: 16px; left: 16px; } .flows-debug-bottom-right { bottom: 16px; right: 16px; } .flows-debug-bottom-left { bottom: 16px; left: 16px; } .flows-debug-top-right { top: 16px; right: 16px; } .flows-debug-menu { background: var(--flows-debug-bg-default); display: flex; align-items: center; justify-content: center; height: 36px; width: 36px; border-radius: 99px; margin: 0; cursor: pointer; border: var(--flows-debug-border); box-shadow: var(--flows-debug-small-shadow); animation: flows-debug-fadeIn 120ms ease-out; } .flows-debug-menu-inset { color: var(--flows-debug-fg-default); transition: background 120ms ease-in-out; padding: 7px; border-radius: 99px; display: flex; } .flows-debug-menu:hover .flows-debug-menu-inset { background: var(--flows-debug-bg-hover); } .flows-debug-menu-error { background: var(--flows-debug-fg-error) !important; } .flows-debug-menu-inset-error { background: var(--flows-debug-overlay) !important; color: var(--flows-debug-bg-default) !important; &:hover { background: var(--flows-debug-overlay-hover) !important; } } .flows-debug-popover { position: absolute; margin-top: 8px; margin-bottom: 8px; background: var(--flows-debug-bg-default); border: var(--flows-debug-border); border-radius: 8px; box-shadow: var(--flows-debug-shadow); font-size: 13px; font-family: var(--flows-debug-system-font); } .flows-debug-popover-wide { width: 360px; } .flows-debug-popover-narrow { width: 260px; } .flows-debug-top-right .flows-debug-popover { right: 0; top: 100%; } .flows-debug-bottom-right .flows-debug-popover { right: 0; bottom: 100%; } .flows-debug-top-left .flows-debug-popover { left: 0; top: 100%; } .flows-debug-bottom-left .flows-debug-popover { left: 0; bottom: 100%; } .flows-debug-section-header { display: flex; gap: 4px; align-items: center; border-bottom: var(--flows-debug-border); padding: 12px 16px 12px 8px; } .flows-debug-section-label { font-weight: 600; } .flows-debug-section-content { padding: 16px; } .flows-debug-code-block { padding: 8px; border-radius: 4px; background: var(--flows-debug-bg-subtle); font-size: 12px; font-family: var(--flows-debug-mono-font); overflow-x: auto; max-height: 480px; border: var(--flows-debug-border); scrollbar-width: thin; scrollbar-color: var(--flows-debug-fg-subtle) transparent; } .flows-debug-inline-code { font-family: var(--flows-debug-mono-font); font-size: 12px; } .flows-debug-item { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 6px; border-radius: 6px; transition: background 120ms ease-in-out; } .flows-debug-item-interactive { cursor: pointer; &:hover { background: var(--flows-debug-bg-hover); } } .flows-debug-item-info { font-size: 12px; color: var(--flows-debug-fg-subtle); margin-top: 2px; } .flows-debug-item-label { font-weight: 600; } .flows-debug-item-secondary { color: var(--flows-debug-fg-subtle); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .flows-debug-item-list { display: flex; flex-direction: column; padding: 6px; } .flows-debug-info-line { margin-bottom: 4px; } .flows-debug-button-secondary { font-weight: 600; padding: 4px 8px; border-radius: 6px; color: var(--flows-debug-fg-default); background-color: var(--flows-debug-bg-subtle); border: var(--flows-debug-border); cursor: pointer; transition: all 80ms ease-in-out; flex-shrink: 0; &:hover { background-color: var(--flows-debug-bg-hover); } &:active { background-color: var(--flows-debug-bg-default); } } .flows-debug-section-close { padding: 4px; border-radius: 6px; width: 24px; height: 24px; &:hover { background-color: var(--flows-debug-bg-hover); } } .flows-debug-select-wrap { position: relative; svg { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); pointer-events: none; } } .flows-debug-select { all: unset; border-radius: 6px; color: var(--flows-debug-fg-default); background-color: var(--flows-debug-bg-subtle); border: var(--flows-debug-border); padding: 4px 8px; padding-right: 28px; cursor: pointer; transition: all 80ms ease-in-out; &:focus { outline: none; } &:hover { background-color: var(--flows-debug-bg-hover); } } .flows-debug-shortcut-list { display: flex; gap: 4px; } .flows-debug-shortcut { display: flex; align-items: center; font-size: 12px; color: var(--flows-debug-fg-default); background-color: var(--flows-debug-bg-subtle); min-width: 20px; height: 20px; padding: 0 4px; border-radius: 4px; justify-content: center; border: var(--flows-debug-border); } .flows-debug-validation-item { display: flex; align-items: center; gap: 4px; margin-bottom: 8px; &:last-child { margin-bottom: 0; } } .flows-debug-validation-valid { color: var(--flows-debug-fg-success); flex-shrink: 0; } .flows-debug-validation-invalid { color: var(--flows-debug-fg-error); flex-shrink: 0; } .flows-debug-print-button { margin-top: 8px; } `});var ao,lo,po=c(()=>{"use strict";ao=require("lit"),lo=()=>ao.html`<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 40 40" > <path d="M38.02 12.24C36.7 10 34.87 8.22 32.56 6.94C30.38 5.74 27.83 5.08 25 5H16C12.97 5 9.76 5.66 7.45 6.94C5.14 8.22 3.3 10 1.99 12.23C0.67 14.46 0 17.08 0 20.02C0 22.96 0.67 25.53 1.99 27.76C3.3 29.99 5.15 31.78 7.47 33.05C9.8 34.33 12.94 35 16 35H25C27.81 34.94 30.4 34.26 32.6 33.05C34.91 31.77 36.74 29.99 38.04 27.76C39.34 25.52 40 22.92 40 20.01C40 17.1 39.33 14.48 38.02 12.24ZM30.3 19.89L27.37 22.82C26.63 23.56 25.62 24 24.58 24H19.95C18.9 24 17.9 24.39 17.16 25.13L16.12 26C13.19 28.46 8.72 26.37 8.72 22.55C8.72 21.65 9.08 20.79 9.71 20.16L12.64 17.23C13.38 16.49 14.4 16 15.45 16H20.08C21.13 16 22.12 15.66 22.86 14.92L23.79 14.09C26.65 11.53 31.2 13.5 31.29 17.34V17.5C31.29 18.4 30.94 19.26 30.3 19.89Z" /> </svg>`});var uo,co,go=c(()=>{"use strict";uo=require("lit"),co=()=>uo.html`<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"> <path d="M7.78 12.53a.75.75 0 0 1-1.06 0L2.47 8.28a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L4.81 7h7.44a.75.75 0 0 1 0 1.5H4.81l2.97 2.97a.75.75 0 0 1 0 1.06Z" fill="currentColor" /> </svg>`});var fo,mo,bo=c(()=>{"use strict";fo=require("lit");go();mo=({children:e,label:t,onClose:o})=>fo.html`<div class="flows-debug-popover-wide"> <div class="flows-debug-section-header"> <button class="flows-debug-btn flows-debug-section-close" @click=${o} type="button"> ${co()} </button> <p class="flows-debug-section-label">${t}</p> </div> <div class="flows-debug-section-content">${e}</div> </div>`});var vo,ko,yo=c(()=>{"use strict";vo=require("lit"),ko=()=>vo.html`<svg fill="currentColor" height="16" width="16" xmlns="http://www.w3.org/2000/svg"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z" /> </svg>`});var We,wo,ho=c(()=>{"use strict";P();We=require("lit");J();yo();wo=({position:e,onPositionChange:t})=>We.html` <div class="flows-debug-item"> <div> <label class="flows-debug-item-label" htmlFor="debug-panel-position"> Position </label> <p class="flows-debug-item-info">Sets the position of the debug panel on the screen.</p> </div> <div class="flows-debug-select-wrap"> <select class="flows-debug-select" id="debug-panel-position" @change=${r=>{let n=r.target.value;t(n)}} > ${Me.map(r=>We.html`<option ?selected=${r.value===e} value=${r.value}> ${r.label} </option>`)} </select> ${ko()} </div> </div> <div class="flows-debug-item"> <div> <p class="flows-debug-item-label">Debug panel shortcut</p> <p class="flows-debug-item-info"> Used to toggle the panel visibility even when debug mode is not active. </p> </div> <div class="flows-debug-shortcut-list"> <p class="flows-debug-shortcut">${de()?"Cmd":"Ctrl"}</p> <p class="flows-debug-shortcut">${de()?"Option":"Alt"}</p> <p class="flows-debug-shortcut">Shift</p> <p class="flows-debug-shortcut">F</p> </div> </div> <div class="flows-debug-item"> <div> <p class="flows-debug-item-label">Docs</p> <p class="flows-debug-item-info">Learn more about the debug panel and its features.</p> </div> <a class="flows-debug-button-secondary" href=${wt} target="_blank" rel="noopener noreferrer" > Open docs </a> </div> <div class="flows-debug-item"> <div> <p class="flows-debug-item-label">SDK version</p> <p class="flows-debug-item-info"> Make sure to keep your SDK up to date for the best experience. </p> </div> <p>${R}</p> </div> `});var xo,Bo,Po=c(()=>{"use strict";xo=require("lit"),Bo=({userId:e,userProperties:t})=>xo.html` <p class="flows-debug-info-line"> <strong>User ID:</strong> <code class="flows-debug-inline-code">${e}</code> </p> <p class="flows-debug-info-line"> <strong>User properties:</strong> </p> <pre class="flows-debug-code-block">${JSON.stringify(t!=null?t:{},null,2)}</pre> `});var Fe,z,To=c(()=>{"use strict";Fe=require("lit"),z=({label:e,secondary:t,onClick:o})=>Fe.html`<button class="flows-debug-btn flows-debug-item flows-debug-item-interactive" @click=${o} type="button" > <span class="flows-debug-item-label">${e}</span> ${t?Fe.html`<span class="flows-debug-item-secondary">${t}</span>`:null} </button>`});var fe,Io,Co=c(()=>{"use strict";P();fe=require("lit");J();To();Io=({blocks:e,organizationId:t,sdkSetupValid:o,setPanelPage:r,userId:n,pathname:s})=>fe.html`<div class="flows-debug-popover-narrow"> <div class="flows-debug-item-list"> ${z({label:"User",onClick:()=>{r("user")},secondary:n?fe.html`<code class="flows-debug-inline-code">${n}</code>`:"Not set"})} ${z({label:"SDK setup",onClick:()=>{r("sdk-setup")},secondary:o?"Valid":fe.html`<span class="flows-debug-validation-invalid">Error</span>`})} ${z({label:"Blocks",onClick:()=>{r("blocks")},secondary:`${e.length} loaded`})} ${z({label:"Pathname",onClick:()=>{r("pathname")},secondary:s})} </div> <hr /> <div class="flows-debug-item-list"> ${z({label:"Settings",onClick:()=>{r("settings")},secondary:R})} <a href=${yt(t)} target="_blank" rel="noopener noreferrer" class="flows-debug-item flows-debug-item-interactive flows-debug-item-label" > Open Flows dashboard </a> </div> </div>`});var Mo,So,Eo=c(()=>{"use strict";Mo=require("lit"),So=({blocks:e})=>Mo.html`<p class="flows-debug-info-line"><strong>Loaded blocks:</strong> ${e.length}</p> <p class="flows-debug-info-line"> <strong>Blocks JSON:</strong> </p> <pre class="flows-debug-code-block">${JSON.stringify(e,null,2)}</pre> <button class="flows-debug-btn flows-debug-button-secondary flows-debug-print-button" type="button" @click=${()=>{console.log(e)}} > Print to console </button>`});var me,Ao,Ro=c(()=>{"use strict";me=require("lit"),Ao=({organizationId:e,environment:t,statusItems:o})=>{let r=e||me.html`<span class="flows-debug-validation-invalid">Not set</span>`,n=t||me.html`<span class="flows-debug-validation-invalid">Not set</span>`;return me.html` <p class="flows-debug-info-line"> <strong>Organization ID:</strong> <code class="flows-debug-inline-code">${r}</code> </p> <p class="flows-debug-info-line"> <strong>Environment:</strong> <code class="flows-debug-inline-code">${n}</code> </p> <p class="flows-debug-info-line"> <strong>Validation:</strong> </p> ${o} `}});var Lo,No,Do=c(()=>{"use strict";Lo=require("lit"),No=({className:e})=>Lo.html`<svg fill="currentColor" height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg" class=${e} > <path fillRule="evenodd" clipRule="evenodd" d="M12.03 5.22032C12.1705 5.36094 12.2494 5.55157 12.2494 5.75032C12.2494 5.94907 12.1705 6.13969 12.03 6.28032L7.53003 10.7803C7.38941 10.9208 7.19878 10.9997 7.00003 10.9997C6.80128 10.9997 6.61066 10.9208 6.47003 10.7803L4.22003 8.53032C4.14634 8.46165 4.08724 8.37885 4.04625 8.28685C4.00526 8.19486 3.98322 8.09554 3.98144 7.99484C3.97966 7.89414 3.99819 7.79411 4.03591 7.70072C4.07363 7.60733 4.12977 7.5225 4.20099 7.45128C4.27221 7.38006 4.35705 7.32391 4.45043 7.28619C4.54382 7.24847 4.64385 7.22995 4.74455 7.23172C4.84526 7.2335 4.94457 7.25554 5.03657 7.29654C5.12857 7.33753 5.21137 7.39663 5.28003 7.47032L7.00003 9.19032L10.97 5.22032C11.1107 5.07987 11.3013 5.00098 11.5 5.00098C11.6988 5.00098 11.8894 5.07987 12.03 5.22032Z" /> </svg>`});var $o,Oo,Uo=c(()=>{"use strict";$o=require("lit"),Oo=({className:e})=>$o.html`<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg" class=${e} fill="currentColor" > <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z" /> </svg>`});var Ko,zo,Go=c(()=>{"use strict";Ko=require("lit"),zo=({pathname:e})=>Ko.html`<p class="flows-debug-info-line"> <strong>Pathname:</strong> </p> <p class="flows-debug-code-block flows-debug-info-line">${e}</p> <p class="flows-debug-info-line"> This pathname is used when evaluating page targeting conditions. </p>`});var Ho={};nt(Ho,{DebugPanel:()=>O});var U,G,be,Fo,_o,Vo,Wo,O,br,Zo=c(()=>{"use strict";U=require("lit"),G=require("lit/decorators.js");so();P();be=require("clsx"),Fo=require("@lit-labs/preact-signals");S();po();bo();ho();Po();Co();Eo();Ro();Do();Uo();Go();O=class extends(0,Fo.SignalWatcher)(U.LitElement){constructor(){super(...arguments);this.forceOpen=!1;le(this,_o,!1);le(this,Vo,vt());le(this,Wo)}get _open(){return ae(this,_o)}set _open(o){pe(this,_o,o)}get _position(){return ae(this,Vo)}set _position(o){pe(this,Vo,o)}get _page(){return ae(this,Wo)}set _page(o){pe(this,Wo,o)}_toggleOpen(){this._open=!this._open}_handlePositionChange(o){this._position=o,localStorage.setItem(Ce,o)}_handlePageChange(o){this._page=o}connectedCallback(){super.connectedCallback(),this._open=this.forceOpen}createRenderRoot(){return this}render(){var d,f,p;let o=(d=v.value)==null?void 0:d.organizationId,r=(f=v.value)==null?void 0:f.userId,n=(p=v.value)==null?void 0:p.environment,s=y.value,a=T.value,i=[{key:"organizationId",valid:o&&mt.test(o)},{key:"userId",valid:!!r},{key:"environment",valid:!!n},{key:"apiError",valid:!j.value&&!q.value}],l=i.every(u=>u.valid),m=(()=>{var u,g,L,I,E,C,ne,se,qe,Ye,Je,Xe;return this._page==="user"?Bo({userId:(g=(u=v.value)==null?void 0:u.userId)!=null?g:"",userProperties:(L=v.value)==null?void 0:L.userProperties}):this._page==="blocks"?So({blocks:s}):this._page==="sdk-setup"?Ao({environment:(E=(I=v.value)==null?void 0:I.environment)!=null?E:"",organizationId:(ne=(C=v.value)==null?void 0:C.organizationId)!=null?ne:"",statusItems:U.html`${i.map(we=>{let or=we.valid?No({className:"flows-debug-validation-valid"}):Oo({className:"flows-debug-validation-invalid"}),rr=Se[we.key][bt(we.valid)];return U.html`<div class="flows-debug-validation-item"> ${or} <p>${rr}</p> </div>`})}`}):this._page==="pathname"?zo({pathname:a}):this._page==="settings"?wo({position:this._position,onPositionChange:this._handlePositionChange.bind(this)}):Io({blocks:s,userId:(qe=(se=v.value)==null?void 0:se.userId)!=null?qe:"",organizationId:(Je=(Ye=v.value)==null?void 0:Ye.organizationId)!=null?Je:"",sdkSetupValid:l,setPanelPage:this._handlePageChange.bind(this),pathname:(Xe=T.value)!=null?Xe:""})})();return U.html`<div class=${(0,be.clsx)("flows-debug",`flows-debug-${this._position}`)}> <button class=${(0,be.clsx)("flows-debug-btn","flows-debug-menu",!l&&"flows-debug-menu-error")} type="button" @click="${this._toggleOpen.bind(this)}" > <div class=${(0,be.clsx)("flows-debug-menu-inset",!l&&"flows-debug-menu-inset-error")} > ${lo()} </div> </button> ${this._open?U.html`<div class="flows-debug-popover"> ${br({children:m,onClose:()=>{this._handlePageChange(void 0)},page:this._page})} </div>`:null} <style> ${io} </style> </div> `}};_o=new WeakMap,Vo=new WeakMap,Wo=new WeakMap,V([(0,G.property)({type:Boolean})],O.prototype,"forceOpen",2),V([(0,G.state)()],O.prototype,"_open",1),V([(0,G.state)()],O.prototype,"_position",1),V([(0,G.state)()],O.prototype,"_page",1);br=({children:e,onClose:t,page:o})=>o?mo({children:e,label:Se.title[o],onClose:t}):e});var Cr={};nt(Cr,{addFloatingBlocksChangeListener:()=>xr,addSlotBlocksChangeListener:()=>Br,getCurrentFloatingBlocks:()=>hr,getCurrentSlotBlocks:()=>tr,init:()=>yr,resetAllWorkflowsProgress:()=>Pr,resetWorkflowProgress:()=>Tr,startWorkflow:()=>Ir});module.exports=lr(Cr);P();P();var Q=require("@preact/signals-core"),qt=require("es-toolkit");S();P();S();J();var x=async e=>{let t=v.value;if(!t)return;let{environment:o,organizationId:r,userId:n,apiUrl:s}=t;await ue(s,R).sendEvent(k(b({},e),{environment:o,organizationId:r,userId:n}))},jt=new Set,Ge=async e=>{jt.has(e)||(jt.add(e),await x({name:"block-activated",blockId:e}))};var _e=(e,t)=>{let o=new Set(h.peek().map(r=>r.blockId));e.forEach(r=>{var s;o.has(r.id)||!At(r,t)||(h.value=[...h.peek(),{blockId:r.id,currentBlockIndex:(s=r.currentTourIndex)!=null?s:0}])})},Yt=(e,t)=>{h.value=h.value.map(o=>o.blockId===e?t(o):o)},Jt=(e,t)=>{if(t===0)return;let r=t-1;x({name:"tour-update",blockId:e.id,properties:{currentTourIndex:r}}),setTimeout(()=>{Yt(e.id,n=>k(b({},n),{currentBlockIndex:r}))},0)},D=(e,t)=>{var r,n;if(t===((n=(r=e.tourBlocks)==null?void 0:r.length)!=null?n:1)-1)Y(e.id),x({name:"transition",blockId:e.id,propertyKey:"complete"});else{let s=t+1;x({name:"tour-update",blockId:e.id,properties:{currentTourIndex:s}}),setTimeout(()=>{Yt(e.id,a=>k(b({},a),{currentBlockIndex:s}))},0)}},Xt=e=>{Y(e),x({name:"transition",blockId:e,propertyKey:"cancel"})},gr=e=>{let t=new Map(y.peek().map(o=>[o.id,o]));h.value.forEach(o=>{var a,i,l;let r=t.get(o.blockId);if(!r)return;let n=(a=r.tourBlocks)==null?void 0:a.at(o.currentBlockIndex);if(!n)return;let s=n.tourWait;if(s&&s.interaction==="click"){let m=M({pathname:A(),operator:(i=s.page)==null?void 0:i.operator,value:(l=s.page)==null?void 0:l.value});ge({eventTarget:e,value:s.element})&&m&&D(r,o.currentBlockIndex)}})},Qt=e=>{let t=e.target;t instanceof Element&&gr(t),_e(K.value,{pathname:A(),event:e})},X=new Map;(0,Q.effect)(()=>{let e=T.value,t=h.value,o=K.value,r=new Map(o.map(n=>[n.id,n]));t.forEach(n=>{var m,d,f;let s=r.get(n.blockId);if(!s)return;let a=(m=s.tourBlocks)==null?void 0:m.at(n.currentBlockIndex);if(!a)return;let i=X.get(n.blockId);i&&i.stepId!==a.id&&(clearTimeout(i.timeoutId),X.delete(n.blockId));let l=a.tourWait;if(l&&(l.interaction==="navigation"&&M({pathname:e,operator:(d=l.page)==null?void 0:d.operator,value:(f=l.page)==null?void 0:f.value})&&D(s,n.currentBlockIndex),l.interaction==="delay"&&l.ms!==void 0&&!X.has(n.blockId))){let p=window.setTimeout(()=>{D(s,n.currentBlockIndex),X.delete(n.blockId)},l.ms);X.set(n.blockId,{timeoutId:p,stepId:a.id})}})});(0,Q.effect)(()=>{let e=K.value,t=new Set(e.map(o=>o.id));h.value=h.peek().filter(o=>t.has(o.blockId))});(0,Q.effect)(()=>{let e=K.value,t=T.value;t&&_e(e,{pathname:t})});var fr=e=>{let t=new Map(y.peek().map(o=>[o.id,o]));e.forEach(o=>{var i,l,m,d,f;let r=t.get(o.blockId);if(!r)return;let n=(i=r.tourBlocks)==null?void 0:i.at(o.currentBlockIndex);if(!n)return;let s=n.tourWait;if(!s)return;let a=s.element;if(s.interaction==="dom-element"){let p=M({pathname:A(),operator:(l=s.page)==null?void 0:l.operator,value:(m=s.page)==null?void 0:m.value});Ct(a)&&p&&D(r,o.currentBlockIndex)}if(s.interaction==="not-dom-element"){let p=M({pathname:A(),operator:(d=s.page)==null?void 0:d.operator,value:(f=s.page)==null?void 0:f.value});Mt(a)&&p&&D(r,o.currentBlockIndex)}})};(0,Q.effect)(()=>{if(typeof window=="undefined")return;let e=K.value,t=h.value,r=(0,qt.debounce)(()=>{_e(e,{pathname:A()}),fr(t)},32),n=new MutationObserver(r);return n.observe(document.body,{childList:!0,subtree:!0,attributes:!0}),r(),()=>{n.disconnect()}});var eo=e=>{Qt(e)};P();S();S();var Ve=0,to=e=>{let t=()=>{let o=new WebSocket(e.url);q.value=!1;let r=()=>{e.onOpen(),Ve=0},n=()=>{setTimeout(()=>{t()},Math.min(1e3*4**Ve,12e4)),Ve+=1},s=()=>{q.value=!0};return o.addEventListener("message",e.onMessage),o.addEventListener("open",r),o.addEventListener("close",n),o.addEventListener("error",s),{disconnect:()=>{o.removeEventListener("message",e.onMessage),o.removeEventListener("open",r),o.removeEventListener("close",n),o.removeEventListener("error",s),o.readyState===WebSocket.CONNECTING?o.addEventListener("open",()=>{o.close()}):o.close()}}};return t()};J();var $=null,oo=e=>{let{environment:t,organizationId:o,userId:r,apiUrl:n}=e,s={environment:t,organizationId:o,userId:r},a=`${n.replace("https://","wss://").replace("http://","ws://")}/ws/sdk/block-updates?${new URLSearchParams(s).toString()}`,i=()=>{j.value=!1,ue(n,R).getBlocks(k(b({},s),{language:Bt(e.language),userProperties:e.userProperties})).then(d=>{var p;let f=Z.value.reduce(Pe,d.blocks);N.value=f,Z.value=[],(p=d.meta)!=null&&p.usage_limited&&($==null||$())}).catch(d=>{j.value=!0,B.error("Failed to load blocks",d)})},l=d=>{let f=Gt(d);f&&f.type==="block-updates"&&(N.value?N.value=Pe(y.value,f):Z.value=[...Z.value,f])};$==null||$(),$=to({url:a,onMessage:l,onOpen:i}).disconnect};var ro=[],no=e=>{ro.forEach(({type:t,handler:o})=>{document.removeEventListener(t,o,!0)}),e.forEach(({type:t,handler:o})=>{document.addEventListener(t,o,!0)}),ro=e};S();P();var ve=require("@preact/signals-core"),ee="flows-debug-panel",te=(0,ve.signal)({enabled:!1,forceOpen:!1}),vr=async()=>{if(typeof window!="undefined"&&!document.querySelector(ee))try{let{DebugPanel:e}=await Promise.resolve().then(()=>(Zo(),Ho));customElements.get(ee)||customElements.define(ee,e);let t=document.createElement(ee);t.forceOpen=te.value.forceOpen,document.body.appendChild(t)}catch(e){B.error("Failed to load the DebugPanel module",e)}},kr=()=>{if(typeof window=="undefined")return;let e=document.querySelector(ee);e&&e.remove()};(0,ve.effect)(()=>{te.value.enabled?vr():kr()});var jo=e=>t=>{if((e!=null?e:ht)(t)){let r=!te.value.enabled;sessionStorage.setItem(Ie,String(r)),r?B.info("Debug mode enabled"):B.info("Debug mode disabled"),te.value={enabled:r,forceOpen:r}}},qo=e=>{te.value={enabled:kt(e),forceOpen:!1}};var He=null,yr=r=>{var n=r,{debug:e,onDebugShortcut:t}=n,o=rt(n,["debug","onDebugShortcut"]);var f;let s=(f=o.apiUrl)!=null?f:"https://api.flows-cloud.com";v.value=k(b({},o),{apiUrl:s});let{environment:a,organizationId:i,userId:l,userProperties:m,language:d}=o;oo({apiUrl:s,environment:a,organizationId:i,userId:l,userProperties:m,language:d}),He!==null&&clearInterval(He),He=window.setInterval(()=>{let p=A();T.value!==p&&(T.value=p)},250),no([{type:"click",handler:eo},{type:"keydown",handler:jo(t)}]),qo(e)};var re=require("@preact/signals-core");S();P();S();var ke=({block:e,userProperties:t})=>{if(!e.componentType)return[];let r=Te({block:e,userProperties:t,removeBlock:Y,exitNodeCb:({key:s,blockId:a})=>x({name:"transition",blockId:a,propertyKey:s}),setStateMemory:async({blockId:s,key:a,value:i})=>{Vt(s,l=>{var m;return k(b({},l),{propertyMeta:(m=l.propertyMeta)==null?void 0:m.map(d=>d.type==="state-memory"&&d.key===a?k(b({},d),{value:i}):d)})}),await x({name:"set-state-memory",blockId:s,propertyKey:a,properties:{value:i}})}}),n={id:e.id,type:"component",component:e.componentType,props:r};return ze(n,Ge)},ye=({block:e,currentIndex:t,userProperties:o})=>{let r=e.tourBlocks;if(!(r!=null&&r.length))return[];let n=r.at(t);if(!(n!=null&&n.componentType))return[];let s=gt({tourSteps:r,tourStep:n,currentIndex:t,userProperties:o,handleContinue:()=>{D(e,t)},handlePrevious:()=>{Jt(e,t)},handleCancel:()=>{Xt(e.id)}}),a={id:n.id,tourBlockId:e.id,type:"tour-component",component:n.componentType,props:s};return ze(a,Ge)};var oe=require("@preact/signals-core");P();S();var Yo=(0,oe.computed)(()=>y.value.filter(e=>M({pathname:T.value,operator:e.page_targeting_operator,value:e.page_targeting_values}))),Ze=(0,oe.computed)(()=>{let e=new Map(y.value.map(t=>[t.id,t]));return h.value.filter(t=>{var n;let o=e.get(t.blockId),r=(n=o==null?void 0:o.tourBlocks)==null?void 0:n.at(t.currentBlockIndex);return M({pathname:T.value,operator:r==null?void 0:r.page_targeting_operator,value:r==null?void 0:r.page_targeting_values})}).flatMap(t=>{let o=e.get(t.blockId);return o?k(b({},t),{block:o}):[]})}),je=(0,oe.computed)(()=>{let e=v.value,t=Yo.value.filter(r=>!r.slottable).flatMap(r=>{var n;return ke({block:r,userProperties:(n=e==null?void 0:e.userProperties)!=null?n:{}})}),o=Ze.value.filter(r=>{var s;let n=(s=r.block.tourBlocks)==null?void 0:s.at(r.currentBlockIndex);return!(n!=null&&n.slottable)}).flatMap(r=>{var n;return ye({block:r.block,currentIndex:r.currentBlockIndex,userProperties:(n=e==null?void 0:e.userProperties)!=null?n:{}})});return[...t,...o]}),Jo=(0,oe.computed)(()=>Yo.value.filter(e=>e.slottable));var Qo=e=>"type"in e,Xo=e=>{var o,r,n;if(Qo(e))return(o=e.slotIndex)!=null?o:0;let t=(r=e.block.tourBlocks)==null?void 0:r.at(e.currentBlockIndex);return(n=t==null?void 0:t.slotIndex)!=null?n:0},er=new Map,wr=e=>{let t=(0,re.computed)(()=>{let o=v.value,r=Jo.value.filter(a=>a.slottable&&a.slotId===e),n=Ze.value.filter(a=>{var l;let i=(l=a.block.tourBlocks)==null?void 0:l.at(a.currentBlockIndex);return(i==null?void 0:i.slottable)&&i.slotId===e});return[...r,...n].sort((a,i)=>Xo(a)-Xo(i)).flatMap(a=>{var i,l;return Qo(a)?ke({block:a,userProperties:(i=o==null?void 0:o.userProperties)!=null?i:{}}):ye({block:a.block,currentIndex:a.currentBlockIndex,userProperties:(l=o==null?void 0:o.userProperties)!=null?l:{}})})});return er.set(e,t),t},hr=()=>je.value,tr=e=>{var t,o;return(o=(t=er.get(e))==null?void 0:t.value)!=null?o:wr(e).value},xr=e=>(0,re.effect)(()=>{e(je.value)}),Br=(e,t)=>(0,re.effect)(()=>{t(tr(e))}),Pr=()=>x({name:"reset-progress"}),Tr=e=>x({name:"reset-progress",workflowId:e}),Ir=e=>x({name:"workflow-start",blockKey:e});