@swarm.ing/pieui 2.0.34 → 2.1.1

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 +31 -7
  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 kC=Object.create;var{getPrototypeOf:jC,defineProperty:a,getOwnPropertyNames:OU,getOwnPropertyDescriptor:xC}=Object,VU=Object.prototype.hasOwnProperty;var $U=(f,U,C)=>{C=f!=null?kC(jC(f)):{};let H=U||!f||!f.__esModule?a(C,"default",{value:f,enumerable:!0}):C;for(let D of OU(f))if(!VU.call(H,D))a(H,D,{get:()=>f[D],enumerable:!0});return H},ZU=new WeakMap,mC=(f)=>{var U=ZU.get(f),C;if(U)return U;if(U=a({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")OU(f).map((H)=>!VU.call(U,H)&&a(U,H,{get:()=>f[H],enumerable:!(C=xC(f,H))||C.enumerable}));return ZU.set(f,U),U};var uC=(f,U)=>{for(var C in U)a(f,C,{get:U[C],enumerable:!0,configurable:!0,set:(H)=>U[C]=()=>H})};var KH={};uC(KH,{usePieEmit:()=>QU,useAjaxSubmit:()=>SC,unregisterComponent:()=>wU,trackLazy:()=>Gf,submitGlobalForm:()=>LC,registry:()=>R,registerPieComponent:()=>W,registerMultipleComponents:()=>_U,readAjaxKey:()=>IU,preloadComponent:()=>gf,prefetchLazyComponents:()=>NU,pieName:()=>oC,hasComponent:()=>MU,getRegistrySize:()=>RU,getRegistryEntry:()=>l,getLazyComponentNames:()=>pf,getEmitter:()=>d,getComponentMeta:()=>LU,getAllRegisteredComponents:()=>oU,cn:()=>MC,UnionCard:()=>pU,UIRendererContext:()=>L,UILoading:()=>Af,UI:()=>_,SocketIOContext:()=>E,SessionStorageCard:()=>UC,SequenceCard:()=>bU,SecureStorageCard:()=>OC,PieRoot:()=>xf,PiePreviewRoot:()=>FC,PieConfigContext:()=>b,PieCard:()=>A,PieBaseRoot:()=>AC,PIEBREAK:()=>Bf,OneOfCard:()=>JC,MittContext:()=>y,IOEventsCard:()=>eU,HiddenCard:()=>nU,HTMLEmbedCard:()=>hU,FallbackContext:()=>M,DeviceStorageCard:()=>HC,CloudStorageCard:()=>DC,CentrifugeIOContext:()=>N,BoxCard:()=>TC,AutoRedirectCard:()=>tU,AjaxGroupCard:()=>$C});module.exports=mC(KH);var k=require("react");var zf=require("react"),b=zf.createContext(null),e=()=>{let f=zf.useContext(b);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},ff=()=>{let{apiServer:f}=e();return f},Tf=ff,qf=()=>{let{centrifugeServer:f}=e();return f};var x=()=>{let{enableRenderingLog:f}=e();return f},zU=x;var Bf="__piedemo__";var qU=require("react"),df=require("centrifuge"),TU=new Map,Jf=(f,U)=>{if(!U)return null;let C=`${f}::${U}`,H=TU.get(C);if(H)return H;async function D(){let Z=await fetch(f+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new df.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let I=new df.Centrifuge(U,{getToken:D});return TU.set(C,I),I},bC=qU.createContext(null),N=bC;var JU=require("socket.io-client"),XU=require("react"),BU=new Map,Xf=(f)=>{let U=BU.get(f);if(U)return U;let C=JU.io(f,{autoConnect:!1,transports:["websocket"]});return BU.set(f,C),C},dC=XU.createContext(null),E=dC;var GU=$U(require("mitt")),g=require("react"),vf=null;function d(){if(!vf)vf=GU.default();return vf}var WU=g.createContext(null);function QU(f){let U=g.useContext(WU);return g.useCallback((C,H)=>{(U??d()).emit(`pie${C}_${f}`,H)},[f,U])}var y=WU;var c=require("react/jsx-runtime"),vC=({card:f,data:U,children:C,useSocketioSupport:H=!1,useCentrifugeSupport:D=!1,useMittSupport:I=!1,centrifugeChannel:Z=void 0,methods:$=void 0,stored:O=void 0})=>{let V=zU(),z=k.useRef($);if(z.current=$,V)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:H,centrifuge:D,mitt:I,centrifugeChannel:Z}),console.log("[PieCard] Methods:",$?Object.keys($):"none"),console.log("[PieCard] Has children:",!!C);let X=k.useContext(E),Q=k.useContext(N),T=k.useContext(y);if(k.useEffect(()=>{if(!X||!H||!z.current||!U.name){if(V&&H)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!X,useSocketioSupport:H,hasMethods:!!z.current,hasDataName:!!U?.name});return}let G=Object.keys(z.current??{}).map((q)=>{let J=`pie${q}_${U.name}`;if(V)console.log(`[PieCard] Socket.IO registering event: ${J}`);let F=(Y)=>{z.current?.[q]?.(Y)};return X.on(J,F),[J,F]});return()=>{G.forEach(([q,J])=>{if(V)console.log(`[PieCard] Socket.IO unregistering event: ${q}`);X.off(q,J)})}},[X,U.name,H]),k.useEffect(()=>{if(!Q||!D||!Z||!U.name){if(V&&D)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!Q,useCentrifugeSupport:D,hasCentrifugeChannel:!!Z,hasMethods:!!z.current,hasDataName:!!U?.name});return}let G=Object.keys(z.current??{}).map((q)=>{let J=`pie${q}_${U.name}_${Z}`;if(V)console.log(`[PieCard] Centrifuge subscribing to channel: ${J}`);let F=Q.newSubscription(J);return F.on("publication",(Y)=>{if(V)console.log(`[PieCard] Centrifuge received data on ${J}:`,Y.data);z.current?.[q]?.(Y.data)}),F.subscribe(),F});return()=>{G.forEach((q)=>{if(V)console.log("[PieCard] Centrifuge unsubscribing from channel");q.unsubscribe(),Q.removeSubscription(q)})}},[Q,Z,U.name,D]),k.useEffect(()=>{if(!T||!I||!U.name){if(V&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!T,useMittSupport:I,hasMethods:!!z.current,hasDataName:!!U?.name});return}let B=Object.keys(z.current??{}),G={};return B.forEach((q)=>{let J=`pie${q}_${U.name}`,F=(Y)=>{if(V)console.log(`[PieCard] Mitt registering event: ${J}`);z.current?.[q]?.(Y)};G[J]=F,T.on(J,F)}),()=>{Object.entries(G).forEach(([q,J])=>{if(V)console.log(`[PieCard] Mitt unregistering event: ${q}`);T.off(q,J)})}},[T,U.name,I]),V)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)}),C]});return C},A=vC;var YU=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 Gf(f,U){return YU.lazy(()=>{if(v.has(U))return v.get(U);return AU(U,f().then((C)=>C))})}var PU=async(f,U)=>{if(!U)return;if(v.has(f))return v.get(f);return AU(f,U().then((C)=>C))};var FU=Symbol.for("@swarm.ing/pieui:component-registry"),KU=globalThis,R=KU[FU]??(KU[FU]=new Map),pC=(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=Gf(U.loader,f.name),U.isLazy=!0;return U};function W(f){let U=pC(f);return R.set(U.name,U),U.component}var _U=(f)=>{f.forEach((U)=>W(U))},wU=(f)=>{R.delete(f)},MU=(f)=>{return R.has(f)},LU=(f)=>{return R.get(f)?.metadata},l=(f)=>{return R.get(f)},oU=()=>{return Array.from(R.keys())},RU=()=>{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,NU=()=>{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(),C="requestIdleCallback"in window?(D)=>window.requestIdleCallback(D,{timeout:2000}):(D)=>window.setTimeout(D,300),H=(D)=>{if(D>=U.length)return;C(()=>{Promise.resolve().then(()=>gf(U[D])).catch(()=>{}).finally(()=>H(D+1))})};H(0)};var Uf=require("react");var EU=require("react"),Wf=require("react/jsx-runtime"),gC=EU.createContext(Wf.jsx(Wf.Fragment,{})),M=gC;var yU=require("react"),cC=yU.createContext(void 0),m=cC;var Qf=require("react"),kU=require("react/jsx-runtime"),lC=2,hC=400;class h extends Qf.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(f){if(this.props.onError?.(f),this.state.attempt<lC){let U=hC*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((C)=>({failed:!1,attempt:C.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 kU.jsx(Qf.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var Yf=require("react/jsx-runtime");function rC({uiConfig:f,setUiAjaxConfiguration:U}){let C=Uf.useContext(M),H=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 I=l(f.card);if(!I?.component){if(D)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return C}if(D)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let Z=I.component,$=Yf.jsx(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(I.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",I.name);return Yf.jsx(h,{name:I.name,fallback:I.fallback?Yf.jsx(I.fallback,{}):C,onError:H,children:$})}if(D)console.log("[UI] Rendering component directly:",I.name);return $}var _=Uf.memo(rC);var cf=require("react");var jU=require("react"),nC=jU.createContext(null),L=nC;var Cf=require("react/jsx-runtime");function xU({uiConfig:f,setUiAjaxConfiguration:U}){let C=cf.useContext(M),H=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 I=l(f.card);if(!I?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return C}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 O=I.fallback;return Cf.jsx(O,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",I.name);let Z=I.component,$=Cf.jsx(L.Provider,{value:xU,children:Cf.jsx(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(I.isLazy)return Cf.jsx(h,{name:I.name,fallback:C,onError:H,children:$});return $}var Af=xU;var mU=require("react");var Pf=require("react/jsx-runtime"),iC=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:H,sx:D}=f,I=mU.useContext(L)??_;return Pf.jsx(A,{card:H,data:f,children:Pf.jsx("div",{style:D,id:H,children:U.map((Z,$)=>{return Pf.jsx(I,{uiConfig:Z,setUiAjaxConfiguration:C},`children-${$}`)})})})},uU=iC;var bU=W({name:"SequenceCard",component:uU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var dU=require("react");var lf=require("react/jsx-runtime"),sC=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:H}=f,D=dU.useContext(L)??_;return lf.jsx(A,{card:H,data:f,children:U.map((I,Z)=>{return lf.jsx(D,{uiConfig:I,setUiAjaxConfiguration:C},`children-${Z}`)})})},vU=sC;var pU=W({name:"UnionCard",component:vU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var Ff=require("react"),gU=$U(require("html-react-parser"));var o=require("react");function tC(){let f=new AudioContext,U=f.createOscillator(),C=U.connect(f.createMediaStreamDestination());U.start();let H=C.stream.getAudioTracks()[0];return H.enabled=!1,H}function hf(f=null,U){let[C,H]=o.useState(!1),D=o.useRef(null),I=o.useRef(null),Z=o.useRef(null),$=o.useCallback(async(X,Q=!0)=>{if(D.current)O();let T=new RTCPeerConnection;if(T.onconnectionstatechange=()=>{if(T.connectionState==="connected")H(!0);else if(["disconnected","failed","closed"].includes(T.connectionState))H(!1)},T.ontrack=(P)=>{if(f)f.srcObject=P.streams[0]},Q){let P=await navigator.mediaDevices.getUserMedia({audio:!0});T.addTrack(P.getTracks()[0],P)}else{let P=tC();T.addTrack(P)}let B=T.createDataChannel("oai-events");I.current=B,Z.current=new Promise((P)=>{B.addEventListener("open",()=>{P()})});let G=await T.createOffer();await T.setLocalDescription(G);let Y=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:G.sdp,headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/sdp"}})).text();await T.setRemoteDescription({type:"answer",sdp:Y}),D.current=T,await Z.current},[f]),O=o.useCallback(()=>{let X=I.current;if(X)X.close();D.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),D.current?.close(),H(!1),D.current=null,I.current=null,Z.current=null},[f]),V=o.useCallback((X)=>{let Q=I.current;if(!Q){console.error("Data channel is not ready",X);return}let T=new Date().toLocaleTimeString();if(X.event_id=X.event_id||crypto.randomUUID(),Q.send(JSON.stringify(X)),!X.timestamp)X.timestamp=T;U?.(X)},[U,f]),z=o.useCallback((X)=>{if(!I.current){console.error("Data channel is not ready");return}let T=()=>{V({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:X}]}}),V({type:"response.create"})};if(Z.current)Z.current.then(T);else T()},[U,f]);return o.useEffect(()=>{let X=I.current;if(!X)return;let Q=(T)=>{let B=JSON.parse(T.data);if(!B.timestamp)B.timestamp=new Date().toLocaleTimeString();U?.(B)};return X.addEventListener("message",Q),()=>{X.removeEventListener("message",Q)}},[U,f]),{isSessionActive:C,startSession:$,stopSession:O,sendTextMessage:z}}var lU=require("react/jsx-runtime"),aC=({data:f})=>{let{html:U,useSocketioSupport:C,useCentrifugeSupport:H,useMittSupport:D,centrifugeChannel:I}=f,[Z,$]=Ff.useState(U),{isSessionActive:O,startSession:V,sendTextMessage:z}=hf(null,(B)=>{if(console.log(B.type,B.type==="response.output_text.delta"&&B.delta),B.type==="response.output_text.delta"&&B.delta)$((G)=>G+B.delta)});return Ff.useEffect(()=>{$(U)},[U]),lU.jsx(A,{card:"HTMLEmbedCard",data:f,methods:{update:(B)=>{$(B.value)},generateUsingAI:async(B)=>{try{if(!O&&B.token)await V(B.token,!1);z(B.prompt)}catch(G){console.error("Failed to generate using AI",G)}},initializeAI:async(B)=>{if(!O&&B.token)await V(B.token,!1)}},useCentrifugeSupport:H,useSocketioSupport:C,useMittSupport:D,centrifugeChannel:I,children:gU.default(Z)})},cU=aC;var hU=W({name:"HTMLEmbedCard",component:cU,metadata:{author:"Swarm.ing"}});var Kf=require("react");var rf=require("react/jsx-runtime"),eC=({data:f})=>{let{name:U,value:C,useSocketioSupport:H,useCentrifugeSupport:D,useMittSupport:I,centrifugeChannel:Z}=f,[$,O]=Kf.useState(C);return Kf.useEffect(()=>{O(C)},[C]),rf.jsx(A,{card:"HiddenCard",data:f,useSocketioSupport:H,useCentrifugeSupport:D,useMittSupport:I,centrifugeChannel:Z,methods:{update:({value:V})=>{O(V)}},children:rf.jsx("input",{type:"hidden",id:U,name:U,value:$})})},rU=eC;var nU=W({name:"HiddenCard",component:rU,metadata:{author:"Swarm.ing"}});var Hf=require("react");var iU=require("react"),fH=iU.createContext(void 0),j=fH;var Sf=require("react/jsx-runtime"),UH=({data:f})=>{let{url:U}=f,C=Hf.useContext(j),H=Hf.useContext(M);return Hf.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else C?.(U)},[U,C]),Sf.jsx(Sf.Fragment,{children:H})},sU=UH;var tU=W({name:"AutoRedirectCard",component:sU,metadata:{author:"Swarm.ing"}});var u=require("react-toastify"),_f=require("react-toastify");var n=require("react");var r=require("react/jsx-runtime"),CH={bounce:u.Bounce,slide:u.Slide,zoom:u.Zoom,flip:u.Flip},HH=(f)=>{let U={...f,type:f.alertType,transition:f.transition?CH[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};_f.toast(f.message,U)},IH=(f)=>{console.log("Log event",f)},DH=(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(H){console.error("[IOEventsCard] Failed to show notification",H)}},C=window.Notification.permission;if(C==="granted"){U();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((H)=>{if(H==="granted")U()})},ZH=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:C,useMittSupport:H,centrifugeChannel:D}=f,I=n.useContext(j),Z=n.useRef(I);Z.current=I;let $=n.useMemo(()=>({alert:HH,log:IH,push:DH,redirect:(O)=>{if(O.to){let V=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(V))window.location.href=V;else Z.current?.(V)}else window.location.reload()},reload:(O)=>{if(O.to){let V=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(V))window.location.href=V;else Z.current?.(V)}else window.location.reload()}}),[]);return r.jsx(r.Fragment,{children:r.jsx(A,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:C,useMittSupport:H,centrifugeChannel:D,methods:$,children:r.jsx(_f.ToastContainer,{})})})},aU=ZH;var eU=W({name:"IOEventsCard",component:aU,metadata:{author:"Swarm.ing"}});var If=require("react");var nf=require("react/jsx-runtime"),OH=({data:f})=>{let{name:U,key:C,value:H,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$}=f,[O,V]=If.useState(H);return If.useEffect(()=>{V(H)},[H]),If.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(C,O)},[C,O]),nf.jsx(A,{card:"SessionStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$,methods:{update:({value:z})=>{V(z)},remove:()=>{sessionStorage.removeItem(C),V("")}},children:nf.jsx("input",{type:"hidden",id:U,name:U,value:O})})},fC=OH;var UC=W({name:"SessionStorageCard",component:fC,metadata:{author:"PieData"}});var Df=require("react");var sf=require("react/jsx-runtime"),VH=({data:f})=>{let{name:U,key:C,value:H,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$}=f,[O,V]=Df.useState(H);return Df.useEffect(()=>{V(H)},[H]),Df.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(C,O)},[C,O]),sf.jsx(A,{card:"DeviceStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$,methods:{update:({value:z})=>{V(z)},remove:()=>{localStorage.removeItem(C),V("")}},children:sf.jsx("input",{type:"hidden",id:U,name:U,value:O})})},CC=VH;var HC=W({name:"DeviceStorageCard",component:CC,metadata:{author:"PieData"}});var Zf=require("react");var tf=require("react/jsx-runtime"),$H=({data:f})=>{let{name:U,key:C,value:H,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$}=f,[O,V]=Zf.useState(H);return Zf.useEffect(()=>{V(H)},[H]),Zf.useEffect(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp?.CloudStorage;if(!z)return;z.setItem(C,O)},[C,O]),tf.jsx(A,{card:"CloudStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$,methods:{update:({value:z})=>{V(z)},remove:()=>{let z=window.Telegram?.WebApp?.CloudStorage;if(z)z.removeItem(C);V("")}},children:tf.jsx("input",{type:"hidden",id:U,name:U,value:O})})},IC=$H;var DC=W({name:"CloudStorageCard",component:IC,metadata:{author:"PieData"}});var Of=require("react");var af=require("react/jsx-runtime"),zH=({data:f})=>{let{name:U,key:C,value:H,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$}=f,[O,V]=Of.useState(H);return Of.useEffect(()=>{V(H)},[H]),Of.useEffect(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp?.SecureStorage;if(!z)return;z.setItem(C,O)},[C,O]),af.jsx(A,{card:"SecureStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$,methods:{update:({value:z})=>{V(z)},remove:()=>{let z=window.Telegram?.WebApp?.SecureStorage;if(z)z.removeItem(C);V("")}},children:af.jsx("input",{type:"hidden",id:U,name:U,value:O})})},ZC=zH;var OC=W({name:"SecureStorageCard",component:ZC,metadata:{author:"PieData"}});var w=require("react");var ef=require("react/jsx-runtime"),TH=({data:f,content:U})=>{let{useLoader:C,noReturn:H,returnType:D,useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:$,centrifugeChannel:O}=f,V=w.useContext(M),z=w.useContext(L)??_,[X,Q]=w.useState(!1),[T,B]=w.useState(null),G=w.useRef(U),q=w.useContext(y),J=w.useCallback((P)=>{if(P===null)Q(!0);else if(Q(!1),!H)G.current=P;if(!H)B(P)},[H]),F=w.useCallback((P)=>{G.current=P.content,B(P.content)},[]),Y=w.useCallback((P)=>{if(P===null)Q(!0);else if(Q(!1),!H)for(let Vf of P)q?.emit(Vf.name,Vf.data)},[H,q]);if(w.useEffect(()=>{B(U),Q(!1)},[U]),!T&&C)return V;return ef.jsx(A,{card:"AjaxGroupCard",data:f,methods:{changeContent:F},useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:$,centrifugeChannel:O,children:ef.jsx(z,{uiConfig:T??G.current,setUiAjaxConfiguration:D==="events"?Y:J})})},VC=TH;var $C=W({name:"AjaxGroupCard",component:VC,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var fU=require("react");var wf=require("react/jsx-runtime"),qH=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:H,url:D,sx:I}=f,Z=fU.useContext(j),$=fU.useContext(L)??_;return wf.jsx(A,{card:H,data:f,children:wf.jsx("div",{style:I,id:H,onClick:(V)=>{if(D)if(V.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(D))window.location.href=D;else Z?.(D)},children:wf.jsx($,{setUiAjaxConfiguration:C,uiConfig:U})})})},zC=qH;var TC=W({name:"BoxCard",component:zC,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var qC=require("react");var Mf=require("react/jsx-runtime"),BH=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:H,sx:D}=f,I=qC.useContext(L)??_;return Mf.jsx(A,{card:H,data:f,children:Mf.jsx("div",{style:D,id:H,children:U.map((Z,$)=>{return Mf.jsx(I,{uiConfig:Z,setUiAjaxConfiguration:C},`children-${$}`)})})})},BC=BH;var JC=W({name:"OneOfCard",component:BC,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 C=`${f}::${U}`,H=f?Lf.get(C):void 0,[D,I]=Rf.useState(H??null);return Rf.useEffect(()=>{if(!f)return;if(Lf.has(C)){I(Lf.get(C));return}let Z=of.get(C);if(!Z)Z=fetch(f+`api/support/${U}`,{method:"GET"}).then((O)=>O.json()).then((O)=>{return Lf.set(C,O),of.delete(C),O}).catch((O)=>{throw of.delete(C),O}),of.set(C,Z);let $=!1;return Z.then((O)=>{if(!$)I(O)}).catch(()=>{}),()=>{$=!0}},[f,U,C]),D}var UU=null,XC=null;function GC(){XC?.()}function CU(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!UU)UU=new Promise((f)=>{XC=()=>{f()}});return UU}var JH=({children:f})=>{let U=Ef.useContext(E),C=Tf(),H=Nf(C,"socketIO"),D=(I)=>{if(typeof window<"u")window.sid=I.sid,GC(),console.log(`SocketIO initialized: ${window.sid}`)};return Ef.useEffect(()=>{if(!U)return;let I=()=>{console.log("SocketIO connected")},Z=($)=>{console.log(`SocketIO disconnected: ${$}`),U.connect()};if(H)U.on("pieinit",D),U.on("connect",I),U.on("disconnect",Z),U.connect();return()=>{if(H)U.off("pieinit",D),U.off("connect",I),U.off("disconnect",Z),U.disconnect()}},[U,H]),f},yf=JH;var kf=require("react");var XH=({children:f})=>{let U=kf.useContext(N),C=Tf(),H=Nf(C,"centrifuge");return kf.useEffect(()=>{if(!U)return;let D=()=>{console.log("Centrifuge connected")},I=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(H)U.on("connected",D),U.on("disconnected",I),U.connect();return()=>{if(H)U.disconnect()}},[U,H]),f},jf=XH;var YC=require("axios-date-transformer");var QC=require("react/jsx-runtime");function WC(f,U,C){if(!U)return C;let H=f.replace(/^\//,""),D=U[H];if(!D)return C;return QC.jsx(Af,{uiConfig:D})}var K=require("react/jsx-runtime"),GH=({location:f,fallback:U,piecache:C,onError:H,queryOptions:D,disableGlobalForm:I})=>{let Z=ff(),$=qf(),O=x(),V=i.useMemo(()=>YC.createAxiosDateTransformer({baseURL:Z||""}),[Z]),z=i.useMemo(()=>d(),[]),X=i.useMemo(()=>Z?Xf(Z):null,[Z]),Q=i.useMemo(()=>Z?Jf(Z,$):null,[Z,$]),{data:T,isLoading:B,error:G}=s.useQuery({queryKey:["uiConfig",f.pathname+f.search,Z],enabled:!!Z,queryFn:async()=>{let J=new URLSearchParams(f.search);J.set("__pieroot","web");let F="/api/content"+f.pathname+"?"+J.toString();if(O)console.log("[PieRoot] Fetching UI configuration from:",F);let Y=await V.get(F,{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:",Y.data);return Y.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(J)=>Math.min(1000*2**J,30000),...D}),q=WC(f.pathname,C,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:",$),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!C);if(G){if(O)console.error("[PieRoot] Error fetching UI configuration:",G),console.error("[PieRoot] Error details:",{message:G.message,status:G.response?.status,data:G.response?.data});return H?.(G),q}if(B||!T){if(O)console.log("[PieRoot] Loading state:",{isLoading:B,hasUiConfiguration:!!T});return q}if(O)console.log("[PieRoot] UI configuration loaded successfully:",T),console.log("[PieRoot] Rendering UI with configuration");return K.jsx(y.Provider,{value:z,children:K.jsx(E.Provider,{value:X,children:K.jsx(N.Provider,{value:Q,children:K.jsx(M.Provider,{value:U??K.jsx(K.Fragment,{}),children:K.jsx(yf,{children:K.jsx(jf,{children:I?K.jsx(_,{uiConfig:T}):K.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:K.jsx(_,{uiConfig:T})})})})})})})})},WH=(f)=>{let U=i.useMemo(()=>new s.QueryClient,[]),C=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(s.QueryClientProvider,{client:C,children:K.jsx(GH,{...f})})})})})},xf=WH;var t=require("react"),mf=require("@tanstack/react-query");var S=require("react/jsx-runtime"),QH=({location:f,fallback:U,children:C,disableGlobalForm:H})=>{let D=ff(),I=qf(),Z=x(),$=t.useMemo(()=>d(),[]),O=t.useMemo(()=>D?Xf(D):null,[D]),V=t.useMemo(()=>D?Jf(D,I):null,[D,I]);if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",I),console.log("[PieRoot] Fallback provided:",!!U);return S.jsx(y.Provider,{value:$,children:S.jsx(E.Provider,{value:O,children:S.jsx(N.Provider,{value:V,children:S.jsx(M.Provider,{value:U??S.jsx(S.Fragment,{}),children:S.jsx(yf,{children:S.jsx(jf,{children:H?C:S.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:C})})})})})})})},YH=(f)=>{let[U]=t.useState(()=>new mf.QueryClient),C=f.queryClient??U;return S.jsx(j.Provider,{value:f.onNavigate,children:S.jsx(b.Provider,{value:f.config,children:S.jsx(m.Provider,{value:f.onError,children:S.jsx(mf.QueryClientProvider,{client:C,children:S.jsx(QH,{...f})})})})})},AC=YH;var PC=require("react");var HU=require("react/jsx-runtime"),AH=HU.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),PH=({apiServer:f,pathname:U="/",search:C="",centrifugeServer:H,fallback:D,enableRenderingLog:I=!1})=>{let Z=f??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",$=PC.useMemo(()=>({apiServer:Z,centrifugeServer:H,enableRenderingLog:I,pageProcessor:"web"}),[Z,H,I]);return HU.jsx(xf,{location:{pathname:U,search:C},config:$,fallback:D??AH,onNavigate:(V)=>{if(typeof window<"u")window.history.pushState(null,"",V)}})},FC=PH;var KC=require("react"),IU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let C=document.getElementsByName(f);if(!C.length){if(U)console.warn(`No input found with name ${f}`);return[]}let H=C[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},FH=(f,U={},C=[],H,D)=>{let I=D?.renderingLogEnabled??!1,Z=D?.timeout,$=D?.retryPolicy,O=$?.maxRetries??0,V=$?.baseDelay??1000,z=$?.retryOn??[502,503,504];if(I)console.log("Registering AJAX: ",H,U,C);return async(X={})=>{if(typeof window>"u"||typeof document>"u"){if(I)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let Q=D?.apiServer;if(!Q){if(I)console.warn("AJAX skipped: apiServer is missing");return}if(!H||!f){if(I)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(C.includes("sid"))await CU();let T=new FormData;for(let[q,J]of Object.entries({...U,...X}))T.append(q,J);for(let q of C)for(let J of IU(q,I))T.append(q,J);let B=Q+"api/ajax_content"+H;f(null);let G;for(let q=0;q<=O;q++){if(q>0){let Y=V*2**(q-1);if(I)console.log(`AJAX retry ${q}/${O} after ${Y}ms`);await new Promise((P)=>setTimeout(P,Y))}let J=Z!=null?new AbortController:null,F=J&&setTimeout(()=>J.abort(),Z);try{let Y=await fetch(B,{method:"POST",body:T,signal:J?.signal});if(F)clearTimeout(F);if(!Y.ok&&z.includes(Y.status)&&q<O){G=Error(`HTTP ${Y.status}`);continue}let Vf=(Y.headers.get("content-type")||"").includes("application/json");if(!!Y.body?.getReader&&!Vf){let $f=Y.body.getReader(),RC=new TextDecoder,p="";while(!0){let{done:uf,value:NC}=await $f.read();if(uf)break;p+=RC.decode(NC,{stream:!0});let DU=p.split(`
3
+ `);p=DU.pop()??"";for(let EC of DU){let bf=EC.trim();if(!bf)continue;try{let yC=JSON.parse(bf);f([yC])}catch{if(I)console.warn("Failed to parse streamed line:",bf)}}}if(p.trim())try{let uf=JSON.parse(p);f([uf])}catch{if(I)console.warn("Failed to parse final streamed line:",p)}return{}}else{let $f=await Y.json();return f($f),$f}}catch(Y){if(F)clearTimeout(F);if(G=Y,q<O)continue;if(I)console.error("AJAX request failed:",Y);return f(null),Y}}if(I)console.error("AJAX request failed after retries:",G);return f(null),G}},SC=(f,U={},C=[],H,D)=>{let{apiServer:I,enableRenderingLog:Z}=e(),$=JSON.stringify(U),O=JSON.stringify(C),V=JSON.stringify(D);return KC.useMemo(()=>FH(f,U,C,H,{apiServer:I,renderingLogEnabled:Z,timeout:D?.timeout,retryPolicy:D?.retryPolicy}),[f,$,O,H,I,Z,V])};var _C=require("clsx"),wC=require("tailwind-merge");function MC(...f){return wC.twMerge(_C.clsx(f))}var LC=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var oC=(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 X}from"react";import{QueryClient as rU,QueryClientProvider as tU,useQuery as eU}from"@tanstack/react-query";import NU from"mitt";import{createContext as VU,useCallback as ZL,useContext as NL}from"react";var A=null;function m(){if(!A)A=NU();return A}var FU=VU(null);var d=FU;import{io as OU}from"socket.io-client";import{createContext as QU}from"react";var g=new Map,u=(U)=>{let L=g.get(U);if(L)return L;let z=OU(U,{autoConnect:!1,transports:["websocket"]});return g.set(U,z),z},TU=QU(null),K=TU;import{createContext as qU}from"react";import{Centrifuge as l}from"centrifuge";var c=new Map,h=(U,L)=>{if(!L)return null;let z=`${U}::${L}`,H=c.get(z);if(H)return H;async function D(){let I=await fetch(U+"api/centrifuge/gen_token");if(!I.ok){if(I.status===403)throw new l.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${I.status}`)}return(await I.json()).token}let $=new l(L,{getToken:D});return c.set(z,$),$},GU=qU(null),_=GU;import{useContext as WU,useEffect as EU}from"react";import{useEffect as YU,useState as XU}from"react";var W=new Map,E=new Map;function R(U,L){let z=`${U}::${L}`,H=U?W.get(z):void 0,[D,$]=XU(H??null);return YU(()=>{if(!U)return;if(W.has(z)){$(W.get(z));return}let I=E.get(z);if(!I)I=fetch(U+`api/support/${L}`,{method:"GET"}).then((J)=>J.json()).then((J)=>{return W.set(z,J),E.delete(z),J}).catch((J)=>{throw E.delete(z),J}),E.set(z,I);let N=!1;return I.then((J)=>{if(!N)$(J)}).catch(()=>{}),()=>{N=!0}},[U,L,z]),D}import{createContext as BU,useContext as KU}from"react";var P=BU(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 F=()=>{let{enableRenderingLog:U}=S();return U};var _U=null;function p(){_U?.()}var RU=({children:U})=>{let L=WU(K),z=j(),H=R(z,"socketIO"),D=($)=>{if(typeof window<"u")window.sid=$.sid,p(),console.log(`SocketIO initialized: ${window.sid}`)};return EU(()=>{if(!L)return;let $=()=>{console.log("SocketIO connected")},I=(N)=>{console.log(`SocketIO disconnected: ${N}`),L.connect()};if(H)L.on("pieinit",D),L.on("connect",$),L.on("disconnect",I),L.connect();return()=>{if(H)L.off("pieinit",D),L.off("connect",$),L.off("disconnect",I),L.disconnect()}},[L,H]),U},n=RU;import{useContext as jU,useEffect as MU}from"react";var fU=({children:U})=>{let L=jU(_),z=j(),H=R(z,"centrifuge");return MU(()=>{if(!L)return;let D=()=>{console.log("Centrifuge connected")},$=(I)=>{console.log("Centrifuge disconnected:",I)};if(H)L.on("connected",D),L.on("disconnected",$),L.connect();return()=>{if(H)L.disconnect()}},[L,H]),U},s=fU;import{createContext as AU}from"react";import{jsx as kU,Fragment as SU}from"react/jsx-runtime";var PU=AU(kU(SU,{})),O=PU;import{createContext as yU}from"react";var wU=yU(void 0),Q=wU;var i=Symbol.for("@swarm.ing/pieui:component-registry"),a=globalThis,CU=a[i]??(a[i]=new Map);var M=(U)=>{return CU.get(U)};import{useContext as r,memo as gU}from"react";import{Component as bU,Suspense as xU}from"react";import{jsx as dU}from"react/jsx-runtime";var vU=2,mU=400;class T extends bU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<vU){let L=mU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((z)=>({failed:!1,attempt:z.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 dU(xU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as y}from"react/jsx-runtime";function uU({uiConfig:U,setUiAjaxConfiguration:L}){let z=r(O),H=r(Q),D=F();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 $=M(U.card);if(!$?.component){if(D)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return z}if(D)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let I=$.component,N=y(I,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if($.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",$.name);return y(T,{name:$.name,fallback:$.fallback?y($.fallback,{}):z,onError:H,children:N})}if(D)console.log("[UI] Rendering component directly:",$.name);return N}var w=gU(uU);import{createAxiosDateTransformer as UL}from"axios-date-transformer";import{useEffect as t,useState as lU}from"react";var q=()=>{let[U,L]=lU(null);return t(()=>{if(typeof window>"u")return;let z=window.WebApp;if(!z)return;z.ready(),L(z)},[]),U},cU=()=>{let U=q();return[U?.initDataUnsafe,U?.initData]},hU=(U)=>{let L=q();return t(()=>{if(!L||!U)return;return L.BackButton.onClick(U),L.BackButton.show(),()=>{L.BackButton.offClick(U),L.BackButton.hide()}},[L,U]),L?.BackButton??null},oU=()=>{return q()?.HapticFeedback??null};import{createContext as pU}from"react";var nU=pU(void 0),e=nU;import{useContext as LU}from"react";import{createContext as sU}from"react";var iU=sU(null),UU=iU;import{jsx as f}from"react/jsx-runtime";function $U({uiConfig:U,setUiAjaxConfiguration:L}){let z=LU(O),H=LU(Q),D=F();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 $=M(U.card);if(!$?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return z}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 J=$.fallback;return f(J,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",$.name);let I=$.component,N=f(UU.Provider,{value:$U,children:f(I,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if($.isLazy)return f(T,{name:$.name,fallback:z,onError:H,children:N});return N}var zU=$U;import{jsx as aU}from"react/jsx-runtime";function IU(U,L,z){if(!L)return z;let H=U.replace(/^\//,""),D=L[H];if(!D)return z;return aU(zU,{uiConfig:D})}import{jsx as Z,Fragment as zL}from"react/jsx-runtime";var LL=({location:U,fallback:L,piecache:z,onError:H,queryOptions:D,disableGlobalForm:$})=>{let I=k(),N=o(),J=F(),DU=X(()=>UL({baseURL:I}),[I]),HU=X(()=>m(),[]),JU=X(()=>I?u(I):null,[I]),ZU=X(()=>I?h(I,N):null,[I,N]),B=q(),{data:G,isLoading:C,error:V}=eU({queryKey:["uiConfig",U.pathname+U.search,B?.initData],queryFn:async()=>{let Y=new URLSearchParams(U.search);if(Y.set("__pieroot","max"),B?.initData)Y.set("initData",B.initData);let x="/api/content"+U.pathname+"?"+Y.toString();if(J)console.log("[PieRoot] Fetching UI configuration from:",x);let v=await DU.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:!!B?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Y)=>Math.min(1000*2**Y,30000),...D}),b=IU(U.pathname,z,L);if(!I)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&J)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}),H?.(V),b;if(C||!G){if(J)console.log("[PieRoot] Loading state:",{isLoading:C,hasUiConfiguration:!!G});return b}if(J)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return Z(d.Provider,{value:HU,children:Z(K.Provider,{value:JU,children:Z(_.Provider,{value:ZU,children:Z(O.Provider,{value:L??Z(zL,{}),children:Z(n,{children:Z(s,{children:$?Z(w,{uiConfig:G}):Z("form",{id:"piedata_global_form",action:I+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:Z(w,{uiConfig:G})})})})})})})})},$L=(U)=>{let L=X(()=>new rU,[]),z=U.queryClient??L;return Z(e.Provider,{value:U.onNavigate,children:Z(P.Provider,{value:U.config,children:Z(Q.Provider,{value:U.onError,children:Z(tU,{client:z,children:Z(LL,{...U})})})})})},IL=$L;export{q as useMaxWebApp,cU as useMaxInitData,oU as useMaxHapticFeedback,hU as useMaxBackButton,IL as PieMaxRoot};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ var xU=Object.create;var{getPrototypeOf:vU,defineProperty:K,getOwnPropertyNames:t,getOwnPropertyDescriptor:mU}=Object,e=Object.prototype.hasOwnProperty;var dU=(U,L,$)=>{$=U!=null?xU(vU(U)):{};let I=L||!U||!U.__esModule?K($,"default",{value:U,enumerable:!0}):$;for(let D of t(U))if(!e.call(I,D))K(I,D,{get:()=>U[D],enumerable:!0});return I},r=new WeakMap,gU=(U)=>{var L=r.get(U),$;if(L)return L;if(L=K({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")t(U).map((I)=>!e.call(L,I)&&K(L,I,{get:()=>U[I],enumerable:!($=mU(U,I))||$.enumerable}));return r.set(U,L),L};var uU=(U,L)=>{for(var $ in L)K(U,$,{get:L[$],enumerable:!0,configurable:!0,set:(I)=>L[$]=()=>I})};var IL={};uU(IL,{useMaxWebApp:()=>V,useMaxInitData:()=>BU,useMaxHapticFeedback:()=>_U,useMaxBackButton:()=>KU,PieMaxRoot:()=>kU});module.exports=gU(IL);var G=require("react"),Y=require("@tanstack/react-query");var UU=dU(require("mitt")),j=require("react"),g=null;function LU(){if(!g)g=UU.default();return g}var lU=j.createContext(null);var $U=lU;var IU=require("socket.io-client"),DU=require("react"),zU=new Map,HU=(U)=>{let L=zU.get(U);if(L)return L;let $=IU.io(U,{autoConnect:!1,transports:["websocket"]});return zU.set(U,$),$},cU=DU.createContext(null),M=cU;var ZU=require("react"),u=require("centrifuge"),JU=new Map,NU=(U,L)=>{if(!L)return null;let $=`${U}::${L}`,I=JU.get($);if(I)return I;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 z=new u.Centrifuge(L,{getToken:D});return JU.set($,z),z},hU=ZU.createContext(null),f=hU;var C=require("react");var S=require("react"),A=new Map,P=new Map;function k(U,L){let $=`${U}::${L}`,I=U?A.get($):void 0,[D,z]=S.useState(I??null);return S.useEffect(()=>{if(!U)return;if(A.has($)){z(A.get($));return}let H=P.get($);if(!H)H=fetch(U+`api/support/${L}`,{method:"GET"}).then((Z)=>Z.json()).then((Z)=>{return A.set($,Z),P.delete($),Z}).catch((Z)=>{throw P.delete($),Z}),P.set($,H);let N=!1;return H.then((Z)=>{if(!N)z(Z)}).catch(()=>{}),()=>{N=!0}},[U,L,$]),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,VU=()=>{let{centrifugeServer:U}=c();return U};var O=()=>{let{enableRenderingLog:U}=c();return U};var oU=null;function FU(){oU?.()}var pU=({children:U})=>{let L=C.useContext(M),$=w(),I=k($,"socketIO"),D=(z)=>{if(typeof window<"u")window.sid=z.sid,FU(),console.log(`SocketIO initialized: ${window.sid}`)};return C.useEffect(()=>{if(!L)return;let z=()=>{console.log("SocketIO connected")},H=(N)=>{console.log(`SocketIO disconnected: ${N}`),L.connect()};if(I)L.on("pieinit",D),L.on("connect",z),L.on("disconnect",H),L.connect();return()=>{if(I)L.off("pieinit",D),L.off("connect",z),L.off("disconnect",H),L.disconnect()}},[L,I]),U},OU=pU;var b=require("react");var nU=({children:U})=>{let L=b.useContext(f),$=w(),I=k($,"centrifuge");return b.useEffect(()=>{if(!L)return;let D=()=>{console.log("Centrifuge connected")},z=(H)=>{console.log("Centrifuge disconnected:",H)};if(I)L.on("connected",D),L.on("disconnected",z),L.connect();return()=>{if(I)L.disconnect()}},[L,I]),U},QU=nU;var TU=require("react"),x=require("react/jsx-runtime"),sU=TU.createContext(x.jsx(x.Fragment,{})),Q=sU;var qU=require("react"),iU=qU.createContext(void 0),T=iU;var GU=Symbol.for("@swarm.ing/pieui:component-registry"),YU=globalThis,aU=YU[GU]??(YU[GU]=new Map);var v=(U)=>{return aU.get(U)};var _=require("react");var m=require("react"),XU=require("react/jsx-runtime"),rU=2,tU=400;class q extends m.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<rU){let L=tU*(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 XU.jsx(m.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var d=require("react/jsx-runtime");function eU({uiConfig:U,setUiAjaxConfiguration:L}){let $=_.useContext(Q),I=_.useContext(T),D=O();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 z=v(U.card);if(!z?.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:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let H=z.component,N=d.jsx(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(z.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",z.name);return d.jsx(q,{name:z.name,fallback:z.fallback?d.jsx(z.fallback,{}):$,onError:I,children:N})}if(D)console.log("[UI] Rendering component directly:",z.name);return N}var o=_.memo(eU);var SU=require("axios-date-transformer");var W=require("react"),V=()=>{let[U,L]=W.useState(null);return W.useEffect(()=>{if(typeof window>"u")return;let $=window.WebApp;if(!$)return;$.ready(),L($)},[]),U},BU=()=>{let U=V();return[U?.initDataUnsafe,U?.initData]},KU=(U)=>{let L=V();return W.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 V()?.HapticFeedback??null};var WU=require("react"),UL=WU.createContext(void 0),EU=UL;var p=require("react");var RU=require("react"),LL=RU.createContext(null),jU=LL;var E=require("react/jsx-runtime");function MU({uiConfig:U,setUiAjaxConfiguration:L}){let $=p.useContext(Q),I=p.useContext(T),D=O();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 z=v(U.card);if(!z?.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:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata,hasFallback:!!z.fallback});if(z.fallback){if(D)console.log("[UILoading] Rendering fallback for:",z.name);let Z=z.fallback;return E.jsx(Z,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",z.name);let H=z.component,N=E.jsx(jU.Provider,{value:MU,children:E.jsx(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(z.isLazy)return E.jsx(q,{name:z.name,fallback:$,onError:I,children:N});return N}var fU=MU;var PU=require("react/jsx-runtime");function AU(U,L,$){if(!L)return $;let I=U.replace(/^\//,""),D=L[I];if(!D)return $;return PU.jsx(fU,{uiConfig:D})}var J=require("react/jsx-runtime"),$L=({location:U,fallback:L,piecache:$,onError:I,queryOptions:D,disableGlobalForm:z})=>{let H=h(),N=VU(),Z=O(),yU=G.useMemo(()=>SU.createAxiosDateTransformer({baseURL:H}),[H]),wU=G.useMemo(()=>LU(),[]),CU=G.useMemo(()=>H?HU(H):null,[H]),bU=G.useMemo(()=>H?NU(H,N):null,[H,N]),R=V(),{data:X,isLoading:n,error:F}=Y.useQuery({queryKey:["uiConfig",U.pathname+U.search,R?.initData],queryFn:async()=>{let B=new URLSearchParams(U.search);if(B.set("__pieroot","max"),R?.initData)B.set("initData",R.initData);let i="/api/content"+U.pathname+"?"+B.toString();if(Z)console.log("[PieRoot] Fetching UI configuration from:",i);let a=await yU.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:!!R?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(B)=>Math.min(1000*2**B,30000),...D}),s=AU(U.pathname,$,L);if(!H)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}),I?.(F),s;if(n||!X){if(Z)console.log("[PieRoot] Loading state:",{isLoading:n,hasUiConfiguration:!!X});return s}if(Z)console.log("[PieRoot] UI configuration loaded successfully:",X),console.log("[PieRoot] Rendering UI with configuration");return J.jsx($U.Provider,{value:wU,children:J.jsx(M.Provider,{value:CU,children:J.jsx(f.Provider,{value:bU,children:J.jsx(Q.Provider,{value:L??J.jsx(J.Fragment,{}),children:J.jsx(OU,{children:J.jsx(QU,{children:z?J.jsx(o,{uiConfig:X}):J.jsx("form",{id:"piedata_global_form",action:H+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:J.jsx(o,{uiConfig:X})})})})})})})})},zL=(U)=>{let L=G.useMemo(()=>new Y.QueryClient,[]),$=U.queryClient??L;return J.jsx(EU.Provider,{value:U.onNavigate,children:J.jsx(l.Provider,{value:U.config,children:J.jsx(T.Provider,{value:U.onError,children:J.jsx(Y.QueryClientProvider,{client:$,children:J.jsx($L,{...U})})})})})},kU=zL;
@@ -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 G}from"react";import{QueryClient as aU,QueryClientProvider as tU,useQuery as rU}from"@tanstack/react-query";import BU from"mitt";import{createContext as FU,useCallback as VL,useContext as ZL}from"react";var k=null;function m(){if(!k)k=BU();return k}var NU=FU(null);var d=NU;import{io as XU}from"socket.io-client";import{createContext as DU}from"react";var u=new Map,g=(U)=>{let L=u.get(U);if(L)return L;let z=XU(U,{autoConnect:!1,transports:["websocket"]});return u.set(U,z),z},OU=DU(null),K=OU;import{createContext as QU}from"react";import{Centrifuge as c}from"centrifuge";var l=new Map,h=(U,L)=>{if(!L)return null;let z=`${U}::${L}`,J=l.get(z);if(J)return J;async function I(){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 $=new c(L,{getToken:I});return l.set(z,$),$},qU=QU(null),W=qU;import{useContext as MU,useEffect as RU}from"react";import{useEffect as GU,useState as YU}from"react";var _=new Map,M=new Map;function R(U,L){let z=`${U}::${L}`,J=U?_.get(z):void 0,[I,$]=YU(J??null);return GU(()=>{if(!U)return;if(_.has(z)){$(_.get(z));return}let H=M.get(z);if(!H)H=fetch(U+`api/support/${L}`,{method:"GET"}).then((V)=>V.json()).then((V)=>{return _.set(z,V),M.delete(z),V}).catch((V)=>{throw M.delete(z),V}),M.set(z,H);let B=!1;return H.then((V)=>{if(!B)$(V)}).catch(()=>{}),()=>{B=!0}},[U,L,z]),I}import{createContext as KU,useContext as WU}from"react";var P=KU(null),T=()=>{let U=WU(P);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},S=()=>{let{apiServer:U}=T();return U},E=S,o=()=>{let{centrifugeServer:U}=T();return U};var N=()=>{let{enableRenderingLog:U}=T();return U};var p=()=>{let{pageProcessor:U}=T();return U};var _U=null;function n(){_U?.()}var TU=({children:U})=>{let L=MU(K),z=E(),J=R(z,"socketIO"),I=($)=>{if(typeof window<"u")window.sid=$.sid,n(),console.log(`SocketIO initialized: ${window.sid}`)};return RU(()=>{if(!L)return;let $=()=>{console.log("SocketIO connected")},H=(B)=>{console.log(`SocketIO disconnected: ${B}`),L.connect()};if(J)L.on("pieinit",I),L.on("connect",$),L.on("disconnect",H),L.connect();return()=>{if(J)L.off("pieinit",I),L.off("connect",$),L.off("disconnect",H),L.disconnect()}},[L,J]),U},s=TU;import{useContext as EU,useEffect as AU}from"react";var jU=({children:U})=>{let L=EU(W),z=E(),J=R(z,"centrifuge");return AU(()=>{if(!L)return;let I=()=>{console.log("Centrifuge connected")},$=(H)=>{console.log("Centrifuge disconnected:",H)};if(J)L.on("connected",I),L.on("disconnected",$),L.connect();return()=>{if(J)L.disconnect()}},[L,J]),U},i=jU;import{createContext as fU}from"react";import{jsx as SU,Fragment as PU}from"react/jsx-runtime";var kU=fU(SU(PU,{})),X=kU;import{createContext as wU}from"react";var yU=wU(void 0),D=yU;var a=Symbol.for("@swarm.ing/pieui:component-registry"),t=globalThis,bU=t[a]??(t[a]=new Map);var A=(U)=>{return bU.get(U)};import{useContext as r,memo as uU}from"react";import{Component as xU,Suspense as CU}from"react";import{jsx as dU}from"react/jsx-runtime";var vU=2,mU=400;class O extends xU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<vU){let L=mU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((z)=>({failed:!1,attempt:z.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 dU(CU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as w}from"react/jsx-runtime";function gU({uiConfig:U,setUiAjaxConfiguration:L}){let z=r(X),J=r(D),I=N();if(I)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 $=A(U.card);if(!$?.component){if(I)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return z}if(I)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let H=$.component,B=w(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if($.isLazy){if(I)console.log("[UI] Rendering lazy component with Suspense:",$.name);return w(O,{name:$.name,fallback:$.fallback?w($.fallback,{}):z,onError:J,children:B})}if(I)console.log("[UI] Rendering component directly:",$.name);return B}var y=uU(gU);import{createAxiosDateTransformer as eU}from"axios-date-transformer";import{useEffect as cU,useState as lU}from"react";var j=({onError:U}={})=>{let[L,z]=lU(null),J=p();return cU(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp;if(!I)return;try{I.ready?.()}catch($){U?.()}if(J==="telegram_expanded"&&(I.platform==="ios"||I.platform==="android"))I.expand();z(I)},[]),L},hU=()=>{let U=j();return[U?.initDataUnsafe,U?.initData]};import{createContext as oU}from"react";var pU=oU(void 0),e=pU;import{useContext as LU}from"react";import{createContext as nU}from"react";var sU=nU(null),UU=sU;import{jsx as f}from"react/jsx-runtime";function $U({uiConfig:U,setUiAjaxConfiguration:L}){let z=LU(X),J=LU(D),I=N();if(I)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 $=A(U.card);if(!$?.component){if(I)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return z}if(I)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(I)console.log("[UILoading] Rendering fallback for:",$.name);let V=$.fallback;return f(V,{})}if(I)console.log("[UILoading] No fallback, rendering full component:",$.name);let H=$.component,B=f(UU.Provider,{value:$U,children:f(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if($.isLazy)return f(O,{name:$.name,fallback:z,onError:J,children:B});return B}var zU=$U;import{jsx as iU}from"react/jsx-runtime";function IU(U,L,z){if(!L)return z;let J=U.replace(/^\//,""),I=L[J];if(!I)return z;return iU(zU,{uiConfig:I})}import{jsx as Z,Fragment as $L}from"react/jsx-runtime";var UL=({location:U,fallback:L,piecache:z,onError:J,queryOptions:I,disableGlobalForm:$})=>{let H=S(),B=o(),V=N(),HU=G(()=>eU({baseURL:H}),[H]),JU=G(()=>m(),[]),VU=G(()=>H?g(H):null,[H]),ZU=G(()=>H?h(H,B):null,[H,B]),Y=j({onError:J}),{data:Q,isLoading:b,error:F}=rU({queryKey:["uiConfig",U.pathname+U.search,Y?.initData],enabled:!!Y?.initData,queryFn:async()=>{let q=new URLSearchParams(U.search);if(q.set("__pieroot","telegram"),Y?.initData)q.set("initData",Y.initData);let C="/api/content"+U.pathname+"?"+q.toString();if(V)console.log("[PieRoot] Fetching UI configuration from:",C);let v=await HU.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:(q)=>Math.min(1000*2**q,30000),...I}),x=IU(U.pathname,z,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(b||!Q){if(V)console.log("[PieRoot] Loading state:",{isLoading:b,hasUiConfiguration:!!Q});return x}if(V)console.log("[PieRoot] UI configuration loaded successfully:",Q),console.log("[PieRoot] Rendering UI with configuration");return Z(d.Provider,{value:JU,children:Z(K.Provider,{value:VU,children:Z(W.Provider,{value:ZU,children:Z(X.Provider,{value:L??Z($L,{}),children:Z(s,{children:Z(i,{children:$?Z(y,{uiConfig:Q}):Z("form",{id:"piedata_global_form",action:H+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:Z(y,{uiConfig:Q})})})})})})})})},LL=(U)=>{let L=G(()=>new aU,[]),z=U.queryClient??L;return Z(e.Provider,{value:U.onNavigate,children:Z(P.Provider,{value:U.config,children:Z(D.Provider,{value:U.onError,children:Z(tU,{client:z,children:Z(UL,{...U})})})})})},zL=LL;export{j as useWebApp,hU as useInitData,zL as PieTelegramRoot};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ var xU=Object.create;var{getPrototypeOf:CU,defineProperty:K,getOwnPropertyNames:r,getOwnPropertyDescriptor:vU}=Object,e=Object.prototype.hasOwnProperty;var mU=(U,L,$)=>{$=U!=null?xU(CU(U)):{};let H=L||!U||!U.__esModule?K($,"default",{value:U,enumerable:!0}):$;for(let I of r(U))if(!e.call(H,I))K(H,I,{get:()=>U[I],enumerable:!0});return H},t=new WeakMap,dU=(U)=>{var L=t.get(U),$;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:!($=vU(U,H))||$.enumerable}));return t.set(U,L),L};var uU=(U,L)=>{for(var $ in L)K(U,$,{get:L[$],enumerable:!0,configurable:!0,set:(H)=>L[$]=()=>H})};var zL={};uU(zL,{useWebApp:()=>_,useInitData:()=>WU,PieTelegramRoot:()=>PU});module.exports=dU(zL);var Q=require("react"),q=require("@tanstack/react-query");var UU=mU(require("mitt")),T=require("react"),g=null;function LU(){if(!g)g=UU.default();return g}var gU=T.createContext(null);var $U=gU;var IU=require("socket.io-client"),HU=require("react"),zU=new Map,JU=(U)=>{let L=zU.get(U);if(L)return L;let $=IU.io(U,{autoConnect:!1,transports:["websocket"]});return zU.set(U,$),$},cU=HU.createContext(null),E=cU;var ZU=require("react"),c=require("centrifuge"),VU=new Map,BU=(U,L)=>{if(!L)return null;let $=`${U}::${L}`,H=VU.get($);if(H)return H;async function I(){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 z=new c.Centrifuge(L,{getToken:I});return VU.set($,z),z},lU=ZU.createContext(null),A=lU;var b=require("react");var k=require("react"),j=new Map,f=new Map;function P(U,L){let $=`${U}::${L}`,H=U?j.get($):void 0,[I,z]=k.useState(H??null);return k.useEffect(()=>{if(!U)return;if(j.has($)){z(j.get($));return}let J=f.get($);if(!J)J=fetch(U+`api/support/${L}`,{method:"GET"}).then((Z)=>Z.json()).then((Z)=>{return j.set($,Z),f.delete($),Z}).catch((Z)=>{throw f.delete($),Z}),f.set($,J);let B=!1;return J.then((Z)=>{if(!B)z(Z)}).catch(()=>{}),()=>{B=!0}},[U,L,$]),I}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},y=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 hU=null;function XU(){hU?.()}var oU=({children:U})=>{let L=b.useContext(E),$=y(),H=P($,"socketIO"),I=(z)=>{if(typeof window<"u")window.sid=z.sid,XU(),console.log(`SocketIO initialized: ${window.sid}`)};return b.useEffect(()=>{if(!L)return;let z=()=>{console.log("SocketIO connected")},J=(B)=>{console.log(`SocketIO disconnected: ${B}`),L.connect()};if(H)L.on("pieinit",I),L.on("connect",z),L.on("disconnect",J),L.connect();return()=>{if(H)L.off("pieinit",I),L.off("connect",z),L.off("disconnect",J),L.disconnect()}},[L,H]),U},DU=oU;var x=require("react");var pU=({children:U})=>{let L=x.useContext(A),$=y(),H=P($,"centrifuge");return x.useEffect(()=>{if(!L)return;let I=()=>{console.log("Centrifuge connected")},z=(J)=>{console.log("Centrifuge disconnected:",J)};if(H)L.on("connected",I),L.on("disconnected",z),L.connect();return()=>{if(H)L.disconnect()}},[L,H]),U},OU=pU;var QU=require("react"),C=require("react/jsx-runtime"),nU=QU.createContext(C.jsx(C.Fragment,{})),X=nU;var qU=require("react"),sU=qU.createContext(void 0),D=sU;var GU=Symbol.for("@swarm.ing/pieui:component-registry"),YU=globalThis,iU=YU[GU]??(YU[GU]=new Map);var v=(U)=>{return iU.get(U)};var W=require("react");var m=require("react"),KU=require("react/jsx-runtime"),aU=2,tU=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<aU){let L=tU*(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 KU.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 $=W.useContext(X),H=W.useContext(D),I=N();if(I)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 z=v(U.card);if(!z?.component){if(I)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(I)console.log("[UI] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let J=z.component,B=d.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(z.isLazy){if(I)console.log("[UI] Rendering lazy component with Suspense:",z.name);return d.jsx(O,{name:z.name,fallback:z.fallback?d.jsx(z.fallback,{}):$,onError:H,children:B})}if(I)console.log("[UI] Rendering component directly:",z.name);return B}var o=W.memo(rU);var kU=require("axios-date-transformer");var u=require("react");var _=({onError:U}={})=>{let[L,$]=u.useState(null),H=NU();return u.useEffect(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp;if(!I)return;try{I.ready?.()}catch(z){U?.()}if(H==="telegram_expanded"&&(I.platform==="ios"||I.platform==="android"))I.expand();$(I)},[]),L},WU=()=>{let U=_();return[U?.initDataUnsafe,U?.initData]};var _U=require("react"),eU=_U.createContext(void 0),MU=eU;var p=require("react");var RU=require("react"),UL=RU.createContext(null),TU=UL;var M=require("react/jsx-runtime");function EU({uiConfig:U,setUiAjaxConfiguration:L}){let $=p.useContext(X),H=p.useContext(D),I=N();if(I)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 z=v(U.card);if(!z?.component){if(I)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(I)console.log("[UILoading] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata,hasFallback:!!z.fallback});if(z.fallback){if(I)console.log("[UILoading] Rendering fallback for:",z.name);let Z=z.fallback;return M.jsx(Z,{})}if(I)console.log("[UILoading] No fallback, rendering full component:",z.name);let J=z.component,B=M.jsx(TU.Provider,{value:EU,children:M.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(z.isLazy)return M.jsx(O,{name:z.name,fallback:$,onError:H,children:B});return B}var AU=EU;var fU=require("react/jsx-runtime");function jU(U,L,$){if(!L)return $;let H=U.replace(/^\//,""),I=L[H];if(!I)return $;return fU.jsx(AU,{uiConfig:I})}var V=require("react/jsx-runtime"),LL=({location:U,fallback:L,piecache:$,onError:H,queryOptions:I,disableGlobalForm:z})=>{let J=h(),B=FU(),Z=N(),SU=Q.useMemo(()=>kU.createAxiosDateTransformer({baseURL:J}),[J]),wU=Q.useMemo(()=>LU(),[]),yU=Q.useMemo(()=>J?JU(J):null,[J]),bU=Q.useMemo(()=>J?BU(J,B):null,[J,B]),R=_({onError:H}),{data:G,isLoading:n,error:F}=q.useQuery({queryKey:["uiConfig",U.pathname+U.search,R?.initData],enabled:!!R?.initData,queryFn:async()=>{let Y=new URLSearchParams(U.search);if(Y.set("__pieroot","telegram"),R?.initData)Y.set("initData",R.initData);let i="/api/content"+U.pathname+"?"+Y.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},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Y)=>Math.min(1000*2**Y,30000),...I}),s=jU(U.pathname,$,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||!G){if(Z)console.log("[PieRoot] Loading state:",{isLoading:n,hasUiConfiguration:!!G});return s}if(Z)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return V.jsx($U.Provider,{value:wU,children:V.jsx(E.Provider,{value:yU,children:V.jsx(A.Provider,{value:bU,children:V.jsx(X.Provider,{value:L??V.jsx(V.Fragment,{}),children:V.jsx(DU,{children:V.jsx(OU,{children:z?V.jsx(o,{uiConfig:G}):V.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:V.jsx(o,{uiConfig:G})})})})})})})})},$L=(U)=>{let L=Q.useMemo(()=>new q.QueryClient,[]),$=U.queryClient??L;return V.jsx(MU.Provider,{value:U.onNavigate,children:V.jsx(l.Provider,{value:U.config,children:V.jsx(D.Provider,{value:U.onError,children:V.jsx(q.QueryClientProvider,{client:$,children:V.jsx(LL,{...U})})})})})},PU=$L;
@@ -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"}
@@ -1,12 +1,7 @@
1
1
  import { ComponentMetadata, ComponentRegistration } from '../types';
2
2
  import { ComponentType } from 'react';
3
- /**
4
- * Central in-memory registry of PieUI components keyed by their name. Every
5
- * call to {@link registerPieComponent} writes into this `Map`, and the
6
- * dynamic UI renderer reads from it at render time to resolve a `card` name
7
- * to a concrete React component.
8
- */
9
- export declare const registry: Map<string, ComponentRegistration<any>>;
3
+ type RegistryMap = Map<string, ComponentRegistration<any>>;
4
+ export declare const registry: RegistryMap;
10
5
  /**
11
6
  * Registers a PieUI component so it can be rendered by name from a dynamic
12
7
  * UI configuration.
@@ -58,4 +53,33 @@ export declare const getAllRegisteredComponents: () => string[];
58
53
  * Returns the number of components currently in the registry.
59
54
  */
60
55
  export declare const getRegistrySize: () => number;
56
+ /**
57
+ * Names of every registered code-split (lazy) component — those registered
58
+ * with a `loader`. Handy for driving a prefetch pass.
59
+ */
60
+ export declare const getLazyComponentNames: () => string[];
61
+ /**
62
+ * Warm a single lazy component's chunk by name, so a later render resolves
63
+ * synchronously (no Suspense fallback flash). No-op for unknown names or
64
+ * eager components. Shares the same module cache as the render-time
65
+ * `React.lazy`, so the import runs at most once.
66
+ *
67
+ * @returns The in-flight module promise, or `undefined` when there's nothing
68
+ * to preload.
69
+ */
70
+ export declare const preloadComponent: (name: string) => Promise<unknown> | undefined;
71
+ /**
72
+ * Background-warm every registered lazy chunk so the first navigation to each
73
+ * screen resolves its card from cache instead of waiting on the network.
74
+ * Idempotent (only the first call does anything). Browser-only and
75
+ * connection-aware: it yields to idle time, warms one chunk at a time so it
76
+ * never competes with what the user is waiting on, and skips entirely on
77
+ * metered / very slow connections. Errors are swallowed — a failed warm-up
78
+ * just means the chunk loads on demand later.
79
+ *
80
+ * Call this once after the first screen has settled (e.g. in an effect on the
81
+ * landing screen).
82
+ */
83
+ export declare const prefetchLazyComponents: () => void;
84
+ export {};
61
85
  //# 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;AAmBrC,KAAK,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAA;AAO1D,eAAO,MAAM,QAAQ,EAAE,WACiD,CAAA;AAwCxE;;;;;;;;;;;;;;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.1",
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
  }