@piedata/pieui 2.0.5 → 2.0.6

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.
Files changed (46) hide show
  1. package/dist/cli.js +223 -97
  2. package/dist/code/commands/init.d.ts.map +1 -1
  3. package/dist/code/templates/index.d.ts +2 -1
  4. package/dist/code/templates/index.d.ts.map +1 -1
  5. package/dist/code/templates/nextConfig.d.ts +3 -0
  6. package/dist/code/templates/nextConfig.d.ts.map +1 -0
  7. package/dist/components/Common/CloudStorageCard/index.d.ts +3 -0
  8. package/dist/components/Common/CloudStorageCard/index.d.ts.map +1 -0
  9. package/dist/components/Common/CloudStorageCard/types/index.d.ts +13 -0
  10. package/dist/components/Common/CloudStorageCard/types/index.d.ts.map +1 -0
  11. package/dist/components/Common/CloudStorageCard/ui/CloudStorageCard.d.ts +4 -0
  12. package/dist/components/Common/CloudStorageCard/ui/CloudStorageCard.d.ts.map +1 -0
  13. package/dist/components/Common/DeviceStorageCard/index.d.ts +3 -0
  14. package/dist/components/Common/DeviceStorageCard/index.d.ts.map +1 -0
  15. package/dist/components/Common/DeviceStorageCard/types/index.d.ts +13 -0
  16. package/dist/components/Common/DeviceStorageCard/types/index.d.ts.map +1 -0
  17. package/dist/components/Common/DeviceStorageCard/ui/DeviceStorageCard.d.ts +4 -0
  18. package/dist/components/Common/DeviceStorageCard/ui/DeviceStorageCard.d.ts.map +1 -0
  19. package/dist/components/Common/SecureStorageCard/index.d.ts +3 -0
  20. package/dist/components/Common/SecureStorageCard/index.d.ts.map +1 -0
  21. package/dist/components/Common/SecureStorageCard/types/index.d.ts +13 -0
  22. package/dist/components/Common/SecureStorageCard/types/index.d.ts.map +1 -0
  23. package/dist/components/Common/SecureStorageCard/ui/SecureStorageCard.d.ts +4 -0
  24. package/dist/components/Common/SecureStorageCard/ui/SecureStorageCard.d.ts.map +1 -0
  25. package/dist/components/Common/SessionStorageCard/index.d.ts +3 -0
  26. package/dist/components/Common/SessionStorageCard/index.d.ts.map +1 -0
  27. package/dist/components/Common/SessionStorageCard/types/index.d.ts +13 -0
  28. package/dist/components/Common/SessionStorageCard/types/index.d.ts.map +1 -0
  29. package/dist/components/Common/SessionStorageCard/ui/SessionStorageCard.d.ts +4 -0
  30. package/dist/components/Common/SessionStorageCard/ui/SessionStorageCard.d.ts.map +1 -0
  31. package/dist/components/index.d.ts +4 -0
  32. package/dist/components/index.d.ts.map +1 -1
  33. package/dist/components/index.esm.js +1 -1
  34. package/dist/components/index.js +1 -1
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.esm.js +2 -2
  38. package/dist/index.js +2 -2
  39. package/dist/pieui.components.json +144 -0
  40. package/dist/tests/mittAgentTools.test.d.ts +2 -0
  41. package/dist/tests/mittAgentTools.test.d.ts.map +1 -0
  42. package/dist/util/ajaxCommonUtils.d.ts +21 -2
  43. package/dist/util/ajaxCommonUtils.d.ts.map +1 -1
  44. package/dist/util/mittAgentTools.d.ts +89 -0
  45. package/dist/util/mittAgentTools.d.ts.map +1 -0
  46. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{useContext as E,useEffect as j,useRef as Jo}from"react";import{createContext as Zo,useContext as Do}from"react";var Lo=Zo(null),zo=()=>{let o=Do(Lo);if(!o)throw new Error("usePieConfig must be used within PieConfigProvider");return o};var p=()=>{let{enableRenderingLog:o}=zo();return o},i=p;import{createContext as Bo}from"react";import{Centrifuge as bf}from"centrifuge";var qo=Bo(null),v=qo;import{io as mf}from"socket.io-client";import{createContext as $o}from"react";var Go=$o(null),c=Go;import vf from"mitt";import{createContext as Fo,useCallback as nf,useContext as hf}from"react";var Oo=Fo(null);var K=Oo;var Xo=({card:o,data:f,children:A,useSocketioSupport:I=!1,useCentrifugeSupport:U=!1,useMittSupport:T=!1,centrifugeChannel:H=void 0,methods:B=void 0})=>{let C=i(),w=Jo(B);if(w.current=B,C)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",f),console.log("[PieCard] Component name:",f?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:U,mitt:T,centrifugeChannel:H}),console.log("[PieCard] Methods:",B?Object.keys(B):"none"),console.log("[PieCard] Has children:",!!A);let O=E(c),D=E(v),z=E(K);if(j(()=>{if(!O||!I||!w.current||!f.name){if(C&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!O,useSocketioSupport:I,hasMethods:!!w.current,hasDataName:!!f?.name});return}let P=Object.keys(w.current??{}).map((Z)=>{let q=`pie${Z}_${f.name}`;if(C)console.log(`[PieCard] Socket.IO registering event: ${q}`);let J=(Q)=>{w.current?.[Z]?.(Q)};return O.on(q,J),[q,J]});return()=>{P.forEach(([Z,q])=>{if(C)console.log(`[PieCard] Socket.IO unregistering event: ${Z}`);O.off(Z,q)})}},[O,f.name,I]),j(()=>{if(!D||!U||!H||!f.name){if(C&&U)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!D,useCentrifugeSupport:U,hasCentrifugeChannel:!!H,hasMethods:!!w.current,hasDataName:!!f?.name});return}let P=Object.keys(w.current??{}).map((Z)=>{let q=`pie${Z}_${f.name}_${H}`;if(C)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let J=D.newSubscription(q);return J.on("publication",(Q)=>{if(C)console.log(`[PieCard] Centrifuge received data on ${q}:`,Q.data);w.current?.[Z]?.(Q.data)}),J.subscribe(),J});return()=>{P.forEach((Z)=>{if(C)console.log("[PieCard] Centrifuge unsubscribing from channel");Z.unsubscribe(),D.removeSubscription(Z)})}},[D,H,f.name,U]),j(()=>{if(!z||!T||!f.name){if(C&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!z,useMittSupport:T,hasMethods:!!w.current,hasDataName:!!f?.name});return}let L=Object.keys(w.current??{}),P={};return L.forEach((Z)=>{let q=`pie${Z}_${f.name}`,J=(Q)=>{if(C)console.log(`[PieCard] Mitt registering event: ${q}`);w.current?.[Z]?.(Q)};P[q]=J,z.on(q,J)}),()=>{Object.entries(P).forEach(([Z,q])=>{if(C)console.log(`[PieCard] Mitt unregistering event: ${Z}`);z.off(Z,q)})}},[z,f.name,T]),C)console.log("[PieCard] Rendering complete, returning children");return A},F=Xo;import{lazy as Qo}from"react";var l=new Map;function u(o,f){return Qo(()=>{if(l.has(f))return l.get(f);let A=o().then((I)=>I);return l.set(f,A),A})}var n=new Map,Yo=(o)=>{if(!o.name)throw new Error("Component registration requires a name");if(!o.component&&!o.loader)throw new Error(`Component "${o.name}" requires component or loader`);let f={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!f.component&&f.loader)f.component=u(f.loader,o.name),f.loader=void 0,f.isLazy=!0;return f};function G(o){let f=Yo(o);return n.set(f.name,f),f.component}var R=(o)=>{return n.get(o)};import{Suspense as Ro,useContext as _o,memo as xo}from"react";import{createContext as Vo}from"react";import{jsx as Ko,Fragment as po}from"react/jsx-runtime";var Wo=Vo(Ko(po,{})),V=Wo;import{jsx as y}from"react/jsx-runtime";function Mo({uiConfig:o,setUiAjaxConfiguration:f}){let A=_o(V),I=p();if(I)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!f);let U=R(o.card);if(!U?.component){if(I)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return A}if(I)console.log("[UI] Found component in registry:",{name:U.name,isLazy:U.isLazy,hasMetadata:!!U.metadata});let T=U.component,H=y(T,{data:o.data,content:o.content,setUiAjaxConfiguration:f});if(U.isLazy){if(I)console.log("[UI] Rendering lazy component with Suspense:",U.name);return y(Ro,{fallback:U.fallback?y(U.fallback,{}):A,children:H},`${U.name}`)}if(I)console.log("[UI] Rendering component directly:",U.name);return H}var Y=xo(Mo);import{Suspense as lo,useContext as yo}from"react";import{createContext as Eo}from"react";var jo=Eo(null),X=jo;import{jsx as _}from"react/jsx-runtime";function h({uiConfig:o,setUiAjaxConfiguration:f}){let A=yo(V),I=p();if(I)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!f);let U=R(o.card);if(!U?.component){if(I)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return A}if(I)console.log("[UILoading] Found component in registry:",{name:U.name,isLazy:U.isLazy,hasMetadata:!!U.metadata,hasFallback:!!U.fallback});if(U.fallback){if(I)console.log("[UILoading] Rendering fallback for:",U.name);let B=U.fallback;return _(B,{})}if(I)console.log("[UILoading] No fallback, rendering full component:",U.name);let T=U.component,H=_(X.Provider,{value:h,children:_(T,{data:o.data,content:o.content,setUiAjaxConfiguration:f})});if(U.isLazy)return _(lo,{fallback:A,children:H},`${U.name}`);return H}var bo=h;import{useContext as No}from"react";import{jsx as b}from"react/jsx-runtime";var ko=({data:o,content:f,setUiAjaxConfiguration:A})=>{let{name:I,sx:U}=o,T=No(X)??Y;return b(F,{card:I,data:o,children:b("div",{style:U,id:I,children:f.map((H,B)=>{return b(T,{uiConfig:H,setUiAjaxConfiguration:A},`children-${B}`)})})})},a=ko;var mo=G({name:"SequenceCard",component:a,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});import{useContext as ro}from"react";import{jsx as s}from"react/jsx-runtime";var So=({data:o,content:f,setUiAjaxConfiguration:A})=>{let{name:I}=o,U=ro(X)??Y;return s(F,{card:I,data:o,children:f.map((T,H)=>{return s(U,{uiConfig:T,setUiAjaxConfiguration:A},`children-${H}`)})})},t=So;var go=G({name:"UnionCard",component:t,metadata:{author:"PieData",description:"Renders one of many components"}});import{useEffect as uo,useState as no}from"react";import ho from"html-react-parser";import{useCallback as x,useEffect as io,useRef as N,useState as vo}from"react";function co(){let o=new AudioContext,f=o.createOscillator(),A=f.connect(o.createMediaStreamDestination());f.start();let I=A.stream.getAudioTracks()[0];return I.enabled=!1,I}function k(o=null,f){let[A,I]=vo(!1),U=N(null),T=N(null),H=N(null),B=x(async(D,z=!0)=>{if(U.current)C();let L=new RTCPeerConnection;if(L.onconnectionstatechange=()=>{if(L.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes(L.connectionState))I(!1)},L.ontrack=($)=>{if(o)o.srcObject=$.streams[0]},z){let $=await navigator.mediaDevices.getUserMedia({audio:!0});L.addTrack($.getTracks()[0],$)}else{let $=co();L.addTrack($)}let P=L.createDataChannel("oai-events");T.current=P,H.current=new Promise(($)=>{P.addEventListener("open",()=>{$()})});let Z=await L.createOffer();await L.setLocalDescription(Z);let M=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:Z.sdp,headers:{Authorization:`Bearer ${D}`,"Content-Type":"application/sdp"}})).text();await L.setRemoteDescription({type:"answer",sdp:M}),U.current=L,await H.current},[o]),C=x(()=>{let D=T.current;if(D)D.close();U.current?.getSenders()?.forEach((z)=>z.track?.stop()),U.current?.close(),I(!1),U.current=null,T.current=null,H.current=null},[o]),w=x((D)=>{let z=T.current;if(!z){console.error("Data channel is not ready",D);return}let L=new Date().toLocaleTimeString();if(D.event_id=D.event_id||crypto.randomUUID(),z.send(JSON.stringify(D)),!D.timestamp)D.timestamp=L;f?.(D)},[f,o]),O=x((D)=>{if(!T.current){console.error("Data channel is not ready");return}let L=()=>{w({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:D}]}}),w({type:"response.create"})};if(H.current)H.current.then(L);else L()},[f,o]);return io(()=>{let D=T.current;if(!D)return;let z=(L)=>{let P=JSON.parse(L.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();f?.(P)};return D.addEventListener("message",z),()=>{D.removeEventListener("message",z)}},[f,o]),{isSessionActive:A,startSession:B,stopSession:C,sendTextMessage:O}}import{jsx as so}from"react/jsx-runtime";var ao=({data:o})=>{let{html:f,useSocketioSupport:A,useCentrifugeSupport:I,useMittSupport:U,centrifugeChannel:T}=o,[H,B]=no(f),{isSessionActive:C,startSession:w,sendTextMessage:O}=k(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)B((Z)=>Z+P.delta)});return uo(()=>{B(f)},[f]),so(F,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{B(P.value)},generateUsingAI:async(P)=>{try{if(!C&&P.token)await w(P.token,!1);O(P.prompt)}catch(Z){console.error("Failed to generate using AI",Z)}},initializeAI:async(P)=>{if(!C&&P.token)await w(P.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:A,useMittSupport:U,centrifugeChannel:T,children:ho(H)})},e=ao;var to=G({name:"HTMLEmbedCard",component:e,metadata:{author:"PieData"}});import{useEffect as eo,useState as of}from"react";import{jsx as oo}from"react/jsx-runtime";var ff=({data:o})=>{let{name:f,value:A,useSocketioSupport:I,useCentrifugeSupport:U,useMittSupport:T,centrifugeChannel:H}=o,[B,C]=of(A);return eo(()=>{C(A)},[A]),oo(F,{card:"HiddenCard",data:o,useSocketioSupport:I,useCentrifugeSupport:U,useMittSupport:T,centrifugeChannel:H,methods:{update:({value:w})=>{C(w)}},children:oo("input",{type:"hidden",id:f,name:f,value:B})})},fo=ff;var Uf=G({name:"HiddenCard",component:fo,metadata:{author:"PieData"}});import{useContext as Uo,useEffect as Pf}from"react";import{createContext as If}from"react";var Af=If(void 0),W=Af;import{jsx as wf,Fragment as Tf}from"react/jsx-runtime";var Hf=({data:o})=>{let{url:f}=o,A=Uo(W),I=Uo(V);return Pf(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(f))window.location.href=f;else A?.(f)},[f,A]),wf(Tf,{children:I})},Io=Hf;var Cf=G({name:"AutoRedirectCard",component:Io,metadata:{author:"PieData"}});import{Bounce as Zf,Slide as Df,Zoom as Lf,Flip as zf}from"react-toastify";import{toast as Bf,ToastContainer as qf}from"react-toastify";import{useContext as $f,useMemo as Gf,useRef as Ff}from"react";import{jsx as m,Fragment as Vf}from"react/jsx-runtime";var Of={bounce:Zf,slide:Df,zoom:Lf,flip:zf},Jf=(o)=>{let f={...o,type:o.alertType,transition:o.transition?Of[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};Bf(o.message,f)},Xf=(o)=>{console.log("Log event",o)},Qf=(o)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let f=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(I){console.error("[IOEventsCard] Failed to show notification",I)}},A=window.Notification.permission;if(A==="granted"){f();return}if(A==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")f()})},Yf=({data:o})=>{let{useCentrifugeSupport:f,useSocketioSupport:A,useMittSupport:I,centrifugeChannel:U}=o,T=$f(W),H=Ff(T);H.current=T;let B=Gf(()=>({alert:Jf,log:Xf,push:Qf,redirect:(C)=>{if(C.to){let w=C.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(w))window.location.href=w;else H.current?.(w)}else window.location.reload()},reload:(C)=>{if(C.to){let w=C.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(w))window.location.href=w;else H.current?.(w)}else window.location.reload()}}),[]);return m(Vf,{children:m(F,{card:"IOEventsCard",data:o,useCentrifugeSupport:f,useSocketioSupport:A,useMittSupport:I,centrifugeChannel:U,methods:B,children:m(qf,{})})})},Ao=Yf;var Wf=G({name:"IOEventsCard",component:Ao,metadata:{author:"PieData"}});import{useCallback as d,useContext as r,useEffect as pf,useRef as Kf,useState as Po}from"react";import{jsx as Ho}from"react/jsx-runtime";var Rf=({data:o,content:f})=>{let{useLoader:A,noReturn:I,returnType:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:B,centrifugeChannel:C}=o,w=r(V),O=r(X)??Y,[D,z]=Po(!1),[L,P]=Po(null),Z=Kf(f),q=r(K),J=d(($)=>{if($===null)z(!0);else if(z(!1),!I)Z.current=$;if(!I)P($)},[I]),Q=d(($)=>{Z.current=$.content,P($.content)},[]),M=d(($)=>{if($===null)z(!0);else if(z(!1),!I)for(let g of $)q?.emit(g.name,g.data)},[I,q]);if(pf(()=>{P(f),z(!1)},[f]),!L&&A)return w;return Ho(F,{card:"AjaxGroupCard",data:o,methods:{changeContent:Q},useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:B,centrifugeChannel:C,children:Ho(O,{uiConfig:L??Z.current,setUiAjaxConfiguration:U==="events"?M:J})})},To=Rf;var _f=G({name:"AjaxGroupCard",component:To,metadata:{author:"PieData",description:"Group card with AJAX support"}});import{useContext as wo}from"react";import{jsx as S}from"react/jsx-runtime";var xf=({data:o,content:f,setUiAjaxConfiguration:A})=>{let{name:I,url:U,sx:T}=o,H=wo(W),B=wo(X)??Y;return S(F,{card:I,data:o,children:S("div",{style:T,id:I,onClick:(w)=>{if(U)if(w.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else H?.(U)},children:S(B,{setUiAjaxConfiguration:A,uiConfig:f})})})},Co=xf;var Mf=G({name:"BoxCard",component:Co,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});export{go as UnionCard,bo as UILoading,Y as UI,mo as SequenceCard,F as PieCard,Wf as IOEventsCard,Uf as HiddenCard,to as HTMLEmbedCard,Mf as BoxCard,Cf as AutoRedirectCard,_f as AjaxGroupCard};
2
+ import{useContext as Q,useEffect as W,useRef as Wo}from"react";import{createContext as Bo,useContext as Vo}from"react";var qo=Bo(null),$o=()=>{let o=Vo(qo);if(!o)throw new Error("usePieConfig must be used within PieConfigProvider");return o};var $=()=>{let{enableRenderingLog:o}=$o();return o},E=$;import{createContext as Go}from"react";import{Centrifuge as df}from"centrifuge";var Fo=Go(null),b=Fo;import{io as If}from"socket.io-client";import{createContext as Oo}from"react";var Jo=Oo(null),N=Jo;import Af from"mitt";import{createContext as Xo,useCallback as Hf,useContext as Zf}from"react";var Qo=Xo(null);var G=Qo;var Yo=({card:o,data:r,children:C,useSocketioSupport:f=!1,useCentrifugeSupport:p=!1,useMittSupport:i=!1,centrifugeChannel:U=void 0,methods:l=void 0})=>{let d=E(),u=Wo(l);if(u.current=l,d)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:f,centrifuge:p,mitt:i,centrifugeChannel:U}),console.log("[PieCard] Methods:",l?Object.keys(l):"none"),console.log("[PieCard] Has children:",!!C);let m=Q(N),P=Q(b),D=Q(G);if(W(()=>{if(!m||!f||!u.current||!r.name){if(d&&f)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!m,useSocketioSupport:f,hasMethods:!!u.current,hasDataName:!!r?.name});return}let I=Object.keys(u.current??{}).map((S)=>{let H=`pie${S}_${r.name}`;if(d)console.log(`[PieCard] Socket.IO registering event: ${H}`);let L=(z)=>{u.current?.[S]?.(z)};return m.on(H,L),[H,L]});return()=>{I.forEach(([S,H])=>{if(d)console.log(`[PieCard] Socket.IO unregistering event: ${S}`);m.off(S,H)})}},[m,r.name,f]),W(()=>{if(!P||!p||!U||!r.name){if(d&&p)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!P,useCentrifugeSupport:p,hasCentrifugeChannel:!!U,hasMethods:!!u.current,hasDataName:!!r?.name});return}let I=Object.keys(u.current??{}).map((S)=>{let H=`pie${S}_${r.name}_${U}`;if(d)console.log(`[PieCard] Centrifuge subscribing to channel: ${H}`);let L=P.newSubscription(H);return L.on("publication",(z)=>{if(d)console.log(`[PieCard] Centrifuge received data on ${H}:`,z.data);u.current?.[S]?.(z.data)}),L.subscribe(),L});return()=>{I.forEach((S)=>{if(d)console.log("[PieCard] Centrifuge unsubscribing from channel");S.unsubscribe(),P.removeSubscription(S)})}},[P,U,r.name,p]),W(()=>{if(!D||!i||!r.name){if(d&&i)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!D,useMittSupport:i,hasMethods:!!u.current,hasDataName:!!r?.name});return}let w=Object.keys(u.current??{}),I={};return w.forEach((S)=>{let H=`pie${S}_${r.name}`,L=(z)=>{if(d)console.log(`[PieCard] Mitt registering event: ${H}`);u.current?.[S]?.(z)};I[H]=L,D.on(H,L)}),()=>{Object.entries(I).forEach(([S,H])=>{if(d)console.log(`[PieCard] Mitt unregistering event: ${S}`);D.off(S,H)})}},[D,r.name,i]),d)console.log("[PieCard] Rendering complete, returning children");return C},T=Yo;import{lazy as ao}from"react";var Y=new Map;function t(o,r){return ao(()=>{if(Y.has(r))return Y.get(r);let C=o().then((f)=>f);return Y.set(r,C),C})}var c=new Map,Mo=(o)=>{if(!o.name)throw new Error("Component registration requires a name");if(!o.component&&!o.loader)throw new Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=t(r.loader,o.name),r.loader=void 0,r.isLazy=!0;return r};function A(o){let r=Mo(o);return c.set(r.name,r),r.component}var F=(o)=>{return c.get(o)};import{Suspense as xo,useContext as ko,memo as no}from"react";import{createContext as Ko}from"react";import{jsx as _o,Fragment as yo}from"react/jsx-runtime";var Ro=Ko(_o(yo,{})),V=Ro;import{jsx as a}from"react/jsx-runtime";function Eo({uiConfig:o,setUiAjaxConfiguration:r}){let C=ko(V),f=$();if(f)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let p=F(o.card);if(!p?.component){if(f)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return C}if(f)console.log("[UI] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata});let i=p.component,U=a(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(p.isLazy){if(f)console.log("[UI] Rendering lazy component with Suspense:",p.name);return a(xo,{fallback:p.fallback?a(p.fallback,{}):C,children:U},`${p.name}`)}if(f)console.log("[UI] Rendering component directly:",p.name);return U}var B=no(Eo);import{Suspense as to,useContext as co}from"react";import{createContext as bo}from"react";var No=bo(null),g=No;import{jsx as O}from"react/jsx-runtime";function j({uiConfig:o,setUiAjaxConfiguration:r}){let C=co(V),f=$();if(f)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let p=F(o.card);if(!p?.component){if(f)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return C}if(f)console.log("[UILoading] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata,hasFallback:!!p.fallback});if(p.fallback){if(f)console.log("[UILoading] Rendering fallback for:",p.name);let l=p.fallback;return O(l,{})}if(f)console.log("[UILoading] No fallback, rendering full component:",p.name);let i=p.component,U=O(g.Provider,{value:j,children:O(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(p.isLazy)return O(to,{fallback:C,children:U},`${p.name}`);return U}var jo=j;import{useContext as vo}from"react";import{jsx as M}from"react/jsx-runtime";var so=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,sx:p}=o,i=vo(g)??B;return M(T,{card:f,data:o,children:M("div",{style:p,id:f,children:r.map((U,l)=>{return M(i,{uiConfig:U,setUiAjaxConfiguration:C},`children-${l}`)})})})},v=so;var ho=A({name:"SequenceCard",component:v,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});import{useContext as eo}from"react";import{jsx as s}from"react/jsx-runtime";var or=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f}=o,p=eo(g)??B;return s(T,{card:f,data:o,children:r.map((i,U)=>{return s(p,{uiConfig:i,setUiAjaxConfiguration:C},`children-${U}`)})})},h=or;var rr=A({name:"UnionCard",component:h,metadata:{author:"PieData",description:"Renders one of many components"}});import{useEffect as ur,useState as dr}from"react";import Ur from"html-react-parser";import{useCallback as J,useEffect as fr,useRef as K,useState as pr}from"react";function Cr(){let o=new AudioContext,r=o.createOscillator(),C=r.connect(o.createMediaStreamDestination());r.start();let f=C.stream.getAudioTracks()[0];return f.enabled=!1,f}function R(o=null,r){let[C,f]=pr(!1),p=K(null),i=K(null),U=K(null),l=J(async(P,D=!0)=>{if(p.current)d();let w=new RTCPeerConnection;if(w.onconnectionstatechange=()=>{if(w.connectionState==="connected")f(!0);else if(["disconnected","failed","closed"].includes(w.connectionState))f(!1)},w.ontrack=(Z)=>{if(o)o.srcObject=Z.streams[0]},D){let Z=await navigator.mediaDevices.getUserMedia({audio:!0});w.addTrack(Z.getTracks()[0],Z)}else{let Z=Cr();w.addTrack(Z)}let I=w.createDataChannel("oai-events");i.current=I,U.current=new Promise((Z)=>{I.addEventListener("open",()=>{Z()})});let S=await w.createOffer();await w.setLocalDescription(S);let X=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:S.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await w.setRemoteDescription({type:"answer",sdp:X}),p.current=w,await U.current},[o]),d=J(()=>{let P=i.current;if(P)P.close();p.current?.getSenders()?.forEach((D)=>D.track?.stop()),p.current?.close(),f(!1),p.current=null,i.current=null,U.current=null},[o]),u=J((P)=>{let D=i.current;if(!D){console.error("Data channel is not ready",P);return}let w=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),D.send(JSON.stringify(P)),!P.timestamp)P.timestamp=w;r?.(P)},[r,o]),m=J((P)=>{if(!i.current){console.error("Data channel is not ready");return}let w=()=>{u({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),u({type:"response.create"})};if(U.current)U.current.then(w);else w()},[r,o]);return fr(()=>{let P=i.current;if(!P)return;let D=(w)=>{let I=JSON.parse(w.data);if(!I.timestamp)I.timestamp=new Date().toLocaleTimeString();r?.(I)};return P.addEventListener("message",D),()=>{P.removeEventListener("message",D)}},[r,o]),{isSessionActive:C,startSession:l,stopSession:d,sendTextMessage:m}}import{jsx as mr}from"react/jsx-runtime";var ir=({data:o})=>{let{html:r,useSocketioSupport:C,useCentrifugeSupport:f,useMittSupport:p,centrifugeChannel:i}=o,[U,l]=dr(r),{isSessionActive:d,startSession:u,sendTextMessage:m}=R(null,(I)=>{if(console.log(I.type,I.type==="response.output_text.delta"&&I.delta),I.type==="response.output_text.delta"&&I.delta)l((S)=>S+I.delta)});return ur(()=>{l(r)},[r]),mr(T,{card:"HTMLEmbedCard",data:o,methods:{update:(I)=>{l(I.value)},generateUsingAI:async(I)=>{try{if(!d&&I.token)await u(I.token,!1);m(I.prompt)}catch(S){console.error("Failed to generate using AI",S)}},initializeAI:async(I)=>{if(!d&&I.token)await u(I.token,!1)}},useCentrifugeSupport:f,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:i,children:Ur(U)})},e=ir;var Ir=A({name:"HTMLEmbedCard",component:e,metadata:{author:"PieData"}});import{useEffect as lr,useState as Sr}from"react";import{jsx as oo}from"react/jsx-runtime";var Pr=({data:o})=>{let{name:r,value:C,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:U}=o,[l,d]=Sr(C);return lr(()=>{d(C)},[C]),oo(T,{card:"HiddenCard",data:o,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:U,methods:{update:({value:u})=>{d(u)}},children:oo("input",{type:"hidden",id:r,name:r,value:l})})},ro=Pr;var wr=A({name:"HiddenCard",component:ro,metadata:{author:"PieData"}});import{useContext as fo,useEffect as Tr}from"react";import{createContext as Ar}from"react";var Dr=Ar(void 0),q=Dr;import{jsx as Lr,Fragment as Zr}from"react/jsx-runtime";var Hr=({data:o})=>{let{url:r}=o,C=fo(q),f=fo(V);return Tr(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else C?.(r)},[r,C]),Lr(Zr,{children:f})},po=Hr;var gr=A({name:"AutoRedirectCard",component:po,metadata:{author:"PieData"}});import{Bounce as zr,Slide as Br,Zoom as Vr,Flip as qr}from"react-toastify";import{toast as $r,ToastContainer as Gr}from"react-toastify";import{useContext as Fr,useMemo as Or,useRef as Jr}from"react";import{jsx as y,Fragment as Mr}from"react/jsx-runtime";var Xr={bounce:zr,slide:Br,zoom:Vr,flip:qr},Qr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?Xr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};$r(o.message,r)},Wr=(o)=>{console.log("Log event",o)},Yr=(o)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(f){console.error("[IOEventsCard] Failed to show notification",f)}},C=window.Notification.permission;if(C==="granted"){r();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((f)=>{if(f==="granted")r()})},ar=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p}=o,i=Fr(q),U=Jr(i);U.current=i;let l=Or(()=>({alert:Qr,log:Wr,push:Yr,redirect:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else U.current?.(u)}else window.location.reload()},reload:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else U.current?.(u)}else window.location.reload()}}),[]);return y(Mr,{children:y(T,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p,methods:l,children:y(Gr,{})})})},Co=ar;var Kr=A({name:"IOEventsCard",component:Co,metadata:{author:"PieData"}});import{useEffect as uo,useState as Rr}from"react";import{jsx as Uo}from"react/jsx-runtime";var yr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=Rr(f);return uo(()=>{u(f)},[f]),uo(()=>{if(typeof window==="undefined")return;sessionStorage.setItem(C,d)},[C,d]),Uo(T,{card:"SessionStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{sessionStorage.removeItem(C),u("")}},children:Uo("input",{type:"hidden",id:r,name:r,value:d})})},io=yr;var _r=A({name:"SessionStorageCard",component:io,metadata:{author:"PieData"}});import{useEffect as mo,useState as xr}from"react";import{jsx as Io}from"react/jsx-runtime";var kr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=xr(f);return mo(()=>{u(f)},[f]),mo(()=>{if(typeof window==="undefined")return;localStorage.setItem(C,d)},[C,d]),Io(T,{card:"DeviceStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{localStorage.removeItem(C),u("")}},children:Io("input",{type:"hidden",id:r,name:r,value:d})})},lo=kr;var nr=A({name:"DeviceStorageCard",component:lo,metadata:{author:"PieData"}});import{useEffect as So,useState as Er}from"react";import{jsx as Po}from"react/jsx-runtime";var br=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=Er(f);return So(()=>{u(f)},[f]),So(()=>{if(typeof window==="undefined")return;let m=window.Telegram?.WebApp?.CloudStorage;if(!m)return;m.setItem(C,d)},[C,d]),Po(T,{card:"CloudStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{let m=window.Telegram?.WebApp?.CloudStorage;if(m)m.removeItem(C);u("")}},children:Po("input",{type:"hidden",id:r,name:r,value:d})})},wo=br;var Nr=A({name:"CloudStorageCard",component:wo,metadata:{author:"PieData"}});import{useEffect as Ao,useState as tr}from"react";import{jsx as Do}from"react/jsx-runtime";var cr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=tr(f);return Ao(()=>{u(f)},[f]),Ao(()=>{if(typeof window==="undefined")return;let m=window.Telegram?.WebApp?.SecureStorage;if(!m)return;m.setItem(C,d)},[C,d]),Do(T,{card:"SecureStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{let m=window.Telegram?.WebApp?.SecureStorage;if(m)m.removeItem(C);u("")}},children:Do("input",{type:"hidden",id:r,name:r,value:d})})},To=cr;var jr=A({name:"SecureStorageCard",component:To,metadata:{author:"PieData"}});import{useCallback as _,useContext as x,useEffect as vr,useRef as sr,useState as Ho}from"react";import{jsx as Zo}from"react/jsx-runtime";var hr=({data:o,content:r})=>{let{useLoader:C,noReturn:f,returnType:p,useSocketioSupport:i,useCentrifugeSupport:U,useMittSupport:l,centrifugeChannel:d}=o,u=x(V),m=x(g)??B,[P,D]=Ho(!1),[w,I]=Ho(null),S=sr(r),H=x(G),L=_((Z)=>{if(Z===null)D(!0);else if(D(!1),!f)S.current=Z;if(!f)I(Z)},[f]),z=_((Z)=>{S.current=Z.content,I(Z.content)},[]),X=_((Z)=>{if(Z===null)D(!0);else if(D(!1),!f)for(let n of Z)H?.emit(n.name,n.data)},[f,H]);if(vr(()=>{I(r),D(!1)},[r]),!w&&C)return u;return Zo(T,{card:"AjaxGroupCard",data:o,methods:{changeContent:z},useSocketioSupport:i,useCentrifugeSupport:U,useMittSupport:l,centrifugeChannel:d,children:Zo(m,{uiConfig:w??S.current,setUiAjaxConfiguration:p==="events"?X:L})})},Lo=hr;var er=A({name:"AjaxGroupCard",component:Lo,metadata:{author:"PieData",description:"Group card with AJAX support"}});import{useContext as go}from"react";import{jsx as k}from"react/jsx-runtime";var of=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,url:p,sx:i}=o,U=go(q),l=go(g)??B;return k(T,{card:f,data:o,children:k("div",{style:i,id:f,onClick:(u)=>{if(p)if(u.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(p))window.location.href=p;else U?.(p)},children:k(l,{setUiAjaxConfiguration:C,uiConfig:r})})})},zo=of;var rf=A({name:"BoxCard",component:zo,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});export{rr as UnionCard,jo as UILoading,B as UI,_r as SessionStorageCard,ho as SequenceCard,jr as SecureStorageCard,T as PieCard,Kr as IOEventsCard,wr as HiddenCard,Ir as HTMLEmbedCard,nr as DeviceStorageCard,Nr as CloudStorageCard,rf as BoxCard,gr as AutoRedirectCard,er as AjaxGroupCard};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var So=Object.create;var{getPrototypeOf:go,defineProperty:j,getOwnPropertyNames:Po,getOwnPropertyDescriptor:io}=Object,Ho=Object.prototype.hasOwnProperty;var To=(o,f,A)=>{A=o!=null?So(go(o)):{};let U=f||!o||!o.__esModule?j(A,"default",{value:o,enumerable:!0}):A;for(let I of Po(o))if(!Ho.call(U,I))j(U,I,{get:()=>o[I],enumerable:!0});return U},Ao=new WeakMap,vo=(o)=>{var f=Ao.get(o),A;if(f)return f;if(f=j({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")Po(o).map((U)=>!Ho.call(f,U)&&j(f,U,{get:()=>o[U],enumerable:!(A=io(o,U))||A.enumerable}));return Ao.set(o,f),f};var co=(o,f)=>{for(var A in f)j(o,A,{get:f[A],enumerable:!0,configurable:!0,set:(U)=>f[A]=()=>U})};var Jf={};co(Jf,{UnionCard:()=>Wo,UILoading:()=>Oo,UI:()=>V,SequenceCard:()=>Qo,PieCard:()=>G,IOEventsCard:()=>bo,HiddenCard:()=>Mo,HTMLEmbedCard:()=>_o,BoxCard:()=>ro,AutoRedirectCard:()=>lo,AjaxGroupCard:()=>ko});module.exports=vo(Jf);var Y=require("react");var N=require("react"),uo=N.createContext(null),no=()=>{let o=N.useContext(uo);if(!o)throw new Error("usePieConfig must be used within PieConfigProvider");return o};var l=()=>{let{enableRenderingLog:o}=no();return o},wo=l;var Co=require("react"),ho=require("centrifuge");var ao=Co.createContext(null),Zo=ao;var so=require("socket.io-client"),Do=require("react");var to=Do.createContext(null),Lo=to;var eo=To(require("mitt")),k=require("react");var of=k.createContext(null);var m=of;var ff=({card:o,data:f,children:A,useSocketioSupport:U=!1,useCentrifugeSupport:I=!1,useMittSupport:T=!1,centrifugeChannel:H=void 0,methods:B=void 0})=>{let C=wo(),w=Y.useRef(B);if(w.current=B,C)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",f),console.log("[PieCard] Component name:",f?.name),console.log("[PieCard] Real-time support:",{socketio:U,centrifuge:I,mitt:T,centrifugeChannel:H}),console.log("[PieCard] Methods:",B?Object.keys(B):"none"),console.log("[PieCard] Has children:",!!A);let J=Y.useContext(Lo),D=Y.useContext(Zo),z=Y.useContext(m);if(Y.useEffect(()=>{if(!J||!U||!w.current||!f.name){if(C&&U)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!J,useSocketioSupport:U,hasMethods:!!w.current,hasDataName:!!f?.name});return}let P=Object.keys(w.current??{}).map((Z)=>{let q=`pie${Z}_${f.name}`;if(C)console.log(`[PieCard] Socket.IO registering event: ${q}`);let Q=(p)=>{w.current?.[Z]?.(p)};return J.on(q,Q),[q,Q]});return()=>{P.forEach(([Z,q])=>{if(C)console.log(`[PieCard] Socket.IO unregistering event: ${Z}`);J.off(Z,q)})}},[J,f.name,U]),Y.useEffect(()=>{if(!D||!I||!H||!f.name){if(C&&I)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!D,useCentrifugeSupport:I,hasCentrifugeChannel:!!H,hasMethods:!!w.current,hasDataName:!!f?.name});return}let P=Object.keys(w.current??{}).map((Z)=>{let q=`pie${Z}_${f.name}_${H}`;if(C)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let Q=D.newSubscription(q);return Q.on("publication",(p)=>{if(C)console.log(`[PieCard] Centrifuge received data on ${q}:`,p.data);w.current?.[Z]?.(p.data)}),Q.subscribe(),Q});return()=>{P.forEach((Z)=>{if(C)console.log("[PieCard] Centrifuge unsubscribing from channel");Z.unsubscribe(),D.removeSubscription(Z)})}},[D,H,f.name,I]),Y.useEffect(()=>{if(!z||!T||!f.name){if(C&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!z,useMittSupport:T,hasMethods:!!w.current,hasDataName:!!f?.name});return}let L=Object.keys(w.current??{}),P={};return L.forEach((Z)=>{let q=`pie${Z}_${f.name}`,Q=(p)=>{if(C)console.log(`[PieCard] Mitt registering event: ${q}`);w.current?.[Z]?.(p)};P[q]=Q,z.on(q,Q)}),()=>{Object.entries(P).forEach(([Z,q])=>{if(C)console.log(`[PieCard] Mitt unregistering event: ${Z}`);z.off(Z,q)})}},[z,f.name,T]),C)console.log("[PieCard] Rendering complete, returning children");return A},G=ff;var zo=require("react"),s=new Map;function Bo(o,f){return zo.lazy(()=>{if(s.has(f))return s.get(f);let A=o().then((U)=>U);return s.set(f,A),A})}var qo=new Map,Uf=(o)=>{if(!o.name)throw new Error("Component registration requires a name");if(!o.component&&!o.loader)throw new Error(`Component "${o.name}" requires component or loader`);let f={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!f.component&&f.loader)f.component=Bo(f.loader,o.name),f.loader=void 0,f.isLazy=!0;return f};function F(o){let f=Uf(o);return qo.set(f.name,f),f.component}var d=(o)=>{return qo.get(o)};var _=require("react");var $o=require("react"),r=require("react/jsx-runtime"),If=$o.createContext(r.jsx(r.Fragment,{})),K=If;var S=require("react/jsx-runtime");function Af({uiConfig:o,setUiAjaxConfiguration:f}){let A=_.useContext(K),U=l();if(U)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!f);let I=d(o.card);if(!I?.component){if(U)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return A}if(U)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let T=I.component,H=S.jsx(T,{data:o.data,content:o.content,setUiAjaxConfiguration:f});if(I.isLazy){if(U)console.log("[UI] Rendering lazy component with Suspense:",I.name);return S.jsx(_.Suspense,{fallback:I.fallback?S.jsx(I.fallback,{}):A,children:H},`${I.name}`)}if(U)console.log("[UI] Rendering component directly:",I.name);return H}var V=_.memo(Af);var g=require("react");var Go=require("react"),Pf=Go.createContext(null),W=Pf;var y=require("react/jsx-runtime");function Fo({uiConfig:o,setUiAjaxConfiguration:f}){let A=g.useContext(K),U=l();if(U)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!f);let I=d(o.card);if(!I?.component){if(U)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return A}if(U)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(U)console.log("[UILoading] Rendering fallback for:",I.name);let B=I.fallback;return y.jsx(B,{})}if(U)console.log("[UILoading] No fallback, rendering full component:",I.name);let T=I.component,H=y.jsx(W.Provider,{value:Fo,children:y.jsx(T,{data:o.data,content:o.content,setUiAjaxConfiguration:f})});if(I.isLazy)return y.jsx(g.Suspense,{fallback:A,children:H},`${I.name}`);return H}var Oo=Fo;var Jo=require("react");var i=require("react/jsx-runtime"),Hf=({data:o,content:f,setUiAjaxConfiguration:A})=>{let{name:U,sx:I}=o,T=Jo.useContext(W)??V;return i.jsx(G,{card:U,data:o,children:i.jsx("div",{style:I,id:U,children:f.map((H,B)=>{return i.jsx(T,{uiConfig:H,setUiAjaxConfiguration:A},`children-${B}`)})})})},Xo=Hf;var Qo=F({name:"SequenceCard",component:Xo,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});var Yo=require("react");var t=require("react/jsx-runtime"),Tf=({data:o,content:f,setUiAjaxConfiguration:A})=>{let{name:U}=o,I=Yo.useContext(W)??V;return t.jsx(G,{card:U,data:o,children:f.map((T,H)=>{return t.jsx(I,{uiConfig:T,setUiAjaxConfiguration:A},`children-${H}`)})})},Vo=Tf;var Wo=F({name:"UnionCard",component:Vo,metadata:{author:"PieData",description:"Renders one of many components"}});var v=require("react"),po=To(require("html-react-parser"));var X=require("react");function wf(){let o=new AudioContext,f=o.createOscillator(),A=f.connect(o.createMediaStreamDestination());f.start();let U=A.stream.getAudioTracks()[0];return U.enabled=!1,U}function e(o=null,f){let[A,U]=X.useState(!1),I=X.useRef(null),T=X.useRef(null),H=X.useRef(null),B=X.useCallback(async(D,z=!0)=>{if(I.current)C();let L=new RTCPeerConnection;if(L.onconnectionstatechange=()=>{if(L.connectionState==="connected")U(!0);else if(["disconnected","failed","closed"].includes(L.connectionState))U(!1)},L.ontrack=($)=>{if(o)o.srcObject=$.streams[0]},z){let $=await navigator.mediaDevices.getUserMedia({audio:!0});L.addTrack($.getTracks()[0],$)}else{let $=wf();L.addTrack($)}let P=L.createDataChannel("oai-events");T.current=P,H.current=new Promise(($)=>{P.addEventListener("open",()=>{$()})});let Z=await L.createOffer();await L.setLocalDescription(Z);let a=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:Z.sdp,headers:{Authorization:`Bearer ${D}`,"Content-Type":"application/sdp"}})).text();await L.setRemoteDescription({type:"answer",sdp:a}),I.current=L,await H.current},[o]),C=X.useCallback(()=>{let D=T.current;if(D)D.close();I.current?.getSenders()?.forEach((z)=>z.track?.stop()),I.current?.close(),U(!1),I.current=null,T.current=null,H.current=null},[o]),w=X.useCallback((D)=>{let z=T.current;if(!z){console.error("Data channel is not ready",D);return}let L=new Date().toLocaleTimeString();if(D.event_id=D.event_id||crypto.randomUUID(),z.send(JSON.stringify(D)),!D.timestamp)D.timestamp=L;f?.(D)},[f,o]),J=X.useCallback((D)=>{if(!T.current){console.error("Data channel is not ready");return}let L=()=>{w({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:D}]}}),w({type:"response.create"})};if(H.current)H.current.then(L);else L()},[f,o]);return X.useEffect(()=>{let D=T.current;if(!D)return;let z=(L)=>{let P=JSON.parse(L.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();f?.(P)};return D.addEventListener("message",z),()=>{D.removeEventListener("message",z)}},[f,o]),{isSessionActive:A,startSession:B,stopSession:C,sendTextMessage:J}}var Ro=require("react/jsx-runtime"),Cf=({data:o})=>{let{html:f,useSocketioSupport:A,useCentrifugeSupport:U,useMittSupport:I,centrifugeChannel:T}=o,[H,B]=v.useState(f),{isSessionActive:C,startSession:w,sendTextMessage:J}=e(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)B((Z)=>Z+P.delta)});return v.useEffect(()=>{B(f)},[f]),Ro.jsx(G,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{B(P.value)},generateUsingAI:async(P)=>{try{if(!C&&P.token)await w(P.token,!1);J(P.prompt)}catch(Z){console.error("Failed to generate using AI",Z)}},initializeAI:async(P)=>{if(!C&&P.token)await w(P.token,!1)}},useCentrifugeSupport:U,useSocketioSupport:A,useMittSupport:I,centrifugeChannel:T,children:po.default(H)})},Ko=Cf;var _o=F({name:"HTMLEmbedCard",component:Ko,metadata:{author:"PieData"}});var c=require("react");var oo=require("react/jsx-runtime"),Zf=({data:o})=>{let{name:f,value:A,useSocketioSupport:U,useCentrifugeSupport:I,useMittSupport:T,centrifugeChannel:H}=o,[B,C]=c.useState(A);return c.useEffect(()=>{C(A)},[A]),oo.jsx(G,{card:"HiddenCard",data:o,useSocketioSupport:U,useCentrifugeSupport:I,useMittSupport:T,centrifugeChannel:H,methods:{update:({value:w})=>{C(w)}},children:oo.jsx("input",{type:"hidden",id:f,name:f,value:B})})},xo=Zf;var Mo=F({name:"HiddenCard",component:xo,metadata:{author:"PieData"}});var b=require("react");var Eo=require("react"),Df=Eo.createContext(void 0),x=Df;var u=require("react/jsx-runtime"),Lf=({data:o})=>{let{url:f}=o,A=b.useContext(x),U=b.useContext(K);return b.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(f))window.location.href=f;else A?.(f)},[f,A]),u.jsx(u.Fragment,{children:U})},jo=Lf;var lo=F({name:"AutoRedirectCard",component:jo,metadata:{author:"PieData"}});var R=require("react-toastify"),n=require("react-toastify");var E=require("react");var M=require("react/jsx-runtime"),zf={bounce:R.Bounce,slide:R.Slide,zoom:R.Zoom,flip:R.Flip},Bf=(o)=>{let f={...o,type:o.alertType,transition:o.transition?zf[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};n.toast(o.message,f)},qf=(o)=>{console.log("Log event",o)},$f=(o)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let f=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(U){console.error("[IOEventsCard] Failed to show notification",U)}},A=window.Notification.permission;if(A==="granted"){f();return}if(A==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((U)=>{if(U==="granted")f()})},Gf=({data:o})=>{let{useCentrifugeSupport:f,useSocketioSupport:A,useMittSupport:U,centrifugeChannel:I}=o,T=E.useContext(x),H=E.useRef(T);H.current=T;let B=E.useMemo(()=>({alert:Bf,log:qf,push:$f,redirect:(C)=>{if(C.to){let w=C.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(w))window.location.href=w;else H.current?.(w)}else window.location.reload()},reload:(C)=>{if(C.to){let w=C.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(w))window.location.href=w;else H.current?.(w)}else window.location.reload()}}),[]);return M.jsx(M.Fragment,{children:M.jsx(G,{card:"IOEventsCard",data:o,useCentrifugeSupport:f,useSocketioSupport:A,useMittSupport:U,centrifugeChannel:I,methods:B,children:M.jsx(n.ToastContainer,{})})})},yo=Gf;var bo=F({name:"IOEventsCard",component:yo,metadata:{author:"PieData"}});var O=require("react");var fo=require("react/jsx-runtime"),Ff=({data:o,content:f})=>{let{useLoader:A,noReturn:U,returnType:I,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:B,centrifugeChannel:C}=o,w=O.useContext(K),J=O.useContext(W)??V,[D,z]=O.useState(!1),[L,P]=O.useState(null),Z=O.useRef(f),q=O.useContext(m),Q=O.useCallback(($)=>{if($===null)z(!0);else if(z(!1),!U)Z.current=$;if(!U)P($)},[U]),p=O.useCallback(($)=>{Z.current=$.content,P($.content)},[]),a=O.useCallback(($)=>{if($===null)z(!0);else if(z(!1),!U)for(let Io of $)q?.emit(Io.name,Io.data)},[U,q]);if(O.useEffect(()=>{P(f),z(!1)},[f]),!L&&A)return w;return fo.jsx(G,{card:"AjaxGroupCard",data:o,methods:{changeContent:p},useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:B,centrifugeChannel:C,children:fo.jsx(J,{uiConfig:L??Z.current,setUiAjaxConfiguration:I==="events"?a:Q})})},No=Ff;var ko=F({name:"AjaxGroupCard",component:No,metadata:{author:"PieData",description:"Group card with AJAX support"}});var Uo=require("react");var h=require("react/jsx-runtime"),Of=({data:o,content:f,setUiAjaxConfiguration:A})=>{let{name:U,url:I,sx:T}=o,H=Uo.useContext(x),B=Uo.useContext(W)??V;return h.jsx(G,{card:U,data:o,children:h.jsx("div",{style:T,id:U,onClick:(w)=>{if(I)if(w.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(I))window.location.href=I;else H?.(I)},children:h.jsx(B,{setUiAjaxConfiguration:A,uiConfig:f})})})},mo=Of;var ro=F({name:"BoxCard",component:mo,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});
2
+ var Cr=Object.create;var{getPrototypeOf:ur,defineProperty:W,getOwnPropertyNames:wo,getOwnPropertyDescriptor:dr}=Object,Ao=Object.prototype.hasOwnProperty;var Do=(o,r,C)=>{C=o!=null?Cr(ur(o)):{};let f=r||!o||!o.__esModule?W(C,"default",{value:o,enumerable:!0}):C;for(let p of wo(o))if(!Ao.call(f,p))W(f,p,{get:()=>o[p],enumerable:!0});return f},Po=new WeakMap,Ur=(o)=>{var r=Po.get(o),C;if(r)return r;if(r=W({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")wo(o).map((f)=>!Ao.call(r,f)&&W(r,f,{get:()=>o[f],enumerable:!(C=dr(o,f))||C.enumerable}));return Po.set(o,r),r};var ir=(o,r)=>{for(var C in r)W(o,C,{get:r[C],enumerable:!0,configurable:!0,set:(f)=>r[C]=()=>f})};var _r={};ir(_r,{UnionCard:()=>Yo,UILoading:()=>Fo,UI:()=>V,SessionStorageCard:()=>to,SequenceCard:()=>Xo,SecureStorageCard:()=>eo,PieCard:()=>A,IOEventsCard:()=>bo,HiddenCard:()=>_o,HTMLEmbedCard:()=>Ro,DeviceStorageCard:()=>jo,CloudStorageCard:()=>so,BoxCard:()=>pr,AutoRedirectCard:()=>no,AjaxGroupCard:()=>rr});module.exports=Ur(_r);var B=require("react");var x=require("react"),mr=x.createContext(null),Ir=()=>{let o=x.useContext(mr);if(!o)throw new Error("usePieConfig must be used within PieConfigProvider");return o};var Y=()=>{let{enableRenderingLog:o}=Ir();return o},To=Y;var Ho=require("react"),lr=require("centrifuge");var Sr=Ho.createContext(null),Zo=Sr;var Pr=require("socket.io-client"),Lo=require("react");var wr=Lo.createContext(null),go=wr;var Ar=Do(require("mitt")),k=require("react");var Dr=k.createContext(null);var n=Dr;var Tr=({card:o,data:r,children:C,useSocketioSupport:f=!1,useCentrifugeSupport:p=!1,useMittSupport:i=!1,centrifugeChannel:U=void 0,methods:l=void 0})=>{let d=To(),u=B.useRef(l);if(u.current=l,d)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:f,centrifuge:p,mitt:i,centrifugeChannel:U}),console.log("[PieCard] Methods:",l?Object.keys(l):"none"),console.log("[PieCard] Has children:",!!C);let m=B.useContext(go),P=B.useContext(Zo),T=B.useContext(n);if(B.useEffect(()=>{if(!m||!f||!u.current||!r.name){if(d&&f)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!m,useSocketioSupport:f,hasMethods:!!u.current,hasDataName:!!r?.name});return}let I=Object.keys(u.current??{}).map((S)=>{let H=`pie${S}_${r.name}`;if(d)console.log(`[PieCard] Socket.IO registering event: ${H}`);let z=($)=>{u.current?.[S]?.($)};return m.on(H,z),[H,z]});return()=>{I.forEach(([S,H])=>{if(d)console.log(`[PieCard] Socket.IO unregistering event: ${S}`);m.off(S,H)})}},[m,r.name,f]),B.useEffect(()=>{if(!P||!p||!U||!r.name){if(d&&p)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!P,useCentrifugeSupport:p,hasCentrifugeChannel:!!U,hasMethods:!!u.current,hasDataName:!!r?.name});return}let I=Object.keys(u.current??{}).map((S)=>{let H=`pie${S}_${r.name}_${U}`;if(d)console.log(`[PieCard] Centrifuge subscribing to channel: ${H}`);let z=P.newSubscription(H);return z.on("publication",($)=>{if(d)console.log(`[PieCard] Centrifuge received data on ${H}:`,$.data);u.current?.[S]?.($.data)}),z.subscribe(),z});return()=>{I.forEach((S)=>{if(d)console.log("[PieCard] Centrifuge unsubscribing from channel");S.unsubscribe(),P.removeSubscription(S)})}},[P,U,r.name,p]),B.useEffect(()=>{if(!T||!i||!r.name){if(d&&i)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!T,useMittSupport:i,hasMethods:!!u.current,hasDataName:!!r?.name});return}let w=Object.keys(u.current??{}),I={};return w.forEach((S)=>{let H=`pie${S}_${r.name}`,z=($)=>{if(d)console.log(`[PieCard] Mitt registering event: ${H}`);u.current?.[S]?.($)};I[H]=z,T.on(H,z)}),()=>{Object.entries(I).forEach(([S,H])=>{if(d)console.log(`[PieCard] Mitt unregistering event: ${S}`);T.off(S,H)})}},[T,r.name,i]),d)console.log("[PieCard] Rendering complete, returning children");return C},A=Tr;var zo=require("react"),ro=new Map;function Bo(o,r){return zo.lazy(()=>{if(ro.has(r))return ro.get(r);let C=o().then((f)=>f);return ro.set(r,C),C})}var Vo=new Map,Hr=(o)=>{if(!o.name)throw new Error("Component registration requires a name");if(!o.component&&!o.loader)throw new Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=Bo(r.loader,o.name),r.loader=void 0,r.isLazy=!0;return r};function D(o){let r=Hr(o);return Vo.set(r.name,r),r.component}var E=(o)=>{return Vo.get(o)};var O=require("react");var qo=require("react"),b=require("react/jsx-runtime"),Zr=qo.createContext(b.jsx(b.Fragment,{})),G=Zr;var N=require("react/jsx-runtime");function Lr({uiConfig:o,setUiAjaxConfiguration:r}){let C=O.useContext(G),f=Y();if(f)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let p=E(o.card);if(!p?.component){if(f)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return C}if(f)console.log("[UI] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata});let i=p.component,U=N.jsx(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(p.isLazy){if(f)console.log("[UI] Rendering lazy component with Suspense:",p.name);return N.jsx(O.Suspense,{fallback:p.fallback?N.jsx(p.fallback,{}):C,children:U},`${p.name}`)}if(f)console.log("[UI] Rendering component directly:",p.name);return U}var V=O.memo(Lr);var t=require("react");var $o=require("react"),gr=$o.createContext(null),q=gr;var a=require("react/jsx-runtime");function Go({uiConfig:o,setUiAjaxConfiguration:r}){let C=t.useContext(G),f=Y();if(f)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let p=E(o.card);if(!p?.component){if(f)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return C}if(f)console.log("[UILoading] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata,hasFallback:!!p.fallback});if(p.fallback){if(f)console.log("[UILoading] Rendering fallback for:",p.name);let l=p.fallback;return a.jsx(l,{})}if(f)console.log("[UILoading] No fallback, rendering full component:",p.name);let i=p.component,U=a.jsx(q.Provider,{value:Go,children:a.jsx(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(p.isLazy)return a.jsx(t.Suspense,{fallback:C,children:U},`${p.name}`);return U}var Fo=Go;var Oo=require("react");var c=require("react/jsx-runtime"),zr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,sx:p}=o,i=Oo.useContext(q)??V;return c.jsx(A,{card:f,data:o,children:c.jsx("div",{style:p,id:f,children:r.map((U,l)=>{return c.jsx(i,{uiConfig:U,setUiAjaxConfiguration:C},`children-${l}`)})})})},Jo=zr;var Xo=D({name:"SequenceCard",component:Jo,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});var Qo=require("react");var fo=require("react/jsx-runtime"),Br=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f}=o,p=Qo.useContext(q)??V;return fo.jsx(A,{card:f,data:o,children:r.map((i,U)=>{return fo.jsx(p,{uiConfig:i,setUiAjaxConfiguration:C},`children-${U}`)})})},Wo=Br;var Yo=D({name:"UnionCard",component:Wo,metadata:{author:"PieData",description:"Renders one of many components"}});var j=require("react"),ao=Do(require("html-react-parser"));var g=require("react");function Vr(){let o=new AudioContext,r=o.createOscillator(),C=r.connect(o.createMediaStreamDestination());r.start();let f=C.stream.getAudioTracks()[0];return f.enabled=!1,f}function po(o=null,r){let[C,f]=g.useState(!1),p=g.useRef(null),i=g.useRef(null),U=g.useRef(null),l=g.useCallback(async(P,T=!0)=>{if(p.current)d();let w=new RTCPeerConnection;if(w.onconnectionstatechange=()=>{if(w.connectionState==="connected")f(!0);else if(["disconnected","failed","closed"].includes(w.connectionState))f(!1)},w.ontrack=(Z)=>{if(o)o.srcObject=Z.streams[0]},T){let Z=await navigator.mediaDevices.getUserMedia({audio:!0});w.addTrack(Z.getTracks()[0],Z)}else{let Z=Vr();w.addTrack(Z)}let I=w.createDataChannel("oai-events");i.current=I,U.current=new Promise((Z)=>{I.addEventListener("open",()=>{Z()})});let S=await w.createOffer();await w.setLocalDescription(S);let oo=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:S.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await w.setRemoteDescription({type:"answer",sdp:oo}),p.current=w,await U.current},[o]),d=g.useCallback(()=>{let P=i.current;if(P)P.close();p.current?.getSenders()?.forEach((T)=>T.track?.stop()),p.current?.close(),f(!1),p.current=null,i.current=null,U.current=null},[o]),u=g.useCallback((P)=>{let T=i.current;if(!T){console.error("Data channel is not ready",P);return}let w=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),T.send(JSON.stringify(P)),!P.timestamp)P.timestamp=w;r?.(P)},[r,o]),m=g.useCallback((P)=>{if(!i.current){console.error("Data channel is not ready");return}let w=()=>{u({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),u({type:"response.create"})};if(U.current)U.current.then(w);else w()},[r,o]);return g.useEffect(()=>{let P=i.current;if(!P)return;let T=(w)=>{let I=JSON.parse(w.data);if(!I.timestamp)I.timestamp=new Date().toLocaleTimeString();r?.(I)};return P.addEventListener("message",T),()=>{P.removeEventListener("message",T)}},[r,o]),{isSessionActive:C,startSession:l,stopSession:d,sendTextMessage:m}}var Ko=require("react/jsx-runtime"),qr=({data:o})=>{let{html:r,useSocketioSupport:C,useCentrifugeSupport:f,useMittSupport:p,centrifugeChannel:i}=o,[U,l]=j.useState(r),{isSessionActive:d,startSession:u,sendTextMessage:m}=po(null,(I)=>{if(console.log(I.type,I.type==="response.output_text.delta"&&I.delta),I.type==="response.output_text.delta"&&I.delta)l((S)=>S+I.delta)});return j.useEffect(()=>{l(r)},[r]),Ko.jsx(A,{card:"HTMLEmbedCard",data:o,methods:{update:(I)=>{l(I.value)},generateUsingAI:async(I)=>{try{if(!d&&I.token)await u(I.token,!1);m(I.prompt)}catch(S){console.error("Failed to generate using AI",S)}},initializeAI:async(I)=>{if(!d&&I.token)await u(I.token,!1)}},useCentrifugeSupport:f,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:i,children:ao.default(U)})},Mo=qr;var Ro=D({name:"HTMLEmbedCard",component:Mo,metadata:{author:"PieData"}});var v=require("react");var Co=require("react/jsx-runtime"),$r=({data:o})=>{let{name:r,value:C,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:U}=o,[l,d]=v.useState(C);return v.useEffect(()=>{d(C)},[C]),Co.jsx(A,{card:"HiddenCard",data:o,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:U,methods:{update:({value:u})=>{d(u)}},children:Co.jsx("input",{type:"hidden",id:r,name:r,value:l})})},yo=$r;var _o=D({name:"HiddenCard",component:yo,metadata:{author:"PieData"}});var M=require("react");var xo=require("react"),Gr=xo.createContext(void 0),J=Gr;var s=require("react/jsx-runtime"),Fr=({data:o})=>{let{url:r}=o,C=M.useContext(J),f=M.useContext(G);return M.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else C?.(r)},[r,C]),s.jsx(s.Fragment,{children:f})},ko=Fr;var no=D({name:"AutoRedirectCard",component:ko,metadata:{author:"PieData"}});var F=require("react-toastify"),h=require("react-toastify");var Q=require("react");var X=require("react/jsx-runtime"),Or={bounce:F.Bounce,slide:F.Slide,zoom:F.Zoom,flip:F.Flip},Jr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?Or[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};h.toast(o.message,r)},Xr=(o)=>{console.log("Log event",o)},Qr=(o)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(f){console.error("[IOEventsCard] Failed to show notification",f)}},C=window.Notification.permission;if(C==="granted"){r();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((f)=>{if(f==="granted")r()})},Wr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p}=o,i=Q.useContext(J),U=Q.useRef(i);U.current=i;let l=Q.useMemo(()=>({alert:Jr,log:Xr,push:Qr,redirect:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else U.current?.(u)}else window.location.reload()},reload:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else U.current?.(u)}else window.location.reload()}}),[]);return X.jsx(X.Fragment,{children:X.jsx(A,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p,methods:l,children:X.jsx(h.ToastContainer,{})})})},Eo=Wr;var bo=D({name:"IOEventsCard",component:Eo,metadata:{author:"PieData"}});var K=require("react");var uo=require("react/jsx-runtime"),Yr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=K.useState(f);return K.useEffect(()=>{u(f)},[f]),K.useEffect(()=>{if(typeof window==="undefined")return;sessionStorage.setItem(C,d)},[C,d]),uo.jsx(A,{card:"SessionStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{sessionStorage.removeItem(C),u("")}},children:uo.jsx("input",{type:"hidden",id:r,name:r,value:d})})},No=Yr;var to=D({name:"SessionStorageCard",component:No,metadata:{author:"PieData"}});var R=require("react");var Uo=require("react/jsx-runtime"),ar=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=R.useState(f);return R.useEffect(()=>{u(f)},[f]),R.useEffect(()=>{if(typeof window==="undefined")return;localStorage.setItem(C,d)},[C,d]),Uo.jsx(A,{card:"DeviceStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{localStorage.removeItem(C),u("")}},children:Uo.jsx("input",{type:"hidden",id:r,name:r,value:d})})},co=ar;var jo=D({name:"DeviceStorageCard",component:co,metadata:{author:"PieData"}});var y=require("react");var io=require("react/jsx-runtime"),Mr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=y.useState(f);return y.useEffect(()=>{u(f)},[f]),y.useEffect(()=>{if(typeof window==="undefined")return;let m=window.Telegram?.WebApp?.CloudStorage;if(!m)return;m.setItem(C,d)},[C,d]),io.jsx(A,{card:"CloudStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{let m=window.Telegram?.WebApp?.CloudStorage;if(m)m.removeItem(C);u("")}},children:io.jsx("input",{type:"hidden",id:r,name:r,value:d})})},vo=Mr;var so=D({name:"CloudStorageCard",component:vo,metadata:{author:"PieData"}});var _=require("react");var mo=require("react/jsx-runtime"),Kr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=_.useState(f);return _.useEffect(()=>{u(f)},[f]),_.useEffect(()=>{if(typeof window==="undefined")return;let m=window.Telegram?.WebApp?.SecureStorage;if(!m)return;m.setItem(C,d)},[C,d]),mo.jsx(A,{card:"SecureStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{let m=window.Telegram?.WebApp?.SecureStorage;if(m)m.removeItem(C);u("")}},children:mo.jsx("input",{type:"hidden",id:r,name:r,value:d})})},ho=Kr;var eo=D({name:"SecureStorageCard",component:ho,metadata:{author:"PieData"}});var L=require("react");var Io=require("react/jsx-runtime"),Rr=({data:o,content:r})=>{let{useLoader:C,noReturn:f,returnType:p,useSocketioSupport:i,useCentrifugeSupport:U,useMittSupport:l,centrifugeChannel:d}=o,u=L.useContext(G),m=L.useContext(q)??V,[P,T]=L.useState(!1),[w,I]=L.useState(null),S=L.useRef(r),H=L.useContext(n),z=L.useCallback((Z)=>{if(Z===null)T(!0);else if(T(!1),!f)S.current=Z;if(!f)I(Z)},[f]),$=L.useCallback((Z)=>{S.current=Z.content,I(Z.content)},[]),oo=L.useCallback((Z)=>{if(Z===null)T(!0);else if(T(!1),!f)for(let So of Z)H?.emit(So.name,So.data)},[f,H]);if(L.useEffect(()=>{I(r),T(!1)},[r]),!w&&C)return u;return Io.jsx(A,{card:"AjaxGroupCard",data:o,methods:{changeContent:$},useSocketioSupport:i,useCentrifugeSupport:U,useMittSupport:l,centrifugeChannel:d,children:Io.jsx(m,{uiConfig:w??S.current,setUiAjaxConfiguration:p==="events"?oo:z})})},or=Rr;var rr=D({name:"AjaxGroupCard",component:or,metadata:{author:"PieData",description:"Group card with AJAX support"}});var lo=require("react");var e=require("react/jsx-runtime"),yr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,url:p,sx:i}=o,U=lo.useContext(J),l=lo.useContext(q)??V;return e.jsx(A,{card:f,data:o,children:e.jsx("div",{style:i,id:f,onClick:(u)=>{if(p)if(u.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(p))window.location.href=p;else U?.(p)},children:e.jsx(l,{setUiAjaxConfiguration:C,uiConfig:r})})})},fr=yr;var pr=D({name:"BoxCard",component:fr,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});
package/dist/index.d.ts CHANGED
@@ -11,7 +11,9 @@ export { registerPieComponent, getAllRegisteredComponents, getRegistrySize, regi
11
11
  export type { PieComponentProps, PieSimpleComponentProps, PieComplexComponentProps, PieContainerComponentProps, PieComplexContainerComponentProps, PieConfig, UIConfigType, SetUiAjaxConfigurationType, } from './types';
12
12
  export type { PieQueryOptions } from './components/PieRoot/types';
13
13
  export { useAjaxSubmit } from './util/ajaxCommonUtils';
14
+ export type { RetryPolicy } from './util/ajaxCommonUtils';
14
15
  export { usePieEmit } from './util/mitt';
16
+ export { getMittAgentTools, usePieMittAgentTools, type MittAgentTool, type MittAgentToolDescriptor, type MittAgentToolsOptions, } from './util/mittAgentTools';
15
17
  export { default as useOpenAIWebRTC, type OpenAIEvent, type UseOpenAIWebRTCReturn, } from './util/useOpenAIWebRTC';
16
18
  export { cn } from './util/tailwindCommonUtils';
17
19
  export { PIEBREAK } from './util/pieConfig';
@@ -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,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAC/D,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,GACtB,MAAM,iBAAiB,CAAA;AAExB,YAAY,EACR,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,SAAS,EACT,YAAY,EACZ,0BAA0B,GAC7B,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EACH,OAAO,IAAI,eAAe,EAC1B,KAAK,WAAW,EAChB,KAAK,qBAAqB,GAC7B,MAAM,wBAAwB,CAAA;AAC/B,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;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,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,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAC/D,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,GACtB,MAAM,iBAAiB,CAAA;AAExB,YAAY,EACR,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,SAAS,EACT,YAAY,EACZ,0BAA0B,GAC7B,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EACH,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,GAC7B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACH,OAAO,IAAI,eAAe,EAC1B,KAAK,WAAW,EAChB,KAAK,qBAAqB,GAC7B,MAAM,wBAAwB,CAAA;AAC/B,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;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA"}
package/dist/index.esm.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{useContext as GU,useEffect as TU,useRef as DH}from"react";import{createContext as nU,useContext as sU}from"react";var S=nU(null),l=()=>{let U=sU(S);if(!U)throw new Error("usePieConfig must be used within PieConfigProvider");return U},m=()=>{let{apiServer:U}=l();return U},t=m,v=()=>{let{centrifugeServer:U}=l();return U};var N=()=>{let{enableRenderingLog:U}=l();return U},WU=N,FU=()=>{let{pageProcessor:U}=l();return U};var $U="__piedemo__";import{createContext as iU}from"react";import{Centrifuge as LU}from"centrifuge";var fU=new Map,d=(U,H)=>{if(!H)return null;let D=`${U}::${H}`,z=fU.get(D);if(z)return z;async function $(){let G=await fetch(U+"api/centrifuge/gen_token");if(!G.ok){if(G.status===403)throw new LU.UnauthorizedError("Backend is not answering");throw new Error(`Unexpected status code ${G.status}`)}return(await G.json()).token}let Z=new LU(H,{getToken:$});return fU.set(D,Z),Z},rU=iU(null),E=rU;import{io as tU}from"socket.io-client";import{createContext as aU}from"react";var NU=new Map,o=(U)=>{let H=NU.get(U);if(H)return H;let D=tU(U,{autoConnect:!1,transports:["websocket"]});return NU.set(U,D),D},eU=aU(null),C=eU;import UH from"mitt";import{createContext as HH,useCallback as ZH,useContext as zH}from"react";var DU=null;function b(){if(!DU)DU=UH();return DU}var MU=HH(null);function $H(U){let H=zH(MU);return ZH((D,z)=>{(H??b()).emit(`pie${D}_${U}`,z)},[U,H])}var j=MU;var GH=({card:U,data:H,children:D,useSocketioSupport:z=!1,useCentrifugeSupport:$=!1,useMittSupport:Z=!1,centrifugeChannel:G=void 0,methods:J=void 0})=>{let T=WU(),B=DH(J);if(B.current=J,T)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",H),console.log("[PieCard] Component name:",H?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:$,mitt:Z,centrifugeChannel:G}),console.log("[PieCard] Methods:",J?Object.keys(J):"none"),console.log("[PieCard] Has children:",!!D);let _=GU(C),I=GU(E),V=GU(j);if(TU(()=>{if(!_||!z||!B.current||!H.name){if(T&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!_,useSocketioSupport:z,hasMethods:!!B.current,hasDataName:!!H?.name});return}let Y=Object.keys(B.current??{}).map((X)=>{let P=`pie${X}_${H.name}`;if(T)console.log(`[PieCard] Socket.IO registering event: ${P}`);let Q=(R)=>{B.current?.[X]?.(R)};return _.on(P,Q),[P,Q]});return()=>{Y.forEach(([X,P])=>{if(T)console.log(`[PieCard] Socket.IO unregistering event: ${X}`);_.off(X,P)})}},[_,H.name,z]),TU(()=>{if(!I||!$||!G||!H.name){if(T&&$)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!I,useCentrifugeSupport:$,hasCentrifugeChannel:!!G,hasMethods:!!B.current,hasDataName:!!H?.name});return}let Y=Object.keys(B.current??{}).map((X)=>{let P=`pie${X}_${H.name}_${G}`;if(T)console.log(`[PieCard] Centrifuge subscribing to channel: ${P}`);let Q=I.newSubscription(P);return Q.on("publication",(R)=>{if(T)console.log(`[PieCard] Centrifuge received data on ${P}:`,R.data);B.current?.[X]?.(R.data)}),Q.subscribe(),Q});return()=>{Y.forEach((X)=>{if(T)console.log("[PieCard] Centrifuge unsubscribing from channel");X.unsubscribe(),I.removeSubscription(X)})}},[I,G,H.name,$]),TU(()=>{if(!V||!Z||!H.name){if(T&&Z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!V,useMittSupport:Z,hasMethods:!!B.current,hasDataName:!!H?.name});return}let q=Object.keys(B.current??{}),Y={};return q.forEach((X)=>{let P=`pie${X}_${H.name}`,Q=(R)=>{if(T)console.log(`[PieCard] Mitt registering event: ${P}`);B.current?.[X]?.(R)};Y[P]=Q,V.on(P,Q)}),()=>{Object.entries(Y).forEach(([X,P])=>{if(T)console.log(`[PieCard] Mitt unregistering event: ${X}`);V.off(X,P)})}},[V,H.name,Z]),T)console.log("[PieCard] Rendering complete, returning children");return D},F=GH;import{lazy as TH}from"react";var JU=new Map;function wU(U,H){return TH(()=>{if(JU.has(H))return JU.get(H);let D=U().then((z)=>z);return JU.set(H,D),D})}var g=new Map,JH=(U)=>{if(!U.name)throw new Error("Component registration requires a name");if(!U.component&&!U.loader)throw new Error(`Component "${U.name}" requires component or loader`);let H={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!H.component&&H.loader)H.component=wU(H.loader,U.name),H.loader=void 0,H.isLazy=!0;return H};function O(U){let H=JH(U);return g.set(H.name,H),H.component}var YH=(U)=>{U.forEach((H)=>O(H))},VH=(U)=>{g.delete(U)},XH=(U)=>{return g.has(U)},qH=(U)=>{return g.get(U)?.metadata},n=(U)=>{return g.get(U)},BH=()=>{return Array.from(g.keys())},IH=()=>{return g.size};import{Suspense as KH,useContext as OH,memo as WH}from"react";import{createContext as _H}from"react";import{jsx as RH,Fragment as QH}from"react/jsx-runtime";var PH=_H(RH(QH,{})),W=PH;import{jsx as YU}from"react/jsx-runtime";function FH({uiConfig:U,setUiAjaxConfiguration:H}){let D=OH(W),z=N();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!H);let $=n(U.card);if(!$?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return D}if(z)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let Z=$.component,G=YU(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:H});if($.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",$.name);return YU(KH,{fallback:$.fallback?YU($.fallback,{}):D,children:G},`${$.name}`)}if(z)console.log("[UI] Rendering component directly:",$.name);return G}var L=WH(FH);import{Suspense as NH,useContext as MH}from"react";import{createContext as LH}from"react";var fH=LH(null),x=fH;import{jsx as a}from"react/jsx-runtime";function AU({uiConfig:U,setUiAjaxConfiguration:H}){let D=MH(W),z=N();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!H);let $=n(U.card);if(!$?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return D}if(z)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(z)console.log("[UILoading] Rendering fallback for:",$.name);let J=$.fallback;return a(J,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",$.name);let Z=$.component,G=a(x.Provider,{value:AU,children:a(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:H})});if($.isLazy)return a(NH,{fallback:D,children:G},`${$.name}`);return G}var VU=AU;import{useContext as wH}from"react";import{jsx as XU}from"react/jsx-runtime";var AH=({data:U,content:H,setUiAjaxConfiguration:D})=>{let{name:z,sx:$}=U,Z=wH(x)??L;return XU(F,{card:z,data:U,children:XU("div",{style:$,id:z,children:H.map((G,J)=>{return XU(Z,{uiConfig:G,setUiAjaxConfiguration:D},`children-${J}`)})})})},yU=AH;var yH=O({name:"SequenceCard",component:yU,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});import{useContext as EH}from"react";import{jsx as EU}from"react/jsx-runtime";var CH=({data:U,content:H,setUiAjaxConfiguration:D})=>{let{name:z}=U,$=EH(x)??L;return EU(F,{card:z,data:U,children:H.map((Z,G)=>{return EU($,{uiConfig:Z,setUiAjaxConfiguration:D},`children-${G}`)})})},CU=CH;var jH=O({name:"UnionCard",component:CU,metadata:{author:"PieData",description:"Renders one of many components"}});import{useEffect as mH,useState as bH}from"react";import vH from"html-react-parser";import{useCallback as e,useEffect as kH,useRef as qU,useState as xH}from"react";function SH(){let U=new AudioContext,H=U.createOscillator(),D=H.connect(U.createMediaStreamDestination());H.start();let z=D.stream.getAudioTracks()[0];return z.enabled=!1,z}function UU(U=null,H){let[D,z]=xH(!1),$=qU(null),Z=qU(null),G=qU(null),J=e(async(I,V=!0)=>{if($.current)T();let q=new RTCPeerConnection;if(q.onconnectionstatechange=()=>{if(q.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(q.connectionState))z(!1)},q.ontrack=(K)=>{if(U)U.srcObject=K.streams[0]},V){let K=await navigator.mediaDevices.getUserMedia({audio:!0});q.addTrack(K.getTracks()[0],K)}else{let K=SH();q.addTrack(K)}let Y=q.createDataChannel("oai-events");Z.current=Y,G.current=new Promise((K)=>{Y.addEventListener("open",()=>{K()})});let X=await q.createOffer();await q.setLocalDescription(X);let y=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${I}`,"Content-Type":"application/sdp"}})).text();await q.setRemoteDescription({type:"answer",sdp:y}),$.current=q,await G.current},[U]),T=e(()=>{let I=Z.current;if(I)I.close();$.current?.getSenders()?.forEach((V)=>V.track?.stop()),$.current?.close(),z(!1),$.current=null,Z.current=null,G.current=null},[U]),B=e((I)=>{let V=Z.current;if(!V){console.error("Data channel is not ready",I);return}let q=new Date().toLocaleTimeString();if(I.event_id=I.event_id||crypto.randomUUID(),V.send(JSON.stringify(I)),!I.timestamp)I.timestamp=q;H?.(I)},[H,U]),_=e((I)=>{if(!Z.current){console.error("Data channel is not ready");return}let q=()=>{B({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:I}]}}),B({type:"response.create"})};if(G.current)G.current.then(q);else q()},[H,U]);return kH(()=>{let I=Z.current;if(!I)return;let V=(q)=>{let Y=JSON.parse(q.data);if(!Y.timestamp)Y.timestamp=new Date().toLocaleTimeString();H?.(Y)};return I.addEventListener("message",V),()=>{I.removeEventListener("message",V)}},[H,U]),{isSessionActive:D,startSession:J,stopSession:T,sendTextMessage:_}}import{jsx as oH}from"react/jsx-runtime";var dH=({data:U})=>{let{html:H,useSocketioSupport:D,useCentrifugeSupport:z,useMittSupport:$,centrifugeChannel:Z}=U,[G,J]=bH(H),{isSessionActive:T,startSession:B,sendTextMessage:_}=UU(null,(Y)=>{if(console.log(Y.type,Y.type==="response.output_text.delta"&&Y.delta),Y.type==="response.output_text.delta"&&Y.delta)J((X)=>X+Y.delta)});return mH(()=>{J(H)},[H]),oH(F,{card:"HTMLEmbedCard",data:U,methods:{update:(Y)=>{J(Y.value)},generateUsingAI:async(Y)=>{try{if(!T&&Y.token)await B(Y.token,!1);_(Y.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(Y)=>{if(!T&&Y.token)await B(Y.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:D,useMittSupport:$,centrifugeChannel:Z,children:vH(G)})},jU=dH;var gH=O({name:"HTMLEmbedCard",component:jU,metadata:{author:"PieData"}});import{useEffect as hH,useState as cH}from"react";import{jsx as kU}from"react/jsx-runtime";var uH=({data:U})=>{let{name:H,value:D,useSocketioSupport:z,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:G}=U,[J,T]=cH(D);return hH(()=>{T(D)},[D]),kU(F,{card:"HiddenCard",data:U,useSocketioSupport:z,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:G,methods:{update:({value:B})=>{T(B)}},children:kU("input",{type:"hidden",id:H,name:H,value:J})})},xU=uH;var lH=O({name:"HiddenCard",component:xU,metadata:{author:"PieData"}});import{useContext as SU,useEffect as sH}from"react";import{createContext as pH}from"react";var nH=pH(void 0),f=nH;import{jsx as tH,Fragment as rH}from"react/jsx-runtime";var iH=({data:U})=>{let{url:H}=U,D=SU(f),z=SU(W);return sH(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else D?.(H)},[H,D]),tH(rH,{children:z})},mU=iH;var aH=O({name:"AutoRedirectCard",component:mU,metadata:{author:"PieData"}});import{Bounce as eH,Slide as UZ,Zoom as HZ,Flip as ZZ}from"react-toastify";import{toast as zZ,ToastContainer as $Z}from"react-toastify";import{useContext as DZ,useMemo as GZ,useRef as TZ}from"react";import{jsx as BU,Fragment as BZ}from"react/jsx-runtime";var JZ={bounce:eH,slide:UZ,zoom:HZ,flip:ZZ},YZ=(U)=>{let H={...U,type:U.alertType,transition:U.transition?JZ[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};zZ(U.message,H)},VZ=(U)=>{console.log("Log event",U)},XZ=(U)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let H=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},D=window.Notification.permission;if(D==="granted"){H();return}if(D==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")H()})},qZ=({data:U})=>{let{useCentrifugeSupport:H,useSocketioSupport:D,useMittSupport:z,centrifugeChannel:$}=U,Z=DZ(f),G=TZ(Z);G.current=Z;let J=GZ(()=>({alert:YZ,log:VZ,push:XZ,redirect:(T)=>{if(T.to){let B=T.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(B))window.location.href=B;else G.current?.(B)}else window.location.reload()},reload:(T)=>{if(T.to){let B=T.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(B))window.location.href=B;else G.current?.(B)}else window.location.reload()}}),[]);return BU(BZ,{children:BU(F,{card:"IOEventsCard",data:U,useCentrifugeSupport:H,useSocketioSupport:D,useMittSupport:z,centrifugeChannel:$,methods:J,children:BU($Z,{})})})},bU=qZ;var IZ=O({name:"IOEventsCard",component:bU,metadata:{author:"PieData"}});import{useCallback as IU,useContext as _U,useEffect as _Z,useRef as PZ,useState as vU}from"react";import{jsx as dU}from"react/jsx-runtime";var QZ=({data:U,content:H})=>{let{useLoader:D,noReturn:z,returnType:$,useSocketioSupport:Z,useCentrifugeSupport:G,useMittSupport:J,centrifugeChannel:T}=U,B=_U(W),_=_U(x)??L,[I,V]=vU(!1),[q,Y]=vU(null),X=PZ(H),P=_U(j),Q=IU((K)=>{if(K===null)V(!0);else if(V(!1),!z)X.current=K;if(!z)Y(K)},[z]),R=IU((K)=>{X.current=K.content,Y(K.content)},[]),y=IU((K)=>{if(K===null)V(!0);else if(V(!1),!z)for(let u of K)P?.emit(u.name,u.data)},[z,P]);if(_Z(()=>{Y(H),V(!1)},[H]),!q&&D)return B;return dU(F,{card:"AjaxGroupCard",data:U,methods:{changeContent:R},useSocketioSupport:Z,useCentrifugeSupport:G,useMittSupport:J,centrifugeChannel:T,children:dU(_,{uiConfig:q??X.current,setUiAjaxConfiguration:$==="events"?y:Q})})},oU=QZ;var RZ=O({name:"AjaxGroupCard",component:oU,metadata:{author:"PieData",description:"Group card with AJAX support"}});import{useContext as gU}from"react";import{jsx as PU}from"react/jsx-runtime";var KZ=({data:U,content:H,setUiAjaxConfiguration:D})=>{let{name:z,url:$,sx:Z}=U,G=gU(f),J=gU(x)??L;return PU(F,{card:z,data:U,children:PU("div",{style:Z,id:z,onClick:(B)=>{if($)if(B.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($))window.location.href=$;else G?.($)},children:PU(J,{setUiAjaxConfiguration:D,uiConfig:H})})})},hU=KZ;var OZ=O({name:"BoxCard",component:hU,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});import{useMemo as s}from"react";import{QueryClient as EZ,QueryClientProvider as CZ,useQuery as jZ}from"@tanstack/react-query";import{useContext as LZ,useEffect as fZ}from"react";import{useEffect as WZ,useState as FZ}from"react";var HU=new Map,ZU=new Map;function zU(U,H){let D=`${U}::${H}`,z=U?HU.get(D):void 0,[$,Z]=FZ(z??null);return WZ(()=>{if(!U)return;if(HU.has(D)){Z(HU.get(D));return}let G=ZU.get(D);if(!G)G=fetch(U+`api/support/${H}`,{method:"GET"}).then((T)=>T.json()).then((T)=>{return HU.set(D,T),ZU.delete(D),T}).catch((T)=>{throw ZU.delete(D),T}),ZU.set(D,G);let J=!1;return G.then((T)=>{if(!J)Z(T)}).catch(()=>{}),()=>{J=!0}},[U,H,D]),$}var QU=null,cU=null;function uU(){cU?.()}function RU(){if(typeof window==="undefined")return Promise.resolve();if(typeof window.sid!=="undefined")return Promise.resolve();if(!QU)QU=new Promise((U)=>{cU=()=>{U()}});return QU}var NZ=({children:U})=>{let H=LZ(C),D=t(),z=zU(D,"socketIO"),$=(Z)=>{if(typeof window!=="undefined")window.sid=Z.sid,uU(),console.log(`SocketIO initialized: ${window.sid}`)};return fZ(()=>{if(!H)return;let Z=()=>{console.log("SocketIO connected")},G=(J)=>{console.log(`SocketIO disconnected: ${J}`),H.connect()};if(z)H.on("pieinit",$),H.on("connect",Z),H.on("disconnect",G),H.connect();return()=>{if(z)H.off("pieinit",$),H.off("connect",Z),H.off("disconnect",G),H.disconnect()}},[H,z]),U},h=NZ;import{useContext as MZ,useEffect as wZ}from"react";var AZ=({children:U})=>{let H=MZ(E),D=t(),z=zU(D,"centrifuge");return wZ(()=>{if(!H)return;let $=()=>{console.log("Centrifuge connected")},Z=(G)=>{console.log("Centrifuge disconnected:",G)};if(z)H.on("connected",$),H.on("disconnected",Z),H.connect();return()=>{if(z)H.disconnect()}},[H,z]),U},c=AZ;import{createAxiosDateTransformer as kZ}from"axios-date-transformer";import{jsx as yZ}from"react/jsx-runtime";function p(U,H,D){if(!H)return D;let z=U.replace(/^\//,""),$=H[z];if(!$)return D;return yZ(VU,{uiConfig:$})}import{jsx as M,Fragment as mZ}from"react/jsx-runtime";var xZ=({location:U,fallback:H,piecache:D,onError:z,queryOptions:$})=>{let Z=m(),G=v(),J=N(),T=s(()=>kZ({baseURL:Z||""}),[Z]),B=s(()=>b(),[]),_=s(()=>Z?o(Z):null,[Z]),I=s(()=>Z?d(Z,G):null,[Z,G]),{data:V,isLoading:q,error:Y}=jZ({queryKey:["uiConfig",U.pathname+U.search,Z],enabled:!!Z,queryFn:async()=>{let P=new URLSearchParams(U.search);P.set("__pieroot","web");let Q="/api/content"+U.pathname+"?"+P.toString();if(J)console.log("[PieRoot] Fetching UI configuration from:",Q);let R=await T.get(Q,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(J)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:(P)=>Math.min(1000*2**P,30000),...$}),X=p(U.pathname,D,H);if(!Z)return X??null;if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!H),console.log("[PieRoot] Piecache provided:",!!D);if(Y){if(J)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 z?.(),X}if(q||!V){if(J)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!V});return X}if(J)console.log("[PieRoot] UI configuration loaded successfully:",V),console.log("[PieRoot] Rendering UI with configuration");return M(j.Provider,{value:B,children:M(C.Provider,{value:_,children:M(E.Provider,{value:I,children:M(W.Provider,{value:H??M(mZ,{}),children:M(h,{children:M(c,{children:M("form",{id:"piedata_global_form",action:Z+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:M(L,{uiConfig:V})})})})})})})})},SZ=(U)=>{let H=s(()=>new EZ,[]);return M(f.Provider,{value:U.onNavigate,children:M(S.Provider,{value:U.config,children:M(CZ,{client:H,children:M(xZ,{...U})})})})},bZ=SZ;import{useMemo as i}from"react";import{QueryClient as oZ,QueryClientProvider as gZ,useQuery as hZ}from"@tanstack/react-query";import{createAxiosDateTransformer as cZ}from"axios-date-transformer";import{useEffect as vZ,useState as dZ}from"react";var KU=({onError:U}={})=>{let[H,D]=dZ(null),z=FU();return vZ(()=>{if(typeof window==="undefined")return;let $=window.Telegram?.WebApp;if(!$)return;try{$.ready?.()}catch(Z){U?.()}if(z==="telegram_expanded"&&($.platform==="ios"||$.platform==="android"))$.expand();D($)},[]),H};import{jsx as w,Fragment as pZ}from"react/jsx-runtime";var uZ=({location:U,fallback:H,piecache:D,onError:z,queryOptions:$})=>{let Z=m(),G=v(),J=N(),T=i(()=>cZ({baseURL:Z}),[Z]),B=i(()=>b(),[]),_=i(()=>Z?o(Z):null,[Z]),I=i(()=>Z?d(Z,G):null,[Z,G]),V=KU({onError:z}),{data:q,isLoading:Y,error:X}=hZ({queryKey:["uiConfig",U.pathname+U.search,V?.initData],enabled:!!V?.initData,queryFn:async()=>{let Q=new URLSearchParams(U.search);if(Q.set("__pieroot","telegram"),V?.initData)Q.set("initData",V.initData);let R="/api/content"+U.pathname+"?"+Q.toString();if(J)console.log("[PieRoot] Fetching UI configuration from:",R);let y=await T.get(R,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(J)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:(Q)=>Math.min(1000*2**Q,30000),...$}),P=p(U.pathname,D,H);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(X&&J)return console.error("[PieRoot] Error fetching UI configuration:",X),console.error("[PieRoot] Error details:",{message:X.message,status:X.response?.status,data:X.response?.data}),z?.(),P;if(Y||!q){if(J)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!q});return P}if(J)console.log("[PieRoot] UI configuration loaded successfully:",q),console.log("[PieRoot] Rendering UI with configuration");return w(j.Provider,{value:B,children:w(C.Provider,{value:_,children:w(E.Provider,{value:I,children:w(W.Provider,{value:H??w(pZ,{}),children:w(h,{children:w(c,{children:w("form",{id:"piedata_global_form",action:Z+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:w(L,{uiConfig:q})})})})})})})})},lZ=(U)=>{let H=i(()=>new oZ,[]);return w(f.Provider,{value:U.onNavigate,children:w(S.Provider,{value:U.config,children:w(gZ,{client:H,children:w(uZ,{...U})})})})},nZ=lZ;import{useMemo as OU,useState as sZ}from"react";import{QueryClient as iZ,QueryClientProvider as rZ}from"@tanstack/react-query";import{jsx as k,Fragment as eZ}from"react/jsx-runtime";var tZ=({location:U,fallback:H,children:D})=>{let z=m(),$=v(),Z=N(),G=OU(()=>b(),[]),J=OU(()=>z?o(z):null,[z]),T=OU(()=>z?d(z,$):null,[z,$]);if(Z)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",z),console.log("[PieRoot] CENTRIFUGE_SERVER:",$),console.log("[PieRoot] Fallback provided:",!!H);return k(j.Provider,{value:G,children:k(C.Provider,{value:J,children:k(E.Provider,{value:T,children:k(W.Provider,{value:H??k(eZ,{}),children:k(h,{children:k(c,{children:k("form",{id:"piedata_global_form",action:z+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:D})})})})})})})},aZ=(U)=>{let[H]=sZ(()=>new iZ);return k(f.Provider,{value:U.onNavigate,children:k(S.Provider,{value:U.config,children:k(rZ,{client:H,children:k(tZ,{...U})})})})},Uz=aZ;import{useMemo as r}from"react";import{QueryClient as zz,QueryClientProvider as $z,useQuery as Dz}from"@tanstack/react-query";import{createAxiosDateTransformer as Gz}from"axios-date-transformer";import{useEffect as Hz,useState as Zz}from"react";var lU=()=>{let[U,H]=Zz(null);return Hz(()=>{if(typeof window==="undefined")return;let D=window.WebApp;if(!D)return;D.ready(),H(D)},[]),U};import{jsx as A,Fragment as Yz}from"react/jsx-runtime";var Tz=({location:U,fallback:H,piecache:D,onError:z,queryOptions:$})=>{let Z=m(),G=v(),J=N(),T=r(()=>Gz({baseURL:Z}),[Z]),B=r(()=>b(),[]),_=r(()=>Z?o(Z):null,[Z]),I=r(()=>Z?d(Z,G):null,[Z,G]),V=lU(),{data:q,isLoading:Y,error:X}=Dz({queryKey:["uiConfig",U.pathname+U.search,V?.initData],queryFn:async()=>{let Q=new URLSearchParams(U.search);if(Q.set("__pieroot","max"),V?.initData)Q.set("initData",V.initData);let R="/api/content"+U.pathname+"?"+Q.toString();if(J)console.log("[PieRoot] Fetching UI configuration from:",R);let y=await T.get(R,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(J)console.log("[PieRoot] Received UI configuration:",y.data);return y.data},enabled:!!V?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Q)=>Math.min(1000*2**Q,30000),...$}),P=p(U.pathname,D,H);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(X&&J)return console.error("[PieRoot] Error fetching UI configuration:",X),console.error("[PieRoot] Error details:",{message:X.message,status:X.response?.status,data:X.response?.data}),z?.(),P;if(Y||!q){if(J)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!q});return P}if(J)console.log("[PieRoot] UI configuration loaded successfully:",q),console.log("[PieRoot] Rendering UI with configuration");return A(j.Provider,{value:B,children:A(C.Provider,{value:_,children:A(E.Provider,{value:I,children:A(W.Provider,{value:H??A(Yz,{}),children:A(h,{children:A(c,{children:A("form",{id:"piedata_global_form",action:Z+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:A(L,{uiConfig:q})})})})})})})})},Jz=(U)=>{let H=r(()=>new zz,[]);return A(f.Provider,{value:U.onNavigate,children:A(S.Provider,{value:U.config,children:A($z,{client:H,children:A(Tz,{...U})})})})},Vz=Jz;import{useMemo as Xz}from"react";var qz=(U,H={},D=[],z,$)=>{let Z=$?.renderingLogEnabled??!1;if(!$?.apiServer){if(Z)console.warn("Registration FAILED: apiServer is missing!");return()=>{}}let G=$?.apiServer;if(Z)console.log("Registering AJAX: ",z,H,D);if(!z||!U){if(Z)console.warn("Registration FAILED: pathname or setUiAjaxConfiguration is missing!");return()=>{}}return async(J={})=>{if(typeof window==="undefined"||typeof document==="undefined"){if(Z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}if(D.includes("sid"))await RU();let T=new FormData;for(let[_,I]of Object.entries({...H,...J}))T.append(_,I);for(let _ of D)if(_==="sid"){if(!window.sid)throw new Error("SocketIO isn't initialized properly");T.append("sid",window.sid)}else{let I=document.getElementsByName(_);if(!I.length){if(Z)console.warn(`No input found with name ${_}`);continue}let V=I[0];if(V instanceof HTMLInputElement)if(V.type==="file"&&V.files)Array.from(V.files).forEach((q)=>T.append(_,q));else T.append(_,V.value);else if(V instanceof HTMLTextAreaElement)T.append(_,V.value)}let B=G+"api/ajax_content"+z;return U(null),await fetch(B,{method:"POST",body:T}).then(async(_)=>{let V=(_.headers.get("content-type")||"").includes("application/json");if(!!_.body?.getReader&&!V){let Y=_.body.getReader(),X=new TextDecoder,P="";while(!0){let{done:Q,value:R}=await Y.read();if(Q)break;P+=X.decode(R,{stream:!0});let y=P.split(`
3
- `);P=y.pop()??"";for(let K of y){let u=K.trim();if(!u)continue;try{let pU=JSON.parse(u);U([pU])}catch{if(Z)console.warn("Failed to parse streamed line:",u)}}}if(P.trim())try{let Q=JSON.parse(P);U([Q])}catch{if(Z)console.warn("Failed to parse final streamed line:",P)}return{}}else{let Y=await _.json();return U(Y),Y}}).catch((_)=>{if(Z)console.error("AJAX request failed:",_);return U(null),_})}},Bz=(U,H={},D=[],z)=>{let{apiServer:$,enableRenderingLog:Z}=l(),G=JSON.stringify(H),J=JSON.stringify(D);return Xz(()=>qz(U,H,D,z,{apiServer:$,renderingLogEnabled:Z}),[U,G,J,z,$,Z])};import{clsx as Iz}from"clsx";import{twMerge as _z}from"tailwind-merge";function Pz(...U){return _z(Iz(U))}var Qz=()=>{if(typeof document==="undefined")return;let U=document.getElementById("piedata_global_form");U&&U.submit()};var Rz=(U,H)=>`${U}${$U}${H}`;export{KU as useWebApp,$H as usePieEmit,UU as useOpenAIWebRTC,Bz as useAjaxSubmit,VH as unregisterComponent,Qz as submitGlobalForm,g as registry,O as registerPieComponent,YH as registerMultipleComponents,Rz as pieName,XH as hasComponent,IH as getRegistrySize,n as getRegistryEntry,qH as getComponentMeta,BH as getAllRegisteredComponents,Pz as cn,jH as UnionCard,x as UIRendererContext,VU as UILoading,L as UI,yH as SequenceCard,nZ as PieTelegramRoot,bZ as PieRoot,Vz as PieMaxRoot,F as PieCard,Uz as PieBaseRoot,$U as PIEBREAK,IZ as IOEventsCard,lH as HiddenCard,gH as HTMLEmbedCard,OZ as BoxCard,aH as AutoRedirectCard,RZ as AjaxGroupCard};
2
+ import{useContext as Vf,useEffect as If,useRef as SU}from"react";import{createContext as BU,useContext as QU}from"react";var j=BU(null),h=()=>{let f=QU(j);if(!f)throw new Error("usePieConfig must be used within PieConfigProvider");return f},x=()=>{let{apiServer:f}=h();return f},e=x,d=()=>{let{centrifugeServer:f}=h();return f};var M=()=>{let{enableRenderingLog:f}=h();return f},Lf=M,Mf=()=>{let{pageProcessor:f}=h();return f};var Tf="__piedemo__";import{createContext as WU}from"react";import{Centrifuge as Sf}from"centrifuge";var Af=new Map,u=(f,U)=>{if(!U)return null;let Z=`${f}::${U}`,D=Af.get(Z);if(D)return D;async function P(){let z=await fetch(f+"api/centrifuge/gen_token");if(!z.ok){if(z.status===403)throw new Sf.UnauthorizedError("Backend is not answering");throw new Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let H=new Sf(U,{getToken:P});return Af.set(Z,H),H},CU=WU(null),y=CU;import{io as OU}from"socket.io-client";import{createContext as _U}from"react";var Nf=new Map,b=(f)=>{let U=Nf.get(f);if(U)return U;let Z=OU(f,{autoConnect:!1,transports:["websocket"]});return Nf.set(f,Z),Z},RU=_U(null),o=RU;import FU from"mitt";import{createContext as KU,useCallback as wU,useContext as LU}from"react";var Gf=null;function E(){if(!Gf)Gf=FU();return Gf}var yf=KU(null);function MU(f){let U=LU(yf);return wU((Z,D)=>{(U??E()).emit(`pie${Z}_${f}`,D)},[f,U])}var w=yf;var AU=({card:f,data:U,children:Z,useSocketioSupport:D=!1,useCentrifugeSupport:P=!1,useMittSupport:H=!1,centrifugeChannel:z=void 0,methods:T=void 0})=>{let $=Lf(),G=SU(T);if(G.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:D,centrifuge:P,mitt:H,centrifugeChannel:z}),console.log("[PieCard] Methods:",T?Object.keys(T):"none"),console.log("[PieCard] Has children:",!!Z);let X=Vf(o),B=Vf(y),q=Vf(w);if(If(()=>{if(!X||!D||!G.current||!U.name){if($&&D)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!X,useSocketioSupport:D,hasMethods:!!G.current,hasDataName:!!U?.name});return}let I=Object.keys(G.current??{}).map((V)=>{let J=`pie${V}_${U.name}`;if($)console.log(`[PieCard] Socket.IO registering event: ${J}`);let Q=(W)=>{G.current?.[V]?.(W)};return X.on(J,Q),[J,Q]});return()=>{I.forEach(([V,J])=>{if($)console.log(`[PieCard] Socket.IO unregistering event: ${V}`);X.off(V,J)})}},[X,U.name,D]),If(()=>{if(!B||!P||!z||!U.name){if($&&P)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!B,useCentrifugeSupport:P,hasCentrifugeChannel:!!z,hasMethods:!!G.current,hasDataName:!!U?.name});return}let I=Object.keys(G.current??{}).map((V)=>{let J=`pie${V}_${U.name}_${z}`;if($)console.log(`[PieCard] Centrifuge subscribing to channel: ${J}`);let Q=B.newSubscription(J);return Q.on("publication",(W)=>{if($)console.log(`[PieCard] Centrifuge received data on ${J}:`,W.data);G.current?.[V]?.(W.data)}),Q.subscribe(),Q});return()=>{I.forEach((V)=>{if($)console.log("[PieCard] Centrifuge unsubscribing from channel");V.unsubscribe(),B.removeSubscription(V)})}},[B,z,U.name,P]),If(()=>{if(!q||!H||!U.name){if($&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!q,useMittSupport:H,hasMethods:!!G.current,hasDataName:!!U?.name});return}let Y=Object.keys(G.current??{}),I={};return Y.forEach((V)=>{let J=`pie${V}_${U.name}`,Q=(W)=>{if($)console.log(`[PieCard] Mitt registering event: ${J}`);G.current?.[V]?.(W)};I[J]=Q,q.on(J,Q)}),()=>{Object.entries(I).forEach(([V,J])=>{if($)console.log(`[PieCard] Mitt unregistering event: ${V}`);q.off(V,J)})}},[q,U.name,H]),$)console.log("[PieCard] Rendering complete, returning children");return Z},_=AU;import{lazy as NU}from"react";var Jf=new Map;function of(f,U){return NU(()=>{if(Jf.has(U))return Jf.get(U);let Z=f().then((D)=>D);return Jf.set(U,Z),Z})}var v=new Map,yU=(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=of(U.loader,f.name),U.loader=void 0,U.isLazy=!0;return U};function O(f){let U=yU(f);return v.set(U.name,U),U.component}var oU=(f)=>{f.forEach((U)=>O(U))},EU=(f)=>{v.delete(f)},mU=(f)=>{return v.has(f)},kU=(f)=>{return v.get(f)?.metadata},r=(f)=>{return v.get(f)},jU=()=>{return Array.from(v.keys())},xU=()=>{return v.size};import{Suspense as gU,useContext as pU,memo as cU}from"react";import{createContext as dU}from"react";import{jsx as vU,Fragment as bU}from"react/jsx-runtime";var uU=dU(vU(bU,{})),F=uU;import{jsx as Yf}from"react/jsx-runtime";function hU({uiConfig:f,setUiAjaxConfiguration:U}){let Z=pU(F),D=M();if(D)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 P=r(f.card);if(!P?.component){if(D)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return Z}if(D)console.log("[UI] Found component in registry:",{name:P.name,isLazy:P.isLazy,hasMetadata:!!P.metadata});let H=P.component,z=Yf(H,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(P.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",P.name);return Yf(gU,{fallback:P.fallback?Yf(P.fallback,{}):Z,children:z},`${P.name}`)}if(D)console.log("[UI] Rendering component directly:",P.name);return z}var K=cU(hU);import{Suspense as nU,useContext as sU}from"react";import{createContext as lU}from"react";var rU=lU(null),k=rU;import{jsx as ff}from"react/jsx-runtime";function Ef({uiConfig:f,setUiAjaxConfiguration:U}){let Z=sU(F),D=M();if(D)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 P=r(f.card);if(!P?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return Z}if(D)console.log("[UILoading] Found component in registry:",{name:P.name,isLazy:P.isLazy,hasMetadata:!!P.metadata,hasFallback:!!P.fallback});if(P.fallback){if(D)console.log("[UILoading] Rendering fallback for:",P.name);let T=P.fallback;return ff(T,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",P.name);let H=P.component,z=ff(k.Provider,{value:Ef,children:ff(H,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(P.isLazy)return ff(nU,{fallback:Z,children:z},`${P.name}`);return z}var Xf=Ef;import{useContext as iU}from"react";import{jsx as qf}from"react/jsx-runtime";var tU=({data:f,content:U,setUiAjaxConfiguration:Z})=>{let{name:D,sx:P}=f,H=iU(k)??K;return qf(_,{card:D,data:f,children:qf("div",{style:P,id:D,children:U.map((z,T)=>{return qf(H,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${T}`)})})})},mf=tU;var aU=O({name:"SequenceCard",component:mf,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});import{useContext as eU}from"react";import{jsx as kf}from"react/jsx-runtime";var fD=({data:f,content:U,setUiAjaxConfiguration:Z})=>{let{name:D}=f,P=eU(k)??K;return kf(_,{card:D,data:f,children:U.map((H,z)=>{return kf(P,{uiConfig:H,setUiAjaxConfiguration:Z},`children-${z}`)})})},jf=fD;var UD=O({name:"UnionCard",component:jf,metadata:{author:"PieData",description:"Renders one of many components"}});import{useEffect as ZD,useState as zD}from"react";import $D from"html-react-parser";import{useCallback as Uf,useEffect as DD,useRef as Bf,useState as HD}from"react";function PD(){let f=new AudioContext,U=f.createOscillator(),Z=U.connect(f.createMediaStreamDestination());U.start();let D=Z.stream.getAudioTracks()[0];return D.enabled=!1,D}function Df(f=null,U){let[Z,D]=HD(!1),P=Bf(null),H=Bf(null),z=Bf(null),T=Uf(async(B,q=!0)=>{if(P.current)$();let Y=new RTCPeerConnection;if(Y.onconnectionstatechange=()=>{if(Y.connectionState==="connected")D(!0);else if(["disconnected","failed","closed"].includes(Y.connectionState))D(!1)},Y.ontrack=(R)=>{if(f)f.srcObject=R.streams[0]},q){let R=await navigator.mediaDevices.getUserMedia({audio:!0});Y.addTrack(R.getTracks()[0],R)}else{let R=PD();Y.addTrack(R)}let I=Y.createDataChannel("oai-events");H.current=I,z.current=new Promise((R)=>{I.addEventListener("open",()=>{R()})});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 ${B}`,"Content-Type":"application/sdp"}})).text();await Y.setRemoteDescription({type:"answer",sdp:C}),P.current=Y,await z.current},[f]),$=Uf(()=>{let B=H.current;if(B)B.close();P.current?.getSenders()?.forEach((q)=>q.track?.stop()),P.current?.close(),D(!1),P.current=null,H.current=null,z.current=null},[f]),G=Uf((B)=>{let q=H.current;if(!q){console.error("Data channel is not ready",B);return}let Y=new Date().toLocaleTimeString();if(B.event_id=B.event_id||crypto.randomUUID(),q.send(JSON.stringify(B)),!B.timestamp)B.timestamp=Y;U?.(B)},[U,f]),X=Uf((B)=>{if(!H.current){console.error("Data channel is not ready");return}let Y=()=>{G({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:B}]}}),G({type:"response.create"})};if(z.current)z.current.then(Y);else Y()},[U,f]);return DD(()=>{let B=H.current;if(!B)return;let q=(Y)=>{let I=JSON.parse(Y.data);if(!I.timestamp)I.timestamp=new Date().toLocaleTimeString();U?.(I)};return B.addEventListener("message",q),()=>{B.removeEventListener("message",q)}},[U,f]),{isSessionActive:Z,startSession:T,stopSession:$,sendTextMessage:X}}import{jsx as GD}from"react/jsx-runtime";var TD=({data:f})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:D,useMittSupport:P,centrifugeChannel:H}=f,[z,T]=zD(U),{isSessionActive:$,startSession:G,sendTextMessage:X}=Df(null,(I)=>{if(console.log(I.type,I.type==="response.output_text.delta"&&I.delta),I.type==="response.output_text.delta"&&I.delta)T((V)=>V+I.delta)});return ZD(()=>{T(U)},[U]),GD(_,{card:"HTMLEmbedCard",data:f,methods:{update:(I)=>{T(I.value)},generateUsingAI:async(I)=>{try{if(!$&&I.token)await G(I.token,!1);X(I.prompt)}catch(V){console.error("Failed to generate using AI",V)}},initializeAI:async(I)=>{if(!$&&I.token)await G(I.token,!1)}},useCentrifugeSupport:D,useSocketioSupport:Z,useMittSupport:P,centrifugeChannel:H,children:$D(z)})},xf=TD;var VD=O({name:"HTMLEmbedCard",component:xf,metadata:{author:"PieData"}});import{useEffect as ID,useState as JD}from"react";import{jsx as df}from"react/jsx-runtime";var YD=({data:f})=>{let{name:U,value:Z,useSocketioSupport:D,useCentrifugeSupport:P,useMittSupport:H,centrifugeChannel:z}=f,[T,$]=JD(Z);return ID(()=>{$(Z)},[Z]),df(_,{card:"HiddenCard",data:f,useSocketioSupport:D,useCentrifugeSupport:P,useMittSupport:H,centrifugeChannel:z,methods:{update:({value:G})=>{$(G)}},children:df("input",{type:"hidden",id:U,name:U,value:T})})},uf=YD;var XD=O({name:"HiddenCard",component:uf,metadata:{author:"PieData"}});import{useContext as bf,useEffect as QD}from"react";import{createContext as qD}from"react";var BD=qD(void 0),L=BD;import{jsx as OD,Fragment as CD}from"react/jsx-runtime";var WD=({data:f})=>{let{url:U}=f,Z=bf(L),D=bf(F);return QD(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),OD(CD,{children:D})},vf=WD;var _D=O({name:"AutoRedirectCard",component:vf,metadata:{author:"PieData"}});import{Bounce as RD,Slide as FD,Zoom as KD,Flip as wD}from"react-toastify";import{toast as LD,ToastContainer as MD}from"react-toastify";import{useContext as SD,useMemo as AD,useRef as ND}from"react";import{jsx as Qf,Fragment as jD}from"react/jsx-runtime";var yD={bounce:RD,slide:FD,zoom:KD,flip:wD},oD=(f)=>{let U={...f,type:f.alertType,transition:f.transition?yD[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};LD(f.message,U)},ED=(f)=>{console.log("Log event",f)},mD=(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(D){console.error("[IOEventsCard] Failed to show notification",D)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((D)=>{if(D==="granted")U()})},kD=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:D,centrifugeChannel:P}=f,H=SD(L),z=ND(H);z.current=H;let T=AD(()=>({alert:oD,log:ED,push:mD,redirect:($)=>{if($.to){let G=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(G))window.location.href=G;else z.current?.(G)}else window.location.reload()},reload:($)=>{if($.to){let G=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(G))window.location.href=G;else z.current?.(G)}else window.location.reload()}}),[]);return Qf(jD,{children:Qf(_,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:D,centrifugeChannel:P,methods:T,children:Qf(MD,{})})})},gf=kD;var xD=O({name:"IOEventsCard",component:gf,metadata:{author:"PieData"}});import{useEffect as pf,useState as dD}from"react";import{jsx as cf}from"react/jsx-runtime";var uD=({data:f})=>{let{name:U,key:Z,value:D,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T}=f,[$,G]=dD(D);return pf(()=>{G(D)},[D]),pf(()=>{if(typeof window==="undefined")return;sessionStorage.setItem(Z,$)},[Z,$]),cf(_,{card:"SessionStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)},remove:()=>{sessionStorage.removeItem(Z),G("")}},children:cf("input",{type:"hidden",id:U,name:U,value:$})})},hf=uD;var bD=O({name:"SessionStorageCard",component:hf,metadata:{author:"PieData"}});import{useEffect as lf,useState as vD}from"react";import{jsx as rf}from"react/jsx-runtime";var gD=({data:f})=>{let{name:U,key:Z,value:D,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T}=f,[$,G]=vD(D);return lf(()=>{G(D)},[D]),lf(()=>{if(typeof window==="undefined")return;localStorage.setItem(Z,$)},[Z,$]),rf(_,{card:"DeviceStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)},remove:()=>{localStorage.removeItem(Z),G("")}},children:rf("input",{type:"hidden",id:U,name:U,value:$})})},nf=gD;var pD=O({name:"DeviceStorageCard",component:nf,metadata:{author:"PieData"}});import{useEffect as sf,useState as cD}from"react";import{jsx as tf}from"react/jsx-runtime";var hD=({data:f})=>{let{name:U,key:Z,value:D,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T}=f,[$,G]=cD(D);return sf(()=>{G(D)},[D]),sf(()=>{if(typeof window==="undefined")return;let X=window.Telegram?.WebApp?.CloudStorage;if(!X)return;X.setItem(Z,$)},[Z,$]),tf(_,{card:"CloudStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.CloudStorage;if(X)X.removeItem(Z);G("")}},children:tf("input",{type:"hidden",id:U,name:U,value:$})})},af=hD;var lD=O({name:"CloudStorageCard",component:af,metadata:{author:"PieData"}});import{useEffect as ef,useState as rD}from"react";import{jsx as fU}from"react/jsx-runtime";var nD=({data:f})=>{let{name:U,key:Z,value:D,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T}=f,[$,G]=rD(D);return ef(()=>{G(D)},[D]),ef(()=>{if(typeof window==="undefined")return;let X=window.Telegram?.WebApp?.SecureStorage;if(!X)return;X.setItem(Z,$)},[Z,$]),fU(_,{card:"SecureStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.SecureStorage;if(X)X.removeItem(Z);G("")}},children:fU("input",{type:"hidden",id:U,name:U,value:$})})},UU=nD;var sD=O({name:"SecureStorageCard",component:UU,metadata:{author:"PieData"}});import{useCallback as Wf,useContext as Cf,useEffect as iD,useRef as tD,useState as DU}from"react";import{jsx as HU}from"react/jsx-runtime";var aD=({data:f,content:U})=>{let{useLoader:Z,noReturn:D,returnType:P,useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:$}=f,G=Cf(F),X=Cf(k)??K,[B,q]=DU(!1),[Y,I]=DU(null),V=tD(U),J=Cf(w),Q=Wf((R)=>{if(R===null)q(!0);else if(q(!1),!D)V.current=R;if(!D)I(R)},[D]),W=Wf((R)=>{V.current=R.content,I(R.content)},[]),C=Wf((R)=>{if(R===null)q(!0);else if(q(!1),!D)for(let t of R)J?.emit(t.name,t.data)},[D,J]);if(iD(()=>{I(U),q(!1)},[U]),!Y&&Z)return G;return HU(_,{card:"AjaxGroupCard",data:f,methods:{changeContent:W},useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:$,children:HU(X,{uiConfig:Y??V.current,setUiAjaxConfiguration:P==="events"?C:Q})})},PU=aD;var eD=O({name:"AjaxGroupCard",component:PU,metadata:{author:"PieData",description:"Group card with AJAX support"}});import{useContext as ZU}from"react";import{jsx as Of}from"react/jsx-runtime";var fH=({data:f,content:U,setUiAjaxConfiguration:Z})=>{let{name:D,url:P,sx:H}=f,z=ZU(L),T=ZU(k)??K;return Of(_,{card:D,data:f,children:Of("div",{style:H,id:D,onClick:(G)=>{if(P)if(G.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(P))window.location.href=P;else z?.(P)},children:Of(T,{setUiAjaxConfiguration:Z,uiConfig:U})})})},zU=fH;var UH=O({name:"BoxCard",component:zU,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});import{useMemo as n}from"react";import{QueryClient as IH,QueryClientProvider as JH,useQuery as YH}from"@tanstack/react-query";import{useContext as PH,useEffect as ZH}from"react";import{useEffect as DH,useState as HH}from"react";var Hf=new Map,Pf=new Map;function Zf(f,U){let Z=`${f}::${U}`,D=f?Hf.get(Z):void 0,[P,H]=HH(D??null);return DH(()=>{if(!f)return;if(Hf.has(Z)){H(Hf.get(Z));return}let z=Pf.get(Z);if(!z)z=fetch(f+`api/support/${U}`,{method:"GET"}).then(($)=>$.json()).then(($)=>{return Hf.set(Z,$),Pf.delete(Z),$}).catch(($)=>{throw Pf.delete(Z),$}),Pf.set(Z,z);let T=!1;return z.then(($)=>{if(!T)H($)}).catch(()=>{}),()=>{T=!0}},[f,U,Z]),P}var _f=null,$U=null;function TU(){$U?.()}function Rf(){if(typeof window==="undefined")return Promise.resolve();if(typeof window.sid!=="undefined")return Promise.resolve();if(!_f)_f=new Promise((f)=>{$U=()=>{f()}});return _f}var zH=({children:f})=>{let U=PH(o),Z=e(),D=Zf(Z,"socketIO"),P=(H)=>{if(typeof window!=="undefined")window.sid=H.sid,TU(),console.log(`SocketIO initialized: ${window.sid}`)};return ZH(()=>{if(!U)return;let H=()=>{console.log("SocketIO connected")},z=(T)=>{console.log(`SocketIO disconnected: ${T}`),U.connect()};if(D)U.on("pieinit",P),U.on("connect",H),U.on("disconnect",z),U.connect();return()=>{if(D)U.off("pieinit",P),U.off("connect",H),U.off("disconnect",z),U.disconnect()}},[U,D]),f},g=zH;import{useContext as $H,useEffect as TH}from"react";var GH=({children:f})=>{let U=$H(y),Z=e(),D=Zf(Z,"centrifuge");return TH(()=>{if(!U)return;let P=()=>{console.log("Centrifuge connected")},H=(z)=>{console.log("Centrifuge disconnected:",z)};if(D)U.on("connected",P),U.on("disconnected",H),U.connect();return()=>{if(D)U.disconnect()}},[U,D]),f},p=GH;import{createAxiosDateTransformer as XH}from"axios-date-transformer";import{jsx as VH}from"react/jsx-runtime";function l(f,U,Z){if(!U)return Z;let D=f.replace(/^\//,""),P=U[D];if(!P)return Z;return VH(Xf,{uiConfig:P})}import{jsx as S,Fragment as QH}from"react/jsx-runtime";var qH=({location:f,fallback:U,piecache:Z,onError:D,queryOptions:P})=>{let H=x(),z=d(),T=M(),$=n(()=>XH({baseURL:H||""}),[H]),G=n(()=>E(),[]),X=n(()=>H?b(H):null,[H]),B=n(()=>H?u(H,z):null,[H,z]),{data:q,isLoading:Y,error:I}=YH({queryKey:["uiConfig",f.pathname+f.search,H],enabled:!!H,queryFn:async()=>{let J=new URLSearchParams(f.search);J.set("__pieroot","web");let Q="/api/content"+f.pathname+"?"+J.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",Q);let W=await $.get(Q,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(T)console.log("[PieRoot] Received UI configuration:",W.data);return W.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(J)=>Math.min(1000*2**J,30000),...P}),V=l(f.pathname,Z,U);if(!H)return V??null;if(T)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",H),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!Z);if(I){if(T)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 D?.(),V}if(Y||!q){if(T)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!q});return V}if(T)console.log("[PieRoot] UI configuration loaded successfully:",q),console.log("[PieRoot] Rendering UI with configuration");return S(w.Provider,{value:G,children:S(o.Provider,{value:X,children:S(y.Provider,{value:B,children:S(F.Provider,{value:U??S(QH,{}),children:S(g,{children:S(p,{children:S("form",{id:"piedata_global_form",action:H+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:S(K,{uiConfig:q})})})})})})})})},BH=(f)=>{let U=n(()=>new IH,[]);return S(L.Provider,{value:f.onNavigate,children:S(j.Provider,{value:f.config,children:S(JH,{client:U,children:S(qH,{...f})})})})},WH=BH;import{useMemo as s}from"react";import{QueryClient as _H,QueryClientProvider as RH,useQuery as FH}from"@tanstack/react-query";import{createAxiosDateTransformer as KH}from"axios-date-transformer";import{useEffect as CH,useState as OH}from"react";var Ff=({onError:f}={})=>{let[U,Z]=OH(null),D=Mf();return CH(()=>{if(typeof window==="undefined")return;let P=window.Telegram?.WebApp;if(!P)return;try{P.ready?.()}catch(H){f?.()}if(D==="telegram_expanded"&&(P.platform==="ios"||P.platform==="android"))P.expand();Z(P)},[]),U};import{jsx as A,Fragment as MH}from"react/jsx-runtime";var wH=({location:f,fallback:U,piecache:Z,onError:D,queryOptions:P})=>{let H=x(),z=d(),T=M(),$=s(()=>KH({baseURL:H}),[H]),G=s(()=>E(),[]),X=s(()=>H?b(H):null,[H]),B=s(()=>H?u(H,z):null,[H,z]),q=Ff({onError:D}),{data:Y,isLoading:I,error:V}=FH({queryKey:["uiConfig",f.pathname+f.search,q?.initData],enabled:!!q?.initData,queryFn:async()=>{let Q=new URLSearchParams(f.search);if(Q.set("__pieroot","telegram"),q?.initData)Q.set("initData",q.initData);let W="/api/content"+f.pathname+"?"+Q.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",W);let C=await $.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(T)console.log("[PieRoot] Received UI configuration:",C.data);return C.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Q)=>Math.min(1000*2**Q,30000),...P}),J=l(f.pathname,Z,U);if(!H)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&T)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),D?.(),J;if(I||!Y){if(T)console.log("[PieRoot] Loading state:",{isLoading:I,hasUiConfiguration:!!Y});return J}if(T)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return A(w.Provider,{value:G,children:A(o.Provider,{value:X,children:A(y.Provider,{value:B,children:A(F.Provider,{value:U??A(MH,{}),children:A(g,{children:A(p,{children:A("form",{id:"piedata_global_form",action:H+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:A(K,{uiConfig:Y})})})})})})})})},LH=(f)=>{let U=s(()=>new _H,[]);return A(L.Provider,{value:f.onNavigate,children:A(j.Provider,{value:f.config,children:A(RH,{client:U,children:A(wH,{...f})})})})},SH=LH;import{useMemo as Kf,useState as AH}from"react";import{QueryClient as NH,QueryClientProvider as yH}from"@tanstack/react-query";import{jsx as m,Fragment as mH}from"react/jsx-runtime";var oH=({location:f,fallback:U,children:Z})=>{let D=x(),P=d(),H=M(),z=Kf(()=>E(),[]),T=Kf(()=>D?b(D):null,[D]),$=Kf(()=>D?u(D,P):null,[D,P]);if(H)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",P),console.log("[PieRoot] Fallback provided:",!!U);return m(w.Provider,{value:z,children:m(o.Provider,{value:T,children:m(y.Provider,{value:$,children:m(F.Provider,{value:U??m(mH,{}),children:m(g,{children:m(p,{children:m("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},EH=(f)=>{let[U]=AH(()=>new NH);return m(L.Provider,{value:f.onNavigate,children:m(j.Provider,{value:f.config,children:m(yH,{client:U,children:m(oH,{...f})})})})},kH=EH;import{useMemo as i}from"react";import{QueryClient as dH,QueryClientProvider as uH,useQuery as bH}from"@tanstack/react-query";import{createAxiosDateTransformer as vH}from"axios-date-transformer";import{useEffect as jH,useState as xH}from"react";var GU=()=>{let[f,U]=xH(null);return jH(()=>{if(typeof window==="undefined")return;let Z=window.WebApp;if(!Z)return;Z.ready(),U(Z)},[]),f};import{jsx as N,Fragment as cH}from"react/jsx-runtime";var gH=({location:f,fallback:U,piecache:Z,onError:D,queryOptions:P})=>{let H=x(),z=d(),T=M(),$=i(()=>vH({baseURL:H}),[H]),G=i(()=>E(),[]),X=i(()=>H?b(H):null,[H]),B=i(()=>H?u(H,z):null,[H,z]),q=GU(),{data:Y,isLoading:I,error:V}=bH({queryKey:["uiConfig",f.pathname+f.search,q?.initData],queryFn:async()=>{let Q=new URLSearchParams(f.search);if(Q.set("__pieroot","max"),q?.initData)Q.set("initData",q.initData);let W="/api/content"+f.pathname+"?"+Q.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",W);let C=await $.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(T)console.log("[PieRoot] Received UI configuration:",C.data);return C.data},enabled:!!q?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Q)=>Math.min(1000*2**Q,30000),...P}),J=l(f.pathname,Z,U);if(!H)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&T)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),D?.(),J;if(I||!Y){if(T)console.log("[PieRoot] Loading state:",{isLoading:I,hasUiConfiguration:!!Y});return J}if(T)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return N(w.Provider,{value:G,children:N(o.Provider,{value:X,children:N(y.Provider,{value:B,children:N(F.Provider,{value:U??N(cH,{}),children:N(g,{children:N(p,{children:N("form",{id:"piedata_global_form",action:H+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:N(K,{uiConfig:Y})})})})})})})})},pH=(f)=>{let U=i(()=>new dH,[]);return N(L.Provider,{value:f.onNavigate,children:N(j.Provider,{value:f.config,children:N(uH,{client:U,children:N(gH,{...f})})})})},hH=pH;import{useMemo as lH}from"react";var rH=(f,U={},Z=[],D,P)=>{let H=P?.renderingLogEnabled??!1,z=P?.timeout,T=P?.retryPolicy,$=T?.maxRetries??0,G=T?.baseDelay??1000,X=T?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",D,U,Z);return async(B={})=>{if(typeof window==="undefined"||typeof document==="undefined"){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let q=P?.apiServer;if(!q){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!D||!f){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await Rf();let Y=new FormData;for(let[J,Q]of Object.entries({...U,...B}))Y.append(J,Q);for(let J of Z)if(J==="sid"){if(!window.sid)throw new Error("SocketIO isn't initialized properly");Y.append("sid",window.sid)}else{let Q=document.getElementsByName(J);if(!Q.length){if(H)console.warn(`No input found with name ${J}`);continue}let W=Q[0];if(W instanceof HTMLInputElement)if(W.type==="file"&&W.files)Array.from(W.files).forEach((C)=>Y.append(J,C));else Y.append(J,W.value);else if(W instanceof HTMLTextAreaElement)Y.append(J,W.value)}let I=q+"api/ajax_content"+D;f(null);let V;for(let J=0;J<=$;J++){if(J>0){let C=G*2**(J-1);if(H)console.log(`AJAX retry ${J}/${$} after ${C}ms`);await new Promise((R)=>setTimeout(R,C))}let Q=z!=null?new AbortController:null,W=Q&&setTimeout(()=>Q.abort(),z);try{let C=await fetch(I,{method:"POST",body:Y,signal:Q?.signal});if(W)clearTimeout(W);if(!C.ok&&X.includes(C.status)&&J<$){V=new Error(`HTTP ${C.status}`);continue}let t=(C.headers.get("content-type")||"").includes("application/json");if(!!C.body?.getReader&&!t){let a=C.body.getReader(),JU=new TextDecoder,c="";while(!0){let{done:zf,value:YU}=await a.read();if(zf)break;c+=JU.decode(YU,{stream:!0});let wf=c.split(`
3
+ `);c=wf.pop()??"";for(let XU of wf){let $f=XU.trim();if(!$f)continue;try{let qU=JSON.parse($f);f([qU])}catch{if(H)console.warn("Failed to parse streamed line:",$f)}}}if(c.trim())try{let zf=JSON.parse(c);f([zf])}catch{if(H)console.warn("Failed to parse final streamed line:",c)}return{}}else{let a=await C.json();return f(a),a}}catch(C){if(W)clearTimeout(W);if(V=C,J<$)continue;if(H)console.error("AJAX request failed:",C);return f(null),C}}if(H)console.error("AJAX request failed after retries:",V);return f(null),V}},nH=(f,U={},Z=[],D,P)=>{let{apiServer:H,enableRenderingLog:z}=h(),T=JSON.stringify(U),$=JSON.stringify(Z),G=JSON.stringify(P);return lH(()=>rH(f,U,Z,D,{apiServer:H,renderingLogEnabled:z,timeout:P?.timeout,retryPolicy:P?.retryPolicy}),[f,T,$,D,H,z,G])};import{tool as sH}from"@openai/agents";import{useContext as iH,useMemo as tH}from"react";var VU=/^pie(.+?)_(.+)$/;function IU(f=E(),U={}){let Z=[],D=new Set;for(let P of f.all.keys()){if(typeof P!=="string")continue;let H=P.match(VU);if(!H)continue;let[,z,T]=H,$={methodName:z,cardName:T,eventName:P};if(U.filter&&!U.filter($))continue;let G=U.nameFor?.($)??`${T}_${z}`;if(D.has(G))continue;D.add(G);let X=U.describe?.($)??`Invokes the "${z}" method on the PieCard "${T}" by emitting the in-process mitt event "${P}". The optional "payload" argument is forwarded verbatim to the card's handler.`;Z.push(sH({name:G,description:X,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 q=B?.payload;return f.emit(P,q),`Emitted "${P}"`}}))}return Z}function aH(f={}){let Z=iH(w)??E(),D=[];for(let $ of Z.all.keys())if(typeof $==="string"&&VU.test($))D.push($);D.sort();let P=D.join("|"),{filter:H,describe:z,nameFor:T}=f;return tH(()=>IU(Z,{filter:H,describe:z,nameFor:T}),[Z,P,H,z,T])}import{clsx as eH}from"clsx";import{twMerge as fP}from"tailwind-merge";function UP(...f){return fP(eH(f))}var DP=()=>{if(typeof document==="undefined")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var HP=(f,U)=>`${f}${Tf}${U}`;export{Ff as useWebApp,aH as usePieMittAgentTools,MU as usePieEmit,Df as useOpenAIWebRTC,nH as useAjaxSubmit,EU as unregisterComponent,DP as submitGlobalForm,v as registry,O as registerPieComponent,oU as registerMultipleComponents,HP as pieName,mU as hasComponent,xU as getRegistrySize,r as getRegistryEntry,IU as getMittAgentTools,kU as getComponentMeta,jU as getAllRegisteredComponents,UP as cn,UD as UnionCard,k as UIRendererContext,Xf as UILoading,K as UI,bD as SessionStorageCard,aU as SequenceCard,sD as SecureStorageCard,SH as PieTelegramRoot,WH as PieRoot,hH as PieMaxRoot,_ as PieCard,kH as PieBaseRoot,Tf as PIEBREAK,xD as IOEventsCard,XD as HiddenCard,VD as HTMLEmbedCard,pD as DeviceStorageCard,lD as CloudStorageCard,UH as BoxCard,_D as AutoRedirectCard,eD as AjaxGroupCard};
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- var ZZ=Object.create;var{getPrototypeOf:zZ,defineProperty:YU,getOwnPropertyNames:pU,getOwnPropertyDescriptor:$Z}=Object,nU=Object.prototype.hasOwnProperty;var sU=(U,H,z)=>{z=U!=null?ZZ(zZ(U)):{};let Z=H||!U||!U.__esModule?YU(z,"default",{value:U,enumerable:!0}):z;for(let D of pU(U))if(!nU.call(Z,D))YU(Z,D,{get:()=>U[D],enumerable:!0});return Z},lU=new WeakMap,DZ=(U)=>{var H=lU.get(U),z;if(H)return H;if(H=YU({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")pU(U).map((Z)=>!nU.call(H,Z)&&YU(H,Z,{get:()=>U[Z],enumerable:!(z=$Z(U,Z))||z.enumerable}));return lU.set(U,H),H};var GZ=(U,H)=>{for(var z in H)YU(U,z,{get:H[z],enumerable:!0,configurable:!0,set:(Z)=>H[z]=()=>Z})};var dZ={};GZ(dZ,{useWebApp:()=>kU,usePieEmit:()=>$H,useOpenAIWebRTC:()=>XU,useAjaxSubmit:()=>iH,unregisterComponent:()=>JH,submitGlobalForm:()=>eH,registry:()=>g,registerPieComponent:()=>O,registerMultipleComponents:()=>TH,pieName:()=>UZ,hasComponent:()=>YH,getRegistrySize:()=>qH,getRegistryEntry:()=>t,getComponentMeta:()=>VH,getAllRegisteredComponents:()=>XH,cn:()=>aH,UnionCard:()=>WH,UIRendererContext:()=>m,UILoading:()=>KU,UI:()=>L,SequenceCard:()=>RH,PieTelegramRoot:()=>cH,PieRoot:()=>gH,PieMaxRoot:()=>nH,PieCard:()=>W,PieBaseRoot:()=>uH,PIEBREAK:()=>_U,IOEventsCard:()=>jH,HiddenCard:()=>wH,HTMLEmbedCard:()=>NH,BoxCard:()=>mH,AutoRedirectCard:()=>EH,AjaxGroupCard:()=>xH});module.exports=DZ(dZ);var b=require("react");var BU=require("react"),v=BU.createContext(null),i=()=>{let U=BU.useContext(v);if(!U)throw new Error("usePieConfig must be used within PieConfigProvider");return U},d=()=>{let{apiServer:U}=i();return U},IU=d,h=()=>{let{centrifugeServer:U}=i();return U};var E=()=>{let{enableRenderingLog:U}=i();return U},iU=E,rU=()=>{let{pageProcessor:U}=i();return U};var _U="__piedemo__";var aU=require("react"),mU=require("centrifuge"),tU=new Map,c=(U,H)=>{if(!H)return null;let z=`${U}::${H}`,Z=tU.get(z);if(Z)return Z;async function D(){let G=await fetch(U+"api/centrifuge/gen_token");if(!G.ok){if(G.status===403)throw new mU.Centrifuge.UnauthorizedError("Backend is not answering");throw new Error(`Unexpected status code ${G.status}`)}return(await G.json()).token}let $=new mU.Centrifuge(H,{getToken:D});return tU.set(z,$),$},TZ=aU.createContext(null),k=TZ;var UH=require("socket.io-client"),HH=require("react"),eU=new Map,u=(U)=>{let H=eU.get(U);if(H)return H;let z=UH.io(U,{autoConnect:!1,transports:["websocket"]});return eU.set(U,z),z},JZ=HH.createContext(null),x=JZ;var ZH=sU(require("mitt")),r=require("react"),bU=null;function o(){if(!bU)bU=ZH.default();return bU}var zH=r.createContext(null);function $H(U){let H=r.useContext(zH);return r.useCallback((z,Z)=>{(H??o()).emit(`pie${z}_${U}`,Z)},[U,H])}var S=zH;var YZ=({card:U,data:H,children:z,useSocketioSupport:Z=!1,useCentrifugeSupport:D=!1,useMittSupport:$=!1,centrifugeChannel:G=void 0,methods:J=void 0})=>{let T=iU(),B=b.useRef(J);if(B.current=J,T)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",H),console.log("[PieCard] Component name:",H?.name),console.log("[PieCard] Real-time support:",{socketio:Z,centrifuge:D,mitt:$,centrifugeChannel:G}),console.log("[PieCard] Methods:",J?Object.keys(J):"none"),console.log("[PieCard] Has children:",!!z);let _=b.useContext(x),I=b.useContext(k),V=b.useContext(S);if(b.useEffect(()=>{if(!_||!Z||!B.current||!H.name){if(T&&Z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!_,useSocketioSupport:Z,hasMethods:!!B.current,hasDataName:!!H?.name});return}let Y=Object.keys(B.current??{}).map((X)=>{let P=`pie${X}_${H.name}`;if(T)console.log(`[PieCard] Socket.IO registering event: ${P}`);let Q=(R)=>{B.current?.[X]?.(R)};return _.on(P,Q),[P,Q]});return()=>{Y.forEach(([X,P])=>{if(T)console.log(`[PieCard] Socket.IO unregistering event: ${X}`);_.off(X,P)})}},[_,H.name,Z]),b.useEffect(()=>{if(!I||!D||!G||!H.name){if(T&&D)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!I,useCentrifugeSupport:D,hasCentrifugeChannel:!!G,hasMethods:!!B.current,hasDataName:!!H?.name});return}let Y=Object.keys(B.current??{}).map((X)=>{let P=`pie${X}_${H.name}_${G}`;if(T)console.log(`[PieCard] Centrifuge subscribing to channel: ${P}`);let Q=I.newSubscription(P);return Q.on("publication",(R)=>{if(T)console.log(`[PieCard] Centrifuge received data on ${P}:`,R.data);B.current?.[X]?.(R.data)}),Q.subscribe(),Q});return()=>{Y.forEach((X)=>{if(T)console.log("[PieCard] Centrifuge unsubscribing from channel");X.unsubscribe(),I.removeSubscription(X)})}},[I,G,H.name,D]),b.useEffect(()=>{if(!V||!$||!H.name){if(T&&$)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!V,useMittSupport:$,hasMethods:!!B.current,hasDataName:!!H?.name});return}let q=Object.keys(B.current??{}),Y={};return q.forEach((X)=>{let P=`pie${X}_${H.name}`,Q=(R)=>{if(T)console.log(`[PieCard] Mitt registering event: ${P}`);B.current?.[X]?.(R)};Y[P]=Q,V.on(P,Q)}),()=>{Object.entries(Y).forEach(([X,P])=>{if(T)console.log(`[PieCard] Mitt unregistering event: ${X}`);V.off(X,P)})}},[V,H.name,$]),T)console.log("[PieCard] Rendering complete, returning children");return z},W=YZ;var DH=require("react"),vU=new Map;function GH(U,H){return DH.lazy(()=>{if(vU.has(H))return vU.get(H);let z=U().then((Z)=>Z);return vU.set(H,z),z})}var g=new Map,VZ=(U)=>{if(!U.name)throw new Error("Component registration requires a name");if(!U.component&&!U.loader)throw new Error(`Component "${U.name}" requires component or loader`);let H={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!H.component&&H.loader)H.component=GH(H.loader,U.name),H.loader=void 0,H.isLazy=!0;return H};function O(U){let H=VZ(U);return g.set(H.name,H),H.component}var TH=(U)=>{U.forEach((H)=>O(H))},JH=(U)=>{g.delete(U)},YH=(U)=>{return g.has(U)},VH=(U)=>{return g.get(U)?.metadata},t=(U)=>{return g.get(U)},XH=()=>{return Array.from(g.keys())},qH=()=>{return g.size};var a=require("react");var BH=require("react"),PU=require("react/jsx-runtime"),XZ=BH.createContext(PU.jsx(PU.Fragment,{})),F=XZ;var QU=require("react/jsx-runtime");function qZ({uiConfig:U,setUiAjaxConfiguration:H}){let z=a.useContext(F),Z=E();if(Z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!H);let D=t(U.card);if(!D?.component){if(Z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return z}if(Z)console.log("[UI] Found component in registry:",{name:D.name,isLazy:D.isLazy,hasMetadata:!!D.metadata});let $=D.component,G=QU.jsx($,{data:U.data,content:U.content,setUiAjaxConfiguration:H});if(D.isLazy){if(Z)console.log("[UI] Rendering lazy component with Suspense:",D.name);return QU.jsx(a.Suspense,{fallback:D.fallback?QU.jsx(D.fallback,{}):z,children:G},`${D.name}`)}if(Z)console.log("[UI] Rendering component directly:",D.name);return G}var L=a.memo(qZ);var RU=require("react");var IH=require("react"),BZ=IH.createContext(null),m=BZ;var VU=require("react/jsx-runtime");function _H({uiConfig:U,setUiAjaxConfiguration:H}){let z=RU.useContext(F),Z=E();if(Z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!H);let D=t(U.card);if(!D?.component){if(Z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return z}if(Z)console.log("[UILoading] Found component in registry:",{name:D.name,isLazy:D.isLazy,hasMetadata:!!D.metadata,hasFallback:!!D.fallback});if(D.fallback){if(Z)console.log("[UILoading] Rendering fallback for:",D.name);let J=D.fallback;return VU.jsx(J,{})}if(Z)console.log("[UILoading] No fallback, rendering full component:",D.name);let $=D.component,G=VU.jsx(m.Provider,{value:_H,children:VU.jsx($,{data:U.data,content:U.content,setUiAjaxConfiguration:H})});if(D.isLazy)return VU.jsx(RU.Suspense,{fallback:z,children:G},`${D.name}`);return G}var KU=_H;var PH=require("react");var OU=require("react/jsx-runtime"),IZ=({data:U,content:H,setUiAjaxConfiguration:z})=>{let{name:Z,sx:D}=U,$=PH.useContext(m)??L;return OU.jsx(W,{card:Z,data:U,children:OU.jsx("div",{style:D,id:Z,children:H.map((G,J)=>{return OU.jsx($,{uiConfig:G,setUiAjaxConfiguration:z},`children-${J}`)})})})},QH=IZ;var RH=O({name:"SequenceCard",component:QH,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});var KH=require("react");var dU=require("react/jsx-runtime"),_Z=({data:U,content:H,setUiAjaxConfiguration:z})=>{let{name:Z}=U,D=KH.useContext(m)??L;return dU.jsx(W,{card:Z,data:U,children:H.map(($,G)=>{return dU.jsx(D,{uiConfig:$,setUiAjaxConfiguration:z},`children-${G}`)})})},OH=_Z;var WH=O({name:"UnionCard",component:OH,metadata:{author:"PieData",description:"Renders one of many components"}});var WU=require("react"),FH=sU(require("html-react-parser"));var C=require("react");function PZ(){let U=new AudioContext,H=U.createOscillator(),z=H.connect(U.createMediaStreamDestination());H.start();let Z=z.stream.getAudioTracks()[0];return Z.enabled=!1,Z}function XU(U=null,H){let[z,Z]=C.useState(!1),D=C.useRef(null),$=C.useRef(null),G=C.useRef(null),J=C.useCallback(async(I,V=!0)=>{if(D.current)T();let q=new RTCPeerConnection;if(q.onconnectionstatechange=()=>{if(q.connectionState==="connected")Z(!0);else if(["disconnected","failed","closed"].includes(q.connectionState))Z(!1)},q.ontrack=(K)=>{if(U)U.srcObject=K.streams[0]},V){let K=await navigator.mediaDevices.getUserMedia({audio:!0});q.addTrack(K.getTracks()[0],K)}else{let K=PZ();q.addTrack(K)}let Y=q.createDataChannel("oai-events");$.current=Y,G.current=new Promise((K)=>{Y.addEventListener("open",()=>{K()})});let X=await q.createOffer();await q.setLocalDescription(X);let j=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${I}`,"Content-Type":"application/sdp"}})).text();await q.setRemoteDescription({type:"answer",sdp:j}),D.current=q,await G.current},[U]),T=C.useCallback(()=>{let I=$.current;if(I)I.close();D.current?.getSenders()?.forEach((V)=>V.track?.stop()),D.current?.close(),Z(!1),D.current=null,$.current=null,G.current=null},[U]),B=C.useCallback((I)=>{let V=$.current;if(!V){console.error("Data channel is not ready",I);return}let q=new Date().toLocaleTimeString();if(I.event_id=I.event_id||crypto.randomUUID(),V.send(JSON.stringify(I)),!I.timestamp)I.timestamp=q;H?.(I)},[H,U]),_=C.useCallback((I)=>{if(!$.current){console.error("Data channel is not ready");return}let q=()=>{B({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:I}]}}),B({type:"response.create"})};if(G.current)G.current.then(q);else q()},[H,U]);return C.useEffect(()=>{let I=$.current;if(!I)return;let V=(q)=>{let Y=JSON.parse(q.data);if(!Y.timestamp)Y.timestamp=new Date().toLocaleTimeString();H?.(Y)};return I.addEventListener("message",V),()=>{I.removeEventListener("message",V)}},[H,U]),{isSessionActive:z,startSession:J,stopSession:T,sendTextMessage:_}}var fH=require("react/jsx-runtime"),QZ=({data:U})=>{let{html:H,useSocketioSupport:z,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:$}=U,[G,J]=WU.useState(H),{isSessionActive:T,startSession:B,sendTextMessage:_}=XU(null,(Y)=>{if(console.log(Y.type,Y.type==="response.output_text.delta"&&Y.delta),Y.type==="response.output_text.delta"&&Y.delta)J((X)=>X+Y.delta)});return WU.useEffect(()=>{J(H)},[H]),fH.jsx(W,{card:"HTMLEmbedCard",data:U,methods:{update:(Y)=>{J(Y.value)},generateUsingAI:async(Y)=>{try{if(!T&&Y.token)await B(Y.token,!1);_(Y.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(Y)=>{if(!T&&Y.token)await B(Y.token,!1)}},useCentrifugeSupport:Z,useSocketioSupport:z,useMittSupport:D,centrifugeChannel:$,children:FH.default(G)})},LH=QZ;var NH=O({name:"HTMLEmbedCard",component:LH,metadata:{author:"PieData"}});var FU=require("react");var oU=require("react/jsx-runtime"),RZ=({data:U})=>{let{name:H,value:z,useSocketioSupport:Z,useCentrifugeSupport:D,useMittSupport:$,centrifugeChannel:G}=U,[J,T]=FU.useState(z);return FU.useEffect(()=>{T(z)},[z]),oU.jsx(W,{card:"HiddenCard",data:U,useSocketioSupport:Z,useCentrifugeSupport:D,useMittSupport:$,centrifugeChannel:G,methods:{update:({value:B})=>{T(B)}},children:oU.jsx("input",{type:"hidden",id:H,name:H,value:J})})},MH=RZ;var wH=O({name:"HiddenCard",component:MH,metadata:{author:"PieData"}});var qU=require("react");var AH=require("react"),KZ=AH.createContext(void 0),y=KZ;var LU=require("react/jsx-runtime"),OZ=({data:U})=>{let{url:H}=U,z=qU.useContext(y),Z=qU.useContext(F);return qU.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else z?.(H)},[H,z]),LU.jsx(LU.Fragment,{children:Z})},yH=OZ;var EH=O({name:"AutoRedirectCard",component:yH,metadata:{author:"PieData"}});var l=require("react-toastify"),fU=require("react-toastify");var UU=require("react");var e=require("react/jsx-runtime"),WZ={bounce:l.Bounce,slide:l.Slide,zoom:l.Zoom,flip:l.Flip},FZ=(U)=>{let H={...U,type:U.alertType,transition:U.transition?WZ[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};fU.toast(U.message,H)},LZ=(U)=>{console.log("Log event",U)},fZ=(U)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let H=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(Z){console.error("[IOEventsCard] Failed to show notification",Z)}},z=window.Notification.permission;if(z==="granted"){H();return}if(z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((Z)=>{if(Z==="granted")H()})},NZ=({data:U})=>{let{useCentrifugeSupport:H,useSocketioSupport:z,useMittSupport:Z,centrifugeChannel:D}=U,$=UU.useContext(y),G=UU.useRef($);G.current=$;let J=UU.useMemo(()=>({alert:FZ,log:LZ,push:fZ,redirect:(T)=>{if(T.to){let B=T.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(B))window.location.href=B;else G.current?.(B)}else window.location.reload()},reload:(T)=>{if(T.to){let B=T.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(B))window.location.href=B;else G.current?.(B)}else window.location.reload()}}),[]);return e.jsx(e.Fragment,{children:e.jsx(W,{card:"IOEventsCard",data:U,useCentrifugeSupport:H,useSocketioSupport:z,useMittSupport:Z,centrifugeChannel:D,methods:J,children:e.jsx(fU.ToastContainer,{})})})},CH=NZ;var jH=O({name:"IOEventsCard",component:CH,metadata:{author:"PieData"}});var w=require("react");var gU=require("react/jsx-runtime"),MZ=({data:U,content:H})=>{let{useLoader:z,noReturn:Z,returnType:D,useSocketioSupport:$,useCentrifugeSupport:G,useMittSupport:J,centrifugeChannel:T}=U,B=w.useContext(F),_=w.useContext(m)??L,[I,V]=w.useState(!1),[q,Y]=w.useState(null),X=w.useRef(H),P=w.useContext(S),Q=w.useCallback((K)=>{if(K===null)V(!0);else if(V(!1),!Z)X.current=K;if(!Z)Y(K)},[Z]),R=w.useCallback((K)=>{X.current=K.content,Y(K.content)},[]),j=w.useCallback((K)=>{if(K===null)V(!0);else if(V(!1),!Z)for(let s of K)P?.emit(s.name,s.data)},[Z,P]);if(w.useEffect(()=>{Y(H),V(!1)},[H]),!q&&z)return B;return gU.jsx(W,{card:"AjaxGroupCard",data:U,methods:{changeContent:R},useSocketioSupport:$,useCentrifugeSupport:G,useMittSupport:J,centrifugeChannel:T,children:gU.jsx(_,{uiConfig:q??X.current,setUiAjaxConfiguration:D==="events"?j:Q})})},kH=MZ;var xH=O({name:"AjaxGroupCard",component:kH,metadata:{author:"PieData",description:"Group card with AJAX support"}});var hU=require("react");var NU=require("react/jsx-runtime"),wZ=({data:U,content:H,setUiAjaxConfiguration:z})=>{let{name:Z,url:D,sx:$}=U,G=hU.useContext(y),J=hU.useContext(m)??L;return NU.jsx(W,{card:Z,data:U,children:NU.jsx("div",{style:$,id:Z,onClick:(B)=>{if(D)if(B.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(D))window.location.href=D;else G?.(D)},children:NU.jsx(J,{setUiAjaxConfiguration:z,uiConfig:H})})})},SH=wZ;var mH=O({name:"BoxCard",component:SH,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});var ZU=require("react"),zU=require("@tanstack/react-query");var EU=require("react");var AU=require("react"),MU=new Map,wU=new Map;function yU(U,H){let z=`${U}::${H}`,Z=U?MU.get(z):void 0,[D,$]=AU.useState(Z??null);return AU.useEffect(()=>{if(!U)return;if(MU.has(z)){$(MU.get(z));return}let G=wU.get(z);if(!G)G=fetch(U+`api/support/${H}`,{method:"GET"}).then((T)=>T.json()).then((T)=>{return MU.set(z,T),wU.delete(z),T}).catch((T)=>{throw wU.delete(z),T}),wU.set(z,G);let J=!1;return G.then((T)=>{if(!J)$(T)}).catch(()=>{}),()=>{J=!0}},[U,H,z]),D}var cU=null,bH=null;function vH(){bH?.()}function uU(){if(typeof window==="undefined")return Promise.resolve();if(typeof window.sid!=="undefined")return Promise.resolve();if(!cU)cU=new Promise((U)=>{bH=()=>{U()}});return cU}var AZ=({children:U})=>{let H=EU.useContext(x),z=IU(),Z=yU(z,"socketIO"),D=($)=>{if(typeof window!=="undefined")window.sid=$.sid,vH(),console.log(`SocketIO initialized: ${window.sid}`)};return EU.useEffect(()=>{if(!H)return;let $=()=>{console.log("SocketIO connected")},G=(J)=>{console.log(`SocketIO disconnected: ${J}`),H.connect()};if(Z)H.on("pieinit",D),H.on("connect",$),H.on("disconnect",G),H.connect();return()=>{if(Z)H.off("pieinit",D),H.off("connect",$),H.off("disconnect",G),H.disconnect()}},[H,Z]),U},p=AZ;var CU=require("react");var yZ=({children:U})=>{let H=CU.useContext(k),z=IU(),Z=yU(z,"centrifuge");return CU.useEffect(()=>{if(!H)return;let D=()=>{console.log("Centrifuge connected")},$=(G)=>{console.log("Centrifuge disconnected:",G)};if(Z)H.on("connected",D),H.on("disconnected",$),H.connect();return()=>{if(Z)H.disconnect()}},[H,Z]),U},n=yZ;var oH=require("axios-date-transformer");var dH=require("react/jsx-runtime");function HU(U,H,z){if(!H)return z;let Z=U.replace(/^\//,""),D=H[Z];if(!D)return z;return dH.jsx(KU,{uiConfig:D})}var f=require("react/jsx-runtime"),EZ=({location:U,fallback:H,piecache:z,onError:Z,queryOptions:D})=>{let $=d(),G=h(),J=E(),T=ZU.useMemo(()=>oH.createAxiosDateTransformer({baseURL:$||""}),[$]),B=ZU.useMemo(()=>o(),[]),_=ZU.useMemo(()=>$?u($):null,[$]),I=ZU.useMemo(()=>$?c($,G):null,[$,G]),{data:V,isLoading:q,error:Y}=zU.useQuery({queryKey:["uiConfig",U.pathname+U.search,$],enabled:!!$,queryFn:async()=>{let P=new URLSearchParams(U.search);P.set("__pieroot","web");let Q="/api/content"+U.pathname+"?"+P.toString();if(J)console.log("[PieRoot] Fetching UI configuration from:",Q);let R=await T.get(Q,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(J)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:(P)=>Math.min(1000*2**P,30000),...D}),X=HU(U.pathname,z,H);if(!$)return X??null;if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",$),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!H),console.log("[PieRoot] Piecache provided:",!!z);if(Y){if(J)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 Z?.(),X}if(q||!V){if(J)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!V});return X}if(J)console.log("[PieRoot] UI configuration loaded successfully:",V),console.log("[PieRoot] Rendering UI with configuration");return f.jsx(S.Provider,{value:B,children:f.jsx(x.Provider,{value:_,children:f.jsx(k.Provider,{value:I,children:f.jsx(F.Provider,{value:H??f.jsx(f.Fragment,{}),children:f.jsx(p,{children:f.jsx(n,{children:f.jsx("form",{id:"piedata_global_form",action:$+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:f.jsx(L,{uiConfig:V})})})})})})})})},CZ=(U)=>{let H=ZU.useMemo(()=>new zU.QueryClient,[]);return f.jsx(y.Provider,{value:U.onNavigate,children:f.jsx(v.Provider,{value:U.config,children:f.jsx(zU.QueryClientProvider,{client:H,children:f.jsx(EZ,{...U})})})})},gH=CZ;var $U=require("react"),DU=require("@tanstack/react-query");var hH=require("axios-date-transformer");var jU=require("react");var kU=({onError:U}={})=>{let[H,z]=jU.useState(null),Z=rU();return jU.useEffect(()=>{if(typeof window==="undefined")return;let D=window.Telegram?.WebApp;if(!D)return;try{D.ready?.()}catch($){U?.()}if(Z==="telegram_expanded"&&(D.platform==="ios"||D.platform==="android"))D.expand();z(D)},[]),H};var N=require("react/jsx-runtime"),jZ=({location:U,fallback:H,piecache:z,onError:Z,queryOptions:D})=>{let $=d(),G=h(),J=E(),T=$U.useMemo(()=>hH.createAxiosDateTransformer({baseURL:$}),[$]),B=$U.useMemo(()=>o(),[]),_=$U.useMemo(()=>$?u($):null,[$]),I=$U.useMemo(()=>$?c($,G):null,[$,G]),V=kU({onError:Z}),{data:q,isLoading:Y,error:X}=DU.useQuery({queryKey:["uiConfig",U.pathname+U.search,V?.initData],enabled:!!V?.initData,queryFn:async()=>{let Q=new URLSearchParams(U.search);if(Q.set("__pieroot","telegram"),V?.initData)Q.set("initData",V.initData);let R="/api/content"+U.pathname+"?"+Q.toString();if(J)console.log("[PieRoot] Fetching UI configuration from:",R);let j=await T.get(R,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(J)console.log("[PieRoot] Received UI configuration:",j.data);return j.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Q)=>Math.min(1000*2**Q,30000),...D}),P=HU(U.pathname,z,H);if(!$)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(X&&J)return console.error("[PieRoot] Error fetching UI configuration:",X),console.error("[PieRoot] Error details:",{message:X.message,status:X.response?.status,data:X.response?.data}),Z?.(),P;if(Y||!q){if(J)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!q});return P}if(J)console.log("[PieRoot] UI configuration loaded successfully:",q),console.log("[PieRoot] Rendering UI with configuration");return N.jsx(S.Provider,{value:B,children:N.jsx(x.Provider,{value:_,children:N.jsx(k.Provider,{value:I,children:N.jsx(F.Provider,{value:H??N.jsx(N.Fragment,{}),children:N.jsx(p,{children:N.jsx(n,{children:N.jsx("form",{id:"piedata_global_form",action:$+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:N.jsx(L,{uiConfig:q})})})})})})})})},kZ=(U)=>{let H=$U.useMemo(()=>new DU.QueryClient,[]);return N.jsx(y.Provider,{value:U.onNavigate,children:N.jsx(v.Provider,{value:U.config,children:N.jsx(DU.QueryClientProvider,{client:H,children:N.jsx(jZ,{...U})})})})},cH=kZ;var GU=require("react"),xU=require("@tanstack/react-query");var A=require("react/jsx-runtime"),xZ=({location:U,fallback:H,children:z})=>{let Z=d(),D=h(),$=E(),G=GU.useMemo(()=>o(),[]),J=GU.useMemo(()=>Z?u(Z):null,[Z]),T=GU.useMemo(()=>Z?c(Z,D):null,[Z,D]);if($)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",D),console.log("[PieRoot] Fallback provided:",!!H);return A.jsx(S.Provider,{value:G,children:A.jsx(x.Provider,{value:J,children:A.jsx(k.Provider,{value:T,children:A.jsx(F.Provider,{value:H??A.jsx(A.Fragment,{}),children:A.jsx(p,{children:A.jsx(n,{children:A.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:z})})})})})})})},SZ=(U)=>{let[H]=GU.useState(()=>new xU.QueryClient);return A.jsx(y.Provider,{value:U.onNavigate,children:A.jsx(v.Provider,{value:U.config,children:A.jsx(xU.QueryClientProvider,{client:H,children:A.jsx(xZ,{...U})})})})},uH=SZ;var TU=require("react"),JU=require("@tanstack/react-query");var pH=require("axios-date-transformer");var SU=require("react"),lH=()=>{let[U,H]=SU.useState(null);return SU.useEffect(()=>{if(typeof window==="undefined")return;let z=window.WebApp;if(!z)return;z.ready(),H(z)},[]),U};var M=require("react/jsx-runtime"),mZ=({location:U,fallback:H,piecache:z,onError:Z,queryOptions:D})=>{let $=d(),G=h(),J=E(),T=TU.useMemo(()=>pH.createAxiosDateTransformer({baseURL:$}),[$]),B=TU.useMemo(()=>o(),[]),_=TU.useMemo(()=>$?u($):null,[$]),I=TU.useMemo(()=>$?c($,G):null,[$,G]),V=lH(),{data:q,isLoading:Y,error:X}=JU.useQuery({queryKey:["uiConfig",U.pathname+U.search,V?.initData],queryFn:async()=>{let Q=new URLSearchParams(U.search);if(Q.set("__pieroot","max"),V?.initData)Q.set("initData",V.initData);let R="/api/content"+U.pathname+"?"+Q.toString();if(J)console.log("[PieRoot] Fetching UI configuration from:",R);let j=await T.get(R,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(J)console.log("[PieRoot] Received UI configuration:",j.data);return j.data},enabled:!!V?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Q)=>Math.min(1000*2**Q,30000),...D}),P=HU(U.pathname,z,H);if(!$)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(X&&J)return console.error("[PieRoot] Error fetching UI configuration:",X),console.error("[PieRoot] Error details:",{message:X.message,status:X.response?.status,data:X.response?.data}),Z?.(),P;if(Y||!q){if(J)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!q});return P}if(J)console.log("[PieRoot] UI configuration loaded successfully:",q),console.log("[PieRoot] Rendering UI with configuration");return M.jsx(S.Provider,{value:B,children:M.jsx(x.Provider,{value:_,children:M.jsx(k.Provider,{value:I,children:M.jsx(F.Provider,{value:H??M.jsx(M.Fragment,{}),children:M.jsx(p,{children:M.jsx(n,{children:M.jsx("form",{id:"piedata_global_form",action:$+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:M.jsx(L,{uiConfig:q})})})})})})})})},bZ=(U)=>{let H=TU.useMemo(()=>new JU.QueryClient,[]);return M.jsx(y.Provider,{value:U.onNavigate,children:M.jsx(v.Provider,{value:U.config,children:M.jsx(JU.QueryClientProvider,{client:H,children:M.jsx(mZ,{...U})})})})},nH=bZ;var sH=require("react"),vZ=(U,H={},z=[],Z,D)=>{let $=D?.renderingLogEnabled??!1;if(!D?.apiServer){if($)console.warn("Registration FAILED: apiServer is missing!");return()=>{}}let G=D?.apiServer;if($)console.log("Registering AJAX: ",Z,H,z);if(!Z||!U){if($)console.warn("Registration FAILED: pathname or setUiAjaxConfiguration is missing!");return()=>{}}return async(J={})=>{if(typeof window==="undefined"||typeof document==="undefined"){if($)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}if(z.includes("sid"))await uU();let T=new FormData;for(let[_,I]of Object.entries({...H,...J}))T.append(_,I);for(let _ of z)if(_==="sid"){if(!window.sid)throw new Error("SocketIO isn't initialized properly");T.append("sid",window.sid)}else{let I=document.getElementsByName(_);if(!I.length){if($)console.warn(`No input found with name ${_}`);continue}let V=I[0];if(V instanceof HTMLInputElement)if(V.type==="file"&&V.files)Array.from(V.files).forEach((q)=>T.append(_,q));else T.append(_,V.value);else if(V instanceof HTMLTextAreaElement)T.append(_,V.value)}let B=G+"api/ajax_content"+Z;return U(null),await fetch(B,{method:"POST",body:T}).then(async(_)=>{let V=(_.headers.get("content-type")||"").includes("application/json");if(!!_.body?.getReader&&!V){let Y=_.body.getReader(),X=new TextDecoder,P="";while(!0){let{done:Q,value:R}=await Y.read();if(Q)break;P+=X.decode(R,{stream:!0});let j=P.split(`
3
- `);P=j.pop()??"";for(let K of j){let s=K.trim();if(!s)continue;try{let HZ=JSON.parse(s);U([HZ])}catch{if($)console.warn("Failed to parse streamed line:",s)}}}if(P.trim())try{let Q=JSON.parse(P);U([Q])}catch{if($)console.warn("Failed to parse final streamed line:",P)}return{}}else{let Y=await _.json();return U(Y),Y}}).catch((_)=>{if($)console.error("AJAX request failed:",_);return U(null),_})}},iH=(U,H={},z=[],Z)=>{let{apiServer:D,enableRenderingLog:$}=i(),G=JSON.stringify(H),J=JSON.stringify(z);return sH.useMemo(()=>vZ(U,H,z,Z,{apiServer:D,renderingLogEnabled:$}),[U,G,J,Z,D,$])};var rH=require("clsx"),tH=require("tailwind-merge");function aH(...U){return tH.twMerge(rH.clsx(U))}var eH=()=>{if(typeof document==="undefined")return;let U=document.getElementById("piedata_global_form");U&&U.submit()};var UZ=(U,H)=>`${U}${_U}${H}`;
2
+ var oD=Object.create;var{getPrototypeOf:ED,defineProperty:Gf,getOwnPropertyNames:TU,getOwnPropertyDescriptor:mD}=Object,GU=Object.prototype.hasOwnProperty;var VU=(f,U,H)=>{H=f!=null?oD(ED(f)):{};let D=U||!f||!f.__esModule?Gf(H,"default",{value:f,enumerable:!0}):H;for(let P of TU(f))if(!GU.call(D,P))Gf(D,P,{get:()=>f[P],enumerable:!0});return D},$U=new WeakMap,kD=(f)=>{var U=$U.get(f),H;if(U)return U;if(U=Gf({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")TU(f).map((D)=>!GU.call(U,D)&&Gf(U,D,{get:()=>f[D],enumerable:!(H=mD(f,D))||H.enumerable}));return $U.set(f,U),U};var jD=(f,U)=>{for(var H in U)Gf(f,H,{get:U[H],enumerable:!0,configurable:!0,set:(D)=>U[H]=()=>D})};var CH={};jD(CH,{useWebApp:()=>uf,usePieMittAgentTools:()=>RD,usePieEmit:()=>OU,useOpenAIWebRTC:()=>If,useAjaxSubmit:()=>CD,unregisterComponent:()=>KU,submitGlobalForm:()=>LD,registry:()=>v,registerPieComponent:()=>C,registerMultipleComponents:()=>FU,pieName:()=>MD,hasComponent:()=>wU,getRegistrySize:()=>SU,getRegistryEntry:()=>t,getMittAgentTools:()=>ZU,getComponentMeta:()=>LU,getAllRegisteredComponents:()=>MU,cn:()=>wD,UnionCard:()=>xU,UIRendererContext:()=>x,UILoading:()=>wf,UI:()=>K,SessionStorageCard:()=>iU,SequenceCard:()=>mU,SecureStorageCard:()=>DD,PieTelegramRoot:()=>YD,PieRoot:()=>ID,PieMaxRoot:()=>QD,PieCard:()=>_,PieBaseRoot:()=>XD,PIEBREAK:()=>_f,IOEventsCard:()=>nU,HiddenCard:()=>pU,HTMLEmbedCard:()=>vU,DeviceStorageCard:()=>aU,CloudStorageCard:()=>fD,BoxCard:()=>zD,AutoRedirectCard:()=>lU,AjaxGroupCard:()=>PD});module.exports=kD(CH);var d=require("react");var Cf=require("react"),u=Cf.createContext(null),s=()=>{let f=Cf.useContext(u);if(!f)throw new Error("usePieConfig must be used within PieConfigProvider");return f},b=()=>{let{apiServer:f}=s();return f},Of=b,g=()=>{let{centrifugeServer:f}=s();return f};var o=()=>{let{enableRenderingLog:f}=s();return f},IU=o,JU=()=>{let{pageProcessor:f}=s();return f};var _f="__piedemo__";var XU=require("react"),hf=require("centrifuge"),YU=new Map,p=(f,U)=>{if(!U)return null;let H=`${f}::${U}`,D=YU.get(H);if(D)return D;async function P(){let z=await fetch(f+"api/centrifuge/gen_token");if(!z.ok){if(z.status===403)throw new hf.Centrifuge.UnauthorizedError("Backend is not answering");throw new Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let Z=new hf.Centrifuge(U,{getToken:P});return YU.set(H,Z),Z},xD=XU.createContext(null),m=xD;var BU=require("socket.io-client"),QU=require("react"),qU=new Map,c=(f)=>{let U=qU.get(f);if(U)return U;let H=BU.io(f,{autoConnect:!1,transports:["websocket"]});return qU.set(f,H),H},dD=QU.createContext(null),k=dD;var WU=VU(require("mitt")),i=require("react"),lf=null;function j(){if(!lf)lf=WU.default();return lf}var CU=i.createContext(null);function OU(f){let U=i.useContext(CU);return i.useCallback((H,D)=>{(U??j()).emit(`pie${H}_${f}`,D)},[f,U])}var N=CU;var uD=({card:f,data:U,children:H,useSocketioSupport:D=!1,useCentrifugeSupport:P=!1,useMittSupport:Z=!1,centrifugeChannel:z=void 0,methods:T=void 0})=>{let $=IU(),G=d.useRef(T);if(G.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:D,centrifuge:P,mitt:Z,centrifugeChannel:z}),console.log("[PieCard] Methods:",T?Object.keys(T):"none"),console.log("[PieCard] Has children:",!!H);let X=d.useContext(k),B=d.useContext(m),q=d.useContext(N);if(d.useEffect(()=>{if(!X||!D||!G.current||!U.name){if($&&D)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!X,useSocketioSupport:D,hasMethods:!!G.current,hasDataName:!!U?.name});return}let I=Object.keys(G.current??{}).map((V)=>{let J=`pie${V}_${U.name}`;if($)console.log(`[PieCard] Socket.IO registering event: ${J}`);let Q=(W)=>{G.current?.[V]?.(W)};return X.on(J,Q),[J,Q]});return()=>{I.forEach(([V,J])=>{if($)console.log(`[PieCard] Socket.IO unregistering event: ${V}`);X.off(V,J)})}},[X,U.name,D]),d.useEffect(()=>{if(!B||!P||!z||!U.name){if($&&P)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!B,useCentrifugeSupport:P,hasCentrifugeChannel:!!z,hasMethods:!!G.current,hasDataName:!!U?.name});return}let I=Object.keys(G.current??{}).map((V)=>{let J=`pie${V}_${U.name}_${z}`;if($)console.log(`[PieCard] Centrifuge subscribing to channel: ${J}`);let Q=B.newSubscription(J);return Q.on("publication",(W)=>{if($)console.log(`[PieCard] Centrifuge received data on ${J}:`,W.data);G.current?.[V]?.(W.data)}),Q.subscribe(),Q});return()=>{I.forEach((V)=>{if($)console.log("[PieCard] Centrifuge unsubscribing from channel");V.unsubscribe(),B.removeSubscription(V)})}},[B,z,U.name,P]),d.useEffect(()=>{if(!q||!Z||!U.name){if($&&Z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!q,useMittSupport:Z,hasMethods:!!G.current,hasDataName:!!U?.name});return}let Y=Object.keys(G.current??{}),I={};return Y.forEach((V)=>{let J=`pie${V}_${U.name}`,Q=(W)=>{if($)console.log(`[PieCard] Mitt registering event: ${J}`);G.current?.[V]?.(W)};I[J]=Q,q.on(J,Q)}),()=>{Object.entries(I).forEach(([V,J])=>{if($)console.log(`[PieCard] Mitt unregistering event: ${V}`);q.off(V,J)})}},[q,U.name,Z]),$)console.log("[PieCard] Rendering complete, returning children");return H},_=uD;var _U=require("react"),rf=new Map;function RU(f,U){return _U.lazy(()=>{if(rf.has(U))return rf.get(U);let H=f().then((D)=>D);return rf.set(U,H),H})}var v=new Map,bD=(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=RU(U.loader,f.name),U.loader=void 0,U.isLazy=!0;return U};function C(f){let U=bD(f);return v.set(U.name,U),U.component}var FU=(f)=>{f.forEach((U)=>C(U))},KU=(f)=>{v.delete(f)},wU=(f)=>{return v.has(f)},LU=(f)=>{return v.get(f)?.metadata},t=(f)=>{return v.get(f)},MU=()=>{return Array.from(v.keys())},SU=()=>{return v.size};var a=require("react");var AU=require("react"),Rf=require("react/jsx-runtime"),vD=AU.createContext(Rf.jsx(Rf.Fragment,{})),F=vD;var Ff=require("react/jsx-runtime");function gD({uiConfig:f,setUiAjaxConfiguration:U}){let H=a.useContext(F),D=o();if(D)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 P=t(f.card);if(!P?.component){if(D)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return H}if(D)console.log("[UI] Found component in registry:",{name:P.name,isLazy:P.isLazy,hasMetadata:!!P.metadata});let Z=P.component,z=Ff.jsx(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(P.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",P.name);return Ff.jsx(a.Suspense,{fallback:P.fallback?Ff.jsx(P.fallback,{}):H,children:z},`${P.name}`)}if(D)console.log("[UI] Rendering component directly:",P.name);return z}var K=a.memo(gD);var Kf=require("react");var NU=require("react"),pD=NU.createContext(null),x=pD;var Vf=require("react/jsx-runtime");function yU({uiConfig:f,setUiAjaxConfiguration:U}){let H=Kf.useContext(F),D=o();if(D)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 P=t(f.card);if(!P?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return H}if(D)console.log("[UILoading] Found component in registry:",{name:P.name,isLazy:P.isLazy,hasMetadata:!!P.metadata,hasFallback:!!P.fallback});if(P.fallback){if(D)console.log("[UILoading] Rendering fallback for:",P.name);let T=P.fallback;return Vf.jsx(T,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",P.name);let Z=P.component,z=Vf.jsx(x.Provider,{value:yU,children:Vf.jsx(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(P.isLazy)return Vf.jsx(Kf.Suspense,{fallback:H,children:z},`${P.name}`);return z}var wf=yU;var oU=require("react");var Lf=require("react/jsx-runtime"),cD=({data:f,content:U,setUiAjaxConfiguration:H})=>{let{name:D,sx:P}=f,Z=oU.useContext(x)??K;return Lf.jsx(_,{card:D,data:f,children:Lf.jsx("div",{style:P,id:D,children:U.map((z,T)=>{return Lf.jsx(Z,{uiConfig:z,setUiAjaxConfiguration:H},`children-${T}`)})})})},EU=cD;var mU=C({name:"SequenceCard",component:EU,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});var kU=require("react");var nf=require("react/jsx-runtime"),hD=({data:f,content:U,setUiAjaxConfiguration:H})=>{let{name:D}=f,P=kU.useContext(x)??K;return nf.jsx(_,{card:D,data:f,children:U.map((Z,z)=>{return nf.jsx(P,{uiConfig:Z,setUiAjaxConfiguration:H},`children-${z}`)})})},jU=hD;var xU=C({name:"UnionCard",component:jU,metadata:{author:"PieData",description:"Renders one of many components"}});var Mf=require("react"),dU=VU(require("html-react-parser"));var E=require("react");function lD(){let f=new AudioContext,U=f.createOscillator(),H=U.connect(f.createMediaStreamDestination());U.start();let D=H.stream.getAudioTracks()[0];return D.enabled=!1,D}function If(f=null,U){let[H,D]=E.useState(!1),P=E.useRef(null),Z=E.useRef(null),z=E.useRef(null),T=E.useCallback(async(B,q=!0)=>{if(P.current)$();let Y=new RTCPeerConnection;if(Y.onconnectionstatechange=()=>{if(Y.connectionState==="connected")D(!0);else if(["disconnected","failed","closed"].includes(Y.connectionState))D(!1)},Y.ontrack=(R)=>{if(f)f.srcObject=R.streams[0]},q){let R=await navigator.mediaDevices.getUserMedia({audio:!0});Y.addTrack(R.getTracks()[0],R)}else{let R=lD();Y.addTrack(R)}let I=Y.createDataChannel("oai-events");Z.current=I,z.current=new Promise((R)=>{I.addEventListener("open",()=>{R()})});let V=await Y.createOffer();await Y.setLocalDescription(V);let O=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:V.sdp,headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/sdp"}})).text();await Y.setRemoteDescription({type:"answer",sdp:O}),P.current=Y,await z.current},[f]),$=E.useCallback(()=>{let B=Z.current;if(B)B.close();P.current?.getSenders()?.forEach((q)=>q.track?.stop()),P.current?.close(),D(!1),P.current=null,Z.current=null,z.current=null},[f]),G=E.useCallback((B)=>{let q=Z.current;if(!q){console.error("Data channel is not ready",B);return}let Y=new Date().toLocaleTimeString();if(B.event_id=B.event_id||crypto.randomUUID(),q.send(JSON.stringify(B)),!B.timestamp)B.timestamp=Y;U?.(B)},[U,f]),X=E.useCallback((B)=>{if(!Z.current){console.error("Data channel is not ready");return}let Y=()=>{G({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:B}]}}),G({type:"response.create"})};if(z.current)z.current.then(Y);else Y()},[U,f]);return E.useEffect(()=>{let B=Z.current;if(!B)return;let q=(Y)=>{let I=JSON.parse(Y.data);if(!I.timestamp)I.timestamp=new Date().toLocaleTimeString();U?.(I)};return B.addEventListener("message",q),()=>{B.removeEventListener("message",q)}},[U,f]),{isSessionActive:H,startSession:T,stopSession:$,sendTextMessage:X}}var bU=require("react/jsx-runtime"),rD=({data:f})=>{let{html:U,useSocketioSupport:H,useCentrifugeSupport:D,useMittSupport:P,centrifugeChannel:Z}=f,[z,T]=Mf.useState(U),{isSessionActive:$,startSession:G,sendTextMessage:X}=If(null,(I)=>{if(console.log(I.type,I.type==="response.output_text.delta"&&I.delta),I.type==="response.output_text.delta"&&I.delta)T((V)=>V+I.delta)});return Mf.useEffect(()=>{T(U)},[U]),bU.jsx(_,{card:"HTMLEmbedCard",data:f,methods:{update:(I)=>{T(I.value)},generateUsingAI:async(I)=>{try{if(!$&&I.token)await G(I.token,!1);X(I.prompt)}catch(V){console.error("Failed to generate using AI",V)}},initializeAI:async(I)=>{if(!$&&I.token)await G(I.token,!1)}},useCentrifugeSupport:D,useSocketioSupport:H,useMittSupport:P,centrifugeChannel:Z,children:dU.default(z)})},uU=rD;var vU=C({name:"HTMLEmbedCard",component:uU,metadata:{author:"PieData"}});var Sf=require("react");var sf=require("react/jsx-runtime"),nD=({data:f})=>{let{name:U,value:H,useSocketioSupport:D,useCentrifugeSupport:P,useMittSupport:Z,centrifugeChannel:z}=f,[T,$]=Sf.useState(H);return Sf.useEffect(()=>{$(H)},[H]),sf.jsx(_,{card:"HiddenCard",data:f,useSocketioSupport:D,useCentrifugeSupport:P,useMittSupport:Z,centrifugeChannel:z,methods:{update:({value:G})=>{$(G)}},children:sf.jsx("input",{type:"hidden",id:U,name:U,value:T})})},gU=nD;var pU=C({name:"HiddenCard",component:gU,metadata:{author:"PieData"}});var Jf=require("react");var cU=require("react"),sD=cU.createContext(void 0),y=sD;var Af=require("react/jsx-runtime"),iD=({data:f})=>{let{url:U}=f,H=Jf.useContext(y),D=Jf.useContext(F);return Jf.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else H?.(U)},[U,H]),Af.jsx(Af.Fragment,{children:D})},hU=iD;var lU=C({name:"AutoRedirectCard",component:hU,metadata:{author:"PieData"}});var h=require("react-toastify"),Nf=require("react-toastify");var ff=require("react");var e=require("react/jsx-runtime"),tD={bounce:h.Bounce,slide:h.Slide,zoom:h.Zoom,flip:h.Flip},aD=(f)=>{let U={...f,type:f.alertType,transition:f.transition?tD[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};Nf.toast(f.message,U)},eD=(f)=>{console.log("Log event",f)},fH=(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(D){console.error("[IOEventsCard] Failed to show notification",D)}},H=window.Notification.permission;if(H==="granted"){U();return}if(H==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((D)=>{if(D==="granted")U()})},UH=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:H,useMittSupport:D,centrifugeChannel:P}=f,Z=ff.useContext(y),z=ff.useRef(Z);z.current=Z;let T=ff.useMemo(()=>({alert:aD,log:eD,push:fH,redirect:($)=>{if($.to){let G=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(G))window.location.href=G;else z.current?.(G)}else window.location.reload()},reload:($)=>{if($.to){let G=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(G))window.location.href=G;else z.current?.(G)}else window.location.reload()}}),[]);return e.jsx(e.Fragment,{children:e.jsx(_,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:H,useMittSupport:D,centrifugeChannel:P,methods:T,children:e.jsx(Nf.ToastContainer,{})})})},rU=UH;var nU=C({name:"IOEventsCard",component:rU,metadata:{author:"PieData"}});var Yf=require("react");var tf=require("react/jsx-runtime"),DH=({data:f})=>{let{name:U,key:H,value:D,useSocketioSupport:P,useCentrifugeSupport:Z,useMittSupport:z,centrifugeChannel:T}=f,[$,G]=Yf.useState(D);return Yf.useEffect(()=>{G(D)},[D]),Yf.useEffect(()=>{if(typeof window==="undefined")return;sessionStorage.setItem(H,$)},[H,$]),tf.jsx(_,{card:"SessionStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:Z,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)},remove:()=>{sessionStorage.removeItem(H),G("")}},children:tf.jsx("input",{type:"hidden",id:U,name:U,value:$})})},sU=DH;var iU=C({name:"SessionStorageCard",component:sU,metadata:{author:"PieData"}});var Xf=require("react");var af=require("react/jsx-runtime"),HH=({data:f})=>{let{name:U,key:H,value:D,useSocketioSupport:P,useCentrifugeSupport:Z,useMittSupport:z,centrifugeChannel:T}=f,[$,G]=Xf.useState(D);return Xf.useEffect(()=>{G(D)},[D]),Xf.useEffect(()=>{if(typeof window==="undefined")return;localStorage.setItem(H,$)},[H,$]),af.jsx(_,{card:"DeviceStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:Z,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)},remove:()=>{localStorage.removeItem(H),G("")}},children:af.jsx("input",{type:"hidden",id:U,name:U,value:$})})},tU=HH;var aU=C({name:"DeviceStorageCard",component:tU,metadata:{author:"PieData"}});var qf=require("react");var ef=require("react/jsx-runtime"),PH=({data:f})=>{let{name:U,key:H,value:D,useSocketioSupport:P,useCentrifugeSupport:Z,useMittSupport:z,centrifugeChannel:T}=f,[$,G]=qf.useState(D);return qf.useEffect(()=>{G(D)},[D]),qf.useEffect(()=>{if(typeof window==="undefined")return;let X=window.Telegram?.WebApp?.CloudStorage;if(!X)return;X.setItem(H,$)},[H,$]),ef.jsx(_,{card:"CloudStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:Z,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.CloudStorage;if(X)X.removeItem(H);G("")}},children:ef.jsx("input",{type:"hidden",id:U,name:U,value:$})})},eU=PH;var fD=C({name:"CloudStorageCard",component:eU,metadata:{author:"PieData"}});var Bf=require("react");var fU=require("react/jsx-runtime"),ZH=({data:f})=>{let{name:U,key:H,value:D,useSocketioSupport:P,useCentrifugeSupport:Z,useMittSupport:z,centrifugeChannel:T}=f,[$,G]=Bf.useState(D);return Bf.useEffect(()=>{G(D)},[D]),Bf.useEffect(()=>{if(typeof window==="undefined")return;let X=window.Telegram?.WebApp?.SecureStorage;if(!X)return;X.setItem(H,$)},[H,$]),fU.jsx(_,{card:"SecureStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:Z,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.SecureStorage;if(X)X.removeItem(H);G("")}},children:fU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},UD=ZH;var DD=C({name:"SecureStorageCard",component:UD,metadata:{author:"PieData"}});var S=require("react");var UU=require("react/jsx-runtime"),zH=({data:f,content:U})=>{let{useLoader:H,noReturn:D,returnType:P,useSocketioSupport:Z,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:$}=f,G=S.useContext(F),X=S.useContext(x)??K,[B,q]=S.useState(!1),[Y,I]=S.useState(null),V=S.useRef(U),J=S.useContext(N),Q=S.useCallback((R)=>{if(R===null)q(!0);else if(q(!1),!D)V.current=R;if(!D)I(R)},[D]),W=S.useCallback((R)=>{V.current=R.content,I(R.content)},[]),O=S.useCallback((R)=>{if(R===null)q(!0);else if(q(!1),!D)for(let Qf of R)J?.emit(Qf.name,Qf.data)},[D,J]);if(S.useEffect(()=>{I(U),q(!1)},[U]),!Y&&H)return G;return UU.jsx(_,{card:"AjaxGroupCard",data:f,methods:{changeContent:W},useSocketioSupport:Z,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:$,children:UU.jsx(X,{uiConfig:Y??V.current,setUiAjaxConfiguration:P==="events"?O:Q})})},HD=zH;var PD=C({name:"AjaxGroupCard",component:HD,metadata:{author:"PieData",description:"Group card with AJAX support"}});var DU=require("react");var yf=require("react/jsx-runtime"),$H=({data:f,content:U,setUiAjaxConfiguration:H})=>{let{name:D,url:P,sx:Z}=f,z=DU.useContext(y),T=DU.useContext(x)??K;return yf.jsx(_,{card:D,data:f,children:yf.jsx("div",{style:Z,id:D,onClick:(G)=>{if(P)if(G.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(P))window.location.href=P;else z?.(P)},children:yf.jsx(T,{setUiAjaxConfiguration:H,uiConfig:U})})})},ZD=$H;var zD=C({name:"BoxCard",component:ZD,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});var Df=require("react"),Hf=require("@tanstack/react-query");var jf=require("react");var mf=require("react"),of=new Map,Ef=new Map;function kf(f,U){let H=`${f}::${U}`,D=f?of.get(H):void 0,[P,Z]=mf.useState(D??null);return mf.useEffect(()=>{if(!f)return;if(of.has(H)){Z(of.get(H));return}let z=Ef.get(H);if(!z)z=fetch(f+`api/support/${U}`,{method:"GET"}).then(($)=>$.json()).then(($)=>{return of.set(H,$),Ef.delete(H),$}).catch(($)=>{throw Ef.delete(H),$}),Ef.set(H,z);let T=!1;return z.then(($)=>{if(!T)Z($)}).catch(()=>{}),()=>{T=!0}},[f,U,H]),P}var HU=null,$D=null;function TD(){$D?.()}function PU(){if(typeof window==="undefined")return Promise.resolve();if(typeof window.sid!=="undefined")return Promise.resolve();if(!HU)HU=new Promise((f)=>{$D=()=>{f()}});return HU}var TH=({children:f})=>{let U=jf.useContext(k),H=Of(),D=kf(H,"socketIO"),P=(Z)=>{if(typeof window!=="undefined")window.sid=Z.sid,TD(),console.log(`SocketIO initialized: ${window.sid}`)};return jf.useEffect(()=>{if(!U)return;let Z=()=>{console.log("SocketIO connected")},z=(T)=>{console.log(`SocketIO disconnected: ${T}`),U.connect()};if(D)U.on("pieinit",P),U.on("connect",Z),U.on("disconnect",z),U.connect();return()=>{if(D)U.off("pieinit",P),U.off("connect",Z),U.off("disconnect",z),U.disconnect()}},[U,D]),f},l=TH;var xf=require("react");var GH=({children:f})=>{let U=xf.useContext(m),H=Of(),D=kf(H,"centrifuge");return xf.useEffect(()=>{if(!U)return;let P=()=>{console.log("Centrifuge connected")},Z=(z)=>{console.log("Centrifuge disconnected:",z)};if(D)U.on("connected",P),U.on("disconnected",Z),U.connect();return()=>{if(D)U.disconnect()}},[U,D]),f},r=GH;var VD=require("axios-date-transformer");var GD=require("react/jsx-runtime");function Uf(f,U,H){if(!U)return H;let D=f.replace(/^\//,""),P=U[D];if(!P)return H;return GD.jsx(wf,{uiConfig:P})}var w=require("react/jsx-runtime"),VH=({location:f,fallback:U,piecache:H,onError:D,queryOptions:P})=>{let Z=b(),z=g(),T=o(),$=Df.useMemo(()=>VD.createAxiosDateTransformer({baseURL:Z||""}),[Z]),G=Df.useMemo(()=>j(),[]),X=Df.useMemo(()=>Z?c(Z):null,[Z]),B=Df.useMemo(()=>Z?p(Z,z):null,[Z,z]),{data:q,isLoading:Y,error:I}=Hf.useQuery({queryKey:["uiConfig",f.pathname+f.search,Z],enabled:!!Z,queryFn:async()=>{let J=new URLSearchParams(f.search);J.set("__pieroot","web");let Q="/api/content"+f.pathname+"?"+J.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",Q);let W=await $.get(Q,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(T)console.log("[PieRoot] Received UI configuration:",W.data);return W.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(J)=>Math.min(1000*2**J,30000),...P}),V=Uf(f.pathname,H,U);if(!Z)return V??null;if(T)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!H);if(I){if(T)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 D?.(),V}if(Y||!q){if(T)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!q});return V}if(T)console.log("[PieRoot] UI configuration loaded successfully:",q),console.log("[PieRoot] Rendering UI with configuration");return w.jsx(N.Provider,{value:G,children:w.jsx(k.Provider,{value:X,children:w.jsx(m.Provider,{value:B,children:w.jsx(F.Provider,{value:U??w.jsx(w.Fragment,{}),children:w.jsx(l,{children:w.jsx(r,{children:w.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:w.jsx(K,{uiConfig:q})})})})})})})})},IH=(f)=>{let U=Df.useMemo(()=>new Hf.QueryClient,[]);return w.jsx(y.Provider,{value:f.onNavigate,children:w.jsx(u.Provider,{value:f.config,children:w.jsx(Hf.QueryClientProvider,{client:U,children:w.jsx(VH,{...f})})})})},ID=IH;var Pf=require("react"),Zf=require("@tanstack/react-query");var JD=require("axios-date-transformer");var df=require("react");var uf=({onError:f}={})=>{let[U,H]=df.useState(null),D=JU();return df.useEffect(()=>{if(typeof window==="undefined")return;let P=window.Telegram?.WebApp;if(!P)return;try{P.ready?.()}catch(Z){f?.()}if(D==="telegram_expanded"&&(P.platform==="ios"||P.platform==="android"))P.expand();H(P)},[]),U};var L=require("react/jsx-runtime"),JH=({location:f,fallback:U,piecache:H,onError:D,queryOptions:P})=>{let Z=b(),z=g(),T=o(),$=Pf.useMemo(()=>JD.createAxiosDateTransformer({baseURL:Z}),[Z]),G=Pf.useMemo(()=>j(),[]),X=Pf.useMemo(()=>Z?c(Z):null,[Z]),B=Pf.useMemo(()=>Z?p(Z,z):null,[Z,z]),q=uf({onError:D}),{data:Y,isLoading:I,error:V}=Zf.useQuery({queryKey:["uiConfig",f.pathname+f.search,q?.initData],enabled:!!q?.initData,queryFn:async()=>{let Q=new URLSearchParams(f.search);if(Q.set("__pieroot","telegram"),q?.initData)Q.set("initData",q.initData);let W="/api/content"+f.pathname+"?"+Q.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",W);let O=await $.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(T)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),...P}),J=Uf(f.pathname,H,U);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&T)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),D?.(),J;if(I||!Y){if(T)console.log("[PieRoot] Loading state:",{isLoading:I,hasUiConfiguration:!!Y});return J}if(T)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return L.jsx(N.Provider,{value:G,children:L.jsx(k.Provider,{value:X,children:L.jsx(m.Provider,{value:B,children:L.jsx(F.Provider,{value:U??L.jsx(L.Fragment,{}),children:L.jsx(l,{children:L.jsx(r,{children:L.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:L.jsx(K,{uiConfig:Y})})})})})})})})},YH=(f)=>{let U=Pf.useMemo(()=>new Zf.QueryClient,[]);return L.jsx(y.Provider,{value:f.onNavigate,children:L.jsx(u.Provider,{value:f.config,children:L.jsx(Zf.QueryClientProvider,{client:U,children:L.jsx(JH,{...f})})})})},YD=YH;var zf=require("react"),bf=require("@tanstack/react-query");var A=require("react/jsx-runtime"),XH=({location:f,fallback:U,children:H})=>{let D=b(),P=g(),Z=o(),z=zf.useMemo(()=>j(),[]),T=zf.useMemo(()=>D?c(D):null,[D]),$=zf.useMemo(()=>D?p(D,P):null,[D,P]);if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",P),console.log("[PieRoot] Fallback provided:",!!U);return A.jsx(N.Provider,{value:z,children:A.jsx(k.Provider,{value:T,children:A.jsx(m.Provider,{value:$,children:A.jsx(F.Provider,{value:U??A.jsx(A.Fragment,{}),children:A.jsx(l,{children:A.jsx(r,{children:A.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:H})})})})})})})},qH=(f)=>{let[U]=zf.useState(()=>new bf.QueryClient);return A.jsx(y.Provider,{value:f.onNavigate,children:A.jsx(u.Provider,{value:f.config,children:A.jsx(bf.QueryClientProvider,{client:U,children:A.jsx(XH,{...f})})})})},XD=qH;var $f=require("react"),Tf=require("@tanstack/react-query");var BD=require("axios-date-transformer");var vf=require("react"),qD=()=>{let[f,U]=vf.useState(null);return vf.useEffect(()=>{if(typeof window==="undefined")return;let H=window.WebApp;if(!H)return;H.ready(),U(H)},[]),f};var M=require("react/jsx-runtime"),BH=({location:f,fallback:U,piecache:H,onError:D,queryOptions:P})=>{let Z=b(),z=g(),T=o(),$=$f.useMemo(()=>BD.createAxiosDateTransformer({baseURL:Z}),[Z]),G=$f.useMemo(()=>j(),[]),X=$f.useMemo(()=>Z?c(Z):null,[Z]),B=$f.useMemo(()=>Z?p(Z,z):null,[Z,z]),q=qD(),{data:Y,isLoading:I,error:V}=Tf.useQuery({queryKey:["uiConfig",f.pathname+f.search,q?.initData],queryFn:async()=>{let Q=new URLSearchParams(f.search);if(Q.set("__pieroot","max"),q?.initData)Q.set("initData",q.initData);let W="/api/content"+f.pathname+"?"+Q.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",W);let O=await $.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(T)console.log("[PieRoot] Received UI configuration:",O.data);return O.data},enabled:!!q?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Q)=>Math.min(1000*2**Q,30000),...P}),J=Uf(f.pathname,H,U);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&T)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),D?.(),J;if(I||!Y){if(T)console.log("[PieRoot] Loading state:",{isLoading:I,hasUiConfiguration:!!Y});return J}if(T)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return M.jsx(N.Provider,{value:G,children:M.jsx(k.Provider,{value:X,children:M.jsx(m.Provider,{value:B,children:M.jsx(F.Provider,{value:U??M.jsx(M.Fragment,{}),children:M.jsx(l,{children:M.jsx(r,{children:M.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:M.jsx(K,{uiConfig:Y})})})})})})})})},QH=(f)=>{let U=$f.useMemo(()=>new Tf.QueryClient,[]);return M.jsx(y.Provider,{value:f.onNavigate,children:M.jsx(u.Provider,{value:f.config,children:M.jsx(Tf.QueryClientProvider,{client:U,children:M.jsx(BH,{...f})})})})},QD=QH;var WD=require("react"),WH=(f,U={},H=[],D,P)=>{let Z=P?.renderingLogEnabled??!1,z=P?.timeout,T=P?.retryPolicy,$=T?.maxRetries??0,G=T?.baseDelay??1000,X=T?.retryOn??[502,503,504];if(Z)console.log("Registering AJAX: ",D,U,H);return async(B={})=>{if(typeof window==="undefined"||typeof document==="undefined"){if(Z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let q=P?.apiServer;if(!q){if(Z)console.warn("AJAX skipped: apiServer is missing");return}if(!D||!f){if(Z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(H.includes("sid"))await PU();let Y=new FormData;for(let[J,Q]of Object.entries({...U,...B}))Y.append(J,Q);for(let J of H)if(J==="sid"){if(!window.sid)throw new Error("SocketIO isn't initialized properly");Y.append("sid",window.sid)}else{let Q=document.getElementsByName(J);if(!Q.length){if(Z)console.warn(`No input found with name ${J}`);continue}let W=Q[0];if(W instanceof HTMLInputElement)if(W.type==="file"&&W.files)Array.from(W.files).forEach((O)=>Y.append(J,O));else Y.append(J,W.value);else if(W instanceof HTMLTextAreaElement)Y.append(J,W.value)}let I=q+"api/ajax_content"+D;f(null);let V;for(let J=0;J<=$;J++){if(J>0){let O=G*2**(J-1);if(Z)console.log(`AJAX retry ${J}/${$} after ${O}ms`);await new Promise((R)=>setTimeout(R,O))}let Q=z!=null?new AbortController:null,W=Q&&setTimeout(()=>Q.abort(),z);try{let O=await fetch(I,{method:"POST",body:Y,signal:Q?.signal});if(W)clearTimeout(W);if(!O.ok&&X.includes(O.status)&&J<$){V=new Error(`HTTP ${O.status}`);continue}let Qf=(O.headers.get("content-type")||"").includes("application/json");if(!!O.body?.getReader&&!Qf){let Wf=O.body.getReader(),SD=new TextDecoder,n="";while(!0){let{done:pf,value:AD}=await Wf.read();if(pf)break;n+=SD.decode(AD,{stream:!0});let zU=n.split(`
3
+ `);n=zU.pop()??"";for(let ND of zU){let cf=ND.trim();if(!cf)continue;try{let yD=JSON.parse(cf);f([yD])}catch{if(Z)console.warn("Failed to parse streamed line:",cf)}}}if(n.trim())try{let pf=JSON.parse(n);f([pf])}catch{if(Z)console.warn("Failed to parse final streamed line:",n)}return{}}else{let Wf=await O.json();return f(Wf),Wf}}catch(O){if(W)clearTimeout(W);if(V=O,J<$)continue;if(Z)console.error("AJAX request failed:",O);return f(null),O}}if(Z)console.error("AJAX request failed after retries:",V);return f(null),V}},CD=(f,U={},H=[],D,P)=>{let{apiServer:Z,enableRenderingLog:z}=s(),T=JSON.stringify(U),$=JSON.stringify(H),G=JSON.stringify(P);return WD.useMemo(()=>WH(f,U,H,D,{apiServer:Z,renderingLogEnabled:z,timeout:P?.timeout,retryPolicy:P?.retryPolicy}),[f,T,$,D,Z,z,G])};var OD=require("@openai/agents"),gf=require("react");var _D=/^pie(.+?)_(.+)$/;function ZU(f=j(),U={}){let H=[],D=new Set;for(let P of f.all.keys()){if(typeof P!=="string")continue;let Z=P.match(_D);if(!Z)continue;let[,z,T]=Z,$={methodName:z,cardName:T,eventName:P};if(U.filter&&!U.filter($))continue;let G=U.nameFor?.($)??`${T}_${z}`;if(D.has(G))continue;D.add(G);let X=U.describe?.($)??`Invokes the "${z}" method on the PieCard "${T}" by emitting the in-process mitt event "${P}". The optional "payload" argument is forwarded verbatim to the card's handler.`;H.push(OD.tool({name:G,description:X,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 q=B?.payload;return f.emit(P,q),`Emitted "${P}"`}}))}return H}function RD(f={}){let H=gf.useContext(N)??j(),D=[];for(let $ of H.all.keys())if(typeof $==="string"&&_D.test($))D.push($);D.sort();let P=D.join("|"),{filter:Z,describe:z,nameFor:T}=f;return gf.useMemo(()=>ZU(H,{filter:Z,describe:z,nameFor:T}),[H,P,Z,z,T])}var FD=require("clsx"),KD=require("tailwind-merge");function wD(...f){return KD.twMerge(FD.clsx(f))}var LD=()=>{if(typeof document==="undefined")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var MD=(f,U)=>`${f}${_f}${U}`;