@swarm.ing/pieui 3.0.9 → 3.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{useContext as o,useEffect as m,useRef as c}from"react";import{createContext as mI,useContext as bI}from"react";var g=globalThis,_=(I,U)=>{let Z=Symbol.for(I);if(!(Z in g))g[Z]=U();return g[Z]};var pI=_("@swarm.ing/pieui:context:pieConfig",()=>mI(null)),vI=()=>{let I=bI(pI);if(!I)throw Error("usePieConfig must be used within PieConfigProvider");return I};var y=()=>{let{enableRenderingLog:I}=vI();return I},UI=y;import{createContext as hI}from"react";import{Centrifuge as fT}from"centrifuge";var LT=_("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var gI=_("@swarm.ing/pieui:context:centrifuge",()=>hI(null)),TI=gI;import{io as NT}from"socket.io-client";import{createContext as oI}from"react";var yT=_("@swarm.ing/pieui:socket-cache",()=>new Map);var cI=_("@swarm.ing/pieui:context:socket",()=>oI(null)),zI=cI;import mT from"mitt";import{createContext as lI,useCallback as vT,useContext as hT}from"react";var uI=_("@swarm.ing/pieui:context:mitt",()=>lI(null));var S=uI;function ZI(I){return I.wasRecovering===!0&&I.recovered===!1}function BI(I){return I.recoverable===!1}function HI(I,U,Z){let z=I.getSubscription(U);if(z)return{subscription:z,createdHere:!1};return{subscription:I.newSubscription(U,Z),createdHere:!0}}import{useMemo as dT}from"react";var $I=new Map,qI=(I,U)=>{$I.set(I,U)},OI=(I)=>{$I.delete(I)};import{jsx as rI,jsxs as sI,Fragment as iI}from"react/jsx-runtime";var dI=({card:I,data:U,children:Z,useSocketioSupport:z=!1,useCentrifugeSupport:B=!1,useMittSupport:T=!1,centrifugeChannel:$=void 0,methods:O=void 0,stored:q=void 0,onResync:Q=void 0})=>{let X=UI(),G=c(O);G.current=O;let D=c(Q);D.current=Q;let Y=c(q);Y.current=q;let J=typeof q==="function";if(m(()=>{if(!J)return;let L=U.name;return qI(L,()=>[JSON.stringify(Y.current())]),()=>OI(L)},[J,U.name]),X)console.log("[PieCard] Rendering card:",I),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:B,mitt:T,centrifugeChannel:$}),console.log("[PieCard] Methods:",O?Object.keys(O):"none"),console.log("[PieCard] Has children:",!!Z);let V=o(zI),A=o(TI),R=o(S);if(m(()=>{if(!V||!z||!G.current||!U.name){if(X&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!V,useSocketioSupport:z,hasMethods:!!G.current,hasDataName:!!U?.name});return}let f=Object.keys(G.current??{}).map((H)=>{let P=`pie${H}_${U.name}`;if(X)console.log(`[PieCard] Socket.IO registering event: ${P}`);let w=(N)=>{G.current?.[H]?.(N)};return V.on(P,w),[P,w]});return()=>{f.forEach(([H,P])=>{if(X)console.log(`[PieCard] Socket.IO unregistering event: ${H}`);V.off(H,P)})}},[V,U.name,z]),m(()=>{if(!A||!B||!$||!U.name){if(X&&B)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!A,useCentrifugeSupport:B,hasCentrifugeChannel:!!$,hasMethods:!!G.current,hasDataName:!!U?.name});return}let f=Object.keys(G.current??{}).map((H)=>{let P=`pie${H}_${U.name}_${$}`;if(X)console.log(`[PieCard] Centrifuge subscribing to channel: ${P}`);let{subscription:w,createdHere:N}=HI(A,P,{recoverable:!0,positioned:!0}),e=(k)=>{if(X)console.log(`[PieCard] Centrifuge received data on ${P}:`,k.data);G.current?.[H]?.(k.data)},II=(k)=>{if(BI(k))console.warn(`[PieCard] Centrifuge channel ${P} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(ZI(k)){if(X)console.log(`[PieCard] Centrifuge recovery gap on ${P}; requesting resync`);D.current?.({channel:P,reason:"gap"})}};return w.on("publication",e),w.on("subscribed",II),w.subscribe(),{subscription:w,createdHere:N,onPublication:e,onSubscribed:II}});return()=>{f.forEach(({subscription:H,createdHere:P,onPublication:w,onSubscribed:N})=>{if(X)console.log("[PieCard] Centrifuge unsubscribing from channel");if(H.off("publication",w),H.off("subscribed",N),P)H.unsubscribe(),A.removeSubscription(H)})}},[A,$,U.name,B]),m(()=>{if(!R||!T||!U.name){if(X&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!R,useMittSupport:T,hasMethods:!!G.current,hasDataName:!!U?.name});return}let L=Object.keys(G.current??{}),f={};return L.forEach((H)=>{let P=`pie${H}_${U.name}`,w=(N)=>{if(X)console.log(`[PieCard] Mitt registering event: ${P}`);G.current?.[H]?.(N)};f[P]=w,R.on(P,w)}),()=>{Object.entries(f).forEach(([H,P])=>{if(X)console.log(`[PieCard] Mitt unregistering event: ${H}`);R.off(H,P)})}},[R,U.name,T]),X)console.log("[PieCard] Rendering complete, returning children");if(q!==void 0&&!J)return sI(iI,{children:[rI("input",{type:"hidden",name:U.name,value:JSON.stringify(q)}),Z]});return Z},F=dI;import{lazy as nI}from"react";var x=new Map;function aI(I,U){return U.catch(()=>{if(x.get(I)===U)x.delete(I)}),x.set(I,U),U}function GI(I,U){return nI(()=>{if(x.has(U))return x.get(U);return aI(U,I().then((Z)=>Z))})}var JI=_("@swarm.ing/pieui:component-registry",()=>new Map),tI=(I)=>{if(!I.name)throw Error("Component registration requires a name");if(!I.component&&!I.loader)throw Error(`Component "${I.name}" requires component or loader`);let U={name:I.name,component:I.component,loader:I.loader,metadata:I.metadata,fallback:I.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=GI(U.loader,I.name),U.isLazy=!0;return U};function W(I){let U=tI(I);return JI.set(U.name,U),U.component}var b=(I)=>{return JI.get(I)};import{useContext as QI,memo as GU}from"react";import{createContext as eI}from"react";import{jsx as TU,Fragment as UU}from"react/jsx-runtime";var IU=_("@swarm.ing/pieui:context:fallback",()=>eI(TU(UU,{}))),C=IU;import{createContext as zU}from"react";var ZU=_("@swarm.ing/pieui:context:lazyError",()=>zU(void 0)),p=ZU;import{Component as BU,Suspense as HU}from"react";import{jsx as OU}from"react/jsx-runtime";var $U=2,qU=400;class j extends BU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(I){if(this.props.onError?.(I),this.state.attempt<$U){let U=qU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},U)}}componentDidUpdate(I){if(I.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return OU(HU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as l}from"react/jsx-runtime";function JU({uiConfig:I,setUiAjaxConfiguration:U}){let Z=QI(C),z=QI(p),B=y();if(B)console.log("[UI] Rendering component:",I.card),console.log("[UI] Component data:",I.data),console.log("[UI] Component content:",I.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let T=b(I.card);if(!T?.component){if(B)console.warn(`[UI] Component not found in registry: ${I.card}`),console.log("[UI] Returning fallback component");return Z}if(B)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let $=T.component,O=l($,{data:I.data,content:I.content,setUiAjaxConfiguration:U});if(T.isLazy){if(B)console.log("[UI] Rendering lazy component with Suspense:",T.name);return l(j,{name:T.name,fallback:T.fallback?l(T.fallback,{}):Z,onError:z,children:O})}if(B)console.log("[UI] Rendering component directly:",T.name);return O}var M=GU(JU);import{useContext as XI}from"react";import{createContext as QU}from"react";var XU=_("@swarm.ing/pieui:context:uiRenderer",()=>QU(null)),K=XU;import{jsx as v}from"react/jsx-runtime";function YI({uiConfig:I,setUiAjaxConfiguration:U}){let Z=XI(C),z=XI(p),B=y();if(B)console.log("[UILoading] Rendering fallback for:",I.card),console.log("[UILoading] Component data:",I.data),console.log("[UILoading] Component content:",I.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let T=b(I.card);if(!T?.component){if(B)console.warn(`[UILoading] Component not found in registry: ${I.card}`),console.log("[UILoading] Returning fallback component");return Z}if(B)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(B)console.log("[UILoading] Rendering fallback for:",T.name);let q=T.fallback;return v(q,{})}if(B)console.log("[UILoading] No fallback, rendering full component:",T.name);let $=T.component,O=v(K.Provider,{value:YI,children:v($,{data:I.data,content:I.content,setUiAjaxConfiguration:U})});if(T.isLazy)return v(j,{name:T.name,fallback:Z,onError:z,children:O});return O}var YU=YI;import{useContext as PU}from"react";import{jsx as u}from"react/jsx-runtime";var WU=({data:I,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:B}=I,T=PU(K)??M;return u(F,{card:z,data:I,children:u("div",{style:B,id:z,children:U.map(($,O)=>{return u(T,{uiConfig:$,setUiAjaxConfiguration:Z},`children-${O}`)})})})},PI=WU;var FU=W({name:"SequenceCard",component:PI,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as DU}from"react";import{jsx as WI}from"react/jsx-runtime";var _U=({data:I,content:U,setUiAjaxConfiguration:Z})=>{let{name:z}=I,B=DU(K)??M;return WI(F,{card:z,data:I,children:U.map((T,$)=>{return WI(B,{uiConfig:T,setUiAjaxConfiguration:Z},`children-${$}`)})})},FI=_U;var VU=W({name:"UnionCard",component:FI,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as fU,useState as AU}from"react";import LU from"html-react-parser";import{useCallback as h,useEffect as wU,useRef as d,useState as KU}from"react";function MU(){let I=new AudioContext,U=I.createOscillator(),Z=U.connect(I.createMediaStreamDestination());U.start();let z=Z.stream.getAudioTracks()[0];return z.enabled=!1,z}function i(I=null,U){let[Z,z]=KU(!1),B=d(null),T=d(null),$=d(null),O=h(async(G,D=!0)=>{if(B.current)q();let Y=new RTCPeerConnection;if(Y.onconnectionstatechange=()=>{if(Y.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(Y.connectionState))z(!1)},Y.ontrack=(H)=>{if(I)I.srcObject=H.streams[0]},D){let H=await navigator.mediaDevices.getUserMedia({audio:!0});Y.addTrack(H.getTracks()[0],H)}else{let H=MU();Y.addTrack(H)}let J=Y.createDataChannel("oai-events");T.current=J,$.current=new Promise((H)=>{J.addEventListener("open",()=>{H()})});let V=await Y.createOffer();await Y.setLocalDescription(V);let f=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:V.sdp,headers:{Authorization:`Bearer ${G}`,"Content-Type":"application/sdp"}})).text();await Y.setRemoteDescription({type:"answer",sdp:f}),B.current=Y,await $.current},[I]),q=h(()=>{let G=T.current;if(G)G.close();B.current?.getSenders()?.forEach((D)=>D.track?.stop()),B.current?.close(),z(!1),B.current=null,T.current=null,$.current=null},[I]),Q=h((G)=>{let D=T.current;if(!D){console.error("Data channel is not ready",G);return}let Y=new Date().toLocaleTimeString();if(G.event_id=G.event_id||crypto.randomUUID(),D.send(JSON.stringify(G)),!G.timestamp)G.timestamp=Y;U?.(G)},[U,I]),X=h((G)=>{if(!T.current){console.error("Data channel is not ready");return}let Y=()=>{Q({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:G}]}}),Q({type:"response.create"})};if($.current)$.current.then(Y);else Y()},[U,I]);return wU(()=>{let G=T.current;if(!G)return;let D=(Y)=>{let J=JSON.parse(Y.data);if(!J.timestamp)J.timestamp=new Date().toLocaleTimeString();U?.(J)};return G.addEventListener("message",D),()=>{G.removeEventListener("message",D)}},[U,I]),{isSessionActive:Z,startSession:O,stopSession:q,sendTextMessage:X}}import{jsx as CU}from"react/jsx-runtime";var RU=({data:I})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:z,useMittSupport:B,centrifugeChannel:T}=I,[$,O]=AU(U),{isSessionActive:q,startSession:Q,sendTextMessage:X}=i(null,(J)=>{if(console.log(J.type,J.type==="response.output_text.delta"&&J.delta),J.type==="response.output_text.delta"&&J.delta)O((V)=>V+J.delta)});return fU(()=>{O(U)},[U]),CU(F,{card:"HTMLEmbedCard",data:I,methods:{update:(J)=>{O(J.value)},generateUsingAI:async(J)=>{try{if(!q&&J.token)await Q(J.token,!1);X(J.prompt)}catch(V){console.error("Failed to generate using AI",V)}},initializeAI:async(J)=>{if(!q&&J.token)await Q(J.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:Z,useMittSupport:B,centrifugeChannel:T,children:LU($)})},DI=RU;var NU=W({name:"HTMLEmbedCard",component:DI,metadata:{author:"Swarm.ing"}});import{useEffect as jU,useState as EU}from"react";import{jsx as _I}from"react/jsx-runtime";var kU=({data:I})=>{let{name:U,value:Z,useSocketioSupport:z,useCentrifugeSupport:B,useMittSupport:T,centrifugeChannel:$}=I,[O,q]=EU(Z);return jU(()=>{q(Z)},[Z]),_I(F,{card:"HiddenCard",data:I,useSocketioSupport:z,useCentrifugeSupport:B,useMittSupport:T,centrifugeChannel:$,methods:{update:({value:Q})=>{q(Q)}},children:_I("input",{type:"hidden",id:U,name:U,value:O})})},VI=kU;var yU=W({name:"HiddenCard",component:VI,metadata:{author:"Swarm.ing"}});import{useContext as wI,useEffect as mU}from"react";import{createContext as xU}from"react";var SU=_("@swarm.ing/pieui:context:navigate",()=>xU(void 0)),E=SU;import{jsx as vU,Fragment as pU}from"react/jsx-runtime";var bU=({data:I})=>{let{url:U}=I,Z=wI(E),z=wI(C);return mU(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),vU(pU,{children:z})},KI=bU;var hU=W({name:"AutoRedirectCard",component:KI,metadata:{author:"Swarm.ing"}});import{Bounce as gU,Slide as oU,Zoom as cU,Flip as lU}from"react-toastify";import{toast as uU,ToastContainer as dU}from"react-toastify";import{useContext as iU,useMemo as rU,useRef as sU}from"react";import{jsx as r,Fragment as UT}from"react/jsx-runtime";var nU={bounce:gU,slide:oU,zoom:cU,flip:lU},aU=(I)=>{let U={...I,type:I.alertType,transition:I.transition?nU[I.transition]:void 0,position:I.position??"bottom-right",autoClose:I.autoClose??3000,style:{backgroundColor:"black",...I.sx}};uU(I.message,U)},tU=(I)=>{console.log("Log event",I)},eU=(I)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(I.title,{body:I.message??I.subtitle,icon:I.icon,silent:I.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")U()})},IT=({data:I})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:B}=I,T=iU(E),$=sU(T);$.current=T;let O=rU(()=>({alert:aU,log:tU,push:eU,redirect:(q)=>{if(q.to){let Q=q.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Q))window.location.href=Q;else $.current?.(Q)}else window.location.reload()},reload:(q)=>{if(q.to){let Q=q.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Q))window.location.href=Q;else $.current?.(Q)}else window.location.reload()}}),[]);return r(UT,{children:r(F,{card:"IOEventsCard",data:I,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:B,methods:O,children:r(dU,{})})})},MI=IT;var TT=W({name:"IOEventsCard",component:MI,metadata:{author:"Swarm.ing"}});import{useEffect as fI,useState as zT}from"react";import{jsx as AI}from"react/jsx-runtime";var ZT=({data:I})=>{let{name:U,key:Z,value:z,useSocketioSupport:B,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:O}=I,[q,Q]=zT(z);return fI(()=>{Q(z)},[z]),fI(()=>{if(typeof window>"u")return;sessionStorage.setItem(Z,q)},[Z,q]),AI(F,{card:"SessionStorageCard",data:I,useSocketioSupport:B,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:O,methods:{update:({value:X})=>{Q(X)},remove:()=>{sessionStorage.removeItem(Z),Q("")}},children:AI("input",{type:"hidden",id:U,name:U,value:q})})},LI=ZT;var BT=W({name:"SessionStorageCard",component:LI,metadata:{author:"PieData"}});import{useEffect as RI,useState as HT}from"react";import{jsx as CI}from"react/jsx-runtime";var $T=({data:I})=>{let{name:U,key:Z,value:z,useSocketioSupport:B,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:O}=I,[q,Q]=HT(z);return RI(()=>{Q(z)},[z]),RI(()=>{if(typeof window>"u")return;localStorage.setItem(Z,q)},[Z,q]),CI(F,{card:"DeviceStorageCard",data:I,useSocketioSupport:B,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:O,methods:{update:({value:X})=>{Q(X)},remove:()=>{localStorage.removeItem(Z),Q("")}},children:CI("input",{type:"hidden",id:U,name:U,value:q})})},NI=$T;var qT=W({name:"DeviceStorageCard",component:NI,metadata:{author:"PieData"}});import{useCallback as s,useContext as n,useEffect as OT,useRef as GT,useState as jI}from"react";import{jsx as EI}from"react/jsx-runtime";var JT=({data:I,content:U})=>{let{useLoader:Z,noReturn:z,returnType:B,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:O,centrifugeChannel:q}=I,Q=n(C),X=n(K)??M,[G,D]=jI(!1),[Y,J]=jI(null),V=GT(U),A=n(S),R=s((H)=>{if(H===null)D(!0);else if(D(!1),!z)V.current=H;if(!z)J(H)},[z]),L=s((H)=>{V.current=H.content,J(H.content)},[]),f=s((H)=>{if(H===null)D(!0);else if(D(!1),!z)for(let P of H)A?.emit(P.name,P.data)},[z,A]);if(OT(()=>{J(U),D(!1)},[U]),!Y&&Z)return Q;return EI(F,{card:"AjaxGroupCard",data:I,methods:{changeContent:L},useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:O,centrifugeChannel:q,children:EI(X,{uiConfig:Y??V.current,setUiAjaxConfiguration:B==="events"?f:R})})},kI=JT;var QT=W({name:"AjaxGroupCard",component:kI,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as yI}from"react";import{jsx as a}from"react/jsx-runtime";var XT=({data:I,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,url:B,sx:T}=I,$=yI(E),O=yI(K)??M;return a(F,{card:z,data:I,children:a("div",{style:T,id:z,onClick:(Q)=>{if(B)if(Q.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(B))window.location.href=B;else $?.(B)},children:a(O,{setUiAjaxConfiguration:Z,uiConfig:U})})})},xI=XT;var YT=W({name:"BoxCard",component:xI,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as PT}from"react";import{jsx as t}from"react/jsx-runtime";var WT=({data:I,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:B}=I,T=PT(K)??M;return t(F,{card:z,data:I,children:t("div",{style:B,id:z,children:U.map(($,O)=>{return t(T,{uiConfig:$,setUiAjaxConfiguration:Z},`children-${O}`)})})})},SI=WT;var FT=W({name:"OneOfCard",component:SI,metadata:{author:"Swarm.ing",description:"Different variants"}});export{VU as UnionCard,YU as UILoading,M as UI,BT as SessionStorageCard,FU as SequenceCard,F as PieCard,FT as OneOfCard,TT as IOEventsCard,yU as HiddenCard,NU as HTMLEmbedCard,qT as DeviceStorageCard,YT as BoxCard,hU as AutoRedirectCard,QT as AjaxGroupCard};
2
+ import{useContext as c,useEffect as m,useRef as o}from"react";import{createContext as mI,useContext as bI}from"react";var g=globalThis,_=(I,U)=>{let Z=Symbol.for(I);if(!(Z in g))g[Z]=U();return g[Z]};var pI=_("@swarm.ing/pieui:context:pieConfig",()=>mI(null)),vI=()=>{let I=bI(pI);if(!I)throw Error("usePieConfig must be used within PieConfigProvider");return I};var x=()=>{let{enableRenderingLog:I}=vI();return I},UI=x;import{createContext as hI}from"react";import{Centrifuge as fT}from"centrifuge";var LT=_("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var gI=_("@swarm.ing/pieui:context:centrifuge",()=>hI(null)),TI=gI;import{io as NT}from"socket.io-client";import{createContext as cI}from"react";var xT=_("@swarm.ing/pieui:socket-cache",()=>new Map);var oI=_("@swarm.ing/pieui:context:socket",()=>cI(null)),zI=oI;import mT from"mitt";import{createContext as uI,useCallback as vT,useContext as hT}from"react";var lI=_("@swarm.ing/pieui:context:mitt",()=>uI(null));var S=lI;function ZI(I){return I.wasRecovering===!0&&I.recovered===!1}function BI(I){return I.recoverable===!1}function $I(I,U,Z){let z=I.getSubscription(U);if(z)return{subscription:z,createdHere:!1};return{subscription:I.newSubscription(U,Z),createdHere:!0}}import{useMemo as dT}from"react";var qI=new Map,HI=(I,U)=>{qI.set(I,U)},GI=(I)=>{qI.delete(I)};import{jsx as rI,jsxs as sI,Fragment as iI}from"react/jsx-runtime";var dI=({card:I,data:U,children:Z,useSocketioSupport:z=!1,useCentrifugeSupport:B=!1,useMittSupport:T=!1,centrifugeChannel:q=void 0,methods:G=void 0,stored:H=void 0,onResync:Q=void 0})=>{let X=UI(),J=o(G);J.current=G;let F=o(Q);F.current=Q;let Y=o(H);Y.current=H;let O=typeof H==="function";if(m(()=>{if(!O)return;let L=U.name;return HI(L,()=>[JSON.stringify(Y.current())]),()=>GI(L)},[O,U.name]),X)console.log("[PieCard] Rendering card:",I),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:B,mitt:T,centrifugeChannel:q}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!Z);let V=c(zI),A=c(TI),C=c(S);if(m(()=>{if(!V||!z||!J.current||!U.name){if(X&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!V,useSocketioSupport:z,hasMethods:!!J.current,hasDataName:!!U?.name});return}let f=Object.keys(J.current??{}).map(($)=>{let P=`pie${$}_${U.name}`;if(X)console.log(`[PieCard] Socket.IO registering event: ${P}`);let w=(N)=>{J.current?.[$]?.(N)};return V.on(P,w),[P,w]});return()=>{f.forEach(([$,P])=>{if(X)console.log(`[PieCard] Socket.IO unregistering event: ${$}`);V.off($,P)})}},[V,U.name,z]),m(()=>{if(!A||!B||!q||!U.name){if(X&&B)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!A,useCentrifugeSupport:B,hasCentrifugeChannel:!!q,hasMethods:!!J.current,hasDataName:!!U?.name});return}let f=Object.keys(J.current??{}).map(($)=>{let P=`pie${$}_${U.name}_${q}`;if(X)console.log(`[PieCard] Centrifuge subscribing to channel: ${P}`);let{subscription:w,createdHere:N}=$I(A,P,{recoverable:!0,positioned:!0}),e=(k)=>{if(X)console.log(`[PieCard] Centrifuge received data on ${P}:`,k.data);J.current?.[$]?.(k.data)},II=(k)=>{if(BI(k))console.warn(`[PieCard] Centrifuge channel ${P} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(ZI(k)){if(X)console.log(`[PieCard] Centrifuge recovery gap on ${P}; requesting resync`);F.current?.({channel:P,reason:"gap"})}};return w.on("publication",e),w.on("subscribed",II),w.subscribe(),{subscription:w,createdHere:N,onPublication:e,onSubscribed:II}});return()=>{f.forEach(({subscription:$,createdHere:P,onPublication:w,onSubscribed:N})=>{if(X)console.log("[PieCard] Centrifuge unsubscribing from channel");if($.off("publication",w),$.off("subscribed",N),P)$.unsubscribe(),A.removeSubscription($)})}},[A,q,U.name,B]),m(()=>{if(!C||!T||!U.name){if(X&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!C,useMittSupport:T,hasMethods:!!J.current,hasDataName:!!U?.name});return}let L=Object.keys(J.current??{}),f={};return L.forEach(($)=>{let P=`pie${$}_${U.name}`,w=(N)=>{if(X)console.log(`[PieCard] Mitt registering event: ${P}`);J.current?.[$]?.(N)};f[P]=w,C.on(P,w)}),()=>{Object.entries(f).forEach(([$,P])=>{if(X)console.log(`[PieCard] Mitt unregistering event: ${$}`);C.off($,P)})}},[C,U.name,T]),X)console.log("[PieCard] Rendering complete, returning children");if(H!==void 0&&!O)return sI(iI,{children:[rI("input",{type:"hidden",name:U.name,value:JSON.stringify(H)}),Z]});return Z},D=dI;import{lazy as nI}from"react";var y=new Map;function aI(I,U){return U.catch(()=>{if(y.get(I)===U)y.delete(I)}),y.set(I,U),U}function JI(I,U){return nI(()=>{if(y.has(U))return y.get(U);return aI(U,I().then((Z)=>Z))})}var OI=_("@swarm.ing/pieui:component-registry",()=>new Map),tI=(I)=>{if(!I.name)throw Error("Component registration requires a name");if(!I.component&&!I.loader)throw Error(`Component "${I.name}" requires component or loader`);let U={name:I.name,component:I.component,loader:I.loader,metadata:I.metadata,fallback:I.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=JI(U.loader,I.name),U.isLazy=!0;return U};function W(I){let U=tI(I);return OI.set(U.name,U),U.component}var b=(I)=>{return OI.get(I)};import{useContext as QI,memo as JU}from"react";import{createContext as eI}from"react";import{jsx as TU,Fragment as UU}from"react/jsx-runtime";var IU=_("@swarm.ing/pieui:context:fallback",()=>eI(TU(UU,{}))),R=IU;import{createContext as zU}from"react";var ZU=_("@swarm.ing/pieui:context:lazyError",()=>zU(void 0)),p=ZU;import{Component as BU,Suspense as $U}from"react";import{jsx as GU}from"react/jsx-runtime";var qU=2,HU=400;class j extends BU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(I){if(this.props.onError?.(I),this.state.attempt<qU){let U=HU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},U)}}componentDidUpdate(I){if(I.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return GU($U,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as u}from"react/jsx-runtime";function OU({uiConfig:I,setUiAjaxConfiguration:U}){let Z=QI(R),z=QI(p),B=x();if(B)console.log("[UI] Rendering component:",I.card),console.log("[UI] Component data:",I.data),console.log("[UI] Component content:",I.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let T=b(I.card);if(!T?.component){if(B)console.warn(`[UI] Component not found in registry: ${I.card}`),console.log("[UI] Returning fallback component");return Z}if(B)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let q=T.component,G=u(q,{data:I.data,content:I.content,setUiAjaxConfiguration:U});if(T.isLazy){if(B)console.log("[UI] Rendering lazy component with Suspense:",T.name);return u(j,{name:T.name,fallback:T.fallback?u(T.fallback,{}):Z,onError:z,children:G})}if(B)console.log("[UI] Rendering component directly:",T.name);return G}var M=JU(OU);import{useContext as XI}from"react";import{createContext as QU}from"react";var XU=_("@swarm.ing/pieui:context:uiRenderer",()=>QU(null)),K=XU;import{jsx as v}from"react/jsx-runtime";function YI({uiConfig:I,setUiAjaxConfiguration:U}){let Z=XI(R),z=XI(p),B=x();if(B)console.log("[UILoading] Rendering fallback for:",I.card),console.log("[UILoading] Component data:",I.data),console.log("[UILoading] Component content:",I.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let T=b(I.card);if(!T?.component){if(B)console.warn(`[UILoading] Component not found in registry: ${I.card}`),console.log("[UILoading] Returning fallback component");return Z}if(B)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(B)console.log("[UILoading] Rendering fallback for:",T.name);let H=T.fallback;return v(H,{})}if(B)console.log("[UILoading] No fallback, rendering full component:",T.name);let q=T.component,G=v(K.Provider,{value:YI,children:v(q,{data:I.data,content:I.content,setUiAjaxConfiguration:U})});if(T.isLazy)return v(j,{name:T.name,fallback:Z,onError:z,children:G});return G}var YU=YI;import{useContext as PU}from"react";import{jsx as l}from"react/jsx-runtime";var WU=({data:I,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:B}=I,T=PU(K)??M;return l(D,{card:z,data:I,children:l("div",{style:B,id:z,children:U.map((q,G)=>{return l(T,{uiConfig:q,setUiAjaxConfiguration:Z},`children-${G}`)})})})},PI=WU;var DU=W({name:"SequenceCard",component:PI,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as FU}from"react";import{jsx as WI}from"react/jsx-runtime";var _U=({data:I,content:U,setUiAjaxConfiguration:Z})=>{let{name:z}=I,B=FU(K)??M;return WI(D,{card:z,data:I,children:U.map((T,q)=>{return WI(B,{uiConfig:T,setUiAjaxConfiguration:Z},`children-${q}`)})})},DI=_U;var VU=W({name:"UnionCard",component:DI,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as fU,useState as AU}from"react";import LU from"html-react-parser";import{useCallback as h,useEffect as wU,useRef as d,useState as KU}from"react";function MU(){let I=new AudioContext,U=I.createOscillator(),Z=U.connect(I.createMediaStreamDestination());U.start();let z=Z.stream.getAudioTracks()[0];return z.enabled=!1,z}function i(I=null,U){let[Z,z]=KU(!1),B=d(null),T=d(null),q=d(null),G=h(async(J,F=!0)=>{if(B.current)H();let Y=new RTCPeerConnection;if(Y.onconnectionstatechange=()=>{if(Y.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(Y.connectionState))z(!1)},Y.ontrack=($)=>{if(I)I.srcObject=$.streams[0]},F){let $=await navigator.mediaDevices.getUserMedia({audio:!0});Y.addTrack($.getTracks()[0],$)}else{let $=MU();Y.addTrack($)}let O=Y.createDataChannel("oai-events");T.current=O,q.current=new Promise(($)=>{O.addEventListener("open",()=>{$()})});let V=await Y.createOffer();await Y.setLocalDescription(V);let f=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:V.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await Y.setRemoteDescription({type:"answer",sdp:f}),B.current=Y,await q.current},[I]),H=h(()=>{let J=T.current;if(J)J.close();B.current?.getSenders()?.forEach((F)=>F.track?.stop()),B.current?.close(),z(!1),B.current=null,T.current=null,q.current=null},[I]),Q=h((J)=>{let F=T.current;if(!F){console.error("Data channel is not ready",J);return}let Y=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),F.send(JSON.stringify(J)),!J.timestamp)J.timestamp=Y;U?.(J)},[U,I]),X=h((J)=>{if(!T.current){console.error("Data channel is not ready");return}let Y=()=>{Q({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),Q({type:"response.create"})};if(q.current)q.current.then(Y);else Y()},[U,I]);return wU(()=>{let J=T.current;if(!J)return;let F=(Y)=>{let O=JSON.parse(Y.data);if(!O.timestamp)O.timestamp=new Date().toLocaleTimeString();U?.(O)};return J.addEventListener("message",F),()=>{J.removeEventListener("message",F)}},[U,I]),{isSessionActive:Z,startSession:G,stopSession:H,sendTextMessage:X}}import{jsx as RU}from"react/jsx-runtime";var CU=({data:I})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:z,useMittSupport:B,centrifugeChannel:T}=I,[q,G]=AU(U),{isSessionActive:H,startSession:Q,sendTextMessage:X}=i(null,(O)=>{if(console.log(O.type,O.type==="response.output_text.delta"&&O.delta),O.type==="response.output_text.delta"&&O.delta)G((V)=>V+O.delta)});return fU(()=>{G(U)},[U]),RU(D,{card:"HTMLEmbedCard",data:I,methods:{update:(O)=>{G(O.value)},generateUsingAI:async(O)=>{try{if(!H&&O.token)await Q(O.token,!1);X(O.prompt)}catch(V){console.error("Failed to generate using AI",V)}},initializeAI:async(O)=>{if(!H&&O.token)await Q(O.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:Z,useMittSupport:B,centrifugeChannel:T,children:LU(q)})},FI=CU;var NU=W({name:"HTMLEmbedCard",component:FI,metadata:{author:"Swarm.ing"}});import{useEffect as jU,useState as EU}from"react";import{jsx as _I}from"react/jsx-runtime";var kU=({data:I})=>{let{name:U,value:Z,useSocketioSupport:z,useCentrifugeSupport:B,useMittSupport:T,centrifugeChannel:q}=I,[G,H]=EU(Z);return jU(()=>{H(Z)},[Z]),_I(D,{card:"HiddenCard",data:I,useSocketioSupport:z,useCentrifugeSupport:B,useMittSupport:T,centrifugeChannel:q,methods:{update:({value:Q})=>{H(Q)}},children:_I("input",{type:"hidden",id:U,name:U,value:G})})},VI=kU;var xU=W({name:"HiddenCard",component:VI,metadata:{author:"Swarm.ing"}});import{useContext as wI,useEffect as mU}from"react";import{createContext as yU}from"react";var SU=_("@swarm.ing/pieui:context:navigate",()=>yU(void 0)),E=SU;import{jsx as vU,Fragment as pU}from"react/jsx-runtime";var bU=({data:I})=>{let{url:U}=I,Z=wI(E),z=wI(R);return mU(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),vU(pU,{children:z})},KI=bU;var hU=W({name:"AutoRedirectCard",component:KI,metadata:{author:"Swarm.ing"}});import{Bounce as gU,Slide as cU,Zoom as oU,Flip as uU}from"react-toastify";import{toast as lU,ToastContainer as dU}from"react-toastify";import{useContext as iU,useMemo as rU,useRef as sU}from"react";import{jsx as r,Fragment as UT}from"react/jsx-runtime";var nU={bounce:gU,slide:cU,zoom:oU,flip:uU},aU=(I)=>{let U={...I,type:I.alertType,transition:I.transition?nU[I.transition]:void 0,position:I.position??"bottom-right",autoClose:I.autoClose??3000,style:{backgroundColor:"black",...I.sx}};lU(I.message,U)},tU=(I)=>{console.log("Log event",I)},eU=(I)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(I.title,{body:I.message??I.subtitle,icon:I.icon,silent:I.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")U()})},IT=({data:I})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:B}=I,T=iU(E),q=sU(T);q.current=T;let G=rU(()=>({alert:aU,log:tU,push:eU,redirect:(H)=>{if(H.to){let Q=H.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Q))window.location.href=Q;else q.current?.(Q)}else window.location.reload()},reload:(H)=>{if(H.to){let Q=H.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Q))window.location.href=Q;else q.current?.(Q)}else window.location.reload()}}),[]);return r(UT,{children:r(D,{card:"IOEventsCard",data:I,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:B,methods:G,children:r(dU,{})})})},MI=IT;var TT=W({name:"IOEventsCard",component:MI,metadata:{author:"Swarm.ing"}});import{useEffect as fI,useState as zT}from"react";import{jsx as AI}from"react/jsx-runtime";var ZT=({data:I})=>{let{name:U,key:Z,value:z,useSocketioSupport:B,useCentrifugeSupport:T,useMittSupport:q,centrifugeChannel:G}=I,[H,Q]=zT(z);return fI(()=>{Q(z)},[z]),fI(()=>{if(typeof window>"u")return;sessionStorage.setItem(Z,H)},[Z,H]),AI(D,{card:"SessionStorageCard",data:I,useSocketioSupport:B,useCentrifugeSupport:T,useMittSupport:q,centrifugeChannel:G,methods:{update:({value:X})=>{Q(X)},remove:()=>{sessionStorage.removeItem(Z),Q("")}},children:AI("input",{type:"hidden",id:U,name:U,value:H})})},LI=ZT;var BT=W({name:"SessionStorageCard",component:LI,metadata:{author:"PieData"}});import{useEffect as CI,useState as $T}from"react";import{jsx as RI}from"react/jsx-runtime";var qT=({data:I})=>{let{name:U,key:Z,value:z,useSocketioSupport:B,useCentrifugeSupport:T,useMittSupport:q,centrifugeChannel:G}=I,[H,Q]=$T(z);return CI(()=>{Q(z)},[z]),CI(()=>{if(typeof window>"u")return;localStorage.setItem(Z,H)},[Z,H]),RI(D,{card:"DeviceStorageCard",data:I,useSocketioSupport:B,useCentrifugeSupport:T,useMittSupport:q,centrifugeChannel:G,methods:{update:({value:X})=>{Q(X)},remove:()=>{localStorage.removeItem(Z),Q("")}},children:RI("input",{type:"hidden",id:U,name:U,value:H})})},NI=qT;var HT=W({name:"DeviceStorageCard",component:NI,metadata:{author:"PieData"}});import{useCallback as s,useContext as n,useEffect as GT,useRef as JT,useState as jI}from"react";import{jsx as EI}from"react/jsx-runtime";var OT=({data:I,content:U})=>{let{useLoader:Z,noReturn:z,returnType:B,useSocketioSupport:T,useCentrifugeSupport:q,useMittSupport:G,centrifugeChannel:H}=I,Q=n(R),X=n(K)??M,[J,F]=jI(!1),[Y,O]=jI(null),V=JT(U),A=n(S),C=s(($)=>{if($===null)F(!0);else if(F(!1),!z)V.current=$;if(!z)O($)},[z]),L=s(($)=>{V.current=$.content,O($.content)},[]),f=s(($)=>{if($===null)F(!0);else if(F(!1),!z)for(let P of $)A?.emit(P.name,P.data)},[z,A]);if(GT(()=>{O(U),F(!1)},[U]),!Y&&Z)return Q;return EI(D,{card:"AjaxGroupCard",data:I,methods:{changeContent:L},useSocketioSupport:T,useCentrifugeSupport:q,useMittSupport:G,centrifugeChannel:H,children:EI(X,{uiConfig:Y??V.current,setUiAjaxConfiguration:B==="events"?f:C})})},kI=OT;var QT=W({name:"AjaxGroupCard",component:kI,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as xI}from"react";import{jsx as a}from"react/jsx-runtime";var XT=({data:I,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,url:B,sx:T}=I,q=xI(E),G=xI(K)??M;return a(D,{card:z,data:I,children:a("div",{style:T,id:z,onClick:(Q)=>{if(B)if(Q.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(B))window.location.href=B;else q?.(B)},children:a(G,{setUiAjaxConfiguration:Z,uiConfig:U})})})},yI=XT;var YT=W({name:"BoxCard",component:yI,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as PT}from"react";import{jsx as t}from"react/jsx-runtime";var WT=({data:I,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:B}=I,T=PT(K)??M;return t(D,{card:z,data:I,children:t("div",{style:B,id:z,children:U.map((q,G)=>{return t(T,{uiConfig:q,setUiAjaxConfiguration:Z},`children-${G}`)})})})},SI=WT;var DT=W({name:"OneOfCard",component:SI,metadata:{author:"Swarm.ing",description:"Different variants"}});export{VU as UnionCard,YU as UILoading,M as UI,BT as SessionStorageCard,DU as SequenceCard,D as PieCard,DT as OneOfCard,TT as IOEventsCard,xU as HiddenCard,NU as HTMLEmbedCard,HT as DeviceStorageCard,YT as BoxCard,hU as AutoRedirectCard,QT as AjaxGroupCard};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var DU=Object.create;var{getPrototypeOf:_U,defineProperty:h,getOwnPropertyNames:wI,getOwnPropertyDescriptor:VU}=Object,KI=Object.prototype.hasOwnProperty;var MI=(I,U,z)=>{z=I!=null?DU(_U(I)):{};let T=U||!I||!I.__esModule?h(z,"default",{value:I,enumerable:!0}):z;for(let B of wI(I))if(!KI.call(T,B))h(T,B,{get:()=>I[B],enumerable:!0});return T},VI=new WeakMap,wU=(I)=>{var U=VI.get(I),z;if(U)return U;if(U=h({},"__esModule",{value:!0}),I&&typeof I==="object"||typeof I==="function")wI(I).map((T)=>!KI.call(U,T)&&h(U,T,{get:()=>I[T],enumerable:!(z=VU(I,T))||z.enumerable}));return VI.set(I,U),U};var KU=(I,U)=>{for(var z in U)h(I,z,{get:U[z],enumerable:!0,configurable:!0,set:(T)=>U[z]=()=>T})};var ZT={};KU(ZT,{UnionCard:()=>sI,UILoading:()=>cI,UI:()=>A,SessionStorageCard:()=>qU,SequenceCard:()=>dI,PieCard:()=>W,OneOfCard:()=>FU,IOEventsCard:()=>HU,HiddenCard:()=>UU,HTMLEmbedCard:()=>eI,DeviceStorageCard:()=>GU,BoxCard:()=>YU,AutoRedirectCard:()=>ZU,AjaxGroupCard:()=>QU});module.exports=wU(ZT);var K=require("react");var r=require("react");var OI=globalThis,_=(I,U)=>{let z=Symbol.for(I);if(!(z in OI))OI[z]=U();return OI[z]};var MU=_("@swarm.ing/pieui:context:pieConfig",()=>r.createContext(null)),fU=()=>{let I=r.useContext(MU);if(!I)throw Error("usePieConfig must be used within PieConfigProvider");return I};var g=()=>{let{enableRenderingLog:I}=fU();return I},fI=g;var AI=require("react"),AU=require("centrifuge");var GT=_("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var LU=_("@swarm.ing/pieui:context:centrifuge",()=>AI.createContext(null)),LI=LU;var RU=require("socket.io-client"),RI=require("react");var YT=_("@swarm.ing/pieui:socket-cache",()=>new Map);var CU=_("@swarm.ing/pieui:context:socket",()=>RI.createContext(null)),CI=CU;var NU=MI(require("mitt")),s=require("react");var jU=_("@swarm.ing/pieui:context:mitt",()=>s.createContext(null));var n=jU;function NI(I){return I.wasRecovering===!0&&I.recovered===!1}function jI(I){return I.recoverable===!1}function EI(I,U,z){let T=I.getSubscription(U);if(T)return{subscription:T,createdHere:!1};return{subscription:I.newSubscription(U,z),createdHere:!0}}var EU=require("react");var kI=new Map,yI=(I,U)=>{kI.set(I,U)},xI=(I)=>{kI.delete(I)};var x=require("react/jsx-runtime"),kU=({card:I,data:U,children:z,useSocketioSupport:T=!1,useCentrifugeSupport:B=!1,useMittSupport:Z=!1,centrifugeChannel:$=void 0,methods:O=void 0,stored:q=void 0,onResync:Q=void 0})=>{let X=fI(),G=K.useRef(O);G.current=O;let D=K.useRef(Q);D.current=Q;let Y=K.useRef(q);Y.current=q;let J=typeof q==="function";if(K.useEffect(()=>{if(!J)return;let N=U.name;return yI(N,()=>[JSON.stringify(Y.current())]),()=>xI(N)},[J,U.name]),X)console.log("[PieCard] Rendering card:",I),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:T,centrifuge:B,mitt:Z,centrifugeChannel:$}),console.log("[PieCard] Methods:",O?Object.keys(O):"none"),console.log("[PieCard] Has children:",!!z);let V=K.useContext(CI),C=K.useContext(LI),j=K.useContext(n);if(K.useEffect(()=>{if(!V||!T||!G.current||!U.name){if(X&&T)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!V,useSocketioSupport:T,hasMethods:!!G.current,hasDataName:!!U?.name});return}let R=Object.keys(G.current??{}).map((H)=>{let P=`pie${H}_${U.name}`;if(X)console.log(`[PieCard] Socket.IO registering event: ${P}`);let f=(y)=>{G.current?.[H]?.(y)};return V.on(P,f),[P,f]});return()=>{R.forEach(([H,P])=>{if(X)console.log(`[PieCard] Socket.IO unregistering event: ${H}`);V.off(H,P)})}},[V,U.name,T]),K.useEffect(()=>{if(!C||!B||!$||!U.name){if(X&&B)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!C,useCentrifugeSupport:B,hasCentrifugeChannel:!!$,hasMethods:!!G.current,hasDataName:!!U?.name});return}let R=Object.keys(G.current??{}).map((H)=>{let P=`pie${H}_${U.name}_${$}`;if(X)console.log(`[PieCard] Centrifuge subscribing to channel: ${P}`);let{subscription:f,createdHere:y}=EI(C,P,{recoverable:!0,positioned:!0}),DI=(v)=>{if(X)console.log(`[PieCard] Centrifuge received data on ${P}:`,v.data);G.current?.[H]?.(v.data)},_I=(v)=>{if(jI(v))console.warn(`[PieCard] Centrifuge channel ${P} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(NI(v)){if(X)console.log(`[PieCard] Centrifuge recovery gap on ${P}; requesting resync`);D.current?.({channel:P,reason:"gap"})}};return f.on("publication",DI),f.on("subscribed",_I),f.subscribe(),{subscription:f,createdHere:y,onPublication:DI,onSubscribed:_I}});return()=>{R.forEach(({subscription:H,createdHere:P,onPublication:f,onSubscribed:y})=>{if(X)console.log("[PieCard] Centrifuge unsubscribing from channel");if(H.off("publication",f),H.off("subscribed",y),P)H.unsubscribe(),C.removeSubscription(H)})}},[C,$,U.name,B]),K.useEffect(()=>{if(!j||!Z||!U.name){if(X&&Z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!j,useMittSupport:Z,hasMethods:!!G.current,hasDataName:!!U?.name});return}let N=Object.keys(G.current??{}),R={};return N.forEach((H)=>{let P=`pie${H}_${U.name}`,f=(y)=>{if(X)console.log(`[PieCard] Mitt registering event: ${P}`);G.current?.[H]?.(y)};R[P]=f,j.on(P,f)}),()=>{Object.entries(R).forEach(([H,P])=>{if(X)console.log(`[PieCard] Mitt unregistering event: ${H}`);j.off(H,P)})}},[j,U.name,Z]),X)console.log("[PieCard] Rendering complete, returning children");if(q!==void 0&&!J)return x.jsxs(x.Fragment,{children:[x.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(q)}),z]});return z},W=kU;var SI=require("react"),o=new Map;function yU(I,U){return U.catch(()=>{if(o.get(I)===U)o.delete(I)}),o.set(I,U),U}function mI(I,U){return SI.lazy(()=>{if(o.has(U))return o.get(U);return yU(U,I().then((z)=>z))})}var bI=_("@swarm.ing/pieui:component-registry",()=>new Map),xU=(I)=>{if(!I.name)throw Error("Component registration requires a name");if(!I.component&&!I.loader)throw Error(`Component "${I.name}" requires component or loader`);let U={name:I.name,component:I.component,loader:I.loader,metadata:I.metadata,fallback:I.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=mI(U.loader,I.name),U.isLazy=!0;return U};function F(I){let U=xU(I);return bI.set(U.name,U),U.component}var a=(I)=>{return bI.get(I)};var c=require("react");var pI=require("react");var t=require("react/jsx-runtime"),SU=_("@swarm.ing/pieui:context:fallback",()=>pI.createContext(t.jsx(t.Fragment,{}))),E=SU;var vI=require("react");var mU=_("@swarm.ing/pieui:context:lazyError",()=>vI.createContext(void 0)),e=mU;var II=require("react"),hI=require("react/jsx-runtime"),bU=2,pU=400;class S extends II.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(I){if(this.props.onError?.(I),this.state.attempt<bU){let U=pU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((z)=>({failed:!1,attempt:z.attempt+1}))},U)}}componentDidUpdate(I){if(I.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return hI.jsx(II.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var UI=require("react/jsx-runtime");function vU({uiConfig:I,setUiAjaxConfiguration:U}){let z=c.useContext(E),T=c.useContext(e),B=g();if(B)console.log("[UI] Rendering component:",I.card),console.log("[UI] Component data:",I.data),console.log("[UI] Component content:",I.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let Z=a(I.card);if(!Z?.component){if(B)console.warn(`[UI] Component not found in registry: ${I.card}`),console.log("[UI] Returning fallback component");return z}if(B)console.log("[UI] Found component in registry:",{name:Z.name,isLazy:Z.isLazy,hasMetadata:!!Z.metadata});let $=Z.component,O=UI.jsx($,{data:I.data,content:I.content,setUiAjaxConfiguration:U});if(Z.isLazy){if(B)console.log("[UI] Rendering lazy component with Suspense:",Z.name);return UI.jsx(S,{name:Z.name,fallback:Z.fallback?UI.jsx(Z.fallback,{}):z,onError:T,children:O})}if(B)console.log("[UI] Rendering component directly:",Z.name);return O}var A=c.memo(vU);var GI=require("react");var gI=require("react");var hU=_("@swarm.ing/pieui:context:uiRenderer",()=>gI.createContext(null)),L=hU;var l=require("react/jsx-runtime");function oI({uiConfig:I,setUiAjaxConfiguration:U}){let z=GI.useContext(E),T=GI.useContext(e),B=g();if(B)console.log("[UILoading] Rendering fallback for:",I.card),console.log("[UILoading] Component data:",I.data),console.log("[UILoading] Component content:",I.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let Z=a(I.card);if(!Z?.component){if(B)console.warn(`[UILoading] Component not found in registry: ${I.card}`),console.log("[UILoading] Returning fallback component");return z}if(B)console.log("[UILoading] Found component in registry:",{name:Z.name,isLazy:Z.isLazy,hasMetadata:!!Z.metadata,hasFallback:!!Z.fallback});if(Z.fallback){if(B)console.log("[UILoading] Rendering fallback for:",Z.name);let q=Z.fallback;return l.jsx(q,{})}if(B)console.log("[UILoading] No fallback, rendering full component:",Z.name);let $=Z.component,O=l.jsx(L.Provider,{value:oI,children:l.jsx($,{data:I.data,content:I.content,setUiAjaxConfiguration:U})});if(Z.isLazy)return l.jsx(S,{name:Z.name,fallback:z,onError:T,children:O});return O}var cI=oI;var lI=require("react");var TI=require("react/jsx-runtime"),gU=({data:I,content:U,setUiAjaxConfiguration:z})=>{let{name:T,sx:B}=I,Z=lI.useContext(L)??A;return TI.jsx(W,{card:T,data:I,children:TI.jsx("div",{style:B,id:T,children:U.map(($,O)=>{return TI.jsx(Z,{uiConfig:$,setUiAjaxConfiguration:z},`children-${O}`)})})})},uI=gU;var dI=F({name:"SequenceCard",component:uI,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var iI=require("react");var JI=require("react/jsx-runtime"),oU=({data:I,content:U,setUiAjaxConfiguration:z})=>{let{name:T}=I,B=iI.useContext(L)??A;return JI.jsx(W,{card:T,data:I,children:U.map((Z,$)=>{return JI.jsx(B,{uiConfig:Z,setUiAjaxConfiguration:z},`children-${$}`)})})},rI=oU;var sI=F({name:"UnionCard",component:rI,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var zI=require("react"),nI=MI(require("html-react-parser"));var M=require("react");function cU(){let I=new AudioContext,U=I.createOscillator(),z=U.connect(I.createMediaStreamDestination());U.start();let T=z.stream.getAudioTracks()[0];return T.enabled=!1,T}function QI(I=null,U){let[z,T]=M.useState(!1),B=M.useRef(null),Z=M.useRef(null),$=M.useRef(null),O=M.useCallback(async(G,D=!0)=>{if(B.current)q();let Y=new RTCPeerConnection;if(Y.onconnectionstatechange=()=>{if(Y.connectionState==="connected")T(!0);else if(["disconnected","failed","closed"].includes(Y.connectionState))T(!1)},Y.ontrack=(H)=>{if(I)I.srcObject=H.streams[0]},D){let H=await navigator.mediaDevices.getUserMedia({audio:!0});Y.addTrack(H.getTracks()[0],H)}else{let H=cU();Y.addTrack(H)}let J=Y.createDataChannel("oai-events");Z.current=J,$.current=new Promise((H)=>{J.addEventListener("open",()=>{H()})});let V=await Y.createOffer();await Y.setLocalDescription(V);let R=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:V.sdp,headers:{Authorization:`Bearer ${G}`,"Content-Type":"application/sdp"}})).text();await Y.setRemoteDescription({type:"answer",sdp:R}),B.current=Y,await $.current},[I]),q=M.useCallback(()=>{let G=Z.current;if(G)G.close();B.current?.getSenders()?.forEach((D)=>D.track?.stop()),B.current?.close(),T(!1),B.current=null,Z.current=null,$.current=null},[I]),Q=M.useCallback((G)=>{let D=Z.current;if(!D){console.error("Data channel is not ready",G);return}let Y=new Date().toLocaleTimeString();if(G.event_id=G.event_id||crypto.randomUUID(),D.send(JSON.stringify(G)),!G.timestamp)G.timestamp=Y;U?.(G)},[U,I]),X=M.useCallback((G)=>{if(!Z.current){console.error("Data channel is not ready");return}let Y=()=>{Q({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:G}]}}),Q({type:"response.create"})};if($.current)$.current.then(Y);else Y()},[U,I]);return M.useEffect(()=>{let G=Z.current;if(!G)return;let D=(Y)=>{let J=JSON.parse(Y.data);if(!J.timestamp)J.timestamp=new Date().toLocaleTimeString();U?.(J)};return G.addEventListener("message",D),()=>{G.removeEventListener("message",D)}},[U,I]),{isSessionActive:z,startSession:O,stopSession:q,sendTextMessage:X}}var tI=require("react/jsx-runtime"),lU=({data:I})=>{let{html:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:B,centrifugeChannel:Z}=I,[$,O]=zI.useState(U),{isSessionActive:q,startSession:Q,sendTextMessage:X}=QI(null,(J)=>{if(console.log(J.type,J.type==="response.output_text.delta"&&J.delta),J.type==="response.output_text.delta"&&J.delta)O((V)=>V+J.delta)});return zI.useEffect(()=>{O(U)},[U]),tI.jsx(W,{card:"HTMLEmbedCard",data:I,methods:{update:(J)=>{O(J.value)},generateUsingAI:async(J)=>{try{if(!q&&J.token)await Q(J.token,!1);X(J.prompt)}catch(V){console.error("Failed to generate using AI",V)}},initializeAI:async(J)=>{if(!q&&J.token)await Q(J.token,!1)}},useCentrifugeSupport:T,useSocketioSupport:z,useMittSupport:B,centrifugeChannel:Z,children:nI.default($)})},aI=lU;var eI=F({name:"HTMLEmbedCard",component:aI,metadata:{author:"Swarm.ing"}});var ZI=require("react");var XI=require("react/jsx-runtime"),uU=({data:I})=>{let{name:U,value:z,useSocketioSupport:T,useCentrifugeSupport:B,useMittSupport:Z,centrifugeChannel:$}=I,[O,q]=ZI.useState(z);return ZI.useEffect(()=>{q(z)},[z]),XI.jsx(W,{card:"HiddenCard",data:I,useSocketioSupport:T,useCentrifugeSupport:B,useMittSupport:Z,centrifugeChannel:$,methods:{update:({value:Q})=>{q(Q)}},children:XI.jsx("input",{type:"hidden",id:U,name:U,value:O})})},IU=uU;var UU=F({name:"HiddenCard",component:IU,metadata:{author:"Swarm.ing"}});var u=require("react");var TU=require("react");var dU=_("@swarm.ing/pieui:context:navigate",()=>TU.createContext(void 0)),m=dU;var BI=require("react/jsx-runtime"),iU=({data:I})=>{let{url:U}=I,z=u.useContext(m),T=u.useContext(E);return u.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else z?.(U)},[U,z]),BI.jsx(BI.Fragment,{children:T})},zU=iU;var ZU=F({name:"AutoRedirectCard",component:zU,metadata:{author:"Swarm.ing"}});var k=require("react-toastify"),HI=require("react-toastify");var p=require("react");var b=require("react/jsx-runtime"),rU={bounce:k.Bounce,slide:k.Slide,zoom:k.Zoom,flip:k.Flip},sU=(I)=>{let U={...I,type:I.alertType,transition:I.transition?rU[I.transition]:void 0,position:I.position??"bottom-right",autoClose:I.autoClose??3000,style:{backgroundColor:"black",...I.sx}};HI.toast(I.message,U)},nU=(I)=>{console.log("Log event",I)},aU=(I)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(I.title,{body:I.message??I.subtitle,icon:I.icon,silent:I.silent})}catch(T){console.error("[IOEventsCard] Failed to show notification",T)}},z=window.Notification.permission;if(z==="granted"){U();return}if(z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((T)=>{if(T==="granted")U()})},tU=({data:I})=>{let{useCentrifugeSupport:U,useSocketioSupport:z,useMittSupport:T,centrifugeChannel:B}=I,Z=p.useContext(m),$=p.useRef(Z);$.current=Z;let O=p.useMemo(()=>({alert:sU,log:nU,push:aU,redirect:(q)=>{if(q.to){let Q=q.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Q))window.location.href=Q;else $.current?.(Q)}else window.location.reload()},reload:(q)=>{if(q.to){let Q=q.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Q))window.location.href=Q;else $.current?.(Q)}else window.location.reload()}}),[]);return b.jsx(b.Fragment,{children:b.jsx(W,{card:"IOEventsCard",data:I,useCentrifugeSupport:U,useSocketioSupport:z,useMittSupport:T,centrifugeChannel:B,methods:O,children:b.jsx(HI.ToastContainer,{})})})},BU=tU;var HU=F({name:"IOEventsCard",component:BU,metadata:{author:"Swarm.ing"}});var d=require("react");var YI=require("react/jsx-runtime"),eU=({data:I})=>{let{name:U,key:z,value:T,useSocketioSupport:B,useCentrifugeSupport:Z,useMittSupport:$,centrifugeChannel:O}=I,[q,Q]=d.useState(T);return d.useEffect(()=>{Q(T)},[T]),d.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(z,q)},[z,q]),YI.jsx(W,{card:"SessionStorageCard",data:I,useSocketioSupport:B,useCentrifugeSupport:Z,useMittSupport:$,centrifugeChannel:O,methods:{update:({value:X})=>{Q(X)},remove:()=>{sessionStorage.removeItem(z),Q("")}},children:YI.jsx("input",{type:"hidden",id:U,name:U,value:q})})},$U=eU;var qU=F({name:"SessionStorageCard",component:$U,metadata:{author:"PieData"}});var i=require("react");var PI=require("react/jsx-runtime"),IT=({data:I})=>{let{name:U,key:z,value:T,useSocketioSupport:B,useCentrifugeSupport:Z,useMittSupport:$,centrifugeChannel:O}=I,[q,Q]=i.useState(T);return i.useEffect(()=>{Q(T)},[T]),i.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(z,q)},[z,q]),PI.jsx(W,{card:"DeviceStorageCard",data:I,useSocketioSupport:B,useCentrifugeSupport:Z,useMittSupport:$,centrifugeChannel:O,methods:{update:({value:X})=>{Q(X)},remove:()=>{localStorage.removeItem(z),Q("")}},children:PI.jsx("input",{type:"hidden",id:U,name:U,value:q})})},OU=IT;var GU=F({name:"DeviceStorageCard",component:OU,metadata:{author:"PieData"}});var w=require("react");var WI=require("react/jsx-runtime"),UT=({data:I,content:U})=>{let{useLoader:z,noReturn:T,returnType:B,useSocketioSupport:Z,useCentrifugeSupport:$,useMittSupport:O,centrifugeChannel:q}=I,Q=w.useContext(E),X=w.useContext(L)??A,[G,D]=w.useState(!1),[Y,J]=w.useState(null),V=w.useRef(U),C=w.useContext(n),j=w.useCallback((H)=>{if(H===null)D(!0);else if(D(!1),!T)V.current=H;if(!T)J(H)},[T]),N=w.useCallback((H)=>{V.current=H.content,J(H.content)},[]),R=w.useCallback((H)=>{if(H===null)D(!0);else if(D(!1),!T)for(let P of H)C?.emit(P.name,P.data)},[T,C]);if(w.useEffect(()=>{J(U),D(!1)},[U]),!Y&&z)return Q;return WI.jsx(W,{card:"AjaxGroupCard",data:I,methods:{changeContent:N},useSocketioSupport:Z,useCentrifugeSupport:$,useMittSupport:O,centrifugeChannel:q,children:WI.jsx(X,{uiConfig:Y??V.current,setUiAjaxConfiguration:B==="events"?R:j})})},JU=UT;var QU=F({name:"AjaxGroupCard",component:JU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var FI=require("react");var $I=require("react/jsx-runtime"),TT=({data:I,content:U,setUiAjaxConfiguration:z})=>{let{name:T,url:B,sx:Z}=I,$=FI.useContext(m),O=FI.useContext(L)??A;return $I.jsx(W,{card:T,data:I,children:$I.jsx("div",{style:Z,id:T,onClick:(Q)=>{if(B)if(Q.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(B))window.location.href=B;else $?.(B)},children:$I.jsx(O,{setUiAjaxConfiguration:z,uiConfig:U})})})},XU=TT;var YU=F({name:"BoxCard",component:XU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var PU=require("react");var qI=require("react/jsx-runtime"),zT=({data:I,content:U,setUiAjaxConfiguration:z})=>{let{name:T,sx:B}=I,Z=PU.useContext(L)??A;return qI.jsx(W,{card:T,data:I,children:qI.jsx("div",{style:B,id:T,children:U.map(($,O)=>{return qI.jsx(Z,{uiConfig:$,setUiAjaxConfiguration:z},`children-${O}`)})})})},WU=zT;var FU=F({name:"OneOfCard",component:WU,metadata:{author:"Swarm.ing",description:"Different variants"}});
2
+ var FU=Object.create;var{getPrototypeOf:_U,defineProperty:h,getOwnPropertyNames:wI,getOwnPropertyDescriptor:VU}=Object,KI=Object.prototype.hasOwnProperty;var MI=(I,U,z)=>{z=I!=null?FU(_U(I)):{};let T=U||!I||!I.__esModule?h(z,"default",{value:I,enumerable:!0}):z;for(let B of wI(I))if(!KI.call(T,B))h(T,B,{get:()=>I[B],enumerable:!0});return T},VI=new WeakMap,wU=(I)=>{var U=VI.get(I),z;if(U)return U;if(U=h({},"__esModule",{value:!0}),I&&typeof I==="object"||typeof I==="function")wI(I).map((T)=>!KI.call(U,T)&&h(U,T,{get:()=>I[T],enumerable:!(z=VU(I,T))||z.enumerable}));return VI.set(I,U),U};var KU=(I,U)=>{for(var z in U)h(I,z,{get:U[z],enumerable:!0,configurable:!0,set:(T)=>U[z]=()=>T})};var ZT={};KU(ZT,{UnionCard:()=>sI,UILoading:()=>oI,UI:()=>A,SessionStorageCard:()=>HU,SequenceCard:()=>dI,PieCard:()=>W,OneOfCard:()=>DU,IOEventsCard:()=>$U,HiddenCard:()=>UU,HTMLEmbedCard:()=>eI,DeviceStorageCard:()=>JU,BoxCard:()=>YU,AutoRedirectCard:()=>ZU,AjaxGroupCard:()=>QU});module.exports=wU(ZT);var K=require("react");var r=require("react");var GI=globalThis,_=(I,U)=>{let z=Symbol.for(I);if(!(z in GI))GI[z]=U();return GI[z]};var MU=_("@swarm.ing/pieui:context:pieConfig",()=>r.createContext(null)),fU=()=>{let I=r.useContext(MU);if(!I)throw Error("usePieConfig must be used within PieConfigProvider");return I};var g=()=>{let{enableRenderingLog:I}=fU();return I},fI=g;var AI=require("react"),AU=require("centrifuge");var JT=_("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var LU=_("@swarm.ing/pieui:context:centrifuge",()=>AI.createContext(null)),LI=LU;var CU=require("socket.io-client"),CI=require("react");var YT=_("@swarm.ing/pieui:socket-cache",()=>new Map);var RU=_("@swarm.ing/pieui:context:socket",()=>CI.createContext(null)),RI=RU;var NU=MI(require("mitt")),s=require("react");var jU=_("@swarm.ing/pieui:context:mitt",()=>s.createContext(null));var n=jU;function NI(I){return I.wasRecovering===!0&&I.recovered===!1}function jI(I){return I.recoverable===!1}function EI(I,U,z){let T=I.getSubscription(U);if(T)return{subscription:T,createdHere:!1};return{subscription:I.newSubscription(U,z),createdHere:!0}}var EU=require("react");var kI=new Map,xI=(I,U)=>{kI.set(I,U)},yI=(I)=>{kI.delete(I)};var y=require("react/jsx-runtime"),kU=({card:I,data:U,children:z,useSocketioSupport:T=!1,useCentrifugeSupport:B=!1,useMittSupport:Z=!1,centrifugeChannel:q=void 0,methods:G=void 0,stored:H=void 0,onResync:Q=void 0})=>{let X=fI(),J=K.useRef(G);J.current=G;let F=K.useRef(Q);F.current=Q;let Y=K.useRef(H);Y.current=H;let O=typeof H==="function";if(K.useEffect(()=>{if(!O)return;let N=U.name;return xI(N,()=>[JSON.stringify(Y.current())]),()=>yI(N)},[O,U.name]),X)console.log("[PieCard] Rendering card:",I),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:T,centrifuge:B,mitt:Z,centrifugeChannel:q}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!z);let V=K.useContext(RI),R=K.useContext(LI),j=K.useContext(n);if(K.useEffect(()=>{if(!V||!T||!J.current||!U.name){if(X&&T)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!V,useSocketioSupport:T,hasMethods:!!J.current,hasDataName:!!U?.name});return}let C=Object.keys(J.current??{}).map(($)=>{let P=`pie${$}_${U.name}`;if(X)console.log(`[PieCard] Socket.IO registering event: ${P}`);let f=(x)=>{J.current?.[$]?.(x)};return V.on(P,f),[P,f]});return()=>{C.forEach(([$,P])=>{if(X)console.log(`[PieCard] Socket.IO unregistering event: ${$}`);V.off($,P)})}},[V,U.name,T]),K.useEffect(()=>{if(!R||!B||!q||!U.name){if(X&&B)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!R,useCentrifugeSupport:B,hasCentrifugeChannel:!!q,hasMethods:!!J.current,hasDataName:!!U?.name});return}let C=Object.keys(J.current??{}).map(($)=>{let P=`pie${$}_${U.name}_${q}`;if(X)console.log(`[PieCard] Centrifuge subscribing to channel: ${P}`);let{subscription:f,createdHere:x}=EI(R,P,{recoverable:!0,positioned:!0}),FI=(v)=>{if(X)console.log(`[PieCard] Centrifuge received data on ${P}:`,v.data);J.current?.[$]?.(v.data)},_I=(v)=>{if(jI(v))console.warn(`[PieCard] Centrifuge channel ${P} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(NI(v)){if(X)console.log(`[PieCard] Centrifuge recovery gap on ${P}; requesting resync`);F.current?.({channel:P,reason:"gap"})}};return f.on("publication",FI),f.on("subscribed",_I),f.subscribe(),{subscription:f,createdHere:x,onPublication:FI,onSubscribed:_I}});return()=>{C.forEach(({subscription:$,createdHere:P,onPublication:f,onSubscribed:x})=>{if(X)console.log("[PieCard] Centrifuge unsubscribing from channel");if($.off("publication",f),$.off("subscribed",x),P)$.unsubscribe(),R.removeSubscription($)})}},[R,q,U.name,B]),K.useEffect(()=>{if(!j||!Z||!U.name){if(X&&Z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!j,useMittSupport:Z,hasMethods:!!J.current,hasDataName:!!U?.name});return}let N=Object.keys(J.current??{}),C={};return N.forEach(($)=>{let P=`pie${$}_${U.name}`,f=(x)=>{if(X)console.log(`[PieCard] Mitt registering event: ${P}`);J.current?.[$]?.(x)};C[P]=f,j.on(P,f)}),()=>{Object.entries(C).forEach(([$,P])=>{if(X)console.log(`[PieCard] Mitt unregistering event: ${$}`);j.off($,P)})}},[j,U.name,Z]),X)console.log("[PieCard] Rendering complete, returning children");if(H!==void 0&&!O)return y.jsxs(y.Fragment,{children:[y.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(H)}),z]});return z},W=kU;var SI=require("react"),c=new Map;function xU(I,U){return U.catch(()=>{if(c.get(I)===U)c.delete(I)}),c.set(I,U),U}function mI(I,U){return SI.lazy(()=>{if(c.has(U))return c.get(U);return xU(U,I().then((z)=>z))})}var bI=_("@swarm.ing/pieui:component-registry",()=>new Map),yU=(I)=>{if(!I.name)throw Error("Component registration requires a name");if(!I.component&&!I.loader)throw Error(`Component "${I.name}" requires component or loader`);let U={name:I.name,component:I.component,loader:I.loader,metadata:I.metadata,fallback:I.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=mI(U.loader,I.name),U.isLazy=!0;return U};function D(I){let U=yU(I);return bI.set(U.name,U),U.component}var a=(I)=>{return bI.get(I)};var o=require("react");var pI=require("react");var t=require("react/jsx-runtime"),SU=_("@swarm.ing/pieui:context:fallback",()=>pI.createContext(t.jsx(t.Fragment,{}))),E=SU;var vI=require("react");var mU=_("@swarm.ing/pieui:context:lazyError",()=>vI.createContext(void 0)),e=mU;var II=require("react"),hI=require("react/jsx-runtime"),bU=2,pU=400;class S extends II.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(I){if(this.props.onError?.(I),this.state.attempt<bU){let U=pU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((z)=>({failed:!1,attempt:z.attempt+1}))},U)}}componentDidUpdate(I){if(I.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return hI.jsx(II.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var UI=require("react/jsx-runtime");function vU({uiConfig:I,setUiAjaxConfiguration:U}){let z=o.useContext(E),T=o.useContext(e),B=g();if(B)console.log("[UI] Rendering component:",I.card),console.log("[UI] Component data:",I.data),console.log("[UI] Component content:",I.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let Z=a(I.card);if(!Z?.component){if(B)console.warn(`[UI] Component not found in registry: ${I.card}`),console.log("[UI] Returning fallback component");return z}if(B)console.log("[UI] Found component in registry:",{name:Z.name,isLazy:Z.isLazy,hasMetadata:!!Z.metadata});let q=Z.component,G=UI.jsx(q,{data:I.data,content:I.content,setUiAjaxConfiguration:U});if(Z.isLazy){if(B)console.log("[UI] Rendering lazy component with Suspense:",Z.name);return UI.jsx(S,{name:Z.name,fallback:Z.fallback?UI.jsx(Z.fallback,{}):z,onError:T,children:G})}if(B)console.log("[UI] Rendering component directly:",Z.name);return G}var A=o.memo(vU);var JI=require("react");var gI=require("react");var hU=_("@swarm.ing/pieui:context:uiRenderer",()=>gI.createContext(null)),L=hU;var u=require("react/jsx-runtime");function cI({uiConfig:I,setUiAjaxConfiguration:U}){let z=JI.useContext(E),T=JI.useContext(e),B=g();if(B)console.log("[UILoading] Rendering fallback for:",I.card),console.log("[UILoading] Component data:",I.data),console.log("[UILoading] Component content:",I.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let Z=a(I.card);if(!Z?.component){if(B)console.warn(`[UILoading] Component not found in registry: ${I.card}`),console.log("[UILoading] Returning fallback component");return z}if(B)console.log("[UILoading] Found component in registry:",{name:Z.name,isLazy:Z.isLazy,hasMetadata:!!Z.metadata,hasFallback:!!Z.fallback});if(Z.fallback){if(B)console.log("[UILoading] Rendering fallback for:",Z.name);let H=Z.fallback;return u.jsx(H,{})}if(B)console.log("[UILoading] No fallback, rendering full component:",Z.name);let q=Z.component,G=u.jsx(L.Provider,{value:cI,children:u.jsx(q,{data:I.data,content:I.content,setUiAjaxConfiguration:U})});if(Z.isLazy)return u.jsx(S,{name:Z.name,fallback:z,onError:T,children:G});return G}var oI=cI;var uI=require("react");var TI=require("react/jsx-runtime"),gU=({data:I,content:U,setUiAjaxConfiguration:z})=>{let{name:T,sx:B}=I,Z=uI.useContext(L)??A;return TI.jsx(W,{card:T,data:I,children:TI.jsx("div",{style:B,id:T,children:U.map((q,G)=>{return TI.jsx(Z,{uiConfig:q,setUiAjaxConfiguration:z},`children-${G}`)})})})},lI=gU;var dI=D({name:"SequenceCard",component:lI,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var iI=require("react");var OI=require("react/jsx-runtime"),cU=({data:I,content:U,setUiAjaxConfiguration:z})=>{let{name:T}=I,B=iI.useContext(L)??A;return OI.jsx(W,{card:T,data:I,children:U.map((Z,q)=>{return OI.jsx(B,{uiConfig:Z,setUiAjaxConfiguration:z},`children-${q}`)})})},rI=cU;var sI=D({name:"UnionCard",component:rI,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var zI=require("react"),nI=MI(require("html-react-parser"));var M=require("react");function oU(){let I=new AudioContext,U=I.createOscillator(),z=U.connect(I.createMediaStreamDestination());U.start();let T=z.stream.getAudioTracks()[0];return T.enabled=!1,T}function QI(I=null,U){let[z,T]=M.useState(!1),B=M.useRef(null),Z=M.useRef(null),q=M.useRef(null),G=M.useCallback(async(J,F=!0)=>{if(B.current)H();let Y=new RTCPeerConnection;if(Y.onconnectionstatechange=()=>{if(Y.connectionState==="connected")T(!0);else if(["disconnected","failed","closed"].includes(Y.connectionState))T(!1)},Y.ontrack=($)=>{if(I)I.srcObject=$.streams[0]},F){let $=await navigator.mediaDevices.getUserMedia({audio:!0});Y.addTrack($.getTracks()[0],$)}else{let $=oU();Y.addTrack($)}let O=Y.createDataChannel("oai-events");Z.current=O,q.current=new Promise(($)=>{O.addEventListener("open",()=>{$()})});let V=await Y.createOffer();await Y.setLocalDescription(V);let C=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:V.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await Y.setRemoteDescription({type:"answer",sdp:C}),B.current=Y,await q.current},[I]),H=M.useCallback(()=>{let J=Z.current;if(J)J.close();B.current?.getSenders()?.forEach((F)=>F.track?.stop()),B.current?.close(),T(!1),B.current=null,Z.current=null,q.current=null},[I]),Q=M.useCallback((J)=>{let F=Z.current;if(!F){console.error("Data channel is not ready",J);return}let Y=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),F.send(JSON.stringify(J)),!J.timestamp)J.timestamp=Y;U?.(J)},[U,I]),X=M.useCallback((J)=>{if(!Z.current){console.error("Data channel is not ready");return}let Y=()=>{Q({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),Q({type:"response.create"})};if(q.current)q.current.then(Y);else Y()},[U,I]);return M.useEffect(()=>{let J=Z.current;if(!J)return;let F=(Y)=>{let O=JSON.parse(Y.data);if(!O.timestamp)O.timestamp=new Date().toLocaleTimeString();U?.(O)};return J.addEventListener("message",F),()=>{J.removeEventListener("message",F)}},[U,I]),{isSessionActive:z,startSession:G,stopSession:H,sendTextMessage:X}}var tI=require("react/jsx-runtime"),uU=({data:I})=>{let{html:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:B,centrifugeChannel:Z}=I,[q,G]=zI.useState(U),{isSessionActive:H,startSession:Q,sendTextMessage:X}=QI(null,(O)=>{if(console.log(O.type,O.type==="response.output_text.delta"&&O.delta),O.type==="response.output_text.delta"&&O.delta)G((V)=>V+O.delta)});return zI.useEffect(()=>{G(U)},[U]),tI.jsx(W,{card:"HTMLEmbedCard",data:I,methods:{update:(O)=>{G(O.value)},generateUsingAI:async(O)=>{try{if(!H&&O.token)await Q(O.token,!1);X(O.prompt)}catch(V){console.error("Failed to generate using AI",V)}},initializeAI:async(O)=>{if(!H&&O.token)await Q(O.token,!1)}},useCentrifugeSupport:T,useSocketioSupport:z,useMittSupport:B,centrifugeChannel:Z,children:nI.default(q)})},aI=uU;var eI=D({name:"HTMLEmbedCard",component:aI,metadata:{author:"Swarm.ing"}});var ZI=require("react");var XI=require("react/jsx-runtime"),lU=({data:I})=>{let{name:U,value:z,useSocketioSupport:T,useCentrifugeSupport:B,useMittSupport:Z,centrifugeChannel:q}=I,[G,H]=ZI.useState(z);return ZI.useEffect(()=>{H(z)},[z]),XI.jsx(W,{card:"HiddenCard",data:I,useSocketioSupport:T,useCentrifugeSupport:B,useMittSupport:Z,centrifugeChannel:q,methods:{update:({value:Q})=>{H(Q)}},children:XI.jsx("input",{type:"hidden",id:U,name:U,value:G})})},IU=lU;var UU=D({name:"HiddenCard",component:IU,metadata:{author:"Swarm.ing"}});var l=require("react");var TU=require("react");var dU=_("@swarm.ing/pieui:context:navigate",()=>TU.createContext(void 0)),m=dU;var BI=require("react/jsx-runtime"),iU=({data:I})=>{let{url:U}=I,z=l.useContext(m),T=l.useContext(E);return l.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else z?.(U)},[U,z]),BI.jsx(BI.Fragment,{children:T})},zU=iU;var ZU=D({name:"AutoRedirectCard",component:zU,metadata:{author:"Swarm.ing"}});var k=require("react-toastify"),$I=require("react-toastify");var p=require("react");var b=require("react/jsx-runtime"),rU={bounce:k.Bounce,slide:k.Slide,zoom:k.Zoom,flip:k.Flip},sU=(I)=>{let U={...I,type:I.alertType,transition:I.transition?rU[I.transition]:void 0,position:I.position??"bottom-right",autoClose:I.autoClose??3000,style:{backgroundColor:"black",...I.sx}};$I.toast(I.message,U)},nU=(I)=>{console.log("Log event",I)},aU=(I)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(I.title,{body:I.message??I.subtitle,icon:I.icon,silent:I.silent})}catch(T){console.error("[IOEventsCard] Failed to show notification",T)}},z=window.Notification.permission;if(z==="granted"){U();return}if(z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((T)=>{if(T==="granted")U()})},tU=({data:I})=>{let{useCentrifugeSupport:U,useSocketioSupport:z,useMittSupport:T,centrifugeChannel:B}=I,Z=p.useContext(m),q=p.useRef(Z);q.current=Z;let G=p.useMemo(()=>({alert:sU,log:nU,push:aU,redirect:(H)=>{if(H.to){let Q=H.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Q))window.location.href=Q;else q.current?.(Q)}else window.location.reload()},reload:(H)=>{if(H.to){let Q=H.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Q))window.location.href=Q;else q.current?.(Q)}else window.location.reload()}}),[]);return b.jsx(b.Fragment,{children:b.jsx(W,{card:"IOEventsCard",data:I,useCentrifugeSupport:U,useSocketioSupport:z,useMittSupport:T,centrifugeChannel:B,methods:G,children:b.jsx($I.ToastContainer,{})})})},BU=tU;var $U=D({name:"IOEventsCard",component:BU,metadata:{author:"Swarm.ing"}});var d=require("react");var YI=require("react/jsx-runtime"),eU=({data:I})=>{let{name:U,key:z,value:T,useSocketioSupport:B,useCentrifugeSupport:Z,useMittSupport:q,centrifugeChannel:G}=I,[H,Q]=d.useState(T);return d.useEffect(()=>{Q(T)},[T]),d.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(z,H)},[z,H]),YI.jsx(W,{card:"SessionStorageCard",data:I,useSocketioSupport:B,useCentrifugeSupport:Z,useMittSupport:q,centrifugeChannel:G,methods:{update:({value:X})=>{Q(X)},remove:()=>{sessionStorage.removeItem(z),Q("")}},children:YI.jsx("input",{type:"hidden",id:U,name:U,value:H})})},qU=eU;var HU=D({name:"SessionStorageCard",component:qU,metadata:{author:"PieData"}});var i=require("react");var PI=require("react/jsx-runtime"),IT=({data:I})=>{let{name:U,key:z,value:T,useSocketioSupport:B,useCentrifugeSupport:Z,useMittSupport:q,centrifugeChannel:G}=I,[H,Q]=i.useState(T);return i.useEffect(()=>{Q(T)},[T]),i.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(z,H)},[z,H]),PI.jsx(W,{card:"DeviceStorageCard",data:I,useSocketioSupport:B,useCentrifugeSupport:Z,useMittSupport:q,centrifugeChannel:G,methods:{update:({value:X})=>{Q(X)},remove:()=>{localStorage.removeItem(z),Q("")}},children:PI.jsx("input",{type:"hidden",id:U,name:U,value:H})})},GU=IT;var JU=D({name:"DeviceStorageCard",component:GU,metadata:{author:"PieData"}});var w=require("react");var WI=require("react/jsx-runtime"),UT=({data:I,content:U})=>{let{useLoader:z,noReturn:T,returnType:B,useSocketioSupport:Z,useCentrifugeSupport:q,useMittSupport:G,centrifugeChannel:H}=I,Q=w.useContext(E),X=w.useContext(L)??A,[J,F]=w.useState(!1),[Y,O]=w.useState(null),V=w.useRef(U),R=w.useContext(n),j=w.useCallback(($)=>{if($===null)F(!0);else if(F(!1),!T)V.current=$;if(!T)O($)},[T]),N=w.useCallback(($)=>{V.current=$.content,O($.content)},[]),C=w.useCallback(($)=>{if($===null)F(!0);else if(F(!1),!T)for(let P of $)R?.emit(P.name,P.data)},[T,R]);if(w.useEffect(()=>{O(U),F(!1)},[U]),!Y&&z)return Q;return WI.jsx(W,{card:"AjaxGroupCard",data:I,methods:{changeContent:N},useSocketioSupport:Z,useCentrifugeSupport:q,useMittSupport:G,centrifugeChannel:H,children:WI.jsx(X,{uiConfig:Y??V.current,setUiAjaxConfiguration:B==="events"?C:j})})},OU=UT;var QU=D({name:"AjaxGroupCard",component:OU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var DI=require("react");var qI=require("react/jsx-runtime"),TT=({data:I,content:U,setUiAjaxConfiguration:z})=>{let{name:T,url:B,sx:Z}=I,q=DI.useContext(m),G=DI.useContext(L)??A;return qI.jsx(W,{card:T,data:I,children:qI.jsx("div",{style:Z,id:T,onClick:(Q)=>{if(B)if(Q.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(B))window.location.href=B;else q?.(B)},children:qI.jsx(G,{setUiAjaxConfiguration:z,uiConfig:U})})})},XU=TT;var YU=D({name:"BoxCard",component:XU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var PU=require("react");var HI=require("react/jsx-runtime"),zT=({data:I,content:U,setUiAjaxConfiguration:z})=>{let{name:T,sx:B}=I,Z=PU.useContext(L)??A;return HI.jsx(W,{card:T,data:I,children:HI.jsx("div",{style:B,id:T,children:U.map((q,G)=>{return HI.jsx(Z,{uiConfig:q,setUiAjaxConfiguration:z},`children-${G}`)})})})},WU=zT;var DU=D({name:"OneOfCard",component:WU,metadata:{author:"Swarm.ing",description:"Different variants"}});
package/dist/index.d.ts CHANGED
@@ -11,8 +11,10 @@ export { registerPieComponent, getAllRegisteredComponents, getRegistrySize, regi
11
11
  export { trackLazy } from './util/lazy';
12
12
  export type { PieComponentProps, PieSimpleComponentProps, PieComplexComponentProps, PieContainerComponentProps, PieComplexContainerComponentProps, InputPieSimpleComponentProps, InputPieComplexComponentProps, InputPieContainerComponentProps, InputPieComplexContainerComponentProps, PieConfig, PieLinkSource, UIConfigType, SetUiAjaxConfigurationType, } from './types';
13
13
  export type { PieQueryOptions } from './components/PieRoot/types';
14
+ export { buildContentUrl, consumeConfigPrefetch } from './util/contentRequest';
15
+ export type { PieConfigPrefetch, PieRootKind, ContentUrlParams, } from './util/contentRequest';
14
16
  export { useAjaxSubmit, useAjaxSubmits, discoverAjaxEndpoints, readAjaxKey, readAjaxKeyAsync, parseDepName, } from './util/ajaxCommonUtils';
15
- export type { RetryPolicy, DepSource, AjaxEndpointConfig } from './util/ajaxCommonUtils';
17
+ export type { RetryPolicy, DepSource, AjaxEndpointConfig, AjaxSubmitFn, GetAjaxSubmitOptions, } from './util/ajaxCommonUtils';
16
18
  export { usePieEmit } from './util/mitt';
17
19
  export { default as MittContext, getEmitter } from './util/mitt';
18
20
  export { default as SocketIOContext } from './util/socket';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACH,OAAO,IAAI,iBAAiB,EAC5B,KAAK,eAAe,GACvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAMtE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EACH,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,GACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EACR,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,sCAAsC,EACtC,SAAS,EACT,aAAa,EACb,YAAY,EACZ,0BAA0B,GAC7B,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EACH,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,YAAY,GACf,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EACH,gBAAgB,EAChB,aAAa,EACb,iBAAiB,GACpB,MAAM,kBAAkB,CAAA;AAMzB,OAAO,EAAE,EAAE,EAAE,MAAM,4BAA4B,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACH,OAAO,IAAI,iBAAiB,EAC5B,KAAK,eAAe,GACvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAMtE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EACH,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,GACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EACR,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,sCAAsC,EACtC,SAAS,EACT,aAAa,EACb,YAAY,EACZ,0BAA0B,GAC7B,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAKjE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC9E,YAAY,EACR,iBAAiB,EACjB,WAAW,EACX,gBAAgB,GACnB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACH,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,YAAY,GACf,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EACR,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,GACvB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EACH,gBAAgB,EAChB,aAAa,EACb,iBAAiB,GACpB,MAAM,kBAAkB,CAAA;AAMzB,OAAO,EAAE,EAAE,EAAE,MAAM,4BAA4B,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA"}
package/dist/index.esm.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{useContext as IZ,useEffect as GZ,useRef as MZ}from"react";import{createContext as gU,useContext as pU}from"react";var KZ=globalThis,M=(Z,U)=>{let $=Symbol.for(Z);if(!($ in KZ))KZ[$]=U();return KZ[$]};var o=M("@swarm.ing/pieui:context:pieConfig",()=>gU(null)),p=()=>{let Z=pU(o);if(!Z)throw Error("usePieConfig must be used within PieConfigProvider");return Z},r=()=>{let{apiServer:Z}=p();return Z},HZ=r,zZ=()=>{let{centrifugeServer:Z}=p();return Z};var m=()=>{let{enableRenderingLog:Z}=p();return Z},vZ=m;var a=()=>{let{onLinkLost:Z}=p();return Z},n=()=>{let{onLinkRestored:Z}=p();return Z},OZ="__piedemo__";import{createContext as dU}from"react";import{Centrifuge as hZ}from"centrifuge";var gZ=M("@swarm.ing/pieui:centrifuge-cache",()=>new Map),JZ=(Z,U)=>{if(!U)return null;let $=`${Z}::${U}`,H=gZ.get($);if(H)return H;async function z(){let T=await fetch(Z+"api/centrifuge/gen_token",{credentials:"include"});if(!T.ok){if(T.status===401||T.status===403)throw new hZ.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${T.status}`)}return(await T.json()).token}let J=new hZ(U,{getToken:z});return gZ.set($,J),J},uU=M("@swarm.ing/pieui:context:centrifuge",()=>dU(null)),v=uU;import{io as cU}from"socket.io-client";import{createContext as lU}from"react";var pZ=M("@swarm.ing/pieui:socket-cache",()=>new Map),TZ=(Z)=>{let U=pZ.get(Z);if(U)return U;let $=cU(Z,{autoConnect:!1,transports:["websocket"]});return pZ.set(Z,$),$},oU=M("@swarm.ing/pieui:context:socket",()=>lU(null)),h=oU;import iU from"mitt";import{createContext as sU,useCallback as rU,useContext as aU}from"react";function d(){return M("@swarm.ing/pieui:mitt-emitter",()=>iU())}var dZ=M("@swarm.ing/pieui:context:mitt",()=>sU(null));function nU(Z){let U=aU(dZ);return rU(($,H)=>{(U??d()).emit(`pie${$}_${Z}`,H)},[Z,U])}var g=dZ;function uZ(Z){return Z.wasRecovering===!0&&Z.recovered===!1}function cZ(Z){return Z.recoverable===!1}function lZ(Z,U,$){let H=Z.getSubscription(U);if(H)return{subscription:H,createdHere:!1};return{subscription:Z.newSubscription(U,$),createdHere:!0}}var tU=(Z)=>{let U=document.cookie?document.cookie.split(";"):[];for(let $ of U){let H=$.indexOf("=");if((H===-1?$:$.slice(0,H)).trim()===Z){let J=H===-1?"":$.slice(H+1).trim();try{return decodeURIComponent(J)}catch{return J}}}return null},eU={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(Z){if(typeof window<"u")window.sid=Z},readWebStorage(Z,U){return(Z==="local"?window.localStorage:window.sessionStorage).getItem(U)},readCookie:tU,readUrlParams(Z){return new URLSearchParams(window.location.search).getAll(Z)},readDomInput(Z){let U=document.getElementsByName(Z);if(!U.length)return null;let $=U[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let Z=document.getElementById("piedata_global_form");Z&&Z.submit()}},oZ=eU;var Z$={};function c(){return Z$}var iZ=new Map;var sZ=(Z)=>{return iZ.has(Z)?iZ.get(Z):null};var rZ,U$={isClient(){return!0},readSid(){return rZ},setSid(Z){rZ=Z},readWebStorage(Z,U){let $=c(),H=Z==="local"?$.storage:$.sessionStorage;return H?H.getItem(U):null},async readWebStorageAsync(Z,U){let $=c(),H=Z==="local"?$.asyncStorage:$.asyncSessionStorage;if(H)return H.getItem(U);let z=Z==="local"?$.storage:$.sessionStorage;return z?z.getItem(U):null},readCookie(Z){let U=c();return U.getCookie?U.getCookie(Z):null},readUrlParams(Z){let U=c();return U.getRouteParams?U.getRouteParams(Z):[]},readDomInput(Z){let U=c();return U.getInput?U.getInput(Z):sZ(Z)},submitGlobalForm(){c().submitForm?.()}},aZ=U$;var $$=typeof navigator<"u"&&navigator.product==="ReactNative",H$=$$?aZ:oZ,N=H$;var t=M("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function nZ(){t.resolve?.()}function FZ(){if(!N.isClient())return Promise.resolve();if(N.readSid()!==void 0)return Promise.resolve();if(!t.promise)t.promise=new Promise((Z)=>{t.resolve=()=>{Z()}});return t.promise}import{useMemo as tZ}from"react";var z$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],J$=new Set(["telegram:cloud","telegram:secure"]),e=new Map,eZ=(Z,U)=>{e.set(Z,U)},ZU=(Z)=>{e.delete(Z)},UU=(Z="piedata_global_form")=>{let U;if(typeof Z==="string"){if(typeof document>"u")return;U=document.getElementById(Z)}else U=Z;if(!U)return;let $=U.ownerDocument;for(let H of Array.from(U.getElementsByTagName("input")))if(H.getAttribute("data-pie-stored")!==null)H.remove();for(let[H,z]of e){let J=z();if(J instanceof Promise)continue;for(let T of J){if(typeof T!=="string")continue;let G=$.createElement("input");G.type="hidden",G.name=H,G.value=T,G.setAttribute("data-pie-stored","1"),U.appendChild(G)}}},XZ=(Z)=>{if(Z==="sid")return{source:"sid",key:"sid"};for(let U of z$){let $=U+":";if(Z.startsWith($))return{source:U,key:Z.slice($.length)}}return{source:"dom",key:Z}},$U=(Z,U=!1)=>{let{source:$,key:H}=XZ(Z);if($==="sid"){let T=N.readSid();if(!T)throw Error("SocketIO isn't initialized properly");return[T]}if($==="localStorage"||$==="sessionStorage")try{let T=N.readWebStorage($==="localStorage"?"local":"session",H);if(T===null){if(U)console.warn(`No ${$} value found for key ${H}`);return[]}return[T]}catch(T){if(U)console.warn(`Failed to read ${$} key ${H}:`,T);return[]}if($==="cookie"){let T=N.readCookie(H);if(T===null){if(U)console.warn(`No cookie found for key ${H}`);return[]}return[T]}if($==="url"){let T=N.readUrlParams(H);if(!T.length&&U)console.warn(`No URL query param found for key ${H}`);return T}if(J$.has($)){if(U)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let z=e.get(H);if(z){let T=z();if(T instanceof Promise){if(U)console.warn(`stored resolver for ${H} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}return T}let J=N.readDomInput(H);if(J===null){if(U)console.warn(`No input found with name ${H}`);return[]}return J},T$=(Z,U,$)=>{let H=window.Telegram?.WebApp,z=Z==="telegram:cloud"?H?.CloudStorage:H?.SecureStorage,J=Z==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!z){if($)console.warn(`${J} is not available`);return Promise.resolve([])}return new Promise((T)=>{try{z.getItem(U,(G,X)=>{if(G){if($)console.warn(`Failed to read ${J} key ${U}:`,G);T([]);return}if(X==null||X===""){if($)console.warn(`No ${J} value found for key ${U}`);T([]);return}T([X])})}catch(G){if($)console.warn(`Failed to read ${J} key ${U}:`,G);T([])}})},HU=async(Z,U=!1)=>{let{source:$,key:H}=XZ(Z);if($==="telegram:cloud"||$==="telegram:secure")return T$($,H,U);if(($==="localStorage"||$==="sessionStorage")&&N.readWebStorageAsync)try{let z=await N.readWebStorageAsync($==="localStorage"?"local":"session",H);if(z===null){if(U)console.warn(`No ${$} value found for key ${H}`);return[]}return[z]}catch(z){if(U)console.warn(`Failed to read ${$} key ${H}:`,z);return[]}if($==="dom"){let z=e.get(H);if(z)return z()}return $U(Z,U)},zU=(Z,U={},$=[],H,z)=>{let J=z?.renderingLogEnabled??!1,T=z?.timeout,G=z?.retryPolicy,X=G?.maxRetries??0,Y=G?.baseDelay??1000,Q=G?.retryOn??[502,503,504];if(J)console.log("Registering AJAX: ",H,U,$);return async(q={})=>{if(!N.isClient()){if(J)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=z?.apiServer;if(!V){if(J)console.warn("AJAX skipped: apiServer is missing");return}if(!H||!Z){if(J)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await FZ();let B=new FormData;for(let[O,P]of Object.entries({...U,...q}))B.append(O,P);for(let O of $){let{key:P}=XZ(O);for(let w of await HU(O,J))B.append(P,w)}let W=V+"api/ajax_content"+H;Z(null);let D;for(let O=0;O<=X;O++){if(O>0){let K=Y*2**(O-1);if(J)console.log(`AJAX retry ${O}/${X} after ${K}ms`);await new Promise((_)=>setTimeout(_,K))}let P=T!=null?new AbortController:null,w=P&&setTimeout(()=>P.abort(),T);try{let K=await fetch(W,{method:"POST",body:B,signal:P?.signal});if(w)clearTimeout(w);if(!K.ok&&Q.includes(K.status)&&O<X){D=Error(`HTTP ${K.status}`);continue}let F=(K.headers.get("content-type")||"").includes("application/json");if(!!K.body?.getReader&&!F){let x=K.body.getReader(),$Z=new TextDecoder,k="";while(!0){let{done:S,value:mU}=await x.read();if(S)break;k+=$Z.decode(mU,{stream:!0});let mZ=k.split(`
3
- `);k=mZ.pop()??"";for(let vU of mZ){let DZ=vU.trim();if(!DZ)continue;try{let hU=JSON.parse(DZ);Z([hU])}catch{if(J)console.warn("Failed to parse streamed line:",DZ)}}}if(k.trim())try{let S=JSON.parse(k);Z([S])}catch{if(J)console.warn("Failed to parse final streamed line:",k)}return{}}else{let x=await K.json();return Z(x),x}}catch(K){if(w)clearTimeout(w);if(D=K,O<X)continue;if(J)console.error("AJAX request failed:",K);return Z(null),K}}if(J)console.error("AJAX request failed after retries:",D);return Z(null),D}},X$=(Z,U={},$=[],H,z)=>{let{apiServer:J,enableRenderingLog:T}=p(),G=JSON.stringify(U),X=JSON.stringify($),Y=JSON.stringify(z);return tZ(()=>zU(Z,U,$,H,{apiServer:J,renderingLogEnabled:T,timeout:z?.timeout,retryPolicy:z?.retryPolicy}),[Z,G,X,H,J,T,Y])},JU=(Z={})=>{let U=[];for(let $ of Object.keys(Z??{})){let H=null;if($==="pathname")H="default";else if($.endsWith("Pathname"))H=$.slice(0,-8);if(H===null)continue;let z=H==="default"?"":H;U.push({key:H,pathname:Z[$],depsNames:Z[z?`${z}DepsNames`:"depsNames"]??[],kwargs:Z[z?`${z}Kwargs`:"kwargs"]??{}})}return U},G$=(Z={},U,$)=>{let{apiServer:H,enableRenderingLog:z}=p(),J=JSON.stringify(Z??{}),T=JSON.stringify($);return tZ(()=>{let G={};for(let X of JU(Z??{}))G[X.key]=zU(U,X.kwargs,X.depsNames,X.pathname,{apiServer:H,renderingLogEnabled:z,timeout:$?.timeout,retryPolicy:$?.retryPolicy});return G},[J,U,H,z,T])};import{jsx as B$,jsxs as W$,Fragment as q$}from"react/jsx-runtime";var Y$=({card:Z,data:U,children:$,useSocketioSupport:H=!1,useCentrifugeSupport:z=!1,useMittSupport:J=!1,centrifugeChannel:T=void 0,methods:G=void 0,stored:X=void 0,onResync:Y=void 0})=>{let Q=vZ(),q=MZ(G);q.current=G;let V=MZ(Y);V.current=Y;let B=MZ(X);B.current=X;let W=typeof X==="function";if(GZ(()=>{if(!W)return;let w=U.name;return eZ(w,()=>[JSON.stringify(B.current())]),()=>ZU(w)},[W,U.name]),Q)console.log("[PieCard] Rendering card:",Z),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:H,centrifuge:z,mitt:J,centrifugeChannel:T}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!$);let D=IZ(h),O=IZ(v),P=IZ(g);if(GZ(()=>{if(!D||!H||!q.current||!U.name){if(Q&&H)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!D,useSocketioSupport:H,hasMethods:!!q.current,hasDataName:!!U?.name});return}let K=Object.keys(q.current??{}).map((_)=>{let F=`pie${_}_${U.name}`;if(Q)console.log(`[PieCard] Socket.IO registering event: ${F}`);let j=(x)=>{q.current?.[_]?.(x)};return D.on(F,j),[F,j]});return()=>{K.forEach(([_,F])=>{if(Q)console.log(`[PieCard] Socket.IO unregistering event: ${_}`);D.off(_,F)})}},[D,U.name,H]),GZ(()=>{if(!O||!z||!T||!U.name){if(Q&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:z,hasCentrifugeChannel:!!T,hasMethods:!!q.current,hasDataName:!!U?.name});return}let K=Object.keys(q.current??{}).map((_)=>{let F=`pie${_}_${U.name}_${T}`;if(Q)console.log(`[PieCard] Centrifuge subscribing to channel: ${F}`);let{subscription:j,createdHere:x}=lZ(O,F,{recoverable:!0,positioned:!0}),$Z=(S)=>{if(Q)console.log(`[PieCard] Centrifuge received data on ${F}:`,S.data);q.current?.[_]?.(S.data)},k=(S)=>{if(cZ(S))console.warn(`[PieCard] Centrifuge channel ${F} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(uZ(S)){if(Q)console.log(`[PieCard] Centrifuge recovery gap on ${F}; requesting resync`);V.current?.({channel:F,reason:"gap"})}};return j.on("publication",$Z),j.on("subscribed",k),j.subscribe(),{subscription:j,createdHere:x,onPublication:$Z,onSubscribed:k}});return()=>{K.forEach(({subscription:_,createdHere:F,onPublication:j,onSubscribed:x})=>{if(Q)console.log("[PieCard] Centrifuge unsubscribing from channel");if(_.off("publication",j),_.off("subscribed",x),F)_.unsubscribe(),O.removeSubscription(_)})}},[O,T,U.name,z]),GZ(()=>{if(!P||!J||!U.name){if(Q&&J)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!P,useMittSupport:J,hasMethods:!!q.current,hasDataName:!!U?.name});return}let w=Object.keys(q.current??{}),K={};return w.forEach((_)=>{let F=`pie${_}_${U.name}`,j=(x)=>{if(Q)console.log(`[PieCard] Mitt registering event: ${F}`);q.current?.[_]?.(x)};K[F]=j,P.on(F,j)}),()=>{Object.entries(K).forEach(([_,F])=>{if(Q)console.log(`[PieCard] Mitt unregistering event: ${_}`);P.off(_,F)})}},[P,U.name,J]),Q)console.log("[PieCard] Rendering complete, returning children");if(X!==void 0&&!W)return W$(q$,{children:[B$("input",{type:"hidden",name:U.name,value:JSON.stringify(X)}),$]});return $},A=Y$;import{lazy as Q$}from"react";var l=new Map;function TU(Z,U){return U.catch(()=>{if(l.get(Z)===U)l.delete(Z)}),l.set(Z,U),U}function PZ(Z,U){return Q$(()=>{if(l.has(U))return l.get(U);return TU(U,Z().then(($)=>$))})}var XU=async(Z,U)=>{if(!U)return;if(l.has(Z))return l.get(Z);return TU(Z,U().then(($)=>$))};var f=M("@swarm.ing/pieui:component-registry",()=>new Map),_$=(Z)=>{if(!Z.name)throw Error("Component registration requires a name");if(!Z.component&&!Z.loader)throw Error(`Component "${Z.name}" requires component or loader`);let U={name:Z.name,component:Z.component,loader:Z.loader,metadata:Z.metadata,fallback:Z.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=PZ(U.loader,Z.name),U.isLazy=!0;return U};function I(Z){let U=_$(Z);return f.set(U.name,U),U.component}var V$=(Z)=>{Z.forEach((U)=>I(U))},D$=(Z)=>{f.delete(Z)},K$=(Z)=>{return f.has(Z)},O$=(Z)=>{return f.get(Z)?.metadata},ZZ=(Z)=>{return f.get(Z)},F$=()=>{return Array.from(f.keys())},I$=()=>{return f.size},YU=()=>Array.from(f.values()).filter((Z)=>Z.isLazy&&typeof Z.loader==="function").map((Z)=>Z.name),qU=(Z)=>{let U=f.get(Z);if(!U?.isLazy||typeof U.loader!=="function")return;return XU(Z,U.loader)},GU=!1,M$=()=>{if(GU||typeof window>"u")return;GU=!0;let Z=navigator.connection;if(Z?.saveData)return;if(Z?.effectiveType&&["slow-2g","2g"].includes(Z.effectiveType))return;let U=YU(),$="requestIdleCallback"in window?(z)=>window.requestIdleCallback(z,{timeout:2000}):(z)=>window.setTimeout(z,300),H=(z)=>{if(z>=U.length)return;$(()=>{Promise.resolve().then(()=>qU(U[z])).catch(()=>{}).finally(()=>H(z+1))})};H(0)};import{useContext as BU,memo as f$}from"react";import{createContext as P$}from"react";import{jsx as N$,Fragment as w$}from"react/jsx-runtime";var A$=M("@swarm.ing/pieui:context:fallback",()=>P$(N$(w$,{}))),E=A$;import{createContext as L$}from"react";var R$=M("@swarm.ing/pieui:context:lazyError",()=>L$(void 0)),u=R$;import{Component as j$,Suspense as E$}from"react";import{jsx as x$}from"react/jsx-runtime";var C$=2,y$=400;class i extends j${state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(Z){if(this.props.onError?.(Z),this.state.attempt<C$){let U=y$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},U)}}componentDidUpdate(Z){if(Z.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return x$(E$,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as AZ}from"react/jsx-runtime";function b$({uiConfig:Z,setUiAjaxConfiguration:U}){let $=BU(E),H=BU(u),z=m();if(z)console.log("[UI] Rendering component:",Z.card),console.log("[UI] Component data:",Z.data),console.log("[UI] Component content:",Z.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let J=ZZ(Z.card);if(!J?.component){if(z)console.warn(`[UI] Component not found in registry: ${Z.card}`),console.log("[UI] Returning fallback component");return $}if(z)console.log("[UI] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata});let T=J.component,G=AZ(T,{data:Z.data,content:Z.content,setUiAjaxConfiguration:U});if(J.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",J.name);return AZ(i,{name:J.name,fallback:J.fallback?AZ(J.fallback,{}):$,onError:H,children:G})}if(z)console.log("[UI] Rendering component directly:",J.name);return G}var R=f$(b$);import{useContext as WU}from"react";import{createContext as k$}from"react";var S$=M("@swarm.ing/pieui:context:uiRenderer",()=>k$(null)),C=S$;import{jsx as YZ}from"react/jsx-runtime";function QU({uiConfig:Z,setUiAjaxConfiguration:U}){let $=WU(E),H=WU(u),z=m();if(z)console.log("[UILoading] Rendering fallback for:",Z.card),console.log("[UILoading] Component data:",Z.data),console.log("[UILoading] Component content:",Z.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let J=ZZ(Z.card);if(!J?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${Z.card}`),console.log("[UILoading] Returning fallback component");return $}if(z)console.log("[UILoading] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata,hasFallback:!!J.fallback});if(J.fallback){if(z)console.log("[UILoading] Rendering fallback for:",J.name);let X=J.fallback;return YZ(X,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",J.name);let T=J.component,G=YZ(C.Provider,{value:QU,children:YZ(T,{data:Z.data,content:Z.content,setUiAjaxConfiguration:U})});if(J.isLazy)return YZ(i,{name:J.name,fallback:$,onError:H,children:G});return G}var wZ=QU;import{useContext as m$}from"react";import{jsx as NZ}from"react/jsx-runtime";var v$=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,sx:z}=Z,J=m$(C)??R;return NZ(A,{card:H,data:Z,children:NZ("div",{style:z,id:H,children:U.map((T,G)=>{return NZ(J,{uiConfig:T,setUiAjaxConfiguration:$},`children-${G}`)})})})},_U=v$;var h$=I({name:"SequenceCard",component:_U,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as g$}from"react";import{jsx as VU}from"react/jsx-runtime";var p$=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H}=Z,z=g$(C)??R;return VU(A,{card:H,data:Z,children:U.map((J,T)=>{return VU(z,{uiConfig:J,setUiAjaxConfiguration:$},`children-${T}`)})})},DU=p$;var d$=I({name:"UnionCard",component:DU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as o$,useState as i$}from"react";import s$ from"html-react-parser";import{useCallback as qZ,useEffect as u$,useRef as LZ,useState as c$}from"react";function l$(){let Z=new AudioContext,U=Z.createOscillator(),$=U.connect(Z.createMediaStreamDestination());U.start();let H=$.stream.getAudioTracks()[0];return H.enabled=!1,H}function RZ(Z=null,U){let[$,H]=c$(!1),z=LZ(null),J=LZ(null),T=LZ(null),G=qZ(async(q,V=!0)=>{if(z.current)X();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")H(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))H(!1)},B.ontrack=(_)=>{if(Z)Z.srcObject=_.streams[0]},V){let _=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(_.getTracks()[0],_)}else{let _=l$();B.addTrack(_)}let W=B.createDataChannel("oai-events");J.current=W,T.current=new Promise((_)=>{W.addEventListener("open",()=>{_()})});let D=await B.createOffer();await B.setLocalDescription(D);let K=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:D.sdp,headers:{Authorization:`Bearer ${q}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:K}),z.current=B,await T.current},[Z]),X=qZ(()=>{let q=J.current;if(q)q.close();z.current?.getSenders()?.forEach((V)=>V.track?.stop()),z.current?.close(),H(!1),z.current=null,J.current=null,T.current=null},[Z]),Y=qZ((q)=>{let V=J.current;if(!V){console.error("Data channel is not ready",q);return}let B=new Date().toLocaleTimeString();if(q.event_id=q.event_id||crypto.randomUUID(),V.send(JSON.stringify(q)),!q.timestamp)q.timestamp=B;U?.(q)},[U,Z]),Q=qZ((q)=>{if(!J.current){console.error("Data channel is not ready");return}let B=()=>{Y({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:q}]}}),Y({type:"response.create"})};if(T.current)T.current.then(B);else B()},[U,Z]);return u$(()=>{let q=J.current;if(!q)return;let V=(B)=>{let W=JSON.parse(B.data);if(!W.timestamp)W.timestamp=new Date().toLocaleTimeString();U?.(W)};return q.addEventListener("message",V),()=>{q.removeEventListener("message",V)}},[U,Z]),{isSessionActive:$,startSession:G,stopSession:X,sendTextMessage:Q}}import{jsx as a$}from"react/jsx-runtime";var r$=({data:Z})=>{let{html:U,useSocketioSupport:$,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:J}=Z,[T,G]=i$(U),{isSessionActive:X,startSession:Y,sendTextMessage:Q}=RZ(null,(W)=>{if(console.log(W.type,W.type==="response.output_text.delta"&&W.delta),W.type==="response.output_text.delta"&&W.delta)G((D)=>D+W.delta)});return o$(()=>{G(U)},[U]),a$(A,{card:"HTMLEmbedCard",data:Z,methods:{update:(W)=>{G(W.value)},generateUsingAI:async(W)=>{try{if(!X&&W.token)await Y(W.token,!1);Q(W.prompt)}catch(D){console.error("Failed to generate using AI",D)}},initializeAI:async(W)=>{if(!X&&W.token)await Y(W.token,!1)}},useCentrifugeSupport:H,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:J,children:s$(T)})},KU=r$;var n$=I({name:"HTMLEmbedCard",component:KU,metadata:{author:"Swarm.ing"}});import{useEffect as t$,useState as e$}from"react";import{jsx as OU}from"react/jsx-runtime";var ZH=({data:Z})=>{let{name:U,value:$,useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:T}=Z,[G,X]=e$($);return t$(()=>{X($)},[$]),OU(A,{card:"HiddenCard",data:Z,useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:T,methods:{update:({value:Y})=>{X(Y)}},children:OU("input",{type:"hidden",id:U,name:U,value:G})})},FU=ZH;var UH=I({name:"HiddenCard",component:FU,metadata:{author:"Swarm.ing"}});import{useContext as IU,useEffect as zH}from"react";import{createContext as $H}from"react";var HH=M("@swarm.ing/pieui:context:navigate",()=>$H(void 0)),b=HH;import{jsx as XH,Fragment as TH}from"react/jsx-runtime";var JH=({data:Z})=>{let{url:U}=Z,$=IU(b),H=IU(E);return zH(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else $?.(U)},[U,$]),XH(TH,{children:H})},MU=JH;var GH=I({name:"AutoRedirectCard",component:MU,metadata:{author:"Swarm.ing"}});import{Bounce as YH,Slide as qH,Zoom as BH,Flip as WH}from"react-toastify";import{toast as QH,ToastContainer as _H}from"react-toastify";import{useContext as VH,useMemo as DH,useRef as KH}from"react";import{jsx as jZ,Fragment as AH}from"react/jsx-runtime";var OH={bounce:YH,slide:qH,zoom:BH,flip:WH},FH=(Z)=>{let U={...Z,type:Z.alertType,transition:Z.transition?OH[Z.transition]:void 0,position:Z.position??"bottom-right",autoClose:Z.autoClose??3000,style:{backgroundColor:"black",...Z.sx}};QH(Z.message,U)},IH=(Z)=>{console.log("Log event",Z)},MH=(Z)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(Z.title,{body:Z.message??Z.subtitle,icon:Z.icon,silent:Z.silent})}catch(H){console.error("[IOEventsCard] Failed to show notification",H)}},$=window.Notification.permission;if($==="granted"){U();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((H)=>{if(H==="granted")U()})},PH=({data:Z})=>{let{useCentrifugeSupport:U,useSocketioSupport:$,useMittSupport:H,centrifugeChannel:z}=Z,J=VH(b),T=KH(J);T.current=J;let G=DH(()=>({alert:FH,log:IH,push:MH,redirect:(X)=>{if(X.to){let Y=X.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else T.current?.(Y)}else window.location.reload()},reload:(X)=>{if(X.to){let Y=X.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else T.current?.(Y)}else window.location.reload()}}),[]);return jZ(AH,{children:jZ(A,{card:"IOEventsCard",data:Z,useCentrifugeSupport:U,useSocketioSupport:$,useMittSupport:H,centrifugeChannel:z,methods:G,children:jZ(_H,{})})})},PU=PH;var wH=I({name:"IOEventsCard",component:PU,metadata:{author:"Swarm.ing"}});import{useEffect as AU,useState as NH}from"react";import{jsx as wU}from"react/jsx-runtime";var LH=({data:Z})=>{let{name:U,key:$,value:H,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:G}=Z,[X,Y]=NH(H);return AU(()=>{Y(H)},[H]),AU(()=>{if(typeof window>"u")return;sessionStorage.setItem($,X)},[$,X]),wU(A,{card:"SessionStorageCard",data:Z,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:G,methods:{update:({value:Q})=>{Y(Q)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:wU("input",{type:"hidden",id:U,name:U,value:X})})},NU=LH;var RH=I({name:"SessionStorageCard",component:NU,metadata:{author:"PieData"}});import{useEffect as LU,useState as jH}from"react";import{jsx as RU}from"react/jsx-runtime";var EH=({data:Z})=>{let{name:U,key:$,value:H,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:G}=Z,[X,Y]=jH(H);return LU(()=>{Y(H)},[H]),LU(()=>{if(typeof window>"u")return;localStorage.setItem($,X)},[$,X]),RU(A,{card:"DeviceStorageCard",data:Z,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:G,methods:{update:({value:Q})=>{Y(Q)},remove:()=>{localStorage.removeItem($),Y("")}},children:RU("input",{type:"hidden",id:U,name:U,value:X})})},jU=EH;var CH=I({name:"DeviceStorageCard",component:jU,metadata:{author:"PieData"}});import{useCallback as EZ,useContext as CZ,useEffect as yH,useRef as xH,useState as EU}from"react";import{jsx as CU}from"react/jsx-runtime";var fH=({data:Z,content:U})=>{let{useLoader:$,noReturn:H,returnType:z,useSocketioSupport:J,useCentrifugeSupport:T,useMittSupport:G,centrifugeChannel:X}=Z,Y=CZ(E),Q=CZ(C)??R,[q,V]=EU(!1),[B,W]=EU(null),D=xH(U),O=CZ(g),P=EZ((_)=>{if(_===null)V(!0);else if(V(!1),!H)D.current=_;if(!H)W(_)},[H]),w=EZ((_)=>{D.current=_.content,W(_.content)},[]),K=EZ((_)=>{if(_===null)V(!0);else if(V(!1),!H)for(let F of _)O?.emit(F.name,F.data)},[H,O]);if(yH(()=>{W(U),V(!1)},[U]),!B&&$)return Y;return CU(A,{card:"AjaxGroupCard",data:Z,methods:{changeContent:w},useSocketioSupport:J,useCentrifugeSupport:T,useMittSupport:G,centrifugeChannel:X,children:CU(Q,{uiConfig:B??D.current,setUiAjaxConfiguration:z==="events"?K:P})})},yU=fH;var bH=I({name:"AjaxGroupCard",component:yU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as xU}from"react";import{jsx as yZ}from"react/jsx-runtime";var kH=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,url:z,sx:J}=Z,T=xU(b),G=xU(C)??R;return yZ(A,{card:H,data:Z,children:yZ("div",{style:J,id:H,onClick:(Y)=>{if(z)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else T?.(z)},children:yZ(G,{setUiAjaxConfiguration:$,uiConfig:U})})})},fU=kH;var SH=I({name:"BoxCard",component:fU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as mH}from"react";import{jsx as xZ}from"react/jsx-runtime";var vH=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,sx:z}=Z,J=mH(C)??R;return xZ(A,{card:H,data:Z,children:xZ("div",{style:z,id:H,children:U.map((T,G)=>{return xZ(J,{uiConfig:T,setUiAjaxConfiguration:$},`children-${G}`)})})})},bU=vH;var hH=I({name:"OneOfCard",component:bU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as UZ}from"react";import{QueryClient as rH,QueryClientProvider as aH,useQuery as nH}from"@tanstack/react-query";import{useContext as dH,useEffect as uH,useRef as fZ}from"react";import{useEffect as gH,useState as pH}from"react";var BZ=new Map,WZ=new Map;function QZ(Z,U){let $=`${Z}::${U}`,H=Z?BZ.get($):void 0,[z,J]=pH(H??null);return gH(()=>{if(!Z)return;if(BZ.has($)){J(BZ.get($));return}let T=WZ.get($);if(!T)T=fetch(Z+`api/support/${U}`,{method:"GET"}).then((X)=>X.json()).then((X)=>{return BZ.set($,X),WZ.delete($),X}).catch((X)=>{throw WZ.delete($),X}),WZ.set($,T);let G=!1;return T.then((X)=>{if(!G)J(X)}).catch(()=>{}),()=>{G=!0}},[Z,U,$]),z}function s(Z,U){if(U==="up")return{state:"up",signal:Z==="down"?"restored":null};return{state:"down",signal:Z==="up"?"lost":null}}var cH=({children:Z})=>{let U=dH(h),$=HZ(),H=QZ($,"socketIO"),z=a(),J=n(),T=fZ(z);T.current=z;let G=fZ(J);G.current=J;let X=fZ("initial"),Y=(Q)=>{if(N.isClient())N.setSid(Q.sid),nZ(),console.log(`SocketIO initialized: ${N.readSid()}`)};return uH(()=>{if(!U||!H)return;let Q=()=>{let{state:V,signal:B}=s(X.current,"up");if(X.current=V,B==="restored")G.current?.("socketio");console.log("SocketIO connected")},q=(V)=>{if(console.log(`SocketIO disconnected: ${V}`),U.connect(),V==="io client disconnect")return;let{state:B,signal:W}=s(X.current,"down");if(X.current=B,W==="lost")T.current?.("socketio",V)};return U.on("pieinit",Y),U.on("connect",Q),U.on("disconnect",q),U.connect(),()=>{U.off("pieinit",Y),U.off("connect",Q),U.off("disconnect",q),U.disconnect()}},[U,H]),Z},_Z=cH;import{useContext as lH,useEffect as oH,useRef as bZ}from"react";var iH=({children:Z})=>{let U=lH(v),$=HZ(),H=QZ($,"centrifuge"),z=a(),J=n(),T=bZ(z);T.current=z;let G=bZ(J);G.current=J;let X=bZ("initial");return oH(()=>{if(!U||!H)return;let Y=(V)=>{let{state:B,signal:W}=s(X.current,"down");if(X.current=B,W==="lost")T.current?.("centrifuge",V)},Q=()=>{let{state:V,signal:B}=s(X.current,"up");if(X.current=V,B==="restored")G.current?.("centrifuge");console.log("Centrifuge connected")},q=(V)=>{console.log("Centrifuge disconnected:",V),Y(V)};return U.on("connecting",Y),U.on("connected",Q),U.on("disconnected",q),U.connect(),()=>{U.off("connecting",Y),U.off("connected",Q),U.off("disconnected",q),U.disconnect()}},[U,H]),Z},VZ=iH;import{createAxiosDateTransformer as tH}from"axios-date-transformer";import{jsx as sH}from"react/jsx-runtime";function kU(Z,U,$){if(!U)return $;let H=Z.replace(/^\//,""),z=U[H];if(!z)return $;return sH(wZ,{uiConfig:z})}import{jsx as L,Fragment as Uz}from"react/jsx-runtime";var eH=({location:Z,fallback:U,piecache:$,onError:H,queryOptions:z,disableGlobalForm:J})=>{let T=r(),G=zZ(),X=m(),Y=UZ(()=>tH({baseURL:T||""}),[T]),Q=UZ(()=>d(),[]),q=UZ(()=>T?TZ(T):null,[T]),V=UZ(()=>T?JZ(T,G):null,[T,G]),{data:B,isLoading:W,error:D}=nH({queryKey:["uiConfig",Z.pathname+Z.search,T],enabled:!!T,queryFn:async()=>{let P=new URLSearchParams(Z.search);P.set("__pieroot","web");let w="/api/content"+Z.pathname+"?"+P.toString();if(X)console.log("[PieRoot] Fetching UI configuration from:",w);let K=await Y.get(w,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(X)console.log("[PieRoot] Received UI configuration:",K.data);return K.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(P)=>Math.min(1000*2**P,30000),...z}),O=kU(Z.pathname,$,U);if(!T)return O??null;if(X)console.log("[PieRoot] Rendering with location:",Z),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!$);if(D){if(X)console.error("[PieRoot] Error fetching UI configuration:",D),console.error("[PieRoot] Error details:",{message:D.message,status:D.response?.status,data:D.response?.data});return H?.(D),O}if(W||!B){if(X)console.log("[PieRoot] Loading state:",{isLoading:W,hasUiConfiguration:!!B});return O}if(X)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L(g.Provider,{value:Q,children:L(h.Provider,{value:q,children:L(v.Provider,{value:V,children:L(E.Provider,{value:U??L(Uz,{}),children:L(_Z,{children:L(VZ,{children:J?L(R,{uiConfig:B}):L("form",{id:"piedata_global_form",action:T+"api/process"+Z.pathname,method:"post",encType:"multipart/form-data",children:L(R,{uiConfig:B})})})})})})})})},Zz=(Z)=>{let U=UZ(()=>new rH,[]),$=Z.queryClient??U;return L(b.Provider,{value:Z.onNavigate,children:L(o.Provider,{value:Z.config,children:L(u.Provider,{value:Z.onError,children:L(aH,{client:$,children:L(eH,{...Z})})})})})},kZ=Zz;import{useMemo as SZ,useState as $z}from"react";import{QueryClient as Hz,QueryClientProvider as zz}from"@tanstack/react-query";import{jsx as y,Fragment as Xz}from"react/jsx-runtime";var Jz=({location:Z,fallback:U,children:$,disableGlobalForm:H})=>{let z=r(),J=zZ(),T=m(),G=SZ(()=>d(),[]),X=SZ(()=>z?TZ(z):null,[z]),Y=SZ(()=>z?JZ(z,J):null,[z,J]);if(T)console.log("[PieRoot] Rendering with location:",Z),console.log("[PieRoot] API_SERVER:",z),console.log("[PieRoot] CENTRIFUGE_SERVER:",J),console.log("[PieRoot] Fallback provided:",!!U);return y(g.Provider,{value:G,children:y(h.Provider,{value:X,children:y(v.Provider,{value:Y,children:y(E.Provider,{value:U??y(Xz,{}),children:y(_Z,{children:y(VZ,{children:H?$:y("form",{id:"piedata_global_form",action:z+"api/process"+Z.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},Tz=(Z)=>{let[U]=$z(()=>new Hz),$=Z.queryClient??U;return y(b.Provider,{value:Z.onNavigate,children:y(o.Provider,{value:Z.config,children:y(u.Provider,{value:Z.onError,children:y(zz,{client:$,children:y(Jz,{...Z})})})})})},Gz=Tz;import{useEffect as Yz,useMemo as qz}from"react";import{jsx as SU}from"react/jsx-runtime";var Bz=SU("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),Wz=({apiServer:Z,pathname:U="/",search:$="",centrifugeServer:H,previewEvents:z=!1,fallback:J,enableRenderingLog:T=!1})=>{let G=Z??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"";Yz(()=>{if(!z||!G||typeof window>"u"||typeof EventSource>"u")return;let Q=G.endsWith("/")?G:`${G}/`,q=new EventSource(`${Q}api/preview/events`),V=d();return q.onmessage=(B)=>{try{let W=JSON.parse(B.data);if(W&&typeof W.name==="string")V.emit(W.name,W.payload)}catch{}},()=>q.close()},[z,G]);let X=qz(()=>({apiServer:G,centrifugeServer:H,enableRenderingLog:T,pageProcessor:"web"}),[G,H,T]);return SU(kZ,{location:{pathname:U,search:$},config:X,fallback:J??Bz,onNavigate:(Q)=>{if(typeof window<"u")window.history.pushState(null,"",Q)}})},Qz=Wz;import{clsx as _z}from"clsx";import{twMerge as Vz}from"tailwind-merge";function Dz(...Z){return Vz(_z(Z))}var Kz=()=>{UU(),N.submitGlobalForm()};var Oz=(Z,U)=>`${Z}${OZ}${U}`;export{nU as usePieEmit,n as useOnLinkRestored,a as useOnLinkLost,G$ as useAjaxSubmits,X$ as useAjaxSubmit,D$ as unregisterComponent,PZ as trackLazy,Kz as submitGlobalForm,f as registry,I as registerPieComponent,V$ as registerMultipleComponents,HU as readAjaxKeyAsync,$U as readAjaxKey,qU as preloadComponent,M$ as prefetchLazyComponents,Oz as pieName,XZ as parseDepName,K$ as hasComponent,I$ as getRegistrySize,ZZ as getRegistryEntry,YU as getLazyComponentNames,d as getEmitter,O$ as getComponentMeta,F$ as getAllRegisteredComponents,JU as discoverAjaxEndpoints,Dz as cn,d$ as UnionCard,C as UIRendererContext,wZ as UILoading,R as UI,h as SocketIOContext,RH as SessionStorageCard,h$ as SequenceCard,kZ as PieRoot,Qz as PiePreviewRoot,o as PieConfigContext,A as PieCard,Gz as PieBaseRoot,OZ as PIEBREAK,hH as OneOfCard,g as MittContext,wH as IOEventsCard,UH as HiddenCard,n$ as HTMLEmbedCard,E as FallbackContext,CH as DeviceStorageCard,v as CentrifugeIOContext,SH as BoxCard,GH as AutoRedirectCard,bH as AjaxGroupCard};
2
+ import{useContext as MZ,useEffect as GZ,useRef as PZ}from"react";import{createContext as u$,useContext as c$}from"react";var FZ=globalThis,I=(Z,$)=>{let U=Symbol.for(Z);if(!(U in FZ))FZ[U]=$();return FZ[U]};var o=I("@swarm.ing/pieui:context:pieConfig",()=>u$(null)),g=()=>{let Z=c$(o);if(!Z)throw Error("usePieConfig must be used within PieConfigProvider");return Z},r=()=>{let{apiServer:Z}=g();return Z},zZ=r,HZ=()=>{let{centrifugeServer:Z}=g();return Z};var f=()=>{let{enableRenderingLog:Z}=g();return Z},pZ=f;var a=()=>{let{onLinkLost:Z}=g();return Z},n=()=>{let{onLinkRestored:Z}=g();return Z},OZ="__piedemo__";import{createContext as l$}from"react";import{Centrifuge as dZ}from"centrifuge";var uZ=I("@swarm.ing/pieui:centrifuge-cache",()=>new Map),JZ=(Z,$)=>{if(!$)return null;let U=`${Z}::${$}`,z=uZ.get(U);if(z)return z;async function H(){let T=await fetch(Z+"api/centrifuge/gen_token",{credentials:"include"});if(!T.ok){if(T.status===401||T.status===403)throw new dZ.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${T.status}`)}return(await T.json()).token}let J=new dZ($,{getToken:H});return uZ.set(U,J),J},o$=I("@swarm.ing/pieui:context:centrifuge",()=>l$(null)),S=o$;import{io as s$}from"socket.io-client";import{createContext as i$}from"react";var cZ=I("@swarm.ing/pieui:socket-cache",()=>new Map),TZ=(Z)=>{let $=cZ.get(Z);if($)return $;let U=s$(Z,{autoConnect:!1,transports:["websocket"]});return cZ.set(Z,U),U},r$=I("@swarm.ing/pieui:context:socket",()=>i$(null)),m=r$;import a$ from"mitt";import{createContext as n$,useCallback as t$,useContext as e$}from"react";function p(){return I("@swarm.ing/pieui:mitt-emitter",()=>a$())}var lZ=I("@swarm.ing/pieui:context:mitt",()=>n$(null));function ZU(Z){let $=e$(lZ);return t$((U,z)=>{($??p()).emit(`pie${U}_${Z}`,z)},[Z,$])}var v=lZ;function oZ(Z){return Z.wasRecovering===!0&&Z.recovered===!1}function sZ(Z){return Z.recoverable===!1}function iZ(Z,$,U){let z=Z.getSubscription($);if(z)return{subscription:z,createdHere:!1};return{subscription:Z.newSubscription($,U),createdHere:!0}}var $U=(Z)=>{let $=document.cookie?document.cookie.split(";"):[];for(let U of $){let z=U.indexOf("=");if((z===-1?U:U.slice(0,z)).trim()===Z){let J=z===-1?"":U.slice(z+1).trim();try{return decodeURIComponent(J)}catch{return J}}}return null},UU={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(Z){if(typeof window<"u")window.sid=Z},readWebStorage(Z,$){return(Z==="local"?window.localStorage:window.sessionStorage).getItem($)},readCookie:$U,readUrlParams(Z){return new URLSearchParams(window.location.search).getAll(Z)},readDomInput(Z){let $=document.getElementsByName(Z);if(!$.length)return null;let U=$[0];if(U instanceof HTMLInputElement){if(U.type==="file"&&U.files)return Array.from(U.files);return[U.value]}if(U instanceof HTMLTextAreaElement)return[U.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let Z=document.getElementById("piedata_global_form");Z&&Z.submit()}},rZ=UU;var zU={};function c(){return zU}var aZ=new Map;var nZ=(Z)=>{return aZ.has(Z)?aZ.get(Z):null};var tZ,HU={isClient(){return!0},readSid(){return tZ},setSid(Z){tZ=Z},readWebStorage(Z,$){let U=c(),z=Z==="local"?U.storage:U.sessionStorage;return z?z.getItem($):null},async readWebStorageAsync(Z,$){let U=c(),z=Z==="local"?U.asyncStorage:U.asyncSessionStorage;if(z)return z.getItem($);let H=Z==="local"?U.storage:U.sessionStorage;return H?H.getItem($):null},readCookie(Z){let $=c();return $.getCookie?$.getCookie(Z):null},readUrlParams(Z){let $=c();return $.getRouteParams?$.getRouteParams(Z):[]},readDomInput(Z){let $=c();return $.getInput?$.getInput(Z):nZ(Z)},submitGlobalForm(){c().submitForm?.()}},eZ=HU;var JU=typeof navigator<"u"&&navigator.product==="ReactNative",TU=JU?eZ:rZ,N=TU;var t=I("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function Z$(){t.resolve?.()}function IZ(){if(!N.isClient())return Promise.resolve();if(N.readSid()!==void 0)return Promise.resolve();if(!t.promise)t.promise=new Promise((Z)=>{t.resolve=()=>{Z()}});return t.promise}import{useMemo as $$}from"react";var XU=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],GU=new Set(["telegram:cloud","telegram:secure"]),e=new Map,U$=(Z,$)=>{e.set(Z,$)},z$=(Z)=>{e.delete(Z)},H$=(Z="piedata_global_form")=>{let $;if(typeof Z==="string"){if(typeof document>"u")return;$=document.getElementById(Z)}else $=Z;if(!$)return;let U=$.ownerDocument;for(let z of Array.from($.getElementsByTagName("input")))if(z.getAttribute("data-pie-stored")!==null)z.remove();for(let[z,H]of e){let J=H();if(J instanceof Promise)continue;for(let T of J){if(typeof T!=="string")continue;let X=U.createElement("input");X.type="hidden",X.name=z,X.value=T,X.setAttribute("data-pie-stored","1"),$.appendChild(X)}}},XZ=(Z)=>{if(Z==="sid")return{source:"sid",key:"sid"};for(let $ of XU){let U=$+":";if(Z.startsWith(U))return{source:$,key:Z.slice(U.length)}}return{source:"dom",key:Z}},J$=(Z,$=!1)=>{let{source:U,key:z}=XZ(Z);if(U==="sid"){let T=N.readSid();if(!T)throw Error("SocketIO isn't initialized properly");return[T]}if(U==="localStorage"||U==="sessionStorage")try{let T=N.readWebStorage(U==="localStorage"?"local":"session",z);if(T===null){if($)console.warn(`No ${U} value found for key ${z}`);return[]}return[T]}catch(T){if($)console.warn(`Failed to read ${U} key ${z}:`,T);return[]}if(U==="cookie"){let T=N.readCookie(z);if(T===null){if($)console.warn(`No cookie found for key ${z}`);return[]}return[T]}if(U==="url"){let T=N.readUrlParams(z);if(!T.length&&$)console.warn(`No URL query param found for key ${z}`);return T}if(GU.has(U)){if($)console.warn(`Source ${U} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let H=e.get(z);if(H){let T=H();if(T instanceof Promise){if($)console.warn(`stored resolver for ${z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}return T}let J=N.readDomInput(z);if(J===null){if($)console.warn(`No input found with name ${z}`);return[]}return J},YU=(Z,$,U)=>{let z=window.Telegram?.WebApp,H=Z==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,J=Z==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!H){if(U)console.warn(`${J} is not available`);return Promise.resolve([])}return new Promise((T)=>{try{H.getItem($,(X,G)=>{if(X){if(U)console.warn(`Failed to read ${J} key ${$}:`,X);T([]);return}if(G==null||G===""){if(U)console.warn(`No ${J} value found for key ${$}`);T([]);return}T([G])})}catch(X){if(U)console.warn(`Failed to read ${J} key ${$}:`,X);T([])}})},T$=async(Z,$=!1)=>{let{source:U,key:z}=XZ(Z);if(U==="telegram:cloud"||U==="telegram:secure")return YU(U,z,$);if((U==="localStorage"||U==="sessionStorage")&&N.readWebStorageAsync)try{let H=await N.readWebStorageAsync(U==="localStorage"?"local":"session",z);if(H===null){if($)console.warn(`No ${U} value found for key ${z}`);return[]}return[H]}catch(H){if($)console.warn(`Failed to read ${U} key ${z}:`,H);return[]}if(U==="dom"){let H=e.get(z);if(H)return H()}return J$(Z,$)},BU=(Z)=>{if(!Z)return[];if(Array.isArray(Z))return Z.map(([$,U])=>[String($),String(U)]);if(typeof Z.forEach==="function"){let $=[];return Z.forEach((U,z)=>$.push([z,U])),$}return Object.entries(Z)},WU=(Z)=>{let $=Z.filter(Boolean);if($.length===0)return;if($.length===1)return $[0];let U=AbortSignal.any;if(typeof U==="function")return U.call(AbortSignal,$);let z=new AbortController;for(let H of $){if(H.aborted){z.abort(H.reason);break}H.addEventListener("abort",()=>z.abort(H.reason),{once:!0})}return z.signal},QU=(Z,$,U)=>{let z={method:"POST",credentials:"include"},H={},J=[$];for(let X of U){if(!X)continue;let{headers:G,signal:B,body:q,...Q}=X;Object.assign(z,Q);for(let[V,_]of BU(G))H[V.toLowerCase()]=_;J.push(B)}if(z.body=Z,Object.keys(H).length>0)z.headers=H;let T=WU(J);if(T)z.signal=T;return z},X$=(Z,$={},U=[],z,H)=>{let J=H?.renderingLogEnabled??!1,T=H?.timeout,X=H?.retryPolicy,G=X?.maxRetries??0,B=X?.baseDelay??1000,q=X?.retryOn??[502,503,504];if(J)console.log("Registering AJAX: ",z,$,U);return async(Q={},V)=>{if(!N.isClient()){if(J)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let _=H?.apiServer;if(!_){if(J)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!Z){if(J)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(U.includes("sid"))await IZ();let W=new FormData;for(let[K,O]of Object.entries({...$,...Q}))W.append(K,O);for(let K of U){let{key:O}=XZ(K);for(let w of await T$(K,J))W.append(O,w)}let M=_+"api/ajax_content"+z;Z(null);let P;for(let K=0;K<=G;K++){if(K>0){let Y=B*2**(K-1);if(J)console.log(`AJAX retry ${K}/${G} after ${Y}ms`);await new Promise((D)=>setTimeout(D,Y))}let O=T!=null?new AbortController:null,w=O&&setTimeout(()=>O.abort(),T);try{let Y=await fetch(M,QU(W,O?.signal,[H?.fetchOptions,V]));if(w)clearTimeout(w);if(!Y.ok&&q.includes(Y.status)&&K<G){P=Error(`HTTP ${Y.status}`);continue}let R=(Y.headers.get("content-type")||"").includes("application/json");if(!!Y.body?.getReader&&!R){let u=Y.body.getReader(),UZ=new TextDecoder,y="";while(!0){let{done:DZ,value:g$}=await u.read();if(DZ)break;y+=UZ.decode(g$,{stream:!0});let gZ=y.split(`
3
+ `);y=gZ.pop()??"";for(let p$ of gZ){let KZ=p$.trim();if(!KZ)continue;try{let d$=JSON.parse(KZ);Z([d$])}catch{if(J)console.warn("Failed to parse streamed line:",KZ)}}}if(y.trim())try{let DZ=JSON.parse(y);Z([DZ])}catch{if(J)console.warn("Failed to parse final streamed line:",y)}return{}}else{let u=await Y.json();return Z(u),u}}catch(Y){if(w)clearTimeout(w);if(P=Y,K<G)continue;if(J)console.error("AJAX request failed:",Y);return Z(null),Y}}if(J)console.error("AJAX request failed after retries:",P);return Z(null),P}},qU=(Z,$={},U=[],z,H)=>{let{apiServer:J,enableRenderingLog:T}=g(),X=JSON.stringify($),G=JSON.stringify(U),B=JSON.stringify(H);return $$(()=>X$(Z,$,U,z,{apiServer:J,renderingLogEnabled:T,timeout:H?.timeout,retryPolicy:H?.retryPolicy,fetchOptions:H?.fetchOptions}),[Z,X,G,z,J,T,B])},G$=(Z={})=>{let $=[];for(let U of Object.keys(Z??{})){let z=null;if(U==="pathname")z="default";else if(U.endsWith("Pathname"))z=U.slice(0,-8);if(z===null)continue;let H=z==="default"?"":z;$.push({key:z,pathname:Z[U],depsNames:Z[H?`${H}DepsNames`:"depsNames"]??[],kwargs:Z[H?`${H}Kwargs`:"kwargs"]??{}})}return $},_U=(Z={},$,U)=>{let{apiServer:z,enableRenderingLog:H}=g(),J=JSON.stringify(Z??{}),T=JSON.stringify(U);return $$(()=>{let X={};for(let G of G$(Z??{}))X[G.key]=X$($,G.kwargs,G.depsNames,G.pathname,{apiServer:z,renderingLogEnabled:H,timeout:U?.timeout,retryPolicy:U?.retryPolicy,fetchOptions:U?.fetchOptions});return X},[J,$,z,H,T])};import{jsx as KU,jsxs as FU,Fragment as DU}from"react/jsx-runtime";var VU=({card:Z,data:$,children:U,useSocketioSupport:z=!1,useCentrifugeSupport:H=!1,useMittSupport:J=!1,centrifugeChannel:T=void 0,methods:X=void 0,stored:G=void 0,onResync:B=void 0})=>{let q=pZ(),Q=PZ(X);Q.current=X;let V=PZ(B);V.current=B;let _=PZ(G);_.current=G;let W=typeof G==="function";if(GZ(()=>{if(!W)return;let O=$.name;return U$(O,()=>[JSON.stringify(_.current())]),()=>z$(O)},[W,$.name]),q)console.log("[PieCard] Rendering card:",Z),console.log("[PieCard] Card data:",$),console.log("[PieCard] Component name:",$?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:H,mitt:J,centrifugeChannel:T}),console.log("[PieCard] Methods:",X?Object.keys(X):"none"),console.log("[PieCard] Has children:",!!U);let M=MZ(m),P=MZ(S),K=MZ(v);if(GZ(()=>{if(!M||!z||!Q.current||!$.name){if(q&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!M,useSocketioSupport:z,hasMethods:!!Q.current,hasDataName:!!$?.name});return}let w=Object.keys(Q.current??{}).map((Y)=>{let D=`pie${Y}_${$.name}`;if(q)console.log(`[PieCard] Socket.IO registering event: ${D}`);let R=(h)=>{Q.current?.[Y]?.(h)};return M.on(D,R),[D,R]});return()=>{w.forEach(([Y,D])=>{if(q)console.log(`[PieCard] Socket.IO unregistering event: ${Y}`);M.off(Y,D)})}},[M,$.name,z]),GZ(()=>{if(!P||!H||!T||!$.name){if(q&&H)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!P,useCentrifugeSupport:H,hasCentrifugeChannel:!!T,hasMethods:!!Q.current,hasDataName:!!$?.name});return}let w=Object.keys(Q.current??{}).map((Y)=>{let D=`pie${Y}_${$.name}_${T}`;if(q)console.log(`[PieCard] Centrifuge subscribing to channel: ${D}`);let{subscription:R,createdHere:h}=iZ(P,D,{recoverable:!0,positioned:!0}),u=(y)=>{if(q)console.log(`[PieCard] Centrifuge received data on ${D}:`,y.data);Q.current?.[Y]?.(y.data)},UZ=(y)=>{if(sZ(y))console.warn(`[PieCard] Centrifuge channel ${D} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(oZ(y)){if(q)console.log(`[PieCard] Centrifuge recovery gap on ${D}; requesting resync`);V.current?.({channel:D,reason:"gap"})}};return R.on("publication",u),R.on("subscribed",UZ),R.subscribe(),{subscription:R,createdHere:h,onPublication:u,onSubscribed:UZ}});return()=>{w.forEach(({subscription:Y,createdHere:D,onPublication:R,onSubscribed:h})=>{if(q)console.log("[PieCard] Centrifuge unsubscribing from channel");if(Y.off("publication",R),Y.off("subscribed",h),D)Y.unsubscribe(),P.removeSubscription(Y)})}},[P,T,$.name,H]),GZ(()=>{if(!K||!J||!$.name){if(q&&J)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!K,useMittSupport:J,hasMethods:!!Q.current,hasDataName:!!$?.name});return}let O=Object.keys(Q.current??{}),w={};return O.forEach((Y)=>{let D=`pie${Y}_${$.name}`,R=(h)=>{if(q)console.log(`[PieCard] Mitt registering event: ${D}`);Q.current?.[Y]?.(h)};w[D]=R,K.on(D,R)}),()=>{Object.entries(w).forEach(([Y,D])=>{if(q)console.log(`[PieCard] Mitt unregistering event: ${Y}`);K.off(Y,D)})}},[K,$.name,J]),q)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0&&!W)return FU(DU,{children:[KU("input",{type:"hidden",name:$.name,value:JSON.stringify(G)}),U]});return U},A=VU;import{lazy as OU}from"react";var l=new Map;function Y$(Z,$){return $.catch(()=>{if(l.get(Z)===$)l.delete(Z)}),l.set(Z,$),$}function AZ(Z,$){return OU(()=>{if(l.has($))return l.get($);return Y$($,Z().then((U)=>U))})}var B$=async(Z,$)=>{if(!$)return;if(l.has(Z))return l.get(Z);return Y$(Z,$().then((U)=>U))};var b=I("@swarm.ing/pieui:component-registry",()=>new Map),IU=(Z)=>{if(!Z.name)throw Error("Component registration requires a name");if(!Z.component&&!Z.loader)throw Error(`Component "${Z.name}" requires component or loader`);let $={name:Z.name,component:Z.component,loader:Z.loader,metadata:Z.metadata,fallback:Z.fallback,isLazy:!1};if(!$.component&&$.loader)$.component=AZ($.loader,Z.name),$.isLazy=!0;return $};function F(Z){let $=IU(Z);return b.set($.name,$),$.component}var MU=(Z)=>{Z.forEach(($)=>F($))},PU=(Z)=>{b.delete(Z)},AU=(Z)=>{return b.has(Z)},wU=(Z)=>{return b.get(Z)?.metadata},ZZ=(Z)=>{return b.get(Z)},NU=()=>{return Array.from(b.keys())},LU=()=>{return b.size},Q$=()=>Array.from(b.values()).filter((Z)=>Z.isLazy&&typeof Z.loader==="function").map((Z)=>Z.name),q$=(Z)=>{let $=b.get(Z);if(!$?.isLazy||typeof $.loader!=="function")return;return B$(Z,$.loader)},W$=!1,RU=()=>{if(W$||typeof window>"u")return;W$=!0;let Z=navigator.connection;if(Z?.saveData)return;if(Z?.effectiveType&&["slow-2g","2g"].includes(Z.effectiveType))return;let $=Q$(),U="requestIdleCallback"in window?(H)=>window.requestIdleCallback(H,{timeout:2000}):(H)=>window.setTimeout(H,300),z=(H)=>{if(H>=$.length)return;U(()=>{Promise.resolve().then(()=>q$($[H])).catch(()=>{}).finally(()=>z(H+1))})};z(0)};import{useContext as _$,memo as hU}from"react";import{createContext as jU}from"react";import{jsx as xU,Fragment as CU}from"react/jsx-runtime";var EU=I("@swarm.ing/pieui:context:fallback",()=>jU(xU(CU,{}))),E=EU;import{createContext as yU}from"react";var bU=I("@swarm.ing/pieui:context:lazyError",()=>yU(void 0)),d=bU;import{Component as kU,Suspense as fU}from"react";import{jsx as vU}from"react/jsx-runtime";var SU=2,mU=400;class s extends kU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(Z){if(this.props.onError?.(Z),this.state.attempt<SU){let $=mU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((U)=>({failed:!1,attempt:U.attempt+1}))},$)}}componentDidUpdate(Z){if(Z.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return vU(fU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as wZ}from"react/jsx-runtime";function gU({uiConfig:Z,setUiAjaxConfiguration:$}){let U=_$(E),z=_$(d),H=f();if(H)console.log("[UI] Rendering component:",Z.card),console.log("[UI] Component data:",Z.data),console.log("[UI] Component content:",Z.content),console.log("[UI] Has setUiAjaxConfiguration:",!!$);let J=ZZ(Z.card);if(!J?.component){if(H)console.warn(`[UI] Component not found in registry: ${Z.card}`),console.log("[UI] Returning fallback component");return U}if(H)console.log("[UI] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata});let T=J.component,X=wZ(T,{data:Z.data,content:Z.content,setUiAjaxConfiguration:$});if(J.isLazy){if(H)console.log("[UI] Rendering lazy component with Suspense:",J.name);return wZ(s,{name:J.name,fallback:J.fallback?wZ(J.fallback,{}):U,onError:z,children:X})}if(H)console.log("[UI] Rendering component directly:",J.name);return X}var j=hU(gU);import{useContext as V$}from"react";import{createContext as pU}from"react";var dU=I("@swarm.ing/pieui:context:uiRenderer",()=>pU(null)),C=dU;import{jsx as YZ}from"react/jsx-runtime";function D$({uiConfig:Z,setUiAjaxConfiguration:$}){let U=V$(E),z=V$(d),H=f();if(H)console.log("[UILoading] Rendering fallback for:",Z.card),console.log("[UILoading] Component data:",Z.data),console.log("[UILoading] Component content:",Z.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!$);let J=ZZ(Z.card);if(!J?.component){if(H)console.warn(`[UILoading] Component not found in registry: ${Z.card}`),console.log("[UILoading] Returning fallback component");return U}if(H)console.log("[UILoading] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata,hasFallback:!!J.fallback});if(J.fallback){if(H)console.log("[UILoading] Rendering fallback for:",J.name);let G=J.fallback;return YZ(G,{})}if(H)console.log("[UILoading] No fallback, rendering full component:",J.name);let T=J.component,X=YZ(C.Provider,{value:D$,children:YZ(T,{data:Z.data,content:Z.content,setUiAjaxConfiguration:$})});if(J.isLazy)return YZ(s,{name:J.name,fallback:U,onError:z,children:X});return X}var NZ=D$;import{useContext as uU}from"react";import{jsx as LZ}from"react/jsx-runtime";var cU=({data:Z,content:$,setUiAjaxConfiguration:U})=>{let{name:z,sx:H}=Z,J=uU(C)??j;return LZ(A,{card:z,data:Z,children:LZ("div",{style:H,id:z,children:$.map((T,X)=>{return LZ(J,{uiConfig:T,setUiAjaxConfiguration:U},`children-${X}`)})})})},K$=cU;var lU=F({name:"SequenceCard",component:K$,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as oU}from"react";import{jsx as F$}from"react/jsx-runtime";var sU=({data:Z,content:$,setUiAjaxConfiguration:U})=>{let{name:z}=Z,H=oU(C)??j;return F$(A,{card:z,data:Z,children:$.map((J,T)=>{return F$(H,{uiConfig:J,setUiAjaxConfiguration:U},`children-${T}`)})})},O$=sU;var iU=F({name:"UnionCard",component:O$,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as tU,useState as eU}from"react";import Zz from"html-react-parser";import{useCallback as BZ,useEffect as rU,useRef as RZ,useState as aU}from"react";function nU(){let Z=new AudioContext,$=Z.createOscillator(),U=$.connect(Z.createMediaStreamDestination());$.start();let z=U.stream.getAudioTracks()[0];return z.enabled=!1,z}function jZ(Z=null,$){let[U,z]=aU(!1),H=RZ(null),J=RZ(null),T=RZ(null),X=BZ(async(Q,V=!0)=>{if(H.current)G();let _=new RTCPeerConnection;if(_.onconnectionstatechange=()=>{if(_.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(_.connectionState))z(!1)},_.ontrack=(Y)=>{if(Z)Z.srcObject=Y.streams[0]},V){let Y=await navigator.mediaDevices.getUserMedia({audio:!0});_.addTrack(Y.getTracks()[0],Y)}else{let Y=nU();_.addTrack(Y)}let W=_.createDataChannel("oai-events");J.current=W,T.current=new Promise((Y)=>{W.addEventListener("open",()=>{Y()})});let M=await _.createOffer();await _.setLocalDescription(M);let w=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:M.sdp,headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/sdp"}})).text();await _.setRemoteDescription({type:"answer",sdp:w}),H.current=_,await T.current},[Z]),G=BZ(()=>{let Q=J.current;if(Q)Q.close();H.current?.getSenders()?.forEach((V)=>V.track?.stop()),H.current?.close(),z(!1),H.current=null,J.current=null,T.current=null},[Z]),B=BZ((Q)=>{let V=J.current;if(!V){console.error("Data channel is not ready",Q);return}let _=new Date().toLocaleTimeString();if(Q.event_id=Q.event_id||crypto.randomUUID(),V.send(JSON.stringify(Q)),!Q.timestamp)Q.timestamp=_;$?.(Q)},[$,Z]),q=BZ((Q)=>{if(!J.current){console.error("Data channel is not ready");return}let _=()=>{B({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Q}]}}),B({type:"response.create"})};if(T.current)T.current.then(_);else _()},[$,Z]);return rU(()=>{let Q=J.current;if(!Q)return;let V=(_)=>{let W=JSON.parse(_.data);if(!W.timestamp)W.timestamp=new Date().toLocaleTimeString();$?.(W)};return Q.addEventListener("message",V),()=>{Q.removeEventListener("message",V)}},[$,Z]),{isSessionActive:U,startSession:X,stopSession:G,sendTextMessage:q}}import{jsx as Uz}from"react/jsx-runtime";var $z=({data:Z})=>{let{html:$,useSocketioSupport:U,useCentrifugeSupport:z,useMittSupport:H,centrifugeChannel:J}=Z,[T,X]=eU($),{isSessionActive:G,startSession:B,sendTextMessage:q}=jZ(null,(W)=>{if(console.log(W.type,W.type==="response.output_text.delta"&&W.delta),W.type==="response.output_text.delta"&&W.delta)X((M)=>M+W.delta)});return tU(()=>{X($)},[$]),Uz(A,{card:"HTMLEmbedCard",data:Z,methods:{update:(W)=>{X(W.value)},generateUsingAI:async(W)=>{try{if(!G&&W.token)await B(W.token,!1);q(W.prompt)}catch(M){console.error("Failed to generate using AI",M)}},initializeAI:async(W)=>{if(!G&&W.token)await B(W.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:U,useMittSupport:H,centrifugeChannel:J,children:Zz(T)})},I$=$z;var zz=F({name:"HTMLEmbedCard",component:I$,metadata:{author:"Swarm.ing"}});import{useEffect as Hz,useState as Jz}from"react";import{jsx as M$}from"react/jsx-runtime";var Tz=({data:Z})=>{let{name:$,value:U,useSocketioSupport:z,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:T}=Z,[X,G]=Jz(U);return Hz(()=>{G(U)},[U]),M$(A,{card:"HiddenCard",data:Z,useSocketioSupport:z,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:T,methods:{update:({value:B})=>{G(B)}},children:M$("input",{type:"hidden",id:$,name:$,value:X})})},P$=Tz;var Xz=F({name:"HiddenCard",component:P$,metadata:{author:"Swarm.ing"}});import{useContext as A$,useEffect as Bz}from"react";import{createContext as Gz}from"react";var Yz=I("@swarm.ing/pieui:context:navigate",()=>Gz(void 0)),k=Yz;import{jsx as qz,Fragment as Qz}from"react/jsx-runtime";var Wz=({data:Z})=>{let{url:$}=Z,U=A$(k),z=A$(E);return Bz(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($))window.location.href=$;else U?.($)},[$,U]),qz(Qz,{children:z})},w$=Wz;var _z=F({name:"AutoRedirectCard",component:w$,metadata:{author:"Swarm.ing"}});import{Bounce as Vz,Slide as Dz,Zoom as Kz,Flip as Fz}from"react-toastify";import{toast as Oz,ToastContainer as Iz}from"react-toastify";import{useContext as Mz,useMemo as Pz,useRef as Az}from"react";import{jsx as EZ,Fragment as Ez}from"react/jsx-runtime";var wz={bounce:Vz,slide:Dz,zoom:Kz,flip:Fz},Nz=(Z)=>{let $={...Z,type:Z.alertType,transition:Z.transition?wz[Z.transition]:void 0,position:Z.position??"bottom-right",autoClose:Z.autoClose??3000,style:{backgroundColor:"black",...Z.sx}};Oz(Z.message,$)},Lz=(Z)=>{console.log("Log event",Z)},Rz=(Z)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let $=()=>{try{new window.Notification(Z.title,{body:Z.message??Z.subtitle,icon:Z.icon,silent:Z.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},U=window.Notification.permission;if(U==="granted"){$();return}if(U==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")$()})},jz=({data:Z})=>{let{useCentrifugeSupport:$,useSocketioSupport:U,useMittSupport:z,centrifugeChannel:H}=Z,J=Mz(k),T=Az(J);T.current=J;let X=Pz(()=>({alert:Nz,log:Lz,push:Rz,redirect:(G)=>{if(G.to){let B=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(B))window.location.href=B;else T.current?.(B)}else window.location.reload()},reload:(G)=>{if(G.to){let B=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(B))window.location.href=B;else T.current?.(B)}else window.location.reload()}}),[]);return EZ(Ez,{children:EZ(A,{card:"IOEventsCard",data:Z,useCentrifugeSupport:$,useSocketioSupport:U,useMittSupport:z,centrifugeChannel:H,methods:X,children:EZ(Iz,{})})})},N$=jz;var Cz=F({name:"IOEventsCard",component:N$,metadata:{author:"Swarm.ing"}});import{useEffect as L$,useState as xz}from"react";import{jsx as R$}from"react/jsx-runtime";var yz=({data:Z})=>{let{name:$,key:U,value:z,useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:X}=Z,[G,B]=xz(z);return L$(()=>{B(z)},[z]),L$(()=>{if(typeof window>"u")return;sessionStorage.setItem(U,G)},[U,G]),R$(A,{card:"SessionStorageCard",data:Z,useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:X,methods:{update:({value:q})=>{B(q)},remove:()=>{sessionStorage.removeItem(U),B("")}},children:R$("input",{type:"hidden",id:$,name:$,value:G})})},j$=yz;var bz=F({name:"SessionStorageCard",component:j$,metadata:{author:"PieData"}});import{useEffect as E$,useState as kz}from"react";import{jsx as C$}from"react/jsx-runtime";var fz=({data:Z})=>{let{name:$,key:U,value:z,useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:X}=Z,[G,B]=kz(z);return E$(()=>{B(z)},[z]),E$(()=>{if(typeof window>"u")return;localStorage.setItem(U,G)},[U,G]),C$(A,{card:"DeviceStorageCard",data:Z,useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:X,methods:{update:({value:q})=>{B(q)},remove:()=>{localStorage.removeItem(U),B("")}},children:C$("input",{type:"hidden",id:$,name:$,value:G})})},x$=fz;var Sz=F({name:"DeviceStorageCard",component:x$,metadata:{author:"PieData"}});import{useCallback as CZ,useContext as xZ,useEffect as mz,useRef as vz,useState as y$}from"react";import{jsx as b$}from"react/jsx-runtime";var hz=({data:Z,content:$})=>{let{useLoader:U,noReturn:z,returnType:H,useSocketioSupport:J,useCentrifugeSupport:T,useMittSupport:X,centrifugeChannel:G}=Z,B=xZ(E),q=xZ(C)??j,[Q,V]=y$(!1),[_,W]=y$(null),M=vz($),P=xZ(v),K=CZ((Y)=>{if(Y===null)V(!0);else if(V(!1),!z)M.current=Y;if(!z)W(Y)},[z]),O=CZ((Y)=>{M.current=Y.content,W(Y.content)},[]),w=CZ((Y)=>{if(Y===null)V(!0);else if(V(!1),!z)for(let D of Y)P?.emit(D.name,D.data)},[z,P]);if(mz(()=>{W($),V(!1)},[$]),!_&&U)return B;return b$(A,{card:"AjaxGroupCard",data:Z,methods:{changeContent:O},useSocketioSupport:J,useCentrifugeSupport:T,useMittSupport:X,centrifugeChannel:G,children:b$(q,{uiConfig:_??M.current,setUiAjaxConfiguration:H==="events"?w:K})})},k$=hz;var gz=F({name:"AjaxGroupCard",component:k$,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as f$}from"react";import{jsx as yZ}from"react/jsx-runtime";var pz=({data:Z,content:$,setUiAjaxConfiguration:U})=>{let{name:z,url:H,sx:J}=Z,T=f$(k),X=f$(C)??j;return yZ(A,{card:z,data:Z,children:yZ("div",{style:J,id:z,onClick:(B)=>{if(H)if(B.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else T?.(H)},children:yZ(X,{setUiAjaxConfiguration:U,uiConfig:$})})})},S$=pz;var dz=F({name:"BoxCard",component:S$,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as uz}from"react";import{jsx as bZ}from"react/jsx-runtime";var cz=({data:Z,content:$,setUiAjaxConfiguration:U})=>{let{name:z,sx:H}=Z,J=uz(C)??j;return bZ(A,{card:z,data:Z,children:bZ("div",{style:H,id:z,children:$.map((T,X)=>{return bZ(J,{uiConfig:T,setUiAjaxConfiguration:U},`children-${X}`)})})})},m$=cz;var lz=F({name:"OneOfCard",component:m$,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as $Z}from"react";import{QueryClient as $0,QueryClientProvider as U0,useQuery as z0}from"@tanstack/react-query";import{useContext as iz,useEffect as rz,useRef as kZ}from"react";import{useEffect as oz,useState as sz}from"react";var WZ=new Map,QZ=new Map;function qZ(Z,$){let U=`${Z}::${$}`,z=Z?WZ.get(U):void 0,[H,J]=sz(z??null);return oz(()=>{if(!Z)return;if(WZ.has(U)){J(WZ.get(U));return}let T=QZ.get(U);if(!T)T=fetch(Z+`api/support/${$}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return WZ.set(U,G),QZ.delete(U),G}).catch((G)=>{throw QZ.delete(U),G}),QZ.set(U,T);let X=!1;return T.then((G)=>{if(!X)J(G)}).catch(()=>{}),()=>{X=!0}},[Z,$,U]),H}function i(Z,$){if($==="up")return{state:"up",signal:Z==="down"?"restored":null};return{state:"down",signal:Z==="up"?"lost":null}}var az=({children:Z})=>{let $=iz(m),U=zZ(),z=qZ(U,"socketIO"),H=a(),J=n(),T=kZ(H);T.current=H;let X=kZ(J);X.current=J;let G=kZ("initial"),B=(q)=>{if(N.isClient())N.setSid(q.sid),Z$(),console.log(`SocketIO initialized: ${N.readSid()}`)};return rz(()=>{if(!$||!z)return;let q=()=>{let{state:V,signal:_}=i(G.current,"up");if(G.current=V,_==="restored")X.current?.("socketio");console.log("SocketIO connected")},Q=(V)=>{if(console.log(`SocketIO disconnected: ${V}`),$.connect(),V==="io client disconnect")return;let{state:_,signal:W}=i(G.current,"down");if(G.current=_,W==="lost")T.current?.("socketio",V)};return $.on("pieinit",B),$.on("connect",q),$.on("disconnect",Q),$.connect(),()=>{$.off("pieinit",B),$.off("connect",q),$.off("disconnect",Q),$.disconnect()}},[$,z]),Z},_Z=az;import{useContext as nz,useEffect as tz,useRef as fZ}from"react";var ez=({children:Z})=>{let $=nz(S),U=zZ(),z=qZ(U,"centrifuge"),H=a(),J=n(),T=fZ(H);T.current=H;let X=fZ(J);X.current=J;let G=fZ("initial");return tz(()=>{if(!$||!z)return;let B=(V)=>{let{state:_,signal:W}=i(G.current,"down");if(G.current=_,W==="lost")T.current?.("centrifuge",V)},q=()=>{let{state:V,signal:_}=i(G.current,"up");if(G.current=V,_==="restored")X.current?.("centrifuge");console.log("Centrifuge connected")},Q=(V)=>{console.log("Centrifuge disconnected:",V),B(V)};return $.on("connecting",B),$.on("connected",q),$.on("disconnected",Q),$.connect(),()=>{$.off("connecting",B),$.off("connected",q),$.off("disconnected",Q),$.disconnect()}},[$,z]),Z},VZ=ez;import{createAxiosDateTransformer as H0}from"axios-date-transformer";import{jsx as Z0}from"react/jsx-runtime";function v$(Z,$,U){if(!$)return U;let z=Z.replace(/^\//,""),H=$[z];if(!H)return U;return Z0(NZ,{uiConfig:H})}function SZ({apiServer:Z,pathname:$,search:U,root:z,initData:H}){let J=new URLSearchParams(U);if(J.set("__pieroot",z),H)J.set("initData",H);return`${Z.replace(/\/$/,"")}/api/content${$}?${J.toString()}`}async function mZ(Z,$){if(!Z||Z.used||Z.url!==$)return null;Z.used=!0;try{return await Z.promise}catch{return null}}import{jsx as L,Fragment as X0}from"react/jsx-runtime";var J0=({location:Z,fallback:$,piecache:U,onError:z,queryOptions:H,configPrefetch:J,disableGlobalForm:T})=>{let X=r(),G=HZ(),B=f(),q=$Z(()=>H0({baseURL:X||""}),[X]),Q=$Z(()=>p(),[]),V=$Z(()=>X?TZ(X):null,[X]),_=$Z(()=>X?JZ(X,G):null,[X,G]),{data:W,isLoading:M,error:P}=z0({queryKey:["uiConfig",Z.pathname+Z.search,X],enabled:!!X,queryFn:async()=>{let O=SZ({apiServer:X,pathname:Z.pathname,search:Z.search,root:"web"}),w=await mZ(J,O);if(w){if(B)console.log("[PieRoot] Using prefetched UI configuration");return w}if(B)console.log("[PieRoot] Fetching UI configuration from:",O);let Y=await q.get(O,{withCredentials:!0});if(B)console.log("[PieRoot] Received UI configuration:",Y.data);return Y.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(O)=>Math.min(1000*2**O,30000),...H}),K=v$(Z.pathname,U,$);if(!X)return K??null;if(B)console.log("[PieRoot] Rendering with location:",Z),console.log("[PieRoot] API_SERVER:",X),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!$),console.log("[PieRoot] Piecache provided:",!!U);if(P){if(B)console.error("[PieRoot] Error fetching UI configuration:",P),console.error("[PieRoot] Error details:",{message:P.message,status:P.response?.status,data:P.response?.data});return z?.(P),K}if(M||!W){if(B)console.log("[PieRoot] Loading state:",{isLoading:M,hasUiConfiguration:!!W});return K}if(B)console.log("[PieRoot] UI configuration loaded successfully:",W),console.log("[PieRoot] Rendering UI with configuration");return L(v.Provider,{value:Q,children:L(m.Provider,{value:V,children:L(S.Provider,{value:_,children:L(E.Provider,{value:$??L(X0,{}),children:L(_Z,{children:L(VZ,{children:T?L(j,{uiConfig:W}):L("form",{id:"piedata_global_form",action:X+"api/process"+Z.pathname,method:"post",encType:"multipart/form-data",children:L(j,{uiConfig:W})})})})})})})})},T0=(Z)=>{let $=$Z(()=>new $0,[]),U=Z.queryClient??$;return L(k.Provider,{value:Z.onNavigate,children:L(o.Provider,{value:Z.config,children:L(d.Provider,{value:Z.onError,children:L(U0,{client:U,children:L(J0,{...Z})})})})})},vZ=T0;import{useMemo as hZ,useState as G0}from"react";import{QueryClient as Y0,QueryClientProvider as B0}from"@tanstack/react-query";import{jsx as x,Fragment as q0}from"react/jsx-runtime";var W0=({location:Z,fallback:$,children:U,disableGlobalForm:z})=>{let H=r(),J=HZ(),T=f(),X=hZ(()=>p(),[]),G=hZ(()=>H?TZ(H):null,[H]),B=hZ(()=>H?JZ(H,J):null,[H,J]);if(T)console.log("[PieRoot] Rendering with location:",Z),console.log("[PieRoot] API_SERVER:",H),console.log("[PieRoot] CENTRIFUGE_SERVER:",J),console.log("[PieRoot] Fallback provided:",!!$);return x(v.Provider,{value:X,children:x(m.Provider,{value:G,children:x(S.Provider,{value:B,children:x(E.Provider,{value:$??x(q0,{}),children:x(_Z,{children:x(VZ,{children:z?U:x("form",{id:"piedata_global_form",action:H+"api/process"+Z.pathname,method:"post",encType:"multipart/form-data",children:U})})})})})})})},Q0=(Z)=>{let[$]=G0(()=>new Y0),U=Z.queryClient??$;return x(k.Provider,{value:Z.onNavigate,children:x(o.Provider,{value:Z.config,children:x(d.Provider,{value:Z.onError,children:x(B0,{client:U,children:x(W0,{...Z})})})})})},_0=Q0;import{useEffect as V0,useMemo as D0}from"react";import{jsx as h$}from"react/jsx-runtime";var K0=h$("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),F0=({apiServer:Z,pathname:$="/",search:U="",centrifugeServer:z,previewEvents:H=!1,fallback:J,enableRenderingLog:T=!1})=>{let X=Z??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"";V0(()=>{if(!H||!X||typeof window>"u"||typeof EventSource>"u")return;let q=X.endsWith("/")?X:`${X}/`,Q=new EventSource(`${q}api/preview/events`),V=p();return Q.onmessage=(_)=>{try{let W=JSON.parse(_.data);if(W&&typeof W.name==="string")V.emit(W.name,W.payload)}catch{}},()=>Q.close()},[H,X]);let G=D0(()=>({apiServer:X,centrifugeServer:z,enableRenderingLog:T,pageProcessor:"web"}),[X,z,T]);return h$(vZ,{location:{pathname:$,search:U},config:G,fallback:J??K0,onNavigate:(q)=>{if(typeof window<"u")window.history.pushState(null,"",q)}})},O0=F0;import{clsx as I0}from"clsx";import{twMerge as M0}from"tailwind-merge";function P0(...Z){return M0(I0(Z))}var A0=()=>{H$(),N.submitGlobalForm()};var w0=(Z,$)=>`${Z}${OZ}${$}`;export{ZU as usePieEmit,n as useOnLinkRestored,a as useOnLinkLost,_U as useAjaxSubmits,qU as useAjaxSubmit,PU as unregisterComponent,AZ as trackLazy,A0 as submitGlobalForm,b as registry,F as registerPieComponent,MU as registerMultipleComponents,T$ as readAjaxKeyAsync,J$ as readAjaxKey,q$ as preloadComponent,RU as prefetchLazyComponents,w0 as pieName,XZ as parseDepName,AU as hasComponent,LU as getRegistrySize,ZZ as getRegistryEntry,Q$ as getLazyComponentNames,p as getEmitter,wU as getComponentMeta,NU as getAllRegisteredComponents,G$ as discoverAjaxEndpoints,mZ as consumeConfigPrefetch,P0 as cn,SZ as buildContentUrl,iU as UnionCard,C as UIRendererContext,NZ as UILoading,j as UI,m as SocketIOContext,bz as SessionStorageCard,lU as SequenceCard,vZ as PieRoot,O0 as PiePreviewRoot,o as PieConfigContext,A as PieCard,_0 as PieBaseRoot,OZ as PIEBREAK,lz as OneOfCard,v as MittContext,Cz as IOEventsCard,Xz as HiddenCard,zz as HTMLEmbedCard,E as FallbackContext,Sz as DeviceStorageCard,S as CentrifugeIOContext,dz as BoxCard,_z as AutoRedirectCard,gz as AjaxGroupCard};