@piedata/pieui 2.0.6 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -20,4 +20,5 @@ export { PIEBREAK } from './util/pieConfig';
20
20
  export { submitGlobalForm } from './util/globalForm.ts';
21
21
  export { pieName } from './util/pieName';
22
22
  export { useWebApp } from './util/useWebApp';
23
+ export { useMaxWebApp } from './util/useMaxWebApp';
23
24
  //# sourceMappingURL=index.d.ts.map
@@ -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,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"}
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;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA"}
package/dist/index.esm.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
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};
2
+ import{useContext as Vf,useEffect as If,useRef as AU}from"react";import{createContext as BU,useContext as WU}from"react";var j=BU(null),h=()=>{let f=WU(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},Mf=M,Af=()=>{let{pageProcessor:f}=h();return f};var Tf="__piedemo__";import{createContext as QU}from"react";import{Centrifuge as Sf}from"centrifuge";var Nf=new Map,u=(f,U)=>{if(!U)return null;let Z=`${f}::${U}`,D=Nf.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 Nf.set(Z,H),H},CU=QU(null),y=CU;import{io as OU}from"socket.io-client";import{createContext as _U}from"react";var yf=new Map,b=(f)=>{let U=yf.get(f);if(U)return U;let Z=OU(f,{autoConnect:!1,transports:["websocket"]});return yf.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 of=KU(null);function MU(f){let U=LU(of);return wU((Z,D)=>{(U??E()).emit(`pie${Z}_${f}`,D)},[f,U])}var w=of;var SU=({card:f,data:U,children:Z,useSocketioSupport:D=!1,useCentrifugeSupport:P=!1,useMittSupport:H=!1,centrifugeChannel:z=void 0,methods:T=void 0})=>{let $=Mf(),G=AU(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 W=(Q)=>{G.current?.[V]?.(Q)};return X.on(J,W),[J,W]});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 W=B.newSubscription(J);return W.on("publication",(Q)=>{if($)console.log(`[PieCard] Centrifuge received data on ${J}:`,Q.data);G.current?.[V]?.(Q.data)}),W.subscribe(),W});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}`,W=(Q)=>{if($)console.log(`[PieCard] Mitt registering event: ${J}`);G.current?.[V]?.(Q)};I[J]=W,q.on(J,W)}),()=>{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},_=SU;import{lazy as NU}from"react";var Jf=new Map;function Ef(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=Ef(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 mf({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:mf,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=mf;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}`)})})})},kf=tU;var aU=O({name:"SequenceCard",component:kf,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});import{useContext as eU}from"react";import{jsx as jf}from"react/jsx-runtime";var fD=({data:f,content:U,setUiAjaxConfiguration:Z})=>{let{name:D}=f,P=eU(k)??K;return jf(_,{card:D,data:f,children:U.map((H,z)=>{return jf(P,{uiConfig:H,setUiAjaxConfiguration:Z},`children-${z}`)})})},xf=fD;var UD=O({name:"UnionCard",component:xf,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)})},df=TD;var VD=O({name:"HTMLEmbedCard",component:df,metadata:{author:"PieData"}});import{useEffect as ID,useState as JD}from"react";import{jsx as uf}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]),uf(_,{card:"HiddenCard",data:f,useSocketioSupport:D,useCentrifugeSupport:P,useMittSupport:H,centrifugeChannel:z,methods:{update:({value:G})=>{$(G)}},children:uf("input",{type:"hidden",id:U,name:U,value:T})})},bf=YD;var XD=O({name:"HiddenCard",component:bf,metadata:{author:"PieData"}});import{useContext as vf,useEffect as WD}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 QD=({data:f})=>{let{url:U}=f,Z=vf(L),D=vf(F);return WD(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),OD(CD,{children:D})},gf=QD;var _D=O({name:"AutoRedirectCard",component:gf,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 AD,useMemo as SD,useRef as ND}from"react";import{jsx as Wf,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=AD(L),z=ND(H);z.current=H;let T=SD(()=>({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 Wf(jD,{children:Wf(_,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:D,centrifugeChannel:P,methods:T,children:Wf(MD,{})})})},pf=kD;var xD=O({name:"IOEventsCard",component:pf,metadata:{author:"PieData"}});import{useEffect as cf,useState as dD}from"react";import{jsx as hf}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 cf(()=>{G(D)},[D]),cf(()=>{if(typeof window==="undefined")return;sessionStorage.setItem(Z,$)},[Z,$]),hf(_,{card:"SessionStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)},remove:()=>{sessionStorage.removeItem(Z),G("")}},children:hf("input",{type:"hidden",id:U,name:U,value:$})})},lf=uD;var bD=O({name:"SessionStorageCard",component:lf,metadata:{author:"PieData"}});import{useEffect as rf,useState as vD}from"react";import{jsx as nf}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 rf(()=>{G(D)},[D]),rf(()=>{if(typeof window==="undefined")return;localStorage.setItem(Z,$)},[Z,$]),nf(_,{card:"DeviceStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)},remove:()=>{localStorage.removeItem(Z),G("")}},children:nf("input",{type:"hidden",id:U,name:U,value:$})})},sf=gD;var pD=O({name:"DeviceStorageCard",component:sf,metadata:{author:"PieData"}});import{useEffect as tf,useState as cD}from"react";import{jsx as af}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 tf(()=>{G(D)},[D]),tf(()=>{if(typeof window==="undefined")return;let X=window.Telegram?.WebApp?.CloudStorage;if(!X)return;X.setItem(Z,$)},[Z,$]),af(_,{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:af("input",{type:"hidden",id:U,name:U,value:$})})},ef=hD;var lD=O({name:"CloudStorageCard",component:ef,metadata:{author:"PieData"}});import{useEffect as fU,useState as rD}from"react";import{jsx as UU}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 fU(()=>{G(D)},[D]),fU(()=>{if(typeof window==="undefined")return;let X=window.Telegram?.WebApp?.SecureStorage;if(!X)return;X.setItem(Z,$)},[Z,$]),UU(_,{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:UU("input",{type:"hidden",id:U,name:U,value:$})})},DU=nD;var sD=O({name:"SecureStorageCard",component:DU,metadata:{author:"PieData"}});import{useCallback as Qf,useContext as Cf,useEffect as iD,useRef as tD,useState as HU}from"react";import{jsx as PU}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]=HU(!1),[Y,I]=HU(null),V=tD(U),J=Cf(w),W=Qf((R)=>{if(R===null)q(!0);else if(q(!1),!D)V.current=R;if(!D)I(R)},[D]),Q=Qf((R)=>{V.current=R.content,I(R.content)},[]),C=Qf((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 PU(_,{card:"AjaxGroupCard",data:f,methods:{changeContent:Q},useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:$,children:PU(X,{uiConfig:Y??V.current,setUiAjaxConfiguration:P==="events"?C:W})})},ZU=aD;var eD=O({name:"AjaxGroupCard",component:ZU,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})})})},$U=fH;var UH=O({name:"BoxCard",component:$U,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,TU=null;function GU(){TU?.()}function Rf(){if(typeof window==="undefined")return Promise.resolve();if(typeof window.sid!=="undefined")return Promise.resolve();if(!_f)_f=new Promise((f)=>{TU=()=>{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,GU(),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 A,Fragment as WH}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 W="/api/content"+f.pathname+"?"+J.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",W);let Q=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:",Q.data);return Q.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 A(w.Provider,{value:G,children:A(o.Provider,{value:X,children:A(y.Provider,{value:B,children:A(F.Provider,{value:U??A(WH,{}),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:q})})})})})})})})},BH=(f)=>{let U=n(()=>new IH,[]);return A(L.Provider,{value:f.onNavigate,children:A(j.Provider,{value:f.config,children:A(JH,{client:U,children:A(qH,{...f})})})})},QH=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=Af();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 S,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 W=new URLSearchParams(f.search);if(W.set("__pieroot","telegram"),q?.initData)W.set("initData",q.initData);let Q="/api/content"+f.pathname+"?"+W.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",Q);let C=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:",C.data);return C.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,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 S(w.Provider,{value:G,children:S(o.Provider,{value:X,children:S(y.Provider,{value:B,children:S(F.Provider,{value:U??S(MH,{}),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:Y})})})})})})})})},LH=(f)=>{let U=s(()=>new _H,[]);return S(L.Provider,{value:f.onNavigate,children:S(j.Provider,{value:f.config,children:S(RH,{client:U,children:S(wH,{...f})})})})},AH=LH;import{useMemo as Kf,useState as SH}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]=SH(()=>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 wf=()=>{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=wf(),{data:Y,isLoading:I,error:V}=bH({queryKey:["uiConfig",f.pathname+f.search,q?.initData],queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","max"),q?.initData)W.set("initData",q.initData);let Q="/api/content"+f.pathname+"?"+W.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",Q);let C=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:",C.data);return C.data},enabled:!!q?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,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,W]of Object.entries({...U,...B}))Y.append(J,W);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 W=document.getElementsByName(J);if(!W.length){if(H)console.warn(`No input found with name ${J}`);continue}let Q=W[0];if(Q instanceof HTMLInputElement)if(Q.type==="file"&&Q.files)Array.from(Q.files).forEach((C)=>Y.append(J,C));else Y.append(J,Q.value);else if(Q instanceof HTMLTextAreaElement)Y.append(J,Q.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 W=z!=null?new AbortController:null,Q=W&&setTimeout(()=>W.abort(),z);try{let C=await fetch(I,{method:"POST",body:Y,signal:W?.signal});if(Q)clearTimeout(Q);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 Lf=c.split(`
3
+ `);c=Lf.pop()??"";for(let XU of Lf){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(Q)clearTimeout(Q);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,wf as useMaxWebApp,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,AH as PieTelegramRoot,QH 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 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}`;
2
+ var oD=Object.create;var{getPrototypeOf:ED,defineProperty:Gf,getOwnPropertyNames:GU,getOwnPropertyDescriptor:mD}=Object,VU=Object.prototype.hasOwnProperty;var IU=(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 GU(f))if(!VU.call(D,P))Gf(D,P,{get:()=>f[P],enumerable:!0});return D},TU=new WeakMap,kD=(f)=>{var U=TU.get(f),H;if(U)return U;if(U=Gf({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")GU(f).map((D)=>!VU.call(U,D)&&Gf(U,D,{get:()=>f[D],enumerable:!(H=mD(f,D))||H.enumerable}));return TU.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:()=>_U,useOpenAIWebRTC:()=>If,useMaxWebApp:()=>gf,useAjaxSubmit:()=>CD,unregisterComponent:()=>wU,submitGlobalForm:()=>LD,registry:()=>v,registerPieComponent:()=>C,registerMultipleComponents:()=>KU,pieName:()=>MD,hasComponent:()=>LU,getRegistrySize:()=>SU,getRegistryEntry:()=>t,getMittAgentTools:()=>zU,getComponentMeta:()=>MU,getAllRegisteredComponents:()=>AU,cn:()=>wD,UnionCard:()=>dU,UIRendererContext:()=>x,UILoading:()=>wf,UI:()=>K,SessionStorageCard:()=>tU,SequenceCard:()=>kU,SecureStorageCard:()=>HD,PieTelegramRoot:()=>XD,PieRoot:()=>JD,PieMaxRoot:()=>WD,PieCard:()=>_,PieBaseRoot:()=>qD,PIEBREAK:()=>_f,IOEventsCard:()=>sU,HiddenCard:()=>cU,HTMLEmbedCard:()=>gU,DeviceStorageCard:()=>eU,CloudStorageCard:()=>UD,BoxCard:()=>$D,AutoRedirectCard:()=>rU,AjaxGroupCard:()=>ZD});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},JU=o,YU=()=>{let{pageProcessor:f}=s();return f};var _f="__piedemo__";var qU=require("react"),lf=require("centrifuge"),XU=new Map,p=(f,U)=>{if(!U)return null;let H=`${f}::${U}`,D=XU.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 lf.Centrifuge.UnauthorizedError("Backend is not answering");throw new Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let Z=new lf.Centrifuge(U,{getToken:P});return XU.set(H,Z),Z},xD=qU.createContext(null),m=xD;var WU=require("socket.io-client"),QU=require("react"),BU=new Map,c=(f)=>{let U=BU.get(f);if(U)return U;let H=WU.io(f,{autoConnect:!1,transports:["websocket"]});return BU.set(f,H),H},dD=QU.createContext(null),k=dD;var CU=IU(require("mitt")),i=require("react"),rf=null;function j(){if(!rf)rf=CU.default();return rf}var OU=i.createContext(null);function _U(f){let U=i.useContext(OU);return i.useCallback((H,D)=>{(U??j()).emit(`pie${H}_${f}`,D)},[f,U])}var N=OU;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 $=JU(),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 W=(Q)=>{G.current?.[V]?.(Q)};return X.on(J,W),[J,W]});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 W=B.newSubscription(J);return W.on("publication",(Q)=>{if($)console.log(`[PieCard] Centrifuge received data on ${J}:`,Q.data);G.current?.[V]?.(Q.data)}),W.subscribe(),W});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}`,W=(Q)=>{if($)console.log(`[PieCard] Mitt registering event: ${J}`);G.current?.[V]?.(Q)};I[J]=W,q.on(J,W)}),()=>{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 RU=require("react"),nf=new Map;function FU(f,U){return RU.lazy(()=>{if(nf.has(U))return nf.get(U);let H=f().then((D)=>D);return nf.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=FU(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 KU=(f)=>{f.forEach((U)=>C(U))},wU=(f)=>{v.delete(f)},LU=(f)=>{return v.has(f)},MU=(f)=>{return v.get(f)?.metadata},t=(f)=>{return v.get(f)},AU=()=>{return Array.from(v.keys())},SU=()=>{return v.size};var a=require("react");var NU=require("react"),Rf=require("react/jsx-runtime"),vD=NU.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 yU=require("react"),pD=yU.createContext(null),x=pD;var Vf=require("react/jsx-runtime");function oU({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:oU,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=oU;var EU=require("react");var Lf=require("react/jsx-runtime"),cD=({data:f,content:U,setUiAjaxConfiguration:H})=>{let{name:D,sx:P}=f,Z=EU.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}`)})})})},mU=cD;var kU=C({name:"SequenceCard",component:mU,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});var jU=require("react");var sf=require("react/jsx-runtime"),hD=({data:f,content:U,setUiAjaxConfiguration:H})=>{let{name:D}=f,P=jU.useContext(x)??K;return sf.jsx(_,{card:D,data:f,children:U.map((Z,z)=>{return sf.jsx(P,{uiConfig:Z,setUiAjaxConfiguration:H},`children-${z}`)})})},xU=hD;var dU=C({name:"UnionCard",component:xU,metadata:{author:"PieData",description:"Renders one of many components"}});var Mf=require("react"),uU=IU(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 vU=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]),vU.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:uU.default(z)})},bU=rD;var gU=C({name:"HTMLEmbedCard",component:bU,metadata:{author:"PieData"}});var Af=require("react");var tf=require("react/jsx-runtime"),nD=({data:f})=>{let{name:U,value:H,useSocketioSupport:D,useCentrifugeSupport:P,useMittSupport:Z,centrifugeChannel:z}=f,[T,$]=Af.useState(H);return Af.useEffect(()=>{$(H)},[H]),tf.jsx(_,{card:"HiddenCard",data:f,useSocketioSupport:D,useCentrifugeSupport:P,useMittSupport:Z,centrifugeChannel:z,methods:{update:({value:G})=>{$(G)}},children:tf.jsx("input",{type:"hidden",id:U,name:U,value:T})})},pU=nD;var cU=C({name:"HiddenCard",component:pU,metadata:{author:"PieData"}});var Jf=require("react");var hU=require("react"),sD=hU.createContext(void 0),y=sD;var Sf=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]),Sf.jsx(Sf.Fragment,{children:D})},lU=iD;var rU=C({name:"AutoRedirectCard",component:lU,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,{})})})},nU=UH;var sU=C({name:"IOEventsCard",component:nU,metadata:{author:"PieData"}});var Yf=require("react");var af=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,$]),af.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:af.jsx("input",{type:"hidden",id:U,name:U,value:$})})},iU=DH;var tU=C({name:"SessionStorageCard",component:iU,metadata:{author:"PieData"}});var Xf=require("react");var ef=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,$]),ef.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:ef.jsx("input",{type:"hidden",id:U,name:U,value:$})})},aU=HH;var eU=C({name:"DeviceStorageCard",component:aU,metadata:{author:"PieData"}});var qf=require("react");var fU=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,$]),fU.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:fU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},fD=PH;var UD=C({name:"CloudStorageCard",component:fD,metadata:{author:"PieData"}});var Bf=require("react");var UU=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,$]),UU.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:UU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},DD=ZH;var HD=C({name:"SecureStorageCard",component:DD,metadata:{author:"PieData"}});var A=require("react");var DU=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=A.useContext(F),X=A.useContext(x)??K,[B,q]=A.useState(!1),[Y,I]=A.useState(null),V=A.useRef(U),J=A.useContext(N),W=A.useCallback((R)=>{if(R===null)q(!0);else if(q(!1),!D)V.current=R;if(!D)I(R)},[D]),Q=A.useCallback((R)=>{V.current=R.content,I(R.content)},[]),O=A.useCallback((R)=>{if(R===null)q(!0);else if(q(!1),!D)for(let Wf of R)J?.emit(Wf.name,Wf.data)},[D,J]);if(A.useEffect(()=>{I(U),q(!1)},[U]),!Y&&H)return G;return DU.jsx(_,{card:"AjaxGroupCard",data:f,methods:{changeContent:Q},useSocketioSupport:Z,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:$,children:DU.jsx(X,{uiConfig:Y??V.current,setUiAjaxConfiguration:P==="events"?O:W})})},PD=zH;var ZD=C({name:"AjaxGroupCard",component:PD,metadata:{author:"PieData",description:"Group card with AJAX support"}});var HU=require("react");var yf=require("react/jsx-runtime"),$H=({data:f,content:U,setUiAjaxConfiguration:H})=>{let{name:D,url:P,sx:Z}=f,z=HU.useContext(y),T=HU.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 $D=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 PU=null,TD=null;function GD(){TD?.()}function ZU(){if(typeof window==="undefined")return Promise.resolve();if(typeof window.sid!=="undefined")return Promise.resolve();if(!PU)PU=new Promise((f)=>{TD=()=>{f()}});return PU}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,GD(),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 ID=require("axios-date-transformer");var VD=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 VD.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(()=>ID.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 W="/api/content"+f.pathname+"?"+J.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",W);let Q=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:",Q.data);return Q.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})})})})},JD=IH;var Pf=require("react"),Zf=require("@tanstack/react-query");var YD=require("axios-date-transformer");var df=require("react");var uf=({onError:f}={})=>{let[U,H]=df.useState(null),D=YU();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(()=>YD.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 W=new URLSearchParams(f.search);if(W.set("__pieroot","telegram"),q?.initData)W.set("initData",q.initData);let Q="/api/content"+f.pathname+"?"+W.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",Q);let O=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:",O.data);return O.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,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})})})})},XD=YH;var zf=require("react"),bf=require("@tanstack/react-query");var S=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 S.jsx(N.Provider,{value:z,children:S.jsx(k.Provider,{value:T,children:S.jsx(m.Provider,{value:$,children:S.jsx(F.Provider,{value:U??S.jsx(S.Fragment,{}),children:S.jsx(l,{children:S.jsx(r,{children:S.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 S.jsx(y.Provider,{value:f.onNavigate,children:S.jsx(u.Provider,{value:f.config,children:S.jsx(bf.QueryClientProvider,{client:U,children:S.jsx(XH,{...f})})})})},qD=qH;var $f=require("react"),Tf=require("@tanstack/react-query");var BD=require("axios-date-transformer");var vf=require("react"),gf=()=>{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=gf(),{data:Y,isLoading:I,error:V}=Tf.useQuery({queryKey:["uiConfig",f.pathname+f.search,q?.initData],queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","max"),q?.initData)W.set("initData",q.initData);let Q="/api/content"+f.pathname+"?"+W.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",Q);let O=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:",O.data);return O.data},enabled:!!q?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,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})})})})})})})})},WH=(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})})})})},WD=WH;var QD=require("react"),QH=(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 ZU();let Y=new FormData;for(let[J,W]of Object.entries({...U,...B}))Y.append(J,W);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 W=document.getElementsByName(J);if(!W.length){if(Z)console.warn(`No input found with name ${J}`);continue}let Q=W[0];if(Q instanceof HTMLInputElement)if(Q.type==="file"&&Q.files)Array.from(Q.files).forEach((O)=>Y.append(J,O));else Y.append(J,Q.value);else if(Q instanceof HTMLTextAreaElement)Y.append(J,Q.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 W=z!=null?new AbortController:null,Q=W&&setTimeout(()=>W.abort(),z);try{let O=await fetch(I,{method:"POST",body:Y,signal:W?.signal});if(Q)clearTimeout(Q);if(!O.ok&&X.includes(O.status)&&J<$){V=new Error(`HTTP ${O.status}`);continue}let Wf=(O.headers.get("content-type")||"").includes("application/json");if(!!O.body?.getReader&&!Wf){let Qf=O.body.getReader(),AD=new TextDecoder,n="";while(!0){let{done:cf,value:SD}=await Qf.read();if(cf)break;n+=AD.decode(SD,{stream:!0});let $U=n.split(`
3
+ `);n=$U.pop()??"";for(let ND of $U){let hf=ND.trim();if(!hf)continue;try{let yD=JSON.parse(hf);f([yD])}catch{if(Z)console.warn("Failed to parse streamed line:",hf)}}}if(n.trim())try{let cf=JSON.parse(n);f([cf])}catch{if(Z)console.warn("Failed to parse final streamed line:",n)}return{}}else{let Qf=await O.json();return f(Qf),Qf}}catch(O){if(Q)clearTimeout(Q);if(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 QD.useMemo(()=>QH(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"),pf=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=pf.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 pf.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}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piedata/pieui",
3
- "version": "2.0.6",
3
+ "version": "2.0.7",
4
4
  "description": "A React component library featuring PieCard component",
5
5
  "repository": {
6
6
  "type": "git",