@swarm.ing/pieui 2.0.34 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/agent/index.d.ts +1 -0
  2. package/dist/agent/index.d.ts.map +1 -1
  3. package/dist/agent/index.esm.js +1 -1
  4. package/dist/agent/index.js +1 -1
  5. package/dist/cli.js +273 -43
  6. package/dist/code/args.d.ts +1 -1
  7. package/dist/code/args.d.ts.map +1 -1
  8. package/dist/code/commands/createPieApp.d.ts.map +1 -1
  9. package/dist/code/commands/registry.d.ts +8 -0
  10. package/dist/code/commands/registry.d.ts.map +1 -0
  11. package/dist/code/types.d.ts +5 -0
  12. package/dist/code/types.d.ts.map +1 -1
  13. package/dist/components/LazyBoundary/index.d.ts +43 -0
  14. package/dist/components/LazyBoundary/index.d.ts.map +1 -0
  15. package/dist/components/PieBaseRoot/index.d.ts.map +1 -1
  16. package/dist/components/PieMaxRoot/index.d.ts.map +1 -1
  17. package/dist/components/PiePreviewRoot/index.d.ts +37 -0
  18. package/dist/components/PiePreviewRoot/index.d.ts.map +1 -0
  19. package/dist/components/PieRoot/index.d.ts.map +1 -1
  20. package/dist/components/PieRoot/types/index.d.ts +19 -3
  21. package/dist/components/PieRoot/types/index.d.ts.map +1 -1
  22. package/dist/components/PieTelegramRoot/index.d.ts.map +1 -1
  23. package/dist/components/UI/index.d.ts.map +1 -1
  24. package/dist/components/UILoading/index.d.ts.map +1 -1
  25. package/dist/components/index.esm.js +1 -1
  26. package/dist/components/index.js +1 -1
  27. package/dist/index.d.ts +4 -6
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.esm.js +2 -2
  30. package/dist/index.js +2 -2
  31. package/dist/max/index.d.ts +12 -0
  32. package/dist/max/index.d.ts.map +1 -0
  33. package/dist/max/index.esm.js +2 -0
  34. package/dist/max/index.js +2 -0
  35. package/dist/telegram/index.d.ts +12 -0
  36. package/dist/telegram/index.d.ts.map +1 -0
  37. package/dist/telegram/index.esm.js +2 -0
  38. package/dist/telegram/index.js +2 -0
  39. package/dist/util/lazy.d.ts.map +1 -1
  40. package/dist/util/lazyError.d.ts +9 -0
  41. package/dist/util/lazyError.d.ts.map +1 -0
  42. package/dist/util/registry.d.ts +28 -0
  43. package/dist/util/registry.d.ts.map +1 -1
  44. package/package.json +26 -11
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- var kU=Object.create;var{getPrototypeOf:mU,defineProperty:Yf,getOwnPropertyNames:YH,getOwnPropertyDescriptor:jU}=Object,XH=Object.prototype.hasOwnProperty;var qH=(f,H,Z)=>{Z=f!=null?kU(mU(f)):{};let U=H||!f||!f.__esModule?Yf(Z,"default",{value:f,enumerable:!0}):Z;for(let $ of YH(f))if(!XH.call(U,$))Yf(U,$,{get:()=>f[$],enumerable:!0});return U},JH=new WeakMap,dU=(f)=>{var H=JH.get(f),Z;if(H)return H;if(H=Yf({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")YH(f).map((U)=>!XH.call(H,U)&&Yf(H,U,{get:()=>f[U],enumerable:!(Z=jU(f,U))||Z.enumerable}));return JH.set(f,H),H};var xU=(f,H)=>{for(var Z in H)Yf(f,Z,{get:H[Z],enumerable:!0,configurable:!0,set:(U)=>H[Z]=()=>U})};var PZ={};xU(PZ,{useWebApp:()=>vf,usePieEmit:()=>wH,useOpenAIWebRTC:()=>qf,useMaxWebApp:()=>hf,useAjaxSubmit:()=>CU,unregisterComponent:()=>SH,submitGlobalForm:()=>LU,registry:()=>v,registerPieComponent:()=>W,registerMultipleComponents:()=>RH,readAjaxKey:()=>VH,pieName:()=>MU,hasComponent:()=>LH,getRegistrySize:()=>AH,getRegistryEntry:()=>a,getEmitter:()=>o,getComponentMeta:()=>MH,getAllRegisteredComponents:()=>NH,cn:()=>SU,UnionCard:()=>bH,UIRendererContext:()=>k,UILoading:()=>Sf,UI:()=>C,SocketIOContext:()=>y,SessionStorageCard:()=>aH,SequenceCard:()=>dH,SecureStorageCard:()=>$U,PieTelegramRoot:()=>QU,PieRoot:()=>IU,PieMaxRoot:()=>PU,PieConfigContext:()=>x,PieCard:()=>w,PieBaseRoot:()=>KU,PIEBREAK:()=>wf,OneOfCard:()=>XU,MittContext:()=>E,IOEventsCard:()=>iH,HiddenCard:()=>pH,HTMLEmbedCard:()=>cH,FallbackContext:()=>F,DeviceStorageCard:()=>fU,CloudStorageCard:()=>UU,CentrifugeIOContext:()=>A,BoxCard:()=>TU,AutoRedirectCard:()=>nH,AjaxGroupCard:()=>zU});module.exports=dU(PZ);var b=require("react");var Wf=require("react"),x=Wf.createContext(null),s=()=>{let f=Wf.useContext(x);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},u=()=>{let{apiServer:f}=s();return f},Pf=u,g=()=>{let{centrifugeServer:f}=s();return f};var j=()=>{let{enableRenderingLog:f}=s();return f},GH=j,OH=()=>{let{pageProcessor:f}=s();return f};var wf="__piedemo__";var IH=require("react"),rf=require("centrifuge"),BH=new Map,c=(f,H)=>{if(!H)return null;let Z=`${f}::${H}`,U=BH.get(Z);if(U)return U;async function $(){let D=await fetch(f+"api/centrifuge/gen_token");if(!D.ok){if(D.status===403)throw new rf.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${D.status}`)}return(await D.json()).token}let z=new rf.Centrifuge(H,{getToken:$});return BH.set(Z,z),z},oU=IH.createContext(null),A=oU;var QH=require("socket.io-client"),KH=require("react"),_H=new Map,h=(f)=>{let H=_H.get(f);if(H)return H;let Z=QH.io(f,{autoConnect:!1,transports:["websocket"]});return _H.set(f,Z),Z},bU=KH.createContext(null),y=bU;var WH=qH(require("mitt")),i=require("react"),nf=null;function o(){if(!nf)nf=WH.default();return nf}var PH=i.createContext(null);function wH(f){let H=i.useContext(PH);return i.useCallback((Z,U)=>{(H??o()).emit(`pie${Z}_${f}`,U)},[f,H])}var E=PH;var t=require("react/jsx-runtime"),uU=({card:f,data:H,children:Z,useSocketioSupport:U=!1,useCentrifugeSupport:$=!1,useMittSupport:z=!1,centrifugeChannel:D=void 0,methods:J=void 0,stored:V=void 0})=>{let T=GH(),X=b.useRef(J);if(X.current=J,T)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",H),console.log("[PieCard] Component name:",H?.name),console.log("[PieCard] Real-time support:",{socketio:U,centrifuge:$,mitt:z,centrifugeChannel:D}),console.log("[PieCard] Methods:",J?Object.keys(J):"none"),console.log("[PieCard] Has children:",!!Z);let B=b.useContext(y),Q=b.useContext(A),q=b.useContext(E);if(b.useEffect(()=>{if(!B||!U||!X.current||!H.name){if(T&&U)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:U,hasMethods:!!X.current,hasDataName:!!H?.name});return}let I=Object.keys(X.current??{}).map((Y)=>{let O=`pie${Y}_${H.name}`;if(T)console.log(`[PieCard] Socket.IO registering event: ${O}`);let K=(_)=>{X.current?.[Y]?.(_)};return B.on(O,K),[O,K]});return()=>{I.forEach(([Y,O])=>{if(T)console.log(`[PieCard] Socket.IO unregistering event: ${Y}`);B.off(Y,O)})}},[B,H.name,U]),b.useEffect(()=>{if(!Q||!$||!D||!H.name){if(T&&$)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!Q,useCentrifugeSupport:$,hasCentrifugeChannel:!!D,hasMethods:!!X.current,hasDataName:!!H?.name});return}let I=Object.keys(X.current??{}).map((Y)=>{let O=`pie${Y}_${H.name}_${D}`;if(T)console.log(`[PieCard] Centrifuge subscribing to channel: ${O}`);let K=Q.newSubscription(O);return K.on("publication",(_)=>{if(T)console.log(`[PieCard] Centrifuge received data on ${O}:`,_.data);X.current?.[Y]?.(_.data)}),K.subscribe(),K});return()=>{I.forEach((Y)=>{if(T)console.log("[PieCard] Centrifuge unsubscribing from channel");Y.unsubscribe(),Q.removeSubscription(Y)})}},[Q,D,H.name,$]),b.useEffect(()=>{if(!q||!z||!H.name){if(T&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!q,useMittSupport:z,hasMethods:!!X.current,hasDataName:!!H?.name});return}let G=Object.keys(X.current??{}),I={};return G.forEach((Y)=>{let O=`pie${Y}_${H.name}`,K=(_)=>{if(T)console.log(`[PieCard] Mitt registering event: ${O}`);X.current?.[Y]?.(_)};I[O]=K,q.on(O,K)}),()=>{Object.entries(I).forEach(([Y,O])=>{if(T)console.log(`[PieCard] Mitt unregistering event: ${Y}`);q.off(Y,O)})}},[q,H.name,z]),T)console.log("[PieCard] Rendering complete, returning children");if(V!==void 0)return t.jsxs(t.Fragment,{children:[t.jsx("input",{type:"hidden",name:H.name,value:JSON.stringify(V)}),Z]});return Z},w=uU;var CH=require("react"),sf=new Map;function FH(f,H){return CH.lazy(()=>{if(sf.has(H))return sf.get(H);let Z=f().then((U)=>U);return sf.set(H,Z),Z})}var v=new Map,vU=(f)=>{if(!f.name)throw Error("Component registration requires a name");if(!f.component&&!f.loader)throw Error(`Component "${f.name}" requires component or loader`);let H={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!H.component&&H.loader)H.component=FH(H.loader,f.name),H.loader=void 0,H.isLazy=!0;return H};function W(f){let H=vU(f);return v.set(H.name,H),H.component}var RH=(f)=>{f.forEach((H)=>W(H))},SH=(f)=>{v.delete(f)},LH=(f)=>{return v.has(f)},MH=(f)=>{return v.get(f)?.metadata},a=(f)=>{return v.get(f)},NH=()=>{return Array.from(v.keys())},AH=()=>{return v.size};var e=require("react");var yH=require("react"),Cf=require("react/jsx-runtime"),gU=yH.createContext(Cf.jsx(Cf.Fragment,{})),F=gU;var Ff=require("react/jsx-runtime");function cU({uiConfig:f,setUiAjaxConfiguration:H}){let Z=e.useContext(F),U=j();if(U)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:",!!H);let $=a(f.card);if(!$?.component){if(U)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return Z}if(U)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let z=$.component,D=Ff.jsx(z,{data:f.data,content:f.content,setUiAjaxConfiguration:H});if($.isLazy){if(U)console.log("[UI] Rendering lazy component with Suspense:",$.name);return Ff.jsx(e.Suspense,{fallback:$.fallback?Ff.jsx($.fallback,{}):Z,children:D},`${$.name}`)}if(U)console.log("[UI] Rendering component directly:",$.name);return D}var C=e.memo(cU);var Rf=require("react");var EH=require("react"),hU=EH.createContext(null),k=hU;var Xf=require("react/jsx-runtime");function kH({uiConfig:f,setUiAjaxConfiguration:H}){let Z=Rf.useContext(F),U=j();if(U)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:",!!H);let $=a(f.card);if(!$?.component){if(U)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return Z}if(U)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(U)console.log("[UILoading] Rendering fallback for:",$.name);let J=$.fallback;return Xf.jsx(J,{})}if(U)console.log("[UILoading] No fallback, rendering full component:",$.name);let z=$.component,D=Xf.jsx(k.Provider,{value:kH,children:Xf.jsx(z,{data:f.data,content:f.content,setUiAjaxConfiguration:H})});if($.isLazy)return Xf.jsx(Rf.Suspense,{fallback:Z,children:D},`${$.name}`);return D}var Sf=kH;var mH=require("react");var Lf=require("react/jsx-runtime"),pU=({data:f,content:H,setUiAjaxConfiguration:Z})=>{let{name:U,sx:$}=f,z=mH.useContext(k)??C;return Lf.jsx(w,{card:U,data:f,children:Lf.jsx("div",{style:$,id:U,children:H.map((D,J)=>{return Lf.jsx(z,{uiConfig:D,setUiAjaxConfiguration:Z},`children-${J}`)})})})},jH=pU;var dH=W({name:"SequenceCard",component:jH,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var xH=require("react");var tf=require("react/jsx-runtime"),lU=({data:f,content:H,setUiAjaxConfiguration:Z})=>{let{name:U}=f,$=xH.useContext(k)??C;return tf.jsx(w,{card:U,data:f,children:H.map((z,D)=>{return tf.jsx($,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${D}`)})})},oH=lU;var bH=W({name:"UnionCard",component:oH,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var Mf=require("react"),uH=qH(require("html-react-parser"));var d=require("react");function rU(){let f=new AudioContext,H=f.createOscillator(),Z=H.connect(f.createMediaStreamDestination());H.start();let U=Z.stream.getAudioTracks()[0];return U.enabled=!1,U}function qf(f=null,H){let[Z,U]=d.useState(!1),$=d.useRef(null),z=d.useRef(null),D=d.useRef(null),J=d.useCallback(async(B,Q=!0)=>{if($.current)V();let q=new RTCPeerConnection;if(q.onconnectionstatechange=()=>{if(q.connectionState==="connected")U(!0);else if(["disconnected","failed","closed"].includes(q.connectionState))U(!1)},q.ontrack=(P)=>{if(f)f.srcObject=P.streams[0]},Q){let P=await navigator.mediaDevices.getUserMedia({audio:!0});q.addTrack(P.getTracks()[0],P)}else{let P=rU();q.addTrack(P)}let G=q.createDataChannel("oai-events");z.current=G,D.current=new Promise((P)=>{G.addEventListener("open",()=>{P()})});let I=await q.createOffer();await q.setLocalDescription(I);let _=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:I.sdp,headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/sdp"}})).text();await q.setRemoteDescription({type:"answer",sdp:_}),$.current=q,await D.current},[f]),V=d.useCallback(()=>{let B=z.current;if(B)B.close();$.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),$.current?.close(),U(!1),$.current=null,z.current=null,D.current=null},[f]),T=d.useCallback((B)=>{let Q=z.current;if(!Q){console.error("Data channel is not ready",B);return}let q=new Date().toLocaleTimeString();if(B.event_id=B.event_id||crypto.randomUUID(),Q.send(JSON.stringify(B)),!B.timestamp)B.timestamp=q;H?.(B)},[H,f]),X=d.useCallback((B)=>{if(!z.current){console.error("Data channel is not ready");return}let q=()=>{T({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:B}]}}),T({type:"response.create"})};if(D.current)D.current.then(q);else q()},[H,f]);return d.useEffect(()=>{let B=z.current;if(!B)return;let Q=(q)=>{let G=JSON.parse(q.data);if(!G.timestamp)G.timestamp=new Date().toLocaleTimeString();H?.(G)};return B.addEventListener("message",Q),()=>{B.removeEventListener("message",Q)}},[H,f]),{isSessionActive:Z,startSession:J,stopSession:V,sendTextMessage:X}}var gH=require("react/jsx-runtime"),nU=({data:f})=>{let{html:H,useSocketioSupport:Z,useCentrifugeSupport:U,useMittSupport:$,centrifugeChannel:z}=f,[D,J]=Mf.useState(H),{isSessionActive:V,startSession:T,sendTextMessage:X}=qf(null,(G)=>{if(console.log(G.type,G.type==="response.output_text.delta"&&G.delta),G.type==="response.output_text.delta"&&G.delta)J((I)=>I+G.delta)});return Mf.useEffect(()=>{J(H)},[H]),gH.jsx(w,{card:"HTMLEmbedCard",data:f,methods:{update:(G)=>{J(G.value)},generateUsingAI:async(G)=>{try{if(!V&&G.token)await T(G.token,!1);X(G.prompt)}catch(I){console.error("Failed to generate using AI",I)}},initializeAI:async(G)=>{if(!V&&G.token)await T(G.token,!1)}},useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:$,centrifugeChannel:z,children:uH.default(D)})},vH=nU;var cH=W({name:"HTMLEmbedCard",component:vH,metadata:{author:"Swarm.ing"}});var Nf=require("react");var af=require("react/jsx-runtime"),sU=({data:f})=>{let{name:H,value:Z,useSocketioSupport:U,useCentrifugeSupport:$,useMittSupport:z,centrifugeChannel:D}=f,[J,V]=Nf.useState(Z);return Nf.useEffect(()=>{V(Z)},[Z]),af.jsx(w,{card:"HiddenCard",data:f,useSocketioSupport:U,useCentrifugeSupport:$,useMittSupport:z,centrifugeChannel:D,methods:{update:({value:T})=>{V(T)}},children:af.jsx("input",{type:"hidden",id:H,name:H,value:J})})},hH=sU;var pH=W({name:"HiddenCard",component:hH,metadata:{author:"Swarm.ing"}});var Gf=require("react");var lH=require("react"),iU=lH.createContext(void 0),m=iU;var Af=require("react/jsx-runtime"),tU=({data:f})=>{let{url:H}=f,Z=Gf.useContext(m),U=Gf.useContext(F);return Gf.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z?.(H)},[H,Z]),Af.jsx(Af.Fragment,{children:U})},rH=tU;var nH=W({name:"AutoRedirectCard",component:rH,metadata:{author:"Swarm.ing"}});var p=require("react-toastify"),yf=require("react-toastify");var Hf=require("react");var ff=require("react/jsx-runtime"),aU={bounce:p.Bounce,slide:p.Slide,zoom:p.Zoom,flip:p.Flip},eU=(f)=>{let H={...f,type:f.alertType,transition:f.transition?aU[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};yf.toast(f.message,H)},fZ=(f)=>{console.log("Log event",f)},HZ=(f)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let H=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(U){console.error("[IOEventsCard] Failed to show notification",U)}},Z=window.Notification.permission;if(Z==="granted"){H();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((U)=>{if(U==="granted")H()})},UZ=({data:f})=>{let{useCentrifugeSupport:H,useSocketioSupport:Z,useMittSupport:U,centrifugeChannel:$}=f,z=Hf.useContext(m),D=Hf.useRef(z);D.current=z;let J=Hf.useMemo(()=>({alert:eU,log:fZ,push:HZ,redirect:(V)=>{if(V.to){let T=V.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else D.current?.(T)}else window.location.reload()},reload:(V)=>{if(V.to){let T=V.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else D.current?.(T)}else window.location.reload()}}),[]);return ff.jsx(ff.Fragment,{children:ff.jsx(w,{card:"IOEventsCard",data:f,useCentrifugeSupport:H,useSocketioSupport:Z,useMittSupport:U,centrifugeChannel:$,methods:J,children:ff.jsx(yf.ToastContainer,{})})})},sH=UZ;var iH=W({name:"IOEventsCard",component:sH,metadata:{author:"Swarm.ing"}});var Of=require("react");var ef=require("react/jsx-runtime"),ZZ=({data:f})=>{let{name:H,key:Z,value:U,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J}=f,[V,T]=Of.useState(U);return Of.useEffect(()=>{T(U)},[U]),Of.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(Z,V)},[Z,V]),ef.jsx(w,{card:"SessionStorageCard",data:f,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J,methods:{update:({value:X})=>{T(X)},remove:()=>{sessionStorage.removeItem(Z),T("")}},children:ef.jsx("input",{type:"hidden",id:H,name:H,value:V})})},tH=ZZ;var aH=W({name:"SessionStorageCard",component:tH,metadata:{author:"PieData"}});var Bf=require("react");var fH=require("react/jsx-runtime"),$Z=({data:f})=>{let{name:H,key:Z,value:U,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J}=f,[V,T]=Bf.useState(U);return Bf.useEffect(()=>{T(U)},[U]),Bf.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(Z,V)},[Z,V]),fH.jsx(w,{card:"DeviceStorageCard",data:f,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J,methods:{update:({value:X})=>{T(X)},remove:()=>{localStorage.removeItem(Z),T("")}},children:fH.jsx("input",{type:"hidden",id:H,name:H,value:V})})},eH=$Z;var fU=W({name:"DeviceStorageCard",component:eH,metadata:{author:"PieData"}});var If=require("react");var HH=require("react/jsx-runtime"),DZ=({data:f})=>{let{name:H,key:Z,value:U,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J}=f,[V,T]=If.useState(U);return If.useEffect(()=>{T(U)},[U]),If.useEffect(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.CloudStorage;if(!X)return;X.setItem(Z,V)},[Z,V]),HH.jsx(w,{card:"CloudStorageCard",data:f,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J,methods:{update:({value:X})=>{T(X)},remove:()=>{let X=window.Telegram?.WebApp?.CloudStorage;if(X)X.removeItem(Z);T("")}},children:HH.jsx("input",{type:"hidden",id:H,name:H,value:V})})},HU=DZ;var UU=W({name:"CloudStorageCard",component:HU,metadata:{author:"PieData"}});var _f=require("react");var UH=require("react/jsx-runtime"),zZ=({data:f})=>{let{name:H,key:Z,value:U,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J}=f,[V,T]=_f.useState(U);return _f.useEffect(()=>{T(U)},[U]),_f.useEffect(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.SecureStorage;if(!X)return;X.setItem(Z,V)},[Z,V]),UH.jsx(w,{card:"SecureStorageCard",data:f,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J,methods:{update:({value:X})=>{T(X)},remove:()=>{let X=window.Telegram?.WebApp?.SecureStorage;if(X)X.removeItem(Z);T("")}},children:UH.jsx("input",{type:"hidden",id:H,name:H,value:V})})},ZU=zZ;var $U=W({name:"SecureStorageCard",component:ZU,metadata:{author:"PieData"}});var M=require("react");var ZH=require("react/jsx-runtime"),VZ=({data:f,content:H})=>{let{useLoader:Z,noReturn:U,returnType:$,useSocketioSupport:z,useCentrifugeSupport:D,useMittSupport:J,centrifugeChannel:V}=f,T=M.useContext(F),X=M.useContext(k)??C,[B,Q]=M.useState(!1),[q,G]=M.useState(null),I=M.useRef(H),Y=M.useContext(E),O=M.useCallback((P)=>{if(P===null)Q(!0);else if(Q(!1),!U)I.current=P;if(!U)G(P)},[U]),K=M.useCallback((P)=>{I.current=P.content,G(P.content)},[]),_=M.useCallback((P)=>{if(P===null)Q(!0);else if(Q(!1),!U)for(let Qf of P)Y?.emit(Qf.name,Qf.data)},[U,Y]);if(M.useEffect(()=>{G(H),Q(!1)},[H]),!q&&Z)return T;return ZH.jsx(w,{card:"AjaxGroupCard",data:f,methods:{changeContent:K},useSocketioSupport:z,useCentrifugeSupport:D,useMittSupport:J,centrifugeChannel:V,children:ZH.jsx(X,{uiConfig:q??I.current,setUiAjaxConfiguration:$==="events"?_:O})})},DU=VZ;var zU=W({name:"AjaxGroupCard",component:DU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var $H=require("react");var Ef=require("react/jsx-runtime"),TZ=({data:f,content:H,setUiAjaxConfiguration:Z})=>{let{name:U,url:$,sx:z}=f,D=$H.useContext(m),J=$H.useContext(k)??C;return Ef.jsx(w,{card:U,data:f,children:Ef.jsx("div",{style:z,id:U,onClick:(T)=>{if($)if(T.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($))window.location.href=$;else D?.($)},children:Ef.jsx(J,{setUiAjaxConfiguration:Z,uiConfig:H})})})},VU=TZ;var TU=W({name:"BoxCard",component:VU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var JU=require("react");var kf=require("react/jsx-runtime"),JZ=({data:f,content:H,setUiAjaxConfiguration:Z})=>{let{name:U,sx:$}=f,z=JU.useContext(k)??C;return kf.jsx(w,{card:U,data:f,children:kf.jsx("div",{style:$,id:U,children:H.map((D,J)=>{return kf.jsx(z,{uiConfig:D,setUiAjaxConfiguration:Z},`children-${J}`)})})})},YU=JZ;var XU=W({name:"OneOfCard",component:YU,metadata:{author:"Swarm.ing",description:"Different variants"}});var Zf=require("react"),$f=require("@tanstack/react-query");var of=require("react");var df=require("react"),mf=new Map,jf=new Map;function xf(f,H){let Z=`${f}::${H}`,U=f?mf.get(Z):void 0,[$,z]=df.useState(U??null);return df.useEffect(()=>{if(!f)return;if(mf.has(Z)){z(mf.get(Z));return}let D=jf.get(Z);if(!D)D=fetch(f+`api/support/${H}`,{method:"GET"}).then((V)=>V.json()).then((V)=>{return mf.set(Z,V),jf.delete(Z),V}).catch((V)=>{throw jf.delete(Z),V}),jf.set(Z,D);let J=!1;return D.then((V)=>{if(!J)z(V)}).catch(()=>{}),()=>{J=!0}},[f,H,Z]),$}var DH=null,qU=null;function GU(){qU?.()}function zH(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!DH)DH=new Promise((f)=>{qU=()=>{f()}});return DH}var YZ=({children:f})=>{let H=of.useContext(y),Z=Pf(),U=xf(Z,"socketIO"),$=(z)=>{if(typeof window<"u")window.sid=z.sid,GU(),console.log(`SocketIO initialized: ${window.sid}`)};return of.useEffect(()=>{if(!H)return;let z=()=>{console.log("SocketIO connected")},D=(J)=>{console.log(`SocketIO disconnected: ${J}`),H.connect()};if(U)H.on("pieinit",$),H.on("connect",z),H.on("disconnect",D),H.connect();return()=>{if(U)H.off("pieinit",$),H.off("connect",z),H.off("disconnect",D),H.disconnect()}},[H,U]),f},l=YZ;var bf=require("react");var XZ=({children:f})=>{let H=bf.useContext(A),Z=Pf(),U=xf(Z,"centrifuge");return bf.useEffect(()=>{if(!H)return;let $=()=>{console.log("Centrifuge connected")},z=(D)=>{console.log("Centrifuge disconnected:",D)};if(U)H.on("connected",$),H.on("disconnected",z),H.connect();return()=>{if(U)H.disconnect()}},[H,U]),f},r=XZ;var BU=require("axios-date-transformer");var OU=require("react/jsx-runtime");function Uf(f,H,Z){if(!H)return Z;let U=f.replace(/^\//,""),$=H[U];if(!$)return Z;return OU.jsx(Sf,{uiConfig:$})}var R=require("react/jsx-runtime"),qZ=({location:f,fallback:H,piecache:Z,onError:U,queryOptions:$,disableGlobalForm:z})=>{let D=u(),J=g(),V=j(),T=Zf.useMemo(()=>BU.createAxiosDateTransformer({baseURL:D||""}),[D]),X=Zf.useMemo(()=>o(),[]),B=Zf.useMemo(()=>D?h(D):null,[D]),Q=Zf.useMemo(()=>D?c(D,J):null,[D,J]),{data:q,isLoading:G,error:I}=$f.useQuery({queryKey:["uiConfig",f.pathname+f.search,D],enabled:!!D,queryFn:async()=>{let O=new URLSearchParams(f.search);O.set("__pieroot","web");let K="/api/content"+f.pathname+"?"+O.toString();if(V)console.log("[PieRoot] Fetching UI configuration from:",K);let _=await T.get(K,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(V)console.log("[PieRoot] Received UI configuration:",_.data);return _.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(O)=>Math.min(1000*2**O,30000),...$}),Y=Uf(f.pathname,Z,H);if(!D)return Y??null;if(V)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",J),console.log("[PieRoot] Fallback provided:",!!H),console.log("[PieRoot] Piecache provided:",!!Z);if(I){if(V)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 U?.(),Y}if(G||!q){if(V)console.log("[PieRoot] Loading state:",{isLoading:G,hasUiConfiguration:!!q});return Y}if(V)console.log("[PieRoot] UI configuration loaded successfully:",q),console.log("[PieRoot] Rendering UI with configuration");return R.jsx(E.Provider,{value:X,children:R.jsx(y.Provider,{value:B,children:R.jsx(A.Provider,{value:Q,children:R.jsx(F.Provider,{value:H??R.jsx(R.Fragment,{}),children:R.jsx(l,{children:R.jsx(r,{children:z?R.jsx(C,{uiConfig:q}):R.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:R.jsx(C,{uiConfig:q})})})})})})})})},GZ=(f)=>{let H=Zf.useMemo(()=>new $f.QueryClient,[]);return R.jsx(m.Provider,{value:f.onNavigate,children:R.jsx(x.Provider,{value:f.config,children:R.jsx($f.QueryClientProvider,{client:H,children:R.jsx(qZ,{...f})})})})},IU=GZ;var Df=require("react"),zf=require("@tanstack/react-query");var _U=require("axios-date-transformer");var uf=require("react");var vf=({onError:f}={})=>{let[H,Z]=uf.useState(null),U=OH();return uf.useEffect(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp;if(!$)return;try{$.ready?.()}catch(z){f?.()}if(U==="telegram_expanded"&&($.platform==="ios"||$.platform==="android"))$.expand();Z($)},[]),H};var S=require("react/jsx-runtime"),OZ=({location:f,fallback:H,piecache:Z,onError:U,queryOptions:$,disableGlobalForm:z})=>{let D=u(),J=g(),V=j(),T=Df.useMemo(()=>_U.createAxiosDateTransformer({baseURL:D}),[D]),X=Df.useMemo(()=>o(),[]),B=Df.useMemo(()=>D?h(D):null,[D]),Q=Df.useMemo(()=>D?c(D,J):null,[D,J]),q=vf({onError:U}),{data:G,isLoading:I,error:Y}=zf.useQuery({queryKey:["uiConfig",f.pathname+f.search,q?.initData],enabled:!!q?.initData,queryFn:async()=>{let K=new URLSearchParams(f.search);if(K.set("__pieroot","telegram"),q?.initData)K.set("initData",q.initData);let _="/api/content"+f.pathname+"?"+K.toString();if(V)console.log("[PieRoot] Fetching UI configuration from:",_);let P=await T.get(_,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(V)console.log("[PieRoot] Received UI configuration:",P.data);return P.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(K)=>Math.min(1000*2**K,30000),...$}),O=Uf(f.pathname,Z,H);if(!D)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(Y&&V)return console.error("[PieRoot] Error fetching UI configuration:",Y),console.error("[PieRoot] Error details:",{message:Y.message,status:Y.response?.status,data:Y.response?.data}),U?.(),O;if(I||!G){if(V)console.log("[PieRoot] Loading state:",{isLoading:I,hasUiConfiguration:!!G});return O}if(V)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return S.jsx(E.Provider,{value:X,children:S.jsx(y.Provider,{value:B,children:S.jsx(A.Provider,{value:Q,children:S.jsx(F.Provider,{value:H??S.jsx(S.Fragment,{}),children:S.jsx(l,{children:S.jsx(r,{children:z?S.jsx(C,{uiConfig:G}):S.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:S.jsx(C,{uiConfig:G})})})})})})})})},BZ=(f)=>{let H=Df.useMemo(()=>new zf.QueryClient,[]);return S.jsx(m.Provider,{value:f.onNavigate,children:S.jsx(x.Provider,{value:f.config,children:S.jsx(zf.QueryClientProvider,{client:H,children:S.jsx(OZ,{...f})})})})},QU=BZ;var Vf=require("react"),gf=require("@tanstack/react-query");var N=require("react/jsx-runtime"),IZ=({location:f,fallback:H,children:Z,disableGlobalForm:U})=>{let $=u(),z=g(),D=j(),J=Vf.useMemo(()=>o(),[]),V=Vf.useMemo(()=>$?h($):null,[$]),T=Vf.useMemo(()=>$?c($,z):null,[$,z]);if(D)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",$),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!H);return N.jsx(E.Provider,{value:J,children:N.jsx(y.Provider,{value:V,children:N.jsx(A.Provider,{value:T,children:N.jsx(F.Provider,{value:H??N.jsx(N.Fragment,{}),children:N.jsx(l,{children:N.jsx(r,{children:U?Z:N.jsx("form",{id:"piedata_global_form",action:$+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},_Z=(f)=>{let[H]=Vf.useState(()=>new gf.QueryClient);return N.jsx(m.Provider,{value:f.onNavigate,children:N.jsx(x.Provider,{value:f.config,children:N.jsx(gf.QueryClientProvider,{client:H,children:N.jsx(IZ,{...f})})})})},KU=_Z;var Tf=require("react"),Jf=require("@tanstack/react-query");var WU=require("axios-date-transformer");var cf=require("react"),hf=()=>{let[f,H]=cf.useState(null);return cf.useEffect(()=>{if(typeof window>"u")return;let Z=window.WebApp;if(!Z)return;Z.ready(),H(Z)},[]),f};var L=require("react/jsx-runtime"),QZ=({location:f,fallback:H,piecache:Z,onError:U,queryOptions:$,disableGlobalForm:z})=>{let D=u(),J=g(),V=j(),T=Tf.useMemo(()=>WU.createAxiosDateTransformer({baseURL:D}),[D]),X=Tf.useMemo(()=>o(),[]),B=Tf.useMemo(()=>D?h(D):null,[D]),Q=Tf.useMemo(()=>D?c(D,J):null,[D,J]),q=hf(),{data:G,isLoading:I,error:Y}=Jf.useQuery({queryKey:["uiConfig",f.pathname+f.search,q?.initData],queryFn:async()=>{let K=new URLSearchParams(f.search);if(K.set("__pieroot","max"),q?.initData)K.set("initData",q.initData);let _="/api/content"+f.pathname+"?"+K.toString();if(V)console.log("[PieRoot] Fetching UI configuration from:",_);let P=await T.get(_,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(V)console.log("[PieRoot] Received UI configuration:",P.data);return P.data},enabled:!!q?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(K)=>Math.min(1000*2**K,30000),...$}),O=Uf(f.pathname,Z,H);if(!D)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(Y&&V)return console.error("[PieRoot] Error fetching UI configuration:",Y),console.error("[PieRoot] Error details:",{message:Y.message,status:Y.response?.status,data:Y.response?.data}),U?.(),O;if(I||!G){if(V)console.log("[PieRoot] Loading state:",{isLoading:I,hasUiConfiguration:!!G});return O}if(V)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return L.jsx(E.Provider,{value:X,children:L.jsx(y.Provider,{value:B,children:L.jsx(A.Provider,{value:Q,children:L.jsx(F.Provider,{value:H??L.jsx(L.Fragment,{}),children:L.jsx(l,{children:L.jsx(r,{children:z?L.jsx(C,{uiConfig:G}):L.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:L.jsx(C,{uiConfig:G})})})})})})})})},KZ=(f)=>{let H=Tf.useMemo(()=>new Jf.QueryClient,[]);return L.jsx(m.Provider,{value:f.onNavigate,children:L.jsx(x.Provider,{value:f.config,children:L.jsx(Jf.QueryClientProvider,{client:H,children:L.jsx(QZ,{...f})})})})},PU=KZ;var wU=require("react"),VH=(f,H=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let Z=document.getElementsByName(f);if(!Z.length){if(H)console.warn(`No input found with name ${f}`);return[]}let U=Z[0];if(U instanceof HTMLInputElement){if(U.type==="file"&&U.files)return Array.from(U.files);return[U.value]}if(U instanceof HTMLTextAreaElement)return[U.value];return[]},WZ=(f,H={},Z=[],U,$)=>{let z=$?.renderingLogEnabled??!1,D=$?.timeout,J=$?.retryPolicy,V=J?.maxRetries??0,T=J?.baseDelay??1000,X=J?.retryOn??[502,503,504];if(z)console.log("Registering AJAX: ",U,H,Z);return async(B={})=>{if(typeof window>"u"||typeof document>"u"){if(z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let Q=$?.apiServer;if(!Q){if(z)console.warn("AJAX skipped: apiServer is missing");return}if(!U||!f){if(z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await zH();let q=new FormData;for(let[Y,O]of Object.entries({...H,...B}))q.append(Y,O);for(let Y of Z)for(let O of VH(Y,z))q.append(Y,O);let G=Q+"api/ajax_content"+U;f(null);let I;for(let Y=0;Y<=V;Y++){if(Y>0){let _=T*2**(Y-1);if(z)console.log(`AJAX retry ${Y}/${V} after ${_}ms`);await new Promise((P)=>setTimeout(P,_))}let O=D!=null?new AbortController:null,K=O&&setTimeout(()=>O.abort(),D);try{let _=await fetch(G,{method:"POST",body:q,signal:O?.signal});if(K)clearTimeout(K);if(!_.ok&&X.includes(_.status)&&Y<V){I=Error(`HTTP ${_.status}`);continue}let Qf=(_.headers.get("content-type")||"").includes("application/json");if(!!_.body?.getReader&&!Qf){let Kf=_.body.getReader(),NU=new TextDecoder,n="";while(!0){let{done:pf,value:AU}=await Kf.read();if(pf)break;n+=NU.decode(AU,{stream:!0});let TH=n.split(`
3
- `);n=TH.pop()??"";for(let yU of TH){let lf=yU.trim();if(!lf)continue;try{let EU=JSON.parse(lf);f([EU])}catch{if(z)console.warn("Failed to parse streamed line:",lf)}}}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 Kf=await _.json();return f(Kf),Kf}}catch(_){if(K)clearTimeout(K);if(I=_,Y<V)continue;if(z)console.error("AJAX request failed:",_);return f(null),_}}if(z)console.error("AJAX request failed after retries:",I);return f(null),I}},CU=(f,H={},Z=[],U,$)=>{let{apiServer:z,enableRenderingLog:D}=s(),J=JSON.stringify(H),V=JSON.stringify(Z),T=JSON.stringify($);return wU.useMemo(()=>WZ(f,H,Z,U,{apiServer:z,renderingLogEnabled:D,timeout:$?.timeout,retryPolicy:$?.retryPolicy}),[f,J,V,U,z,D,T])};var FU=require("clsx"),RU=require("tailwind-merge");function SU(...f){return RU.twMerge(FU.clsx(f))}var LU=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var MU=(f,H)=>`${f}${wf}${H}`;
2
+ var EI=Object.create;var{getPrototypeOf:yI,defineProperty:a,getOwnPropertyNames:OU,getOwnPropertyDescriptor:kI}=Object,TU=Object.prototype.hasOwnProperty;var VU=(f,U,I)=>{I=f!=null?EI(yI(f)):{};let C=U||!f||!f.__esModule?a(I,"default",{value:f,enumerable:!0}):I;for(let D of OU(f))if(!TU.call(C,D))a(C,D,{get:()=>f[D],enumerable:!0});return C},ZU=new WeakMap,jI=(f)=>{var U=ZU.get(f),I;if(U)return U;if(U=a({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")OU(f).map((C)=>!TU.call(U,C)&&a(U,C,{get:()=>f[C],enumerable:!(I=kI(f,C))||I.enumerable}));return ZU.set(f,U),U};var xI=(f,U)=>{for(var I in U)a(f,I,{get:U[I],enumerable:!0,configurable:!0,set:(C)=>U[I]=()=>C})};var PC={};xI(PC,{usePieEmit:()=>WU,useAjaxSubmit:()=>SI,unregisterComponent:()=>KU,trackLazy:()=>Xf,submitGlobalForm:()=>wI,registry:()=>R,registerPieComponent:()=>Y,registerMultipleComponents:()=>FU,readAjaxKey:()=>HU,preloadComponent:()=>gf,prefetchLazyComponents:()=>oU,pieName:()=>MI,hasComponent:()=>_U,getRegistrySize:()=>LU,getRegistryEntry:()=>l,getLazyComponentNames:()=>pf,getEmitter:()=>d,getComponentMeta:()=>wU,getAllRegisteredComponents:()=>MU,cn:()=>_I,UnionCard:()=>dU,UIRendererContext:()=>L,UILoading:()=>Af,UI:()=>_,SocketIOContext:()=>E,SessionStorageCard:()=>eU,SequenceCard:()=>mU,SecureStorageCard:()=>DI,PieRoot:()=>xf,PiePreviewRoot:()=>AI,PieConfigContext:()=>b,PieCard:()=>A,PieBaseRoot:()=>WI,PIEBREAK:()=>Bf,OneOfCard:()=>qI,MittContext:()=>y,IOEventsCard:()=>tU,HiddenCard:()=>hU,HTMLEmbedCard:()=>cU,FallbackContext:()=>M,DeviceStorageCard:()=>UI,CloudStorageCard:()=>CI,CentrifugeIOContext:()=>N,BoxCard:()=>VI,AutoRedirectCard:()=>iU,AjaxGroupCard:()=>OI});module.exports=jI(PC);var k=require("react");var $f=require("react"),b=$f.createContext(null),e=()=>{let f=$f.useContext(b);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},ff=()=>{let{apiServer:f}=e();return f},zf=ff,qf=()=>{let{centrifugeServer:f}=e();return f};var x=()=>{let{enableRenderingLog:f}=e();return f},$U=x;var Bf="__piedemo__";var qU=require("react"),df=require("centrifuge"),zU=new Map,Gf=(f,U)=>{if(!U)return null;let I=`${f}::${U}`,C=zU.get(I);if(C)return C;async function D(){let Z=await fetch(f+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new df.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let H=new df.Centrifuge(U,{getToken:D});return zU.set(I,H),H},mI=qU.createContext(null),N=mI;var GU=require("socket.io-client"),JU=require("react"),BU=new Map,Jf=(f)=>{let U=BU.get(f);if(U)return U;let I=GU.io(f,{autoConnect:!1,transports:["websocket"]});return BU.set(f,I),I},uI=JU.createContext(null),E=uI;var XU=VU(require("mitt")),g=require("react"),vf=null;function d(){if(!vf)vf=XU.default();return vf}var YU=g.createContext(null);function WU(f){let U=g.useContext(YU);return g.useCallback((I,C)=>{(U??d()).emit(`pie${I}_${f}`,C)},[f,U])}var y=YU;var c=require("react/jsx-runtime"),bI=({card:f,data:U,children:I,useSocketioSupport:C=!1,useCentrifugeSupport:D=!1,useMittSupport:H=!1,centrifugeChannel:Z=void 0,methods:V=void 0,stored:O=void 0})=>{let T=$U(),$=k.useRef(V);if($.current=V,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:C,centrifuge:D,mitt:H,centrifugeChannel:Z}),console.log("[PieCard] Methods:",V?Object.keys(V):"none"),console.log("[PieCard] Has children:",!!I);let J=k.useContext(E),W=k.useContext(N),z=k.useContext(y);if(k.useEffect(()=>{if(!J||!C||!$.current||!U.name){if(T&&C)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!J,useSocketioSupport:C,hasMethods:!!$.current,hasDataName:!!U?.name});return}let X=Object.keys($.current??{}).map((q)=>{let G=`pie${q}_${U.name}`;if(T)console.log(`[PieCard] Socket.IO registering event: ${G}`);let S=(Q)=>{$.current?.[q]?.(Q)};return J.on(G,S),[G,S]});return()=>{X.forEach(([q,G])=>{if(T)console.log(`[PieCard] Socket.IO unregistering event: ${q}`);J.off(q,G)})}},[J,U.name,C]),k.useEffect(()=>{if(!W||!D||!Z||!U.name){if(T&&D)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!W,useCentrifugeSupport:D,hasCentrifugeChannel:!!Z,hasMethods:!!$.current,hasDataName:!!U?.name});return}let X=Object.keys($.current??{}).map((q)=>{let G=`pie${q}_${U.name}_${Z}`;if(T)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let S=W.newSubscription(G);return S.on("publication",(Q)=>{if(T)console.log(`[PieCard] Centrifuge received data on ${G}:`,Q.data);$.current?.[q]?.(Q.data)}),S.subscribe(),S});return()=>{X.forEach((q)=>{if(T)console.log("[PieCard] Centrifuge unsubscribing from channel");q.unsubscribe(),W.removeSubscription(q)})}},[W,Z,U.name,D]),k.useEffect(()=>{if(!z||!H||!U.name){if(T&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!z,useMittSupport:H,hasMethods:!!$.current,hasDataName:!!U?.name});return}let B=Object.keys($.current??{}),X={};return B.forEach((q)=>{let G=`pie${q}_${U.name}`,S=(Q)=>{if(T)console.log(`[PieCard] Mitt registering event: ${G}`);$.current?.[q]?.(Q)};X[G]=S,z.on(G,S)}),()=>{Object.entries(X).forEach(([q,G])=>{if(T)console.log(`[PieCard] Mitt unregistering event: ${q}`);z.off(q,G)})}},[z,U.name,H]),T)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return c.jsxs(c.Fragment,{children:[c.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),I]});return I},A=bI;var QU=require("react"),v=new Map;function AU(f,U){return U.catch(()=>{if(v.get(f)===U)v.delete(f)}),v.set(f,U),U}function Xf(f,U){return QU.lazy(()=>{if(v.has(U))return v.get(U);return AU(U,f().then((I)=>I))})}var PU=async(f,U)=>{if(!U)return;if(v.has(f))return v.get(f);return AU(f,U().then((I)=>I))};var R=new Map,dI=(f)=>{if(!f.name)throw Error("Component registration requires a name");if(!f.component&&!f.loader)throw 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=Xf(U.loader,f.name),U.isLazy=!0;return U};function Y(f){let U=dI(f);return R.set(U.name,U),U.component}var FU=(f)=>{f.forEach((U)=>Y(U))},KU=(f)=>{R.delete(f)},_U=(f)=>{return R.has(f)},wU=(f)=>{return R.get(f)?.metadata},l=(f)=>{return R.get(f)},MU=()=>{return Array.from(R.keys())},LU=()=>{return R.size},pf=()=>Array.from(R.values()).filter((f)=>f.isLazy&&typeof f.loader==="function").map((f)=>f.name),gf=(f)=>{let U=R.get(f);if(!U?.isLazy||typeof U.loader!=="function")return;return PU(f,U.loader)},SU=!1,oU=()=>{if(SU||typeof window>"u")return;SU=!0;let f=navigator.connection;if(f?.saveData)return;if(f?.effectiveType&&["slow-2g","2g"].includes(f.effectiveType))return;let U=pf(),I="requestIdleCallback"in window?(D)=>window.requestIdleCallback(D,{timeout:2000}):(D)=>window.setTimeout(D,300),C=(D)=>{if(D>=U.length)return;I(()=>{Promise.resolve().then(()=>gf(U[D])).catch(()=>{}).finally(()=>C(D+1))})};C(0)};var Uf=require("react");var RU=require("react"),Yf=require("react/jsx-runtime"),vI=RU.createContext(Yf.jsx(Yf.Fragment,{})),M=vI;var NU=require("react"),pI=NU.createContext(void 0),m=pI;var Wf=require("react"),EU=require("react/jsx-runtime"),gI=2,cI=400;class h extends Wf.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(f){if(this.props.onError?.(f),this.state.attempt<gI){let U=cI*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},U)}}componentDidUpdate(f){if(f.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return EU.jsx(Wf.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var Qf=require("react/jsx-runtime");function lI({uiConfig:f,setUiAjaxConfiguration:U}){let I=Uf.useContext(M),C=Uf.useContext(m),D=x();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 H=l(f.card);if(!H?.component){if(D)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return I}if(D)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let Z=H.component,V=Qf.jsx(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(H.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",H.name);return Qf.jsx(h,{name:H.name,fallback:H.fallback?Qf.jsx(H.fallback,{}):I,onError:C,children:V})}if(D)console.log("[UI] Rendering component directly:",H.name);return V}var _=Uf.memo(lI);var cf=require("react");var yU=require("react"),hI=yU.createContext(null),L=hI;var If=require("react/jsx-runtime");function kU({uiConfig:f,setUiAjaxConfiguration:U}){let I=cf.useContext(M),C=cf.useContext(m),D=x();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 H=l(f.card);if(!H?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return I}if(D)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(D)console.log("[UILoading] Rendering fallback for:",H.name);let O=H.fallback;return If.jsx(O,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",H.name);let Z=H.component,V=If.jsx(L.Provider,{value:kU,children:If.jsx(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(H.isLazy)return If.jsx(h,{name:H.name,fallback:I,onError:C,children:V});return V}var Af=kU;var jU=require("react");var Pf=require("react/jsx-runtime"),rI=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,sx:D}=f,H=jU.useContext(L)??_;return Pf.jsx(A,{card:C,data:f,children:Pf.jsx("div",{style:D,id:C,children:U.map((Z,V)=>{return Pf.jsx(H,{uiConfig:Z,setUiAjaxConfiguration:I},`children-${V}`)})})})},xU=rI;var mU=Y({name:"SequenceCard",component:xU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var uU=require("react");var lf=require("react/jsx-runtime"),nI=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C}=f,D=uU.useContext(L)??_;return lf.jsx(A,{card:C,data:f,children:U.map((H,Z)=>{return lf.jsx(D,{uiConfig:H,setUiAjaxConfiguration:I},`children-${Z}`)})})},bU=nI;var dU=Y({name:"UnionCard",component:bU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var Sf=require("react"),vU=VU(require("html-react-parser"));var o=require("react");function iI(){let f=new AudioContext,U=f.createOscillator(),I=U.connect(f.createMediaStreamDestination());U.start();let C=I.stream.getAudioTracks()[0];return C.enabled=!1,C}function hf(f=null,U){let[I,C]=o.useState(!1),D=o.useRef(null),H=o.useRef(null),Z=o.useRef(null),V=o.useCallback(async(J,W=!0)=>{if(D.current)O();let z=new RTCPeerConnection;if(z.onconnectionstatechange=()=>{if(z.connectionState==="connected")C(!0);else if(["disconnected","failed","closed"].includes(z.connectionState))C(!1)},z.ontrack=(P)=>{if(f)f.srcObject=P.streams[0]},W){let P=await navigator.mediaDevices.getUserMedia({audio:!0});z.addTrack(P.getTracks()[0],P)}else{let P=iI();z.addTrack(P)}let B=z.createDataChannel("oai-events");H.current=B,Z.current=new Promise((P)=>{B.addEventListener("open",()=>{P()})});let X=await z.createOffer();await z.setLocalDescription(X);let Q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await z.setRemoteDescription({type:"answer",sdp:Q}),D.current=z,await Z.current},[f]),O=o.useCallback(()=>{let J=H.current;if(J)J.close();D.current?.getSenders()?.forEach((W)=>W.track?.stop()),D.current?.close(),C(!1),D.current=null,H.current=null,Z.current=null},[f]),T=o.useCallback((J)=>{let W=H.current;if(!W){console.error("Data channel is not ready",J);return}let z=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),W.send(JSON.stringify(J)),!J.timestamp)J.timestamp=z;U?.(J)},[U,f]),$=o.useCallback((J)=>{if(!H.current){console.error("Data channel is not ready");return}let z=()=>{T({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),T({type:"response.create"})};if(Z.current)Z.current.then(z);else z()},[U,f]);return o.useEffect(()=>{let J=H.current;if(!J)return;let W=(z)=>{let B=JSON.parse(z.data);if(!B.timestamp)B.timestamp=new Date().toLocaleTimeString();U?.(B)};return J.addEventListener("message",W),()=>{J.removeEventListener("message",W)}},[U,f]),{isSessionActive:I,startSession:V,stopSession:O,sendTextMessage:$}}var gU=require("react/jsx-runtime"),sI=({data:f})=>{let{html:U,useSocketioSupport:I,useCentrifugeSupport:C,useMittSupport:D,centrifugeChannel:H}=f,[Z,V]=Sf.useState(U),{isSessionActive:O,startSession:T,sendTextMessage:$}=hf(null,(B)=>{if(console.log(B.type,B.type==="response.output_text.delta"&&B.delta),B.type==="response.output_text.delta"&&B.delta)V((X)=>X+B.delta)});return Sf.useEffect(()=>{V(U)},[U]),gU.jsx(A,{card:"HTMLEmbedCard",data:f,methods:{update:(B)=>{V(B.value)},generateUsingAI:async(B)=>{try{if(!O&&B.token)await T(B.token,!1);$(B.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(B)=>{if(!O&&B.token)await T(B.token,!1)}},useCentrifugeSupport:C,useSocketioSupport:I,useMittSupport:D,centrifugeChannel:H,children:vU.default(Z)})},pU=sI;var cU=Y({name:"HTMLEmbedCard",component:pU,metadata:{author:"Swarm.ing"}});var Ff=require("react");var rf=require("react/jsx-runtime"),tI=({data:f})=>{let{name:U,value:I,useSocketioSupport:C,useCentrifugeSupport:D,useMittSupport:H,centrifugeChannel:Z}=f,[V,O]=Ff.useState(I);return Ff.useEffect(()=>{O(I)},[I]),rf.jsx(A,{card:"HiddenCard",data:f,useSocketioSupport:C,useCentrifugeSupport:D,useMittSupport:H,centrifugeChannel:Z,methods:{update:({value:T})=>{O(T)}},children:rf.jsx("input",{type:"hidden",id:U,name:U,value:V})})},lU=tI;var hU=Y({name:"HiddenCard",component:lU,metadata:{author:"Swarm.ing"}});var Cf=require("react");var rU=require("react"),aI=rU.createContext(void 0),j=aI;var Kf=require("react/jsx-runtime"),eI=({data:f})=>{let{url:U}=f,I=Cf.useContext(j),C=Cf.useContext(M);return Cf.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else I?.(U)},[U,I]),Kf.jsx(Kf.Fragment,{children:C})},nU=eI;var iU=Y({name:"AutoRedirectCard",component:nU,metadata:{author:"Swarm.ing"}});var u=require("react-toastify"),_f=require("react-toastify");var n=require("react");var r=require("react/jsx-runtime"),fC={bounce:u.Bounce,slide:u.Slide,zoom:u.Zoom,flip:u.Flip},UC=(f)=>{let U={...f,type:f.alertType,transition:f.transition?fC[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};_f.toast(f.message,U)},IC=(f)=>{console.log("Log event",f)},CC=(f)=>{if(typeof window>"u"||!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(C){console.error("[IOEventsCard] Failed to show notification",C)}},I=window.Notification.permission;if(I==="granted"){U();return}if(I==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((C)=>{if(C==="granted")U()})},HC=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:C,centrifugeChannel:D}=f,H=n.useContext(j),Z=n.useRef(H);Z.current=H;let V=n.useMemo(()=>({alert:UC,log:IC,push:CC,redirect:(O)=>{if(O.to){let T=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else Z.current?.(T)}else window.location.reload()},reload:(O)=>{if(O.to){let T=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else Z.current?.(T)}else window.location.reload()}}),[]);return r.jsx(r.Fragment,{children:r.jsx(A,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:C,centrifugeChannel:D,methods:V,children:r.jsx(_f.ToastContainer,{})})})},sU=HC;var tU=Y({name:"IOEventsCard",component:sU,metadata:{author:"Swarm.ing"}});var Hf=require("react");var nf=require("react/jsx-runtime"),DC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=Hf.useState(C);return Hf.useEffect(()=>{T(C)},[C]),Hf.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(I,O)},[I,O]),nf.jsx(A,{card:"SessionStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{sessionStorage.removeItem(I),T("")}},children:nf.jsx("input",{type:"hidden",id:U,name:U,value:O})})},aU=DC;var eU=Y({name:"SessionStorageCard",component:aU,metadata:{author:"PieData"}});var Df=require("react");var sf=require("react/jsx-runtime"),ZC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=Df.useState(C);return Df.useEffect(()=>{T(C)},[C]),Df.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(I,O)},[I,O]),sf.jsx(A,{card:"DeviceStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{localStorage.removeItem(I),T("")}},children:sf.jsx("input",{type:"hidden",id:U,name:U,value:O})})},fI=ZC;var UI=Y({name:"DeviceStorageCard",component:fI,metadata:{author:"PieData"}});var Zf=require("react");var tf=require("react/jsx-runtime"),OC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=Zf.useState(C);return Zf.useEffect(()=>{T(C)},[C]),Zf.useEffect(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.CloudStorage;if(!$)return;$.setItem(I,O)},[I,O]),tf.jsx(A,{card:"CloudStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{let $=window.Telegram?.WebApp?.CloudStorage;if($)$.removeItem(I);T("")}},children:tf.jsx("input",{type:"hidden",id:U,name:U,value:O})})},II=OC;var CI=Y({name:"CloudStorageCard",component:II,metadata:{author:"PieData"}});var Of=require("react");var af=require("react/jsx-runtime"),TC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=Of.useState(C);return Of.useEffect(()=>{T(C)},[C]),Of.useEffect(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.SecureStorage;if(!$)return;$.setItem(I,O)},[I,O]),af.jsx(A,{card:"SecureStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{let $=window.Telegram?.WebApp?.SecureStorage;if($)$.removeItem(I);T("")}},children:af.jsx("input",{type:"hidden",id:U,name:U,value:O})})},HI=TC;var DI=Y({name:"SecureStorageCard",component:HI,metadata:{author:"PieData"}});var w=require("react");var ef=require("react/jsx-runtime"),VC=({data:f,content:U})=>{let{useLoader:I,noReturn:C,returnType:D,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:V,centrifugeChannel:O}=f,T=w.useContext(M),$=w.useContext(L)??_,[J,W]=w.useState(!1),[z,B]=w.useState(null),X=w.useRef(U),q=w.useContext(y),G=w.useCallback((P)=>{if(P===null)W(!0);else if(W(!1),!C)X.current=P;if(!C)B(P)},[C]),S=w.useCallback((P)=>{X.current=P.content,B(P.content)},[]),Q=w.useCallback((P)=>{if(P===null)W(!0);else if(W(!1),!C)for(let Tf of P)q?.emit(Tf.name,Tf.data)},[C,q]);if(w.useEffect(()=>{B(U),W(!1)},[U]),!z&&I)return T;return ef.jsx(A,{card:"AjaxGroupCard",data:f,methods:{changeContent:S},useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:V,centrifugeChannel:O,children:ef.jsx($,{uiConfig:z??X.current,setUiAjaxConfiguration:D==="events"?Q:G})})},ZI=VC;var OI=Y({name:"AjaxGroupCard",component:ZI,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var fU=require("react");var wf=require("react/jsx-runtime"),$C=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,url:D,sx:H}=f,Z=fU.useContext(j),V=fU.useContext(L)??_;return wf.jsx(A,{card:C,data:f,children:wf.jsx("div",{style:H,id:C,onClick:(T)=>{if(D)if(T.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(D))window.location.href=D;else Z?.(D)},children:wf.jsx(V,{setUiAjaxConfiguration:I,uiConfig:U})})})},TI=$C;var VI=Y({name:"BoxCard",component:TI,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var $I=require("react");var Mf=require("react/jsx-runtime"),zC=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,sx:D}=f,H=$I.useContext(L)??_;return Mf.jsx(A,{card:C,data:f,children:Mf.jsx("div",{style:D,id:C,children:U.map((Z,V)=>{return Mf.jsx(H,{uiConfig:Z,setUiAjaxConfiguration:I},`children-${V}`)})})})},zI=zC;var qI=Y({name:"OneOfCard",component:zI,metadata:{author:"Swarm.ing",description:"Different variants"}});var i=require("react"),s=require("@tanstack/react-query");var Ef=require("react");var Rf=require("react"),Lf=new Map,of=new Map;function Nf(f,U){let I=`${f}::${U}`,C=f?Lf.get(I):void 0,[D,H]=Rf.useState(C??null);return Rf.useEffect(()=>{if(!f)return;if(Lf.has(I)){H(Lf.get(I));return}let Z=of.get(I);if(!Z)Z=fetch(f+`api/support/${U}`,{method:"GET"}).then((O)=>O.json()).then((O)=>{return Lf.set(I,O),of.delete(I),O}).catch((O)=>{throw of.delete(I),O}),of.set(I,Z);let V=!1;return Z.then((O)=>{if(!V)H(O)}).catch(()=>{}),()=>{V=!0}},[f,U,I]),D}var UU=null,BI=null;function GI(){BI?.()}function IU(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!UU)UU=new Promise((f)=>{BI=()=>{f()}});return UU}var qC=({children:f})=>{let U=Ef.useContext(E),I=zf(),C=Nf(I,"socketIO"),D=(H)=>{if(typeof window<"u")window.sid=H.sid,GI(),console.log(`SocketIO initialized: ${window.sid}`)};return Ef.useEffect(()=>{if(!U)return;let H=()=>{console.log("SocketIO connected")},Z=(V)=>{console.log(`SocketIO disconnected: ${V}`),U.connect()};if(C)U.on("pieinit",D),U.on("connect",H),U.on("disconnect",Z),U.connect();return()=>{if(C)U.off("pieinit",D),U.off("connect",H),U.off("disconnect",Z),U.disconnect()}},[U,C]),f},yf=qC;var kf=require("react");var BC=({children:f})=>{let U=kf.useContext(N),I=zf(),C=Nf(I,"centrifuge");return kf.useEffect(()=>{if(!U)return;let D=()=>{console.log("Centrifuge connected")},H=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(C)U.on("connected",D),U.on("disconnected",H),U.connect();return()=>{if(C)U.disconnect()}},[U,C]),f},jf=BC;var YI=require("axios-date-transformer");var XI=require("react/jsx-runtime");function JI(f,U,I){if(!U)return I;let C=f.replace(/^\//,""),D=U[C];if(!D)return I;return XI.jsx(Af,{uiConfig:D})}var F=require("react/jsx-runtime"),GC=({location:f,fallback:U,piecache:I,onError:C,queryOptions:D,disableGlobalForm:H})=>{let Z=ff(),V=qf(),O=x(),T=i.useMemo(()=>YI.createAxiosDateTransformer({baseURL:Z||""}),[Z]),$=i.useMemo(()=>d(),[]),J=i.useMemo(()=>Z?Jf(Z):null,[Z]),W=i.useMemo(()=>Z?Gf(Z,V):null,[Z,V]),{data:z,isLoading:B,error:X}=s.useQuery({queryKey:["uiConfig",f.pathname+f.search,Z],enabled:!!Z,queryFn:async()=>{let G=new URLSearchParams(f.search);G.set("__pieroot","web");let S="/api/content"+f.pathname+"?"+G.toString();if(O)console.log("[PieRoot] Fetching UI configuration from:",S);let Q=await T.get(S,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(O)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:(G)=>Math.min(1000*2**G,30000),...D}),q=JI(f.pathname,I,U);if(!Z)return q??null;if(O)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",V),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!I);if(X){if(O)console.error("[PieRoot] Error fetching UI configuration:",X),console.error("[PieRoot] Error details:",{message:X.message,status:X.response?.status,data:X.response?.data});return C?.(X),q}if(B||!z){if(O)console.log("[PieRoot] Loading state:",{isLoading:B,hasUiConfiguration:!!z});return q}if(O)console.log("[PieRoot] UI configuration loaded successfully:",z),console.log("[PieRoot] Rendering UI with configuration");return F.jsx(y.Provider,{value:$,children:F.jsx(E.Provider,{value:J,children:F.jsx(N.Provider,{value:W,children:F.jsx(M.Provider,{value:U??F.jsx(F.Fragment,{}),children:F.jsx(yf,{children:F.jsx(jf,{children:H?F.jsx(_,{uiConfig:z}):F.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:F.jsx(_,{uiConfig:z})})})})})})})})},JC=(f)=>{let U=i.useMemo(()=>new s.QueryClient,[]),I=f.queryClient??U;return F.jsx(j.Provider,{value:f.onNavigate,children:F.jsx(b.Provider,{value:f.config,children:F.jsx(m.Provider,{value:f.onError,children:F.jsx(s.QueryClientProvider,{client:I,children:F.jsx(GC,{...f})})})})})},xf=JC;var t=require("react"),mf=require("@tanstack/react-query");var K=require("react/jsx-runtime"),XC=({location:f,fallback:U,children:I,disableGlobalForm:C})=>{let D=ff(),H=qf(),Z=x(),V=t.useMemo(()=>d(),[]),O=t.useMemo(()=>D?Jf(D):null,[D]),T=t.useMemo(()=>D?Gf(D,H):null,[D,H]);if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",H),console.log("[PieRoot] Fallback provided:",!!U);return K.jsx(y.Provider,{value:V,children:K.jsx(E.Provider,{value:O,children:K.jsx(N.Provider,{value:T,children:K.jsx(M.Provider,{value:U??K.jsx(K.Fragment,{}),children:K.jsx(yf,{children:K.jsx(jf,{children:C?I:K.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:I})})})})})})})},YC=(f)=>{let[U]=t.useState(()=>new mf.QueryClient),I=f.queryClient??U;return K.jsx(j.Provider,{value:f.onNavigate,children:K.jsx(b.Provider,{value:f.config,children:K.jsx(m.Provider,{value:f.onError,children:K.jsx(mf.QueryClientProvider,{client:I,children:K.jsx(XC,{...f})})})})})},WI=YC;var QI=require("react");var CU=require("react/jsx-runtime"),WC=CU.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),QC=({apiServer:f,pathname:U="/",search:I="",centrifugeServer:C,fallback:D,enableRenderingLog:H=!1})=>{let Z=f??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",V=QI.useMemo(()=>({apiServer:Z,centrifugeServer:C,enableRenderingLog:H,pageProcessor:"web"}),[Z,C,H]);return CU.jsx(xf,{location:{pathname:U,search:I},config:V,fallback:D??WC,onNavigate:(T)=>{if(typeof window<"u")window.history.pushState(null,"",T)}})},AI=QC;var PI=require("react"),HU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let I=document.getElementsByName(f);if(!I.length){if(U)console.warn(`No input found with name ${f}`);return[]}let C=I[0];if(C instanceof HTMLInputElement){if(C.type==="file"&&C.files)return Array.from(C.files);return[C.value]}if(C instanceof HTMLTextAreaElement)return[C.value];return[]},AC=(f,U={},I=[],C,D)=>{let H=D?.renderingLogEnabled??!1,Z=D?.timeout,V=D?.retryPolicy,O=V?.maxRetries??0,T=V?.baseDelay??1000,$=V?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",C,U,I);return async(J={})=>{if(typeof window>"u"||typeof document>"u"){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let W=D?.apiServer;if(!W){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!C||!f){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(I.includes("sid"))await IU();let z=new FormData;for(let[q,G]of Object.entries({...U,...J}))z.append(q,G);for(let q of I)for(let G of HU(q,H))z.append(q,G);let B=W+"api/ajax_content"+C;f(null);let X;for(let q=0;q<=O;q++){if(q>0){let Q=T*2**(q-1);if(H)console.log(`AJAX retry ${q}/${O} after ${Q}ms`);await new Promise((P)=>setTimeout(P,Q))}let G=Z!=null?new AbortController:null,S=G&&setTimeout(()=>G.abort(),Z);try{let Q=await fetch(B,{method:"POST",body:z,signal:G?.signal});if(S)clearTimeout(S);if(!Q.ok&&$.includes(Q.status)&&q<O){X=Error(`HTTP ${Q.status}`);continue}let Tf=(Q.headers.get("content-type")||"").includes("application/json");if(!!Q.body?.getReader&&!Tf){let Vf=Q.body.getReader(),LI=new TextDecoder,p="";while(!0){let{done:uf,value:oI}=await Vf.read();if(uf)break;p+=LI.decode(oI,{stream:!0});let DU=p.split(`
3
+ `);p=DU.pop()??"";for(let RI of DU){let bf=RI.trim();if(!bf)continue;try{let NI=JSON.parse(bf);f([NI])}catch{if(H)console.warn("Failed to parse streamed line:",bf)}}}if(p.trim())try{let uf=JSON.parse(p);f([uf])}catch{if(H)console.warn("Failed to parse final streamed line:",p)}return{}}else{let Vf=await Q.json();return f(Vf),Vf}}catch(Q){if(S)clearTimeout(S);if(X=Q,q<O)continue;if(H)console.error("AJAX request failed:",Q);return f(null),Q}}if(H)console.error("AJAX request failed after retries:",X);return f(null),X}},SI=(f,U={},I=[],C,D)=>{let{apiServer:H,enableRenderingLog:Z}=e(),V=JSON.stringify(U),O=JSON.stringify(I),T=JSON.stringify(D);return PI.useMemo(()=>AC(f,U,I,C,{apiServer:H,renderingLogEnabled:Z,timeout:D?.timeout,retryPolicy:D?.retryPolicy}),[f,V,O,C,H,Z,T])};var FI=require("clsx"),KI=require("tailwind-merge");function _I(...f){return KI.twMerge(FI.clsx(f))}var wI=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var MI=(f,U)=>`${f}${Bf}${U}`;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * MAX (VK Messenger) mini-app integration entry.
3
+ *
4
+ * `PieMaxRoot` and the MAX `WebApp` hooks are intentionally split out of the
5
+ * main `@swarm.ing/pieui` barrel so that apps which do not target MAX never
6
+ * reference this code from the main entry point. Import from
7
+ * `@swarm.ing/pieui/max` when building a MAX mini-app.
8
+ */
9
+ export { default as PieMaxRoot } from '../components/PieMaxRoot';
10
+ export { useMaxWebApp, useMaxInitData, useMaxBackButton, useMaxHapticFeedback, } from '../util/useMaxWebApp';
11
+ export type { MaxWebApp, MaxWebAppData, MaxWebAppUser, MaxWebAppChat, MaxWebAppStartParam, } from '../types';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/max/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EACH,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,oBAAoB,GACvB,MAAM,sBAAsB,CAAA;AAE7B,YAAY,EACR,SAAS,EACT,aAAa,EACb,aAAa,EACb,aAAa,EACb,mBAAmB,GACtB,MAAM,UAAU,CAAA"}
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{useMemo as K}from"react";import{QueryClient as iU,QueryClientProvider as aU,useQuery as rU}from"@tanstack/react-query";import JU from"mitt";import{createContext as ZU,useCallback as HL,useContext as JL}from"react";var A=null;function m(){if(!A)A=JU();return A}var NU=ZU(null);var d=NU;import{io as TU}from"socket.io-client";import{createContext as VU}from"react";var g=new Map,u=(U)=>{let L=g.get(U);if(L)return L;let $=TU(U,{autoConnect:!1,transports:["websocket"]});return g.set(U,$),$},YU=VU(null),X=YU;import{createContext as FU}from"react";import{Centrifuge as l}from"centrifuge";var c=new Map,h=(U,L)=>{if(!L)return null;let $=`${U}::${L}`,H=c.get($);if(H)return H;async function D(){let z=await fetch(U+"api/centrifuge/gen_token");if(!z.ok){if(z.status===403)throw new l.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let I=new l(L,{getToken:D});return c.set($,I),I},GU=FU(null),B=GU;import{useContext as XU,useEffect as BU}from"react";import{useEffect as OU,useState as QU}from"react";var E=new Map,R=new Map;function W(U,L){let $=`${U}::${L}`,H=U?E.get($):void 0,[D,I]=QU(H??null);return OU(()=>{if(!U)return;if(E.has($)){I(E.get($));return}let z=R.get($);if(!z)z=fetch(U+`api/support/${L}`,{method:"GET"}).then((J)=>J.json()).then((J)=>{return E.set($,J),R.delete($),J}).catch((J)=>{throw R.delete($),J}),R.set($,z);let N=!1;return z.then((J)=>{if(!N)I(J)}).catch(()=>{}),()=>{N=!0}},[U,L,$]),D}import{createContext as qU,useContext as KU}from"react";var P=qU(null),S=()=>{let U=KU(P);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},k=()=>{let{apiServer:U}=S();return U},j=k,o=()=>{let{centrifugeServer:U}=S();return U};var V=()=>{let{enableRenderingLog:U}=S();return U};var _U=null;function p(){_U?.()}var EU=({children:U})=>{let L=XU(X),$=j(),H=W($,"socketIO"),D=(I)=>{if(typeof window<"u")window.sid=I.sid,p(),console.log(`SocketIO initialized: ${window.sid}`)};return BU(()=>{if(!L)return;let I=()=>{console.log("SocketIO connected")},z=(N)=>{console.log(`SocketIO disconnected: ${N}`),L.connect()};if(H)L.on("pieinit",D),L.on("connect",I),L.on("disconnect",z),L.connect();return()=>{if(H)L.off("pieinit",D),L.off("connect",I),L.off("disconnect",z),L.disconnect()}},[L,H]),U},n=EU;import{useContext as RU,useEffect as WU}from"react";var jU=({children:U})=>{let L=RU(B),$=j(),H=W($,"centrifuge");return WU(()=>{if(!L)return;let D=()=>{console.log("Centrifuge connected")},I=(z)=>{console.log("Centrifuge disconnected:",z)};if(H)L.on("connected",D),L.on("disconnected",I),L.connect();return()=>{if(H)L.disconnect()}},[L,H]),U},s=jU;import{createContext as MU}from"react";import{jsx as PU,Fragment as AU}from"react/jsx-runtime";var fU=MU(PU(AU,{})),Y=fU;import{createContext as SU}from"react";var kU=SU(void 0),F=kU;var yU=new Map;var M=(U)=>{return yU.get(U)};import{useContext as i,memo as mU}from"react";import{Component as wU,Suspense as CU}from"react";import{jsx as vU}from"react/jsx-runtime";var bU=2,xU=400;class G extends wU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<bU){let L=xU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return vU(CU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as y}from"react/jsx-runtime";function dU({uiConfig:U,setUiAjaxConfiguration:L}){let $=i(Y),H=i(F),D=V();if(D)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let I=M(U.card);if(!I?.component){if(D)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(D)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let z=I.component,N=y(z,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(I.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",I.name);return y(G,{name:I.name,fallback:I.fallback?y(I.fallback,{}):$,onError:H,children:N})}if(D)console.log("[UI] Rendering component directly:",I.name);return N}var w=mU(dU);import{createAxiosDateTransformer as tU}from"axios-date-transformer";import{useEffect as a,useState as gU}from"react";var O=()=>{let[U,L]=gU(null);return a(()=>{if(typeof window>"u")return;let $=window.WebApp;if(!$)return;$.ready(),L($)},[]),U},uU=()=>{let U=O();return[U?.initDataUnsafe,U?.initData]},lU=(U)=>{let L=O();return a(()=>{if(!L||!U)return;return L.BackButton.onClick(U),L.BackButton.show(),()=>{L.BackButton.offClick(U),L.BackButton.hide()}},[L,U]),L?.BackButton??null},cU=()=>{return O()?.HapticFeedback??null};import{createContext as hU}from"react";var oU=hU(void 0),r=oU;import{useContext as e}from"react";import{createContext as pU}from"react";var nU=pU(null),t=nU;import{jsx as f}from"react/jsx-runtime";function UU({uiConfig:U,setUiAjaxConfiguration:L}){let $=e(Y),H=e(F),D=V();if(D)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let I=M(U.card);if(!I?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(D)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(D)console.log("[UILoading] Rendering fallback for:",I.name);let J=I.fallback;return f(J,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",I.name);let z=I.component,N=f(t.Provider,{value:UU,children:f(z,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(I.isLazy)return f(G,{name:I.name,fallback:$,onError:H,children:N});return N}var LU=UU;import{jsx as sU}from"react/jsx-runtime";function IU(U,L,$){if(!L)return $;let H=U.replace(/^\//,""),D=L[H];if(!D)return $;return sU(LU,{uiConfig:D})}import{jsx as Z,Fragment as LL}from"react/jsx-runtime";var eU=({location:U,fallback:L,piecache:$,onError:H,queryOptions:D,disableGlobalForm:I})=>{let z=k(),N=o(),J=V(),$U=K(()=>tU({baseURL:z}),[z]),zU=K(()=>m(),[]),DU=K(()=>z?u(z):null,[z]),HU=K(()=>z?h(z,N):null,[z,N]),_=O(),{data:Q,isLoading:C,error:T}=rU({queryKey:["uiConfig",U.pathname+U.search,_?.initData],queryFn:async()=>{let q=new URLSearchParams(U.search);if(q.set("__pieroot","max"),_?.initData)q.set("initData",_.initData);let x="/api/content"+U.pathname+"?"+q.toString();if(J)console.log("[PieRoot] Fetching UI configuration from:",x);let v=await $U.get(x,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(J)console.log("[PieRoot] Received UI configuration:",v.data);return v.data},enabled:!!_?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...D}),b=IU(U.pathname,$,L);if(!z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(T&&J)return console.error("[PieRoot] Error fetching UI configuration:",T),console.error("[PieRoot] Error details:",{message:T.message,status:T.response?.status,data:T.response?.data}),H?.(T),b;if(C||!Q){if(J)console.log("[PieRoot] Loading state:",{isLoading:C,hasUiConfiguration:!!Q});return b}if(J)console.log("[PieRoot] UI configuration loaded successfully:",Q),console.log("[PieRoot] Rendering UI with configuration");return Z(d.Provider,{value:zU,children:Z(X.Provider,{value:DU,children:Z(B.Provider,{value:HU,children:Z(Y.Provider,{value:L??Z(LL,{}),children:Z(n,{children:Z(s,{children:I?Z(w,{uiConfig:Q}):Z("form",{id:"piedata_global_form",action:z+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:Z(w,{uiConfig:Q})})})})})})})})},UL=(U)=>{let L=K(()=>new iU,[]),$=U.queryClient??L;return Z(r.Provider,{value:U.onNavigate,children:Z(P.Provider,{value:U.config,children:Z(F.Provider,{value:U.onError,children:Z(aU,{client:$,children:Z(eU,{...U})})})})})},IL=UL;export{O as useMaxWebApp,uU as useMaxInitData,cU as useMaxHapticFeedback,lU as useMaxBackButton,IL as PieMaxRoot};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ var CU=Object.create;var{getPrototypeOf:bU,defineProperty:X,getOwnPropertyNames:t,getOwnPropertyDescriptor:xU}=Object,e=Object.prototype.hasOwnProperty;var vU=(U,L,I)=>{I=U!=null?CU(bU(U)):{};let z=L||!U||!U.__esModule?X(I,"default",{value:U,enumerable:!0}):I;for(let D of t(U))if(!e.call(z,D))X(z,D,{get:()=>U[D],enumerable:!0});return z},r=new WeakMap,mU=(U)=>{var L=r.get(U),I;if(L)return L;if(L=X({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")t(U).map((z)=>!e.call(L,z)&&X(L,z,{get:()=>U[z],enumerable:!(I=xU(U,z))||I.enumerable}));return r.set(U,L),L};var dU=(U,L)=>{for(var I in L)X(U,I,{get:L[I],enumerable:!0,configurable:!0,set:(z)=>L[I]=()=>z})};var IL={};dU(IL,{useMaxWebApp:()=>T,useMaxInitData:()=>qU,useMaxHapticFeedback:()=>_U,useMaxBackButton:()=>KU,PieMaxRoot:()=>PU});module.exports=mU(IL);var Q=require("react"),q=require("@tanstack/react-query");var UU=vU(require("mitt")),j=require("react"),g=null;function LU(){if(!g)g=UU.default();return g}var gU=j.createContext(null);var IU=gU;var zU=require("socket.io-client"),DU=require("react"),$U=new Map,HU=(U)=>{let L=$U.get(U);if(L)return L;let I=zU.io(U,{autoConnect:!1,transports:["websocket"]});return $U.set(U,I),I},uU=DU.createContext(null),M=uU;var ZU=require("react"),u=require("centrifuge"),JU=new Map,NU=(U,L)=>{if(!L)return null;let I=`${U}::${L}`,z=JU.get(I);if(z)return z;async function D(){let H=await fetch(U+"api/centrifuge/gen_token");if(!H.ok){if(H.status===403)throw new u.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${H.status}`)}return(await H.json()).token}let $=new u.Centrifuge(L,{getToken:D});return JU.set(I,$),$},lU=ZU.createContext(null),f=lU;var C=require("react");var S=require("react"),A=new Map,P=new Map;function k(U,L){let I=`${U}::${L}`,z=U?A.get(I):void 0,[D,$]=S.useState(z??null);return S.useEffect(()=>{if(!U)return;if(A.has(I)){$(A.get(I));return}let H=P.get(I);if(!H)H=fetch(U+`api/support/${L}`,{method:"GET"}).then((Z)=>Z.json()).then((Z)=>{return A.set(I,Z),P.delete(I),Z}).catch((Z)=>{throw P.delete(I),Z}),P.set(I,H);let N=!1;return H.then((Z)=>{if(!N)$(Z)}).catch(()=>{}),()=>{N=!0}},[U,L,I]),D}var y=require("react"),l=y.createContext(null),c=()=>{let U=y.useContext(l);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},h=()=>{let{apiServer:U}=c();return U},w=h,TU=()=>{let{centrifugeServer:U}=c();return U};var Y=()=>{let{enableRenderingLog:U}=c();return U};var cU=null;function VU(){cU?.()}var hU=({children:U})=>{let L=C.useContext(M),I=w(),z=k(I,"socketIO"),D=($)=>{if(typeof window<"u")window.sid=$.sid,VU(),console.log(`SocketIO initialized: ${window.sid}`)};return C.useEffect(()=>{if(!L)return;let $=()=>{console.log("SocketIO connected")},H=(N)=>{console.log(`SocketIO disconnected: ${N}`),L.connect()};if(z)L.on("pieinit",D),L.on("connect",$),L.on("disconnect",H),L.connect();return()=>{if(z)L.off("pieinit",D),L.off("connect",$),L.off("disconnect",H),L.disconnect()}},[L,z]),U},YU=hU;var b=require("react");var oU=({children:U})=>{let L=b.useContext(f),I=w(),z=k(I,"centrifuge");return b.useEffect(()=>{if(!L)return;let D=()=>{console.log("Centrifuge connected")},$=(H)=>{console.log("Centrifuge disconnected:",H)};if(z)L.on("connected",D),L.on("disconnected",$),L.connect();return()=>{if(z)L.disconnect()}},[L,z]),U},FU=oU;var GU=require("react"),x=require("react/jsx-runtime"),pU=GU.createContext(x.jsx(x.Fragment,{})),F=pU;var OU=require("react"),nU=OU.createContext(void 0),G=nU;var sU=new Map;var v=(U)=>{return sU.get(U)};var B=require("react");var m=require("react"),QU=require("react/jsx-runtime"),iU=2,aU=400;class O extends m.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<iU){let L=aU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return QU.jsx(m.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var d=require("react/jsx-runtime");function rU({uiConfig:U,setUiAjaxConfiguration:L}){let I=B.useContext(F),z=B.useContext(G),D=Y();if(D)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let $=v(U.card);if(!$?.component){if(D)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return I}if(D)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let H=$.component,N=d.jsx(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if($.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",$.name);return d.jsx(O,{name:$.name,fallback:$.fallback?d.jsx($.fallback,{}):I,onError:z,children:N})}if(D)console.log("[UI] Rendering component directly:",$.name);return N}var o=B.memo(rU);var AU=require("axios-date-transformer");var E=require("react"),T=()=>{let[U,L]=E.useState(null);return E.useEffect(()=>{if(typeof window>"u")return;let I=window.WebApp;if(!I)return;I.ready(),L(I)},[]),U},qU=()=>{let U=T();return[U?.initDataUnsafe,U?.initData]},KU=(U)=>{let L=T();return E.useEffect(()=>{if(!L||!U)return;return L.BackButton.onClick(U),L.BackButton.show(),()=>{L.BackButton.offClick(U),L.BackButton.hide()}},[L,U]),L?.BackButton??null},_U=()=>{return T()?.HapticFeedback??null};var XU=require("react"),tU=XU.createContext(void 0),BU=tU;var p=require("react");var EU=require("react"),eU=EU.createContext(null),RU=eU;var R=require("react/jsx-runtime");function WU({uiConfig:U,setUiAjaxConfiguration:L}){let I=p.useContext(F),z=p.useContext(G),D=Y();if(D)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let $=v(U.card);if(!$?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return I}if(D)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(D)console.log("[UILoading] Rendering fallback for:",$.name);let Z=$.fallback;return R.jsx(Z,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",$.name);let H=$.component,N=R.jsx(RU.Provider,{value:WU,children:R.jsx(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if($.isLazy)return R.jsx(O,{name:$.name,fallback:I,onError:z,children:N});return N}var jU=WU;var fU=require("react/jsx-runtime");function MU(U,L,I){if(!L)return I;let z=U.replace(/^\//,""),D=L[z];if(!D)return I;return fU.jsx(jU,{uiConfig:D})}var J=require("react/jsx-runtime"),UL=({location:U,fallback:L,piecache:I,onError:z,queryOptions:D,disableGlobalForm:$})=>{let H=h(),N=TU(),Z=Y(),SU=Q.useMemo(()=>AU.createAxiosDateTransformer({baseURL:H}),[H]),kU=Q.useMemo(()=>LU(),[]),yU=Q.useMemo(()=>H?HU(H):null,[H]),wU=Q.useMemo(()=>H?NU(H,N):null,[H,N]),W=T(),{data:K,isLoading:n,error:V}=q.useQuery({queryKey:["uiConfig",U.pathname+U.search,W?.initData],queryFn:async()=>{let _=new URLSearchParams(U.search);if(_.set("__pieroot","max"),W?.initData)_.set("initData",W.initData);let i="/api/content"+U.pathname+"?"+_.toString();if(Z)console.log("[PieRoot] Fetching UI configuration from:",i);let a=await SU.get(i,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(Z)console.log("[PieRoot] Received UI configuration:",a.data);return a.data},enabled:!!W?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(_)=>Math.min(1000*2**_,30000),...D}),s=MU(U.pathname,I,L);if(!H)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&Z)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}),z?.(V),s;if(n||!K){if(Z)console.log("[PieRoot] Loading state:",{isLoading:n,hasUiConfiguration:!!K});return s}if(Z)console.log("[PieRoot] UI configuration loaded successfully:",K),console.log("[PieRoot] Rendering UI with configuration");return J.jsx(IU.Provider,{value:kU,children:J.jsx(M.Provider,{value:yU,children:J.jsx(f.Provider,{value:wU,children:J.jsx(F.Provider,{value:L??J.jsx(J.Fragment,{}),children:J.jsx(YU,{children:J.jsx(FU,{children:$?J.jsx(o,{uiConfig:K}):J.jsx("form",{id:"piedata_global_form",action:H+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:J.jsx(o,{uiConfig:K})})})})})})})})},LL=(U)=>{let L=Q.useMemo(()=>new q.QueryClient,[]),I=U.queryClient??L;return J.jsx(BU.Provider,{value:U.onNavigate,children:J.jsx(l.Provider,{value:U.config,children:J.jsx(G.Provider,{value:U.onError,children:J.jsx(q.QueryClientProvider,{client:I,children:J.jsx(UL,{...U})})})})})},PU=LL;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Telegram Mini Apps integration entry.
3
+ *
4
+ * `PieTelegramRoot` and the Telegram `WebApp` hooks are intentionally split out
5
+ * of the main `@swarm.ing/pieui` barrel so that apps which do not target
6
+ * Telegram never reference this code from the main entry point. Import from
7
+ * `@swarm.ing/pieui/telegram` when building a Telegram Mini App.
8
+ */
9
+ export { default as PieTelegramRoot } from '../components/PieTelegramRoot';
10
+ export { useWebApp, useInitData } from '../util/useWebApp';
11
+ export type { WebApp, Telegram, InitData, InitDataUnsafe, WebAppUser, WebAppInitData, } from '../types';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/telegram/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE1D,YAAY,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,UAAU,EACV,cAAc,GACjB,MAAM,UAAU,CAAA"}
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{useMemo as Q}from"react";import{QueryClient as sU,QueryClientProvider as iU,useQuery as aU}from"@tanstack/react-query";import VU from"mitt";import{createContext as ZU,useCallback as HL,useContext as JL}from"react";var k=null;function m(){if(!k)k=VU();return k}var BU=ZU(null);var d=BU;import{io as FU}from"socket.io-client";import{createContext as NU}from"react";var u=new Map,g=(U)=>{let L=u.get(U);if(L)return L;let $=FU(U,{autoConnect:!1,transports:["websocket"]});return u.set(U,$),$},XU=NU(null),K=XU;import{createContext as YU}from"react";import{Centrifuge as c}from"centrifuge";var l=new Map,h=(U,L)=>{if(!L)return null;let $=`${U}::${L}`,J=l.get($);if(J)return J;async function z(){let H=await fetch(U+"api/centrifuge/gen_token");if(!H.ok){if(H.status===403)throw new c.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${H.status}`)}return(await H.json()).token}let I=new c(L,{getToken:z});return l.set($,I),I},DU=YU(null),_=DU;import{useContext as _U,useEffect as WU}from"react";import{useEffect as GU,useState as OU}from"react";var W=new Map,R=new Map;function T(U,L){let $=`${U}::${L}`,J=U?W.get($):void 0,[z,I]=OU(J??null);return GU(()=>{if(!U)return;if(W.has($)){I(W.get($));return}let H=R.get($);if(!H)H=fetch(U+`api/support/${L}`,{method:"GET"}).then((V)=>V.json()).then((V)=>{return W.set($,V),R.delete($),V}).catch((V)=>{throw R.delete($),V}),R.set($,H);let B=!1;return H.then((V)=>{if(!B)I(V)}).catch(()=>{}),()=>{B=!0}},[U,L,$]),z}import{createContext as QU,useContext as qU}from"react";var P=QU(null),E=()=>{let U=qU(P);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},S=()=>{let{apiServer:U}=E();return U},M=S,o=()=>{let{centrifugeServer:U}=E();return U};var N=()=>{let{enableRenderingLog:U}=E();return U};var p=()=>{let{pageProcessor:U}=E();return U};var KU=null;function n(){KU?.()}var RU=({children:U})=>{let L=_U(K),$=M(),J=T($,"socketIO"),z=(I)=>{if(typeof window<"u")window.sid=I.sid,n(),console.log(`SocketIO initialized: ${window.sid}`)};return WU(()=>{if(!L)return;let I=()=>{console.log("SocketIO connected")},H=(B)=>{console.log(`SocketIO disconnected: ${B}`),L.connect()};if(J)L.on("pieinit",z),L.on("connect",I),L.on("disconnect",H),L.connect();return()=>{if(J)L.off("pieinit",z),L.off("connect",I),L.off("disconnect",H),L.disconnect()}},[L,J]),U},s=RU;import{useContext as TU,useEffect as EU}from"react";var MU=({children:U})=>{let L=TU(_),$=M(),J=T($,"centrifuge");return EU(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},I=(H)=>{console.log("Centrifuge disconnected:",H)};if(J)L.on("connected",z),L.on("disconnected",I),L.connect();return()=>{if(J)L.disconnect()}},[L,J]),U},i=MU;import{createContext as AU}from"react";import{jsx as kU,Fragment as fU}from"react/jsx-runtime";var jU=AU(kU(fU,{})),X=jU;import{createContext as PU}from"react";var SU=PU(void 0),Y=SU;var wU=new Map;var A=(U)=>{return wU.get(U)};import{useContext as a,memo as mU}from"react";import{Component as bU,Suspense as yU}from"react";import{jsx as vU}from"react/jsx-runtime";var xU=2,CU=400;class D extends bU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<xU){let L=CU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return vU(yU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as w}from"react/jsx-runtime";function dU({uiConfig:U,setUiAjaxConfiguration:L}){let $=a(X),J=a(Y),z=N();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let I=A(U.card);if(!I?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let H=I.component,B=w(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(I.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return w(D,{name:I.name,fallback:I.fallback?w(I.fallback,{}):$,onError:J,children:B})}if(z)console.log("[UI] Rendering component directly:",I.name);return B}var b=mU(dU);import{createAxiosDateTransformer as tU}from"axios-date-transformer";import{useEffect as uU,useState as gU}from"react";var j=({onError:U}={})=>{let[L,$]=gU(null),J=p();return uU(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp;if(!z)return;try{z.ready?.()}catch(I){U?.()}if(J==="telegram_expanded"&&(z.platform==="ios"||z.platform==="android"))z.expand();$(z)},[]),L},cU=()=>{let U=j();return[U?.initDataUnsafe,U?.initData]};import{createContext as lU}from"react";var hU=lU(void 0),t=hU;import{useContext as e}from"react";import{createContext as oU}from"react";var pU=oU(null),r=pU;import{jsx as f}from"react/jsx-runtime";function UU({uiConfig:U,setUiAjaxConfiguration:L}){let $=e(X),J=e(Y),z=N();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let I=A(U.card);if(!I?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(z)console.log("[UILoading] Rendering fallback for:",I.name);let V=I.fallback;return f(V,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let H=I.component,B=f(r.Provider,{value:UU,children:f(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(I.isLazy)return f(D,{name:I.name,fallback:$,onError:J,children:B});return B}var LU=UU;import{jsx as nU}from"react/jsx-runtime";function IU(U,L,$){if(!L)return $;let J=U.replace(/^\//,""),z=L[J];if(!z)return $;return nU(LU,{uiConfig:z})}import{jsx as Z,Fragment as UL}from"react/jsx-runtime";var rU=({location:U,fallback:L,piecache:$,onError:J,queryOptions:z,disableGlobalForm:I})=>{let H=S(),B=o(),V=N(),$U=Q(()=>tU({baseURL:H}),[H]),zU=Q(()=>m(),[]),HU=Q(()=>H?g(H):null,[H]),JU=Q(()=>H?h(H,B):null,[H,B]),q=j({onError:J}),{data:G,isLoading:y,error:F}=aU({queryKey:["uiConfig",U.pathname+U.search,q?.initData],enabled:!!q?.initData,queryFn:async()=>{let O=new URLSearchParams(U.search);if(O.set("__pieroot","telegram"),q?.initData)O.set("initData",q.initData);let C="/api/content"+U.pathname+"?"+O.toString();if(V)console.log("[PieRoot] Fetching UI configuration from:",C);let v=await $U.get(C,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(V)console.log("[PieRoot] Received UI configuration:",v.data);return v.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(O)=>Math.min(1000*2**O,30000),...z}),x=IU(U.pathname,$,L);if(!H)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(F&&V)return console.error("[PieRoot] Error fetching UI configuration:",F),console.error("[PieRoot] Error details:",{message:F.message,status:F.response?.status,data:F.response?.data}),J?.(F),x;if(y||!G){if(V)console.log("[PieRoot] Loading state:",{isLoading:y,hasUiConfiguration:!!G});return x}if(V)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return Z(d.Provider,{value:zU,children:Z(K.Provider,{value:HU,children:Z(_.Provider,{value:JU,children:Z(X.Provider,{value:L??Z(UL,{}),children:Z(s,{children:Z(i,{children:I?Z(b,{uiConfig:G}):Z("form",{id:"piedata_global_form",action:H+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:Z(b,{uiConfig:G})})})})})})})})},eU=(U)=>{let L=Q(()=>new sU,[]),$=U.queryClient??L;return Z(t.Provider,{value:U.onNavigate,children:Z(P.Provider,{value:U.config,children:Z(Y.Provider,{value:U.onError,children:Z(iU,{client:$,children:Z(rU,{...U})})})})})},LL=eU;export{j as useWebApp,cU as useInitData,LL as PieTelegramRoot};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ var bU=Object.create;var{getPrototypeOf:yU,defineProperty:K,getOwnPropertyNames:r,getOwnPropertyDescriptor:xU}=Object,e=Object.prototype.hasOwnProperty;var CU=(U,L,I)=>{I=U!=null?bU(yU(U)):{};let H=L||!U||!U.__esModule?K(I,"default",{value:U,enumerable:!0}):I;for(let z of r(U))if(!e.call(H,z))K(H,z,{get:()=>U[z],enumerable:!0});return H},t=new WeakMap,vU=(U)=>{var L=t.get(U),I;if(L)return L;if(L=K({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")r(U).map((H)=>!e.call(L,H)&&K(L,H,{get:()=>U[H],enumerable:!(I=xU(U,H))||I.enumerable}));return t.set(U,L),L};var mU=(U,L)=>{for(var I in L)K(U,I,{get:L[I],enumerable:!0,configurable:!0,set:(H)=>L[I]=()=>H})};var LL={};mU(LL,{useWebApp:()=>W,useInitData:()=>qU,PieTelegramRoot:()=>fU});module.exports=vU(LL);var G=require("react"),O=require("@tanstack/react-query");var UU=CU(require("mitt")),E=require("react"),g=null;function LU(){if(!g)g=UU.default();return g}var dU=E.createContext(null);var IU=dU;var zU=require("socket.io-client"),HU=require("react"),$U=new Map,JU=(U)=>{let L=$U.get(U);if(L)return L;let I=zU.io(U,{autoConnect:!1,transports:["websocket"]});return $U.set(U,I),I},uU=HU.createContext(null),M=uU;var ZU=require("react"),c=require("centrifuge"),VU=new Map,BU=(U,L)=>{if(!L)return null;let I=`${U}::${L}`,H=VU.get(I);if(H)return H;async function z(){let J=await fetch(U+"api/centrifuge/gen_token");if(!J.ok){if(J.status===403)throw new c.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let $=new c.Centrifuge(L,{getToken:z});return VU.set(I,$),$},gU=ZU.createContext(null),A=gU;var y=require("react");var k=require("react"),j=new Map,f=new Map;function P(U,L){let I=`${U}::${L}`,H=U?j.get(I):void 0,[z,$]=k.useState(H??null);return k.useEffect(()=>{if(!U)return;if(j.has(I)){$(j.get(I));return}let J=f.get(I);if(!J)J=fetch(U+`api/support/${L}`,{method:"GET"}).then((Z)=>Z.json()).then((Z)=>{return j.set(I,Z),f.delete(I),Z}).catch((Z)=>{throw f.delete(I),Z}),f.set(I,J);let B=!1;return J.then((Z)=>{if(!B)$(Z)}).catch(()=>{}),()=>{B=!0}},[U,L,I]),z}var S=require("react"),l=S.createContext(null),w=()=>{let U=S.useContext(l);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},h=()=>{let{apiServer:U}=w();return U},b=h,FU=()=>{let{centrifugeServer:U}=w();return U};var N=()=>{let{enableRenderingLog:U}=w();return U};var NU=()=>{let{pageProcessor:U}=w();return U};var cU=null;function XU(){cU?.()}var lU=({children:U})=>{let L=y.useContext(M),I=b(),H=P(I,"socketIO"),z=($)=>{if(typeof window<"u")window.sid=$.sid,XU(),console.log(`SocketIO initialized: ${window.sid}`)};return y.useEffect(()=>{if(!L)return;let $=()=>{console.log("SocketIO connected")},J=(B)=>{console.log(`SocketIO disconnected: ${B}`),L.connect()};if(H)L.on("pieinit",z),L.on("connect",$),L.on("disconnect",J),L.connect();return()=>{if(H)L.off("pieinit",z),L.off("connect",$),L.off("disconnect",J),L.disconnect()}},[L,H]),U},YU=lU;var x=require("react");var hU=({children:U})=>{let L=x.useContext(A),I=b(),H=P(I,"centrifuge");return x.useEffect(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},$=(J)=>{console.log("Centrifuge disconnected:",J)};if(H)L.on("connected",z),L.on("disconnected",$),L.connect();return()=>{if(H)L.disconnect()}},[L,H]),U},DU=hU;var GU=require("react"),C=require("react/jsx-runtime"),oU=GU.createContext(C.jsx(C.Fragment,{})),X=oU;var OU=require("react"),pU=OU.createContext(void 0),Y=pU;var nU=new Map;var v=(U)=>{return nU.get(U)};var _=require("react");var m=require("react"),QU=require("react/jsx-runtime"),sU=2,iU=400;class D extends m.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<sU){let L=iU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return QU.jsx(m.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var d=require("react/jsx-runtime");function aU({uiConfig:U,setUiAjaxConfiguration:L}){let I=_.useContext(X),H=_.useContext(Y),z=N();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let $=v(U.card);if(!$?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return I}if(z)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let J=$.component,B=d.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if($.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",$.name);return d.jsx(D,{name:$.name,fallback:$.fallback?d.jsx($.fallback,{}):I,onError:H,children:B})}if(z)console.log("[UI] Rendering component directly:",$.name);return B}var o=_.memo(aU);var jU=require("axios-date-transformer");var u=require("react");var W=({onError:U}={})=>{let[L,I]=u.useState(null),H=NU();return u.useEffect(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp;if(!z)return;try{z.ready?.()}catch($){U?.()}if(H==="telegram_expanded"&&(z.platform==="ios"||z.platform==="android"))z.expand();I(z)},[]),L},qU=()=>{let U=W();return[U?.initDataUnsafe,U?.initData]};var KU=require("react"),tU=KU.createContext(void 0),_U=tU;var p=require("react");var WU=require("react"),rU=WU.createContext(null),RU=rU;var R=require("react/jsx-runtime");function TU({uiConfig:U,setUiAjaxConfiguration:L}){let I=p.useContext(X),H=p.useContext(Y),z=N();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let $=v(U.card);if(!$?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return I}if(z)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(z)console.log("[UILoading] Rendering fallback for:",$.name);let Z=$.fallback;return R.jsx(Z,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",$.name);let J=$.component,B=R.jsx(RU.Provider,{value:TU,children:R.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if($.isLazy)return R.jsx(D,{name:$.name,fallback:I,onError:H,children:B});return B}var EU=TU;var AU=require("react/jsx-runtime");function MU(U,L,I){if(!L)return I;let H=U.replace(/^\//,""),z=L[H];if(!z)return I;return AU.jsx(EU,{uiConfig:z})}var V=require("react/jsx-runtime"),eU=({location:U,fallback:L,piecache:I,onError:H,queryOptions:z,disableGlobalForm:$})=>{let J=h(),B=FU(),Z=N(),kU=G.useMemo(()=>jU.createAxiosDateTransformer({baseURL:J}),[J]),PU=G.useMemo(()=>LU(),[]),SU=G.useMemo(()=>J?JU(J):null,[J]),wU=G.useMemo(()=>J?BU(J,B):null,[J,B]),T=W({onError:H}),{data:Q,isLoading:n,error:F}=O.useQuery({queryKey:["uiConfig",U.pathname+U.search,T?.initData],enabled:!!T?.initData,queryFn:async()=>{let q=new URLSearchParams(U.search);if(q.set("__pieroot","telegram"),T?.initData)q.set("initData",T.initData);let i="/api/content"+U.pathname+"?"+q.toString();if(Z)console.log("[PieRoot] Fetching UI configuration from:",i);let a=await kU.get(i,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(Z)console.log("[PieRoot] Received UI configuration:",a.data);return a.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...z}),s=MU(U.pathname,I,L);if(!J)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(F&&Z)return console.error("[PieRoot] Error fetching UI configuration:",F),console.error("[PieRoot] Error details:",{message:F.message,status:F.response?.status,data:F.response?.data}),H?.(F),s;if(n||!Q){if(Z)console.log("[PieRoot] Loading state:",{isLoading:n,hasUiConfiguration:!!Q});return s}if(Z)console.log("[PieRoot] UI configuration loaded successfully:",Q),console.log("[PieRoot] Rendering UI with configuration");return V.jsx(IU.Provider,{value:PU,children:V.jsx(M.Provider,{value:SU,children:V.jsx(A.Provider,{value:wU,children:V.jsx(X.Provider,{value:L??V.jsx(V.Fragment,{}),children:V.jsx(YU,{children:V.jsx(DU,{children:$?V.jsx(o,{uiConfig:Q}):V.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:V.jsx(o,{uiConfig:Q})})})})})})})})},UL=(U)=>{let L=G.useMemo(()=>new O.QueryClient,[]),I=U.queryClient??L;return V.jsx(_U.Provider,{value:U.onNavigate,children:V.jsx(l.Provider,{value:U.config,children:V.jsx(Y.Provider,{value:U.onError,children:V.jsx(O.QueryClientProvider,{client:I,children:V.jsx(eU,{...U})})})})})},fU=UL;
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/util/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,aAAa,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAIhE;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,EAClD,MAAM,EAAE,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC,EACrC,IAAI,EAAE,MAAM,GACb,mBAAmB,CAAC,CAAC,CAAC,CASxB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,GACzB,MAAM,MAAM,EACZ,SAAS,MAAM,OAAO,CAAC,GAAG,CAAC,iBAO9B,CAAA"}
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/util/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,aAAa,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAwBhE;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,EAClD,MAAM,EAAE,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC,EACrC,IAAI,EAAE,MAAM,GACb,mBAAmB,CAAC,CAAC,CAAC,CAOxB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,GACzB,MAAM,MAAM,EACZ,SAAS,MAAM,OAAO,CAAC,GAAG,CAAC,iBAK9B,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Optional callback invoked when a lazy card's chunk fails to load (after the
3
+ * boundary's own retries). Provided by a Pie*Root via its `onError` prop.
4
+ * Hosts typically use it to recover from a stale deploy (e.g. reload the page
5
+ * once so the fresh asset manifest is fetched). Default is `undefined` (no-op).
6
+ */
7
+ declare const LazyErrorContext: import("react").Context<((error: unknown) => void) | undefined>;
8
+ export default LazyErrorContext;
9
+ //# sourceMappingURL=lazyError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazyError.d.ts","sourceRoot":"","sources":["../../src/util/lazyError.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,QAAA,MAAM,gBAAgB,mCAA0B,OAAO,KAAK,IAAI,cAE/D,CAAA;AAED,eAAe,gBAAgB,CAAA"}
@@ -58,4 +58,32 @@ export declare const getAllRegisteredComponents: () => string[];
58
58
  * Returns the number of components currently in the registry.
59
59
  */
60
60
  export declare const getRegistrySize: () => number;
61
+ /**
62
+ * Names of every registered code-split (lazy) component — those registered
63
+ * with a `loader`. Handy for driving a prefetch pass.
64
+ */
65
+ export declare const getLazyComponentNames: () => string[];
66
+ /**
67
+ * Warm a single lazy component's chunk by name, so a later render resolves
68
+ * synchronously (no Suspense fallback flash). No-op for unknown names or
69
+ * eager components. Shares the same module cache as the render-time
70
+ * `React.lazy`, so the import runs at most once.
71
+ *
72
+ * @returns The in-flight module promise, or `undefined` when there's nothing
73
+ * to preload.
74
+ */
75
+ export declare const preloadComponent: (name: string) => Promise<unknown> | undefined;
76
+ /**
77
+ * Background-warm every registered lazy chunk so the first navigation to each
78
+ * screen resolves its card from cache instead of waiting on the network.
79
+ * Idempotent (only the first call does anything). Browser-only and
80
+ * connection-aware: it yields to idle time, warms one chunk at a time so it
81
+ * never competes with what the user is waiting on, and skips entirely on
82
+ * metered / very slow connections. Errors are swallowed — a failed warm-up
83
+ * just means the chunk loads on demand later.
84
+ *
85
+ * Call this once after the first screen has settled (e.g. in an effect on the
86
+ * landing screen).
87
+ */
88
+ export declare const prefetchLazyComponents: () => void;
61
89
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/util/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,yCAAgD,CAAA;AAoCrE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EACvC,YAAY,EAAE,qBAAqB,CAAC,MAAM,CAAC,GAC5C,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAInC;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GACnC,YAAY,qBAAqB,CAAC,GAAG,CAAC,EAAE,SAG3C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,SAE/C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,YAExC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GACzB,MAAM,MAAM,KACb,iBAAiB,GAAG,SAEtB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GACzB,MAAM,MAAM,KACb,qBAAqB,CAAC,GAAG,CAAC,GAAG,SAE/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAO,MAAM,EAEnD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,QAAO,MAElC,CAAA"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/util/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,yCAAgD,CAAA;AAwCrE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EACvC,YAAY,EAAE,qBAAqB,CAAC,MAAM,CAAC,GAC5C,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAInC;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GACnC,YAAY,qBAAqB,CAAC,GAAG,CAAC,EAAE,SAG3C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,SAE/C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,YAExC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GACzB,MAAM,MAAM,KACb,iBAAiB,GAAG,SAEtB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GACzB,MAAM,MAAM,KACb,qBAAqB,CAAC,GAAG,CAAC,GAAG,SAE/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAO,MAAM,EAEnD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,QAAO,MAElC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAO,MAAM,EAGpB,CAAA;AAE3B;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,GAAG,SAIlE,CAAA;AAID;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,QAAO,IAsCzC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swarm.ing/pieui",
3
- "version": "2.0.34",
3
+ "version": "2.1.0",
4
4
  "description": "A React component library featuring PieCard component",
5
5
  "repository": {
6
6
  "type": "git",
@@ -34,6 +34,16 @@
34
34
  "require": "./dist/agent/index.js",
35
35
  "types": "./dist/agent/index.d.ts"
36
36
  },
37
+ "./telegram": {
38
+ "import": "./dist/telegram/index.esm.js",
39
+ "require": "./dist/telegram/index.js",
40
+ "types": "./dist/telegram/index.d.ts"
41
+ },
42
+ "./max": {
43
+ "import": "./dist/max/index.esm.js",
44
+ "require": "./dist/max/index.js",
45
+ "types": "./dist/max/index.d.ts"
46
+ },
37
47
  "./storybook": {
38
48
  "import": "./dist/storybook/index.esm.js",
39
49
  "require": "./dist/storybook/index.js",
@@ -51,8 +61,8 @@
51
61
  }
52
62
  },
53
63
  "scripts": {
54
- "build": "rm -rf ./dist && rm -rf pieui-*.tgz && bun run build:clean && NODE_ENV=production bun run build:esm && NODE_ENV=production bun run build:cjs && NODE_ENV=production bun run build:components:esm && NODE_ENV=production bun run build:components:cjs && NODE_ENV=production bun run build:agent:esm && NODE_ENV=production bun run build:agent:cjs && NODE_ENV=production bun run build:storybook:esm && NODE_ENV=production bun run build:storybook:cjs && NODE_ENV=production bun run build:storybook:addon:esm && NODE_ENV=production bun run build:storybook:addon:cjs && NODE_ENV=production bun run build:storybook:addon:preset && bun run build:banner && NODE_ENV=production bun run build:types && NODE_ENV=production bun run build:cli && bun src/cli.ts postbuild --src-dir src --out-dir dist && bun pm pack",
55
- "build:banner": "node -e \"const fs=require('fs');['dist/index.esm.js','dist/index.js','dist/components/index.esm.js','dist/components/index.js','dist/agent/index.esm.js','dist/agent/index.js','dist/storybook/index.esm.js','dist/storybook/index.js','dist/storybook/addon/index.esm.js','dist/storybook/addon/index.js'].forEach(f=>{if(fs.existsSync(f)){fs.writeFileSync(f,'\\\"use client\\\";\\n'+fs.readFileSync(f,'utf8'))}})\"",
64
+ "build": "rm -rf ./dist && rm -rf pieui-*.tgz && bun run build:clean && NODE_ENV=production bun run build:esm && NODE_ENV=production bun run build:cjs && NODE_ENV=production bun run build:components:esm && NODE_ENV=production bun run build:components:cjs && NODE_ENV=production bun run build:agent:esm && NODE_ENV=production bun run build:agent:cjs && NODE_ENV=production bun run build:telegram:esm && NODE_ENV=production bun run build:telegram:cjs && NODE_ENV=production bun run build:max:esm && NODE_ENV=production bun run build:max:cjs && NODE_ENV=production bun run build:storybook:esm && NODE_ENV=production bun run build:storybook:cjs && NODE_ENV=production bun run build:storybook:addon:esm && NODE_ENV=production bun run build:storybook:addon:cjs && NODE_ENV=production bun run build:storybook:addon:preset && bun run build:banner && NODE_ENV=production bun run build:types && NODE_ENV=production bun run build:cli && bun src/cli.ts postbuild --src-dir src --out-dir dist && bun pm pack",
65
+ "build:banner": "node -e \"const fs=require('fs');['dist/index.esm.js','dist/index.js','dist/components/index.esm.js','dist/components/index.js','dist/agent/index.esm.js','dist/agent/index.js','dist/telegram/index.esm.js','dist/telegram/index.js','dist/max/index.esm.js','dist/max/index.js','dist/storybook/index.esm.js','dist/storybook/index.js','dist/storybook/addon/index.esm.js','dist/storybook/addon/index.js'].forEach(f=>{if(fs.existsSync(f)){fs.writeFileSync(f,'\\\"use client\\\";\\n'+fs.readFileSync(f,'utf8'))}})\"",
56
66
  "build:clean": "rm -rf dist",
57
67
  "build:esm": "bun build src/index.ts --outfile dist/index.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --minify --packages=external",
58
68
  "build:cjs": "bun build src/index.ts --outfile dist/index.js --format cjs --target node --jsx=automatic --jsx-import-source=react --minify --packages=external",
@@ -60,6 +70,10 @@
60
70
  "build:components:cjs": "bun build src/components/index.ts --outfile dist/components/index.js --format cjs --target node --jsx=automatic --jsx-import-source=react --minify --packages=external",
61
71
  "build:agent:esm": "bun build src/agent/index.ts --outfile dist/agent/index.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --minify --packages=external",
62
72
  "build:agent:cjs": "bun build src/agent/index.ts --outfile dist/agent/index.js --format cjs --target node --jsx=automatic --jsx-import-source=react --minify --packages=external",
73
+ "build:telegram:esm": "bun build src/telegram/index.ts --outfile dist/telegram/index.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --minify --packages=external",
74
+ "build:telegram:cjs": "bun build src/telegram/index.ts --outfile dist/telegram/index.js --format cjs --target node --jsx=automatic --jsx-import-source=react --minify --packages=external",
75
+ "build:max:esm": "bun build src/max/index.ts --outfile dist/max/index.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --minify --packages=external",
76
+ "build:max:cjs": "bun build src/max/index.ts --outfile dist/max/index.js --format cjs --target node --jsx=automatic --jsx-import-source=react --minify --packages=external",
63
77
  "build:storybook:esm": "bun build src/storybook/index.tsx --outfile dist/storybook/index.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --minify --packages=external",
64
78
  "build:storybook:cjs": "bun build src/storybook/index.tsx --outfile dist/storybook/index.js --format cjs --target node --jsx=automatic --jsx-import-source=react --minify --packages=external",
65
79
  "build:storybook:addon:esm": "bun build src/storybook/addon/index.tsx --outfile dist/storybook/addon/index.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --minify --packages=external",
@@ -109,9 +123,16 @@
109
123
  "license": "MIT",
110
124
  "peerDependencies": {
111
125
  "react": ">=19",
112
- "react-dom": ">=19"
126
+ "react-dom": ">=19",
127
+ "@openai/agents": "^0.4.5"
128
+ },
129
+ "peerDependenciesMeta": {
130
+ "@openai/agents": {
131
+ "optional": true
132
+ }
113
133
  },
114
134
  "devDependencies": {
135
+ "@openai/agents": "^0.4.5",
115
136
  "@testing-library/jest-dom": "^6.9.1",
116
137
  "@testing-library/react": "^16.3.2",
117
138
  "@types/bun": "latest",
@@ -131,22 +152,16 @@
131
152
  "typescript-json-schema": "^0.67.1"
132
153
  },
133
154
  "dependencies": {
134
- "@openai/agents": "^0.4.5",
135
155
  "@tanstack/react-query": "^5.90.20",
136
- "@telegram-apps/sdk": "^3.11.8",
137
- "annyang": "^2.6.1",
138
156
  "axios": "^1.15.0",
139
157
  "axios-date-transformer": "^1.2.1",
140
158
  "centrifuge": "^5.5.3",
141
159
  "clsx": "^2.1.1",
142
160
  "html-react-parser": "^5.2.16",
143
- "jszip": "^3.10.1",
144
161
  "mitt": "^3.0.1",
145
162
  "react-toastify": "^11.0.5",
146
163
  "socket.io-client": "^4.8.3",
147
164
  "tailwind-merge": "^3.4.0",
148
- "vm2": "^3.10.3",
149
- "zod": "^4.3.6",
150
- "zod-from-json-schema": "^0.5.2"
165
+ "vm2": "^3.10.3"
151
166
  }
152
167
  }