@swarm.ing/pieui 2.0.21 → 2.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- var EH=Object.create;var{getPrototypeOf:oH,defineProperty:Vf,getOwnPropertyNames:VU,getOwnPropertyDescriptor:mH}=Object,JU=Object.prototype.hasOwnProperty;var YU=(f,U,Z)=>{Z=f!=null?EH(oH(f)):{};let H=U||!f||!f.__esModule?Vf(Z,"default",{value:f,enumerable:!0}):Z;for(let z of VU(f))if(!JU.call(H,z))Vf(H,z,{get:()=>f[z],enumerable:!0});return H},PU=new WeakMap,kH=(f)=>{var U=PU.get(f),Z;if(U)return U;if(U=Vf({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")VU(f).map((H)=>!JU.call(U,H)&&Vf(U,H,{get:()=>f[H],enumerable:!(Z=mH(f,H))||Z.enumerable}));return PU.set(f,U),U};var jH=(f,U)=>{for(var Z in U)Vf(f,Z,{get:U[Z],enumerable:!0,configurable:!0,set:(H)=>U[Z]=()=>H})};var OZ={};jH(OZ,{useWebApp:()=>df,usePieMittAgentTools:()=>RH,usePieEmit:()=>CU,useOpenAIWebRTC:()=>Yf,useMaxWebApp:()=>vf,useAjaxSubmit:()=>OH,unregisterComponent:()=>FU,submitGlobalForm:()=>SH,registry:()=>g,registerPieComponent:()=>C,registerMultipleComponents:()=>KU,pieName:()=>LH,hasComponent:()=>SU,getRegistrySize:()=>AU,getRegistryEntry:()=>t,getMittAgentTools:()=>$U,getComponentMeta:()=>LU,getAllRegisteredComponents:()=>MU,cn:()=>FH,UnionCard:()=>uU,UIRendererContext:()=>x,UILoading:()=>Ff,UI:()=>w,SessionStorageCard:()=>tU,SequenceCard:()=>kU,SecureStorageCard:()=>ZH,PieTelegramRoot:()=>GH,PieRoot:()=>XH,PieMaxRoot:()=>WH,PieCard:()=>R,PieBaseRoot:()=>qH,PIEBREAK:()=>Cf,IOEventsCard:()=>sU,HiddenCard:()=>cU,HTMLEmbedCard:()=>vU,DeviceStorageCard:()=>eU,CloudStorageCard:()=>UH,BoxCard:()=>TH,AutoRedirectCard:()=>rU,AjaxGroupCard:()=>DH});module.exports=kH(OZ);var u=require("react");var Of=require("react"),d=Of.createContext(null),s=()=>{let f=Of.useContext(d);if(!f)throw new Error("usePieConfig must be used within PieConfigProvider");return f},b=()=>{let{apiServer:f}=s();return f},_f=b,v=()=>{let{centrifugeServer:f}=s();return f};var E=()=>{let{enableRenderingLog:f}=s();return f},XU=E,IU=()=>{let{pageProcessor:f}=s();return f};var Cf="__piedemo__";var qU=require("react"),lf=require("centrifuge"),GU=new Map,p=(f,U)=>{if(!U)return null;let Z=`${f}::${U}`,H=GU.get(Z);if(H)return H;async function z(){let D=await fetch(f+"api/centrifuge/gen_token");if(!D.ok){if(D.status===403)throw new lf.Centrifuge.UnauthorizedError("Backend is not answering");throw new Error(`Unexpected status code ${D.status}`)}return(await D.json()).token}let T=new lf.Centrifuge(U,{getToken:z});return GU.set(Z,T),T},xH=qU.createContext(null),m=xH;var WU=require("socket.io-client"),QU=require("react"),BU=new Map,c=(f)=>{let U=BU.get(f);if(U)return U;let Z=WU.io(f,{autoConnect:!1,transports:["websocket"]});return BU.set(f,Z),Z},uH=QU.createContext(null),k=uH;var OU=YU(require("mitt")),i=require("react"),rf=null;function j(){if(!rf)rf=OU.default();return rf}var _U=i.createContext(null);function CU(f){let U=i.useContext(_U);return i.useCallback((Z,H)=>{(U??j()).emit(`pie${Z}_${f}`,H)},[f,U])}var N=_U;var dH=({card:f,data:U,children:Z,useSocketioSupport:H=!1,useCentrifugeSupport:z=!1,useMittSupport:T=!1,centrifugeChannel:D=void 0,methods:V=void 0})=>{let $=XU(),P=u.useRef(V);if(P.current=V,$)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:H,centrifuge:z,mitt:T,centrifugeChannel:D}),console.log("[PieCard] Methods:",V?Object.keys(V):"none"),console.log("[PieCard] Has children:",!!Z);let G=u.useContext(k),B=u.useContext(m),W=u.useContext(N);if(u.useEffect(()=>{if(!G||!H||!P.current||!U.name){if($&&H)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!G,useSocketioSupport:H,hasMethods:!!P.current,hasDataName:!!U?.name});return}let Y=Object.keys(P.current??{}).map((I)=>{let J=`pie${I}_${U.name}`;if($)console.log(`[PieCard] Socket.IO registering event: ${J}`);let Q=(q)=>{P.current?.[I]?.(q)};return G.on(J,Q),[J,Q]});return()=>{Y.forEach(([I,J])=>{if($)console.log(`[PieCard] Socket.IO unregistering event: ${I}`);G.off(I,J)})}},[G,U.name,H]),u.useEffect(()=>{if(!B||!z||!D||!U.name){if($&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!B,useCentrifugeSupport:z,hasCentrifugeChannel:!!D,hasMethods:!!P.current,hasDataName:!!U?.name});return}let Y=Object.keys(P.current??{}).map((I)=>{let J=`pie${I}_${U.name}_${D}`;if($)console.log(`[PieCard] Centrifuge subscribing to channel: ${J}`);let Q=B.newSubscription(J);return Q.on("publication",(q)=>{if($)console.log(`[PieCard] Centrifuge received data on ${J}:`,q.data);P.current?.[I]?.(q.data)}),Q.subscribe(),Q});return()=>{Y.forEach((I)=>{if($)console.log("[PieCard] Centrifuge unsubscribing from channel");I.unsubscribe(),B.removeSubscription(I)})}},[B,D,U.name,z]),u.useEffect(()=>{if(!W||!T||!U.name){if($&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!W,useMittSupport:T,hasMethods:!!P.current,hasDataName:!!U?.name});return}let X=Object.keys(P.current??{}),Y={};return X.forEach((I)=>{let J=`pie${I}_${U.name}`,Q=(q)=>{if($)console.log(`[PieCard] Mitt registering event: ${J}`);P.current?.[I]?.(q)};Y[J]=Q,W.on(J,Q)}),()=>{Object.entries(Y).forEach(([I,J])=>{if($)console.log(`[PieCard] Mitt unregistering event: ${I}`);W.off(I,J)})}},[W,U.name,T]),$)console.log("[PieCard] Rendering complete, returning children");return Z},R=dH;var RU=require("react"),nf=new Map;function wU(f,U){return RU.lazy(()=>{if(nf.has(U))return nf.get(U);let Z=f().then((H)=>H);return nf.set(U,Z),Z})}var g=new Map,bH=(f)=>{if(!f.name)throw new Error("Component registration requires a name");if(!f.component&&!f.loader)throw new Error(`Component "${f.name}" requires component or loader`);let U={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=wU(U.loader,f.name),U.loader=void 0,U.isLazy=!0;return U};function C(f){let U=bH(f);return g.set(U.name,U),U.component}var KU=(f)=>{f.forEach((U)=>C(U))},FU=(f)=>{g.delete(f)},SU=(f)=>{return g.has(f)},LU=(f)=>{return g.get(f)?.metadata},t=(f)=>{return g.get(f)},MU=()=>{return Array.from(g.keys())},AU=()=>{return g.size};var a=require("react");var NU=require("react"),Rf=require("react/jsx-runtime"),gH=NU.createContext(Rf.jsx(Rf.Fragment,{})),L=gH;var wf=require("react/jsx-runtime");function vH({uiConfig:f,setUiAjaxConfiguration:U}){let Z=a.useContext(L),H=E();if(H)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let z=t(f.card);if(!z?.component){if(H)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return Z}if(H)console.log("[UI] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let T=z.component,D=wf.jsx(T,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(z.isLazy){if(H)console.log("[UI] Rendering lazy component with Suspense:",z.name);return wf.jsx(a.Suspense,{fallback:z.fallback?wf.jsx(z.fallback,{}):Z,children:D},`${z.name}`)}if(H)console.log("[UI] Rendering component directly:",z.name);return D}var w=a.memo(vH);var Kf=require("react");var yU=require("react"),pH=yU.createContext(null),x=pH;var Jf=require("react/jsx-runtime");function EU({uiConfig:f,setUiAjaxConfiguration:U}){let Z=Kf.useContext(L),H=E();if(H)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let z=t(f.card);if(!z?.component){if(H)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return Z}if(H)console.log("[UILoading] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata,hasFallback:!!z.fallback});if(z.fallback){if(H)console.log("[UILoading] Rendering fallback for:",z.name);let V=z.fallback;return Jf.jsx(V,{})}if(H)console.log("[UILoading] No fallback, rendering full component:",z.name);let T=z.component,D=Jf.jsx(x.Provider,{value:EU,children:Jf.jsx(T,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(z.isLazy)return Jf.jsx(Kf.Suspense,{fallback:Z,children:D},`${z.name}`);return D}var Ff=EU;var oU=require("react");var Sf=require("react/jsx-runtime"),cH=({data:f,content:U,setUiAjaxConfiguration:Z})=>{let{name:H,sx:z}=f,T=oU.useContext(x)??w;return Sf.jsx(R,{card:H,data:f,children:Sf.jsx("div",{style:z,id:H,children:U.map((D,V)=>{return Sf.jsx(T,{uiConfig:D,setUiAjaxConfiguration:Z},`children-${V}`)})})})},mU=cH;var kU=C({name:"SequenceCard",component:mU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var jU=require("react");var sf=require("react/jsx-runtime"),hH=({data:f,content:U,setUiAjaxConfiguration:Z})=>{let{name:H}=f,z=jU.useContext(x)??w;return sf.jsx(R,{card:H,data:f,children:U.map((T,D)=>{return sf.jsx(z,{uiConfig:T,setUiAjaxConfiguration:Z},`children-${D}`)})})},xU=hH;var uU=C({name:"UnionCard",component:xU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var Lf=require("react"),dU=YU(require("html-react-parser"));var o=require("react");function lH(){let f=new AudioContext,U=f.createOscillator(),Z=U.connect(f.createMediaStreamDestination());U.start();let H=Z.stream.getAudioTracks()[0];return H.enabled=!1,H}function Yf(f=null,U){let[Z,H]=o.useState(!1),z=o.useRef(null),T=o.useRef(null),D=o.useRef(null),V=o.useCallback(async(B,W=!0)=>{if(z.current)$();let X=new RTCPeerConnection;if(X.onconnectionstatechange=()=>{if(X.connectionState==="connected")H(!0);else if(["disconnected","failed","closed"].includes(X.connectionState))H(!1)},X.ontrack=(_)=>{if(f)f.srcObject=_.streams[0]},W){let _=await navigator.mediaDevices.getUserMedia({audio:!0});X.addTrack(_.getTracks()[0],_)}else{let _=lH();X.addTrack(_)}let Y=X.createDataChannel("oai-events");T.current=Y,D.current=new Promise((_)=>{Y.addEventListener("open",()=>{_()})});let I=await X.createOffer();await X.setLocalDescription(I);let O=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:I.sdp,headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/sdp"}})).text();await X.setRemoteDescription({type:"answer",sdp:O}),z.current=X,await D.current},[f]),$=o.useCallback(()=>{let B=T.current;if(B)B.close();z.current?.getSenders()?.forEach((W)=>W.track?.stop()),z.current?.close(),H(!1),z.current=null,T.current=null,D.current=null},[f]),P=o.useCallback((B)=>{let W=T.current;if(!W){console.error("Data channel is not ready",B);return}let X=new Date().toLocaleTimeString();if(B.event_id=B.event_id||crypto.randomUUID(),W.send(JSON.stringify(B)),!B.timestamp)B.timestamp=X;U?.(B)},[U,f]),G=o.useCallback((B)=>{if(!T.current){console.error("Data channel is not ready");return}let X=()=>{P({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:B}]}}),P({type:"response.create"})};if(D.current)D.current.then(X);else X()},[U,f]);return o.useEffect(()=>{let B=T.current;if(!B)return;let W=(X)=>{let Y=JSON.parse(X.data);if(!Y.timestamp)Y.timestamp=new Date().toLocaleTimeString();U?.(Y)};return B.addEventListener("message",W),()=>{B.removeEventListener("message",W)}},[U,f]),{isSessionActive:Z,startSession:V,stopSession:$,sendTextMessage:G}}var gU=require("react/jsx-runtime"),rH=({data:f})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T}=f,[D,V]=Lf.useState(U),{isSessionActive:$,startSession:P,sendTextMessage:G}=Yf(null,(Y)=>{if(console.log(Y.type,Y.type==="response.output_text.delta"&&Y.delta),Y.type==="response.output_text.delta"&&Y.delta)V((I)=>I+Y.delta)});return Lf.useEffect(()=>{V(U)},[U]),gU.jsx(R,{card:"HTMLEmbedCard",data:f,methods:{update:(Y)=>{V(Y.value)},generateUsingAI:async(Y)=>{try{if(!$&&Y.token)await P(Y.token,!1);G(Y.prompt)}catch(I){console.error("Failed to generate using AI",I)}},initializeAI:async(Y)=>{if(!$&&Y.token)await P(Y.token,!1)}},useCentrifugeSupport:H,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:T,children:dU.default(D)})},bU=rH;var vU=C({name:"HTMLEmbedCard",component:bU,metadata:{author:"Swarm.ing"}});var Mf=require("react");var tf=require("react/jsx-runtime"),nH=({data:f})=>{let{name:U,value:Z,useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:D}=f,[V,$]=Mf.useState(Z);return Mf.useEffect(()=>{$(Z)},[Z]),tf.jsx(R,{card:"HiddenCard",data:f,useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:D,methods:{update:({value:P})=>{$(P)}},children:tf.jsx("input",{type:"hidden",id:U,name:U,value:V})})},pU=nH;var cU=C({name:"HiddenCard",component:pU,metadata:{author:"Swarm.ing"}});var Xf=require("react");var hU=require("react"),sH=hU.createContext(void 0),y=sH;var Af=require("react/jsx-runtime"),iH=({data:f})=>{let{url:U}=f,Z=Xf.useContext(y),H=Xf.useContext(L);return Xf.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),Af.jsx(Af.Fragment,{children:H})},lU=iH;var rU=C({name:"AutoRedirectCard",component:lU,metadata:{author:"Swarm.ing"}});var h=require("react-toastify"),Nf=require("react-toastify");var ff=require("react");var e=require("react/jsx-runtime"),tH={bounce:h.Bounce,slide:h.Slide,zoom:h.Zoom,flip:h.Flip},aH=(f)=>{let U={...f,type:f.alertType,transition:f.transition?tH[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};Nf.toast(f.message,U)},eH=(f)=>{console.log("Log event",f)},fZ=(f)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(H){console.error("[IOEventsCard] Failed to show notification",H)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((H)=>{if(H==="granted")U()})},UZ=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:H,centrifugeChannel:z}=f,T=ff.useContext(y),D=ff.useRef(T);D.current=T;let V=ff.useMemo(()=>({alert:aH,log:eH,push:fZ,redirect:($)=>{if($.to){let P=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(P))window.location.href=P;else D.current?.(P)}else window.location.reload()},reload:($)=>{if($.to){let P=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(P))window.location.href=P;else D.current?.(P)}else window.location.reload()}}),[]);return e.jsx(e.Fragment,{children:e.jsx(R,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:H,centrifugeChannel:z,methods:V,children:e.jsx(Nf.ToastContainer,{})})})},nU=UZ;var sU=C({name:"IOEventsCard",component:nU,metadata:{author:"Swarm.ing"}});var If=require("react");var af=require("react/jsx-runtime"),HZ=({data:f})=>{let{name:U,key:Z,value:H,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[$,P]=If.useState(H);return If.useEffect(()=>{P(H)},[H]),If.useEffect(()=>{if(typeof window==="undefined")return;sessionStorage.setItem(Z,$)},[Z,$]),af.jsx(R,{card:"SessionStorageCard",data:f,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:G})=>{P(G)},remove:()=>{sessionStorage.removeItem(Z),P("")}},children:af.jsx("input",{type:"hidden",id:U,name:U,value:$})})},iU=HZ;var tU=C({name:"SessionStorageCard",component:iU,metadata:{author:"PieData"}});var Gf=require("react");var ef=require("react/jsx-runtime"),ZZ=({data:f})=>{let{name:U,key:Z,value:H,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[$,P]=Gf.useState(H);return Gf.useEffect(()=>{P(H)},[H]),Gf.useEffect(()=>{if(typeof window==="undefined")return;localStorage.setItem(Z,$)},[Z,$]),ef.jsx(R,{card:"DeviceStorageCard",data:f,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:G})=>{P(G)},remove:()=>{localStorage.removeItem(Z),P("")}},children:ef.jsx("input",{type:"hidden",id:U,name:U,value:$})})},aU=ZZ;var eU=C({name:"DeviceStorageCard",component:aU,metadata:{author:"PieData"}});var qf=require("react");var fU=require("react/jsx-runtime"),zZ=({data:f})=>{let{name:U,key:Z,value:H,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[$,P]=qf.useState(H);return qf.useEffect(()=>{P(H)},[H]),qf.useEffect(()=>{if(typeof window==="undefined")return;let G=window.Telegram?.WebApp?.CloudStorage;if(!G)return;G.setItem(Z,$)},[Z,$]),fU.jsx(R,{card:"CloudStorageCard",data:f,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:G})=>{P(G)},remove:()=>{let G=window.Telegram?.WebApp?.CloudStorage;if(G)G.removeItem(Z);P("")}},children:fU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},fH=zZ;var UH=C({name:"CloudStorageCard",component:fH,metadata:{author:"PieData"}});var Bf=require("react");var UU=require("react/jsx-runtime"),DZ=({data:f})=>{let{name:U,key:Z,value:H,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[$,P]=Bf.useState(H);return Bf.useEffect(()=>{P(H)},[H]),Bf.useEffect(()=>{if(typeof window==="undefined")return;let G=window.Telegram?.WebApp?.SecureStorage;if(!G)return;G.setItem(Z,$)},[Z,$]),UU.jsx(R,{card:"SecureStorageCard",data:f,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:G})=>{P(G)},remove:()=>{let G=window.Telegram?.WebApp?.SecureStorage;if(G)G.removeItem(Z);P("")}},children:UU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},HH=DZ;var ZH=C({name:"SecureStorageCard",component:HH,metadata:{author:"PieData"}});var M=require("react");var HU=require("react/jsx-runtime"),$Z=({data:f,content:U})=>{let{useLoader:Z,noReturn:H,returnType:z,useSocketioSupport:T,useCentrifugeSupport:D,useMittSupport:V,centrifugeChannel:$}=f,P=M.useContext(L),G=M.useContext(x)??w,[B,W]=M.useState(!1),[X,Y]=M.useState(null),I=M.useRef(U),J=M.useContext(N),Q=M.useCallback((_)=>{if(_===null)W(!0);else if(W(!1),!H)I.current=_;if(!H)Y(_)},[H]),q=M.useCallback((_)=>{I.current=_.content,Y(_.content)},[]),O=M.useCallback((_)=>{if(_===null)W(!0);else if(W(!1),!H)for(let Wf of _)J?.emit(Wf.name,Wf.data)},[H,J]);if(M.useEffect(()=>{Y(U),W(!1)},[U]),!X&&Z)return P;return HU.jsx(R,{card:"AjaxGroupCard",data:f,methods:{changeContent:q},useSocketioSupport:T,useCentrifugeSupport:D,useMittSupport:V,centrifugeChannel:$,children:HU.jsx(G,{uiConfig:X??I.current,setUiAjaxConfiguration:z==="events"?O:Q})})},zH=$Z;var DH=C({name:"AjaxGroupCard",component:zH,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var ZU=require("react");var yf=require("react/jsx-runtime"),TZ=({data:f,content:U,setUiAjaxConfiguration:Z})=>{let{name:H,url:z,sx:T}=f,D=ZU.useContext(y),V=ZU.useContext(x)??w;return yf.jsx(R,{card:H,data:f,children:yf.jsx("div",{style:T,id:H,onClick:(P)=>{if(z)if(P.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else D?.(z)},children:yf.jsx(V,{setUiAjaxConfiguration:Z,uiConfig:U})})})},$H=TZ;var TH=C({name:"BoxCard",component:$H,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Hf=require("react"),Zf=require("@tanstack/react-query");var jf=require("react");var mf=require("react"),Ef=new Map,of=new Map;function kf(f,U){let Z=`${f}::${U}`,H=f?Ef.get(Z):void 0,[z,T]=mf.useState(H??null);return mf.useEffect(()=>{if(!f)return;if(Ef.has(Z)){T(Ef.get(Z));return}let D=of.get(Z);if(!D)D=fetch(f+`api/support/${U}`,{method:"GET"}).then(($)=>$.json()).then(($)=>{return Ef.set(Z,$),of.delete(Z),$}).catch(($)=>{throw of.delete(Z),$}),of.set(Z,D);let V=!1;return D.then(($)=>{if(!V)T($)}).catch(()=>{}),()=>{V=!0}},[f,U,Z]),z}var zU=null,PH=null;function VH(){PH?.()}function DU(){if(typeof window==="undefined")return Promise.resolve();if(typeof window.sid!=="undefined")return Promise.resolve();if(!zU)zU=new Promise((f)=>{PH=()=>{f()}});return zU}var PZ=({children:f})=>{let U=jf.useContext(k),Z=_f(),H=kf(Z,"socketIO"),z=(T)=>{if(typeof window!=="undefined")window.sid=T.sid,VH(),console.log(`SocketIO initialized: ${window.sid}`)};return jf.useEffect(()=>{if(!U)return;let T=()=>{console.log("SocketIO connected")},D=(V)=>{console.log(`SocketIO disconnected: ${V}`),U.connect()};if(H)U.on("pieinit",z),U.on("connect",T),U.on("disconnect",D),U.connect();return()=>{if(H)U.off("pieinit",z),U.off("connect",T),U.off("disconnect",D),U.disconnect()}},[U,H]),f},l=PZ;var xf=require("react");var VZ=({children:f})=>{let U=xf.useContext(m),Z=_f(),H=kf(Z,"centrifuge");return xf.useEffect(()=>{if(!U)return;let z=()=>{console.log("Centrifuge connected")},T=(D)=>{console.log("Centrifuge disconnected:",D)};if(H)U.on("connected",z),U.on("disconnected",T),U.connect();return()=>{if(H)U.disconnect()}},[U,H]),f},r=VZ;var YH=require("axios-date-transformer");var JH=require("react/jsx-runtime");function Uf(f,U,Z){if(!U)return Z;let H=f.replace(/^\//,""),z=U[H];if(!z)return Z;return JH.jsx(Ff,{uiConfig:z})}var K=require("react/jsx-runtime"),JZ=({location:f,fallback:U,piecache:Z,onError:H,queryOptions:z,disableGlobalForm:T})=>{let D=b(),V=v(),$=E(),P=Hf.useMemo(()=>YH.createAxiosDateTransformer({baseURL:D||""}),[D]),G=Hf.useMemo(()=>j(),[]),B=Hf.useMemo(()=>D?c(D):null,[D]),W=Hf.useMemo(()=>D?p(D,V):null,[D,V]),{data:X,isLoading:Y,error:I}=Zf.useQuery({queryKey:["uiConfig",f.pathname+f.search,D],enabled:!!D,queryFn:async()=>{let Q=new URLSearchParams(f.search);Q.set("__pieroot","web");let q="/api/content"+f.pathname+"?"+Q.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",q);let O=await P.get(q,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",O.data);return O.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Q)=>Math.min(1000*2**Q,30000),...z}),J=Uf(f.pathname,Z,U);if(!D)return J??null;if($)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",V),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!Z);if(I){if($)console.error("[PieRoot] Error fetching UI configuration:",I),console.error("[PieRoot] Error details:",{message:I.message,status:I.response?.status,data:I.response?.data});return H?.(),J}if(Y||!X){if($)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!X});return J}if($)console.log("[PieRoot] UI configuration loaded successfully:",X),console.log("[PieRoot] Rendering UI with configuration");return K.jsx(N.Provider,{value:G,children:K.jsx(k.Provider,{value:B,children:K.jsx(m.Provider,{value:W,children:K.jsx(L.Provider,{value:U??K.jsx(K.Fragment,{}),children:K.jsx(l,{children:K.jsx(r,{children:T?K.jsx(w,{uiConfig:X}):K.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:K.jsx(w,{uiConfig:X})})})})})})})})},YZ=(f)=>{let U=Hf.useMemo(()=>new Zf.QueryClient,[]);return K.jsx(y.Provider,{value:f.onNavigate,children:K.jsx(d.Provider,{value:f.config,children:K.jsx(Zf.QueryClientProvider,{client:U,children:K.jsx(JZ,{...f})})})})},XH=YZ;var zf=require("react"),Df=require("@tanstack/react-query");var IH=require("axios-date-transformer");var uf=require("react");var df=({onError:f}={})=>{let[U,Z]=uf.useState(null),H=IU();return uf.useEffect(()=>{if(typeof window==="undefined")return;let z=window.Telegram?.WebApp;if(!z)return;try{z.ready?.()}catch(T){f?.()}if(H==="telegram_expanded"&&(z.platform==="ios"||z.platform==="android"))z.expand();Z(z)},[]),U};var F=require("react/jsx-runtime"),XZ=({location:f,fallback:U,piecache:Z,onError:H,queryOptions:z,disableGlobalForm:T})=>{let D=b(),V=v(),$=E(),P=zf.useMemo(()=>IH.createAxiosDateTransformer({baseURL:D}),[D]),G=zf.useMemo(()=>j(),[]),B=zf.useMemo(()=>D?c(D):null,[D]),W=zf.useMemo(()=>D?p(D,V):null,[D,V]),X=df({onError:H}),{data:Y,isLoading:I,error:J}=Df.useQuery({queryKey:["uiConfig",f.pathname+f.search,X?.initData],enabled:!!X?.initData,queryFn:async()=>{let q=new URLSearchParams(f.search);if(q.set("__pieroot","telegram"),X?.initData)q.set("initData",X.initData);let O="/api/content"+f.pathname+"?"+q.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",O);let _=await P.get(O,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",_.data);return _.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...z}),Q=Uf(f.pathname,Z,U);if(!D)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(J&&$)return console.error("[PieRoot] Error fetching UI configuration:",J),console.error("[PieRoot] Error details:",{message:J.message,status:J.response?.status,data:J.response?.data}),H?.(),Q;if(I||!Y){if($)console.log("[PieRoot] Loading state:",{isLoading:I,hasUiConfiguration:!!Y});return Q}if($)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return F.jsx(N.Provider,{value:G,children:F.jsx(k.Provider,{value:B,children:F.jsx(m.Provider,{value:W,children:F.jsx(L.Provider,{value:U??F.jsx(F.Fragment,{}),children:F.jsx(l,{children:F.jsx(r,{children:T?F.jsx(w,{uiConfig:Y}):F.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:F.jsx(w,{uiConfig:Y})})})})})})})})},IZ=(f)=>{let U=zf.useMemo(()=>new Df.QueryClient,[]);return F.jsx(y.Provider,{value:f.onNavigate,children:F.jsx(d.Provider,{value:f.config,children:F.jsx(Df.QueryClientProvider,{client:U,children:F.jsx(XZ,{...f})})})})},GH=IZ;var $f=require("react"),bf=require("@tanstack/react-query");var A=require("react/jsx-runtime"),GZ=({location:f,fallback:U,children:Z,disableGlobalForm:H})=>{let z=b(),T=v(),D=E(),V=$f.useMemo(()=>j(),[]),$=$f.useMemo(()=>z?c(z):null,[z]),P=$f.useMemo(()=>z?p(z,T):null,[z,T]);if(D)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",z),console.log("[PieRoot] CENTRIFUGE_SERVER:",T),console.log("[PieRoot] Fallback provided:",!!U);return A.jsx(N.Provider,{value:V,children:A.jsx(k.Provider,{value:$,children:A.jsx(m.Provider,{value:P,children:A.jsx(L.Provider,{value:U??A.jsx(A.Fragment,{}),children:A.jsx(l,{children:A.jsx(r,{children:H?Z:A.jsx("form",{id:"piedata_global_form",action:z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},qZ=(f)=>{let[U]=$f.useState(()=>new bf.QueryClient);return A.jsx(y.Provider,{value:f.onNavigate,children:A.jsx(d.Provider,{value:f.config,children:A.jsx(bf.QueryClientProvider,{client:U,children:A.jsx(GZ,{...f})})})})},qH=qZ;var Tf=require("react"),Pf=require("@tanstack/react-query");var BH=require("axios-date-transformer");var gf=require("react"),vf=()=>{let[f,U]=gf.useState(null);return gf.useEffect(()=>{if(typeof window==="undefined")return;let Z=window.WebApp;if(!Z)return;Z.ready(),U(Z)},[]),f};var S=require("react/jsx-runtime"),BZ=({location:f,fallback:U,piecache:Z,onError:H,queryOptions:z,disableGlobalForm:T})=>{let D=b(),V=v(),$=E(),P=Tf.useMemo(()=>BH.createAxiosDateTransformer({baseURL:D}),[D]),G=Tf.useMemo(()=>j(),[]),B=Tf.useMemo(()=>D?c(D):null,[D]),W=Tf.useMemo(()=>D?p(D,V):null,[D,V]),X=vf(),{data:Y,isLoading:I,error:J}=Pf.useQuery({queryKey:["uiConfig",f.pathname+f.search,X?.initData],queryFn:async()=>{let q=new URLSearchParams(f.search);if(q.set("__pieroot","max"),X?.initData)q.set("initData",X.initData);let O="/api/content"+f.pathname+"?"+q.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",O);let _=await P.get(O,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",_.data);return _.data},enabled:!!X?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...z}),Q=Uf(f.pathname,Z,U);if(!D)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(J&&$)return console.error("[PieRoot] Error fetching UI configuration:",J),console.error("[PieRoot] Error details:",{message:J.message,status:J.response?.status,data:J.response?.data}),H?.(),Q;if(I||!Y){if($)console.log("[PieRoot] Loading state:",{isLoading:I,hasUiConfiguration:!!Y});return Q}if($)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return S.jsx(N.Provider,{value:G,children:S.jsx(k.Provider,{value:B,children:S.jsx(m.Provider,{value:W,children:S.jsx(L.Provider,{value:U??S.jsx(S.Fragment,{}),children:S.jsx(l,{children:S.jsx(r,{children:T?S.jsx(w,{uiConfig:Y}):S.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:S.jsx(w,{uiConfig:Y})})})})})})})})},WZ=(f)=>{let U=Tf.useMemo(()=>new Pf.QueryClient,[]);return S.jsx(y.Provider,{value:f.onNavigate,children:S.jsx(d.Provider,{value:f.config,children:S.jsx(Pf.QueryClientProvider,{client:U,children:S.jsx(BZ,{...f})})})})},WH=WZ;var QH=require("react"),QZ=(f,U={},Z=[],H,z)=>{let T=z?.renderingLogEnabled??!1,D=z?.timeout,V=z?.retryPolicy,$=V?.maxRetries??0,P=V?.baseDelay??1000,G=V?.retryOn??[502,503,504];if(T)console.log("Registering AJAX: ",H,U,Z);return async(B={})=>{if(typeof window==="undefined"||typeof document==="undefined"){if(T)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let W=z?.apiServer;if(!W){if(T)console.warn("AJAX skipped: apiServer is missing");return}if(!H||!f){if(T)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await DU();let X=new FormData;for(let[J,Q]of Object.entries({...U,...B}))X.append(J,Q);for(let J of Z)if(J==="sid"){if(!window.sid)throw new Error("SocketIO isn't initialized properly");X.append("sid",window.sid)}else{let Q=document.getElementsByName(J);if(!Q.length){if(T)console.warn(`No input found with name ${J}`);continue}let q=Q[0];if(q instanceof HTMLInputElement)if(q.type==="file"&&q.files)Array.from(q.files).forEach((O)=>X.append(J,O));else X.append(J,q.value);else if(q instanceof HTMLTextAreaElement)X.append(J,q.value)}let Y=W+"api/ajax_content"+H;f(null);let I;for(let J=0;J<=$;J++){if(J>0){let O=P*2**(J-1);if(T)console.log(`AJAX retry ${J}/${$} after ${O}ms`);await new Promise((_)=>setTimeout(_,O))}let Q=D!=null?new AbortController:null,q=Q&&setTimeout(()=>Q.abort(),D);try{let O=await fetch(Y,{method:"POST",body:X,signal:Q?.signal});if(q)clearTimeout(q);if(!O.ok&&G.includes(O.status)&&J<$){I=new Error(`HTTP ${O.status}`);continue}let Wf=(O.headers.get("content-type")||"").includes("application/json");if(!!O.body?.getReader&&!Wf){let Qf=O.body.getReader(),MH=new TextDecoder,n="";while(!0){let{done:cf,value:AH}=await Qf.read();if(cf)break;n+=MH.decode(AH,{stream:!0});let TU=n.split(`
3
- `);n=TU.pop()??"";for(let NH of TU){let hf=NH.trim();if(!hf)continue;try{let yH=JSON.parse(hf);f([yH])}catch{if(T)console.warn("Failed to parse streamed line:",hf)}}}if(n.trim())try{let cf=JSON.parse(n);f([cf])}catch{if(T)console.warn("Failed to parse final streamed line:",n)}return{}}else{let Qf=await O.json();return f(Qf),Qf}}catch(O){if(q)clearTimeout(q);if(I=O,J<$)continue;if(T)console.error("AJAX request failed:",O);return f(null),O}}if(T)console.error("AJAX request failed after retries:",I);return f(null),I}},OH=(f,U={},Z=[],H,z)=>{let{apiServer:T,enableRenderingLog:D}=s(),V=JSON.stringify(U),$=JSON.stringify(Z),P=JSON.stringify(z);return QH.useMemo(()=>QZ(f,U,Z,H,{apiServer:T,renderingLogEnabled:D,timeout:z?.timeout,retryPolicy:z?.retryPolicy}),[f,V,$,H,T,D,P])};var _H=require("@openai/agents"),pf=require("react");var CH=/^pie(.+?)_(.+)$/;function $U(f=j(),U={}){let Z=[],H=new Set;for(let z of f.all.keys()){if(typeof z!=="string")continue;let T=z.match(CH);if(!T)continue;let[,D,V]=T,$={methodName:D,cardName:V,eventName:z};if(U.filter&&!U.filter($))continue;let P=U.nameFor?.($)??`${V}_${D}`;if(H.has(P))continue;H.add(P);let G=U.describe?.($)??`Invokes the "${D}" method on the PieCard "${V}" by emitting the in-process mitt event "${z}". The optional "payload" argument is forwarded verbatim to the card's handler.`;Z.push(_H.tool({name:P,description:G,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(B)=>{let W=B?.payload;return f.emit(z,W),`Emitted "${z}"`}}))}return Z}function RH(f={}){let Z=pf.useContext(N)??j(),H=[];for(let $ of Z.all.keys())if(typeof $==="string"&&CH.test($))H.push($);H.sort();let z=H.join("|"),{filter:T,describe:D,nameFor:V}=f;return pf.useMemo(()=>$U(Z,{filter:T,describe:D,nameFor:V}),[Z,z,T,D,V])}var wH=require("clsx"),KH=require("tailwind-merge");function FH(...f){return KH.twMerge(wH.clsx(f))}var SH=()=>{if(typeof document==="undefined")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var LH=(f,U)=>`${f}${Cf}${U}`;
2
+ var xH=Object.create;var{getPrototypeOf:dH,defineProperty:Vf,getOwnPropertyNames:CU,getOwnPropertyDescriptor:uH}=Object,JU=Object.prototype.hasOwnProperty;var YU=(f,U,P)=>{P=f!=null?xH(dH(f)):{};let H=U||!f||!f.__esModule?Vf(P,"default",{value:f,enumerable:!0}):P;for(let D of CU(f))if(!JU.call(H,D))Vf(H,D,{get:()=>f[D],enumerable:!0});return H},IU=new WeakMap,bH=(f)=>{var U=IU.get(f),P;if(U)return U;if(U=Vf({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")CU(f).map((H)=>!JU.call(U,H)&&Vf(U,H,{get:()=>f[H],enumerable:!(P=uH(f,H))||P.enumerable}));return IU.set(f,U),U};var gH=(f,U)=>{for(var P in U)Vf(f,P,{get:U[P],enumerable:!0,configurable:!0,set:(H)=>U[P]=()=>H})};var SP={};gH(SP,{useWebApp:()=>bf,usePieMittAgentTools:()=>MH,usePieEmit:()=>wU,useOpenAIWebRTC:()=>Cf,useMaxWebApp:()=>pf,useAjaxSubmit:()=>KH,unregisterComponent:()=>MU,submitGlobalForm:()=>oH,registry:()=>g,registerPieComponent:()=>W,registerMultipleComponents:()=>FU,readAjaxKey:()=>zU,pieName:()=>yH,hasComponent:()=>LU,getRegistrySize:()=>oU,getRegistryEntry:()=>s,getMittAgentTools:()=>TU,getComponentMeta:()=>AU,getAllRegisteredComponents:()=>NU,cn:()=>NH,UnionCard:()=>bU,UIRendererContext:()=>o,UILoading:()=>Sf,UI:()=>w,SessionStorageCard:()=>eU,SequenceCard:()=>xU,SecureStorageCard:()=>ZH,PieTelegramRoot:()=>WH,PieRoot:()=>qH,PieMaxRoot:()=>_H,PieCard:()=>_,PieBaseRoot:()=>QH,PIEBREAK:()=>Rf,OneOfCard:()=>JH,IOEventsCard:()=>sU,HiddenCard:()=>lU,HTMLEmbedCard:()=>cU,DeviceStorageCard:()=>UH,CloudStorageCard:()=>PH,BoxCard:()=>VH,AutoRedirectCard:()=>iU,AjaxGroupCard:()=>zH});module.exports=bH(SP);var d=require("react");var Wf=require("react"),u=Wf.createContext(null),i=()=>{let f=Wf.useContext(u);if(!f)throw new Error("usePieConfig must be used within PieConfigProvider");return f},b=()=>{let{apiServer:f}=i();return f},Qf=b,v=()=>{let{centrifugeServer:f}=i();return f};var m=()=>{let{enableRenderingLog:f}=i();return f},OU=m,XU=()=>{let{pageProcessor:f}=i();return f};var Rf="__piedemo__";var qU=require("react"),rf=require("centrifuge"),GU=new Map,p=(f,U)=>{if(!U)return null;let P=`${f}::${U}`,H=GU.get(P);if(H)return H;async function D(){let Z=await fetch(f+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new rf.Centrifuge.UnauthorizedError("Backend is not answering");throw new Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let z=new rf.Centrifuge(U,{getToken:D});return GU.set(P,z),z},vH=qU.createContext(null),k=vH;var WU=require("socket.io-client"),QU=require("react"),BU=new Map,c=(f)=>{let U=BU.get(f);if(U)return U;let P=WU.io(f,{autoConnect:!1,transports:["websocket"]});return BU.set(f,P),P},pH=QU.createContext(null),j=pH;var RU=YU(require("mitt")),t=require("react"),nf=null;function x(){if(!nf)nf=RU.default();return nf}var _U=t.createContext(null);function wU(f){let U=t.useContext(_U);return t.useCallback((P,H)=>{(U??x()).emit(`pie${P}_${f}`,H)},[f,U])}var N=_U;var cH=({card:f,data:U,children:P,useSocketioSupport:H=!1,useCentrifugeSupport:D=!1,useMittSupport:z=!1,centrifugeChannel:Z=void 0,methods:T=void 0})=>{let $=OU(),V=d.useRef(T);if(V.current=T,$)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:H,centrifuge:D,mitt:z,centrifugeChannel:Z}),console.log("[PieCard] Methods:",T?Object.keys(T):"none"),console.log("[PieCard] Has children:",!!P);let O=d.useContext(j),X=d.useContext(k),G=d.useContext(N);if(d.useEffect(()=>{if(!O||!H||!V.current||!U.name){if($&&H)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!O,useSocketioSupport:H,hasMethods:!!V.current,hasDataName:!!U?.name});return}let I=Object.keys(V.current??{}).map((Y)=>{let C=`pie${Y}_${U.name}`;if($)console.log(`[PieCard] Socket.IO registering event: ${C}`);let q=(B)=>{V.current?.[Y]?.(B)};return O.on(C,q),[C,q]});return()=>{I.forEach(([Y,C])=>{if($)console.log(`[PieCard] Socket.IO unregistering event: ${Y}`);O.off(Y,C)})}},[O,U.name,H]),d.useEffect(()=>{if(!X||!D||!Z||!U.name){if($&&D)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!X,useCentrifugeSupport:D,hasCentrifugeChannel:!!Z,hasMethods:!!V.current,hasDataName:!!U?.name});return}let I=Object.keys(V.current??{}).map((Y)=>{let C=`pie${Y}_${U.name}_${Z}`;if($)console.log(`[PieCard] Centrifuge subscribing to channel: ${C}`);let q=X.newSubscription(C);return q.on("publication",(B)=>{if($)console.log(`[PieCard] Centrifuge received data on ${C}:`,B.data);V.current?.[Y]?.(B.data)}),q.subscribe(),q});return()=>{I.forEach((Y)=>{if($)console.log("[PieCard] Centrifuge unsubscribing from channel");Y.unsubscribe(),X.removeSubscription(Y)})}},[X,Z,U.name,D]),d.useEffect(()=>{if(!G||!z||!U.name){if($&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!G,useMittSupport:z,hasMethods:!!V.current,hasDataName:!!U?.name});return}let J=Object.keys(V.current??{}),I={};return J.forEach((Y)=>{let C=`pie${Y}_${U.name}`,q=(B)=>{if($)console.log(`[PieCard] Mitt registering event: ${C}`);V.current?.[Y]?.(B)};I[C]=q,G.on(C,q)}),()=>{Object.entries(I).forEach(([Y,C])=>{if($)console.log(`[PieCard] Mitt unregistering event: ${Y}`);G.off(Y,C)})}},[G,U.name,z]),$)console.log("[PieCard] Rendering complete, returning children");return P},_=cH;var KU=require("react"),tf=new Map;function SU(f,U){return KU.lazy(()=>{if(tf.has(U))return tf.get(U);let P=f().then((H)=>H);return tf.set(U,P),P})}var g=new Map,hH=(f)=>{if(!f.name)throw new Error("Component registration requires a name");if(!f.component&&!f.loader)throw new Error(`Component "${f.name}" requires component or loader`);let U={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=SU(U.loader,f.name),U.loader=void 0,U.isLazy=!0;return U};function W(f){let U=hH(f);return g.set(U.name,U),U.component}var FU=(f)=>{f.forEach((U)=>W(U))},MU=(f)=>{g.delete(f)},LU=(f)=>{return g.has(f)},AU=(f)=>{return g.get(f)?.metadata},s=(f)=>{return g.get(f)},NU=()=>{return Array.from(g.keys())},oU=()=>{return g.size};var a=require("react");var yU=require("react"),_f=require("react/jsx-runtime"),lH=yU.createContext(_f.jsx(_f.Fragment,{})),M=lH;var wf=require("react/jsx-runtime");function rH({uiConfig:f,setUiAjaxConfiguration:U}){let P=a.useContext(M),H=m();if(H)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let D=s(f.card);if(!D?.component){if(H)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return P}if(H)console.log("[UI] Found component in registry:",{name:D.name,isLazy:D.isLazy,hasMetadata:!!D.metadata});let z=D.component,Z=wf.jsx(z,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(D.isLazy){if(H)console.log("[UI] Rendering lazy component with Suspense:",D.name);return wf.jsx(a.Suspense,{fallback:D.fallback?wf.jsx(D.fallback,{}):P,children:Z},`${D.name}`)}if(H)console.log("[UI] Rendering component directly:",D.name);return Z}var w=a.memo(rH);var Kf=require("react");var mU=require("react"),nH=mU.createContext(null),o=nH;var If=require("react/jsx-runtime");function EU({uiConfig:f,setUiAjaxConfiguration:U}){let P=Kf.useContext(M),H=m();if(H)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let D=s(f.card);if(!D?.component){if(H)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return P}if(H)console.log("[UILoading] Found component in registry:",{name:D.name,isLazy:D.isLazy,hasMetadata:!!D.metadata,hasFallback:!!D.fallback});if(D.fallback){if(H)console.log("[UILoading] Rendering fallback for:",D.name);let T=D.fallback;return If.jsx(T,{})}if(H)console.log("[UILoading] No fallback, rendering full component:",D.name);let z=D.component,Z=If.jsx(o.Provider,{value:EU,children:If.jsx(z,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(D.isLazy)return If.jsx(Kf.Suspense,{fallback:P,children:Z},`${D.name}`);return Z}var Sf=EU;var kU=require("react");var Ff=require("react/jsx-runtime"),iH=({data:f,content:U,setUiAjaxConfiguration:P})=>{let{name:H,sx:D}=f,z=kU.useContext(o)??w;return Ff.jsx(_,{card:H,data:f,children:Ff.jsx("div",{style:D,id:H,children:U.map((Z,T)=>{return Ff.jsx(z,{uiConfig:Z,setUiAjaxConfiguration:P},`children-${T}`)})})})},jU=iH;var xU=W({name:"SequenceCard",component:jU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var dU=require("react");var sf=require("react/jsx-runtime"),tH=({data:f,content:U,setUiAjaxConfiguration:P})=>{let{name:H}=f,D=dU.useContext(o)??w;return sf.jsx(_,{card:H,data:f,children:U.map((z,Z)=>{return sf.jsx(D,{uiConfig:z,setUiAjaxConfiguration:P},`children-${Z}`)})})},uU=tH;var bU=W({name:"UnionCard",component:uU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var Mf=require("react"),gU=YU(require("html-react-parser"));var E=require("react");function sH(){let f=new AudioContext,U=f.createOscillator(),P=U.connect(f.createMediaStreamDestination());U.start();let H=P.stream.getAudioTracks()[0];return H.enabled=!1,H}function Cf(f=null,U){let[P,H]=E.useState(!1),D=E.useRef(null),z=E.useRef(null),Z=E.useRef(null),T=E.useCallback(async(X,G=!0)=>{if(D.current)$();let J=new RTCPeerConnection;if(J.onconnectionstatechange=()=>{if(J.connectionState==="connected")H(!0);else if(["disconnected","failed","closed"].includes(J.connectionState))H(!1)},J.ontrack=(R)=>{if(f)f.srcObject=R.streams[0]},G){let R=await navigator.mediaDevices.getUserMedia({audio:!0});J.addTrack(R.getTracks()[0],R)}else{let R=sH();J.addTrack(R)}let I=J.createDataChannel("oai-events");z.current=I,Z.current=new Promise((R)=>{I.addEventListener("open",()=>{R()})});let Y=await J.createOffer();await J.setLocalDescription(Y);let Q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:Y.sdp,headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/sdp"}})).text();await J.setRemoteDescription({type:"answer",sdp:Q}),D.current=J,await Z.current},[f]),$=E.useCallback(()=>{let X=z.current;if(X)X.close();D.current?.getSenders()?.forEach((G)=>G.track?.stop()),D.current?.close(),H(!1),D.current=null,z.current=null,Z.current=null},[f]),V=E.useCallback((X)=>{let G=z.current;if(!G){console.error("Data channel is not ready",X);return}let J=new Date().toLocaleTimeString();if(X.event_id=X.event_id||crypto.randomUUID(),G.send(JSON.stringify(X)),!X.timestamp)X.timestamp=J;U?.(X)},[U,f]),O=E.useCallback((X)=>{if(!z.current){console.error("Data channel is not ready");return}let J=()=>{V({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:X}]}}),V({type:"response.create"})};if(Z.current)Z.current.then(J);else J()},[U,f]);return E.useEffect(()=>{let X=z.current;if(!X)return;let G=(J)=>{let I=JSON.parse(J.data);if(!I.timestamp)I.timestamp=new Date().toLocaleTimeString();U?.(I)};return X.addEventListener("message",G),()=>{X.removeEventListener("message",G)}},[U,f]),{isSessionActive:P,startSession:T,stopSession:$,sendTextMessage:O}}var pU=require("react/jsx-runtime"),aH=({data:f})=>{let{html:U,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:D,centrifugeChannel:z}=f,[Z,T]=Mf.useState(U),{isSessionActive:$,startSession:V,sendTextMessage:O}=Cf(null,(I)=>{if(console.log(I.type,I.type==="response.output_text.delta"&&I.delta),I.type==="response.output_text.delta"&&I.delta)T((Y)=>Y+I.delta)});return Mf.useEffect(()=>{T(U)},[U]),pU.jsx(_,{card:"HTMLEmbedCard",data:f,methods:{update:(I)=>{T(I.value)},generateUsingAI:async(I)=>{try{if(!$&&I.token)await V(I.token,!1);O(I.prompt)}catch(Y){console.error("Failed to generate using AI",Y)}},initializeAI:async(I)=>{if(!$&&I.token)await V(I.token,!1)}},useCentrifugeSupport:H,useSocketioSupport:P,useMittSupport:D,centrifugeChannel:z,children:gU.default(Z)})},vU=aH;var cU=W({name:"HTMLEmbedCard",component:vU,metadata:{author:"Swarm.ing"}});var Lf=require("react");var af=require("react/jsx-runtime"),eH=({data:f})=>{let{name:U,value:P,useSocketioSupport:H,useCentrifugeSupport:D,useMittSupport:z,centrifugeChannel:Z}=f,[T,$]=Lf.useState(P);return Lf.useEffect(()=>{$(P)},[P]),af.jsx(_,{card:"HiddenCard",data:f,useSocketioSupport:H,useCentrifugeSupport:D,useMittSupport:z,centrifugeChannel:Z,methods:{update:({value:V})=>{$(V)}},children:af.jsx("input",{type:"hidden",id:U,name:U,value:T})})},hU=eH;var lU=W({name:"HiddenCard",component:hU,metadata:{author:"Swarm.ing"}});var Jf=require("react");var rU=require("react"),fP=rU.createContext(void 0),y=fP;var Af=require("react/jsx-runtime"),UP=({data:f})=>{let{url:U}=f,P=Jf.useContext(y),H=Jf.useContext(M);return Jf.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else P?.(U)},[U,P]),Af.jsx(Af.Fragment,{children:H})},nU=UP;var iU=W({name:"AutoRedirectCard",component:nU,metadata:{author:"Swarm.ing"}});var h=require("react-toastify"),Nf=require("react-toastify");var ff=require("react");var e=require("react/jsx-runtime"),HP={bounce:h.Bounce,slide:h.Slide,zoom:h.Zoom,flip:h.Flip},PP=(f)=>{let U={...f,type:f.alertType,transition:f.transition?HP[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};Nf.toast(f.message,U)},DP=(f)=>{console.log("Log event",f)},ZP=(f)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(H){console.error("[IOEventsCard] Failed to show notification",H)}},P=window.Notification.permission;if(P==="granted"){U();return}if(P==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((H)=>{if(H==="granted")U()})},$P=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:P,useMittSupport:H,centrifugeChannel:D}=f,z=ff.useContext(y),Z=ff.useRef(z);Z.current=z;let T=ff.useMemo(()=>({alert:PP,log:DP,push:ZP,redirect:($)=>{if($.to){let V=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(V))window.location.href=V;else Z.current?.(V)}else window.location.reload()},reload:($)=>{if($.to){let V=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(V))window.location.href=V;else Z.current?.(V)}else window.location.reload()}}),[]);return e.jsx(e.Fragment,{children:e.jsx(_,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:P,useMittSupport:H,centrifugeChannel:D,methods:T,children:e.jsx(Nf.ToastContainer,{})})})},tU=$P;var sU=W({name:"IOEventsCard",component:tU,metadata:{author:"Swarm.ing"}});var Yf=require("react");var ef=require("react/jsx-runtime"),zP=({data:f})=>{let{name:U,key:P,value:H,useSocketioSupport:D,useCentrifugeSupport:z,useMittSupport:Z,centrifugeChannel:T}=f,[$,V]=Yf.useState(H);return Yf.useEffect(()=>{V(H)},[H]),Yf.useEffect(()=>{if(typeof window==="undefined")return;sessionStorage.setItem(P,$)},[P,$]),ef.jsx(_,{card:"SessionStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:z,useMittSupport:Z,centrifugeChannel:T,methods:{update:({value:O})=>{V(O)},remove:()=>{sessionStorage.removeItem(P),V("")}},children:ef.jsx("input",{type:"hidden",id:U,name:U,value:$})})},aU=zP;var eU=W({name:"SessionStorageCard",component:aU,metadata:{author:"PieData"}});var Of=require("react");var fU=require("react/jsx-runtime"),TP=({data:f})=>{let{name:U,key:P,value:H,useSocketioSupport:D,useCentrifugeSupport:z,useMittSupport:Z,centrifugeChannel:T}=f,[$,V]=Of.useState(H);return Of.useEffect(()=>{V(H)},[H]),Of.useEffect(()=>{if(typeof window==="undefined")return;localStorage.setItem(P,$)},[P,$]),fU.jsx(_,{card:"DeviceStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:z,useMittSupport:Z,centrifugeChannel:T,methods:{update:({value:O})=>{V(O)},remove:()=>{localStorage.removeItem(P),V("")}},children:fU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},fH=TP;var UH=W({name:"DeviceStorageCard",component:fH,metadata:{author:"PieData"}});var Xf=require("react");var UU=require("react/jsx-runtime"),VP=({data:f})=>{let{name:U,key:P,value:H,useSocketioSupport:D,useCentrifugeSupport:z,useMittSupport:Z,centrifugeChannel:T}=f,[$,V]=Xf.useState(H);return Xf.useEffect(()=>{V(H)},[H]),Xf.useEffect(()=>{if(typeof window==="undefined")return;let O=window.Telegram?.WebApp?.CloudStorage;if(!O)return;O.setItem(P,$)},[P,$]),UU.jsx(_,{card:"CloudStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:z,useMittSupport:Z,centrifugeChannel:T,methods:{update:({value:O})=>{V(O)},remove:()=>{let O=window.Telegram?.WebApp?.CloudStorage;if(O)O.removeItem(P);V("")}},children:UU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},HH=VP;var PH=W({name:"CloudStorageCard",component:HH,metadata:{author:"PieData"}});var Gf=require("react");var HU=require("react/jsx-runtime"),IP=({data:f})=>{let{name:U,key:P,value:H,useSocketioSupport:D,useCentrifugeSupport:z,useMittSupport:Z,centrifugeChannel:T}=f,[$,V]=Gf.useState(H);return Gf.useEffect(()=>{V(H)},[H]),Gf.useEffect(()=>{if(typeof window==="undefined")return;let O=window.Telegram?.WebApp?.SecureStorage;if(!O)return;O.setItem(P,$)},[P,$]),HU.jsx(_,{card:"SecureStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:z,useMittSupport:Z,centrifugeChannel:T,methods:{update:({value:O})=>{V(O)},remove:()=>{let O=window.Telegram?.WebApp?.SecureStorage;if(O)O.removeItem(P);V("")}},children:HU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},DH=IP;var ZH=W({name:"SecureStorageCard",component:DH,metadata:{author:"PieData"}});var L=require("react");var PU=require("react/jsx-runtime"),CP=({data:f,content:U})=>{let{useLoader:P,noReturn:H,returnType:D,useSocketioSupport:z,useCentrifugeSupport:Z,useMittSupport:T,centrifugeChannel:$}=f,V=L.useContext(M),O=L.useContext(o)??w,[X,G]=L.useState(!1),[J,I]=L.useState(null),Y=L.useRef(U),C=L.useContext(N),q=L.useCallback((R)=>{if(R===null)G(!0);else if(G(!1),!H)Y.current=R;if(!H)I(R)},[H]),B=L.useCallback((R)=>{Y.current=R.content,I(R.content)},[]),Q=L.useCallback((R)=>{if(R===null)G(!0);else if(G(!1),!H)for(let qf of R)C?.emit(qf.name,qf.data)},[H,C]);if(L.useEffect(()=>{I(U),G(!1)},[U]),!J&&P)return V;return PU.jsx(_,{card:"AjaxGroupCard",data:f,methods:{changeContent:B},useSocketioSupport:z,useCentrifugeSupport:Z,useMittSupport:T,centrifugeChannel:$,children:PU.jsx(O,{uiConfig:J??Y.current,setUiAjaxConfiguration:D==="events"?Q:q})})},$H=CP;var zH=W({name:"AjaxGroupCard",component:$H,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var DU=require("react");var of=require("react/jsx-runtime"),JP=({data:f,content:U,setUiAjaxConfiguration:P})=>{let{name:H,url:D,sx:z}=f,Z=DU.useContext(y),T=DU.useContext(o)??w;return of.jsx(_,{card:H,data:f,children:of.jsx("div",{style:z,id:H,onClick:(V)=>{if(D)if(V.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(D))window.location.href=D;else Z?.(D)},children:of.jsx(T,{setUiAjaxConfiguration:P,uiConfig:U})})})},TH=JP;var VH=W({name:"BoxCard",component:TH,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var IH=require("react");var yf=require("react/jsx-runtime"),YP=({data:f,content:U,setUiAjaxConfiguration:P})=>{let{name:H,sx:D}=f,z=IH.useContext(o)??w;return yf.jsx(_,{card:H,data:f,children:yf.jsx("div",{style:D,id:H,children:U.map((Z,T)=>{return yf.jsx(z,{uiConfig:Z,setUiAjaxConfiguration:P},`children-${T}`)})})})},CH=YP;var JH=W({name:"OneOfCard",component:CH,metadata:{author:"Swarm.ing",description:"Different variants"}});var Hf=require("react"),Pf=require("@tanstack/react-query");var xf=require("react");var kf=require("react"),mf=new Map,Ef=new Map;function jf(f,U){let P=`${f}::${U}`,H=f?mf.get(P):void 0,[D,z]=kf.useState(H??null);return kf.useEffect(()=>{if(!f)return;if(mf.has(P)){z(mf.get(P));return}let Z=Ef.get(P);if(!Z)Z=fetch(f+`api/support/${U}`,{method:"GET"}).then(($)=>$.json()).then(($)=>{return mf.set(P,$),Ef.delete(P),$}).catch(($)=>{throw Ef.delete(P),$}),Ef.set(P,Z);let T=!1;return Z.then(($)=>{if(!T)z($)}).catch(()=>{}),()=>{T=!0}},[f,U,P]),D}var ZU=null,YH=null;function OH(){YH?.()}function $U(){if(typeof window==="undefined")return Promise.resolve();if(typeof window.sid!=="undefined")return Promise.resolve();if(!ZU)ZU=new Promise((f)=>{YH=()=>{f()}});return ZU}var OP=({children:f})=>{let U=xf.useContext(j),P=Qf(),H=jf(P,"socketIO"),D=(z)=>{if(typeof window!=="undefined")window.sid=z.sid,OH(),console.log(`SocketIO initialized: ${window.sid}`)};return xf.useEffect(()=>{if(!U)return;let z=()=>{console.log("SocketIO connected")},Z=(T)=>{console.log(`SocketIO disconnected: ${T}`),U.connect()};if(H)U.on("pieinit",D),U.on("connect",z),U.on("disconnect",Z),U.connect();return()=>{if(H)U.off("pieinit",D),U.off("connect",z),U.off("disconnect",Z),U.disconnect()}},[U,H]),f},l=OP;var df=require("react");var XP=({children:f})=>{let U=df.useContext(k),P=Qf(),H=jf(P,"centrifuge");return df.useEffect(()=>{if(!U)return;let D=()=>{console.log("Centrifuge connected")},z=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(H)U.on("connected",D),U.on("disconnected",z),U.connect();return()=>{if(H)U.disconnect()}},[U,H]),f},r=XP;var GH=require("axios-date-transformer");var XH=require("react/jsx-runtime");function Uf(f,U,P){if(!U)return P;let H=f.replace(/^\//,""),D=U[H];if(!D)return P;return XH.jsx(Sf,{uiConfig:D})}var K=require("react/jsx-runtime"),GP=({location:f,fallback:U,piecache:P,onError:H,queryOptions:D,disableGlobalForm:z})=>{let Z=b(),T=v(),$=m(),V=Hf.useMemo(()=>GH.createAxiosDateTransformer({baseURL:Z||""}),[Z]),O=Hf.useMemo(()=>x(),[]),X=Hf.useMemo(()=>Z?c(Z):null,[Z]),G=Hf.useMemo(()=>Z?p(Z,T):null,[Z,T]),{data:J,isLoading:I,error:Y}=Pf.useQuery({queryKey:["uiConfig",f.pathname+f.search,Z],enabled:!!Z,queryFn:async()=>{let q=new URLSearchParams(f.search);q.set("__pieroot","web");let B="/api/content"+f.pathname+"?"+q.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",B);let Q=await V.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",Q.data);return Q.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...D}),C=Uf(f.pathname,P,U);if(!Z)return C??null;if($)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",T),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!P);if(Y){if($)console.error("[PieRoot] Error fetching UI configuration:",Y),console.error("[PieRoot] Error details:",{message:Y.message,status:Y.response?.status,data:Y.response?.data});return H?.(),C}if(I||!J){if($)console.log("[PieRoot] Loading state:",{isLoading:I,hasUiConfiguration:!!J});return C}if($)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return K.jsx(N.Provider,{value:O,children:K.jsx(j.Provider,{value:X,children:K.jsx(k.Provider,{value:G,children:K.jsx(M.Provider,{value:U??K.jsx(K.Fragment,{}),children:K.jsx(l,{children:K.jsx(r,{children:z?K.jsx(w,{uiConfig:J}):K.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:K.jsx(w,{uiConfig:J})})})})})})})})},qP=(f)=>{let U=Hf.useMemo(()=>new Pf.QueryClient,[]);return K.jsx(y.Provider,{value:f.onNavigate,children:K.jsx(u.Provider,{value:f.config,children:K.jsx(Pf.QueryClientProvider,{client:U,children:K.jsx(GP,{...f})})})})},qH=qP;var Df=require("react"),Zf=require("@tanstack/react-query");var BH=require("axios-date-transformer");var uf=require("react");var bf=({onError:f}={})=>{let[U,P]=uf.useState(null),H=XU();return uf.useEffect(()=>{if(typeof window==="undefined")return;let D=window.Telegram?.WebApp;if(!D)return;try{D.ready?.()}catch(z){f?.()}if(H==="telegram_expanded"&&(D.platform==="ios"||D.platform==="android"))D.expand();P(D)},[]),U};var S=require("react/jsx-runtime"),BP=({location:f,fallback:U,piecache:P,onError:H,queryOptions:D,disableGlobalForm:z})=>{let Z=b(),T=v(),$=m(),V=Df.useMemo(()=>BH.createAxiosDateTransformer({baseURL:Z}),[Z]),O=Df.useMemo(()=>x(),[]),X=Df.useMemo(()=>Z?c(Z):null,[Z]),G=Df.useMemo(()=>Z?p(Z,T):null,[Z,T]),J=bf({onError:H}),{data:I,isLoading:Y,error:C}=Zf.useQuery({queryKey:["uiConfig",f.pathname+f.search,J?.initData],enabled:!!J?.initData,queryFn:async()=>{let B=new URLSearchParams(f.search);if(B.set("__pieroot","telegram"),J?.initData)B.set("initData",J.initData);let Q="/api/content"+f.pathname+"?"+B.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",Q);let R=await V.get(Q,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(B)=>Math.min(1000*2**B,30000),...D}),q=Uf(f.pathname,P,U);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(C&&$)return console.error("[PieRoot] Error fetching UI configuration:",C),console.error("[PieRoot] Error details:",{message:C.message,status:C.response?.status,data:C.response?.data}),H?.(),q;if(Y||!I){if($)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!I});return q}if($)console.log("[PieRoot] UI configuration loaded successfully:",I),console.log("[PieRoot] Rendering UI with configuration");return S.jsx(N.Provider,{value:O,children:S.jsx(j.Provider,{value:X,children:S.jsx(k.Provider,{value:G,children:S.jsx(M.Provider,{value:U??S.jsx(S.Fragment,{}),children:S.jsx(l,{children:S.jsx(r,{children:z?S.jsx(w,{uiConfig:I}):S.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:S.jsx(w,{uiConfig:I})})})})})})})})},WP=(f)=>{let U=Df.useMemo(()=>new Zf.QueryClient,[]);return S.jsx(y.Provider,{value:f.onNavigate,children:S.jsx(u.Provider,{value:f.config,children:S.jsx(Zf.QueryClientProvider,{client:U,children:S.jsx(BP,{...f})})})})},WH=WP;var $f=require("react"),gf=require("@tanstack/react-query");var A=require("react/jsx-runtime"),QP=({location:f,fallback:U,children:P,disableGlobalForm:H})=>{let D=b(),z=v(),Z=m(),T=$f.useMemo(()=>x(),[]),$=$f.useMemo(()=>D?c(D):null,[D]),V=$f.useMemo(()=>D?p(D,z):null,[D,z]);if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!U);return A.jsx(N.Provider,{value:T,children:A.jsx(j.Provider,{value:$,children:A.jsx(k.Provider,{value:V,children:A.jsx(M.Provider,{value:U??A.jsx(A.Fragment,{}),children:A.jsx(l,{children:A.jsx(r,{children:H?P:A.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:P})})})})})})})},RP=(f)=>{let[U]=$f.useState(()=>new gf.QueryClient);return A.jsx(y.Provider,{value:f.onNavigate,children:A.jsx(u.Provider,{value:f.config,children:A.jsx(gf.QueryClientProvider,{client:U,children:A.jsx(QP,{...f})})})})},QH=RP;var zf=require("react"),Tf=require("@tanstack/react-query");var RH=require("axios-date-transformer");var vf=require("react"),pf=()=>{let[f,U]=vf.useState(null);return vf.useEffect(()=>{if(typeof window==="undefined")return;let P=window.WebApp;if(!P)return;P.ready(),U(P)},[]),f};var F=require("react/jsx-runtime"),_P=({location:f,fallback:U,piecache:P,onError:H,queryOptions:D,disableGlobalForm:z})=>{let Z=b(),T=v(),$=m(),V=zf.useMemo(()=>RH.createAxiosDateTransformer({baseURL:Z}),[Z]),O=zf.useMemo(()=>x(),[]),X=zf.useMemo(()=>Z?c(Z):null,[Z]),G=zf.useMemo(()=>Z?p(Z,T):null,[Z,T]),J=pf(),{data:I,isLoading:Y,error:C}=Tf.useQuery({queryKey:["uiConfig",f.pathname+f.search,J?.initData],queryFn:async()=>{let B=new URLSearchParams(f.search);if(B.set("__pieroot","max"),J?.initData)B.set("initData",J.initData);let Q="/api/content"+f.pathname+"?"+B.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",Q);let R=await V.get(Q,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},enabled:!!J?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(B)=>Math.min(1000*2**B,30000),...D}),q=Uf(f.pathname,P,U);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(C&&$)return console.error("[PieRoot] Error fetching UI configuration:",C),console.error("[PieRoot] Error details:",{message:C.message,status:C.response?.status,data:C.response?.data}),H?.(),q;if(Y||!I){if($)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!I});return q}if($)console.log("[PieRoot] UI configuration loaded successfully:",I),console.log("[PieRoot] Rendering UI with configuration");return F.jsx(N.Provider,{value:O,children:F.jsx(j.Provider,{value:X,children:F.jsx(k.Provider,{value:G,children:F.jsx(M.Provider,{value:U??F.jsx(F.Fragment,{}),children:F.jsx(l,{children:F.jsx(r,{children:z?F.jsx(w,{uiConfig:I}):F.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:F.jsx(w,{uiConfig:I})})})})})})})})},wP=(f)=>{let U=zf.useMemo(()=>new Tf.QueryClient,[]);return F.jsx(y.Provider,{value:f.onNavigate,children:F.jsx(u.Provider,{value:f.config,children:F.jsx(Tf.QueryClientProvider,{client:U,children:F.jsx(_P,{...f})})})})},_H=wP;var wH=require("react"),zU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw new Error("SocketIO isn't initialized properly");return[window.sid]}let P=document.getElementsByName(f);if(!P.length){if(U)console.warn(`No input found with name ${f}`);return[]}let H=P[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},KP=(f,U={},P=[],H,D)=>{let z=D?.renderingLogEnabled??!1,Z=D?.timeout,T=D?.retryPolicy,$=T?.maxRetries??0,V=T?.baseDelay??1000,O=T?.retryOn??[502,503,504];if(z)console.log("Registering AJAX: ",H,U,P);return async(X={})=>{if(typeof window==="undefined"||typeof document==="undefined"){if(z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let G=D?.apiServer;if(!G){if(z)console.warn("AJAX skipped: apiServer is missing");return}if(!H||!f){if(z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(P.includes("sid"))await $U();let J=new FormData;for(let[C,q]of Object.entries({...U,...X}))J.append(C,q);for(let C of P)for(let q of zU(C,z))J.append(C,q);let I=G+"api/ajax_content"+H;f(null);let Y;for(let C=0;C<=$;C++){if(C>0){let Q=V*2**(C-1);if(z)console.log(`AJAX retry ${C}/${$} after ${Q}ms`);await new Promise((R)=>setTimeout(R,Q))}let q=Z!=null?new AbortController:null,B=q&&setTimeout(()=>q.abort(),Z);try{let Q=await fetch(I,{method:"POST",body:J,signal:q?.signal});if(B)clearTimeout(B);if(!Q.ok&&O.includes(Q.status)&&C<$){Y=new Error(`HTTP ${Q.status}`);continue}let qf=(Q.headers.get("content-type")||"").includes("application/json");if(!!Q.body?.getReader&&!qf){let Bf=Q.body.getReader(),mH=new TextDecoder,n="";while(!0){let{done:hf,value:EH}=await Bf.read();if(hf)break;n+=mH.decode(EH,{stream:!0});let VU=n.split(`
3
+ `);n=VU.pop()??"";for(let kH of VU){let lf=kH.trim();if(!lf)continue;try{let jH=JSON.parse(lf);f([jH])}catch{if(z)console.warn("Failed to parse streamed line:",lf)}}}if(n.trim())try{let hf=JSON.parse(n);f([hf])}catch{if(z)console.warn("Failed to parse final streamed line:",n)}return{}}else{let Bf=await Q.json();return f(Bf),Bf}}catch(Q){if(B)clearTimeout(B);if(Y=Q,C<$)continue;if(z)console.error("AJAX request failed:",Q);return f(null),Q}}if(z)console.error("AJAX request failed after retries:",Y);return f(null),Y}},KH=(f,U={},P=[],H,D)=>{let{apiServer:z,enableRenderingLog:Z}=i(),T=JSON.stringify(U),$=JSON.stringify(P),V=JSON.stringify(D);return wH.useMemo(()=>KP(f,U,P,H,{apiServer:z,renderingLogEnabled:Z,timeout:D?.timeout,retryPolicy:D?.retryPolicy}),[f,T,$,H,z,Z,V])};var SH=require("@openai/agents"),cf=require("react");var FH=/^pie(.+?)_(.+)$/;function TU(f=x(),U={}){let P=[],H=new Set;for(let D of f.all.keys()){if(typeof D!=="string")continue;let z=D.match(FH);if(!z)continue;let[,Z,T]=z,$={methodName:Z,cardName:T,eventName:D};if(U.filter&&!U.filter($))continue;let V=U.nameFor?.($)??`${T}_${Z}`;if(H.has(V))continue;H.add(V);let O=U.describe?.($)??`Invokes the "${Z}" method on the PieCard "${T}" by emitting the in-process mitt event "${D}". The optional "payload" argument is forwarded verbatim to the card's handler.`;P.push(SH.tool({name:V,description:O,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(X)=>{let G=X?.payload;return f.emit(D,G),`Emitted "${D}"`}}))}return P}function MH(f={}){let P=cf.useContext(N)??x(),H=[];for(let $ of P.all.keys())if(typeof $==="string"&&FH.test($))H.push($);H.sort();let D=H.join("|"),{filter:z,describe:Z,nameFor:T}=f;return cf.useMemo(()=>TU(P,{filter:z,describe:Z,nameFor:T}),[P,D,z,Z,T])}var LH=require("clsx"),AH=require("tailwind-merge");function NH(...f){return AH.twMerge(LH.clsx(f))}var oH=()=>{if(typeof document==="undefined")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var yH=(f,U)=>`${f}${Rf}${U}`;
@@ -361,5 +361,26 @@
361
361
  ],
362
362
  "$schema": "http://json-schema.org/draft-07/schema#"
363
363
  }
364
+ },
365
+ {
366
+ "card": "OneOfCard",
367
+ "data": {
368
+ "type": "object",
369
+ "properties": {
370
+ "name": {
371
+ "type": "string"
372
+ },
373
+ "sx": {
374
+ "type": "object",
375
+ "additionalProperties": {}
376
+ }
377
+ },
378
+ "additionalProperties": false,
379
+ "required": [
380
+ "name",
381
+ "sx"
382
+ ],
383
+ "$schema": "http://json-schema.org/draft-07/schema#"
384
+ }
364
385
  }
365
386
  ]
@@ -26,6 +26,24 @@ export type GetAjaxSubmitOptions = {
26
26
  /** Retry policy for failed requests. No retries if omitted. */
27
27
  retryPolicy?: RetryPolicy;
28
28
  };
29
+ /**
30
+ * Reads the value(s) for a single dep name from the DOM, following the same
31
+ * convention used by Ajax cards. Returns an array because file inputs can
32
+ * contribute multiple values for the same key.
33
+ *
34
+ * - `'sid'` resolves to `window.sid`. The caller must ensure SocketIO is
35
+ * ready (e.g. via {@link waitForSidAvailable}) before calling this.
36
+ * - Other names are looked up via `document.getElementsByName`; only the
37
+ * first match is read.
38
+ * - `<input type="file">` returns every selected `File`.
39
+ * - Other `<input>` / `<textarea>` returns the current `.value`.
40
+ * - Missing inputs return `[]` (and emit a warning when `renderingLogEnabled`).
41
+ *
42
+ * Must run in a browser environment — relies on `document` and `window`.
43
+ *
44
+ * @throws if `depName === 'sid'` and `window.sid` is not initialized.
45
+ */
46
+ export declare const readAjaxKey: (depName: string, renderingLogEnabled?: boolean) => Array<string | File>;
29
47
  /**
30
48
  * Builds an async "submit" function that issues an AJAX request to
31
49
  * `api/ajax_content{pathname}` and streams (or JSON-decodes) the response
@@ -1 +1 @@
1
- {"version":3,"file":"ajaxCommonUtils.d.ts","sourceRoot":"","sources":["../../src/util/ajaxCommonUtils.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,CAAA;AACjB,OAAO,EAAE,0BAA0B,EAAe,MAAM,UAAU,CAAA;AAKlE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kJAAkJ;IAClJ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,uEAAuE;IACvE,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,WAAW,CAAA;CAC5B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,aAAa,GACtB,yBAAyB,0BAA0B,EACnD,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAChC,YAAW,KAAK,CAAC,MAAM,CAAM,EAC7B,WAAW,MAAM,EACjB,UAAU,oBAAoB,MAahB,cAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,iBA6LtD,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,GACtB,yBAAyB,0BAA0B,EACnD,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAChC,YAAW,KAAK,CAAC,MAAM,CAAM,EAC7B,WAAW,MAAM,EACjB,UAAU;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE,oBAnN9B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBA+OjD,CAAA"}
1
+ {"version":3,"file":"ajaxCommonUtils.d.ts","sourceRoot":"","sources":["../../src/util/ajaxCommonUtils.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,CAAA;AACjB,OAAO,EAAE,0BAA0B,EAAe,MAAM,UAAU,CAAA;AAKlE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kJAAkJ;IAClJ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,uEAAuE;IACvE,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,WAAW,CAAA;CAC5B,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW,GACpB,SAAS,MAAM,EACf,sBAAqB,OAAe,KACrC,KAAK,CAAC,MAAM,GAAG,IAAI,CA0BrB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,aAAa,GACtB,yBAAyB,0BAA0B,EACnD,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAChC,YAAW,KAAK,CAAC,MAAM,CAAM,EAC7B,WAAW,MAAM,EACjB,UAAU,oBAAoB,MAahB,cAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,iBAuKtD,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,GACtB,yBAAyB,0BAA0B,EACnD,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAChC,YAAW,KAAK,CAAC,MAAM,CAAM,EAC7B,WAAW,MAAM,EACjB,UAAU;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE,oBA7L9B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBAyNjD,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swarm.ing/pieui",
3
- "version": "2.0.21",
3
+ "version": "2.0.22",
4
4
  "description": "A React component library featuring PieCard component",
5
5
  "repository": {
6
6
  "type": "git",