backflow-ui-renderer 0.1.38 → 0.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +12 -1
- package/dist/index.js +13 -1
- package/dist/renderer/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -194,7 +194,7 @@ ${c.join(`
|
|
|
194
194
|
`}function oht(e,t,n,r){return v.createElement("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",width:"100%",height:"100%",minHeight:"100%",backgroundColor:e.colors.background,gap:"16px"}},U("p",{style:{color:e.colors.text,fontSize:"1.125rem"}},"Scene not found"),v.createElement("div",{style:{display:"flex",gap:"12px",alignItems:"center"}},t>0&&v.createElement("button",{onClick:n,style:{padding:"0.5rem 1.5rem",borderRadius:"0.5rem",backgroundColor:e.colors.surfaceHover,color:e.colors.text,border:"none",cursor:"pointer",fontSize:"0.875rem",fontWeight:500,transition:e.effects.transition},onMouseOver:i=>i.target.style.backgroundColor=e.colors.border,onMouseOut:i=>i.target.style.backgroundColor=e.colors.surfaceHover},"← Go Back"),r&&v.createElement("button",{onClick:r,style:{display:"flex",alignItems:"center",gap:"6px",padding:"0.5rem 1.5rem",borderRadius:"0.5rem",backgroundColor:e.colors.primary,variant:"outline",color:e.colors.text,border:"none",cursor:"pointer",fontSize:"0.875rem",fontWeight:500,transition:"opacity 0.2s"},onMouseOver:i=>i.target.style.opacity="0.85",onMouseOut:i=>i.target.style.opacity="1"},v.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},U("polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2"})),"Generate Scene")))}function sht(e){return v.createElement("div",{key:"preview-modal",style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.5)",backdropFilter:"blur(4px)",WebkitBackdropFilter:"blur(4px)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e4,animation:"bf-fade-in 0.15s ease"}},v.createElement("div",{style:{backgroundColor:e.colors.background,borderRadius:"12px",padding:"24px",maxWidth:"360px",width:"90%",boxShadow:"0 20px 40px rgba(0, 0, 0, 0.4)",border:"1px solid rgba(255, 255, 255, 0.08)"}},U("h3",{style:{color:e.colors.text,fontSize:"16px",fontWeight:600,marginBottom:"12px"}},"Sample Modal"),U("p",{style:{color:e.colors.textSecondary,fontSize:"14px",marginBottom:"20px"}},"This is a preview of the modal component for styling."),v.createElement("div",{style:{display:"flex",gap:"12px",justifyContent:"flex-end"}},U("button",{style:{padding:"10px 20px",borderRadius:"8px",cursor:"pointer",fontSize:"14px",fontWeight:500,background:"rgba(255,255,255,0.08)",color:e.colors.text,border:`1px solid ${e.colors.borderSubtle}`}},"Cancel"),U("button",{style:{padding:"10px 20px",borderRadius:"8px",cursor:"pointer",fontSize:"14px",fontWeight:500,background:e.colors.primary,color:e.colors.text,border:"none"}},"Confirm"))))}function bT(e,t,n,r,i,o,s){var O,R,N,V,D,j,K,H,z,Y,G;if(!e)return null;const{definition:l,closing:c}=e,h=l.variant?(O=l.variants)==null?void 0:O[l.variant]:void 0,u={...l,...h,style:{...l.style,...h==null?void 0:h.style},components:(h==null?void 0:h.components)||l.components,actions:(h==null?void 0:h.actions)||l.actions},f=u.popover===!0,m=(R=u.style)==null?void 0:R.placement,y=m==="left"||m==="right"||m==="bottom"?m:"center",x=u.drawer===!0||y==="left"||y==="right",p=y==="bottom",b=c===!0,P=u.className||"",S=P?((N=n.parseClassNameResponsive)==null?void 0:N.call(n,P,`modal-${e.id}`))??n.parseClassName(P):{},A=f&&s&&s.top>window.innerHeight/2&&s.bottom+300>window.innerHeight,E=s?Math.min(Math.max(12,s.left),Math.max(12,window.innerWidth-372)):void 0,w=()=>{var J;b||(J=i||n.dismissModal)==null||J()},T=v.createElement("div",{key:`modal-overlay-${e.id||"base"}`,style:{position:"fixed",top:0,left:0,right:0,bottom:0,animation:b?"bf-fade-out 0.2s ease forwards":"bf-fade-in 0.15s ease",backdropFilter:f?void 0:"blur(4px)",WebkitBackdropFilter:f?void 0:"blur(4px)",display:"flex",alignItems:f?"flex-start":p?"flex-end":"center",justifyContent:f?"flex-end":x?y==="left"?"flex-start":"flex-end":"center",paddingTop:void 0,paddingRight:void 0,backgroundColor:f?"transparent":((V=u.style)==null?void 0:V.overlayColor)||"rgba(0,0,0,0.45)",pointerEvents:"auto",zIndex:o||1e4},onClick:J=>{J.target===J.currentTarget&&w()}},v.createElement("div",{className:P||void 0,style:{pointerEvents:f?"auto":void 0,...f?{position:"fixed",top:A||!s?A?void 0:"116px":`${s.bottom+8}px`,bottom:A?`${Math.max(12,window.innerHeight-s.top+8)}px`:void 0,left:E===void 0?void 0:`${E}px`,right:E===void 0?"24px":void 0}:{},backgroundColor:((D=u.style)==null?void 0:D.backgroundColor)||r||t.colors.background,borderRadius:x?"0px":((j=u.style)==null?void 0:j.borderRadius)||(p?"16px 16px 0 0":"12px"),padding:x?"0.5rem":p?"16px":"24px",height:x?"100%":"auto",maxHeight:p?"90vh":x?void 0:"85vh",maxWidth:x?"520px":p?n.isMobileView?"none":"640px":((K=u.style)==null?void 0:K.width)||{sm:"min(360px, 92vw)",md:"min(480px, 92vw)",lg:"min(720px, 92vw)",full:"90vw"}[u.size||"sm"]||"min(400px, 92vw)",width:(H=u.style)!=null&&H.width?"100%":x?"90vw":p?"100%":"90%",boxShadow:x?y==="left"?"4px 0 24px rgba(0, 0, 0, 0.4)":"-4px 0 24px rgba(0, 0, 0, 0.4)":p?"0 -8px 32px rgba(0, 0, 0, 0.45)":"0 20px 40px rgba(0, 0, 0, 0.4)",...f?{minWidth:"min(360px, 92vw)",marginRight:"0px",boxShadow:"0 12px 32px rgba(0, 0, 0, 0.45)"}:{},border:"none",borderLeft:x&&y==="right"?`1px solid ${((z=u.style)==null?void 0:z.borderColor)||"rgba(255, 255, 255, 0.08)"}`:"none",borderRight:x&&y==="left"?`1px solid ${((Y=u.style)==null?void 0:Y.borderColor)||"rgba(255, 255, 255, 0.08)"}`:"none",overflow:"auto",animation:x?b?y==="left"?"bf-slide-out-left 0.2s ease forwards":"bf-slide-out-right 0.2s ease forwards":y==="left"?"bf-slide-in-left 0.2s ease":"bf-slide-in-right 0.2s ease":p?b?"bf-slide-out-down 0.2s ease forwards":"bf-slide-in-up 0.25s ease":b?"bf-fade-out 0.2s ease forwards":void 0,...S}},p?v.createElement("div",{key:"bf-sheet-handle",style:{width:"40px",height:"4px",borderRadius:"2px",backgroundColor:"rgba(255, 255, 255, 0.2)",margin:"0 auto 12px",flexShrink:0}}):null,u.icon?v.createElement("div",{style:{textAlign:"center",marginBottom:"12px",display:"flex",justifyContent:"center"}},n.renderIcon(u.icon,32)):null,u.title?v.createElement("h3",{style:{color:t.colors.text,fontSize:u.icon?"18px":"16px",fontWeight:600,marginBottom:"12px",marginTop:"4px",paddingLeft:x?"1.5rem":"0px",paddingRight:x?"1.5rem":"0px",textAlign:u.icon?"center":"left"}},n.interpolateText(u.title)):null,...(u.components||[]).map((J,lt)=>zf(n,J,lt,"modal")),(((G=u.actions)==null?void 0:G.length)||0)>0?v.createElement("div",{style:{display:"flex",gap:"12px",justifyContent:"flex-end",marginTop:"20px"}},...(u.actions||[]).map((J,lt)=>{const nt=(ct=>{const mt=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(ct);if(!mt)return!1;const[yt,Et,Tt]=[parseInt(mt[1],16),parseInt(mt[2],16),parseInt(mt[3],16)];return(yt*299+Et*587+Tt*114)/1e3>150})(t.colors.primary)?"#000000":"#ffffff",it={primary:{background:t.colors.primary,color:nt,border:"none"},secondary:{background:"rgba(255, 255, 255, 0.08)",color:t.colors.text,border:`1px solid ${t.colors.borderSubtle}`},ghost:{background:"transparent",color:t.colors.text,border:`1px solid ${t.colors.borderSubtle}`},danger:{background:t.colors.danger,color:"#ffffff",border:"none"}},at=it[J.variant||"primary"]||it.primary;return v.createElement("button",{key:lt,onClick:()=>{if(e.legacyOnConfirm&&J.label==="Confirm"){w(),setTimeout(()=>{var ct;return(ct=e.legacyOnConfirm)==null?void 0:ct.call(e)},250);return}J.onClick&&n.handleButtonClick(J.onClick,{onSuccess:J.onSuccess,onError:J.onError}),J.dismiss&&w()},style:{padding:"10px 20px",borderRadius:"8px",cursor:"pointer",fontSize:"14px",fontWeight:500,...at}},J.label)})):null));return f&&typeof document<"u"?ub.createPortal(T,document.body):T}const aht=new va,hp=()=>{try{if(typeof window<"u")return window.localStorage.getItem("backflow_dev_diagnostics")==="1"}catch{}return!1},Zg=(...e)=>{hp()&&console.log(...e)},Yg=(...e)=>{hp()&&console.warn(...e)};let Q$=null;window.addEventListener("message",e=>{var t,n,r;(((t=e.data)==null?void 0:t.type)==="auth"||((n=e.data)==null?void 0:n.type)==="auth-token")&&((r=e.data)!=null&&r.token)&&(Q$=e.data.token,localStorage.setItem("token",e.data.token),e.data.refreshToken&&localStorage.setItem("backflow_refresh_token",e.data.refreshToken),e.data.userId&&localStorage.setItem("backflow_refresh_user_id",e.data.userId))});function $f(e){try{const t=JSON.parse(atob(e.split(".")[1]));return typeof t.exp!="number"||t.exp*1e3<=Date.now()}catch{return!0}}function lht({workflow:e,sdk:t,iconResolver:n,authToken:r,nativeAction:i,onRouteExecute:o,onJobProgress:s,appName:l,appIcon:c,selectedComponentKey:h,selectedComponentClass:u,styleOverrides:f,interactionDisabled:m,theme:y,imageReplacements:x,currentSceneId:p,onSceneChange:b,onGenerateScene:P,enableRouting:S,routingMode:A,previewElement:E,tenantId:w,appId:T,renderPhaserGame:O,renderMode:R,apiUrl:N,workflowBaseUrl:V,initialScene:D,previewMode:j,remoteSessionId:K,devDiagnostics:H}){var Vh,Rs,Uh,Cc,Hh,No,qh,Xi,Oc,Mc,Gh,Mr,kc,$c,jo,Zh;const z=(()=>{const M=Q$||localStorage.getItem("token");return!!M&&!$f(M)})(),[Y,G]=v.useState(!z),[J,lt]=v.useState(null),q=v.useMemo(()=>Array.isArray(e==null?void 0:e.steps)?e.steps:[],[e]),nt=v.useMemo(()=>{const M=q;return e&&!Array.isArray(e.steps)&&(Yg("[WorkflowRenderer] NON-ARRAY steps:",typeof e.steps,JSON.stringify(e.steps).slice(0,500)),Yg("[WorkflowRenderer] Workflow keys:",Object.keys(e))),Y!==!0?M:M.filter($=>{var I,Z;return!($.requiresAuth===!0||((I=$.config)==null?void 0:I.requireAuth)===!0||((Z=$.config)==null?void 0:Z.requiresAuth)===!0)})},[e,Y,q]),it=v.useCallback(M=>{var I;const $=q.find(Z=>Z.id===M);return((I=$==null?void 0:$.config)==null?void 0:I.requireAuth)===!0||($==null?void 0:$.requiresAuth)===!0},[q]),at=e&&!((Vh=e.config)!=null&&Vh.colorMode)?dI(e):void 0,ct=jT(at?{...(e==null?void 0:e.config)||{},colorMode:at}:e==null?void 0:e.config,void 0,y),mt=!((Rs=e==null?void 0:e.config)!=null&&Rs.colorMode)&&!at&&!(y!=null&&y.colorMode),yt=M=>Sx(M,{primary:le.colors.primary,accent:le.colors.accent,colorMode:le.colorMode},mt),Et=R||"legacy",Tt=A||(S?"hash":"memory"),ht=Tt!=="memory",[ft,Ct]=v.useState(z),[rt,Rt]=v.useState(!1),[bt,de]=v.useState(!1),{sceneToRoute:ne,routeToScene:Gt}=v.useMemo(()=>X$(nt),[nt]),Le=v.useMemo(()=>{var $,I;if(D&&nt.some(Z=>Z.id===D))return D;const M=nt.filter(Z=>Z.type==="render_scene");return(($=M.find(Z=>Z.route==="/"))==null?void 0:$.id)||((I=M[0])==null?void 0:I.id)||""},[nt,D]),Bt=v.useMemo(()=>{if(ht){const M=Tt==="hash"?lb(Gt):yT(Gt);if(M)return M}return Le},[Le,ht,Tt,Gt]),[Qt,te]=v.useState([]),[Ht,re]=v.useState(Bt),Ce=v.useRef(null),ie=_C(Ce),on=v.useRef(!1);v.useRef(null);const tn=v.useRef(!1),Ke=v.useRef(!1),_o=v.useRef(0),cn=v.useRef(null);v.useEffect(()=>(tn.current=!1,NT(),()=>{tn.current=!0}),[]),v.useEffect(()=>{r&&localStorage.setItem("token",r)},[r]);const Ot=p??Ht;v.useEffect(()=>{var tt,X,st;const M=nt.find(gt=>gt.id===Ot),$=!!((tt=e==null?void 0:e.config)!=null&&tt.remoteControl)&&!!(M!=null&&M.remoteScene);if(TT($),ET($&&!!((st=(X=e==null?void 0:e.config)==null?void 0:X.mouse)!=null&&st.enabled)),!$||!K){Jg();return}const I=N||(t==null?void 0:t.endpoint),Z=I&&/^https?:\/\//.test(I)?I:window.location.origin,B=new URL("/ws",Z);B.protocol=B.protocol==="https:"?"wss:":"ws:";const F=B.toString(),Q=`agent:${w||"default"}:${K}`;return LT(F,Q,r||localStorage.getItem("token")||void 0),()=>Jg()},[(Uh=e==null?void 0:e.config)==null?void 0:Uh.remoteControl,(Hh=(Cc=e==null?void 0:e.config)==null?void 0:Cc.mouse)==null?void 0:Hh.enabled,nt,Ot,K,w,N,t,r]);const Dn=v.useCallback(M=>{re(M),b==null||b(M)},[b]);v.useEffect(()=>{var I;const M=nt.find(Z=>Z.id===Ot),$=((I=M==null?void 0:M.config)==null?void 0:I.requireAuth)===!0||(M==null?void 0:M.requiresAuth)===!0;Ot&&!$&&Rt(!1)},[Ot,nt]);const Fe=(e==null?void 0:e.modals)||{};v.useEffect(()=>{if(!ft)return;const M=le.startupModal;!M||!Fe[M]||localStorage.getItem(`backflow_startup_modal_${M}`)||un({id:M,definition:Fe[M]})},[ft]);const Ci=v.useRef(typeof window>"u"?null:new URLSearchParams(window.location.search).get("customer_session_token"));v.useEffect(()=>{if(!ft||!Ci.current||!Fe["payment-success"])return;window.history.replaceState({},"",window.location.pathname);const $=setTimeout(()=>{Fe["payment-success"]&&un({id:"payment-success",definition:Fe["payment-success"]})},400);return()=>clearTimeout($)},[ft,Fe["payment-success"]]),v.useEffect(()=>{Y===!0&&(!Ot||nt.some(M=>M.id===Ot)||Le&&Dn(Le))},[Y,nt,Ot,Le]),v.useEffect(()=>{if(ht){if(on.current){on.current=!1;return}Tt==="hash"?Ff(Ot,ne,!1):Gg(Ot,ne,!1)}},[Ot,ht,Tt,ne]),v.useEffect(()=>{ht&&(Tt==="hash"?Ff(Ot,ne,!0):Gg(Ot,ne,!0))},[]);const So=v.useRef(!0);v.useEffect(()=>{const M=setTimeout(()=>{So.current=!1},1500);return()=>clearTimeout(M)},[]),v.useEffect(()=>{if(!ht)return;const M=$=>{var Z;if(So.current)return;const I=((Z=$.state)==null?void 0:Z.sceneId)||(Tt==="hash"?lb(Gt):yT(Gt));I&&I!==Ot&&(on.current=!0,Dn(I),te(B=>B.length>0&&B[B.length-1]===I?B.slice(0,-1):B))};return window.addEventListener("popstate",M),()=>window.removeEventListener("popstate",M)},[ht,Tt,Gt,Ot,Dn]),v.useEffect(()=>{var $;const M=(($=nt.find(I=>I.type==="render_scene"))==null?void 0:$.id)||"";if(M&&M!==Ot){if(re(M),te([]),b==null||b(M),!ht)return;Tt==="hash"?Ff(M,ne,!0):Gg(M,ne,!0)}},[e]),v.useEffect(()=>{p&&p!==Ht&&re(p)},[p]);const Po=v.useCallback(()=>{if(ht){window.history.back();return}if(Qt.length>0){const M=Qt[Qt.length-1];te($=>$.slice(0,-1)),Dn(M)}},[Qt,ht]),[he,se]=v.useState({}),ii=v.useRef(he);v.useEffect(()=>{ii.current=he},[he]),v.useEffect(()=>{K&&se(M=>M.remoteSessionId===K?M:{...M,remoteSessionId:K})},[K]);const Oi=v.useMemo(()=>Array.isArray(e==null?void 0:e.workflowRefs)?e.workflowRefs:[],[e]),Pr=v.useMemo(()=>Oi.filter(M=>M.sceneIds==="*"||Array.isArray(M.sceneIds)&&M.sceneIds.includes(Ot)),[Ot,Oi]),[Mi,ms]=v.useState({}),ki=v.useRef({}),oi=v.useCallback(async(M,$=!1)=>{if(!ft||!M.appId)return;const I=N||(t==null?void 0:t.endpoint)||window.location.origin,Z=!N&&typeof I=="string"&&I.startsWith("/")?I.replace(/\/+$/,""):"",B=/^https?:\/\//.test(I)?I:window.location.origin,F=`${Z}/mobile/apps/${encodeURIComponent(M.appId)}/workflow`,Q=await fetch(new URL(F,B).toString(),{cache:$?"no-cache":"default",headers:{Authorization:`Bearer ${r||localStorage.getItem("token")||""}`}});if(!Q.ok)throw new Error(`Workflow reference ${M.id} failed`);const tt=await Q.json(),X=(tt==null?void 0:tt.app)||tt;if(!Array.isArray(X==null?void 0:X.steps))throw new Error(`Workflow reference ${M.id} is invalid`);ms(st=>({...st,[M.id]:X}))},[N,r,ft,t]);v.useEffect(()=>{let M=!1;for(const $ of Pr){const I=`${$.appId}:${$.sourceSceneId||""}`;ki.current[$.id]!==I&&(ki.current[$.id]=I,oi($).catch(()=>{M||delete ki.current[$.id]}))}return()=>{M=!0}},[Pr,oi]),v.useEffect(()=>{var Z;const M=Pr.filter(B=>{var F;return((F=B.realtime)==null?void 0:F.mode)==="ws"});if(M.length===0||!w)return;const $=(Z=t==null?void 0:t.client)==null?void 0:Z.createWebSocket;if(!$)return;const I=$(`tenant:${w}:entities`);return I.onmessage=B=>{let F;try{F=JSON.parse(B.data)}catch{return}if(!(F.type!=="entity_changed"||F.entity!=="mobile_apps"))for(const Q of M)F.id===Q.appId&&oi(Q,!0).catch(()=>{})},()=>I.close()},[Pr,oi,w,t]);const[$i,Wr]=v.useState({}),Ao=v.useRef(new Set),[Ii,Ri]=v.useState({}),[Ar,Li]=v.useState({}),[Ni,En]=v.useState({}),[$t,To]=v.useState({}),[Cn,ji]=v.useState({}),[Eo,si]=v.useState([]),Di=v.useRef(new Set),pr=v.useRef(new Map),Bi=v.useCallback((M,$)=>{if(!(H??hp()))return;const I=`${M}:${$}`;Di.current.has(I)||(Di.current.add(I),si(Z=>[...Z,{level:"warn",code:M,where:`runtime:${Ot}`,msg:$}]))},[Ot,H]),gs=v.useCallback((M,$)=>{if(!(H??hp()))return;const I=Date.now(),Z=(pr.current.get(M)||[]).filter(Q=>I-Q.at<2e3),B=Z.find(Q=>Q.componentKey!==$&&I-Q.at<500);Z.push({componentKey:$,at:I}),pr.current.set(M,Z),B&&Bi("DATASOURCE_DUPLICATE_RUNTIME",`"${M}" fetched by ${B.componentKey} and ${$} within 500ms`);const F=Z.filter(Q=>Q.componentKey===$);F.length>=3&&Bi("RENDER_FETCH_LOOP",`"${M}" fetched ${F.length} times by ${$} within 2s`)},[H,Bi]);v.useEffect(()=>{Di.current.clear(),pr.current.clear(),si([])},[Ot]);const Gn=v.useRef(new Map),zi=v.useRef(new Map),ys=v.useRef(new Set),[vs,bs]=v.useState(!1),[Ae,un]=v.useState(null),[Ea,xs]=v.useState(null),ws=v.useRef(null);v.useEffect(()=>{var $;if(!(($=Ae==null?void 0:Ae.definition)!=null&&$.popover))return;const M=()=>{const I=ws.current;I&&xs(I.getBoundingClientRect())};return window.addEventListener("scroll",M,!0),window.addEventListener("resize",M),M(),()=>{window.removeEventListener("scroll",M,!0),window.removeEventListener("resize",M)}},[Ae==null?void 0:Ae.id,(No=Ae==null?void 0:Ae.definition)==null?void 0:No.popover]);const Fi=v.useCallback(()=>{un(M=>M?{...M,closing:!0}:null),setTimeout(()=>un(null),250)},[]),[_n,tr]=v.useState(null),Co=v.useCallback(()=>{tr(M=>M?{...M,closing:!0}:null),setTimeout(()=>tr(null),250)},[]),ai=ie>0&&ie<Eu.md;v.useEffect(()=>{e&&typeof e=="object"&&(e.auth={signedIn:ft})},[e,ft]),v.useEffect(()=>{const M=e;if(!(M!=null&&M.config))return;if(c){M.config.logo=c,se(I=>I&&{...I});return}if(!V)return;let $=!1;return(async()=>{for(const I of["svg","png","jpg","jpeg"]){const Z=`${V}logo.${I}`;try{if((await fetch(Z,{method:"HEAD"})).ok&&!$){M.config.logo=Z,se(F=>F&&{...F});return}}catch{}}})(),()=>{$=!0}},[e,V,c]);const[On,ee]=v.useState("login"),[qt,mr]=v.useState(""),[ye,wt]=v.useState(""),[ve,It]=v.useState(""),[ae,_s]=v.useState({}),[Wi,Mn]=v.useState(""),[li,hn]=v.useState(null),[qe,ke]=v.useState(!1),[Te,Ss]=v.useState({}),Vr=M=>M?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(M)?null:"Invalid email address":null,Vi=M=>M?M.length>=6?null:"Password must be at least 6 characters":null,Ps=(M,$)=>$?$===M?null:"Passwords do not match":null,Tr=(M,$)=>Ss(I=>({...I,[M]:$||""})),Oo=M=>{var $,I;return M?typeof M=="string"?M:Array.isArray(M)?(($=M[0])==null?void 0:$.message)||"Validation failed":typeof M.message=="string"?M.message:typeof M.error=="string"?M.error:(I=M.error)!=null&&I.message?M.error.message:"An error occurred":"An error occurred"},Ui=(he==null?void 0:he._colorMode)||ct.colorMode,mc=Ui==="dark"?xu:wu,le=Ui!==ct.colorMode?{...ct,colorMode:Ui,colors:{...mc,...ct.colors&&Ui==="dark"?ct.colors:{}}}:ct;v.useEffect(()=>{typeof document>"u"||document.documentElement.setAttribute("data-theme",le.colorMode==="dark"?"dark":"light")},[le.colorMode]);const As=v.useCallback(M=>{try{localStorage.setItem("bf_theme",M)}catch{}se($=>({...$,_colorMode:M}))},[]);v.useEffect(()=>{if(typeof localStorage>"u")return;const M=localStorage.getItem("bf_theme");(M==="dark"||M==="light")&&se($=>({...$,_colorMode:M}))},[]),v.useEffect(()=>{const M=localStorage.getItem("token"),$=!!M&&!$f(M);$?(Ke.current=!1,G(!1)):G(!0),Ct($);const I=()=>{const F=localStorage.getItem("token"),Q=!!F&&!$f(F);Q?(Ke.current=!1,G(!1)):G(!0),Ct(Q)};window.addEventListener("storage",I);const Z=F=>{var Q,tt,X;if((((Q=F.data)==null?void 0:Q.type)==="auth"||((tt=F.data)==null?void 0:tt.type)==="auth-token")&&((X=F.data)!=null&&X.token)){if(localStorage.setItem("token",F.data.token),F.data.refreshToken&&localStorage.setItem("backflow_refresh_token",F.data.refreshToken),F.data.userId&&localStorage.setItem("backflow_refresh_user_id",F.data.userId),$f(F.data.token)){Ke.current=!0,Ct(!1);return}if(!ft&&(rt||Ke.current||!!cn.current)){window.location.reload();return}Ct(!0),Rt(!1),G(!1),Ke.current=!1}};window.addEventListener("message",Z);const B=()=>{var F;if(!Ke.current){const Q=nt.find(X=>X.id===Ot);if(!(((F=Q==null?void 0:Q.config)==null?void 0:F.requireAuth)===!0||(Q==null?void 0:Q.requiresAuth)===!0))return;Ke.current=!0,Ct(!1),Rt(!0)}};return window.addEventListener("auth:required",B),()=>{window.removeEventListener("storage",I),window.removeEventListener("message",Z),window.removeEventListener("auth:required",B)}},[]);const Eh=async()=>{var I;const M=localStorage.getItem("backflow_refresh_token"),$=localStorage.getItem("backflow_refresh_user_id");if(!M||!$)return!1;try{const B=await(await fetch(`${window.location.origin}/api/auth/refresh`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:M,userId:$})})).json();if(B.success&&((I=B.data)!=null&&I.token))return B.data.refreshToken&&localStorage.setItem("backflow_refresh_token",B.data.refreshToken),localStorage.setItem("token",B.data.token),!0}catch{}return localStorage.removeItem("backflow_refresh_token"),localStorage.removeItem("backflow_refresh_user_id"),!1},Mo=async(M,$=!1)=>{var I;if(M.status===401&&!rt){if(await Eh())return!1;if(Zg("[bf] 401 intercepted, showAuth:",rt,"authInterceptedRef:",Ke.current),!Ke.current){Ke.current=!0,localStorage.removeItem("token"),Ct(!1);const B=nt.find(Q=>Q.id===Ot),F=((I=B==null?void 0:B.config)==null?void 0:I.requireAuth)===!0||(B==null?void 0:B.requiresAuth)===!0;($||F)&&(Rt(!0),Ot&&(cn.current=Ot))}return!0}return!1},xm=Ot&&nt.some(M=>M.id===Ot)?Ot:(qh=nt[0])==null?void 0:qh.id,Dt=nt.find(M=>M.id===xm),pe=(Dt==null?void 0:Dt.type)==="render_scene"?Dt.config:null;v.useEffect(()=>{if(!pe)return;const M=w||"default",$={TENANT_ID:M,tenantId:M,role:"user"};se(I=>{const Z={};for(const B of Object.keys(I))B.startsWith("_")&&(Z[B]=I[B]);return{...$,...pe.sceneData||{},...Z}})},[Ot,pe]),v.useEffect(()=>{const M=le.persistedKeys;if(!M||M.length===0)return;const $={};for(const I of M){const Z=localStorage.getItem(`bf_persist_${I}`);Z&&($[I]=Z)}Object.keys($).length>0&&se(I=>({...I,...$}))},[Ot]),v.useEffect(()=>{const M=le.persistedKeys;if(!(!M||M.length===0))for(const $ of M){const I=he[$];I&&localStorage.setItem(`bf_persist_${$}`,String(I))}});const Ee=M=>{const $=M.match(/^(GET|POST|PATCH|DELETE|PUT)\s+(.+)/);return{method:$?$[1]:"POST",path:$?$[2]:M}},gc=M=>{const $={...M};return delete $.TENANT_ID,delete $.tenantId,delete $.role,$},Ur=v.useCallback(async M=>{var Z,B,F;if(!M.action)return;const $=String(M.action),I=ii.current;try{if($.startsWith("execute_workflow:")){if(!ft)return;const{method:Q,path:tt}=Ee($.replace("execute_workflow:","")),X=tt.replace(/:(\w+)/g,(At,a)=>{const d=I[a];return d===void 0?At:String(d)}).replace(/\{\{(\w+)\}\}/g,(At,a)=>{const d=I[a];return d===void 0?At:String(d)}),st=er(),gt=Q!=="GET"&&Q!=="DELETE";Q!=="GET"&&Ch(Q,X,I,!0);const vt=await fetch(new URL(X,st).toString(),{method:Q,headers:{"Content-Type":"application/json",Authorization:`Bearer ${r||localStorage.getItem("token")||""}`},...gt?{body:JSON.stringify(gc(I))}:{}});if(tn.current||await Mo(vt)||tn.current)return;if(!vt.ok)throw Zt(X),new Error(`Route failed: ${vt.statusText}`);const pt=await vt.json();if(tn.current)return;if(pt&&typeof pt=="object"&&!Array.isArray(pt)&&se(At=>({...At,feedback:pt})),((Z=M.onSuccess)==null?void 0:Z.type)==="toast"&&M.onSuccess.value)$e(M.onSuccess.value,"success");else if(((B=M.onSuccess)==null?void 0:B.type)==="navigate"&&M.onSuccess.value){const At=M.onSuccess.value;if(it(At)&&!ft){cn.current=At,Rt(!0);return}te(d=>[...d,Ot]),Dn(At)}pt!=null&&pt.data&&se(At=>({...At,...pt.data})),pt!=null&&pt.user&&typeof pt.user=="object"&&se(At=>({...At,user:pt.user})),sn.current[X.replace(/^\//,"")]={response:pt},se(At=>({...At}))}else if($.startsWith("navigate:")){const Q=$.replace("navigate:","");if(it(Q)&&!ft){cn.current=Q,Rt(!0);return}te(X=>[...X,Ot]),Dn(Q)}else if($.startsWith("go_to_step:")){const Q=$.replace("go_to_step:","").split("?")[0].trim();if(it(Q)&&!ft){cn.current=Q,Rt(!0);return}te(X=>[...X,Ot]),Dn(Q)}else if($.startsWith("show_toast:")){const Q=$.replace("show_toast:","");Q&&$e(Q,"success")}else if($.startsWith("show_modal:")){const Q=$.replace("show_modal:","");if(Fe[Q]){const tt=Fe[Q],X=tt.clearFormKeys;se(st=>{const gt={...st};let vt=Array.isArray(X)&&X.length>0;if(vt)for(const pt of X)delete gt[pt];for(const pt of Object.keys(gt))pt.startsWith("__acc_")&&(delete gt[pt],vt=!0);return vt?gt:st}),tt.preload&&await qi(String(tt.preload)),un({id:Q,definition:tt})}else{const tt=Q.split("|");un({id:"__legacy",definition:{title:tt[0]||"Notice",components:tt[1]?[{type:"text",text:tt[1],color:le.colorMode==="light"?"rgba(0,0,0,0.65)":"rgba(255,255,255,0.7)",fontSize:14}]:[],actions:[{label:"OK",variant:"primary",dismiss:!0}]}})}}else if($.startsWith("toast:")){const Q=$.replace("toast:","");$e(Q,"success")}}catch(Q){if(Q instanceof $o&&xc(Q,M==null?void 0:M.onError))return;(F=M.onError)!=null&&F.message&&$e(M.onError.message,"error")}},[Ot,nt,ft]),Ca=v.useRef(null),Oa=v.useRef(null);v.useEffect(()=>{const M=Oa.current;Oa.current=Ot;const $=pe==null?void 0:pe.events,I=Array.isArray($==null?void 0:$.onLoad)?$.onLoad:$!=null&&$.onLoad?[$.onLoad]:[];I.length!==0&&M!==Ot&&I.forEach(Z=>Ur(Z))},[Ot,pe==null?void 0:pe.events,Ur]),v.useEffect(()=>{var $,I;const M=Ca.current;if(Ca.current=Ot,M&&M!==Ot){const Z=nt.find(F=>F.id===M),B=(Z==null?void 0:Z.type)==="render_scene"?Z.config:null;(I=($=B==null?void 0:B.events)==null?void 0:$.onLeave)!=null&&I.action&&Ur(B.events.onLeave)}},[Ot,nt,Ur]),v.useEffect(()=>{const M=pe==null?void 0:pe.events;if(!(M!=null&&M.onVisibilityChange))return;const $=()=>{var I,Z,B,F;document.hidden?(Z=(I=M.onVisibilityChange)==null?void 0:I.onHidden)!=null&&Z.action&&Ur(M.onVisibilityChange.onHidden):(F=(B=M.onVisibilityChange)==null?void 0:B.onVisible)!=null&&F.action&&Ur(M.onVisibilityChange.onVisible)};return document.addEventListener("visibilitychange",$),()=>document.removeEventListener("visibilitychange",$)},[Ot,pe==null?void 0:pe.events,Ur]);const Hi=v.useCallback(async(M,$)=>{En(I=>({...I,[M]:!0}));try{await $()}finally{En(I=>({...I,[M]:!1}))}},[]),ci=v.useRef({}),ko=v.useRef(new Map),en=v.useRef(new Set),ui=v.useRef(new Set),Hr=v.useRef(null),Ma=v.useRef([]),Ts=v.useRef({}),kn=v.useCallback(async(M,$,I=0,Z=10,B,F,Q,tt=!1)=>{var vt;if(!M||Ke.current||!ft)return;const X=`${$}|${M}|${I}|${tt}`,st=ko.current.get(X)||0;if(Date.now()-st<1e3)return;ko.current.set(X,Date.now()),ci.current[$]=M;const gt=M.match(/^\{\{\s*\[([\w/.-]+)\](?:\.([\w.]+))?\s*\}\}$/);if(gt){const pt=Gr(`${gt[1]}${gt[2]?"."+gt[2]:""}`);if(Array.isArray(pt))return Wr(At=>({...At,[$]:pt})),sn.current[$]=pt,sn.current[M]=pt,ji(At=>({...At,[$]:{page:I,limit:Z,total:pt.length,hasMore:(I+1)*Z<pt.length}})),pt}Ao.current.has($)||Li(pt=>({...pt,[$]:!0}));try{let pt=[],At=0,a;const d=ii.current;if(gs(M,$),vu(M)&&t){const g=bc(M,{limit:Z,page:I}),_=B?wm(g,B,F):g,C=nu(_),k=await Wf(t,C,d);a=k,pt=(k==null?void 0:k.emails)||(k==null?void 0:k.items)||(k==null?void 0:k.data)||(k==null?void 0:k.history)||(Array.isArray(k)?k:[]),At=((vt=k==null?void 0:k.pagination)==null?void 0:vt.total)??(k==null?void 0:k.count)??pt.length}else if(!vu(M)){const g=t==null?void 0:t.endpoint,_=N||(g&&/^https?:\/\//.test(g)?g:window.location.origin);let C=M;!N&&g&&!/^https?:\/\//.test(g)&&typeof g=="string"&&(C=`${g.replace(/\/+$/,"")}${M.startsWith("/")?M:`/${M}`}`),Zg("[fetchListData] apiUrl=%s baseUrl=%s dataSource=%s origin=%s",N,_,M,window.location.origin);const k=new URL(C,_);k.searchParams.set("limit",String(Z)),k.searchParams.set("offset",String(I*Z)),B&&(k.searchParams.set("sort",B),k.searchParams.set("dir",F||"asc"));const W=await fetch(k.toString(),{headers:{Authorization:`Bearer ${r||localStorage.getItem("token")||""}`}});if(await Mo(W)||tn.current)return;let et=null;try{et=await W.json()}catch{}if(!W.ok){const ot=typeof(et==null?void 0:et.message)=="string"&&et.message||typeof(et==null?void 0:et.error)=="string"&&et.error||`Request failed: ${W.statusText}`;throw new $o([ot],et||void 0)}if(a=et,tn.current)return;pt=Array.isArray(et)?et:Array.isArray(et.data)?et.data:Array.isArray(et.items)?et.items:[],At=et.count??et.total??pt.length}if(Wr(g=>{if(tt&&Array.isArray(g[$])){const _=new Set(g[$].map(k=>k==null?void 0:k.id)),C=[...g[$],...pt.filter(k=>!_.has(k==null?void 0:k.id))];return{...g,[$]:C}}return{...g,[$]:pt}}),Ao.current.add($),sn.current[$]=pt,M&&(sn.current[M]=pt),Q&&(sn.current[Q]={items:pt,response:a},M)){const g=Ts.current[Q];g&&g!==M&&Yg(`[renderer] duplicate list key "${Q}" used for both ${g} and ${M}`),Ts.current[Q]=M}{const g=String(M||"").replace(/^\//,"").split("?")[0];g&&(sn.current[g]={response:a})}return ji(g=>({...g,[$]:{page:I,limit:Z,total:At,hasMore:(I+1)*Z<At}})),pt}catch(pt){if(pt instanceof $o&&xc(pt))return;Wr(At=>{const a=At[$];return Array.isArray(a)&&a.length>0?At:{...At,[$]:[]}})}finally{Li(pt=>({...pt,[$]:!1}))}},[t,ft,gs]),er=()=>{const M=N||(t==null?void 0:t.endpoint);return M&&/^https?:\/\//.test(M)?M:M!=null&&M.startsWith("/")?`${window.location.origin}${M}`:window.location.origin},yc=v.useRef(null);v.useEffect(()=>{var B;if(!ft)return;const M=r||localStorage.getItem("token");if(!M){G(!0);return}const $=((e==null?void 0:e.steps)||[]).find(F=>F.id===Ot);if(!(((B=$==null?void 0:$.config)==null?void 0:B.requireAuth)===!0||($==null?void 0:$.requiresAuth)===!0||rt)||yc.current===M)return;let Z=!1;return(async()=>{var F;try{const Q=await fetch(`${er()}/admin/users/me`,{headers:{Authorization:`Bearer ${M}`}});if(Z)return;if(Q.ok){const tt=await Q.json().catch(()=>null);yc.current=M,G(!1),lt(typeof((F=tt==null?void 0:tt.user)==null?void 0:F.emailVerified)=="boolean"?tt.user.emailVerified:null)}else Ot&&(cn.current=Ot),yc.current=null,G(!0),Ct(!1),lt(null)}catch{Z||(Ot&&(cn.current=Ot),G(!0))}})(),()=>{Z=!0}},[ft,Ot,e==null?void 0:e.steps]);const vc=v.useCallback((M,$,I)=>{!M||$.length===0||Wr(Z=>{const B={...Z};for(const[F,Q]of Object.entries(ci.current)){if(Q!==M||!Z[F])continue;const tt=Z[F];I==="remove"&&(B[F]=tt.filter(X=>!$.includes(X.id)))}return B})},[]),Zt=v.useCallback((M,$)=>{var Q,tt;const I=new Map;for(const[X,st]of Object.entries(Ts.current))I.set(st,X);const Z=new Map;for(const[X,st]of Object.entries(ci.current))Z.set(X,{ds:st,dataKey:I.get(st)});for(const[X,st]of Object.entries(Ts.current))Object.values(ci.current).includes(st)||Z.set(X,{ds:st,dataKey:X});if(Z.size===0)return;const B=Array.isArray($)?new Set($):void 0,F=(X,st)=>en.current.has(X)||(st?en.current.has(st):!1);for(const[X,{ds:st,dataKey:gt}]of Z){if(!F(X,gt))continue;const vt=!!(B!=null&&B.has(X)||gt&&(B!=null&&B.has(gt)));if($==="view"||vt){kn(st,X,0,((Q=Cn[X])==null?void 0:Q.limit)||10,void 0,void 0,gt);continue}const pt=st==null?void 0:st.split("?")[0];pt&&M.startsWith(pt)&&kn(st,X,0,((tt=Cn[X])==null?void 0:tt.limit)||10,void 0,void 0,gt)}},[kn,Cn]),Ch=v.useCallback((M,$,I,Z)=>{const B=String(M||"").toUpperCase();if(B==="GET"||Z===!1)return;const F=Z==="remove"||Z==="merge"||Z==="add"||Z==="refresh"?Z:B==="DELETE"?"remove":B==="PUT"||B==="PATCH"?"merge":B==="POST"?"add":null;if(!F||F==="refresh")return;const Q=()=>{const X=String($).match(/\/([^/]+)\/?$/);return X?decodeURIComponent(X[1]):void 0},tt=[];for(const[X,st]of Object.entries(ci.current))st&&$.startsWith(st)&&tt.push({key:X,ds:st});tt.length!==0&&Wr(X=>{const st={...X};for(const{key:gt,ds:vt}of tt){const pt=X[gt]||[];if(F==="remove"){const At=(I==null?void 0:I.id)||Q();st[gt]=pt.filter(a=>a.id!==At)}else if(F==="merge"){const At=(I==null?void 0:I.id)||Q();st[gt]=pt.map(a=>a.id===At?{...a,...I}:a)}else{const At={...I||{},id:(I==null?void 0:I.id)||`temp_${Date.now()}`};F==="add"&&At.status===void 0&&(At.status="queued"),st[gt]=[At,...pt]}}return st})},[]),Bn=v.useCallback((M,$,I,Z)=>{var X;const B=er();let F=!1;const Q=st=>{F||(F=!0,st())},tt=t==null?void 0:t.queues;if(M==="sse"&&(tt!=null&&tt.subscribe))try{const st=Z.sseUrl||`${B}/queues/bulk-operations/jobs/${$}/subscribe?token=${encodeURIComponent(I)}`,gt=((t==null?void 0:t.endpoint)||B).replace(/\/$/,""),vt=st.startsWith(gt)?st.slice(gt.length):st;tt.subscribe(vt,{onComplete:pt=>Q(()=>Z.onComplete(pt)),onFailed:pt=>Q(()=>Z.onFailed({message:pt||"Subscription failed",kind:"transport"})),onError:()=>Q(()=>Z.onFailed({message:"Stream error",kind:"transport"})),onConnected:()=>{},onProgress:pt=>{var At;return(At=Z.onProgress)==null?void 0:At.call(Z,pt)}}),setTimeout(()=>Q(()=>Z.onFailed({message:"Timed out",kind:"transport"})),3e4);return}catch{}if(M==="ws"&&((X=t==null?void 0:t.client)!=null&&X.createWebSocket))try{const st=t.client.createWebSocket(`job:${$}`);st.onmessage=gt=>{try{const vt=JSON.parse(gt.data);(vt==null?void 0:vt.type)==="completed"?Q(()=>Z.onComplete(vt.result)):(vt==null?void 0:vt.type)==="failed"&&Q(()=>Z.onFailed({message:vt.error||"Job failed",kind:"job"}))}catch{}},st.onerror=()=>Q(()=>Z.onFailed({message:"Connection error",kind:"transport"})),setTimeout(()=>Q(()=>Z.onFailed({message:"Timed out",kind:"transport"})),3e4);return}catch{}if(M==="poll"&&(tt!=null&&tt.getJob)){const st=window.setInterval(async()=>{var gt;try{const vt=await tt.getJob("bulk-operations",$),pt=(vt==null?void 0:vt.status)||((gt=vt==null?void 0:vt.job)==null?void 0:gt.status),At=(vt==null?void 0:vt.result)||(vt==null?void 0:vt.data);pt==="failed"||At!=null&&At.final?(window.clearInterval(st),Q(()=>pt==="failed"?Z.onFailed({message:(At==null?void 0:At.error)||"Job failed",kind:"job"}):Z.onComplete(At))):pt==="completed"&&(window.clearInterval(st),Q(()=>Z.onComplete(At)))}catch{}},600);setTimeout(()=>{window.clearInterval(st),Q(()=>Z.onFailed({message:"Timed out",kind:"transport"}))},3e4);return}Q(()=>Z.onFailed({message:"Feedback transport unavailable",kind:"transport"}))},[]),Es=v.useCallback(async(M,$,I)=>{var gt,vt;const Z=t==null?void 0:t.files,B=encodeURIComponent(r||localStorage.getItem("token")||"");if(Z!=null&&Z.upload){const pt=await Z.upload(M,$||{},I),At=(pt==null?void 0:pt.url)||(pt==null?void 0:pt.path)||"";return At?(pt==null?void 0:pt.visibility)==="public"?At:`${er()}${At}?token=${B}`:""}const F=new FormData;F.append("file",M),$!=null&&$.entityType&&F.append("entityType",$.entityType),$!=null&&$.entityId&&F.append("entityId",$.entityId),$!=null&&$.visibility&&F.append("visibility",$.visibility);const Q=await fetch(`${er()}/files/upload`,{method:"POST",headers:{Authorization:`Bearer ${r||localStorage.getItem("token")||""}`},body:F});if(!Q.ok)throw new Error("Upload failed");const tt=await Q.json(),X=((gt=tt==null?void 0:tt.asset)==null?void 0:gt.url)||(tt==null?void 0:tt.url)||(tt==null?void 0:tt.path)||(tt==null?void 0:tt.id)||"";return X?((vt=tt==null?void 0:tt.asset)==null?void 0:vt.visibility)==="public"?X:`${er()}${X}?token=${B}`:""},[]),Oh=v.useCallback(async(M,$,I,Z)=>{var Q;if(!(M!=null&&M.endpoint)||Z.length===0)return;const B=M.endpoint,F=M.optimistic??!0;try{const tt=await fetch(er()+B,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r||localStorage.getItem("token")||""}`},body:JSON.stringify({ids:Z})});let X={};try{X=await tt.json()}catch{}if(!tt.ok){$e(((Q=X==null?void 0:X.error)==null?void 0:Q.message)||"Request failed","error");return}F!==!1&&(F==="remove"||F==="refresh"?F:X.softUpdate||(M.action==="delete"?"remove":"refresh"))==="remove"&&vc($,Z,"remove"),se(gt=>({...gt,_selIds:[],_selectMode:!1}));const st=(gt,vt,pt)=>{var At;if(gt)$e(pt||"Bulk operation failed","error");else{const a=vt||{},d=a.total??Z.length,g=a.successful??d;$e(g>=d?`${g} ${M.action}d`:`${g} of ${d} ${M.action}d`,"success")}kn($,I,0,((At=Cn[I])==null?void 0:At.limit)||10)};X.jobId&&X.token&&M.feedback?Bn(M.feedback,X.jobId,X.token,{onComplete:gt=>st(!1,gt),onFailed:gt=>{var vt;if(gt.kind==="transport"){kn($,I,0,((vt=Cn[I])==null?void 0:vt.limit)||10);return}st(!0,null,gt.message)}}):st(!1,X)}catch{$e("Request failed","error")}},[vc,Bn,kn,Cn]),wm=(M,$,I)=>{const Z=nu(M),B=Z.indexOf("(");if(B===-1)return M;const F=Z.slice(B+1,-1).trim(),Q=`sort: "${$}", dir: ${I==="desc"?'"desc"':'"asc"'}`;if(!F)return M.replace(/\(\)$/,`({${Q}})`);const tt=F.lastIndexOf(",");if(tt===-1)return M.replace(/\(([^)]*)\)$/,`(${F}, {${Q}})`);const X=F.slice(tt+1).trim();return X.startsWith("{")?M.replace(/\(([^)]*)\)$/,`(${F.slice(0,tt)}, {${X.slice(1,-1)}, ${Q}})`):M.replace(/\(([^)]*)\)$/,`(${F}, {${Q}})`)},bc=(M,$)=>{const I=nu(M),Z=I.indexOf("(");if(Z===-1)return M;const B=I.slice(Z+1,-1).trim(),F=`limit: ${$.limit}, page: ${$.page}`;if(!B)return M.replace(/\(\)$/,`({${F}})`);const Q=B.lastIndexOf(",");if(Q===-1)return M.replace(/\(([^)]*)\)$/,`(${B}, {${F}})`);const tt=B.slice(Q+1).trim();return tt.startsWith("{")?M.replace(/\(([^)]*)\)$/,`(${B.slice(0,Q)}, {${tt.slice(1,-1)}, ${F}})`):M.replace(/\(([^)]*)\)$/,`(${B}, {${F}})`)};v.useEffect(()=>()=>{tn.current=!0},[]),le.colors.background;const $n=v.useMemo(()=>`bf-preview-${Math.random().toString(36).slice(2,9)}`,[]),Mh=M=>M.replace(/:(\w+)/g,($,I)=>{const Z=he[I];return Z===void 0?$:String(Z)}),_m=M=>{try{const $=JSON.parse(M);if(Array.isArray($)&&$.length>0)return $.map(I=>{var Z;return I.message||`${((Z=I.path)==null?void 0:Z.join("."))||"field"} is invalid`})}catch{}return null};class $o extends Error{constructor(I,Z){super(I.join(", "));km(this,"errors");km(this,"body");this.errors=I,this.body=Z}}const qi=async(M,$)=>{var At,a,d,g,_;if(Ke.current||!ft)return;const{method:I,path:Z}=Ee(M),B=Mh(Z),F=I!=="GET"&&I!=="DELETE",Q=er();I!=="GET"&&Ch(I,B,he,($==null?void 0:$.optimistic)??!0);let tt;if($!=null&&$.payload&&typeof $.payload=="object"){tt={};for(const[C,k]of Object.entries($.payload))tt[C]=typeof k=="string"&&k.includes("{{")?Cs(k):k}else tt=he;tt=gc(tt);const X=await fetch(new URL(B,Q).toString(),{method:I,headers:{"Content-Type":"application/json",Authorization:`Bearer ${r||localStorage.getItem("token")||""}`},...F?{body:JSON.stringify(tt)}:{}});if(await Mo(X)||tn.current)return;let st;try{st=await X.json()}catch{if(tn.current)return;if(!X.ok)throw new $o([`Request failed: ${X.statusText}`]);return}if(!X.ok||st.success===!1){Zt(B,$==null?void 0:$.refetchScope);let C=["Something went wrong"];throw(At=st.error)!=null&&At.message?C=_m(st.error.message)||[st.error.message]:st.message&&(C=[st.message]),new $o(C,st)}st.token&&localStorage.setItem("token",st.token),$!=null&&$.openUrl&&(st!=null&&st.url)&&String(st.url).startsWith("http")&&window.open(String(st.url),"_blank","noopener,noreferrer"),st&&typeof st=="object"&&!Array.isArray(st)&&se(C=>({...C,feedback:st})),st.data&&($==null?void 0:$.mergeResponse)!==!1&&se(C=>({...C,...st.data})),st.user&&typeof st.user=="object"?se(C=>({...C,user:st.user})):se(C=>({...C})),sn.current[B.replace(/^\//,"")]={response:st};for(const[C,k]of Object.entries(Ts.current))if(k===B||k.endsWith(B)){const W=sn.current[C];sn.current[C]={items:Array.isArray(W)?W:Array.isArray(W==null?void 0:W.items)?W.items:[],response:st}}const gt=(d=(a=st.subscribe)==null?void 0:a.websocket)==null?void 0:d.workflowChannel;gt&&($==null?void 0:$.mergeResponse)!==!1&&se(C=>{var k,W,et,ot;return{...C,liveCastChannel:gt,execution_id:st.draftId||C.execution_id,id:st.sessionId||C.id,status:"running",test_session:{...C.test_session||{},id:st.sessionId||((k=C.test_session)==null?void 0:k.id),execution_id:st.draftId||((W=C.test_session)==null?void 0:W.execution_id),status:"running",liveCastChannel:gt,prompt:(tt==null?void 0:tt.prompt)||((et=C.test_session)==null?void 0:et.prompt),url:(tt==null?void 0:tt.url)||((ot=C.test_session)==null?void 0:ot.url)}}}),Zt(B,$==null?void 0:$.refetchScope);const vt=$==null?void 0:$.feedback,pt=typeof vt=="string"?vt:vt==null?void 0:vt.transport;if(pt&&st.jobId&&(st.token||(g=st.subscribe)!=null&&g.sse||typeof vt=="object")){let C=(_=st.subscribe)!=null&&_.sse?/^https?:\/\//.test(st.subscribe.sse)?st.subscribe.sse:Q+st.subscribe.sse:void 0;if(typeof vt=="object"&&vt.subscribeUrl){const k=String(vt.subscribeUrl).trim(),W=k.startsWith("{{")&&k.endsWith("}}")?k.slice(2,-2).trim():k,et=W.match(/^\[(.+?)\](?:\.(.*))?$/),ot=et?Gr(`${et[1]}${et[2]?"."+et[2]:""}`):W.split(".").reduce((dt,Pt)=>dt==null?void 0:dt[Pt],st);ot&&(C=/^https?:\/\//.test(ot)?ot:Q+ot)}if(C){Bn(pt,st.jobId,st.token,{sseUrl:C,onProgress:k=>{s==null||s(k);const W=Date.now();W-_o.current>=2e3&&(_o.current=W,Zt(B,$==null?void 0:$.refetchScope))},onComplete:k=>{const W=(k==null?void 0:k.result)??k;if(W&&typeof W=="object"){const et=B.replace(/^\//,"");sn.current[et]={response:W},se(ot=>({...ot}))}Zt(B,$==null?void 0:$.refetchScope)},onFailed:k=>{Zt(B,$==null?void 0:$.refetchScope),k.kind!=="transport"&&$e(k.message||"Job failed","error")}});return}Bn(pt,st.jobId,st.token,{onComplete:k=>{const W=k||{},et=W.total,ot=W.successful;et!==void 0&&$e(ot>=et?`${ot} completed`:`${ot} of ${et} completed`,"success"),Zt(B,$==null?void 0:$.refetchScope)},onFailed:k=>{if(k.kind==="transport"){Zt(B,$==null?void 0:$.refetchScope);return}$e(k.message||"Job failed","error"),Zt(B,$==null?void 0:$.refetchScope)}})}},qr=M=>{var Z,B;un(null);const $=M==="/"&&(((Z=nt.find(F=>F.route==="/"))==null?void 0:Z.id)||((B=nt.find(F=>F.type==="render_scene"))==null?void 0:B.id))||M;if(it($)&&!ft){cn.current=$,Rt(!0);return}te(F=>[...F,Ot]),Dn($)},nr=(M,$="error")=>{if(se(I=>({...I,gateTitle:M.uiTitle||"Usage Notice",gateMessage:M.message})),M.uiVariant!=="modal"){const I=M.uiTitle?`${M.uiTitle}
|
|
195
195
|
${M.message}`:M.message;$e(I,$);return}if(M.modalId&&Fe[M.modalId]){un({id:M.modalId,definition:Fe[M.modalId]});return}un({id:"__legacy",definition:{title:M.uiTitle||"Usage Notice",components:[{type:"text",text:M.message,color:le.colorMode==="light"?"rgba(0,0,0,0.65)":"rgba(255,255,255,0.7)",fontSize:14}],actions:[{label:"OK",variant:"primary",dismiss:!0}]}})},xc=(M,$)=>{const I=M.body;if(!I)return!1;const Z=typeof(I==null?void 0:I.message)=="string"&&I.message||M.errors[0]||"Request blocked by limits",B=()=>nr({message:Z,uiVariant:I.uiVariant,uiTitle:typeof(I==null?void 0:I.uiTitle)=="string"?I.uiTitle:void 0,modalId:typeof(I==null?void 0:I.modalId)=="string"?I.modalId:void 0});return I.gateAction==="login"?(ee("login"),!0):I.gateAction==="upgrade"?I.uiVariant==="modal"||typeof(I==null?void 0:I.modalId)=="string"?(B(),!0):$!=null&&$.upgradeScene?(qr($.upgradeScene),!0):(B(),!0):I.gateAction==="block"||I.gateAction==="warn"||I.warning?(B(),!0):!1};v.useEffect(()=>{if(!ft||Y)return;const M=cn.current;!M||!nt.some($=>$.id===M)||(cn.current=null,qr(M))},[ft,Y,nt]);const $e=(M,$="success",I)=>{const Z=Array.isArray(M)?M.join(`
|
|
196
196
|
`):M,B=$==="success",F=B?"#10B981":"#EF4444",Q=le.toast||{},tt=I??Q.duration??3e3,X=Q.position||"bottom-right",st={"bottom-right":{right:"24px",bottom:"24px"},"bottom-left":{left:"24px",bottom:"24px"},"bottom-center":{left:"50%",bottom:"24px",transform:"translateX(-50%)"},"top-right":{right:"24px",top:"24px"},"top-left":{left:"24px",top:"24px"},"top-center":{left:"50%",top:"24px",transform:"translateX(-50%)"}},gt=st[X]||st["bottom-right"],vt=document.createElement("div"),pt=document.createElement("span");pt.textContent=B?"✓":"✕",Object.assign(pt.style,{display:"flex",alignItems:"center",justifyContent:"center",width:"22px",height:"22px",minWidth:"22px",borderRadius:"50%",backgroundColor:`${F}26`,color:F,fontSize:"12px",fontWeight:"700"});const At=document.createElement("span");At.textContent=Z,Object.assign(At.style,{color:"rgba(255, 255, 255, 0.92)",fontSize:"13.5px",lineHeight:"1.45",whiteSpace:"pre-line"}),Object.assign(vt.style,{position:"fixed",...gt,zIndex:"2147483647",display:"flex",alignItems:"flex-start",gap:"10px",padding:"12px 16px",borderRadius:"12px",backgroundColor:"rgba(23, 25, 35, 0.97)",border:"1px solid rgba(148, 163, 184, 0.25)",boxShadow:"0 8px 28px rgba(0, 0, 0, 0.4)",maxWidth:"380px",opacity:"0",pointerEvents:"auto"}),vt.appendChild(pt),vt.appendChild(At),document.body.appendChild(vt),vt.animate([{opacity:0,transform:"translateX(24px)"},{opacity:1,transform:"translateX(0)"}],{duration:250,easing:"cubic-bezier(0.16, 1, 0.3, 1)",fill:"both"}).finished.catch(()=>{});const d=()=>{vt.animate([{opacity:1,transform:"translateX(0)"},{opacity:0,transform:"translateX(16px)"}],{duration:200,easing:"ease",fill:"both"}).finished.then(()=>vt.remove()).catch(()=>vt.remove())};return tt>0&&setTimeout(d,tt),{update:g=>{At.textContent=Array.isArray(g)?g.join(`
|
|
197
|
-
`):g},dismiss:d}},Zn=(M,$=!0)=>{if($&&(M!=null&&M.onSuccess)){const I=Array.isArray(M.onSuccess)?M.onSuccess:[M.onSuccess];for(const Z of I){const{type:B,value:F,title:Q,key:tt}=Z;switch(B){case"toast":$e(F||"Success!","success");break;case"navigate":F&&qr(F);break;case"redirect":F&&(window.location.href=F);break;case"modal":F&&Fe[F]?un({id:F,definition:Fe[F]}):un({id:"__legacy",definition:{title:Q||"Success",components:F?[{type:"text",text:F,color:le.colorMode==="light"?"rgba(0,0,0,0.65)":"rgba(255,255,255,0.7)",fontSize:14}]:[],actions:[{label:"OK",variant:"primary",dismiss:!0}]}});break;case"route":F&&qi(F);break;case"set_data":tt&&F!==void 0&&se(X=>({...X,[tt]:F}));break}}}else!$&&(M!=null&&M.onError)&&$e(M.onError.message||"An error occurred","error")},kh=()=>{var ot,dt,Pt,kt,Yt,fn,oe;const M=async()=>{var Kt,Ne,Ge,Ji,zn,Ls;if(!qt||!ye||On==="register"&&!ve)return;const St=Vr(qt),jt=Vi(ye);if(St||jt){hn(St||jt);return}if(On==="register"&&ve!==ye){Tr("confirm","Passwords do not match"),hn("Passwords do not match");return}ke(!0),hn(null);try{const sr=On==="login"?"/auth/login":"/auth/register",be=`${er().replace(/\/+$/,"")}${sr}`,Ba=On==="login"?{email:qt,password:ye,tenantId:w}:{email:qt,password:ye,displayName:qt.split("@")[0],tenantId:w},Yh={"Content-Type":"application/json"},Mm=["localhost","127.0.0.1","[::1]"].includes(window.location.hostname);T&&!Mm&&(Yh["x-app-id"]=T);const Ic=await fetch(be,{method:"POST",headers:Yh,body:JSON.stringify(Ba)});if(!Ic.ok){const t2=await Ic.json().catch(()=>({error:"Authentication failed"}));throw new Error(Oo(t2))}const Fn=await Ic.json();if(Array.isArray(Fn)||Fn.success===!1)throw new Error(Oo(Fn));const Rc=((Kt=Fn.data)==null?void 0:Kt.token)||Fn.token||Fn.accessToken||Fn.idToken;Rc&&localStorage.setItem("token",Rc);const Kh=((Ne=Fn.data)==null?void 0:Ne.refreshToken)||Fn.refreshToken;Kh&&localStorage.setItem("backflow_refresh_token",Kh);const Ax=((Ji=(Ge=Fn.data)==null?void 0:Ge.user)==null?void 0:Ji.id)||((zn=Fn.user)==null?void 0:zn.id)||((Ls=Fn.data)==null?void 0:Ls.userId);if(Ax&&localStorage.setItem("backflow_refresh_user_id",Ax),!ft&&(rt||Ke.current||!!cn.current)){window.location.reload();return}Ke.current=!1,Ct(!0),Rt(!1),G(!1),mr(""),wt(""),It(""),_s({}),hn(null)}catch(sr){const be=typeof sr=="string"?sr:(sr==null?void 0:sr.message)||JSON.stringify(sr)||"Authentication failed";hn(be),$e(be,"error")}finally{ke(!1)}},$=async()=>{if(!qt)return;const St=Vr(qt);if(St){hn(St);return}ke(!0),hn(null);try{const jt=await fetch("/api/auth/forgot-password",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:qt})});if(!jt.ok){const Kt=await jt.json().catch(()=>({error:"Failed to send reset email"}));throw new Error(Oo(Kt))}ee("reset"),Mn(""),wt(""),hn(null)}catch(jt){const Kt=typeof jt=="string"?jt:(jt==null?void 0:jt.message)||"Failed to send reset email";hn(Kt),$e(Kt,"error")}finally{ke(!1)}},I=async()=>{if(!Wi||!ye)return;const St=Vi(ye);if(St){hn(St);return}ke(!0),hn(null);try{const jt=await fetch("/api/auth/reset-password",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:Wi,password:ye})});if(!jt.ok){const Kt=await jt.json().catch(()=>({error:"Failed to reset password"}));throw new Error(Oo(Kt))}ee("login"),mr(""),wt(""),Mn(""),hn(null)}catch(jt){const Kt=typeof jt=="string"?jt:(jt==null?void 0:jt.message)||"Failed to reset password";hn(Kt),$e(Kt,"error")}finally{ke(!1)}},Z=St=>{ee(St),hn(null),St!=="reset"&&(Mn(""),wt("")),It(""),_s({})},B=le.colorMode==="dark",F=B?"#f3f4f6":"#111827",Q=B?"#9ca3af":"#6b7280",tt=B?"#374151":"#f3f4f6",X=B?"#4b5563":"#d1d5db",st=B?"#ffffff":"#000000",gt=B?"#000000":"#ffffff",vt=B?"#1f2937":"#ffffff",pt="#ef4444",At=(St="12px")=>({width:"100%",padding:"12px 16px",border:`1px solid ${X}`,borderRadius:"8px",fontSize:"14px",backgroundColor:tt,color:F,outline:"none",marginBottom:St,boxSizing:"border-box"}),a=(St,jt,Kt,Ne,Ge,Ji)=>v.createElement("div",{key:St,style:{position:"relative",marginBottom:"12px"}},U("input",{key:"input",type:ae[St]?"text":"password",placeholder:jt,value:Kt,onChange:zn=>Ne(zn.target.value),onKeyDown:zn=>{zn.key==="Enter"&&Ge()},style:{...At("0px"),paddingRight:"40px",borderColor:Ji?pt:X}}),v.createElement("button",{key:"toggle",type:"button","aria-label":ae[St]?"Hide password":"Show password",onClick:()=>_s(zn=>({...zn,[St]:!zn[St]})),style:{position:"absolute",right:"8px",top:"50%",transform:"translateY(-50%)",background:"none",border:"none",cursor:"pointer",color:Q,display:"flex",alignItems:"center",padding:"4px"}},In.renderIcon(ae[St]?"eye-off":"eye",16)));l||e!=null&&e.title;const d=(ot=e==null?void 0:e.config)!=null&&ot.logo&&((dt=e==null?void 0:e.config)==null?void 0:dt.logo)!==""?e.config.logo:"",g=c||((Pt=e==null?void 0:e.navigation)==null?void 0:Pt.logo)||"mail",_=[];_.push(v.createElement("div",{key:"brand",role:"button","aria-label":"Go back home",onClick:()=>{qr("/"),Rt(!1),Ke.current=!1,cn.current=null},style:{display:"flex",alignItems:"center",justifyContent:"center",marginBottom:"20px",cursor:"pointer"}},d?v.createElement("img",{src:d,alt:"",style:{width:"56px",height:"56px",objectFit:"contain"}}):In.renderIcon(g,56))),On==="login"?(_.push(v.createElement("h2",{key:"title",style:{fontSize:"24px",fontWeight:700,color:F,marginBottom:"8px",textAlign:"center"}},"Sign In")),_.push(v.createElement("p",{key:"sub",style:{fontSize:"14px",color:Q,marginBottom:"24px",textAlign:"center"}},"Enter your credentials to continue")),_.push(U("input",{key:"email",type:"email",placeholder:"Email Address",value:qt,onChange:St=>{mr(St.target.value),Tr("email",Vr(St.target.value))},style:{...At(),borderColor:Te.email&&qt?pt:X}})),Te.email&&qt&&_.push(v.createElement("p",{key:"email-err",style:{color:pt,fontSize:"12px",marginTop:"-8px",marginBottom:"8px"}},Te.email)),_.push(a("pass","Password",ye,St=>{wt(St),Tr("pass",Vi(St))},M,!!(Te.pass&&ye))),Te.pass&&ye&&_.push(v.createElement("p",{key:"pass-err",style:{color:pt,fontSize:"12px",marginTop:"-12px",marginBottom:"12px"}},Te.pass)),li&&_.push(v.createElement("p",{key:"err",style:{color:pt,fontSize:"13px",marginBottom:"12px",textAlign:"center"}},li)),_.push(v.createElement("button",{key:"submt",onClick:M,disabled:qe||!qt||!ye,style:{width:"100%",padding:"12px",borderRadius:"8px",fontSize:"15px",fontWeight:600,backgroundColor:qe?B?"#4b5563":"#9ca3af":st,color:gt,border:"none",cursor:qe?"not-allowed":"pointer",marginBottom:"8px"}},qe?"Please wait...":"Sign In")),_.push(v.createElement("p",{key:"forgot",style:{fontSize:"13px",color:Q,textAlign:"center",cursor:"pointer",marginBottom:"16px"},onClick:()=>Z("forgot")},"Forgot password?")),_.push(v.createElement("p",{key:"sw",style:{fontSize:"13px",color:Q,textAlign:"center",cursor:"pointer"},onClick:()=>Z("register")},"Don’t have an account? Register"))):On==="register"?(_.push(v.createElement("h2",{key:"title",style:{fontSize:"24px",fontWeight:700,color:F,marginBottom:"8px",textAlign:"center"}},"Create Account")),_.push(v.createElement("p",{key:"sub",style:{fontSize:"14px",color:Q,marginBottom:"24px",textAlign:"center"}},"Create an account to get started")),_.push(U("input",{key:"email",type:"email",placeholder:"Email",value:qt,onChange:St=>{mr(St.target.value),Tr("email",Vr(St.target.value))},style:{...At(),borderColor:Te.email&&qt?pt:X}})),Te.email&&qt&&_.push(v.createElement("p",{key:"email-err",style:{color:pt,fontSize:"12px",marginTop:"-8px",marginBottom:"8px"}},Te.email)),_.push(a("pass","Password",ye,St=>{wt(St),Tr("pass",Vi(St))},M,!!(Te.pass&&ye))),Te.pass&&ye&&_.push(v.createElement("p",{key:"pass-err",style:{color:pt,fontSize:"12px",marginTop:"-12px",marginBottom:"12px"}},Te.pass)),_.push(a("confirm","Confirm password",ve,St=>{It(St),Tr("confirm",Ps(ye,St))},M,!!(Te.confirm&&ve))),Te.confirm&&ve&&_.push(v.createElement("p",{key:"confirm-err",style:{color:pt,fontSize:"12px",marginTop:"-12px",marginBottom:"12px"}},Te.confirm)),li&&_.push(v.createElement("p",{key:"err",style:{color:pt,fontSize:"13px",marginBottom:"12px",textAlign:"center"}},li)),_.push(v.createElement("button",{key:"submt",onClick:M,disabled:qe||!qt||!ye||!ve,style:{width:"100%",padding:"12px",borderRadius:"8px",fontSize:"15px",fontWeight:600,backgroundColor:qe?B?"#4b5563":"#9ca3af":st,color:gt,border:"none",cursor:qe?"not-allowed":"pointer",marginBottom:"16px"}},qe?"Please wait...":"Create Account")),_.push(v.createElement("p",{key:"sw",style:{fontSize:"13px",color:Q,textAlign:"center",cursor:"pointer"},onClick:()=>Z("login")},"Already have an account? Sign In"))):On==="forgot"?(_.push(v.createElement("h2",{key:"title",style:{fontSize:"24px",fontWeight:700,color:F,marginBottom:"8px",textAlign:"center"}},"Reset Password")),_.push(v.createElement("p",{key:"sub",style:{fontSize:"14px",color:Q,marginBottom:"24px",textAlign:"center"}},"Enter your email to receive a reset link")),_.push(U("input",{key:"email",type:"email",placeholder:"Email",value:qt,onChange:St=>{mr(St.target.value),Tr("email",Vr(St.target.value))},onKeyDown:St=>{St.key==="Enter"&&$()},style:{...At("16px"),borderColor:Te.email&&qt?pt:X}})),Te.email&&qt&&_.push(v.createElement("p",{key:"email-err",style:{color:pt,fontSize:"12px",marginTop:"-8px",marginBottom:"8px"}},Te.email)),li&&_.push(v.createElement("p",{key:"err",style:{color:pt,fontSize:"13px",marginBottom:"12px",textAlign:"center"}},li)),_.push(v.createElement("button",{key:"submt",onClick:$,disabled:qe||!qt,style:{width:"100%",padding:"12px",borderRadius:"8px",fontSize:"15px",fontWeight:600,backgroundColor:qe?B?"#4b5563":"#9ca3af":st,color:gt,border:"none",cursor:qe?"not-allowed":"pointer",marginBottom:"16px"}},qe?"Please wait...":"Send Reset Link")),_.push(v.createElement("p",{key:"sw",style:{fontSize:"13px",color:Q,textAlign:"center",cursor:"pointer"},onClick:()=>Z("login")},"Back to Sign In"))):On==="reset"&&(_.push(v.createElement("h2",{key:"title",style:{fontSize:"24px",fontWeight:700,color:F,marginBottom:"8px",textAlign:"center"}},"Set New Password")),_.push(v.createElement("p",{key:"sub",style:{fontSize:"14px",color:Q,marginBottom:"24px",textAlign:"center"}},"Enter the reset code and your new password")),_.push(U("input",{key:"code",type:"text",placeholder:"Reset code",value:Wi,onChange:St=>Mn(St.target.value),style:At()})),_.push(a("pass","New password",ye,St=>{wt(St),Tr("pass",Vi(St))},I,!!(Te.pass&&ye))),Te.pass&&ye&&_.push(v.createElement("p",{key:"pass-err",style:{color:pt,fontSize:"12px",marginTop:"-12px",marginBottom:"12px"}},Te.pass)),li&&_.push(v.createElement("p",{key:"err",style:{color:pt,fontSize:"13px",marginBottom:"12px",textAlign:"center"}},li)),_.push(v.createElement("button",{key:"submt",onClick:I,disabled:qe||!Wi||!ye,style:{width:"100%",padding:"12px",borderRadius:"8px",fontSize:"15px",fontWeight:600,backgroundColor:qe?B?"#4b5563":"#9ca3af":st,color:gt,border:"none",cursor:qe?"not-allowed":"pointer",marginBottom:"16px"}},qe?"Please wait...":"Reset Password")),_.push(v.createElement("p",{key:"sw",style:{fontSize:"13px",color:Q,textAlign:"center",cursor:"pointer"},onClick:()=>Z("login")},"Back to Sign In")));const C=((kt=e==null?void 0:e.config)==null?void 0:kt.auth)||{},k=C.style==="page"?"page":"modal",W=C.containerStyle||{},et=v.createElement("div",{key:"auth-box",style:{width:"100%",maxWidth:k==="page"?"400px":"360px",padding:"24px",backgroundColor:"#000000",borderRadius:"12px",...W}},..._);if(k==="page"){const St=((Yt=le.colors)==null?void 0:Yt.primary)||"#4f46e5",jt=C.coverImage?`url(${C.coverImage}) center/cover no-repeat`:St,Kt=(fn=e==null?void 0:e.config)!=null&&fn.logo&&((oe=e==null?void 0:e.config)==null?void 0:oe.logo)!==""?e.config.logo:"",Ne=Kt?v.createElement("img",{src:Kt,alt:"",style:{position:"absolute",bottom:"-6%",left:"50%",width:"90%",maxWidth:"660px",height:"auto",objectFit:"contain",transform:"translateX(-50%) rotate(-8deg)",opacity:.92,filter:"brightness(0) invert(1)"}}):v.createElement("div",{style:{color:"#ffffff",opacity:.95}},In.renderIcon(g,96));return v.createElement("div",{key:"auth-page",style:{position:"fixed",top:0,left:0,right:0,bottom:0,display:"flex",backgroundColor:vt,zIndex:1e4,animation:"bf-fade-in 0.2s ease"}},v.createElement("div",{style:{flex:ai?"1 1 100%":"0 0 40%",display:"flex",alignItems:"center",justifyContent:"center",padding:"24px",backgroundColor:"#000000"}},et),v.createElement("div",{style:{flex:"0 0 60%",background:jt,display:ai?"none":"flex",alignItems:"center",justifyContent:"center",position:"relative",overflow:"hidden"}},Ne))}return v.createElement("div",{key:"auth-form",style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0,0,0,0.5)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e4,animation:"bf-fade-in 0.15s ease"}},et)},ka=async(M,$,I)=>{var Z,B;try{let F=String(Cs(M)??"");const Q=F.match(/^\{\{\s*(.+?)\s*\?\s*(.*?)\s+:\s+(.*?)\s*\}\}$/);Q&&(F=fi(Q[1])?Q[2]:Q[3]);const tt=F.split(";").map(a=>a.trim()).filter(Boolean);if(tt.length>1){for(const a of tt)await ka(a,void 0,I);return}if(F==="go_back"){Po();return}if(F==="toggle_theme"){As((he._colorMode||le.colorMode)==="dark"?"light":"dark");return}if(F==="close_modal"){Fi();return}const X=F.match(/^(toast|show_toast):(.*)$/);if(X){const a=X[2].trim();a&&$e(a,"success");return}const st=F.match(/^scroll_to:([\w-]+)$/);if(st){(Z=document.getElementById(st[1]))==null||Z.scrollIntoView({behavior:"smooth",block:"start"});return}const gt=F.match(/^set_data:([\w.]+)=(.*)$/);if(gt){se(a=>({...a,[gt[1]]:gt[2]}));return}const vt=F.match(/^native:([a-z][\w.-]*)$/i);if(vt){if(!i){$e("Native app required","error");return}const a=vt[1],d=await i(a,he);if(d&&typeof d=="object"&&!Array.isArray(d)){const g=a.replace(/[^\w]/g,"_");se(_=>({..._,native:{..._.native||{},[g]:d}}))}return}const pt=F.match(/^copy_to_clipboard:(.*)$/);if(pt){const a=pt[1];try{await navigator.clipboard.writeText(a)}catch{const d=document.createElement("textarea");d.value=a,d.style.position="fixed",d.style.opacity="0",document.body.appendChild(d),d.select(),document.execCommand("copy"),d.remove()}$e("API key copied","success");return}const At=F.match(/^auth:(login|register|forgot|reset|logout)$/);if(At){if(At[1]==="logout"){if(!ft)return;localStorage.removeItem("token"),localStorage.removeItem("backflow_refresh_token"),localStorage.removeItem("backflow_refresh_user_id"),Ke.current=!1,cn.current=null,Ct(!1),Rt(!1),lt(null),G(!1),qr("/");return}if(ft)return;hn(null),ee(At[1]),Rt(!0);return}if(F==="accept_startup_modal"){const a=le.startupModal;a&&localStorage.setItem(`backflow_startup_modal_${a}`,"1"),Fi();const d=nt.find(g=>g.route==="/");d&&(te(g=>[...g,Ot]),Dn(d.id));return}if(F==="decline_startup_modal"){Fi();const a=nt.find(d=>d.route==="/");a&&(te(d=>[...d,Ot]),Dn(a.id));return}if(F==="toggle_select"){se(a=>({...a,_selectMode:!a._selectMode,...a._selectMode?{_selIds:[]}:{}}));return}if(F.startsWith("go_to_step:"))qr(F.replace("go_to_step:","")),Zn($,!0);else if(F.startsWith("navigate:"))qr(F.replace("navigate:","")),Zn($,!0);else if(vu(F)&&t){const a=nu(F),d=await Wf(t,a,he);d!=null&&d.data?se(g=>({...g,...d.data})):d&&typeof d=="object"&&!Array.isArray(d)&&se(g=>({...g,...d})),d!=null&&d.url&&String(d.url).startsWith("http")&&window.open(String(d.url),"_blank","noopener,noreferrer"),Zn($,!0)}else if(F.startsWith("show_modal:")){const a=F.replace("show_modal:","");if(Fe[a]){const d=Fe[a];if(xs(d.popover&&(I!=null&&I.anchorElement)?I.anchorElement.getBoundingClientRect():null),ws.current=d.popover&&(I==null?void 0:I.anchorElement)||null,Hr.current&&typeof Hr.current=="object"){const C=Object.keys(Hr.current);se(k=>{const W={...k};for(const et of Ma.current)C.includes(et)||delete W[et];return{...W,...Hr.current}}),Ma.current=C}const g=d.clearFormKeys;Array.isArray(g)&&g.length>0&&se(C=>{const k={...C};for(const W of g)delete k[W];return k});const _=d.defaults;_&&typeof _=="object"&&se(C=>{const k={...C};for(const[W,et]of Object.entries(_))k[W]===void 0&&(k[W]=et);return k}),d.preload&&await qi(String(d.preload)),(Ae==null?void 0:Ae.id)===a||(_n==null?void 0:_n.id)===a||(tr(null),un({id:a,definition:d}))}else{const d=a.split("|");un({id:"__legacy",definition:{title:d[0]||"Notice",components:d[1]?[{type:"text",text:d[1],color:"rgba(255,255,255,0.7)",fontSize:14}]:[],actions:[{label:"OK",variant:"primary",dismiss:!0}]}})}Zn($,!0)}else F.startsWith("execute_workflow:")?(await qi(F.replace("execute_workflow:",""),I),Zn($,!0)):F.startsWith("fetch:")&&(await qi(F.replace("fetch:",""),I),o==null||o(F.replace("fetch:","")),Zn($,!0))}catch(F){if(Zg("[handleButtonClick] caught error:",F,"callbacks:",$),(F==null?void 0:F.status)===401){await Mo({status:401},!0);return}if(F instanceof $o){if(xc(F,$==null?void 0:$.onError))return;$e(F.errors.length>1?F.errors:F.errors[0],"error")}else(B=$==null?void 0:$.onError)!=null&&B.message?$e($.onError.message,"error"):$e(F instanceof Error?F.message:"An error occurred","error")}},$a=M=>{const $=M&&typeof M=="object"&&"_seconds"in M?new Date(M._seconds*1e3):new Date(M);if(isNaN($.getTime()))return String(M??"");const I=Math.floor((Date.now()-$.getTime())/6e4);if(I<1)return"just now";if(I<60)return`${I}m ago`;const Z=Math.floor(I/60);if(Z<24)return`${Z}h ago`;const B=Math.floor(Z/24);return B<7?`${B}d ago`:$.toLocaleDateString()},Gi=(M,$)=>{if($==="timeago")return $a(M);const I=M&&typeof M=="object"&&"_seconds"in M?new Date(M._seconds*1e3):new Date(M);if(!isNaN(I.getTime())){if($==="date")return I.toLocaleDateString();if($==="time")return I.toLocaleTimeString();if($==="datetime")return I.toLocaleString()}return String(M??"")},sn=v.useRef({}),Gr=M=>{const $=M.split(".").filter(Boolean);if($.length===0)return;let I=sn.current[$[0]]??he[$[0]];for(let Z=1;Z<$.length;Z++){if(I==null)return;const B=$[Z];if(Array.isArray(I))if(B==="first")I=I[0];else if(B==="last")I=I[I.length-1];else if(B==="length")I=I.length;else if(/^\d+$/.test(B))I=I[Number(B)];else if(B==="index")I=I[0];else return;else if(I&&typeof I=="object"&&Array.isArray(I.items))B==="response"?I=I.response:B==="first"?I=I.items[0]:B==="last"?I=I.items[I.items.length-1]:B==="length"?I=I.items.length:/^\d+$/.test(B)?I=I.items[Number(B)]:B==="index"?I=I.items[0]:I=I[B];else if(typeof I=="object")I=I[B];else return}return I},wc=v.useRef({}),[$h,Ia]=v.useState({}),Sm=v.useCallback(M=>(wc.current[M]||(wc.current[M]=import(M).catch(()=>fetch(M).then($=>$.text()).then($=>{const I={};return new Function("module","exports",$)(I,I),I.exports||I}))),wc.current[M]),[]),_c=(M,$,I,Z)=>{if(!M)return"";if(M.startsWith("sdk:")){const Q=I||"",tt=$h[Q];if(Q&&tt!==void 0)return tt;const X=M.slice(4);return t&&Wf(t,X,{...he,$data:sn.current}).then(st=>{tn.current||(Z&&(sn.current[Z]=st),Ia(gt=>({...gt,[Q]:String(st??"")})))}).catch(()=>{}),""}const B=M.match(/^([A-Za-z_]\w*)\s*\(\s*(.*?)\s*\)$/s);if(B){const Q=B[1],tt=_c(B[2]);if($){const X=$h[I||""];return I&&X!==void 0?X:(Sm($).then(st=>{var vt,pt;const gt=st&&(st[Q]||((vt=st.default)==null?void 0:vt[Q])||((pt=st.exports)==null?void 0:pt[Q]))||(typeof st=="function"?st:void 0);typeof gt=="function"&&I&&Promise.resolve(gt(tt,{data:sn.current})).then(At=>{tn.current||(Z&&(sn.current[Z]=At),Ia(a=>({...a,[I]:String(At??"")})))})}).catch(()=>{}),"")}return Q==="timeago"?$a(tt):Q==="date"?Gi(tt,"date"):Q==="time"?Gi(tt,"time"):Q==="datetime"?Gi(tt,"datetime"):Q==="upper"?String(tt).toUpperCase():Q==="lower"?String(tt).toLowerCase():String(tt??"")}if(M.startsWith("{{")&&M.endsWith("}}")){const tt=M.slice(2,-2).trim().split("|").map(vt=>vt.trim()),X=tt[0],st=tt[1],gt=X.startsWith("{")&&X.endsWith("}")?Gr(X.slice(1,-1)):X.startsWith("$")?Gr(X.slice(1)):he[X];return st?Gi(gt,st):String(gt??"")}if(M.startsWith("{")&&M.endsWith("}"))return String(Gr(M.slice(1,-1))??"");const F=M.trim();return/^[A-Za-z_][\w.-]*$/.test(F)?String(Gr(F)??""):String(M??"")},Cs=M=>M?M.replace(/\{\{\s*\[([\w/.-]+)\](?:\.([\w.]+(?:\|\w+)?))?\s*(?:\|\|\s*(.+?))?\}\}/g,($,I,Z,B)=>{let F,Q=Z;if(Z!=null&&Z.includes("|")){const X=Z.split("|");Q=X[0],F=X[1]}const tt=Gr(Q?`${I}.${Q}`:I);if(tt!=null){const X=F?Gi(tt,F):tt;return Array.isArray(X)||typeof X=="object"?JSON.stringify(X):String(X)}return B!==void 0?B.replace(/^["']|["']$/g,""):""}).replace(/\{\{(\w+(?:\.\w+)*)\s*(?:\|(date|time|datetime|timeago)\s*)?(?:\|\|\s*(.+?))?\}\}/g,($,I,Z,B)=>{const F=I.split(".");let Q=he;for(const tt of F)Q=Q==null?void 0:Q[tt];if(Q!==void 0)return Z?Gi(Q,Z):String(Q);if(Hr.current){let tt=Hr.current;for(const X of F)tt=tt==null?void 0:tt[X];if(tt!==void 0)return Z?Gi(tt,Z):String(tt)}if(F[0]==="config"){let tt=e==null?void 0:e.config;for(const X of F.slice(1))tt=tt==null?void 0:tt[X];if(tt!==void 0)return String(tt)}return B!==void 0?B.replace(/^["']|["']$/g,""):""}):"",hi=(M,$)=>{if(!M)return!0;if(typeof M=="object")try{const F=tt=>{const X=Date.parse(String(tt));return Number.isNaN(X)?Number(tt):X},Q={...he,...$,now:()=>Date.now(),date:F,isAfter:(tt,X)=>F(tt)>F(X),isBefore:(tt,X)=>F(tt)<F(X),includes:(tt,X)=>Array.isArray(tt)?tt.includes(X):String(tt??"").includes(String(X??"")),length:tt=>String(tt??"").length,lower:tt=>String(tt??"").toLowerCase(),upper:tt=>String(tt??"").toUpperCase(),round:Math.round,abs:Math.abs};return!!aht.evaluate(M.expression,Q)}catch{return!1}const I=F=>{var tt;if(F==="auth"){const X=(tt=e==null?void 0:e.auth)==null?void 0:tt.signedIn;return X===void 0?ft:X}if(F.startsWith("[")&&F.includes("]")){const X=F.indexOf("]"),st=sn.current[F.slice(1,X)],gt=F.slice(X+1).replace(/^\./,"");let vt;const pt=gt.split(".").filter(Boolean);pt[0]==="response"||pt[0]==="items"?vt=st:vt=(st==null?void 0:st.items)??st;for(const At of pt){if(vt==null)return;Array.isArray(vt)&&At==="length"?vt=vt.length:vt=vt==null?void 0:vt[At]}return vt}let Q=$;for(const X of F.split("."))Q=Q==null?void 0:Q[X];return Q},Z=M.trim();if(Z.includes("||"))return Z.split("||").some(F=>hi(F,$));if(Z.includes("&&"))return Z.split("&&").every(F=>hi(F,$));if(Z.startsWith("!"))return!I(Z.slice(1).trim());const B=Z.match(/^(\[[^\]]+\](?:\.\w+)*|\w+(?:\.\w+)*)\s*(==|!=|>|<|>=|<=)\s*(.+)$/);if(B){const F=I(B[1]),Q=B[3].trim().replace(/^["']|["']$/g,"");switch(B[2]){case"==":return String(F)===Q;case"!=":return String(F)!==Q;case">":return Number(F)>Number(Q);case"<":return Number(F)<Number(Q);case">=":return Number(F)>=Number(Q);case"<=":return Number(F)<=Number(Q)}}return!!I(Z)},fi=(M,$)=>hi(M,$||he),Pm=(M,$,I)=>{if(!f||h!==$&&!(u&&I&&u===I))return M;const B={...M};return f.size!==void 0&&(B.transform=`scale(${f.size/100})`,B.transformOrigin="center center"),f.spacing!==void 0&&(B.margin=`${f.spacing}px`),f.alignment&&(B.textAlign=f.alignment,f.alignment==="left"?(B.marginLeft="0",B.marginRight="auto"):f.alignment==="right"&&(B.marginLeft="auto",B.marginRight="0")),f.color&&(B.color=f.color),f.gridCols!==void 0&&(B.gridTemplateColumns=`repeat(${f.gridCols}, minmax(0, 1fr))`),f.gridGap!==void 0&&(B.gap=`${f.gridGap}px`),f.buttonBackground&&(B.background=f.buttonBackground),f.buttonTextColor&&(B.color=f.buttonTextColor),f.buttonBorderRadius!==void 0&&(B.borderRadius=`${f.buttonBorderRadius}px`),f.linkColor&&(B.color=f.linkColor),f.linkTextDecoration&&(B.textDecoration=f.linkTextDecoration),f.flexDirection&&(B.flexDirection=f.flexDirection),f.flexGap!==void 0&&(B.gap=`${f.flexGap}px`),B},Os=(M,$)=>{const I={...M};return $.scale!==void 0&&$.scale!==100&&(I.transform=`scale(${$.scale/100})`,I.transformOrigin="center center"),$.spacing!==void 0&&$.spacing!==0&&(I.margin=`${$.spacing}px`),$.alignment&&$.alignment!=="center"&&(I.textAlign=$.alignment,$.alignment==="left"?(I.marginLeft="0",I.marginRight="auto"):$.alignment==="right"&&(I.marginLeft="auto",I.marginRight="0")),$.color&&(I.color=$.color),$.background&&(I.backgroundColor=$.background),$.borderColor&&(I.borderColor=$.borderColor),I},rr=(M,$,I)=>{const Z=I==null?void 0:I.componentClass,F=h===M||u&&Z&&u===Z,Q=I?Os($,I):$,tt=Pm(Q,M,Z),X=(I==null?void 0:I.className)||"";/\bfont-serif\b/.test(X)&&(tt.fontFamily=le.typography.headingFontFamily),/\bfont-sans\b/.test(X)&&(tt.fontFamily=le.typography.fontFamily),I!=null&&I.fieldSpan&&I.fieldSpan>1&&(tt.gridColumn=`span ${I.fieldSpan} / span ${I.fieldSpan}`),I!=null&&I.rawStyle&&Object.assign(tt,I.rawStyle);const st=Et==="css-driven"?{"data-bf-r":`${$n}-${M}`}:{};if(F){const vt=tt.boxShadow?`${tt.boxShadow}, `:"";return{"data-component-key":M,...st,style:{...tt,boxShadow:`${vt}0 0 0 3px ${le.colors.primary}`}}}return Object.keys(tt).length>0?{"data-component-key":M,...st,style:tt}:{"data-component-key":M,...st}},Ih=(M,$)=>{var Q;if(!M)return{};const I=by(M),Z=M.split(/\s+/).filter(tt=>!/^(sm|md|lg|xl|2xl):/.test(tt)).join(" "),B=yt(Z||"flex");if(!vy(I))return B;if(Et==="css-driven"){const tt={flexDirection:"fd",gap:"gap",width:"w",minHeight:"min-h",alignItems:"items",justifyContent:"justify",display:"display",gridTemplateColumns:"grid-template",fontSize:"text",borderRadius:"radius",padding:"p",paddingLeft:"px",paddingRight:"px",paddingTop:"py",paddingBottom:"py",margin:"m",marginTop:"mt",marginRight:"mr",marginBottom:"mb",marginLeft:"ml"},X=(st,gt)=>`var(--bf-${tt[st]||st}-${$}, ${B[st]||gt})`;if(I.flexDirection.size>0&&(B.flexDirection=X("flexDirection","column")),I.gap.size>0&&(B.gap=X("gap","0px")),I.width.size>0&&(B.width=X("width","auto")),I.minHeight.size>0&&(B.minHeight=X("minHeight","0px")),I.alignItems.size>0&&(B.alignItems=X("alignItems","stretch")),I.justifyContent.size>0&&(B.justifyContent=X("justifyContent","flex-start")),I.display.size>0&&(B.display=X("display","flex")),I.gridCols.size>0){const st=B.gridTemplateColumns||"1",gt=typeof st=="string"?(Q=st.match(/^repeat\((\d+)/))==null?void 0:Q[1]:st;B.gridTemplateColumns=`repeat(var(--bf-cols-${$}, ${gt||"1"}), minmax(0, 1fr))`}return I.gridTemplateColumns.size>0&&(B.gridTemplateColumns=X("gridTemplateColumns",String(B.gridTemplateColumns||"none"))),I.textSize.size>0&&(B.fontSize=X("fontSize","1rem")),I.borderRadius.size>0&&(B.borderRadius=X("borderRadius","0px")),I.padding.p.size>0&&(B.padding=X("padding","0px")),I.padding.px.size>0&&(B.paddingLeft=X("paddingLeft","0px"),B.paddingRight=X("paddingRight","0px")),I.padding.py.size>0&&(B.paddingTop=X("paddingTop","0px"),B.paddingBottom=X("paddingBottom","0px")),I.margin.all.size>0&&(B.margin=X("margin","0px")),I.margin.t.size>0&&(B.marginTop=X("marginTop","0px")),I.margin.r.size>0&&(B.marginRight=X("marginRight","0px")),I.margin.b.size>0&&(B.marginBottom=X("marginBottom","0px")),I.margin.l.size>0&&(B.marginLeft=X("marginLeft","0px")),I.margin.x.size>0&&(B.marginLeft=X("marginLeft","0px"),B.marginRight=X("marginRight","0px")),I.margin.y.size>0&&(B.marginTop=X("marginTop","0px"),B.marginBottom=X("marginBottom","0px")),B}const F=ie;if(I.flexDirection.size>0&&(B.flexDirection=zt(I.flexDirection,F,"column")),I.gap.size>0&&(B.gap=zt(I.gap,F,"0px")),I.width.size>0&&(B.width=zt(I.width,F,"auto")),I.minHeight.size>0&&(B.minHeight=zt(I.minHeight,F,"0px")),I.alignItems.size>0&&(B.alignItems=zt(I.alignItems,F,"stretch")),I.justifyContent.size>0&&(B.justifyContent=zt(I.justifyContent,F,"flex-start")),I.display.size>0&&(B.display=zt(I.display,F,"flex")),I.gridCols.size>0){const tt=zt(I.gridCols,F,1);B.gridTemplateColumns=`repeat(${tt}, minmax(0, 1fr))`}return I.gridTemplateColumns.size>0&&(B.gridTemplateColumns=zt(I.gridTemplateColumns,F,String(B.gridTemplateColumns||"none"))),I.textSize.size>0&&(B.fontSize=zt(I.textSize,F,"1rem")),I.borderRadius.size>0&&(B.borderRadius=zt(I.borderRadius,F,"0px")),I.padding.p.size>0&&(B.padding=zt(I.padding.p,F,"0px")),I.padding.px.size>0&&(B.paddingLeft=zt(I.padding.px,F,"0px"),B.paddingRight=zt(I.padding.px,F,"0px")),I.padding.py.size>0&&(B.paddingTop=zt(I.padding.py,F,"0px"),B.paddingBottom=zt(I.padding.py,F,"0px")),I.margin.all.size>0&&(B.margin=zt(I.margin.all,F,"0px")),I.margin.t.size>0&&(B.marginTop=zt(I.margin.t,F,"0px")),I.margin.r.size>0&&(B.marginRight=zt(I.margin.r,F,"0px")),I.margin.b.size>0&&(B.marginBottom=zt(I.margin.b,F,"0px")),I.margin.l.size>0&&(B.marginLeft=zt(I.margin.l,F,"0px")),I.margin.x.size>0&&(B.marginLeft=zt(I.margin.x,F,"0px"),B.marginRight=zt(I.margin.x,F,"0px")),I.margin.y.size>0&&(B.marginTop=zt(I.margin.y,F,"0px"),B.marginBottom=zt(I.margin.y,F,"0px")),B},Sc=v.useRef(new Map),Am=v.useCallback(async M=>{const $=Sc.current.get(M);if($)return $;const I=r||localStorage.getItem("token")||"",Z=t==null?void 0:t.endpoint,B=N||(typeof Z=="string"?Z.replace(/\/+$/,""):"")||"/api",F=`?collection=${encodeURIComponent(M)}`;for(const Q of[`${B}/tenant/schema${F}`,`${B}/admin/schema${F}`])try{const tt=await fetch(Q,{headers:{Authorization:`Bearer ${I}`}});if(!tt.ok)continue;const X=await tt.json(),gt=(Array.isArray(X)?X:Array.isArray(X==null?void 0:X.data)?X.data:[]).find(vt=>vt.collection===M)||null;if(!gt)continue;return Sc.current.set(M,gt),gt}catch{}return null},[r,N,t]),In={cfg:le,sdk:t,apiUrl:N,renderMode:Et,scopeId:$n,widgets:[...Array.isArray(e==null?void 0:e.widgets)?e.widgets:[],...Object.values(Mi).flatMap(M=>M.widgets||[])],widgetStack:[],parseClassName:yt,containerWidth:ie,interactionDisabled:m,previewMode:j,isAuthenticated:ft,styleOverrides:f,selectedComponentKey:h,selectedComponentClass:u,sceneData:he,setSceneData:se,setColorMode:M=>As(M),portalTarget:Ce.current,imageErrors:$t,setImageErrors:To,handleButtonClick:ka,interpolateText:Cs,evaluateExpression:_c,evaluateCondition:fi,showToast:$e,setActiveModal:un,dismissModal:Fi,setOverlayModal:tr,dismissOverlayModal:Co,fetchListData:kn,fetchEntitySchema:Am,goBack:Po,currentSceneId:Ot,isMobileView:ai,navigateToScene:qr,mobileMenuOpen:vs,setMobileMenuOpen:bs,renderComponent:(M,$,I)=>zf(In,M,$,I),renderIcon:(M,$,I)=>(n==null?void 0:n(M,$,I))??wb(M,$,I),getCommonProps:rr,imageReplacements:x,listData:$i,rowContextRef:Hr,uploadFile:Es,runBulkSelectAction:Oh,selectDynamicOptions:Ii,setSelectDynamicOptions:Ri,loading:Ar,buttonLoading:Ni,withLoading:Hi,paginationState:Cn,parseClassNameResponsive:Ih};O&&(In.renderPhaserGame=(M,$)=>O(In,M,$));let gn=[];const Rh=v.useMemo(()=>{const M={};for(const[$,I]of Object.entries(he))$.startsWith("_")||(M[$]=I);return JSON.stringify(M)},[he]),Io=v.useRef({}),Ra=v.useRef(""),Lh=v.useRef(""),ir=v.useRef(""),di=v.useRef({}),Nh=v.useRef({}),Er=v.useRef(Cn);Er.current=Cn;const jh=v.useRef(Ar);jh.current=Ar;const pi=v.useRef({}),Pc=v.useRef(new Set),Cr=v.useRef(null);v.useEffect(()=>{if(!pe||!ft){Gn.current.forEach($=>$()),Gn.current.clear(),zi.current.clear();return}const M=$=>{var Z;const I=$.getAttribute("data-bf-scroll-load");!I||Pc.current.has(I)||(Pc.current.add(I),(Z=Cr.current)==null||Z.observe($))};Cr.current||(Cr.current=new IntersectionObserver($=>{for(const I of $){if(!I.isIntersecting)continue;const Z=I.target.getAttribute("data-bf-scroll-load");if(!Z||pi.current[Z])continue;const B=Er.current[Z],F=ci.current[Z];if(!F||!(B!=null&&B.hasMore)||jh.current[Z])continue;pi.current[Z]=!0;const Q=di.current[Z]||1;di.current[Z]=Q+1;const tt=Nh.current[Z];kn(F,Z,Q,B.limit,tt==null?void 0:tt.field,tt==null?void 0:tt.direction,void 0,!0).finally(()=>{var X;if(pi.current[Z]=!1,I.target.isConnected){const st=I.target.getBoundingClientRect();st.bottom>-160&&st.top<(window.innerHeight||800)+160&&((X=Cr.current)==null||X.observe(I.target))}})}},{rootMargin:"160px 0px"})),document.querySelectorAll("[data-bf-scroll-load]").forEach(M)},[Ot,pe,kn,$i,Ar,Cn]),v.useEffect(()=>()=>{var M;(M=Cr.current)==null||M.disconnect(),Cr.current=null,Pc.current=new Set},[Ot]),v.useEffect(()=>{if(!pe)return;const M=Q=>typeof Q=="string"?Q.replace(/\{\{\s*\[([\w/.-]+)\](?:\.([\w.]+))?\s*(?:\|\|\s*(.+?))?\}\}/g,(tt,X,st,gt)=>{const vt=Gr(st?`${X}.${st}`:X);return vt!=null?String(vt):gt!==void 0?gt.replace(/^["']|["']$/g,""):""}).replace(/\{\{([\w.]+)\}\}/g,(tt,X)=>{const st=X.split(".").reduce((gt,vt)=>gt==null?void 0:gt[vt],he);return st!=null?String(st):""}):"";Ra.current!==Ot&&(Ra.current=Ot);let $=new Set;const I=(Q,tt="")=>{Array.isArray(Q)&&Q.forEach((X,st)=>{var At;const gt=`${tt}-${st}`;if((X.type==="list"||X.type==="table")&&X.dataSource){$.add(gt),X.key&&$.add(X.key),Nh.current[gt]=X.sort||{};const a=M(X.dataSource),d=Io.current[gt]!==a;d&&(Io.current[gt]=a,di.current[gt]=1,kn(a,gt,0,X.pageSize||10,void 0,void 0,X.key));const g=X.realtime,_=g?M(g.channel||""):"",C=g?M(g.url||""):"",k=g?M(g.event||""):"",W=g?`${C}|${_}|${k}`:"",et=zi.current.get(gt)!==W;if(g&&(d||et)){zi.current.set(gt,W);const ot=Gn.current.get(gt);ot&&ot();const dt=X.pageSize||10;let Pt;const kt=oe=>{if(!g.bind)return;let St=oe;try{St=typeof oe=="string"?JSON.parse(oe):oe}catch{}g.bindField&&(!St||St[g.bindField]===void 0)||St&&typeof St=="object"&&se(jt=>({...jt,[g.bind]:St}))},Yt=oe=>{if(!g.filter)return!0;let St=oe;if(typeof St=="string")try{St=JSON.parse(St)}catch{return!1}return!St||typeof St!="object"?!1:Object.entries(g.filter).every(([jt,Kt])=>{const Ne=typeof Kt=="string"?Cs(Kt):Kt;return Ne===""||St[jt]===Ne})},fn=(oe,St)=>{if(!g.onEvent||!Array.isArray(St))return;let jt=oe;if(typeof jt=="string")try{jt=JSON.parse(jt)}catch{return}const Kt=jt==null?void 0:jt.id,Ne=St.find(Ge=>(Ge==null?void 0:Ge.id)===Kt);if(Ne&&!(g.onEvent.when&&!hi(g.onEvent.when,Ne))){if(g.onEvent.once===!0){const Ge=[gt,g.onEvent.action,g.onEvent.when||"",(Ne==null?void 0:Ne.id)||Kt||""].join(":");if(ys.current.has(Ge))return;ys.current.add(Ge)}Hr.current=Ne,Ma.current=Object.keys(Ne),se(Ge=>({...Ge,...Ne})),ka(g.onEvent.action,{}).catch(()=>{})}};switch(g.mode){case"poll":{const oe=g.interval||5e3,St=window.setInterval(()=>{g.while&&!hi(g.while,ii.current)||kn(a,gt,0,dt)},oe);Pt=()=>clearInterval(St);break}case"sse":{if(!C&&!_){Pt=()=>{};break}const oe=r||localStorage.getItem("token")||"",St=C||`/events?channel=${_}`,jt=oe&&!St.includes("token=")?`${St}${St.includes("?")?"&":"?"}token=${encodeURIComponent(oe)}`:St,Kt=new EventSource(jt),Ne=Ge=>{Yt(Ge.data)&&(kt(Ge.data),kn(a,gt,0,dt))};k?Kt.addEventListener(k,Ne):Kt.onmessage=Ne,Kt.onerror=()=>Kt.close(),Pt=()=>Kt.close();break}case"ws":{const oe=_||(w?`tenant:${w}:entities`:"");if(!C&&!oe){Pt=()=>{};break}let St=null;const jt=()=>{var Ne;let Kt;if(oe&&((Ne=t==null?void 0:t.client)!=null&&Ne.createWebSocket))Kt=t.client.createWebSocket(oe);else{const Ge=C||`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws?channel=${oe}`;Kt=new WebSocket(Ge)}Kt.onmessage=Ge=>{Yt(Ge.data)&&(kt(Ge.data),kn(a,gt,0,dt).then(Ji=>{const zn=Array.isArray(Ji)?Ji:$i[gt];g.onEvent&&fn(Ge.data,zn);const Ls=he==null?void 0:he.id;if(Ls&&Array.isArray(zn)&&Ra.current===Ot){const sr=zn.find(be=>(be==null?void 0:be.id)===Ls);sr&&se(be=>({...be,...sr}))}}))},Kt.onclose=()=>setTimeout(jt,3e3),St=Kt};jt(),Pt=()=>St==null?void 0:St.close();break}default:Pt=()=>{}}Gn.current.set(gt,Pt)}}if(X.type==="select"&&X.dataSource){const a=`${gt}-sel`,d=M(X.dataSource);Io.current[a]!==d&&(Io.current[a]=d,(async()=>{try{const g=X.dataSource,_=M(g),C=await fetch(_,{headers:{Authorization:`Bearer ${r||localStorage.getItem("token")||""}`}});if(!C.ok)return;const k=await C.json(),W=X.dataField||"configs",et=X.optionLabel||"label",ot=X.optionValue||"value",dt=k[W]||k.data||k,Pt=Array.isArray(dt)?dt.map(kt=>({label:kt[et]||kt.name||kt.label,value:kt[ot]||kt.id||kt.name||kt.label})):[];Ri(kt=>({...kt,[gt]:Pt}))}catch{}})())}X.children&&I(X.children,gt);const vt=X.accordionItems||(X.type==="accordion"?X.items:null);Array.isArray(vt)&&vt.forEach((a,d)=>{Array.isArray(a==null?void 0:a.content)&&I(a.content,`${gt}-acc-${d}-content`)}),Array.isArray(X.tabItems)&&X.tabItems.forEach((a,d)=>{const g=Array.isArray(a==null?void 0:a.content)?a.content:Array.isArray(a==null?void 0:a.children)?a.children:null;g&&I(g,`${gt}-tabcontent-${d}`)});const pt=X;if(pt.type==="widget"&&pt.widgetId){const a=(At=e==null?void 0:e.widgets)==null?void 0:At.find(d=>d.id===pt.widgetId);a&&Array.isArray(a.components)&&I(a.components,`${gt}-${pt.widgetId}`)}})},Z=`${Ot}|${Rh}|${ft}`;Lh.current!==Z&&(Lh.current=Z,I(gn),ui.current=$);const B=Ae||_n;if(ir.current!==((B==null?void 0:B.id)||"")){ir.current=(B==null?void 0:B.id)||"";for(const[Q,tt]of Gn.current)Q.startsWith("modal")&&(tt(),Gn.current.delete(Q),delete Io.current[Q])}const F=B?Fe==null?void 0:Fe[B.id]:void 0;$=new Set,F&&Array.isArray(F==null?void 0:F.components)&&I(F.components,"modal"),en.current=new Set([...ui.current,...$]);for(const[Q,tt]of Gn.current)en.current.has(Q)||(tt(),Gn.current.delete(Q),zi.current.delete(Q),delete Io.current[Q])},[Ot,kn,Rh,Ae==null?void 0:Ae.id,_n==null?void 0:_n.id,ft]),v.useEffect(()=>()=>{Gn.current.forEach(M=>M()),Gn.current.clear()},[Ot]);const La=v.useMemo(()=>{if(!pe||Et!=="css-driven")return null;const M=new Map,$=(I,Z)=>{I.forEach((B,F)=>{const Q=`${Z}-${F}`;if(B.className){const tt=by(B.className);if(vy(tt)){const X=J$($n,Q,tt);X&&M.set(Q,X)}}B.children&&$(B.children,Q)})};return $(gn,""),M},[Ot,gn,Et,$n]),Ms=v.useRef(nr);Ms.current=nr;const Ro=le.realtime,Zr=Ro==null?void 0:Ro.mode,Zi=Ro==null?void 0:Ro.url;if(v.useEffect(()=>{if(!ft||Zr!=="sse"||!Zi)return;const M=r||localStorage.getItem("token");if(!M)return;let $=null,I=!1;return(async()=>{try{const Z=N||(t==null?void 0:t.endpoint)||window.location.origin,B=await fetch(`${Z}${Zi}/token`,{headers:{Authorization:`Bearer ${M}`}});if(!B.ok)return;const{token:F}=await B.json();if(!F||I)return;$=new EventSource(`${Z}${Zi}/subscribe?token=${encodeURIComponent(F)}`),$.onmessage=Q=>{try{const tt=JSON.parse(Q.data);tt!=null&&tt.message&&Ms.current(tt,"success")}catch{}},$.onerror=()=>$==null?void 0:$.close()}catch{}})(),()=>{I=!0,$==null||$.close()}},[ft,N,r,Zr,Zi]),!pe)return v.createElement(v.Fragment,null,oht(ct,Qt.length,Po,P));const fe=pe,Yi=fe.backgroundColor,Dh=Yi&&Qg(Yi)!==(le.colorMode==="dark"?"dark":"light")?Qg(Yi)==="dark"?xu.text:wu.text:le.colors.text,or=fe.height!==void 0?typeof fe.height=="number"?`${fe.height}px`:fe.height:void 0,Na=fe.minHeight!==void 0?typeof fe.minHeight=="number"?`${fe.minHeight}px`:fe.minHeight:void 0,Lo=fe.className?{...vT,fontFamily:le.typography.fontFamily,display:"flex",flexDirection:"column",width:"100%",maxWidth:"100%",position:"relative",...or?{height:or}:{},...Na?{minHeight:Na}:{},backgroundColor:Yi||le.colors.background,color:Dh,...yt(fe.className)}:{...vT,fontFamily:le.typography.fontFamily,display:"flex",flexDirection:"column",position:"relative",width:"100%",maxWidth:"100%",...or?{height:or}:{},...Na?{minHeight:Na}:{},backgroundColor:Yi||le.colors.background,color:Dh},Bh=Array.isArray(fe.components)?fe.components:[],Yr=iht($n),ks=(pe==null?void 0:pe.requireAuth)===!0||(fe==null?void 0:fe.requiresAuth)===!0||(Dt==null?void 0:Dt.requiresAuth)===!0||((Xi=Dt==null?void 0:Dt.config)==null?void 0:Xi.requiresAuth)===!0,Ac=(ks||rt)&&!ft?kh():null,Ec=ft&&ks&&J===!1&&!bt?v.createElement("div",{key:"email-banner",style:{position:"relative",display:"flex",alignItems:"center",justifyContent:"center",gap:"8px",padding:"10px 40px",backgroundColor:le.colorMode==="dark"?"#78350f":"#fef3c7",color:le.colorMode==="dark"?"#fef3c7":"#92400e",fontSize:"13px",fontWeight:500,boxShadow:"0 2px 8px rgba(0,0,0,0.15)"}},In.renderIcon("alert-triangle",14),v.createElement("span",null,"Verify your email — check your inbox for the confirmation link."),v.createElement("button",{"aria-label":"Dismiss",onClick:()=>de(!0),style:{position:"absolute",right:"8px",top:"50%",transform:"translateY(-50%)",background:"none",border:"none",cursor:"pointer",color:"inherit",display:"flex",alignItems:"center",padding:"4px"}},In.renderIcon("x",16))):null,gr=e,Ki=Array.isArray(gr==null?void 0:gr.widgets)?gr.widgets:[],$s=new Set,Is=M=>{if(Array.isArray(M))for(const $ of M)$&&$.type==="widget"&&$.widgetId&&$s.add($.widgetId),$&&Array.isArray($.children)&&Is($.children)};Is(Bh);for(const M of Ki)Is(M.components);const zh=Ki.filter(M=>$s.has(M.id)?!1:M.sceneIds==="*"?!0:Array.isArray(M.sceneIds)?M.sceneIds.includes("*")||M.sceneIds.includes(Ot):!1),Em=Pr.map(M=>{var Z,B,F;const $=Mi[M.id],I=M.sourceSceneId?(Z=$==null?void 0:$.steps)==null?void 0:Z.find(Q=>Q.id===M.sourceSceneId):(B=$==null?void 0:$.steps)==null?void 0:B.find(Q=>Q.type==="render_scene");return(F=I==null?void 0:I.config)!=null&&F.components?{...M,components:I.config.components}:null}).filter(Boolean);gn=[...Bh],(Mc=(Oc=gr.layout)==null?void 0:Oc.header)!=null&&Mc.length?gn.splice(0,0,...gr.layout.header):(Mr=(Gh=fe==null?void 0:fe.layout)==null?void 0:Gh.header)!=null&&Mr.length&&gn.splice(0,0,...fe.layout.header);for(const M of zh||[]){const $=M.components||[];if(!$.length)continue;if(M.targetKey){const Z=M.targetKey.split("-").filter(Boolean).map(Number);if(Z.length>0){let B=gn,F=Z[0];for(let tt=0;tt<Z.length-1;tt++){const X=B[Z[tt]];if(!X||!Array.isArray(X.children))break;B=X.children,F=Z[tt+1]}const Q=M.targetPosition||"before";if(Q==="inside"){const tt=B[F];tt&&(Array.isArray(tt.children)||(tt.children=[]),tt.children.unshift(...$))}else Q==="after"?B.splice(F+1,0,...$):B.splice(F,0,...$);continue}}const I=M.index??gn.length;gn.splice(I,0,...$)}for(const M of Em){if(M.targetKey){const $=M.targetKey.split("-").filter(Boolean).map(Number);let I=gn,Z=$[0];for(let F=0;F<$.length-1;F++){const Q=I[$[F]];if(!Q||!Array.isArray(Q.children))break;I=Q.children,Z=$[F+1]}const B=M.targetPosition||"before";if(B==="inside"){const F=I[Z];F&&(Array.isArray(F.children)||(F.children=[]),F.children.unshift(...M.components))}else B==="after"?I.splice(Z+1,0,...M.components):I.splice(Z,0,...M.components);continue}gn.splice(M.index??gn.length,0,...M.components)}($c=(kc=gr.layout)==null?void 0:kc.footer)!=null&&$c.length?gn.push(...gr.layout.footer):(Zh=(jo=fe==null?void 0:fe.layout)==null?void 0:jo.footer)!=null&&Zh.length&&gn.push(...fe.layout.footer);const ja=La&&La.size>0?v.createElement("style",{key:"bf-responsive"},Array.from(La.values()).join(`
|
|
197
|
+
`):g},dismiss:d}},Zn=(M,$=!0)=>{if($&&(M!=null&&M.onSuccess)){const I=Array.isArray(M.onSuccess)?M.onSuccess:[M.onSuccess];for(const Z of I){const{type:B,value:F,title:Q,key:tt}=Z;switch(B){case"toast":$e(F||"Success!","success");break;case"navigate":F&&qr(F);break;case"redirect":F&&(window.location.href=F);break;case"modal":F&&Fe[F]?un({id:F,definition:Fe[F]}):un({id:"__legacy",definition:{title:Q||"Success",components:F?[{type:"text",text:F,color:le.colorMode==="light"?"rgba(0,0,0,0.65)":"rgba(255,255,255,0.7)",fontSize:14}]:[],actions:[{label:"OK",variant:"primary",dismiss:!0}]}});break;case"route":F&&qi(F);break;case"set_data":tt&&F!==void 0&&se(X=>({...X,[tt]:F}));break}}}else!$&&(M!=null&&M.onError)&&$e(M.onError.message||"An error occurred","error")},kh=()=>{var ot,dt,Pt,kt,Yt,fn,oe;const M=async()=>{var Kt,Ne,Ge,Ji,zn,Ls;if(!qt||!ye||On==="register"&&!ve)return;const St=Vr(qt),jt=Vi(ye);if(St||jt){hn(St||jt);return}if(On==="register"&&ve!==ye){Tr("confirm","Passwords do not match"),hn("Passwords do not match");return}ke(!0),hn(null);try{const sr=On==="login"?"/auth/login":"/auth/register",be=`${er().replace(/\/+$/,"")}${sr}`,Ba=On==="login"?{email:qt,password:ye,tenantId:w}:{email:qt,password:ye,displayName:qt.split("@")[0],tenantId:w},Yh={"Content-Type":"application/json"},Mm=["localhost","127.0.0.1","[::1]"].includes(window.location.hostname);T&&!Mm&&(Yh["x-app-id"]=T);const Ic=await fetch(be,{method:"POST",headers:Yh,body:JSON.stringify(Ba)});if(!Ic.ok){const t2=await Ic.json().catch(()=>({error:"Authentication failed"}));throw new Error(Oo(t2))}const Fn=await Ic.json();if(Array.isArray(Fn)||Fn.success===!1)throw new Error(Oo(Fn));const Rc=((Kt=Fn.data)==null?void 0:Kt.token)||Fn.token||Fn.accessToken||Fn.idToken;Rc&&localStorage.setItem("token",Rc);const Kh=((Ne=Fn.data)==null?void 0:Ne.refreshToken)||Fn.refreshToken;Kh&&localStorage.setItem("backflow_refresh_token",Kh);const Ax=((Ji=(Ge=Fn.data)==null?void 0:Ge.user)==null?void 0:Ji.id)||((zn=Fn.user)==null?void 0:zn.id)||((Ls=Fn.data)==null?void 0:Ls.userId);if(Ax&&localStorage.setItem("backflow_refresh_user_id",Ax),!ft&&(rt||Ke.current||!!cn.current)){window.location.reload();return}Ke.current=!1,Ct(!0),Rt(!1),G(!1),mr(""),wt(""),It(""),_s({}),hn(null)}catch(sr){const be=typeof sr=="string"?sr:(sr==null?void 0:sr.message)||JSON.stringify(sr)||"Authentication failed";hn(be),$e(be,"error")}finally{ke(!1)}},$=async()=>{if(!qt)return;const St=Vr(qt);if(St){hn(St);return}ke(!0),hn(null);try{const jt=await fetch("/api/auth/forgot-password",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:qt})});if(!jt.ok){const Kt=await jt.json().catch(()=>({error:"Failed to send reset email"}));throw new Error(Oo(Kt))}ee("reset"),Mn(""),wt(""),hn(null)}catch(jt){const Kt=typeof jt=="string"?jt:(jt==null?void 0:jt.message)||"Failed to send reset email";hn(Kt),$e(Kt,"error")}finally{ke(!1)}},I=async()=>{if(!Wi||!ye)return;const St=Vi(ye);if(St){hn(St);return}ke(!0),hn(null);try{const jt=await fetch("/api/auth/reset-password",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:Wi,password:ye})});if(!jt.ok){const Kt=await jt.json().catch(()=>({error:"Failed to reset password"}));throw new Error(Oo(Kt))}ee("login"),mr(""),wt(""),Mn(""),hn(null)}catch(jt){const Kt=typeof jt=="string"?jt:(jt==null?void 0:jt.message)||"Failed to reset password";hn(Kt),$e(Kt,"error")}finally{ke(!1)}},Z=St=>{ee(St),hn(null),St!=="reset"&&(Mn(""),wt("")),It(""),_s({})},B=le.colorMode==="dark",F=B?"#f3f4f6":"#111827",Q=B?"#9ca3af":"#6b7280",tt=B?"#374151":"#f3f4f6",X=B?"#4b5563":"#d1d5db",st=B?"#ffffff":"#000000",gt=B?"#000000":"#ffffff",vt=B?"#1f2937":"#ffffff",pt="#ef4444",At=(St="12px")=>({width:"100%",padding:"12px 16px",border:`1px solid ${X}`,borderRadius:"8px",fontSize:"14px",backgroundColor:tt,color:F,outline:"none",marginBottom:St,boxSizing:"border-box"}),a=(St,jt,Kt,Ne,Ge,Ji)=>v.createElement("div",{key:St,style:{position:"relative",marginBottom:"12px"}},U("input",{key:"input",type:ae[St]?"text":"password",placeholder:jt,value:Kt,onChange:zn=>Ne(zn.target.value),onKeyDown:zn=>{zn.key==="Enter"&&Ge()},style:{...At("0px"),paddingRight:"40px",borderColor:Ji?pt:X}}),v.createElement("button",{key:"toggle",type:"button","aria-label":ae[St]?"Hide password":"Show password",onClick:()=>_s(zn=>({...zn,[St]:!zn[St]})),style:{position:"absolute",right:"8px",top:"50%",transform:"translateY(-50%)",background:"none",border:"none",cursor:"pointer",color:Q,display:"flex",alignItems:"center",padding:"4px"}},In.renderIcon(ae[St]?"eye-off":"eye",16)));l||e!=null&&e.title;const d=(ot=e==null?void 0:e.config)!=null&&ot.logo&&((dt=e==null?void 0:e.config)==null?void 0:dt.logo)!==""?e.config.logo:"",g=c||((Pt=e==null?void 0:e.navigation)==null?void 0:Pt.logo)||"mail",_=[];_.push(v.createElement("div",{key:"brand",role:"button","aria-label":"Go back home",onClick:()=>{qr("/"),Rt(!1),Ke.current=!1,cn.current=null},style:{display:"flex",alignItems:"center",justifyContent:"center",marginBottom:"20px",cursor:"pointer"}},d?v.createElement("img",{src:d,alt:"",style:{width:"56px",height:"56px",objectFit:"contain"}}):In.renderIcon(g,56))),On==="login"?(_.push(v.createElement("h2",{key:"title",style:{fontSize:"24px",fontWeight:700,color:F,marginBottom:"8px",textAlign:"center"}},"Sign In")),_.push(v.createElement("p",{key:"sub",style:{fontSize:"14px",color:Q,marginBottom:"24px",textAlign:"center"}},"Enter your credentials to continue")),_.push(U("input",{key:"email",type:"email",placeholder:"Email Address",value:qt,onChange:St=>{mr(St.target.value),Tr("email",Vr(St.target.value))},style:{...At(),borderColor:Te.email&&qt?pt:X}})),Te.email&&qt&&_.push(v.createElement("p",{key:"email-err",style:{color:pt,fontSize:"12px",marginTop:"-8px",marginBottom:"8px"}},Te.email)),_.push(a("pass","Password",ye,St=>{wt(St),Tr("pass",Vi(St))},M,!!(Te.pass&&ye))),Te.pass&&ye&&_.push(v.createElement("p",{key:"pass-err",style:{color:pt,fontSize:"12px",marginTop:"-12px",marginBottom:"12px"}},Te.pass)),li&&_.push(v.createElement("p",{key:"err",style:{color:pt,fontSize:"13px",marginBottom:"12px",textAlign:"center"}},li)),_.push(v.createElement("button",{key:"submt",onClick:M,disabled:qe||!qt||!ye,style:{width:"100%",padding:"12px",borderRadius:"8px",fontSize:"15px",fontWeight:600,backgroundColor:qe?B?"#4b5563":"#9ca3af":st,color:gt,border:"none",cursor:qe?"not-allowed":"pointer",marginBottom:"8px"}},qe?"Please wait...":"Sign In")),_.push(v.createElement("p",{key:"forgot",style:{fontSize:"13px",color:Q,textAlign:"center",cursor:"pointer",marginBottom:"16px"},onClick:()=>Z("forgot")},"Forgot password?")),_.push(v.createElement("p",{key:"sw",style:{fontSize:"13px",color:Q,textAlign:"center",cursor:"pointer"},onClick:()=>Z("register")},"Don’t have an account? Register"))):On==="register"?(_.push(v.createElement("h2",{key:"title",style:{fontSize:"24px",fontWeight:700,color:F,marginBottom:"8px",textAlign:"center"}},"Create Account")),_.push(v.createElement("p",{key:"sub",style:{fontSize:"14px",color:Q,marginBottom:"24px",textAlign:"center"}},"Create an account to get started")),_.push(U("input",{key:"email",type:"email",placeholder:"Email",value:qt,onChange:St=>{mr(St.target.value),Tr("email",Vr(St.target.value))},style:{...At(),borderColor:Te.email&&qt?pt:X}})),Te.email&&qt&&_.push(v.createElement("p",{key:"email-err",style:{color:pt,fontSize:"12px",marginTop:"-8px",marginBottom:"8px"}},Te.email)),_.push(a("pass","Password",ye,St=>{wt(St),Tr("pass",Vi(St))},M,!!(Te.pass&&ye))),Te.pass&&ye&&_.push(v.createElement("p",{key:"pass-err",style:{color:pt,fontSize:"12px",marginTop:"-12px",marginBottom:"12px"}},Te.pass)),_.push(a("confirm","Confirm password",ve,St=>{It(St),Tr("confirm",Ps(ye,St))},M,!!(Te.confirm&&ve))),Te.confirm&&ve&&_.push(v.createElement("p",{key:"confirm-err",style:{color:pt,fontSize:"12px",marginTop:"-12px",marginBottom:"12px"}},Te.confirm)),li&&_.push(v.createElement("p",{key:"err",style:{color:pt,fontSize:"13px",marginBottom:"12px",textAlign:"center"}},li)),_.push(v.createElement("button",{key:"submt",onClick:M,disabled:qe||!qt||!ye||!ve,style:{width:"100%",padding:"12px",borderRadius:"8px",fontSize:"15px",fontWeight:600,backgroundColor:qe?B?"#4b5563":"#9ca3af":st,color:gt,border:"none",cursor:qe?"not-allowed":"pointer",marginBottom:"16px"}},qe?"Please wait...":"Create Account")),_.push(v.createElement("p",{key:"sw",style:{fontSize:"13px",color:Q,textAlign:"center",cursor:"pointer"},onClick:()=>Z("login")},"Already have an account? Sign In"))):On==="forgot"?(_.push(v.createElement("h2",{key:"title",style:{fontSize:"24px",fontWeight:700,color:F,marginBottom:"8px",textAlign:"center"}},"Reset Password")),_.push(v.createElement("p",{key:"sub",style:{fontSize:"14px",color:Q,marginBottom:"24px",textAlign:"center"}},"Enter your email to receive a reset link")),_.push(U("input",{key:"email",type:"email",placeholder:"Email",value:qt,onChange:St=>{mr(St.target.value),Tr("email",Vr(St.target.value))},onKeyDown:St=>{St.key==="Enter"&&$()},style:{...At("16px"),borderColor:Te.email&&qt?pt:X}})),Te.email&&qt&&_.push(v.createElement("p",{key:"email-err",style:{color:pt,fontSize:"12px",marginTop:"-8px",marginBottom:"8px"}},Te.email)),li&&_.push(v.createElement("p",{key:"err",style:{color:pt,fontSize:"13px",marginBottom:"12px",textAlign:"center"}},li)),_.push(v.createElement("button",{key:"submt",onClick:$,disabled:qe||!qt,style:{width:"100%",padding:"12px",borderRadius:"8px",fontSize:"15px",fontWeight:600,backgroundColor:qe?B?"#4b5563":"#9ca3af":st,color:gt,border:"none",cursor:qe?"not-allowed":"pointer",marginBottom:"16px"}},qe?"Please wait...":"Send Reset Link")),_.push(v.createElement("p",{key:"sw",style:{fontSize:"13px",color:Q,textAlign:"center",cursor:"pointer"},onClick:()=>Z("login")},"Back to Sign In"))):On==="reset"&&(_.push(v.createElement("h2",{key:"title",style:{fontSize:"24px",fontWeight:700,color:F,marginBottom:"8px",textAlign:"center"}},"Set New Password")),_.push(v.createElement("p",{key:"sub",style:{fontSize:"14px",color:Q,marginBottom:"24px",textAlign:"center"}},"Enter the reset code and your new password")),_.push(U("input",{key:"code",type:"text",placeholder:"Reset code",value:Wi,onChange:St=>Mn(St.target.value),style:At()})),_.push(a("pass","New password",ye,St=>{wt(St),Tr("pass",Vi(St))},I,!!(Te.pass&&ye))),Te.pass&&ye&&_.push(v.createElement("p",{key:"pass-err",style:{color:pt,fontSize:"12px",marginTop:"-12px",marginBottom:"12px"}},Te.pass)),li&&_.push(v.createElement("p",{key:"err",style:{color:pt,fontSize:"13px",marginBottom:"12px",textAlign:"center"}},li)),_.push(v.createElement("button",{key:"submt",onClick:I,disabled:qe||!Wi||!ye,style:{width:"100%",padding:"12px",borderRadius:"8px",fontSize:"15px",fontWeight:600,backgroundColor:qe?B?"#4b5563":"#9ca3af":st,color:gt,border:"none",cursor:qe?"not-allowed":"pointer",marginBottom:"16px"}},qe?"Please wait...":"Reset Password")),_.push(v.createElement("p",{key:"sw",style:{fontSize:"13px",color:Q,textAlign:"center",cursor:"pointer"},onClick:()=>Z("login")},"Back to Sign In")));const C=((kt=e==null?void 0:e.config)==null?void 0:kt.auth)||{},k=C.style==="page"?"page":"modal",W=C.containerStyle||{},et=v.createElement("div",{key:"auth-box",style:{width:"100%",maxWidth:k==="page"?"400px":"360px",padding:"24px",backgroundColor:"#000000",borderRadius:"12px",...W}},..._);if(k==="page"){const St=((Yt=le.colors)==null?void 0:Yt.primary)||"#4f46e5",jt=C.coverImage?`url(${C.coverImage}) center/cover no-repeat`:St,Kt=(fn=e==null?void 0:e.config)!=null&&fn.logo&&((oe=e==null?void 0:e.config)==null?void 0:oe.logo)!==""?e.config.logo:"",Ne=Kt?v.createElement("img",{src:Kt,alt:"",style:{position:"absolute",bottom:"-6%",left:"50%",width:"90%",maxWidth:"660px",height:"auto",objectFit:"contain",transform:"translateX(-50%) rotate(-8deg)",opacity:.92,filter:"brightness(0) invert(1)",animation:"bf-logo-excited 4s ease-in-out infinite"}}):v.createElement("div",{style:{color:"#ffffff",opacity:.95}},In.renderIcon(g,96));return v.createElement("div",{key:"auth-page",style:{position:"fixed",top:0,left:0,right:0,bottom:0,display:"flex",backgroundColor:vt,zIndex:1e4,animation:"bf-fade-in 0.2s ease"}},v.createElement("div",{style:{flex:ai?"1 1 100%":"0 0 40%",display:"flex",alignItems:"center",justifyContent:"center",padding:"24px",backgroundColor:"#000000"}},et),v.createElement("div",{style:{flex:"0 0 60%",background:jt,display:ai?"none":"flex",alignItems:"center",justifyContent:"center",position:"relative",overflow:"hidden"}},Ne))}return v.createElement("div",{key:"auth-form",style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0,0,0,0.5)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e4,animation:"bf-fade-in 0.15s ease"}},et)},ka=async(M,$,I)=>{var Z,B;try{let F=String(Cs(M)??"");const Q=F.match(/^\{\{\s*(.+?)\s*\?\s*(.*?)\s+:\s+(.*?)\s*\}\}$/);Q&&(F=fi(Q[1])?Q[2]:Q[3]);const tt=F.split(";").map(a=>a.trim()).filter(Boolean);if(tt.length>1){for(const a of tt)await ka(a,void 0,I);return}if(F==="go_back"){Po();return}if(F==="toggle_theme"){As((he._colorMode||le.colorMode)==="dark"?"light":"dark");return}if(F==="close_modal"){Fi();return}const X=F.match(/^(toast|show_toast):(.*)$/);if(X){const a=X[2].trim();a&&$e(a,"success");return}const st=F.match(/^scroll_to:([\w-]+)$/);if(st){(Z=document.getElementById(st[1]))==null||Z.scrollIntoView({behavior:"smooth",block:"start"});return}const gt=F.match(/^set_data:([\w.]+)=(.*)$/);if(gt){se(a=>({...a,[gt[1]]:gt[2]}));return}const vt=F.match(/^native:([a-z][\w.-]*)$/i);if(vt){if(!i){$e("Native app required","error");return}const a=vt[1],d=await i(a,he);if(d&&typeof d=="object"&&!Array.isArray(d)){const g=a.replace(/[^\w]/g,"_");se(_=>({..._,native:{..._.native||{},[g]:d}}))}return}const pt=F.match(/^copy_to_clipboard:(.*)$/);if(pt){const a=pt[1];try{await navigator.clipboard.writeText(a)}catch{const d=document.createElement("textarea");d.value=a,d.style.position="fixed",d.style.opacity="0",document.body.appendChild(d),d.select(),document.execCommand("copy"),d.remove()}$e("API key copied","success");return}const At=F.match(/^auth:(login|register|forgot|reset|logout)$/);if(At){if(At[1]==="logout"){if(!ft)return;localStorage.removeItem("token"),localStorage.removeItem("backflow_refresh_token"),localStorage.removeItem("backflow_refresh_user_id"),Ke.current=!1,cn.current=null,Ct(!1),Rt(!1),lt(null),G(!1),qr("/");return}if(ft)return;hn(null),ee(At[1]),Rt(!0);return}if(F==="accept_startup_modal"){const a=le.startupModal;a&&localStorage.setItem(`backflow_startup_modal_${a}`,"1"),Fi();const d=nt.find(g=>g.route==="/");d&&(te(g=>[...g,Ot]),Dn(d.id));return}if(F==="decline_startup_modal"){Fi();const a=nt.find(d=>d.route==="/");a&&(te(d=>[...d,Ot]),Dn(a.id));return}if(F==="toggle_select"){se(a=>({...a,_selectMode:!a._selectMode,...a._selectMode?{_selIds:[]}:{}}));return}if(F.startsWith("go_to_step:"))qr(F.replace("go_to_step:","")),Zn($,!0);else if(F.startsWith("navigate:"))qr(F.replace("navigate:","")),Zn($,!0);else if(vu(F)&&t){const a=nu(F),d=await Wf(t,a,he);d!=null&&d.data?se(g=>({...g,...d.data})):d&&typeof d=="object"&&!Array.isArray(d)&&se(g=>({...g,...d})),d!=null&&d.url&&String(d.url).startsWith("http")&&window.open(String(d.url),"_blank","noopener,noreferrer"),Zn($,!0)}else if(F.startsWith("show_modal:")){const a=F.replace("show_modal:","");if(Fe[a]){const d=Fe[a];if(xs(d.popover&&(I!=null&&I.anchorElement)?I.anchorElement.getBoundingClientRect():null),ws.current=d.popover&&(I==null?void 0:I.anchorElement)||null,Hr.current&&typeof Hr.current=="object"){const C=Object.keys(Hr.current);se(k=>{const W={...k};for(const et of Ma.current)C.includes(et)||delete W[et];return{...W,...Hr.current}}),Ma.current=C}const g=d.clearFormKeys;Array.isArray(g)&&g.length>0&&se(C=>{const k={...C};for(const W of g)delete k[W];return k});const _=d.defaults;_&&typeof _=="object"&&se(C=>{const k={...C};for(const[W,et]of Object.entries(_))k[W]===void 0&&(k[W]=et);return k}),d.preload&&await qi(String(d.preload)),(Ae==null?void 0:Ae.id)===a||(_n==null?void 0:_n.id)===a||(tr(null),un({id:a,definition:d}))}else{const d=a.split("|");un({id:"__legacy",definition:{title:d[0]||"Notice",components:d[1]?[{type:"text",text:d[1],color:"rgba(255,255,255,0.7)",fontSize:14}]:[],actions:[{label:"OK",variant:"primary",dismiss:!0}]}})}Zn($,!0)}else F.startsWith("execute_workflow:")?(await qi(F.replace("execute_workflow:",""),I),Zn($,!0)):F.startsWith("fetch:")&&(await qi(F.replace("fetch:",""),I),o==null||o(F.replace("fetch:","")),Zn($,!0))}catch(F){if(Zg("[handleButtonClick] caught error:",F,"callbacks:",$),(F==null?void 0:F.status)===401){await Mo({status:401},!0);return}if(F instanceof $o){if(xc(F,$==null?void 0:$.onError))return;$e(F.errors.length>1?F.errors:F.errors[0],"error")}else(B=$==null?void 0:$.onError)!=null&&B.message?$e($.onError.message,"error"):$e(F instanceof Error?F.message:"An error occurred","error")}},$a=M=>{const $=M&&typeof M=="object"&&"_seconds"in M?new Date(M._seconds*1e3):new Date(M);if(isNaN($.getTime()))return String(M??"");const I=Math.floor((Date.now()-$.getTime())/6e4);if(I<1)return"just now";if(I<60)return`${I}m ago`;const Z=Math.floor(I/60);if(Z<24)return`${Z}h ago`;const B=Math.floor(Z/24);return B<7?`${B}d ago`:$.toLocaleDateString()},Gi=(M,$)=>{if($==="timeago")return $a(M);const I=M&&typeof M=="object"&&"_seconds"in M?new Date(M._seconds*1e3):new Date(M);if(!isNaN(I.getTime())){if($==="date")return I.toLocaleDateString();if($==="time")return I.toLocaleTimeString();if($==="datetime")return I.toLocaleString()}return String(M??"")},sn=v.useRef({}),Gr=M=>{const $=M.split(".").filter(Boolean);if($.length===0)return;let I=sn.current[$[0]]??he[$[0]];for(let Z=1;Z<$.length;Z++){if(I==null)return;const B=$[Z];if(Array.isArray(I))if(B==="first")I=I[0];else if(B==="last")I=I[I.length-1];else if(B==="length")I=I.length;else if(/^\d+$/.test(B))I=I[Number(B)];else if(B==="index")I=I[0];else return;else if(I&&typeof I=="object"&&Array.isArray(I.items))B==="response"?I=I.response:B==="first"?I=I.items[0]:B==="last"?I=I.items[I.items.length-1]:B==="length"?I=I.items.length:/^\d+$/.test(B)?I=I.items[Number(B)]:B==="index"?I=I.items[0]:I=I[B];else if(typeof I=="object")I=I[B];else return}return I},wc=v.useRef({}),[$h,Ia]=v.useState({}),Sm=v.useCallback(M=>(wc.current[M]||(wc.current[M]=import(M).catch(()=>fetch(M).then($=>$.text()).then($=>{const I={};return new Function("module","exports",$)(I,I),I.exports||I}))),wc.current[M]),[]),_c=(M,$,I,Z)=>{if(!M)return"";if(M.startsWith("sdk:")){const Q=I||"",tt=$h[Q];if(Q&&tt!==void 0)return tt;const X=M.slice(4);return t&&Wf(t,X,{...he,$data:sn.current}).then(st=>{tn.current||(Z&&(sn.current[Z]=st),Ia(gt=>({...gt,[Q]:String(st??"")})))}).catch(()=>{}),""}const B=M.match(/^([A-Za-z_]\w*)\s*\(\s*(.*?)\s*\)$/s);if(B){const Q=B[1],tt=_c(B[2]);if($){const X=$h[I||""];return I&&X!==void 0?X:(Sm($).then(st=>{var vt,pt;const gt=st&&(st[Q]||((vt=st.default)==null?void 0:vt[Q])||((pt=st.exports)==null?void 0:pt[Q]))||(typeof st=="function"?st:void 0);typeof gt=="function"&&I&&Promise.resolve(gt(tt,{data:sn.current})).then(At=>{tn.current||(Z&&(sn.current[Z]=At),Ia(a=>({...a,[I]:String(At??"")})))})}).catch(()=>{}),"")}return Q==="timeago"?$a(tt):Q==="date"?Gi(tt,"date"):Q==="time"?Gi(tt,"time"):Q==="datetime"?Gi(tt,"datetime"):Q==="upper"?String(tt).toUpperCase():Q==="lower"?String(tt).toLowerCase():String(tt??"")}if(M.startsWith("{{")&&M.endsWith("}}")){const tt=M.slice(2,-2).trim().split("|").map(vt=>vt.trim()),X=tt[0],st=tt[1],gt=X.startsWith("{")&&X.endsWith("}")?Gr(X.slice(1,-1)):X.startsWith("$")?Gr(X.slice(1)):he[X];return st?Gi(gt,st):String(gt??"")}if(M.startsWith("{")&&M.endsWith("}"))return String(Gr(M.slice(1,-1))??"");const F=M.trim();return/^[A-Za-z_][\w.-]*$/.test(F)?String(Gr(F)??""):String(M??"")},Cs=M=>M?M.replace(/\{\{\s*\[([\w/.-]+)\](?:\.([\w.]+(?:\|\w+)?))?\s*(?:\|\|\s*(.+?))?\}\}/g,($,I,Z,B)=>{let F,Q=Z;if(Z!=null&&Z.includes("|")){const X=Z.split("|");Q=X[0],F=X[1]}const tt=Gr(Q?`${I}.${Q}`:I);if(tt!=null){const X=F?Gi(tt,F):tt;return Array.isArray(X)||typeof X=="object"?JSON.stringify(X):String(X)}return B!==void 0?B.replace(/^["']|["']$/g,""):""}).replace(/\{\{(\w+(?:\.\w+)*)\s*(?:\|(date|time|datetime|timeago)\s*)?(?:\|\|\s*(.+?))?\}\}/g,($,I,Z,B)=>{const F=I.split(".");let Q=he;for(const tt of F)Q=Q==null?void 0:Q[tt];if(Q!==void 0)return Z?Gi(Q,Z):String(Q);if(Hr.current){let tt=Hr.current;for(const X of F)tt=tt==null?void 0:tt[X];if(tt!==void 0)return Z?Gi(tt,Z):String(tt)}if(F[0]==="config"){let tt=e==null?void 0:e.config;for(const X of F.slice(1))tt=tt==null?void 0:tt[X];if(tt!==void 0)return String(tt)}return B!==void 0?B.replace(/^["']|["']$/g,""):""}):"",hi=(M,$)=>{if(!M)return!0;if(typeof M=="object")try{const F=tt=>{const X=Date.parse(String(tt));return Number.isNaN(X)?Number(tt):X},Q={...he,...$,now:()=>Date.now(),date:F,isAfter:(tt,X)=>F(tt)>F(X),isBefore:(tt,X)=>F(tt)<F(X),includes:(tt,X)=>Array.isArray(tt)?tt.includes(X):String(tt??"").includes(String(X??"")),length:tt=>String(tt??"").length,lower:tt=>String(tt??"").toLowerCase(),upper:tt=>String(tt??"").toUpperCase(),round:Math.round,abs:Math.abs};return!!aht.evaluate(M.expression,Q)}catch{return!1}const I=F=>{var tt;if(F==="auth"){const X=(tt=e==null?void 0:e.auth)==null?void 0:tt.signedIn;return X===void 0?ft:X}if(F.startsWith("[")&&F.includes("]")){const X=F.indexOf("]"),st=sn.current[F.slice(1,X)],gt=F.slice(X+1).replace(/^\./,"");let vt;const pt=gt.split(".").filter(Boolean);pt[0]==="response"||pt[0]==="items"?vt=st:vt=(st==null?void 0:st.items)??st;for(const At of pt){if(vt==null)return;Array.isArray(vt)&&At==="length"?vt=vt.length:vt=vt==null?void 0:vt[At]}return vt}let Q=$;for(const X of F.split("."))Q=Q==null?void 0:Q[X];return Q},Z=M.trim();if(Z.includes("||"))return Z.split("||").some(F=>hi(F,$));if(Z.includes("&&"))return Z.split("&&").every(F=>hi(F,$));if(Z.startsWith("!"))return!I(Z.slice(1).trim());const B=Z.match(/^(\[[^\]]+\](?:\.\w+)*|\w+(?:\.\w+)*)\s*(==|!=|>|<|>=|<=)\s*(.+)$/);if(B){const F=I(B[1]),Q=B[3].trim().replace(/^["']|["']$/g,"");switch(B[2]){case"==":return String(F)===Q;case"!=":return String(F)!==Q;case">":return Number(F)>Number(Q);case"<":return Number(F)<Number(Q);case">=":return Number(F)>=Number(Q);case"<=":return Number(F)<=Number(Q)}}return!!I(Z)},fi=(M,$)=>hi(M,$||he),Pm=(M,$,I)=>{if(!f||h!==$&&!(u&&I&&u===I))return M;const B={...M};return f.size!==void 0&&(B.transform=`scale(${f.size/100})`,B.transformOrigin="center center"),f.spacing!==void 0&&(B.margin=`${f.spacing}px`),f.alignment&&(B.textAlign=f.alignment,f.alignment==="left"?(B.marginLeft="0",B.marginRight="auto"):f.alignment==="right"&&(B.marginLeft="auto",B.marginRight="0")),f.color&&(B.color=f.color),f.gridCols!==void 0&&(B.gridTemplateColumns=`repeat(${f.gridCols}, minmax(0, 1fr))`),f.gridGap!==void 0&&(B.gap=`${f.gridGap}px`),f.buttonBackground&&(B.background=f.buttonBackground),f.buttonTextColor&&(B.color=f.buttonTextColor),f.buttonBorderRadius!==void 0&&(B.borderRadius=`${f.buttonBorderRadius}px`),f.linkColor&&(B.color=f.linkColor),f.linkTextDecoration&&(B.textDecoration=f.linkTextDecoration),f.flexDirection&&(B.flexDirection=f.flexDirection),f.flexGap!==void 0&&(B.gap=`${f.flexGap}px`),B},Os=(M,$)=>{const I={...M};return $.scale!==void 0&&$.scale!==100&&(I.transform=`scale(${$.scale/100})`,I.transformOrigin="center center"),$.spacing!==void 0&&$.spacing!==0&&(I.margin=`${$.spacing}px`),$.alignment&&$.alignment!=="center"&&(I.textAlign=$.alignment,$.alignment==="left"?(I.marginLeft="0",I.marginRight="auto"):$.alignment==="right"&&(I.marginLeft="auto",I.marginRight="0")),$.color&&(I.color=$.color),$.background&&(I.backgroundColor=$.background),$.borderColor&&(I.borderColor=$.borderColor),I},rr=(M,$,I)=>{const Z=I==null?void 0:I.componentClass,F=h===M||u&&Z&&u===Z,Q=I?Os($,I):$,tt=Pm(Q,M,Z),X=(I==null?void 0:I.className)||"";/\bfont-serif\b/.test(X)&&(tt.fontFamily=le.typography.headingFontFamily),/\bfont-sans\b/.test(X)&&(tt.fontFamily=le.typography.fontFamily),I!=null&&I.fieldSpan&&I.fieldSpan>1&&(tt.gridColumn=`span ${I.fieldSpan} / span ${I.fieldSpan}`),I!=null&&I.rawStyle&&Object.assign(tt,I.rawStyle);const st=Et==="css-driven"?{"data-bf-r":`${$n}-${M}`}:{};if(F){const vt=tt.boxShadow?`${tt.boxShadow}, `:"";return{"data-component-key":M,...st,style:{...tt,boxShadow:`${vt}0 0 0 3px ${le.colors.primary}`}}}return Object.keys(tt).length>0?{"data-component-key":M,...st,style:tt}:{"data-component-key":M,...st}},Ih=(M,$)=>{var Q;if(!M)return{};const I=by(M),Z=M.split(/\s+/).filter(tt=>!/^(sm|md|lg|xl|2xl):/.test(tt)).join(" "),B=yt(Z||"flex");if(!vy(I))return B;if(Et==="css-driven"){const tt={flexDirection:"fd",gap:"gap",width:"w",minHeight:"min-h",alignItems:"items",justifyContent:"justify",display:"display",gridTemplateColumns:"grid-template",fontSize:"text",borderRadius:"radius",padding:"p",paddingLeft:"px",paddingRight:"px",paddingTop:"py",paddingBottom:"py",margin:"m",marginTop:"mt",marginRight:"mr",marginBottom:"mb",marginLeft:"ml"},X=(st,gt)=>`var(--bf-${tt[st]||st}-${$}, ${B[st]||gt})`;if(I.flexDirection.size>0&&(B.flexDirection=X("flexDirection","column")),I.gap.size>0&&(B.gap=X("gap","0px")),I.width.size>0&&(B.width=X("width","auto")),I.minHeight.size>0&&(B.minHeight=X("minHeight","0px")),I.alignItems.size>0&&(B.alignItems=X("alignItems","stretch")),I.justifyContent.size>0&&(B.justifyContent=X("justifyContent","flex-start")),I.display.size>0&&(B.display=X("display","flex")),I.gridCols.size>0){const st=B.gridTemplateColumns||"1",gt=typeof st=="string"?(Q=st.match(/^repeat\((\d+)/))==null?void 0:Q[1]:st;B.gridTemplateColumns=`repeat(var(--bf-cols-${$}, ${gt||"1"}), minmax(0, 1fr))`}return I.gridTemplateColumns.size>0&&(B.gridTemplateColumns=X("gridTemplateColumns",String(B.gridTemplateColumns||"none"))),I.textSize.size>0&&(B.fontSize=X("fontSize","1rem")),I.borderRadius.size>0&&(B.borderRadius=X("borderRadius","0px")),I.padding.p.size>0&&(B.padding=X("padding","0px")),I.padding.px.size>0&&(B.paddingLeft=X("paddingLeft","0px"),B.paddingRight=X("paddingRight","0px")),I.padding.py.size>0&&(B.paddingTop=X("paddingTop","0px"),B.paddingBottom=X("paddingBottom","0px")),I.margin.all.size>0&&(B.margin=X("margin","0px")),I.margin.t.size>0&&(B.marginTop=X("marginTop","0px")),I.margin.r.size>0&&(B.marginRight=X("marginRight","0px")),I.margin.b.size>0&&(B.marginBottom=X("marginBottom","0px")),I.margin.l.size>0&&(B.marginLeft=X("marginLeft","0px")),I.margin.x.size>0&&(B.marginLeft=X("marginLeft","0px"),B.marginRight=X("marginRight","0px")),I.margin.y.size>0&&(B.marginTop=X("marginTop","0px"),B.marginBottom=X("marginBottom","0px")),B}const F=ie;if(I.flexDirection.size>0&&(B.flexDirection=zt(I.flexDirection,F,"column")),I.gap.size>0&&(B.gap=zt(I.gap,F,"0px")),I.width.size>0&&(B.width=zt(I.width,F,"auto")),I.minHeight.size>0&&(B.minHeight=zt(I.minHeight,F,"0px")),I.alignItems.size>0&&(B.alignItems=zt(I.alignItems,F,"stretch")),I.justifyContent.size>0&&(B.justifyContent=zt(I.justifyContent,F,"flex-start")),I.display.size>0&&(B.display=zt(I.display,F,"flex")),I.gridCols.size>0){const tt=zt(I.gridCols,F,1);B.gridTemplateColumns=`repeat(${tt}, minmax(0, 1fr))`}return I.gridTemplateColumns.size>0&&(B.gridTemplateColumns=zt(I.gridTemplateColumns,F,String(B.gridTemplateColumns||"none"))),I.textSize.size>0&&(B.fontSize=zt(I.textSize,F,"1rem")),I.borderRadius.size>0&&(B.borderRadius=zt(I.borderRadius,F,"0px")),I.padding.p.size>0&&(B.padding=zt(I.padding.p,F,"0px")),I.padding.px.size>0&&(B.paddingLeft=zt(I.padding.px,F,"0px"),B.paddingRight=zt(I.padding.px,F,"0px")),I.padding.py.size>0&&(B.paddingTop=zt(I.padding.py,F,"0px"),B.paddingBottom=zt(I.padding.py,F,"0px")),I.margin.all.size>0&&(B.margin=zt(I.margin.all,F,"0px")),I.margin.t.size>0&&(B.marginTop=zt(I.margin.t,F,"0px")),I.margin.r.size>0&&(B.marginRight=zt(I.margin.r,F,"0px")),I.margin.b.size>0&&(B.marginBottom=zt(I.margin.b,F,"0px")),I.margin.l.size>0&&(B.marginLeft=zt(I.margin.l,F,"0px")),I.margin.x.size>0&&(B.marginLeft=zt(I.margin.x,F,"0px"),B.marginRight=zt(I.margin.x,F,"0px")),I.margin.y.size>0&&(B.marginTop=zt(I.margin.y,F,"0px"),B.marginBottom=zt(I.margin.y,F,"0px")),B},Sc=v.useRef(new Map),Am=v.useCallback(async M=>{const $=Sc.current.get(M);if($)return $;const I=r||localStorage.getItem("token")||"",Z=t==null?void 0:t.endpoint,B=N||(typeof Z=="string"?Z.replace(/\/+$/,""):"")||"/api",F=`?collection=${encodeURIComponent(M)}`;for(const Q of[`${B}/tenant/schema${F}`,`${B}/admin/schema${F}`])try{const tt=await fetch(Q,{headers:{Authorization:`Bearer ${I}`}});if(!tt.ok)continue;const X=await tt.json(),gt=(Array.isArray(X)?X:Array.isArray(X==null?void 0:X.data)?X.data:[]).find(vt=>vt.collection===M)||null;if(!gt)continue;return Sc.current.set(M,gt),gt}catch{}return null},[r,N,t]),In={cfg:le,sdk:t,apiUrl:N,renderMode:Et,scopeId:$n,widgets:[...Array.isArray(e==null?void 0:e.widgets)?e.widgets:[],...Object.values(Mi).flatMap(M=>M.widgets||[])],widgetStack:[],parseClassName:yt,containerWidth:ie,interactionDisabled:m,previewMode:j,isAuthenticated:ft,styleOverrides:f,selectedComponentKey:h,selectedComponentClass:u,sceneData:he,setSceneData:se,setColorMode:M=>As(M),portalTarget:Ce.current,imageErrors:$t,setImageErrors:To,handleButtonClick:ka,interpolateText:Cs,evaluateExpression:_c,evaluateCondition:fi,showToast:$e,setActiveModal:un,dismissModal:Fi,setOverlayModal:tr,dismissOverlayModal:Co,fetchListData:kn,fetchEntitySchema:Am,goBack:Po,currentSceneId:Ot,isMobileView:ai,navigateToScene:qr,mobileMenuOpen:vs,setMobileMenuOpen:bs,renderComponent:(M,$,I)=>zf(In,M,$,I),renderIcon:(M,$,I)=>(n==null?void 0:n(M,$,I))??wb(M,$,I),getCommonProps:rr,imageReplacements:x,listData:$i,rowContextRef:Hr,uploadFile:Es,runBulkSelectAction:Oh,selectDynamicOptions:Ii,setSelectDynamicOptions:Ri,loading:Ar,buttonLoading:Ni,withLoading:Hi,paginationState:Cn,parseClassNameResponsive:Ih};O&&(In.renderPhaserGame=(M,$)=>O(In,M,$));let gn=[];const Rh=v.useMemo(()=>{const M={};for(const[$,I]of Object.entries(he))$.startsWith("_")||(M[$]=I);return JSON.stringify(M)},[he]),Io=v.useRef({}),Ra=v.useRef(""),Lh=v.useRef(""),ir=v.useRef(""),di=v.useRef({}),Nh=v.useRef({}),Er=v.useRef(Cn);Er.current=Cn;const jh=v.useRef(Ar);jh.current=Ar;const pi=v.useRef({}),Pc=v.useRef(new Set),Cr=v.useRef(null);v.useEffect(()=>{if(!pe||!ft){Gn.current.forEach($=>$()),Gn.current.clear(),zi.current.clear();return}const M=$=>{var Z;const I=$.getAttribute("data-bf-scroll-load");!I||Pc.current.has(I)||(Pc.current.add(I),(Z=Cr.current)==null||Z.observe($))};Cr.current||(Cr.current=new IntersectionObserver($=>{for(const I of $){if(!I.isIntersecting)continue;const Z=I.target.getAttribute("data-bf-scroll-load");if(!Z||pi.current[Z])continue;const B=Er.current[Z],F=ci.current[Z];if(!F||!(B!=null&&B.hasMore)||jh.current[Z])continue;pi.current[Z]=!0;const Q=di.current[Z]||1;di.current[Z]=Q+1;const tt=Nh.current[Z];kn(F,Z,Q,B.limit,tt==null?void 0:tt.field,tt==null?void 0:tt.direction,void 0,!0).finally(()=>{var X;if(pi.current[Z]=!1,I.target.isConnected){const st=I.target.getBoundingClientRect();st.bottom>-160&&st.top<(window.innerHeight||800)+160&&((X=Cr.current)==null||X.observe(I.target))}})}},{rootMargin:"160px 0px"})),document.querySelectorAll("[data-bf-scroll-load]").forEach(M)},[Ot,pe,kn,$i,Ar,Cn]),v.useEffect(()=>()=>{var M;(M=Cr.current)==null||M.disconnect(),Cr.current=null,Pc.current=new Set},[Ot]),v.useEffect(()=>{if(!pe)return;const M=Q=>typeof Q=="string"?Q.replace(/\{\{\s*\[([\w/.-]+)\](?:\.([\w.]+))?\s*(?:\|\|\s*(.+?))?\}\}/g,(tt,X,st,gt)=>{const vt=Gr(st?`${X}.${st}`:X);return vt!=null?String(vt):gt!==void 0?gt.replace(/^["']|["']$/g,""):""}).replace(/\{\{([\w.]+)\}\}/g,(tt,X)=>{const st=X.split(".").reduce((gt,vt)=>gt==null?void 0:gt[vt],he);return st!=null?String(st):""}):"";Ra.current!==Ot&&(Ra.current=Ot);let $=new Set;const I=(Q,tt="")=>{Array.isArray(Q)&&Q.forEach((X,st)=>{var At;const gt=`${tt}-${st}`;if((X.type==="list"||X.type==="table")&&X.dataSource){$.add(gt),X.key&&$.add(X.key),Nh.current[gt]=X.sort||{};const a=M(X.dataSource),d=Io.current[gt]!==a;d&&(Io.current[gt]=a,di.current[gt]=1,kn(a,gt,0,X.pageSize||10,void 0,void 0,X.key));const g=X.realtime,_=g?M(g.channel||""):"",C=g?M(g.url||""):"",k=g?M(g.event||""):"",W=g?`${C}|${_}|${k}`:"",et=zi.current.get(gt)!==W;if(g&&(d||et)){zi.current.set(gt,W);const ot=Gn.current.get(gt);ot&&ot();const dt=X.pageSize||10;let Pt;const kt=oe=>{if(!g.bind)return;let St=oe;try{St=typeof oe=="string"?JSON.parse(oe):oe}catch{}g.bindField&&(!St||St[g.bindField]===void 0)||St&&typeof St=="object"&&se(jt=>({...jt,[g.bind]:St}))},Yt=oe=>{if(!g.filter)return!0;let St=oe;if(typeof St=="string")try{St=JSON.parse(St)}catch{return!1}return!St||typeof St!="object"?!1:Object.entries(g.filter).every(([jt,Kt])=>{const Ne=typeof Kt=="string"?Cs(Kt):Kt;return Ne===""||St[jt]===Ne})},fn=(oe,St)=>{if(!g.onEvent||!Array.isArray(St))return;let jt=oe;if(typeof jt=="string")try{jt=JSON.parse(jt)}catch{return}const Kt=jt==null?void 0:jt.id,Ne=St.find(Ge=>(Ge==null?void 0:Ge.id)===Kt);if(Ne&&!(g.onEvent.when&&!hi(g.onEvent.when,Ne))){if(g.onEvent.once===!0){const Ge=[gt,g.onEvent.action,g.onEvent.when||"",(Ne==null?void 0:Ne.id)||Kt||""].join(":");if(ys.current.has(Ge))return;ys.current.add(Ge)}Hr.current=Ne,Ma.current=Object.keys(Ne),se(Ge=>({...Ge,...Ne})),ka(g.onEvent.action,{}).catch(()=>{})}};switch(g.mode){case"poll":{const oe=g.interval||5e3,St=window.setInterval(()=>{g.while&&!hi(g.while,ii.current)||kn(a,gt,0,dt)},oe);Pt=()=>clearInterval(St);break}case"sse":{if(!C&&!_){Pt=()=>{};break}const oe=r||localStorage.getItem("token")||"",St=C||`/events?channel=${_}`,jt=oe&&!St.includes("token=")?`${St}${St.includes("?")?"&":"?"}token=${encodeURIComponent(oe)}`:St,Kt=new EventSource(jt),Ne=Ge=>{Yt(Ge.data)&&(kt(Ge.data),kn(a,gt,0,dt))};k?Kt.addEventListener(k,Ne):Kt.onmessage=Ne,Kt.onerror=()=>Kt.close(),Pt=()=>Kt.close();break}case"ws":{const oe=_||(w?`tenant:${w}:entities`:"");if(!C&&!oe){Pt=()=>{};break}let St=null;const jt=()=>{var Ne;let Kt;if(oe&&((Ne=t==null?void 0:t.client)!=null&&Ne.createWebSocket))Kt=t.client.createWebSocket(oe);else{const Ge=C||`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws?channel=${oe}`;Kt=new WebSocket(Ge)}Kt.onmessage=Ge=>{Yt(Ge.data)&&(kt(Ge.data),kn(a,gt,0,dt).then(Ji=>{const zn=Array.isArray(Ji)?Ji:$i[gt];g.onEvent&&fn(Ge.data,zn);const Ls=he==null?void 0:he.id;if(Ls&&Array.isArray(zn)&&Ra.current===Ot){const sr=zn.find(be=>(be==null?void 0:be.id)===Ls);sr&&se(be=>({...be,...sr}))}}))},Kt.onclose=()=>setTimeout(jt,3e3),St=Kt};jt(),Pt=()=>St==null?void 0:St.close();break}default:Pt=()=>{}}Gn.current.set(gt,Pt)}}if(X.type==="select"&&X.dataSource){const a=`${gt}-sel`,d=M(X.dataSource);Io.current[a]!==d&&(Io.current[a]=d,(async()=>{try{const g=X.dataSource,_=M(g),C=await fetch(_,{headers:{Authorization:`Bearer ${r||localStorage.getItem("token")||""}`}});if(!C.ok)return;const k=await C.json(),W=X.dataField||"configs",et=X.optionLabel||"label",ot=X.optionValue||"value",dt=k[W]||k.data||k,Pt=Array.isArray(dt)?dt.map(kt=>({label:kt[et]||kt.name||kt.label,value:kt[ot]||kt.id||kt.name||kt.label})):[];Ri(kt=>({...kt,[gt]:Pt}))}catch{}})())}X.children&&I(X.children,gt);const vt=X.accordionItems||(X.type==="accordion"?X.items:null);Array.isArray(vt)&&vt.forEach((a,d)=>{Array.isArray(a==null?void 0:a.content)&&I(a.content,`${gt}-acc-${d}-content`)}),Array.isArray(X.tabItems)&&X.tabItems.forEach((a,d)=>{const g=Array.isArray(a==null?void 0:a.content)?a.content:Array.isArray(a==null?void 0:a.children)?a.children:null;g&&I(g,`${gt}-tabcontent-${d}`)});const pt=X;if(pt.type==="widget"&&pt.widgetId){const a=(At=e==null?void 0:e.widgets)==null?void 0:At.find(d=>d.id===pt.widgetId);a&&Array.isArray(a.components)&&I(a.components,`${gt}-${pt.widgetId}`)}})},Z=`${Ot}|${Rh}|${ft}`;Lh.current!==Z&&(Lh.current=Z,I(gn),ui.current=$);const B=Ae||_n;if(ir.current!==((B==null?void 0:B.id)||"")){ir.current=(B==null?void 0:B.id)||"";for(const[Q,tt]of Gn.current)Q.startsWith("modal")&&(tt(),Gn.current.delete(Q),delete Io.current[Q])}const F=B?Fe==null?void 0:Fe[B.id]:void 0;$=new Set,F&&Array.isArray(F==null?void 0:F.components)&&I(F.components,"modal"),en.current=new Set([...ui.current,...$]);for(const[Q,tt]of Gn.current)en.current.has(Q)||(tt(),Gn.current.delete(Q),zi.current.delete(Q),delete Io.current[Q])},[Ot,kn,Rh,Ae==null?void 0:Ae.id,_n==null?void 0:_n.id,ft]),v.useEffect(()=>()=>{Gn.current.forEach(M=>M()),Gn.current.clear()},[Ot]);const La=v.useMemo(()=>{if(!pe||Et!=="css-driven")return null;const M=new Map,$=(I,Z)=>{I.forEach((B,F)=>{const Q=`${Z}-${F}`;if(B.className){const tt=by(B.className);if(vy(tt)){const X=J$($n,Q,tt);X&&M.set(Q,X)}}B.children&&$(B.children,Q)})};return $(gn,""),M},[Ot,gn,Et,$n]),Ms=v.useRef(nr);Ms.current=nr;const Ro=le.realtime,Zr=Ro==null?void 0:Ro.mode,Zi=Ro==null?void 0:Ro.url;if(v.useEffect(()=>{if(!ft||Zr!=="sse"||!Zi)return;const M=r||localStorage.getItem("token");if(!M)return;let $=null,I=!1;return(async()=>{try{const Z=N||(t==null?void 0:t.endpoint)||window.location.origin,B=await fetch(`${Z}${Zi}/token`,{headers:{Authorization:`Bearer ${M}`}});if(!B.ok)return;const{token:F}=await B.json();if(!F||I)return;$=new EventSource(`${Z}${Zi}/subscribe?token=${encodeURIComponent(F)}`),$.onmessage=Q=>{try{const tt=JSON.parse(Q.data);tt!=null&&tt.message&&Ms.current(tt,"success")}catch{}},$.onerror=()=>$==null?void 0:$.close()}catch{}})(),()=>{I=!0,$==null||$.close()}},[ft,N,r,Zr,Zi]),!pe)return v.createElement(v.Fragment,null,oht(ct,Qt.length,Po,P));const fe=pe,Yi=fe.backgroundColor,Dh=Yi&&Qg(Yi)!==(le.colorMode==="dark"?"dark":"light")?Qg(Yi)==="dark"?xu.text:wu.text:le.colors.text,or=fe.height!==void 0?typeof fe.height=="number"?`${fe.height}px`:fe.height:void 0,Na=fe.minHeight!==void 0?typeof fe.minHeight=="number"?`${fe.minHeight}px`:fe.minHeight:void 0,Lo=fe.className?{...vT,fontFamily:le.typography.fontFamily,display:"flex",flexDirection:"column",width:"100%",maxWidth:"100%",position:"relative",...or?{height:or}:{},...Na?{minHeight:Na}:{},backgroundColor:Yi||le.colors.background,color:Dh,...yt(fe.className)}:{...vT,fontFamily:le.typography.fontFamily,display:"flex",flexDirection:"column",position:"relative",width:"100%",maxWidth:"100%",...or?{height:or}:{},...Na?{minHeight:Na}:{},backgroundColor:Yi||le.colors.background,color:Dh},Bh=Array.isArray(fe.components)?fe.components:[],Yr=iht($n),ks=(pe==null?void 0:pe.requireAuth)===!0||(fe==null?void 0:fe.requiresAuth)===!0||(Dt==null?void 0:Dt.requiresAuth)===!0||((Xi=Dt==null?void 0:Dt.config)==null?void 0:Xi.requiresAuth)===!0,Ac=(ks||rt)&&!ft?kh():null,Ec=ft&&ks&&J===!1&&!bt?v.createElement("div",{key:"email-banner",style:{position:"relative",display:"flex",alignItems:"center",justifyContent:"center",gap:"8px",padding:"10px 40px",backgroundColor:le.colorMode==="dark"?"#78350f":"#fef3c7",color:le.colorMode==="dark"?"#fef3c7":"#92400e",fontSize:"13px",fontWeight:500,boxShadow:"0 2px 8px rgba(0,0,0,0.15)"}},In.renderIcon("alert-triangle",14),v.createElement("span",null,"Verify your email — check your inbox for the confirmation link."),v.createElement("button",{"aria-label":"Dismiss",onClick:()=>de(!0),style:{position:"absolute",right:"8px",top:"50%",transform:"translateY(-50%)",background:"none",border:"none",cursor:"pointer",color:"inherit",display:"flex",alignItems:"center",padding:"4px"}},In.renderIcon("x",16))):null,gr=e,Ki=Array.isArray(gr==null?void 0:gr.widgets)?gr.widgets:[],$s=new Set,Is=M=>{if(Array.isArray(M))for(const $ of M)$&&$.type==="widget"&&$.widgetId&&$s.add($.widgetId),$&&Array.isArray($.children)&&Is($.children)};Is(Bh);for(const M of Ki)Is(M.components);const zh=Ki.filter(M=>$s.has(M.id)?!1:M.sceneIds==="*"?!0:Array.isArray(M.sceneIds)?M.sceneIds.includes("*")||M.sceneIds.includes(Ot):!1),Em=Pr.map(M=>{var Z,B,F;const $=Mi[M.id],I=M.sourceSceneId?(Z=$==null?void 0:$.steps)==null?void 0:Z.find(Q=>Q.id===M.sourceSceneId):(B=$==null?void 0:$.steps)==null?void 0:B.find(Q=>Q.type==="render_scene");return(F=I==null?void 0:I.config)!=null&&F.components?{...M,components:I.config.components}:null}).filter(Boolean);gn=[...Bh],(Mc=(Oc=gr.layout)==null?void 0:Oc.header)!=null&&Mc.length?gn.splice(0,0,...gr.layout.header):(Mr=(Gh=fe==null?void 0:fe.layout)==null?void 0:Gh.header)!=null&&Mr.length&&gn.splice(0,0,...fe.layout.header);for(const M of zh||[]){const $=M.components||[];if(!$.length)continue;if(M.targetKey){const Z=M.targetKey.split("-").filter(Boolean).map(Number);if(Z.length>0){let B=gn,F=Z[0];for(let tt=0;tt<Z.length-1;tt++){const X=B[Z[tt]];if(!X||!Array.isArray(X.children))break;B=X.children,F=Z[tt+1]}const Q=M.targetPosition||"before";if(Q==="inside"){const tt=B[F];tt&&(Array.isArray(tt.children)||(tt.children=[]),tt.children.unshift(...$))}else Q==="after"?B.splice(F+1,0,...$):B.splice(F,0,...$);continue}}const I=M.index??gn.length;gn.splice(I,0,...$)}for(const M of Em){if(M.targetKey){const $=M.targetKey.split("-").filter(Boolean).map(Number);let I=gn,Z=$[0];for(let F=0;F<$.length-1;F++){const Q=I[$[F]];if(!Q||!Array.isArray(Q.children))break;I=Q.children,Z=$[F+1]}const B=M.targetPosition||"before";if(B==="inside"){const F=I[Z];F&&(Array.isArray(F.children)||(F.children=[]),F.children.unshift(...M.components))}else B==="after"?I.splice(Z+1,0,...M.components):I.splice(Z,0,...M.components);continue}gn.splice(M.index??gn.length,0,...M.components)}($c=(kc=gr.layout)==null?void 0:kc.footer)!=null&&$c.length?gn.push(...gr.layout.footer):(Zh=(jo=fe==null?void 0:fe.layout)==null?void 0:jo.footer)!=null&&Zh.length&&gn.push(...fe.layout.footer);const ja=La&&La.size>0?v.createElement("style",{key:"bf-responsive"},Array.from(La.values()).join(`
|
|
198
198
|
`)):null,Cm=v.createElement("style",{key:"bf-transitions"},`#${$n} * { transition: color 0.15s ease, background-color 0.15s ease, border-color 0.15s ease, opacity 0.15s ease; }
|
|
199
199
|
@keyframes bf-fade-in { from { opacity: 0; } to { opacity: 1; } }
|
|
200
200
|
@keyframes bf-fade-out { from { opacity: 1; } to { opacity: 0; } }
|
|
@@ -216,6 +216,17 @@ ${M.message}`:M.message;$e(I,$);return}if(M.modalId&&Fe[M.modalId]){un({id:M.mod
|
|
|
216
216
|
#${$n} .bf-loader-spinner { animation: bf-spin 0.7s linear infinite; }
|
|
217
217
|
#${$n} .bf-btn-spinner { animation: bf-spin 0.7s linear infinite; }
|
|
218
218
|
@keyframes bf-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
|
|
219
|
+
@keyframes bf-logo-excited {
|
|
220
|
+
0%, 100% { transform: translateX(-50%) translateY(0) rotate(-8deg); }
|
|
221
|
+
8% { transform: translateX(-50%) translateY(-18px) rotate(-8deg); }
|
|
222
|
+
14% { transform: translateX(-50%) translateY(0) rotate(-8deg); }
|
|
223
|
+
22% { transform: translateX(-50%) translateY(-38px) rotate(-8deg); }
|
|
224
|
+
30% { transform: translateX(-50%) translateY(0) rotate(-8deg); }
|
|
225
|
+
48% { transform: translateX(-50%) translateY(0) rotate(6deg); }
|
|
226
|
+
64% { transform: translateX(-50%) translateY(0) rotate(-8deg); }
|
|
227
|
+
74% { transform: translateX(-50%) translateY(-30px) rotate(-8deg); }
|
|
228
|
+
84% { transform: translateX(-50%) translateY(0) rotate(-8deg); }
|
|
229
|
+
}
|
|
219
230
|
@keyframes bf-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }`),Fh=gn.map((M,$)=>zf(In,M,$)),Wh=Object.values(Ar).some(Boolean)||Object.values(Ni).some(Boolean)?fe!=null&&fe.loadingComponent?v.createElement("div",{key:"scene-loader",style:{position:"absolute",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.15)",backdropFilter:"blur(1px)"}},zf(In,fe.loadingComponent,0,`${$n}-sceneloader`)):v.createElement("div",{key:"scene-loader",style:{position:"absolute",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.08)"}},v.createElement("div",{className:"bf-loader-spinner",style:{width:"32px",height:"32px",border:"3px solid rgba(128,128,128,0.15)",borderTopColor:"currentColor",borderRadius:"50%"}})):null,Om=[Ac,E==="modal"&&sht(ct),bT(Ae,le,In,fe==null?void 0:fe.backgroundColor,void 0,void 0,Ea),_n&&_n.id!==(Ae==null?void 0:Ae.id)?bT(_n,le,In,fe==null?void 0:fe.backgroundColor,In.dismissOverlayModal,10001):null,Wh,LI(e,{sceneId:Ot,sceneData:he,registry:sn.current,isAuthenticated:ft,colorMode:le.colorMode,runtimeIssues:Eo,enabled:H,navigateToScene:qr,openModal:M=>{const $=Fe[M];$&&un({id:M,definition:$})},submitReport:async M=>{const $=await fetch(new URL("/tenant/diagnostics/ui",er()).toString(),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r||localStorage.getItem("token")||""}`},body:JSON.stringify(M)}),I=await $.json().catch(()=>null);return{submitted:$.ok,status:$.status,body:I,report:M}}})].filter(Boolean),Or=le.effects.scrollBehavior||"smooth",Da=v.createElement("style",{key:"bf-scroll-behavior"},`
|
|
220
231
|
html {
|
|
221
232
|
scroll-behavior: ${Or};
|
package/dist/index.js
CHANGED
|
@@ -52524,7 +52524,8 @@ ${M.message}` : M.message;
|
|
|
52524
52524
|
objectFit: "contain",
|
|
52525
52525
|
transform: "translateX(-50%) rotate(-8deg)",
|
|
52526
52526
|
opacity: 0.92,
|
|
52527
|
-
filter: "brightness(0) invert(1)"
|
|
52527
|
+
filter: "brightness(0) invert(1)",
|
|
52528
|
+
animation: "bf-logo-excited 4s ease-in-out infinite"
|
|
52528
52529
|
}
|
|
52529
52530
|
}) : _.createElement(
|
|
52530
52531
|
"div",
|
|
@@ -53642,6 +53643,17 @@ ${M.message}` : M.message;
|
|
|
53642
53643
|
#${In} .bf-loader-spinner { animation: bf-spin 0.7s linear infinite; }
|
|
53643
53644
|
#${In} .bf-btn-spinner { animation: bf-spin 0.7s linear infinite; }
|
|
53644
53645
|
@keyframes bf-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
|
|
53646
|
+
@keyframes bf-logo-excited {
|
|
53647
|
+
0%, 100% { transform: translateX(-50%) translateY(0) rotate(-8deg); }
|
|
53648
|
+
8% { transform: translateX(-50%) translateY(-18px) rotate(-8deg); }
|
|
53649
|
+
14% { transform: translateX(-50%) translateY(0) rotate(-8deg); }
|
|
53650
|
+
22% { transform: translateX(-50%) translateY(-38px) rotate(-8deg); }
|
|
53651
|
+
30% { transform: translateX(-50%) translateY(0) rotate(-8deg); }
|
|
53652
|
+
48% { transform: translateX(-50%) translateY(0) rotate(6deg); }
|
|
53653
|
+
64% { transform: translateX(-50%) translateY(0) rotate(-8deg); }
|
|
53654
|
+
74% { transform: translateX(-50%) translateY(-30px) rotate(-8deg); }
|
|
53655
|
+
84% { transform: translateX(-50%) translateY(0) rotate(-8deg); }
|
|
53656
|
+
}
|
|
53645
53657
|
@keyframes bf-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }`
|
|
53646
53658
|
), Zh = mn.map((M, $) => Zf(Ln, M, $)), Yh = Object.values(Or).some(Boolean) || Object.values(Fi).some(Boolean) ? he != null && he.loadingComponent ? _.createElement(
|
|
53647
53659
|
"div",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,EACL,WAAW,EAGX,YAAY,EACZ,aAAa,EACd,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAmC,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAM/D,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACpB,MAAM,WAAW,CAAC;AAInB,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,eAAe,EACf,eAAe,EACf,KAAK,EAEL,YAAY,EACZ,cAAc,EACd,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,QAAQ,EACR,iBAAiB,EAEjB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACb,MAAM,SAAS,CAAC;AAYjB,OAAO,EACL,QAAQ,EACR,cAAc,EACd,eAAe,EACf,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,WAAW,EACX,eAAe,EACf,eAAe,EACf,KAAK,EACL,YAAY,EACZ,SAAS,EACT,cAAc,EACd,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,GACb,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,EACL,WAAW,EAGX,YAAY,EACZ,aAAa,EACd,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAmC,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAM/D,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACpB,MAAM,WAAW,CAAC;AAInB,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,eAAe,EACf,eAAe,EACf,KAAK,EAEL,YAAY,EACZ,cAAc,EACd,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,QAAQ,EACR,iBAAiB,EAEjB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACb,MAAM,SAAS,CAAC;AAYjB,OAAO,EACL,QAAQ,EACR,cAAc,EACd,eAAe,EACf,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,WAAW,EACX,eAAe,EACf,eAAe,EACf,KAAK,EACL,YAAY,EACZ,SAAS,EACT,cAAc,EACd,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,GACb,CAAC;AA87KF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,qBAAqB,yDAEnE"}
|