@swarm.ing/pieui 2.0.33 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/index.d.ts +12 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.esm.js +2 -0
- package/dist/agent/index.js +2 -0
- package/dist/cli.js +358 -95
- package/dist/code/args.d.ts +1 -1
- package/dist/code/args.d.ts.map +1 -1
- package/dist/code/commands/createPieApp.d.ts.map +1 -1
- package/dist/code/commands/registry.d.ts +8 -0
- package/dist/code/commands/registry.d.ts.map +1 -0
- package/dist/code/types.d.ts +5 -0
- package/dist/code/types.d.ts.map +1 -1
- package/dist/components/Common/AutoRedirectCard/ui/AutoRedirectCard.d.ts +1 -1
- package/dist/components/Common/AutoRedirectCard/ui/AutoRedirectCard.d.ts.map +1 -1
- package/dist/components/Common/CloudStorageCard/ui/CloudStorageCard.d.ts +1 -1
- package/dist/components/Common/CloudStorageCard/ui/CloudStorageCard.d.ts.map +1 -1
- package/dist/components/Common/DeviceStorageCard/ui/DeviceStorageCard.d.ts +1 -1
- package/dist/components/Common/DeviceStorageCard/ui/DeviceStorageCard.d.ts.map +1 -1
- package/dist/components/Common/HTMLEmbedCard/ui/HTMLEmbedCard.d.ts +1 -1
- package/dist/components/Common/HTMLEmbedCard/ui/HTMLEmbedCard.d.ts.map +1 -1
- package/dist/components/Common/HiddenCard/ui/HiddenCard.d.ts +1 -1
- package/dist/components/Common/HiddenCard/ui/HiddenCard.d.ts.map +1 -1
- package/dist/components/Common/IOEventsCard/ui/IOEventsCard.d.ts +1 -1
- package/dist/components/Common/IOEventsCard/ui/IOEventsCard.d.ts.map +1 -1
- package/dist/components/Common/SecureStorageCard/ui/SecureStorageCard.d.ts +1 -1
- package/dist/components/Common/SecureStorageCard/ui/SecureStorageCard.d.ts.map +1 -1
- package/dist/components/Common/SessionStorageCard/ui/SessionStorageCard.d.ts +1 -1
- package/dist/components/Common/SessionStorageCard/ui/SessionStorageCard.d.ts.map +1 -1
- package/dist/components/Containers/AjaxGroupCard/ui/AjaxGroupCard.d.ts +1 -1
- package/dist/components/Containers/AjaxGroupCard/ui/AjaxGroupCard.d.ts.map +1 -1
- package/dist/components/Containers/BoxCard/ui/BoxCard.d.ts +1 -1
- package/dist/components/Containers/BoxCard/ui/BoxCard.d.ts.map +1 -1
- package/dist/components/Containers/OneOfCard/ui/OneOfCard.d.ts +1 -1
- package/dist/components/Containers/OneOfCard/ui/OneOfCard.d.ts.map +1 -1
- package/dist/components/Containers/SequenceCard/ui/SequenceCard.d.ts +1 -1
- package/dist/components/Containers/SequenceCard/ui/SequenceCard.d.ts.map +1 -1
- package/dist/components/Containers/UnionCard/ui/UnionCard.d.ts +1 -1
- package/dist/components/Containers/UnionCard/ui/UnionCard.d.ts.map +1 -1
- package/dist/components/LazyBoundary/index.d.ts +43 -0
- package/dist/components/LazyBoundary/index.d.ts.map +1 -0
- package/dist/components/PieBaseRoot/index.d.ts +1 -1
- package/dist/components/PieBaseRoot/index.d.ts.map +1 -1
- package/dist/components/PieCard/index.d.ts +1 -1
- package/dist/components/PieCard/index.d.ts.map +1 -1
- package/dist/components/PieMaxRoot/index.d.ts.map +1 -1
- package/dist/components/PiePreviewRoot/index.d.ts +37 -0
- package/dist/components/PiePreviewRoot/index.d.ts.map +1 -0
- package/dist/components/PieRoot/index.d.ts +1 -1
- package/dist/components/PieRoot/index.d.ts.map +1 -1
- package/dist/components/PieRoot/types/index.d.ts +19 -3
- package/dist/components/PieRoot/types/index.d.ts.map +1 -1
- package/dist/components/PieTelegramRoot/index.d.ts.map +1 -1
- package/dist/components/UI/index.d.ts +1 -1
- package/dist/components/UI/index.d.ts.map +1 -1
- package/dist/components/UILoading/index.d.ts +1 -1
- package/dist/components/UILoading/index.d.ts.map +1 -1
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/index.d.ts +4 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +2 -2
- package/dist/index.js +2 -2
- package/dist/max/index.d.ts +12 -0
- package/dist/max/index.d.ts.map +1 -0
- package/dist/max/index.esm.js +2 -0
- package/dist/max/index.js +2 -0
- package/dist/storybook/index.d.ts +3 -3
- package/dist/storybook/index.d.ts.map +1 -1
- package/dist/telegram/index.d.ts +12 -0
- package/dist/telegram/index.d.ts.map +1 -0
- package/dist/telegram/index.esm.js +2 -0
- package/dist/telegram/index.js +2 -0
- package/dist/util/lazy.d.ts.map +1 -1
- package/dist/util/lazyError.d.ts +9 -0
- package/dist/util/lazyError.d.ts.map +1 -0
- package/dist/util/registry.d.ts +28 -0
- package/dist/util/registry.d.ts.map +1 -1
- package/package.json +33 -11
package/dist/components/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var Ur=Object.create;var{getPrototypeOf:Sr,defineProperty:W,getOwnPropertyNames:no,getOwnPropertyDescriptor:Ir}=Object,go=Object.prototype.hasOwnProperty;var To=(o,r,C)=>{C=o!=null?Ur(Sr(o)):{};let f=r||!o||!o.__esModule?W(C,"default",{value:o,enumerable:!0}):C;for(let p of no(o))if(!go.call(f,p))W(f,p,{get:()=>o[p],enumerable:!0});return f},Ao=new WeakMap,lr=(o)=>{var r=Ao.get(o),C;if(r)return r;if(r=W({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")no(o).map((f)=>!go.call(r,f)&&W(r,f,{get:()=>o[f],enumerable:!(C=Ir(o,f))||C.enumerable}));return Ao.set(o,r),r};var Pr=(o,r)=>{for(var C in r)W(o,C,{get:r[C],enumerable:!0,configurable:!0,set:(f)=>r[C]=()=>f})};var br={};Pr(br,{UnionCard:()=>Yo,UILoading:()=>Go,UI:()=>z,SessionStorageCard:()=>jo,SequenceCard:()=>Xo,SecureStorageCard:()=>rr,PieCard:()=>w,OneOfCard:()=>ur,IOEventsCard:()=>No,HiddenCard:()=>ko,HTMLEmbedCard:()=>Ko,DeviceStorageCard:()=>so,CloudStorageCard:()=>eo,BoxCard:()=>mr,AutoRedirectCard:()=>Eo,AjaxGroupCard:()=>pr});module.exports=lr(br);var $=require("react");var t=require("react"),wr=t.createContext(null),Ar=()=>{let o=t.useContext(wr);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var Y=()=>{let{enableRenderingLog:o}=Ar();return o},Ho=Y;var Oo=require("react"),nr=require("centrifuge");var gr=Oo.createContext(null),Do=gr;var Tr=require("socket.io-client"),Zo=require("react");var Hr=Zo.createContext(null),Lo=Hr;var Or=To(require("mitt")),x=require("react");var Dr=x.createContext(null);var E=Dr;var G=require("react/jsx-runtime"),Zr=({card:o,data:r,children:C,useSocketioSupport:f=!1,useCentrifugeSupport:p=!1,useMittSupport:i=!1,centrifugeChannel:d=void 0,methods:S=void 0,stored:U=void 0})=>{let m=Ho(),u=$.useRef(S);if(u.current=S,m)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:f,centrifuge:p,mitt:i,centrifugeChannel:d}),console.log("[PieCard] Methods:",S?Object.keys(S):"none"),console.log("[PieCard] Has children:",!!C);let P=$.useContext(Lo),n=$.useContext(Do),l=$.useContext(E);if($.useEffect(()=>{if(!P||!f||!u.current||!r.name){if(m&&f)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!P,useSocketioSupport:f,hasMethods:!!u.current,hasDataName:!!r?.name});return}let O=Object.keys(u.current??{}).map((g)=>{let T=`pie${g}_${r.name}`;if(m)console.log(`[PieCard] Socket.IO registering event: ${T}`);let L=(V)=>{u.current?.[g]?.(V)};return P.on(T,L),[T,L]});return()=>{O.forEach(([g,T])=>{if(m)console.log(`[PieCard] Socket.IO unregistering event: ${g}`);P.off(g,T)})}},[P,r.name,f]),$.useEffect(()=>{if(!n||!p||!d||!r.name){if(m&&p)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!n,useCentrifugeSupport:p,hasCentrifugeChannel:!!d,hasMethods:!!u.current,hasDataName:!!r?.name});return}let O=Object.keys(u.current??{}).map((g)=>{let T=`pie${g}_${r.name}_${d}`;if(m)console.log(`[PieCard] Centrifuge subscribing to channel: ${T}`);let L=n.newSubscription(T);return L.on("publication",(V)=>{if(m)console.log(`[PieCard] Centrifuge received data on ${T}:`,V.data);u.current?.[g]?.(V.data)}),L.subscribe(),L});return()=>{O.forEach((g)=>{if(m)console.log("[PieCard] Centrifuge unsubscribing from channel");g.unsubscribe(),n.removeSubscription(g)})}},[n,d,r.name,p]),$.useEffect(()=>{if(!l||!i||!r.name){if(m&&i)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!l,useMittSupport:i,hasMethods:!!u.current,hasDataName:!!r?.name});return}let I=Object.keys(u.current??{}),O={};return I.forEach((g)=>{let T=`pie${g}_${r.name}`,L=(V)=>{if(m)console.log(`[PieCard] Mitt registering event: ${T}`);u.current?.[g]?.(V)};O[T]=L,l.on(T,L)}),()=>{Object.entries(O).forEach(([g,T])=>{if(m)console.log(`[PieCard] Mitt unregistering event: ${g}`);l.off(g,T)})}},[l,r.name,i]),m)console.log("[PieCard] Rendering complete, returning children");if(U!==void 0)return G.jsxs(G.Fragment,{children:[G.jsx("input",{type:"hidden",name:r.name,value:JSON.stringify(U)}),C]});return C},w=Zr;var zo=require("react"),po=new Map;function Bo(o,r){return zo.lazy(()=>{if(po.has(r))return po.get(r);let C=o().then((f)=>f);return po.set(r,C),C})}var Vo=new Map,Lr=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=Bo(r.loader,o.name),r.loader=void 0,r.isLazy=!0;return r};function A(o){let r=Lr(o);return Vo.set(r.name,r),r.component}var b=(o)=>{return Vo.get(o)};var F=require("react");var $o=require("react"),N=require("react/jsx-runtime"),zr=$o.createContext(N.jsx(N.Fragment,{})),a=zr;var c=require("react/jsx-runtime");function Br({uiConfig:o,setUiAjaxConfiguration:r}){let C=F.useContext(a),f=Y();if(f)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let p=b(o.card);if(!p?.component){if(f)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return C}if(f)console.log("[UI] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata});let i=p.component,d=c.jsx(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(p.isLazy){if(f)console.log("[UI] Rendering lazy component with Suspense:",p.name);return c.jsx(F.Suspense,{fallback:p.fallback?c.jsx(p.fallback,{}):C,children:d},`${p.name}`)}if(f)console.log("[UI] Rendering component directly:",p.name);return d}var z=F.memo(Br);var j=require("react");var ao=require("react"),Vr=ao.createContext(null),B=Vr;var y=require("react/jsx-runtime");function qo({uiConfig:o,setUiAjaxConfiguration:r}){let C=j.useContext(a),f=Y();if(f)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let p=b(o.card);if(!p?.component){if(f)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return C}if(f)console.log("[UILoading] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata,hasFallback:!!p.fallback});if(p.fallback){if(f)console.log("[UILoading] Rendering fallback for:",p.name);let S=p.fallback;return y.jsx(S,{})}if(f)console.log("[UILoading] No fallback, rendering full component:",p.name);let i=p.component,d=y.jsx(B.Provider,{value:qo,children:y.jsx(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(p.isLazy)return y.jsx(j.Suspense,{fallback:C,children:d},`${p.name}`);return d}var Go=qo;var Fo=require("react");var v=require("react/jsx-runtime"),$r=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,sx:p}=o,i=Fo.useContext(B)??z;return v.jsx(w,{card:f,data:o,children:v.jsx("div",{style:p,id:f,children:r.map((d,S)=>{return v.jsx(i,{uiConfig:d,setUiAjaxConfiguration:C},`children-${S}`)})})})},Jo=$r;var Xo=A({name:"SequenceCard",component:Jo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Qo=require("react");var Co=require("react/jsx-runtime"),ar=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f}=o,p=Qo.useContext(B)??z;return Co.jsx(w,{card:f,data:o,children:r.map((i,d)=>{return Co.jsx(p,{uiConfig:i,setUiAjaxConfiguration:C},`children-${d}`)})})},Wo=ar;var Yo=A({name:"UnionCard",component:Wo,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var s=require("react"),yo=To(require("html-react-parser"));var Z=require("react");function qr(){let o=new AudioContext,r=o.createOscillator(),C=r.connect(o.createMediaStreamDestination());r.start();let f=C.stream.getAudioTracks()[0];return f.enabled=!1,f}function mo(o=null,r){let[C,f]=Z.useState(!1),p=Z.useRef(null),i=Z.useRef(null),d=Z.useRef(null),S=Z.useCallback(async(P,n=!0)=>{if(p.current)U();let l=new RTCPeerConnection;if(l.onconnectionstatechange=()=>{if(l.connectionState==="connected")f(!0);else if(["disconnected","failed","closed"].includes(l.connectionState))f(!1)},l.ontrack=(H)=>{if(o)o.srcObject=H.streams[0]},n){let H=await navigator.mediaDevices.getUserMedia({audio:!0});l.addTrack(H.getTracks()[0],H)}else{let H=qr();l.addTrack(H)}let I=l.createDataChannel("oai-events");i.current=I,d.current=new Promise((H)=>{I.addEventListener("open",()=>{H()})});let O=await l.createOffer();await l.setLocalDescription(O);let V=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:O.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await l.setRemoteDescription({type:"answer",sdp:V}),p.current=l,await d.current},[o]),U=Z.useCallback(()=>{let P=i.current;if(P)P.close();p.current?.getSenders()?.forEach((n)=>n.track?.stop()),p.current?.close(),f(!1),p.current=null,i.current=null,d.current=null},[o]),m=Z.useCallback((P)=>{let n=i.current;if(!n){console.error("Data channel is not ready",P);return}let l=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),n.send(JSON.stringify(P)),!P.timestamp)P.timestamp=l;r?.(P)},[r,o]),u=Z.useCallback((P)=>{if(!i.current){console.error("Data channel is not ready");return}let l=()=>{m({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),m({type:"response.create"})};if(d.current)d.current.then(l);else l()},[r,o]);return Z.useEffect(()=>{let P=i.current;if(!P)return;let n=(l)=>{let I=JSON.parse(l.data);if(!I.timestamp)I.timestamp=new Date().toLocaleTimeString();r?.(I)};return P.addEventListener("message",n),()=>{P.removeEventListener("message",n)}},[r,o]),{isSessionActive:C,startSession:S,stopSession:U,sendTextMessage:u}}var Ro=require("react/jsx-runtime"),Gr=({data:o})=>{let{html:r,useSocketioSupport:C,useCentrifugeSupport:f,useMittSupport:p,centrifugeChannel:i}=o,[d,S]=s.useState(r),{isSessionActive:U,startSession:m,sendTextMessage:u}=mo(null,(I)=>{if(console.log(I.type,I.type==="response.output_text.delta"&&I.delta),I.type==="response.output_text.delta"&&I.delta)S((O)=>O+I.delta)});return s.useEffect(()=>{S(r)},[r]),Ro.jsx(w,{card:"HTMLEmbedCard",data:o,methods:{update:(I)=>{S(I.value)},generateUsingAI:async(I)=>{try{if(!U&&I.token)await m(I.token,!1);u(I.prompt)}catch(O){console.error("Failed to generate using AI",O)}},initializeAI:async(I)=>{if(!U&&I.token)await m(I.token,!1)}},useCentrifugeSupport:f,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:i,children:yo.default(d)})},Mo=Gr;var Ko=A({name:"HTMLEmbedCard",component:Mo,metadata:{author:"Swarm.ing"}});var h=require("react");var io=require("react/jsx-runtime"),Fr=({data:o})=>{let{name:r,value:C,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:d}=o,[S,U]=h.useState(C);return h.useEffect(()=>{U(C)},[C]),io.jsx(w,{card:"HiddenCard",data:o,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:d,methods:{update:({value:m})=>{U(m)}},children:io.jsx("input",{type:"hidden",id:r,name:r,value:S})})},_o=Fr;var ko=A({name:"HiddenCard",component:_o,metadata:{author:"Swarm.ing"}});var M=require("react");var to=require("react"),Jr=to.createContext(void 0),J=Jr;var e=require("react/jsx-runtime"),Xr=({data:o})=>{let{url:r}=o,C=M.useContext(J),f=M.useContext(a);return M.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else C?.(r)},[r,C]),e.jsx(e.Fragment,{children:f})},xo=Xr;var Eo=A({name:"AutoRedirectCard",component:xo,metadata:{author:"Swarm.ing"}});var q=require("react-toastify"),oo=require("react-toastify");var Q=require("react");var X=require("react/jsx-runtime"),Qr={bounce:q.Bounce,slide:q.Slide,zoom:q.Zoom,flip:q.Flip},Wr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?Qr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};oo.toast(o.message,r)},Yr=(o)=>{console.log("Log event",o)},yr=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(f){console.error("[IOEventsCard] Failed to show notification",f)}},C=window.Notification.permission;if(C==="granted"){r();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((f)=>{if(f==="granted")r()})},Mr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p}=o,i=Q.useContext(J),d=Q.useRef(i);d.current=i;let S=Q.useMemo(()=>({alert:Wr,log:Yr,push:yr,redirect:(U)=>{if(U.to){let m=U.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()},reload:(U)=>{if(U.to){let m=U.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()}}),[]);return X.jsx(X.Fragment,{children:X.jsx(w,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p,methods:S,children:X.jsx(oo.ToastContainer,{})})})},bo=Mr;var No=A({name:"IOEventsCard",component:bo,metadata:{author:"Swarm.ing"}});var R=require("react");var uo=require("react/jsx-runtime"),Rr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=R.useState(f);return R.useEffect(()=>{m(f)},[f]),R.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(C,U)},[C,U]),uo.jsx(w,{card:"SessionStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{sessionStorage.removeItem(C),m("")}},children:uo.jsx("input",{type:"hidden",id:r,name:r,value:U})})},co=Rr;var jo=A({name:"SessionStorageCard",component:co,metadata:{author:"PieData"}});var K=require("react");var Uo=require("react/jsx-runtime"),Kr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=K.useState(f);return K.useEffect(()=>{m(f)},[f]),K.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(C,U)},[C,U]),Uo.jsx(w,{card:"DeviceStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{localStorage.removeItem(C),m("")}},children:Uo.jsx("input",{type:"hidden",id:r,name:r,value:U})})},vo=Kr;var so=A({name:"DeviceStorageCard",component:vo,metadata:{author:"PieData"}});var _=require("react");var So=require("react/jsx-runtime"),_r=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=_.useState(f);return _.useEffect(()=>{m(f)},[f]),_.useEffect(()=>{if(typeof window>"u")return;let u=window.Telegram?.WebApp?.CloudStorage;if(!u)return;u.setItem(C,U)},[C,U]),So.jsx(w,{card:"CloudStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{let u=window.Telegram?.WebApp?.CloudStorage;if(u)u.removeItem(C);m("")}},children:So.jsx("input",{type:"hidden",id:r,name:r,value:U})})},ho=_r;var eo=A({name:"CloudStorageCard",component:ho,metadata:{author:"PieData"}});var k=require("react");var Io=require("react/jsx-runtime"),kr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=k.useState(f);return k.useEffect(()=>{m(f)},[f]),k.useEffect(()=>{if(typeof window>"u")return;let u=window.Telegram?.WebApp?.SecureStorage;if(!u)return;u.setItem(C,U)},[C,U]),Io.jsx(w,{card:"SecureStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{let u=window.Telegram?.WebApp?.SecureStorage;if(u)u.removeItem(C);m("")}},children:Io.jsx("input",{type:"hidden",id:r,name:r,value:U})})},or=kr;var rr=A({name:"SecureStorageCard",component:or,metadata:{author:"PieData"}});var D=require("react");var lo=require("react/jsx-runtime"),tr=({data:o,content:r})=>{let{useLoader:C,noReturn:f,returnType:p,useSocketioSupport:i,useCentrifugeSupport:d,useMittSupport:S,centrifugeChannel:U}=o,m=D.useContext(a),u=D.useContext(B)??z,[P,n]=D.useState(!1),[l,I]=D.useState(null),O=D.useRef(r),g=D.useContext(E),T=D.useCallback((H)=>{if(H===null)n(!0);else if(n(!1),!f)O.current=H;if(!f)I(H)},[f]),L=D.useCallback((H)=>{O.current=H.content,I(H.content)},[]),V=D.useCallback((H)=>{if(H===null)n(!0);else if(n(!1),!f)for(let wo of H)g?.emit(wo.name,wo.data)},[f,g]);if(D.useEffect(()=>{I(r),n(!1)},[r]),!l&&C)return m;return lo.jsx(w,{card:"AjaxGroupCard",data:o,methods:{changeContent:L},useSocketioSupport:i,useCentrifugeSupport:d,useMittSupport:S,centrifugeChannel:U,children:lo.jsx(u,{uiConfig:l??O.current,setUiAjaxConfiguration:p==="events"?V:T})})},fr=tr;var pr=A({name:"AjaxGroupCard",component:fr,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var Po=require("react");var ro=require("react/jsx-runtime"),xr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,url:p,sx:i}=o,d=Po.useContext(J),S=Po.useContext(B)??z;return ro.jsx(w,{card:f,data:o,children:ro.jsx("div",{style:i,id:f,onClick:(m)=>{if(p)if(m.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(p))window.location.href=p;else d?.(p)},children:ro.jsx(S,{setUiAjaxConfiguration:C,uiConfig:r})})})},Cr=xr;var mr=A({name:"BoxCard",component:Cr,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var dr=require("react");var fo=require("react/jsx-runtime"),Er=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,sx:p}=o,i=dr.useContext(B)??z;return fo.jsx(w,{card:f,data:o,children:fo.jsx("div",{style:p,id:f,children:r.map((d,S)=>{return fo.jsx(i,{uiConfig:d,setUiAjaxConfiguration:C},`children-${S}`)})})})},ir=Er;var ur=A({name:"OneOfCard",component:ir,metadata:{author:"Swarm.ing",description:"Different variants"}});
|
|
2
|
+
var Tr=Object.create;var{getPrototypeOf:ir,defineProperty:K,getOwnPropertyNames:Do,getOwnPropertyDescriptor:Hr}=Object,zo=Object.prototype.hasOwnProperty;var Zo=(o,r,p)=>{p=o!=null?Tr(ir(o)):{};let f=r||!o||!o.__esModule?K(p,"default",{value:o,enumerable:!0}):p;for(let U of Do(o))if(!zo.call(f,U))K(f,U,{get:()=>o[U],enumerable:!0});return f},Lo=new WeakMap,Or=(o)=>{var r=Lo.get(o),p;if(r)return r;if(r=K({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")Do(o).map((f)=>!zo.call(r,f)&&K(r,f,{get:()=>o[f],enumerable:!(p=Hr(o,f))||p.enumerable}));return Lo.set(o,r),r};var Lr=(o,r)=>{for(var p in r)K(o,p,{get:r[p],enumerable:!0,configurable:!0,set:(f)=>r[p]=()=>f})};var rf={};Lr(rf,{UnionCard:()=>yo,UILoading:()=>Ko,UI:()=>l,SessionStorageCard:()=>or,SequenceCard:()=>_o,SecureStorageCard:()=>ur,PieCard:()=>T,OneOfCard:()=>wr,IOEventsCard:()=>so,HiddenCard:()=>ao,HTMLEmbedCard:()=>jo,DeviceStorageCard:()=>fr,CloudStorageCard:()=>Cr,BoxCard:()=>dr,AutoRedirectCard:()=>to,AjaxGroupCard:()=>Ir});module.exports=Or(rf);var $=require("react");var j=require("react"),Dr=j.createContext(null),zr=()=>{let o=j.useContext(Dr);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var M=()=>{let{enableRenderingLog:o}=zr();return o},go=M;var Bo=require("react"),Zr=require("centrifuge");var gr=Bo.createContext(null),lo=gr;var Br=require("socket.io-client"),Vo=require("react");var lr=Vo.createContext(null),qo=lr;var Vr=Zo(require("mitt")),n=require("react");var qr=n.createContext(null);var a=qr;var J=require("react/jsx-runtime"),$r=({card:o,data:r,children:p,useSocketioSupport:f=!1,useCentrifugeSupport:U=!1,useMittSupport:C=!1,centrifugeChannel:m=void 0,methods:d=void 0,stored:S=void 0})=>{let u=go(),I=$.useRef(d);if(I.current=d,u)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:f,centrifuge:U,mitt:C,centrifugeChannel:m}),console.log("[PieCard] Methods:",d?Object.keys(d):"none"),console.log("[PieCard] Has children:",!!p);let w=$.useContext(qo),H=$.useContext(lo),A=$.useContext(a);if($.useEffect(()=>{if(!w||!f||!I.current||!r.name){if(u&&f)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!w,useSocketioSupport:f,hasMethods:!!I.current,hasDataName:!!r?.name});return}let z=Object.keys(I.current??{}).map((O)=>{let L=`pie${O}_${r.name}`;if(u)console.log(`[PieCard] Socket.IO registering event: ${L}`);let B=(q)=>{I.current?.[O]?.(q)};return w.on(L,B),[L,B]});return()=>{z.forEach(([O,L])=>{if(u)console.log(`[PieCard] Socket.IO unregistering event: ${O}`);w.off(O,L)})}},[w,r.name,f]),$.useEffect(()=>{if(!H||!U||!m||!r.name){if(u&&U)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!H,useCentrifugeSupport:U,hasCentrifugeChannel:!!m,hasMethods:!!I.current,hasDataName:!!r?.name});return}let z=Object.keys(I.current??{}).map((O)=>{let L=`pie${O}_${r.name}_${m}`;if(u)console.log(`[PieCard] Centrifuge subscribing to channel: ${L}`);let B=H.newSubscription(L);return B.on("publication",(q)=>{if(u)console.log(`[PieCard] Centrifuge received data on ${L}:`,q.data);I.current?.[O]?.(q.data)}),B.subscribe(),B});return()=>{z.forEach((O)=>{if(u)console.log("[PieCard] Centrifuge unsubscribing from channel");O.unsubscribe(),H.removeSubscription(O)})}},[H,m,r.name,U]),$.useEffect(()=>{if(!A||!C||!r.name){if(u&&C)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!A,useMittSupport:C,hasMethods:!!I.current,hasDataName:!!r?.name});return}let P=Object.keys(I.current??{}),z={};return P.forEach((O)=>{let L=`pie${O}_${r.name}`,B=(q)=>{if(u)console.log(`[PieCard] Mitt registering event: ${L}`);I.current?.[O]?.(q)};z[L]=B,A.on(L,B)}),()=>{Object.entries(z).forEach(([O,L])=>{if(u)console.log(`[PieCard] Mitt unregistering event: ${O}`);A.off(O,L)})}},[A,r.name,C]),u)console.log("[PieCard] Rendering complete, returning children");if(S!==void 0)return J.jsxs(J.Fragment,{children:[J.jsx("input",{type:"hidden",name:r.name,value:JSON.stringify(S)}),p]});return p},T=$r;var $o=require("react"),R=new Map;function Gr(o,r){return r.catch(()=>{if(R.get(o)===r)R.delete(o)}),R.set(o,r),r}function Go(o,r){return $o.lazy(()=>{if(R.has(r))return R.get(r);return Gr(r,o().then((p)=>p))})}var Fo=new Map,Fr=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=Go(r.loader,o.name),r.isLazy=!0;return r};function i(o){let r=Fr(o);return Fo.set(r.name,r),r.component}var c=(o)=>{return Fo.get(o)};var _=require("react");var Jo=require("react"),v=require("react/jsx-runtime"),Jr=Jo.createContext(v.jsx(v.Fragment,{})),G=Jr;var Qo=require("react"),Qr=Qo.createContext(void 0),t=Qr;var h=require("react"),Wo=require("react/jsx-runtime"),Wr=2,Xr=400;class Q extends h.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<Wr){let r=Xr*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((p)=>({failed:!1,attempt:p.attempt+1}))},r)}}componentDidUpdate(o){if(o.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 Wo.jsx(h.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var s=require("react/jsx-runtime");function Yr({uiConfig:o,setUiAjaxConfiguration:r}){let p=_.useContext(G),f=_.useContext(t),U=M();if(U)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let C=c(o.card);if(!C?.component){if(U)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return p}if(U)console.log("[UI] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata});let m=C.component,d=s.jsx(m,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(C.isLazy){if(U)console.log("[UI] Rendering lazy component with Suspense:",C.name);return s.jsx(Q,{name:C.name,fallback:C.fallback?s.jsx(C.fallback,{}):p,onError:f,children:d})}if(U)console.log("[UI] Rendering component directly:",C.name);return d}var l=_.memo(Yr);var uo=require("react");var Xo=require("react"),Kr=Xo.createContext(null),V=Kr;var E=require("react/jsx-runtime");function Yo({uiConfig:o,setUiAjaxConfiguration:r}){let p=uo.useContext(G),f=uo.useContext(t),U=M();if(U)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let C=c(o.card);if(!C?.component){if(U)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return p}if(U)console.log("[UILoading] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata,hasFallback:!!C.fallback});if(C.fallback){if(U)console.log("[UILoading] Rendering fallback for:",C.name);let S=C.fallback;return E.jsx(S,{})}if(U)console.log("[UILoading] No fallback, rendering full component:",C.name);let m=C.component,d=E.jsx(V.Provider,{value:Yo,children:E.jsx(m,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(C.isLazy)return E.jsx(Q,{name:C.name,fallback:p,onError:f,children:d});return d}var Ko=Yo;var Mo=require("react");var e=require("react/jsx-runtime"),Mr=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f,sx:U}=o,C=Mo.useContext(V)??l;return e.jsx(T,{card:f,data:o,children:e.jsx("div",{style:U,id:f,children:r.map((m,d)=>{return e.jsx(C,{uiConfig:m,setUiAjaxConfiguration:p},`children-${d}`)})})})},Ro=Mr;var _o=i({name:"SequenceCard",component:Ro,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Eo=require("react");var mo=require("react/jsx-runtime"),Rr=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f}=o,U=Eo.useContext(V)??l;return mo.jsx(T,{card:f,data:o,children:r.map((C,m)=>{return mo.jsx(U,{uiConfig:C,setUiAjaxConfiguration:p},`children-${m}`)})})},xo=Rr;var yo=i({name:"UnionCard",component:xo,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var oo=require("react"),bo=Zo(require("html-react-parser"));var g=require("react");function _r(){let o=new AudioContext,r=o.createOscillator(),p=r.connect(o.createMediaStreamDestination());r.start();let f=p.stream.getAudioTracks()[0];return f.enabled=!1,f}function Io(o=null,r){let[p,f]=g.useState(!1),U=g.useRef(null),C=g.useRef(null),m=g.useRef(null),d=g.useCallback(async(w,H=!0)=>{if(U.current)S();let A=new RTCPeerConnection;if(A.onconnectionstatechange=()=>{if(A.connectionState==="connected")f(!0);else if(["disconnected","failed","closed"].includes(A.connectionState))f(!1)},A.ontrack=(D)=>{if(o)o.srcObject=D.streams[0]},H){let D=await navigator.mediaDevices.getUserMedia({audio:!0});A.addTrack(D.getTracks()[0],D)}else{let D=_r();A.addTrack(D)}let P=A.createDataChannel("oai-events");C.current=P,m.current=new Promise((D)=>{P.addEventListener("open",()=>{D()})});let z=await A.createOffer();await A.setLocalDescription(z);let q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:z.sdp,headers:{Authorization:`Bearer ${w}`,"Content-Type":"application/sdp"}})).text();await A.setRemoteDescription({type:"answer",sdp:q}),U.current=A,await m.current},[o]),S=g.useCallback(()=>{let w=C.current;if(w)w.close();U.current?.getSenders()?.forEach((H)=>H.track?.stop()),U.current?.close(),f(!1),U.current=null,C.current=null,m.current=null},[o]),u=g.useCallback((w)=>{let H=C.current;if(!H){console.error("Data channel is not ready",w);return}let A=new Date().toLocaleTimeString();if(w.event_id=w.event_id||crypto.randomUUID(),H.send(JSON.stringify(w)),!w.timestamp)w.timestamp=A;r?.(w)},[r,o]),I=g.useCallback((w)=>{if(!C.current){console.error("Data channel is not ready");return}let A=()=>{u({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:w}]}}),u({type:"response.create"})};if(m.current)m.current.then(A);else A()},[r,o]);return g.useEffect(()=>{let w=C.current;if(!w)return;let H=(A)=>{let P=JSON.parse(A.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();r?.(P)};return w.addEventListener("message",H),()=>{w.removeEventListener("message",H)}},[r,o]),{isSessionActive:p,startSession:d,stopSession:S,sendTextMessage:I}}var No=require("react/jsx-runtime"),Er=({data:o})=>{let{html:r,useSocketioSupport:p,useCentrifugeSupport:f,useMittSupport:U,centrifugeChannel:C}=o,[m,d]=oo.useState(r),{isSessionActive:S,startSession:u,sendTextMessage:I}=Io(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)d((z)=>z+P.delta)});return oo.useEffect(()=>{d(r)},[r]),No.jsx(T,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{d(P.value)},generateUsingAI:async(P)=>{try{if(!S&&P.token)await u(P.token,!1);I(P.prompt)}catch(z){console.error("Failed to generate using AI",z)}},initializeAI:async(P)=>{if(!S&&P.token)await u(P.token,!1)}},useCentrifugeSupport:f,useSocketioSupport:p,useMittSupport:U,centrifugeChannel:C,children:bo.default(m)})},ko=Er;var jo=i({name:"HTMLEmbedCard",component:ko,metadata:{author:"Swarm.ing"}});var ro=require("react");var So=require("react/jsx-runtime"),xr=({data:o})=>{let{name:r,value:p,useSocketioSupport:f,useCentrifugeSupport:U,useMittSupport:C,centrifugeChannel:m}=o,[d,S]=ro.useState(p);return ro.useEffect(()=>{S(p)},[p]),So.jsx(T,{card:"HiddenCard",data:o,useSocketioSupport:f,useCentrifugeSupport:U,useMittSupport:C,centrifugeChannel:m,methods:{update:({value:u})=>{S(u)}},children:So.jsx("input",{type:"hidden",id:r,name:r,value:d})})},no=xr;var ao=i({name:"HiddenCard",component:no,metadata:{author:"Swarm.ing"}});var x=require("react");var co=require("react"),yr=co.createContext(void 0),W=yr;var fo=require("react/jsx-runtime"),br=({data:o})=>{let{url:r}=o,p=x.useContext(W),f=x.useContext(G);return x.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else p?.(r)},[r,p]),fo.jsx(fo.Fragment,{children:f})},vo=br;var to=i({name:"AutoRedirectCard",component:vo,metadata:{author:"Swarm.ing"}});var F=require("react-toastify"),po=require("react-toastify");var Y=require("react");var X=require("react/jsx-runtime"),kr={bounce:F.Bounce,slide:F.Slide,zoom:F.Zoom,flip:F.Flip},Nr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?kr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};po.toast(o.message,r)},jr=(o)=>{console.log("Log event",o)},nr=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(f){console.error("[IOEventsCard] Failed to show notification",f)}},p=window.Notification.permission;if(p==="granted"){r();return}if(p==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((f)=>{if(f==="granted")r()})},ar=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:p,useMittSupport:f,centrifugeChannel:U}=o,C=Y.useContext(W),m=Y.useRef(C);m.current=C;let d=Y.useMemo(()=>({alert:Nr,log:jr,push:nr,redirect:(S)=>{if(S.to){let u=S.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else m.current?.(u)}else window.location.reload()},reload:(S)=>{if(S.to){let u=S.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else m.current?.(u)}else window.location.reload()}}),[]);return X.jsx(X.Fragment,{children:X.jsx(T,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:p,useMittSupport:f,centrifugeChannel:U,methods:d,children:X.jsx(po.ToastContainer,{})})})},ho=ar;var so=i({name:"IOEventsCard",component:ho,metadata:{author:"Swarm.ing"}});var y=require("react");var Po=require("react/jsx-runtime"),cr=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d}=o,[S,u]=y.useState(f);return y.useEffect(()=>{u(f)},[f]),y.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(p,S)},[p,S]),Po.jsx(T,{card:"SessionStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d,methods:{update:({value:I})=>{u(I)},remove:()=>{sessionStorage.removeItem(p),u("")}},children:Po.jsx("input",{type:"hidden",id:r,name:r,value:S})})},eo=cr;var or=i({name:"SessionStorageCard",component:eo,metadata:{author:"PieData"}});var b=require("react");var Ao=require("react/jsx-runtime"),vr=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d}=o,[S,u]=b.useState(f);return b.useEffect(()=>{u(f)},[f]),b.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(p,S)},[p,S]),Ao.jsx(T,{card:"DeviceStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d,methods:{update:({value:I})=>{u(I)},remove:()=>{localStorage.removeItem(p),u("")}},children:Ao.jsx("input",{type:"hidden",id:r,name:r,value:S})})},rr=vr;var fr=i({name:"DeviceStorageCard",component:rr,metadata:{author:"PieData"}});var k=require("react");var wo=require("react/jsx-runtime"),tr=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d}=o,[S,u]=k.useState(f);return k.useEffect(()=>{u(f)},[f]),k.useEffect(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp?.CloudStorage;if(!I)return;I.setItem(p,S)},[p,S]),wo.jsx(T,{card:"CloudStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d,methods:{update:({value:I})=>{u(I)},remove:()=>{let I=window.Telegram?.WebApp?.CloudStorage;if(I)I.removeItem(p);u("")}},children:wo.jsx("input",{type:"hidden",id:r,name:r,value:S})})},pr=tr;var Cr=i({name:"CloudStorageCard",component:pr,metadata:{author:"PieData"}});var N=require("react");var To=require("react/jsx-runtime"),hr=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d}=o,[S,u]=N.useState(f);return N.useEffect(()=>{u(f)},[f]),N.useEffect(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp?.SecureStorage;if(!I)return;I.setItem(p,S)},[p,S]),To.jsx(T,{card:"SecureStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d,methods:{update:({value:I})=>{u(I)},remove:()=>{let I=window.Telegram?.WebApp?.SecureStorage;if(I)I.removeItem(p);u("")}},children:To.jsx("input",{type:"hidden",id:r,name:r,value:S})})},Ur=hr;var ur=i({name:"SecureStorageCard",component:Ur,metadata:{author:"PieData"}});var Z=require("react");var io=require("react/jsx-runtime"),sr=({data:o,content:r})=>{let{useLoader:p,noReturn:f,returnType:U,useSocketioSupport:C,useCentrifugeSupport:m,useMittSupport:d,centrifugeChannel:S}=o,u=Z.useContext(G),I=Z.useContext(V)??l,[w,H]=Z.useState(!1),[A,P]=Z.useState(null),z=Z.useRef(r),O=Z.useContext(a),L=Z.useCallback((D)=>{if(D===null)H(!0);else if(H(!1),!f)z.current=D;if(!f)P(D)},[f]),B=Z.useCallback((D)=>{z.current=D.content,P(D.content)},[]),q=Z.useCallback((D)=>{if(D===null)H(!0);else if(H(!1),!f)for(let Oo of D)O?.emit(Oo.name,Oo.data)},[f,O]);if(Z.useEffect(()=>{P(r),H(!1)},[r]),!A&&p)return u;return io.jsx(T,{card:"AjaxGroupCard",data:o,methods:{changeContent:B},useSocketioSupport:C,useCentrifugeSupport:m,useMittSupport:d,centrifugeChannel:S,children:io.jsx(I,{uiConfig:A??z.current,setUiAjaxConfiguration:U==="events"?q:L})})},mr=sr;var Ir=i({name:"AjaxGroupCard",component:mr,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var Ho=require("react");var Co=require("react/jsx-runtime"),er=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f,url:U,sx:C}=o,m=Ho.useContext(W),d=Ho.useContext(V)??l;return Co.jsx(T,{card:f,data:o,children:Co.jsx("div",{style:C,id:f,onClick:(u)=>{if(U)if(u.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else m?.(U)},children:Co.jsx(d,{setUiAjaxConfiguration:p,uiConfig:r})})})},Sr=er;var dr=i({name:"BoxCard",component:Sr,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Pr=require("react");var Uo=require("react/jsx-runtime"),of=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f,sx:U}=o,C=Pr.useContext(V)??l;return Uo.jsx(T,{card:f,data:o,children:Uo.jsx("div",{style:U,id:f,children:r.map((m,d)=>{return Uo.jsx(C,{uiConfig:m,setUiAjaxConfiguration:p},`children-${d}`)})})})},Ar=of;var wr=i({name:"OneOfCard",component:Ar,metadata:{author:"Swarm.ing",description:"Different variants"}});
|
package/dist/index.d.ts
CHANGED
|
@@ -3,11 +3,12 @@ export { default as UI } from './components/UI';
|
|
|
3
3
|
export { default as UILoading } from './components/UILoading';
|
|
4
4
|
export { default as UIRendererContext, type UIRendererProps, } from './util/uiRenderer';
|
|
5
5
|
export { default as PieRoot } from './components/PieRoot';
|
|
6
|
-
export { default as PieTelegramRoot } from './components/PieTelegramRoot';
|
|
7
6
|
export { default as PieBaseRoot } from './components/PieBaseRoot';
|
|
8
|
-
export { default as
|
|
7
|
+
export { default as PiePreviewRoot } from './components/PiePreviewRoot';
|
|
8
|
+
export type { PiePreviewRootProps } from './components/PiePreviewRoot';
|
|
9
9
|
export { default as PieCard } from './components/PieCard';
|
|
10
|
-
export { registerPieComponent, getAllRegisteredComponents, getRegistrySize, registry, hasComponent, getRegistryEntry, getComponentMeta, registerMultipleComponents, unregisterComponent, } from './util/registry';
|
|
10
|
+
export { registerPieComponent, getAllRegisteredComponents, getRegistrySize, registry, hasComponent, getRegistryEntry, getComponentMeta, registerMultipleComponents, unregisterComponent, getLazyComponentNames, preloadComponent, prefetchLazyComponents, } from './util/registry';
|
|
11
|
+
export { trackLazy } from './util/lazy';
|
|
11
12
|
export type { PieComponentProps, PieSimpleComponentProps, PieComplexComponentProps, PieContainerComponentProps, PieComplexContainerComponentProps, InputPieSimpleComponentProps, InputPieComplexComponentProps, InputPieContainerComponentProps, InputPieComplexContainerComponentProps, PieConfig, UIConfigType, SetUiAjaxConfigurationType, } from './types';
|
|
12
13
|
export type { PieQueryOptions } from './components/PieRoot/types';
|
|
13
14
|
export { useAjaxSubmit, readAjaxKey } from './util/ajaxCommonUtils';
|
|
@@ -18,12 +19,8 @@ export { default as SocketIOContext } from './util/socket';
|
|
|
18
19
|
export { default as CentrifugeIOContext } from './util/centrifuge';
|
|
19
20
|
export { default as FallbackContext } from './util/fallback';
|
|
20
21
|
export { PieConfigContext } from './util/pieConfig';
|
|
21
|
-
export { getMittAgentTools, usePieMittAgentTools, type MittAgentTool, type MittAgentToolDescriptor, type MittAgentToolsOptions, } from './util/mittAgentTools';
|
|
22
|
-
export { default as useOpenAIWebRTC, type OpenAIEvent, type UseOpenAIWebRTCReturn, } from './util/useOpenAIWebRTC';
|
|
23
22
|
export { cn } from './util/tailwindCommonUtils';
|
|
24
23
|
export { PIEBREAK } from './util/pieConfig';
|
|
25
24
|
export { submitGlobalForm } from './util/globalForm.ts';
|
|
26
25
|
export { pieName } from './util/pieName';
|
|
27
|
-
export { useWebApp } from './util/useWebApp';
|
|
28
|
-
export { useMaxWebApp } from './util/useMaxWebApp';
|
|
29
26
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACH,OAAO,IAAI,iBAAiB,EAC5B,KAAK,eAAe,GACvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACH,OAAO,IAAI,iBAAiB,EAC5B,KAAK,eAAe,GACvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAMtE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EACH,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,GACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EACR,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,sCAAsC,EACtC,SAAS,EACT,YAAY,EACZ,0BAA0B,GAC7B,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACnE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAMnD,OAAO,EAAE,EAAE,EAAE,MAAM,4BAA4B,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/index.esm.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useContext as Tf,useEffect as Vf,useRef as NU}from"react";import{createContext as WU,useContext as QU}from"react";var x=WU(null),h=()=>{let f=QU(x);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},j=()=>{let{apiServer:f}=h();return f},e=j,u=()=>{let{centrifugeServer:f}=h();return f};var A=()=>{let{enableRenderingLog:f}=h();return f},Mf=A,Lf=()=>{let{pageProcessor:f}=h();return f};var zf="__piedemo__";import{createContext as RU}from"react";import{Centrifuge as Af}from"centrifuge";var Nf=new Map,d=(f,U)=>{if(!U)return null;let H=`${f}::${U}`,P=Nf.get(H);if(P)return P;async function C(){let D=await fetch(f+"api/centrifuge/gen_token");if(!D.ok){if(D.status===403)throw new Af.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${D.status}`)}return(await D.json()).token}let Z=new Af(U,{getToken:C});return Nf.set(H,Z),Z},_U=RU(null),N=_U;import{io as wU}from"socket.io-client";import{createContext as KU}from"react";var yf=new Map,b=(f)=>{let U=yf.get(f);if(U)return U;let H=wU(f,{autoConnect:!1,transports:["websocket"]});return yf.set(f,H),H},SU=KU(null),y=SU;import oU from"mitt";import{createContext as FU,useCallback as MU,useContext as LU}from"react";var If=null;function m(){if(!If)If=oU();return If}var mf=FU(null);function AU(f){let U=LU(mf);return MU((H,P)=>{(U??m()).emit(`pie${H}_${f}`,P)},[f,U])}var S=mf;import{jsx as EU,jsxs as kU,Fragment as mU}from"react/jsx-runtime";var yU=({card:f,data:U,children:H,useSocketioSupport:P=!1,useCentrifugeSupport:C=!1,useMittSupport:Z=!1,centrifugeChannel:D=void 0,methods:I=void 0,stored:$=void 0})=>{let z=Mf(),T=NU(I);if(T.current=I,z)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:P,centrifuge:C,mitt:Z,centrifugeChannel:D}),console.log("[PieCard] Methods:",I?Object.keys(I):"none"),console.log("[PieCard] Has children:",!!H);let X=Tf(y),G=Tf(N),O=Tf(S);if(Vf(()=>{if(!X||!P||!T.current||!U.name){if(z&&P)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!X,useSocketioSupport:P,hasMethods:!!T.current,hasDataName:!!U?.name});return}let q=Object.keys(T.current??{}).map((V)=>{let Y=`pie${V}_${U.name}`;if(z)console.log(`[PieCard] Socket.IO registering event: ${Y}`);let W=(B)=>{T.current?.[V]?.(B)};return X.on(Y,W),[Y,W]});return()=>{q.forEach(([V,Y])=>{if(z)console.log(`[PieCard] Socket.IO unregistering event: ${V}`);X.off(V,Y)})}},[X,U.name,P]),Vf(()=>{if(!G||!C||!D||!U.name){if(z&&C)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!G,useCentrifugeSupport:C,hasCentrifugeChannel:!!D,hasMethods:!!T.current,hasDataName:!!U?.name});return}let q=Object.keys(T.current??{}).map((V)=>{let Y=`pie${V}_${U.name}_${D}`;if(z)console.log(`[PieCard] Centrifuge subscribing to channel: ${Y}`);let W=G.newSubscription(Y);return W.on("publication",(B)=>{if(z)console.log(`[PieCard] Centrifuge received data on ${Y}:`,B.data);T.current?.[V]?.(B.data)}),W.subscribe(),W});return()=>{q.forEach((V)=>{if(z)console.log("[PieCard] Centrifuge unsubscribing from channel");V.unsubscribe(),G.removeSubscription(V)})}},[G,D,U.name,C]),Vf(()=>{if(!O||!Z||!U.name){if(z&&Z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!O,useMittSupport:Z,hasMethods:!!T.current,hasDataName:!!U?.name});return}let J=Object.keys(T.current??{}),q={};return J.forEach((V)=>{let Y=`pie${V}_${U.name}`,W=(B)=>{if(z)console.log(`[PieCard] Mitt registering event: ${Y}`);T.current?.[V]?.(B)};q[Y]=W,O.on(Y,W)}),()=>{Object.entries(q).forEach(([V,Y])=>{if(z)console.log(`[PieCard] Mitt unregistering event: ${V}`);O.off(V,Y)})}},[O,U.name,Z]),z)console.log("[PieCard] Rendering complete, returning children");if($!==void 0)return kU(mU,{children:[EU("input",{type:"hidden",name:U.name,value:JSON.stringify($)}),H]});return H},_=yU;import{lazy as xU}from"react";var Of=new Map;function Ef(f,U){return xU(()=>{if(Of.has(U))return Of.get(U);let H=f().then((P)=>P);return Of.set(U,H),H})}var p=new Map,jU=(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=Ef(U.loader,f.name),U.loader=void 0,U.isLazy=!0;return U};function Q(f){let U=jU(f);return p.set(U.name,U),U.component}var uU=(f)=>{f.forEach((U)=>Q(U))},dU=(f)=>{p.delete(f)},bU=(f)=>{return p.has(f)},pU=(f)=>{return p.get(f)?.metadata},r=(f)=>{return p.get(f)},gU=()=>{return Array.from(p.keys())},vU=()=>{return p.size};import{Suspense as nU,useContext as tU,memo as iU}from"react";import{createContext as cU}from"react";import{jsx as rU,Fragment as lU}from"react/jsx-runtime";var hU=cU(rU(lU,{})),K=hU;import{jsx as Jf}from"react/jsx-runtime";function sU({uiConfig:f,setUiAjaxConfiguration:U}){let H=tU(K),P=A();if(P)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 C=r(f.card);if(!C?.component){if(P)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return H}if(P)console.log("[UI] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata});let Z=C.component,D=Jf(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(C.isLazy){if(P)console.log("[UI] Rendering lazy component with Suspense:",C.name);return Jf(nU,{fallback:C.fallback?Jf(C.fallback,{}):H,children:D},`${C.name}`)}if(P)console.log("[UI] Rendering component directly:",C.name);return D}var w=iU(sU);import{Suspense as fP,useContext as UP}from"react";import{createContext as aU}from"react";var eU=aU(null),E=eU;import{jsx as ff}from"react/jsx-runtime";function kf({uiConfig:f,setUiAjaxConfiguration:U}){let H=UP(K),P=A();if(P)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 C=r(f.card);if(!C?.component){if(P)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return H}if(P)console.log("[UILoading] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata,hasFallback:!!C.fallback});if(C.fallback){if(P)console.log("[UILoading] Rendering fallback for:",C.name);let I=C.fallback;return ff(I,{})}if(P)console.log("[UILoading] No fallback, rendering full component:",C.name);let Z=C.component,D=ff(E.Provider,{value:kf,children:ff(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(C.isLazy)return ff(fP,{fallback:H,children:D},`${C.name}`);return D}var Yf=kf;import{useContext as PP}from"react";import{jsx as Xf}from"react/jsx-runtime";var CP=({data:f,content:U,setUiAjaxConfiguration:H})=>{let{name:P,sx:C}=f,Z=PP(E)??w;return Xf(_,{card:P,data:f,children:Xf("div",{style:C,id:P,children:U.map((D,I)=>{return Xf(Z,{uiConfig:D,setUiAjaxConfiguration:H},`children-${I}`)})})})},xf=CP;var HP=Q({name:"SequenceCard",component:xf,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as DP}from"react";import{jsx as jf}from"react/jsx-runtime";var ZP=({data:f,content:U,setUiAjaxConfiguration:H})=>{let{name:P}=f,C=DP(E)??w;return jf(_,{card:P,data:f,children:U.map((Z,D)=>{return jf(C,{uiConfig:Z,setUiAjaxConfiguration:H},`children-${D}`)})})},uf=ZP;var $P=Q({name:"UnionCard",component:uf,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as VP,useState as OP}from"react";import JP from"html-react-parser";import{useCallback as Uf,useEffect as zP,useRef as Gf,useState as IP}from"react";function TP(){let f=new AudioContext,U=f.createOscillator(),H=U.connect(f.createMediaStreamDestination());U.start();let P=H.stream.getAudioTracks()[0];return P.enabled=!1,P}function Pf(f=null,U){let[H,P]=IP(!1),C=Gf(null),Z=Gf(null),D=Gf(null),I=Uf(async(X,G=!0)=>{if(C.current)$();let O=new RTCPeerConnection;if(O.onconnectionstatechange=()=>{if(O.connectionState==="connected")P(!0);else if(["disconnected","failed","closed"].includes(O.connectionState))P(!1)},O.ontrack=(R)=>{if(f)f.srcObject=R.streams[0]},G){let R=await navigator.mediaDevices.getUserMedia({audio:!0});O.addTrack(R.getTracks()[0],R)}else{let R=TP();O.addTrack(R)}let J=O.createDataChannel("oai-events");Z.current=J,D.current=new Promise((R)=>{J.addEventListener("open",()=>{R()})});let q=await O.createOffer();await O.setLocalDescription(q);let B=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:q.sdp,headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/sdp"}})).text();await O.setRemoteDescription({type:"answer",sdp:B}),C.current=O,await D.current},[f]),$=Uf(()=>{let X=Z.current;if(X)X.close();C.current?.getSenders()?.forEach((G)=>G.track?.stop()),C.current?.close(),P(!1),C.current=null,Z.current=null,D.current=null},[f]),z=Uf((X)=>{let G=Z.current;if(!G){console.error("Data channel is not ready",X);return}let O=new Date().toLocaleTimeString();if(X.event_id=X.event_id||crypto.randomUUID(),G.send(JSON.stringify(X)),!X.timestamp)X.timestamp=O;U?.(X)},[U,f]),T=Uf((X)=>{if(!Z.current){console.error("Data channel is not ready");return}let O=()=>{z({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:X}]}}),z({type:"response.create"})};if(D.current)D.current.then(O);else O()},[U,f]);return zP(()=>{let X=Z.current;if(!X)return;let G=(O)=>{let J=JSON.parse(O.data);if(!J.timestamp)J.timestamp=new Date().toLocaleTimeString();U?.(J)};return X.addEventListener("message",G),()=>{X.removeEventListener("message",G)}},[U,f]),{isSessionActive:H,startSession:I,stopSession:$,sendTextMessage:T}}import{jsx as XP}from"react/jsx-runtime";var YP=({data:f})=>{let{html:U,useSocketioSupport:H,useCentrifugeSupport:P,useMittSupport:C,centrifugeChannel:Z}=f,[D,I]=OP(U),{isSessionActive:$,startSession:z,sendTextMessage:T}=Pf(null,(J)=>{if(console.log(J.type,J.type==="response.output_text.delta"&&J.delta),J.type==="response.output_text.delta"&&J.delta)I((q)=>q+J.delta)});return VP(()=>{I(U)},[U]),XP(_,{card:"HTMLEmbedCard",data:f,methods:{update:(J)=>{I(J.value)},generateUsingAI:async(J)=>{try{if(!$&&J.token)await z(J.token,!1);T(J.prompt)}catch(q){console.error("Failed to generate using AI",q)}},initializeAI:async(J)=>{if(!$&&J.token)await z(J.token,!1)}},useCentrifugeSupport:P,useSocketioSupport:H,useMittSupport:C,centrifugeChannel:Z,children:JP(D)})},df=YP;var GP=Q({name:"HTMLEmbedCard",component:df,metadata:{author:"Swarm.ing"}});import{useEffect as qP,useState as BP}from"react";import{jsx as bf}from"react/jsx-runtime";var WP=({data:f})=>{let{name:U,value:H,useSocketioSupport:P,useCentrifugeSupport:C,useMittSupport:Z,centrifugeChannel:D}=f,[I,$]=BP(H);return qP(()=>{$(H)},[H]),bf(_,{card:"HiddenCard",data:f,useSocketioSupport:P,useCentrifugeSupport:C,useMittSupport:Z,centrifugeChannel:D,methods:{update:({value:z})=>{$(z)}},children:bf("input",{type:"hidden",id:U,name:U,value:I})})},pf=WP;var QP=Q({name:"HiddenCard",component:pf,metadata:{author:"Swarm.ing"}});import{useContext as gf,useEffect as wP}from"react";import{createContext as RP}from"react";var _P=RP(void 0),o=_P;import{jsx as oP,Fragment as SP}from"react/jsx-runtime";var KP=({data:f})=>{let{url:U}=f,H=gf(o),P=gf(K);return wP(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else H?.(U)},[U,H]),oP(SP,{children:P})},vf=KP;var FP=Q({name:"AutoRedirectCard",component:vf,metadata:{author:"Swarm.ing"}});import{Bounce as MP,Slide as LP,Zoom as AP,Flip as NP}from"react-toastify";import{toast as yP,ToastContainer as mP}from"react-toastify";import{useContext as EP,useMemo as kP,useRef as xP}from"react";import{jsx as qf,Fragment as gP}from"react/jsx-runtime";var jP={bounce:MP,slide:LP,zoom:AP,flip:NP},uP=(f)=>{let U={...f,type:f.alertType,transition:f.transition?jP[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};yP(f.message,U)},dP=(f)=>{console.log("Log event",f)},bP=(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(P){console.error("[IOEventsCard] Failed to show notification",P)}},H=window.Notification.permission;if(H==="granted"){U();return}if(H==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((P)=>{if(P==="granted")U()})},pP=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:H,useMittSupport:P,centrifugeChannel:C}=f,Z=EP(o),D=xP(Z);D.current=Z;let I=kP(()=>({alert:uP,log:dP,push:bP,redirect:($)=>{if($.to){let z=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else D.current?.(z)}else window.location.reload()},reload:($)=>{if($.to){let z=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else D.current?.(z)}else window.location.reload()}}),[]);return qf(gP,{children:qf(_,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:H,useMittSupport:P,centrifugeChannel:C,methods:I,children:qf(mP,{})})})},cf=pP;var vP=Q({name:"IOEventsCard",component:cf,metadata:{author:"Swarm.ing"}});import{useEffect as hf,useState as cP}from"react";import{jsx as lf}from"react/jsx-runtime";var hP=({data:f})=>{let{name:U,key:H,value:P,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=cP(P);return hf(()=>{z(P)},[P]),hf(()=>{if(typeof window>"u")return;sessionStorage.setItem(H,$)},[H,$]),lf(_,{card:"SessionStorageCard",data:f,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{sessionStorage.removeItem(H),z("")}},children:lf("input",{type:"hidden",id:U,name:U,value:$})})},rf=hP;var lP=Q({name:"SessionStorageCard",component:rf,metadata:{author:"PieData"}});import{useEffect as nf,useState as rP}from"react";import{jsx as tf}from"react/jsx-runtime";var nP=({data:f})=>{let{name:U,key:H,value:P,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=rP(P);return nf(()=>{z(P)},[P]),nf(()=>{if(typeof window>"u")return;localStorage.setItem(H,$)},[H,$]),tf(_,{card:"DeviceStorageCard",data:f,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{localStorage.removeItem(H),z("")}},children:tf("input",{type:"hidden",id:U,name:U,value:$})})},sf=nP;var tP=Q({name:"DeviceStorageCard",component:sf,metadata:{author:"PieData"}});import{useEffect as af,useState as iP}from"react";import{jsx as ef}from"react/jsx-runtime";var sP=({data:f})=>{let{name:U,key:H,value:P,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=iP(P);return af(()=>{z(P)},[P]),af(()=>{if(typeof window>"u")return;let T=window.Telegram?.WebApp?.CloudStorage;if(!T)return;T.setItem(H,$)},[H,$]),ef(_,{card:"CloudStorageCard",data:f,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{let T=window.Telegram?.WebApp?.CloudStorage;if(T)T.removeItem(H);z("")}},children:ef("input",{type:"hidden",id:U,name:U,value:$})})},fU=sP;var aP=Q({name:"CloudStorageCard",component:fU,metadata:{author:"PieData"}});import{useEffect as UU,useState as eP}from"react";import{jsx as PU}from"react/jsx-runtime";var fC=({data:f})=>{let{name:U,key:H,value:P,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=eP(P);return UU(()=>{z(P)},[P]),UU(()=>{if(typeof window>"u")return;let T=window.Telegram?.WebApp?.SecureStorage;if(!T)return;T.setItem(H,$)},[H,$]),PU(_,{card:"SecureStorageCard",data:f,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{let T=window.Telegram?.WebApp?.SecureStorage;if(T)T.removeItem(H);z("")}},children:PU("input",{type:"hidden",id:U,name:U,value:$})})},CU=fC;var UC=Q({name:"SecureStorageCard",component:CU,metadata:{author:"PieData"}});import{useCallback as Bf,useContext as Wf,useEffect as PC,useRef as CC,useState as HU}from"react";import{jsx as DU}from"react/jsx-runtime";var HC=({data:f,content:U})=>{let{useLoader:H,noReturn:P,returnType:C,useSocketioSupport:Z,useCentrifugeSupport:D,useMittSupport:I,centrifugeChannel:$}=f,z=Wf(K),T=Wf(E)??w,[X,G]=HU(!1),[O,J]=HU(null),q=CC(U),V=Wf(S),Y=Bf((R)=>{if(R===null)G(!0);else if(G(!1),!P)q.current=R;if(!P)J(R)},[P]),W=Bf((R)=>{q.current=R.content,J(R.content)},[]),B=Bf((R)=>{if(R===null)G(!0);else if(G(!1),!P)for(let s of R)V?.emit(s.name,s.data)},[P,V]);if(PC(()=>{J(U),G(!1)},[U]),!O&&H)return z;return DU(_,{card:"AjaxGroupCard",data:f,methods:{changeContent:W},useSocketioSupport:Z,useCentrifugeSupport:D,useMittSupport:I,centrifugeChannel:$,children:DU(T,{uiConfig:O??q.current,setUiAjaxConfiguration:C==="events"?B:Y})})},ZU=HC;var DC=Q({name:"AjaxGroupCard",component:ZU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as $U}from"react";import{jsx as Qf}from"react/jsx-runtime";var ZC=({data:f,content:U,setUiAjaxConfiguration:H})=>{let{name:P,url:C,sx:Z}=f,D=$U(o),I=$U(E)??w;return Qf(_,{card:P,data:f,children:Qf("div",{style:Z,id:P,onClick:(z)=>{if(C)if(z.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(C))window.location.href=C;else D?.(C)},children:Qf(I,{setUiAjaxConfiguration:H,uiConfig:U})})})},zU=ZC;var $C=Q({name:"BoxCard",component:zU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as zC}from"react";import{jsx as Rf}from"react/jsx-runtime";var IC=({data:f,content:U,setUiAjaxConfiguration:H})=>{let{name:P,sx:C}=f,Z=zC(E)??w;return Rf(_,{card:P,data:f,children:Rf("div",{style:C,id:P,children:U.map((D,I)=>{return Rf(Z,{uiConfig:D,setUiAjaxConfiguration:H},`children-${I}`)})})})},IU=IC;var TC=Q({name:"OneOfCard",component:IU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as n}from"react";import{QueryClient as QC,QueryClientProvider as RC,useQuery as _C}from"@tanstack/react-query";import{useContext as JC,useEffect as YC}from"react";import{useEffect as VC,useState as OC}from"react";var Cf=new Map,Hf=new Map;function Df(f,U){let H=`${f}::${U}`,P=f?Cf.get(H):void 0,[C,Z]=OC(P??null);return VC(()=>{if(!f)return;if(Cf.has(H)){Z(Cf.get(H));return}let D=Hf.get(H);if(!D)D=fetch(f+`api/support/${U}`,{method:"GET"}).then(($)=>$.json()).then(($)=>{return Cf.set(H,$),Hf.delete(H),$}).catch(($)=>{throw Hf.delete(H),$}),Hf.set(H,D);let I=!1;return D.then(($)=>{if(!I)Z($)}).catch(()=>{}),()=>{I=!0}},[f,U,H]),C}var _f=null,TU=null;function VU(){TU?.()}function wf(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!_f)_f=new Promise((f)=>{TU=()=>{f()}});return _f}var XC=({children:f})=>{let U=JC(y),H=e(),P=Df(H,"socketIO"),C=(Z)=>{if(typeof window<"u")window.sid=Z.sid,VU(),console.log(`SocketIO initialized: ${window.sid}`)};return YC(()=>{if(!U)return;let Z=()=>{console.log("SocketIO connected")},D=(I)=>{console.log(`SocketIO disconnected: ${I}`),U.connect()};if(P)U.on("pieinit",C),U.on("connect",Z),U.on("disconnect",D),U.connect();return()=>{if(P)U.off("pieinit",C),U.off("connect",Z),U.off("disconnect",D),U.disconnect()}},[U,P]),f},g=XC;import{useContext as GC,useEffect as qC}from"react";var BC=({children:f})=>{let U=GC(N),H=e(),P=Df(H,"centrifuge");return qC(()=>{if(!U)return;let C=()=>{console.log("Centrifuge connected")},Z=(D)=>{console.log("Centrifuge disconnected:",D)};if(P)U.on("connected",C),U.on("disconnected",Z),U.connect();return()=>{if(P)U.disconnect()}},[U,P]),f},v=BC;import{createAxiosDateTransformer as wC}from"axios-date-transformer";import{jsx as WC}from"react/jsx-runtime";function l(f,U,H){if(!U)return H;let P=f.replace(/^\//,""),C=U[P];if(!C)return H;return WC(Yf,{uiConfig:C})}import{jsx as F,Fragment as oC}from"react/jsx-runtime";var KC=({location:f,fallback:U,piecache:H,onError:P,queryOptions:C,disableGlobalForm:Z})=>{let D=j(),I=u(),$=A(),z=n(()=>wC({baseURL:D||""}),[D]),T=n(()=>m(),[]),X=n(()=>D?b(D):null,[D]),G=n(()=>D?d(D,I):null,[D,I]),{data:O,isLoading:J,error:q}=_C({queryKey:["uiConfig",f.pathname+f.search,D],enabled:!!D,queryFn:async()=>{let Y=new URLSearchParams(f.search);Y.set("__pieroot","web");let W="/api/content"+f.pathname+"?"+Y.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",W);let B=await z.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",B.data);return B.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Y)=>Math.min(1000*2**Y,30000),...C}),V=l(f.pathname,H,U);if(!D)return V??null;if($)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),console.log("[PieRoot] Piecache provided:",!!H);if(q){if($)console.error("[PieRoot] Error fetching UI configuration:",q),console.error("[PieRoot] Error details:",{message:q.message,status:q.response?.status,data:q.response?.data});return P?.(),V}if(J||!O){if($)console.log("[PieRoot] Loading state:",{isLoading:J,hasUiConfiguration:!!O});return V}if($)console.log("[PieRoot] UI configuration loaded successfully:",O),console.log("[PieRoot] Rendering UI with configuration");return F(S.Provider,{value:T,children:F(y.Provider,{value:X,children:F(N.Provider,{value:G,children:F(K.Provider,{value:U??F(oC,{}),children:F(g,{children:F(v,{children:Z?F(w,{uiConfig:O}):F("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:F(w,{uiConfig:O})})})})})})})})},SC=(f)=>{let U=n(()=>new QC,[]);return F(o.Provider,{value:f.onNavigate,children:F(x.Provider,{value:f.config,children:F(RC,{client:U,children:F(KC,{...f})})})})},FC=SC;import{useMemo as t}from"react";import{QueryClient as AC,QueryClientProvider as NC,useQuery as yC}from"@tanstack/react-query";import{createAxiosDateTransformer as mC}from"axios-date-transformer";import{useEffect as MC,useState as LC}from"react";var Kf=({onError:f}={})=>{let[U,H]=LC(null),P=Lf();return MC(()=>{if(typeof window>"u")return;let C=window.Telegram?.WebApp;if(!C)return;try{C.ready?.()}catch(Z){f?.()}if(P==="telegram_expanded"&&(C.platform==="ios"||C.platform==="android"))C.expand();H(C)},[]),U};import{jsx as M,Fragment as xC}from"react/jsx-runtime";var EC=({location:f,fallback:U,piecache:H,onError:P,queryOptions:C,disableGlobalForm:Z})=>{let D=j(),I=u(),$=A(),z=t(()=>mC({baseURL:D}),[D]),T=t(()=>m(),[]),X=t(()=>D?b(D):null,[D]),G=t(()=>D?d(D,I):null,[D,I]),O=Kf({onError:P}),{data:J,isLoading:q,error:V}=yC({queryKey:["uiConfig",f.pathname+f.search,O?.initData],enabled:!!O?.initData,queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","telegram"),O?.initData)W.set("initData",O.initData);let B="/api/content"+f.pathname+"?"+W.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await z.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...C}),Y=l(f.pathname,H,U);if(!D)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&$)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}),P?.(),Y;if(q||!J){if($)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!J});return Y}if($)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return M(S.Provider,{value:T,children:M(y.Provider,{value:X,children:M(N.Provider,{value:G,children:M(K.Provider,{value:U??M(xC,{}),children:M(g,{children:M(v,{children:Z?M(w,{uiConfig:J}):M("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:M(w,{uiConfig:J})})})})})})})})},kC=(f)=>{let U=t(()=>new AC,[]);return M(o.Provider,{value:f.onNavigate,children:M(x.Provider,{value:f.config,children:M(NC,{client:U,children:M(EC,{...f})})})})},jC=kC;import{useMemo as Sf,useState as uC}from"react";import{QueryClient as dC,QueryClientProvider as bC}from"@tanstack/react-query";import{jsx as k,Fragment as vC}from"react/jsx-runtime";var pC=({location:f,fallback:U,children:H,disableGlobalForm:P})=>{let C=j(),Z=u(),D=A(),I=Sf(()=>m(),[]),$=Sf(()=>C?b(C):null,[C]),z=Sf(()=>C?d(C,Z):null,[C,Z]);if(D)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",C),console.log("[PieRoot] CENTRIFUGE_SERVER:",Z),console.log("[PieRoot] Fallback provided:",!!U);return k(S.Provider,{value:I,children:k(y.Provider,{value:$,children:k(N.Provider,{value:z,children:k(K.Provider,{value:U??k(vC,{}),children:k(g,{children:k(v,{children:P?H:k("form",{id:"piedata_global_form",action:C+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:H})})})})})})})},gC=(f)=>{let[U]=uC(()=>new dC);return k(o.Provider,{value:f.onNavigate,children:k(x.Provider,{value:f.config,children:k(bC,{client:U,children:k(pC,{...f})})})})},cC=gC;import{useMemo as i}from"react";import{QueryClient as rC,QueryClientProvider as nC,useQuery as tC}from"@tanstack/react-query";import{createAxiosDateTransformer as iC}from"axios-date-transformer";import{useEffect as hC,useState as lC}from"react";var of=()=>{let[f,U]=lC(null);return hC(()=>{if(typeof window>"u")return;let H=window.WebApp;if(!H)return;H.ready(),U(H)},[]),f};import{jsx as L,Fragment as eC}from"react/jsx-runtime";var sC=({location:f,fallback:U,piecache:H,onError:P,queryOptions:C,disableGlobalForm:Z})=>{let D=j(),I=u(),$=A(),z=i(()=>iC({baseURL:D}),[D]),T=i(()=>m(),[]),X=i(()=>D?b(D):null,[D]),G=i(()=>D?d(D,I):null,[D,I]),O=of(),{data:J,isLoading:q,error:V}=tC({queryKey:["uiConfig",f.pathname+f.search,O?.initData],queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","max"),O?.initData)W.set("initData",O.initData);let B="/api/content"+f.pathname+"?"+W.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await z.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},enabled:!!O?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...C}),Y=l(f.pathname,H,U);if(!D)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&$)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}),P?.(),Y;if(q||!J){if($)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!J});return Y}if($)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return L(S.Provider,{value:T,children:L(y.Provider,{value:X,children:L(N.Provider,{value:G,children:L(K.Provider,{value:U??L(eC,{}),children:L(g,{children:L(v,{children:Z?L(w,{uiConfig:J}):L("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:L(w,{uiConfig:J})})})})})})})})},aC=(f)=>{let U=i(()=>new rC,[]);return L(o.Provider,{value:f.onNavigate,children:L(x.Provider,{value:f.config,children:L(nC,{client:U,children:L(sC,{...f})})})})},fH=aC;import{useMemo as UH}from"react";var OU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let H=document.getElementsByName(f);if(!H.length){if(U)console.warn(`No input found with name ${f}`);return[]}let P=H[0];if(P instanceof HTMLInputElement){if(P.type==="file"&&P.files)return Array.from(P.files);return[P.value]}if(P instanceof HTMLTextAreaElement)return[P.value];return[]},PH=(f,U={},H=[],P,C)=>{let Z=C?.renderingLogEnabled??!1,D=C?.timeout,I=C?.retryPolicy,$=I?.maxRetries??0,z=I?.baseDelay??1000,T=I?.retryOn??[502,503,504];if(Z)console.log("Registering AJAX: ",P,U,H);return async(X={})=>{if(typeof window>"u"||typeof document>"u"){if(Z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let G=C?.apiServer;if(!G){if(Z)console.warn("AJAX skipped: apiServer is missing");return}if(!P||!f){if(Z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(H.includes("sid"))await wf();let O=new FormData;for(let[V,Y]of Object.entries({...U,...X}))O.append(V,Y);for(let V of H)for(let Y of OU(V,Z))O.append(V,Y);let J=G+"api/ajax_content"+P;f(null);let q;for(let V=0;V<=$;V++){if(V>0){let B=z*2**(V-1);if(Z)console.log(`AJAX retry ${V}/${$} after ${B}ms`);await new Promise((R)=>setTimeout(R,B))}let Y=D!=null?new AbortController:null,W=Y&&setTimeout(()=>Y.abort(),D);try{let B=await fetch(J,{method:"POST",body:O,signal:Y?.signal});if(W)clearTimeout(W);if(!B.ok&&T.includes(B.status)&&V<$){q=Error(`HTTP ${B.status}`);continue}let s=(B.headers.get("content-type")||"").includes("application/json");if(!!B.body?.getReader&&!s){let a=B.body.getReader(),XU=new TextDecoder,c="";while(!0){let{done:Zf,value:GU}=await a.read();if(Zf)break;c+=XU.decode(GU,{stream:!0});let Ff=c.split(`
|
|
3
|
-
`);
|
|
2
|
+
import{useContext as Of,useEffect as Tf,useRef as yU}from"react";import{createContext as PU,useContext as SU}from"react";var m=PU(null),d=()=>{let f=SU(m);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},v=()=>{let{apiServer:f}=d();return f},h=v,r=()=>{let{centrifugeServer:f}=d();return f};var R=()=>{let{enableRenderingLog:f}=d();return f},_f=R;var Df="__piedemo__";import{createContext as FU}from"react";import{Centrifuge as wf}from"centrifuge";var Mf=new Map,n=(f,U)=>{if(!U)return null;let I=`${f}::${U}`,C=Mf.get(I);if(C)return C;async function D(){let Z=await fetch(f+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new wf.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let H=new wf(U,{getToken:D});return Mf.set(I,H),H},KU=FU(null),N=KU;import{io as _U}from"socket.io-client";import{createContext as wU}from"react";var Lf=new Map,i=(f)=>{let U=Lf.get(f);if(U)return U;let I=_U(f,{autoConnect:!1,transports:["websocket"]});return Lf.set(f,I),I},MU=wU(null),E=MU;import LU from"mitt";import{createContext as oU,useCallback as RU,useContext as NU}from"react";var Zf=null;function u(){if(!Zf)Zf=LU();return Zf}var of=oU(null);function EU(f){let U=NU(of);return RU((I,C)=>{(U??u()).emit(`pie${I}_${f}`,C)},[f,U])}var y=of;import{jsx as xU,jsxs as mU,Fragment as jU}from"react/jsx-runtime";var kU=({card:f,data:U,children:I,useSocketioSupport:C=!1,useCentrifugeSupport:D=!1,useMittSupport:H=!1,centrifugeChannel:Z=void 0,methods:V=void 0,stored:O=void 0})=>{let T=_f(),$=yU(V);if($.current=V,T)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:C,centrifuge:D,mitt:H,centrifugeChannel:Z}),console.log("[PieCard] Methods:",V?Object.keys(V):"none"),console.log("[PieCard] Has children:",!!I);let J=Of(E),Y=Of(N),z=Of(y);if(Tf(()=>{if(!J||!C||!$.current||!U.name){if(T&&C)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!J,useSocketioSupport:C,hasMethods:!!$.current,hasDataName:!!U?.name});return}let X=Object.keys($.current??{}).map((q)=>{let G=`pie${q}_${U.name}`;if(T)console.log(`[PieCard] Socket.IO registering event: ${G}`);let S=(W)=>{$.current?.[q]?.(W)};return J.on(G,S),[G,S]});return()=>{X.forEach(([q,G])=>{if(T)console.log(`[PieCard] Socket.IO unregistering event: ${q}`);J.off(q,G)})}},[J,U.name,C]),Tf(()=>{if(!Y||!D||!Z||!U.name){if(T&&D)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!Y,useCentrifugeSupport:D,hasCentrifugeChannel:!!Z,hasMethods:!!$.current,hasDataName:!!U?.name});return}let X=Object.keys($.current??{}).map((q)=>{let G=`pie${q}_${U.name}_${Z}`;if(T)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let S=Y.newSubscription(G);return S.on("publication",(W)=>{if(T)console.log(`[PieCard] Centrifuge received data on ${G}:`,W.data);$.current?.[q]?.(W.data)}),S.subscribe(),S});return()=>{X.forEach((q)=>{if(T)console.log("[PieCard] Centrifuge unsubscribing from channel");q.unsubscribe(),Y.removeSubscription(q)})}},[Y,Z,U.name,D]),Tf(()=>{if(!z||!H||!U.name){if(T&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!z,useMittSupport:H,hasMethods:!!$.current,hasDataName:!!U?.name});return}let B=Object.keys($.current??{}),X={};return B.forEach((q)=>{let G=`pie${q}_${U.name}`,S=(W)=>{if(T)console.log(`[PieCard] Mitt registering event: ${G}`);$.current?.[q]?.(W)};X[G]=S,z.on(G,S)}),()=>{Object.entries(X).forEach(([q,G])=>{if(T)console.log(`[PieCard] Mitt unregistering event: ${q}`);z.off(q,G)})}},[z,U.name,H]),T)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return mU(jU,{children:[xU("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),I]});return I},A=kU;import{lazy as uU}from"react";var j=new Map;function Rf(f,U){return U.catch(()=>{if(j.get(f)===U)j.delete(f)}),j.set(f,U),U}function Vf(f,U){return uU(()=>{if(j.has(U))return j.get(U);return Rf(U,f().then((I)=>I))})}var Nf=async(f,U)=>{if(!U)return;if(j.has(f))return j.get(f);return Rf(f,U().then((I)=>I))};var L=new Map,bU=(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=Vf(U.loader,f.name),U.isLazy=!0;return U};function Q(f){let U=bU(f);return L.set(U.name,U),U.component}var dU=(f)=>{f.forEach((U)=>Q(U))},vU=(f)=>{L.delete(f)},pU=(f)=>{return L.has(f)},gU=(f)=>{return L.get(f)?.metadata},p=(f)=>{return L.get(f)},cU=()=>{return Array.from(L.keys())},lU=()=>{return L.size},yf=()=>Array.from(L.values()).filter((f)=>f.isLazy&&typeof f.loader==="function").map((f)=>f.name),kf=(f)=>{let U=L.get(f);if(!U?.isLazy||typeof U.loader!=="function")return;return Nf(f,U.loader)},Ef=!1,hU=()=>{if(Ef||typeof window>"u")return;Ef=!0;let f=navigator.connection;if(f?.saveData)return;if(f?.effectiveType&&["slow-2g","2g"].includes(f.effectiveType))return;let U=yf(),I="requestIdleCallback"in window?(D)=>window.requestIdleCallback(D,{timeout:2000}):(D)=>window.setTimeout(D,300),C=(D)=>{if(D>=U.length)return;I(()=>{Promise.resolve().then(()=>kf(U[D])).catch(()=>{}).finally(()=>C(D+1))})};C(0)};import{useContext as jf,memo as HI}from"react";import{createContext as rU}from"react";import{jsx as sU,Fragment as iU}from"react/jsx-runtime";var nU=rU(sU(iU,{})),_=nU;import{createContext as tU}from"react";var aU=tU(void 0),k=aU;import{Component as eU,Suspense as fI}from"react";import{jsx as CI}from"react/jsx-runtime";var UI=2,II=400;class b extends eU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(f){if(this.props.onError?.(f),this.state.attempt<UI){let U=II*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},U)}}componentDidUpdate(f){if(f.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return CI(fI,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as $f}from"react/jsx-runtime";function DI({uiConfig:f,setUiAjaxConfiguration:U}){let I=jf(_),C=jf(k),D=R();if(D)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let H=p(f.card);if(!H?.component){if(D)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return I}if(D)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let Z=H.component,V=$f(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(H.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",H.name);return $f(b,{name:H.name,fallback:H.fallback?$f(H.fallback,{}):I,onError:C,children:V})}if(D)console.log("[UI] Rendering component directly:",H.name);return V}var K=HI(DI);import{useContext as xf}from"react";import{createContext as ZI}from"react";var OI=ZI(null),w=OI;import{jsx as s}from"react/jsx-runtime";function mf({uiConfig:f,setUiAjaxConfiguration:U}){let I=xf(_),C=xf(k),D=R();if(D)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let H=p(f.card);if(!H?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return I}if(D)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(D)console.log("[UILoading] Rendering fallback for:",H.name);let O=H.fallback;return s(O,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",H.name);let Z=H.component,V=s(w.Provider,{value:mf,children:s(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(H.isLazy)return s(b,{name:H.name,fallback:I,onError:C,children:V});return V}var zf=mf;import{useContext as TI}from"react";import{jsx as qf}from"react/jsx-runtime";var VI=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,sx:D}=f,H=TI(w)??K;return qf(A,{card:C,data:f,children:qf("div",{style:D,id:C,children:U.map((Z,V)=>{return qf(H,{uiConfig:Z,setUiAjaxConfiguration:I},`children-${V}`)})})})},uf=VI;var $I=Q({name:"SequenceCard",component:uf,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as zI}from"react";import{jsx as bf}from"react/jsx-runtime";var qI=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C}=f,D=zI(w)??K;return bf(A,{card:C,data:f,children:U.map((H,Z)=>{return bf(D,{uiConfig:H,setUiAjaxConfiguration:I},`children-${Z}`)})})},df=qI;var BI=Q({name:"UnionCard",component:df,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as YI,useState as WI}from"react";import QI from"html-react-parser";import{useCallback as t,useEffect as GI,useRef as Bf,useState as JI}from"react";function XI(){let f=new AudioContext,U=f.createOscillator(),I=U.connect(f.createMediaStreamDestination());U.start();let C=I.stream.getAudioTracks()[0];return C.enabled=!1,C}function Gf(f=null,U){let[I,C]=JI(!1),D=Bf(null),H=Bf(null),Z=Bf(null),V=t(async(J,Y=!0)=>{if(D.current)O();let z=new RTCPeerConnection;if(z.onconnectionstatechange=()=>{if(z.connectionState==="connected")C(!0);else if(["disconnected","failed","closed"].includes(z.connectionState))C(!1)},z.ontrack=(P)=>{if(f)f.srcObject=P.streams[0]},Y){let P=await navigator.mediaDevices.getUserMedia({audio:!0});z.addTrack(P.getTracks()[0],P)}else{let P=XI();z.addTrack(P)}let B=z.createDataChannel("oai-events");H.current=B,Z.current=new Promise((P)=>{B.addEventListener("open",()=>{P()})});let X=await z.createOffer();await z.setLocalDescription(X);let W=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await z.setRemoteDescription({type:"answer",sdp:W}),D.current=z,await Z.current},[f]),O=t(()=>{let J=H.current;if(J)J.close();D.current?.getSenders()?.forEach((Y)=>Y.track?.stop()),D.current?.close(),C(!1),D.current=null,H.current=null,Z.current=null},[f]),T=t((J)=>{let Y=H.current;if(!Y){console.error("Data channel is not ready",J);return}let z=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),Y.send(JSON.stringify(J)),!J.timestamp)J.timestamp=z;U?.(J)},[U,f]),$=t((J)=>{if(!H.current){console.error("Data channel is not ready");return}let z=()=>{T({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),T({type:"response.create"})};if(Z.current)Z.current.then(z);else z()},[U,f]);return GI(()=>{let J=H.current;if(!J)return;let Y=(z)=>{let B=JSON.parse(z.data);if(!B.timestamp)B.timestamp=new Date().toLocaleTimeString();U?.(B)};return J.addEventListener("message",Y),()=>{J.removeEventListener("message",Y)}},[U,f]),{isSessionActive:I,startSession:V,stopSession:O,sendTextMessage:$}}import{jsx as PI}from"react/jsx-runtime";var AI=({data:f})=>{let{html:U,useSocketioSupport:I,useCentrifugeSupport:C,useMittSupport:D,centrifugeChannel:H}=f,[Z,V]=WI(U),{isSessionActive:O,startSession:T,sendTextMessage:$}=Gf(null,(B)=>{if(console.log(B.type,B.type==="response.output_text.delta"&&B.delta),B.type==="response.output_text.delta"&&B.delta)V((X)=>X+B.delta)});return YI(()=>{V(U)},[U]),PI(A,{card:"HTMLEmbedCard",data:f,methods:{update:(B)=>{V(B.value)},generateUsingAI:async(B)=>{try{if(!O&&B.token)await T(B.token,!1);$(B.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(B)=>{if(!O&&B.token)await T(B.token,!1)}},useCentrifugeSupport:C,useSocketioSupport:I,useMittSupport:D,centrifugeChannel:H,children:QI(Z)})},vf=AI;var SI=Q({name:"HTMLEmbedCard",component:vf,metadata:{author:"Swarm.ing"}});import{useEffect as FI,useState as KI}from"react";import{jsx as pf}from"react/jsx-runtime";var _I=({data:f})=>{let{name:U,value:I,useSocketioSupport:C,useCentrifugeSupport:D,useMittSupport:H,centrifugeChannel:Z}=f,[V,O]=KI(I);return FI(()=>{O(I)},[I]),pf(A,{card:"HiddenCard",data:f,useSocketioSupport:C,useCentrifugeSupport:D,useMittSupport:H,centrifugeChannel:Z,methods:{update:({value:T})=>{O(T)}},children:pf("input",{type:"hidden",id:U,name:U,value:V})})},gf=_I;var wI=Q({name:"HiddenCard",component:gf,metadata:{author:"Swarm.ing"}});import{useContext as cf,useEffect as oI}from"react";import{createContext as MI}from"react";var LI=MI(void 0),o=LI;import{jsx as EI,Fragment as NI}from"react/jsx-runtime";var RI=({data:f})=>{let{url:U}=f,I=cf(o),C=cf(_);return oI(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else I?.(U)},[U,I]),EI(NI,{children:C})},lf=RI;var yI=Q({name:"AutoRedirectCard",component:lf,metadata:{author:"Swarm.ing"}});import{Bounce as kI,Slide as jI,Zoom as xI,Flip as mI}from"react-toastify";import{toast as uI,ToastContainer as bI}from"react-toastify";import{useContext as dI,useMemo as vI,useRef as pI}from"react";import{jsx as Jf,Fragment as nI}from"react/jsx-runtime";var gI={bounce:kI,slide:jI,zoom:xI,flip:mI},cI=(f)=>{let U={...f,type:f.alertType,transition:f.transition?gI[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};uI(f.message,U)},lI=(f)=>{console.log("Log event",f)},hI=(f)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(C){console.error("[IOEventsCard] Failed to show notification",C)}},I=window.Notification.permission;if(I==="granted"){U();return}if(I==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((C)=>{if(C==="granted")U()})},rI=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:C,centrifugeChannel:D}=f,H=dI(o),Z=pI(H);Z.current=H;let V=vI(()=>({alert:cI,log:lI,push:hI,redirect:(O)=>{if(O.to){let T=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else Z.current?.(T)}else window.location.reload()},reload:(O)=>{if(O.to){let T=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else Z.current?.(T)}else window.location.reload()}}),[]);return Jf(nI,{children:Jf(A,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:C,centrifugeChannel:D,methods:V,children:Jf(bI,{})})})},hf=rI;var iI=Q({name:"IOEventsCard",component:hf,metadata:{author:"Swarm.ing"}});import{useEffect as rf,useState as sI}from"react";import{jsx as nf}from"react/jsx-runtime";var tI=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=sI(C);return rf(()=>{T(C)},[C]),rf(()=>{if(typeof window>"u")return;sessionStorage.setItem(I,O)},[I,O]),nf(A,{card:"SessionStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{sessionStorage.removeItem(I),T("")}},children:nf("input",{type:"hidden",id:U,name:U,value:O})})},sf=tI;var aI=Q({name:"SessionStorageCard",component:sf,metadata:{author:"PieData"}});import{useEffect as tf,useState as eI}from"react";import{jsx as af}from"react/jsx-runtime";var fC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=eI(C);return tf(()=>{T(C)},[C]),tf(()=>{if(typeof window>"u")return;localStorage.setItem(I,O)},[I,O]),af(A,{card:"DeviceStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{localStorage.removeItem(I),T("")}},children:af("input",{type:"hidden",id:U,name:U,value:O})})},ef=fC;var UC=Q({name:"DeviceStorageCard",component:ef,metadata:{author:"PieData"}});import{useEffect as fU,useState as IC}from"react";import{jsx as UU}from"react/jsx-runtime";var CC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=IC(C);return fU(()=>{T(C)},[C]),fU(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.CloudStorage;if(!$)return;$.setItem(I,O)},[I,O]),UU(A,{card:"CloudStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{let $=window.Telegram?.WebApp?.CloudStorage;if($)$.removeItem(I);T("")}},children:UU("input",{type:"hidden",id:U,name:U,value:O})})},IU=CC;var HC=Q({name:"CloudStorageCard",component:IU,metadata:{author:"PieData"}});import{useEffect as CU,useState as DC}from"react";import{jsx as HU}from"react/jsx-runtime";var ZC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=DC(C);return CU(()=>{T(C)},[C]),CU(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.SecureStorage;if(!$)return;$.setItem(I,O)},[I,O]),HU(A,{card:"SecureStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{let $=window.Telegram?.WebApp?.SecureStorage;if($)$.removeItem(I);T("")}},children:HU("input",{type:"hidden",id:U,name:U,value:O})})},DU=ZC;var OC=Q({name:"SecureStorageCard",component:DU,metadata:{author:"PieData"}});import{useCallback as Xf,useContext as Yf,useEffect as TC,useRef as VC,useState as ZU}from"react";import{jsx as OU}from"react/jsx-runtime";var $C=({data:f,content:U})=>{let{useLoader:I,noReturn:C,returnType:D,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:V,centrifugeChannel:O}=f,T=Yf(_),$=Yf(w)??K,[J,Y]=ZU(!1),[z,B]=ZU(null),X=VC(U),q=Yf(y),G=Xf((P)=>{if(P===null)Y(!0);else if(Y(!1),!C)X.current=P;if(!C)B(P)},[C]),S=Xf((P)=>{X.current=P.content,B(P.content)},[]),W=Xf((P)=>{if(P===null)Y(!0);else if(Y(!1),!C)for(let c of P)q?.emit(c.name,c.data)},[C,q]);if(TC(()=>{B(U),Y(!1)},[U]),!z&&I)return T;return OU(A,{card:"AjaxGroupCard",data:f,methods:{changeContent:S},useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:V,centrifugeChannel:O,children:OU($,{uiConfig:z??X.current,setUiAjaxConfiguration:D==="events"?W:G})})},TU=$C;var zC=Q({name:"AjaxGroupCard",component:TU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as VU}from"react";import{jsx as Wf}from"react/jsx-runtime";var qC=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,url:D,sx:H}=f,Z=VU(o),V=VU(w)??K;return Wf(A,{card:C,data:f,children:Wf("div",{style:H,id:C,onClick:(T)=>{if(D)if(T.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(D))window.location.href=D;else Z?.(D)},children:Wf(V,{setUiAjaxConfiguration:I,uiConfig:U})})})},$U=qC;var BC=Q({name:"BoxCard",component:$U,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as GC}from"react";import{jsx as Qf}from"react/jsx-runtime";var JC=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,sx:D}=f,H=GC(w)??K;return Qf(A,{card:C,data:f,children:Qf("div",{style:D,id:C,children:U.map((Z,V)=>{return Qf(H,{uiConfig:Z,setUiAjaxConfiguration:I},`children-${V}`)})})})},zU=JC;var XC=Q({name:"OneOfCard",component:zU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as g}from"react";import{QueryClient as wC,QueryClientProvider as MC,useQuery as LC}from"@tanstack/react-query";import{useContext as QC,useEffect as AC}from"react";import{useEffect as YC,useState as WC}from"react";var a=new Map,e=new Map;function ff(f,U){let I=`${f}::${U}`,C=f?a.get(I):void 0,[D,H]=WC(C??null);return YC(()=>{if(!f)return;if(a.has(I)){H(a.get(I));return}let Z=e.get(I);if(!Z)Z=fetch(f+`api/support/${U}`,{method:"GET"}).then((O)=>O.json()).then((O)=>{return a.set(I,O),e.delete(I),O}).catch((O)=>{throw e.delete(I),O}),e.set(I,Z);let V=!1;return Z.then((O)=>{if(!V)H(O)}).catch(()=>{}),()=>{V=!0}},[f,U,I]),D}var Af=null,qU=null;function BU(){qU?.()}function Pf(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!Af)Af=new Promise((f)=>{qU=()=>{f()}});return Af}var PC=({children:f})=>{let U=QC(E),I=h(),C=ff(I,"socketIO"),D=(H)=>{if(typeof window<"u")window.sid=H.sid,BU(),console.log(`SocketIO initialized: ${window.sid}`)};return AC(()=>{if(!U)return;let H=()=>{console.log("SocketIO connected")},Z=(V)=>{console.log(`SocketIO disconnected: ${V}`),U.connect()};if(C)U.on("pieinit",D),U.on("connect",H),U.on("disconnect",Z),U.connect();return()=>{if(C)U.off("pieinit",D),U.off("connect",H),U.off("disconnect",Z),U.disconnect()}},[U,C]),f},Uf=PC;import{useContext as SC,useEffect as FC}from"react";var KC=({children:f})=>{let U=SC(N),I=h(),C=ff(I,"centrifuge");return FC(()=>{if(!U)return;let D=()=>{console.log("Centrifuge connected")},H=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(C)U.on("connected",D),U.on("disconnected",H),U.connect();return()=>{if(C)U.disconnect()}},[U,C]),f},If=KC;import{createAxiosDateTransformer as oC}from"axios-date-transformer";import{jsx as _C}from"react/jsx-runtime";function GU(f,U,I){if(!U)return I;let C=f.replace(/^\//,""),D=U[C];if(!D)return I;return _C(zf,{uiConfig:D})}import{jsx as F,Fragment as EC}from"react/jsx-runtime";var RC=({location:f,fallback:U,piecache:I,onError:C,queryOptions:D,disableGlobalForm:H})=>{let Z=v(),V=r(),O=R(),T=g(()=>oC({baseURL:Z||""}),[Z]),$=g(()=>u(),[]),J=g(()=>Z?i(Z):null,[Z]),Y=g(()=>Z?n(Z,V):null,[Z,V]),{data:z,isLoading:B,error:X}=LC({queryKey:["uiConfig",f.pathname+f.search,Z],enabled:!!Z,queryFn:async()=>{let G=new URLSearchParams(f.search);G.set("__pieroot","web");let S="/api/content"+f.pathname+"?"+G.toString();if(O)console.log("[PieRoot] Fetching UI configuration from:",S);let W=await T.get(S,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(O)console.log("[PieRoot] Received UI configuration:",W.data);return W.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(G)=>Math.min(1000*2**G,30000),...D}),q=GU(f.pathname,I,U);if(!Z)return q??null;if(O)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",V),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!I);if(X){if(O)console.error("[PieRoot] Error fetching UI configuration:",X),console.error("[PieRoot] Error details:",{message:X.message,status:X.response?.status,data:X.response?.data});return C?.(X),q}if(B||!z){if(O)console.log("[PieRoot] Loading state:",{isLoading:B,hasUiConfiguration:!!z});return q}if(O)console.log("[PieRoot] UI configuration loaded successfully:",z),console.log("[PieRoot] Rendering UI with configuration");return F(y.Provider,{value:$,children:F(E.Provider,{value:J,children:F(N.Provider,{value:Y,children:F(_.Provider,{value:U??F(EC,{}),children:F(Uf,{children:F(If,{children:H?F(K,{uiConfig:z}):F("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:F(K,{uiConfig:z})})})})})})})})},NC=(f)=>{let U=g(()=>new wC,[]),I=f.queryClient??U;return F(o.Provider,{value:f.onNavigate,children:F(m.Provider,{value:f.config,children:F(k.Provider,{value:f.onError,children:F(MC,{client:I,children:F(RC,{...f})})})})})},Sf=NC;import{useMemo as Ff,useState as yC}from"react";import{QueryClient as kC,QueryClientProvider as jC}from"@tanstack/react-query";import{jsx as M,Fragment as uC}from"react/jsx-runtime";var xC=({location:f,fallback:U,children:I,disableGlobalForm:C})=>{let D=v(),H=r(),Z=R(),V=Ff(()=>u(),[]),O=Ff(()=>D?i(D):null,[D]),T=Ff(()=>D?n(D,H):null,[D,H]);if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",H),console.log("[PieRoot] Fallback provided:",!!U);return M(y.Provider,{value:V,children:M(E.Provider,{value:O,children:M(N.Provider,{value:T,children:M(_.Provider,{value:U??M(uC,{}),children:M(Uf,{children:M(If,{children:C?I:M("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:I})})})})})})})},mC=(f)=>{let[U]=yC(()=>new kC),I=f.queryClient??U;return M(o.Provider,{value:f.onNavigate,children:M(m.Provider,{value:f.config,children:M(k.Provider,{value:f.onError,children:M(jC,{client:I,children:M(xC,{...f})})})})})},bC=mC;import{useMemo as dC}from"react";import{jsx as JU}from"react/jsx-runtime";var vC=JU("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),pC=({apiServer:f,pathname:U="/",search:I="",centrifugeServer:C,fallback:D,enableRenderingLog:H=!1})=>{let Z=f??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",V=dC(()=>({apiServer:Z,centrifugeServer:C,enableRenderingLog:H,pageProcessor:"web"}),[Z,C,H]);return JU(Sf,{location:{pathname:U,search:I},config:V,fallback:D??vC,onNavigate:(T)=>{if(typeof window<"u")window.history.pushState(null,"",T)}})},gC=pC;import{useMemo as cC}from"react";var XU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let I=document.getElementsByName(f);if(!I.length){if(U)console.warn(`No input found with name ${f}`);return[]}let C=I[0];if(C instanceof HTMLInputElement){if(C.type==="file"&&C.files)return Array.from(C.files);return[C.value]}if(C instanceof HTMLTextAreaElement)return[C.value];return[]},lC=(f,U={},I=[],C,D)=>{let H=D?.renderingLogEnabled??!1,Z=D?.timeout,V=D?.retryPolicy,O=V?.maxRetries??0,T=V?.baseDelay??1000,$=V?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",C,U,I);return async(J={})=>{if(typeof window>"u"||typeof document>"u"){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let Y=D?.apiServer;if(!Y){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!C||!f){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(I.includes("sid"))await Pf();let z=new FormData;for(let[q,G]of Object.entries({...U,...J}))z.append(q,G);for(let q of I)for(let G of XU(q,H))z.append(q,G);let B=Y+"api/ajax_content"+C;f(null);let X;for(let q=0;q<=O;q++){if(q>0){let W=T*2**(q-1);if(H)console.log(`AJAX retry ${q}/${O} after ${W}ms`);await new Promise((P)=>setTimeout(P,W))}let G=Z!=null?new AbortController:null,S=G&&setTimeout(()=>G.abort(),Z);try{let W=await fetch(B,{method:"POST",body:z,signal:G?.signal});if(S)clearTimeout(S);if(!W.ok&&$.includes(W.status)&&q<O){X=Error(`HTTP ${W.status}`);continue}let c=(W.headers.get("content-type")||"").includes("application/json");if(!!W.body?.getReader&&!c){let l=W.body.getReader(),YU=new TextDecoder,x="";while(!0){let{done:Cf,value:WU}=await l.read();if(Cf)break;x+=YU.decode(WU,{stream:!0});let Kf=x.split(`
|
|
3
|
+
`);x=Kf.pop()??"";for(let QU of Kf){let Hf=QU.trim();if(!Hf)continue;try{let AU=JSON.parse(Hf);f([AU])}catch{if(H)console.warn("Failed to parse streamed line:",Hf)}}}if(x.trim())try{let Cf=JSON.parse(x);f([Cf])}catch{if(H)console.warn("Failed to parse final streamed line:",x)}return{}}else{let l=await W.json();return f(l),l}}catch(W){if(S)clearTimeout(S);if(X=W,q<O)continue;if(H)console.error("AJAX request failed:",W);return f(null),W}}if(H)console.error("AJAX request failed after retries:",X);return f(null),X}},hC=(f,U={},I=[],C,D)=>{let{apiServer:H,enableRenderingLog:Z}=d(),V=JSON.stringify(U),O=JSON.stringify(I),T=JSON.stringify(D);return cC(()=>lC(f,U,I,C,{apiServer:H,renderingLogEnabled:Z,timeout:D?.timeout,retryPolicy:D?.retryPolicy}),[f,V,O,C,H,Z,T])};import{clsx as rC}from"clsx";import{twMerge as nC}from"tailwind-merge";function iC(...f){return nC(rC(f))}var sC=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var tC=(f,U)=>`${f}${Df}${U}`;export{EU as usePieEmit,hC as useAjaxSubmit,vU as unregisterComponent,Vf as trackLazy,sC as submitGlobalForm,L as registry,Q as registerPieComponent,dU as registerMultipleComponents,XU as readAjaxKey,kf as preloadComponent,hU as prefetchLazyComponents,tC as pieName,pU as hasComponent,lU as getRegistrySize,p as getRegistryEntry,yf as getLazyComponentNames,u as getEmitter,gU as getComponentMeta,cU as getAllRegisteredComponents,iC as cn,BI as UnionCard,w as UIRendererContext,zf as UILoading,K as UI,E as SocketIOContext,aI as SessionStorageCard,$I as SequenceCard,OC as SecureStorageCard,Sf as PieRoot,gC as PiePreviewRoot,m as PieConfigContext,A as PieCard,bC as PieBaseRoot,Df as PIEBREAK,XC as OneOfCard,y as MittContext,iI as IOEventsCard,wI as HiddenCard,SI as HTMLEmbedCard,_ as FallbackContext,UC as DeviceStorageCard,HC as CloudStorageCard,N as CentrifugeIOContext,BC as BoxCard,yI as AutoRedirectCard,zC as AjaxGroupCard};
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var uP=Object.create;var{getPrototypeOf:dP,defineProperty:Tf,getOwnPropertyNames:OU,getOwnPropertyDescriptor:bP}=Object,JU=Object.prototype.hasOwnProperty;var YU=(f,U,C)=>{C=f!=null?uP(dP(f)):{};let P=U||!f||!f.__esModule?Tf(C,"default",{value:f,enumerable:!0}):C;for(let H of OU(f))if(!JU.call(P,H))Tf(P,H,{get:()=>f[H],enumerable:!0});return P},VU=new WeakMap,pP=(f)=>{var U=VU.get(f),C;if(U)return U;if(U=Tf({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")OU(f).map((P)=>!JU.call(U,P)&&Tf(U,P,{get:()=>f[P],enumerable:!(C=bP(f,P))||C.enumerable}));return VU.set(f,U),U};var gP=(f,U)=>{for(var C in U)Tf(f,C,{get:U[C],enumerable:!0,configurable:!0,set:(P)=>U[C]=()=>P})};var oC={};gP(oC,{useWebApp:()=>pf,usePieMittAgentTools:()=>MP,usePieEmit:()=>KU,useOpenAIWebRTC:()=>Of,useMaxWebApp:()=>cf,useAjaxSubmit:()=>SP,unregisterComponent:()=>MU,submitGlobalForm:()=>yP,registry:()=>p,registerPieComponent:()=>Q,registerMultipleComponents:()=>FU,readAjaxKey:()=>zU,pieName:()=>mP,hasComponent:()=>LU,getRegistrySize:()=>yU,getRegistryEntry:()=>a,getMittAgentTools:()=>IU,getEmitter:()=>m,getComponentMeta:()=>AU,getAllRegisteredComponents:()=>NU,cn:()=>NP,UnionCard:()=>pU,UIRendererContext:()=>E,UILoading:()=>of,UI:()=>w,SocketIOContext:()=>y,SessionStorageCard:()=>fP,SequenceCard:()=>uU,SecureStorageCard:()=>ZP,PieTelegramRoot:()=>QP,PieRoot:()=>BP,PieMaxRoot:()=>wP,PieConfigContext:()=>u,PieCard:()=>_,PieBaseRoot:()=>RP,PIEBREAK:()=>_f,OneOfCard:()=>JP,MittContext:()=>M,IOEventsCard:()=>aU,HiddenCard:()=>rU,HTMLEmbedCard:()=>hU,FallbackContext:()=>K,DeviceStorageCard:()=>PP,CloudStorageCard:()=>HP,CentrifugeIOContext:()=>N,BoxCard:()=>TP,AutoRedirectCard:()=>iU,AjaxGroupCard:()=>zP});module.exports=pP(oC);var d=require("react");var Qf=require("react"),u=Qf.createContext(null),t=()=>{let f=Qf.useContext(u);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},b=()=>{let{apiServer:f}=t();return f},Rf=b,g=()=>{let{centrifugeServer:f}=t();return f};var x=()=>{let{enableRenderingLog:f}=t();return f},XU=x,GU=()=>{let{pageProcessor:f}=t();return f};var _f="__piedemo__";var BU=require("react"),nf=require("centrifuge"),qU=new Map,v=(f,U)=>{if(!U)return null;let C=`${f}::${U}`,P=qU.get(C);if(P)return P;async function H(){let D=await fetch(f+"api/centrifuge/gen_token");if(!D.ok){if(D.status===403)throw new nf.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${D.status}`)}return(await D.json()).token}let Z=new nf.Centrifuge(U,{getToken:H});return qU.set(C,Z),Z},vP=BU.createContext(null),N=vP;var QU=require("socket.io-client"),RU=require("react"),WU=new Map,c=(f)=>{let U=WU.get(f);if(U)return U;let C=QU.io(f,{autoConnect:!1,transports:["websocket"]});return WU.set(f,C),C},cP=RU.createContext(null),y=cP;var _U=YU(require("mitt")),i=require("react"),tf=null;function m(){if(!tf)tf=_U.default();return tf}var wU=i.createContext(null);function KU(f){let U=i.useContext(wU);return i.useCallback((C,P)=>{(U??m()).emit(`pie${C}_${f}`,P)},[f,U])}var M=wU;var s=require("react/jsx-runtime"),hP=({card:f,data:U,children:C,useSocketioSupport:P=!1,useCentrifugeSupport:H=!1,useMittSupport:Z=!1,centrifugeChannel:D=void 0,methods:I=void 0,stored:$=void 0})=>{let z=XU(),T=d.useRef(I);if(T.current=I,z)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:P,centrifuge:H,mitt:Z,centrifugeChannel:D}),console.log("[PieCard] Methods:",I?Object.keys(I):"none"),console.log("[PieCard] Has children:",!!C);let X=d.useContext(y),G=d.useContext(N),O=d.useContext(M);if(d.useEffect(()=>{if(!X||!P||!T.current||!U.name){if(z&&P)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!X,useSocketioSupport:P,hasMethods:!!T.current,hasDataName:!!U?.name});return}let q=Object.keys(T.current??{}).map((V)=>{let Y=`pie${V}_${U.name}`;if(z)console.log(`[PieCard] Socket.IO registering event: ${Y}`);let W=(B)=>{T.current?.[V]?.(B)};return X.on(Y,W),[Y,W]});return()=>{q.forEach(([V,Y])=>{if(z)console.log(`[PieCard] Socket.IO unregistering event: ${V}`);X.off(V,Y)})}},[X,U.name,P]),d.useEffect(()=>{if(!G||!H||!D||!U.name){if(z&&H)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!G,useCentrifugeSupport:H,hasCentrifugeChannel:!!D,hasMethods:!!T.current,hasDataName:!!U?.name});return}let q=Object.keys(T.current??{}).map((V)=>{let Y=`pie${V}_${U.name}_${D}`;if(z)console.log(`[PieCard] Centrifuge subscribing to channel: ${Y}`);let W=G.newSubscription(Y);return W.on("publication",(B)=>{if(z)console.log(`[PieCard] Centrifuge received data on ${Y}:`,B.data);T.current?.[V]?.(B.data)}),W.subscribe(),W});return()=>{q.forEach((V)=>{if(z)console.log("[PieCard] Centrifuge unsubscribing from channel");V.unsubscribe(),G.removeSubscription(V)})}},[G,D,U.name,H]),d.useEffect(()=>{if(!O||!Z||!U.name){if(z&&Z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!O,useMittSupport:Z,hasMethods:!!T.current,hasDataName:!!U?.name});return}let J=Object.keys(T.current??{}),q={};return J.forEach((V)=>{let Y=`pie${V}_${U.name}`,W=(B)=>{if(z)console.log(`[PieCard] Mitt registering event: ${Y}`);T.current?.[V]?.(B)};q[Y]=W,O.on(Y,W)}),()=>{Object.entries(q).forEach(([V,Y])=>{if(z)console.log(`[PieCard] Mitt unregistering event: ${V}`);O.off(V,Y)})}},[O,U.name,Z]),z)console.log("[PieCard] Rendering complete, returning children");if($!==void 0)return s.jsxs(s.Fragment,{children:[s.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify($)}),C]});return C},_=hP;var SU=require("react"),sf=new Map;function oU(f,U){return SU.lazy(()=>{if(sf.has(U))return sf.get(U);let C=f().then((P)=>P);return sf.set(U,C),C})}var p=new Map,lP=(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=oU(U.loader,f.name),U.loader=void 0,U.isLazy=!0;return U};function Q(f){let U=lP(f);return p.set(U.name,U),U.component}var FU=(f)=>{f.forEach((U)=>Q(U))},MU=(f)=>{p.delete(f)},LU=(f)=>{return p.has(f)},AU=(f)=>{return p.get(f)?.metadata},a=(f)=>{return p.get(f)},NU=()=>{return Array.from(p.keys())},yU=()=>{return p.size};var e=require("react");var mU=require("react"),wf=require("react/jsx-runtime"),rP=mU.createContext(wf.jsx(wf.Fragment,{})),K=rP;var Kf=require("react/jsx-runtime");function nP({uiConfig:f,setUiAjaxConfiguration:U}){let C=e.useContext(K),P=x();if(P)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let H=a(f.card);if(!H?.component){if(P)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return C}if(P)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let Z=H.component,D=Kf.jsx(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(H.isLazy){if(P)console.log("[UI] Rendering lazy component with Suspense:",H.name);return Kf.jsx(e.Suspense,{fallback:H.fallback?Kf.jsx(H.fallback,{}):C,children:D},`${H.name}`)}if(P)console.log("[UI] Rendering component directly:",H.name);return D}var w=e.memo(nP);var Sf=require("react");var EU=require("react"),tP=EU.createContext(null),E=tP;var Vf=require("react/jsx-runtime");function kU({uiConfig:f,setUiAjaxConfiguration:U}){let C=Sf.useContext(K),P=x();if(P)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let H=a(f.card);if(!H?.component){if(P)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return C}if(P)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(P)console.log("[UILoading] Rendering fallback for:",H.name);let I=H.fallback;return Vf.jsx(I,{})}if(P)console.log("[UILoading] No fallback, rendering full component:",H.name);let Z=H.component,D=Vf.jsx(E.Provider,{value:kU,children:Vf.jsx(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(H.isLazy)return Vf.jsx(Sf.Suspense,{fallback:C,children:D},`${H.name}`);return D}var of=kU;var xU=require("react");var Ff=require("react/jsx-runtime"),iP=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:P,sx:H}=f,Z=xU.useContext(E)??w;return Ff.jsx(_,{card:P,data:f,children:Ff.jsx("div",{style:H,id:P,children:U.map((D,I)=>{return Ff.jsx(Z,{uiConfig:D,setUiAjaxConfiguration:C},`children-${I}`)})})})},jU=iP;var uU=Q({name:"SequenceCard",component:jU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var dU=require("react");var af=require("react/jsx-runtime"),sP=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:P}=f,H=dU.useContext(E)??w;return af.jsx(_,{card:P,data:f,children:U.map((Z,D)=>{return af.jsx(H,{uiConfig:Z,setUiAjaxConfiguration:C},`children-${D}`)})})},bU=sP;var pU=Q({name:"UnionCard",component:bU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var Mf=require("react"),gU=YU(require("html-react-parser"));var j=require("react");function aP(){let f=new AudioContext,U=f.createOscillator(),C=U.connect(f.createMediaStreamDestination());U.start();let P=C.stream.getAudioTracks()[0];return P.enabled=!1,P}function Of(f=null,U){let[C,P]=j.useState(!1),H=j.useRef(null),Z=j.useRef(null),D=j.useRef(null),I=j.useCallback(async(X,G=!0)=>{if(H.current)$();let O=new RTCPeerConnection;if(O.onconnectionstatechange=()=>{if(O.connectionState==="connected")P(!0);else if(["disconnected","failed","closed"].includes(O.connectionState))P(!1)},O.ontrack=(R)=>{if(f)f.srcObject=R.streams[0]},G){let R=await navigator.mediaDevices.getUserMedia({audio:!0});O.addTrack(R.getTracks()[0],R)}else{let R=aP();O.addTrack(R)}let J=O.createDataChannel("oai-events");Z.current=J,D.current=new Promise((R)=>{J.addEventListener("open",()=>{R()})});let q=await O.createOffer();await O.setLocalDescription(q);let B=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:q.sdp,headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/sdp"}})).text();await O.setRemoteDescription({type:"answer",sdp:B}),H.current=O,await D.current},[f]),$=j.useCallback(()=>{let X=Z.current;if(X)X.close();H.current?.getSenders()?.forEach((G)=>G.track?.stop()),H.current?.close(),P(!1),H.current=null,Z.current=null,D.current=null},[f]),z=j.useCallback((X)=>{let G=Z.current;if(!G){console.error("Data channel is not ready",X);return}let O=new Date().toLocaleTimeString();if(X.event_id=X.event_id||crypto.randomUUID(),G.send(JSON.stringify(X)),!X.timestamp)X.timestamp=O;U?.(X)},[U,f]),T=j.useCallback((X)=>{if(!Z.current){console.error("Data channel is not ready");return}let O=()=>{z({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:X}]}}),z({type:"response.create"})};if(D.current)D.current.then(O);else O()},[U,f]);return j.useEffect(()=>{let X=Z.current;if(!X)return;let G=(O)=>{let J=JSON.parse(O.data);if(!J.timestamp)J.timestamp=new Date().toLocaleTimeString();U?.(J)};return X.addEventListener("message",G),()=>{X.removeEventListener("message",G)}},[U,f]),{isSessionActive:C,startSession:I,stopSession:$,sendTextMessage:T}}var cU=require("react/jsx-runtime"),eP=({data:f})=>{let{html:U,useSocketioSupport:C,useCentrifugeSupport:P,useMittSupport:H,centrifugeChannel:Z}=f,[D,I]=Mf.useState(U),{isSessionActive:$,startSession:z,sendTextMessage:T}=Of(null,(J)=>{if(console.log(J.type,J.type==="response.output_text.delta"&&J.delta),J.type==="response.output_text.delta"&&J.delta)I((q)=>q+J.delta)});return Mf.useEffect(()=>{I(U)},[U]),cU.jsx(_,{card:"HTMLEmbedCard",data:f,methods:{update:(J)=>{I(J.value)},generateUsingAI:async(J)=>{try{if(!$&&J.token)await z(J.token,!1);T(J.prompt)}catch(q){console.error("Failed to generate using AI",q)}},initializeAI:async(J)=>{if(!$&&J.token)await z(J.token,!1)}},useCentrifugeSupport:P,useSocketioSupport:C,useMittSupport:H,centrifugeChannel:Z,children:gU.default(D)})},vU=eP;var hU=Q({name:"HTMLEmbedCard",component:vU,metadata:{author:"Swarm.ing"}});var Lf=require("react");var ef=require("react/jsx-runtime"),fC=({data:f})=>{let{name:U,value:C,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:D}=f,[I,$]=Lf.useState(C);return Lf.useEffect(()=>{$(C)},[C]),ef.jsx(_,{card:"HiddenCard",data:f,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:D,methods:{update:({value:z})=>{$(z)}},children:ef.jsx("input",{type:"hidden",id:U,name:U,value:I})})},lU=fC;var rU=Q({name:"HiddenCard",component:lU,metadata:{author:"Swarm.ing"}});var Jf=require("react");var nU=require("react"),UC=nU.createContext(void 0),k=UC;var Af=require("react/jsx-runtime"),PC=({data:f})=>{let{url:U}=f,C=Jf.useContext(k),P=Jf.useContext(K);return Jf.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else C?.(U)},[U,C]),Af.jsx(Af.Fragment,{children:P})},tU=PC;var iU=Q({name:"AutoRedirectCard",component:tU,metadata:{author:"Swarm.ing"}});var h=require("react-toastify"),Nf=require("react-toastify");var Uf=require("react");var ff=require("react/jsx-runtime"),CC={bounce:h.Bounce,slide:h.Slide,zoom:h.Zoom,flip:h.Flip},HC=(f)=>{let U={...f,type:f.alertType,transition:f.transition?CC[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};Nf.toast(f.message,U)},DC=(f)=>{console.log("Log event",f)},ZC=(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(P){console.error("[IOEventsCard] Failed to show notification",P)}},C=window.Notification.permission;if(C==="granted"){U();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((P)=>{if(P==="granted")U()})},$C=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:C,useMittSupport:P,centrifugeChannel:H}=f,Z=Uf.useContext(k),D=Uf.useRef(Z);D.current=Z;let I=Uf.useMemo(()=>({alert:HC,log:DC,push:ZC,redirect:($)=>{if($.to){let z=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else D.current?.(z)}else window.location.reload()},reload:($)=>{if($.to){let z=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else D.current?.(z)}else window.location.reload()}}),[]);return ff.jsx(ff.Fragment,{children:ff.jsx(_,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:C,useMittSupport:P,centrifugeChannel:H,methods:I,children:ff.jsx(Nf.ToastContainer,{})})})},sU=$C;var aU=Q({name:"IOEventsCard",component:sU,metadata:{author:"Swarm.ing"}});var Yf=require("react");var fU=require("react/jsx-runtime"),zC=({data:f})=>{let{name:U,key:C,value:P,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=Yf.useState(P);return Yf.useEffect(()=>{z(P)},[P]),Yf.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(C,$)},[C,$]),fU.jsx(_,{card:"SessionStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{sessionStorage.removeItem(C),z("")}},children:fU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},eU=zC;var fP=Q({name:"SessionStorageCard",component:eU,metadata:{author:"PieData"}});var Xf=require("react");var UU=require("react/jsx-runtime"),IC=({data:f})=>{let{name:U,key:C,value:P,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=Xf.useState(P);return Xf.useEffect(()=>{z(P)},[P]),Xf.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(C,$)},[C,$]),UU.jsx(_,{card:"DeviceStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{localStorage.removeItem(C),z("")}},children:UU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},UP=IC;var PP=Q({name:"DeviceStorageCard",component:UP,metadata:{author:"PieData"}});var Gf=require("react");var PU=require("react/jsx-runtime"),TC=({data:f})=>{let{name:U,key:C,value:P,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=Gf.useState(P);return Gf.useEffect(()=>{z(P)},[P]),Gf.useEffect(()=>{if(typeof window>"u")return;let T=window.Telegram?.WebApp?.CloudStorage;if(!T)return;T.setItem(C,$)},[C,$]),PU.jsx(_,{card:"CloudStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{let T=window.Telegram?.WebApp?.CloudStorage;if(T)T.removeItem(C);z("")}},children:PU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},CP=TC;var HP=Q({name:"CloudStorageCard",component:CP,metadata:{author:"PieData"}});var qf=require("react");var CU=require("react/jsx-runtime"),VC=({data:f})=>{let{name:U,key:C,value:P,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=qf.useState(P);return qf.useEffect(()=>{z(P)},[P]),qf.useEffect(()=>{if(typeof window>"u")return;let T=window.Telegram?.WebApp?.SecureStorage;if(!T)return;T.setItem(C,$)},[C,$]),CU.jsx(_,{card:"SecureStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{let T=window.Telegram?.WebApp?.SecureStorage;if(T)T.removeItem(C);z("")}},children:CU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},DP=VC;var ZP=Q({name:"SecureStorageCard",component:DP,metadata:{author:"PieData"}});var L=require("react");var HU=require("react/jsx-runtime"),OC=({data:f,content:U})=>{let{useLoader:C,noReturn:P,returnType:H,useSocketioSupport:Z,useCentrifugeSupport:D,useMittSupport:I,centrifugeChannel:$}=f,z=L.useContext(K),T=L.useContext(E)??w,[X,G]=L.useState(!1),[O,J]=L.useState(null),q=L.useRef(U),V=L.useContext(M),Y=L.useCallback((R)=>{if(R===null)G(!0);else if(G(!1),!P)q.current=R;if(!P)J(R)},[P]),W=L.useCallback((R)=>{q.current=R.content,J(R.content)},[]),B=L.useCallback((R)=>{if(R===null)G(!0);else if(G(!1),!P)for(let Bf of R)V?.emit(Bf.name,Bf.data)},[P,V]);if(L.useEffect(()=>{J(U),G(!1)},[U]),!O&&C)return z;return HU.jsx(_,{card:"AjaxGroupCard",data:f,methods:{changeContent:W},useSocketioSupport:Z,useCentrifugeSupport:D,useMittSupport:I,centrifugeChannel:$,children:HU.jsx(T,{uiConfig:O??q.current,setUiAjaxConfiguration:H==="events"?B:Y})})},$P=OC;var zP=Q({name:"AjaxGroupCard",component:$P,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var DU=require("react");var yf=require("react/jsx-runtime"),JC=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:P,url:H,sx:Z}=f,D=DU.useContext(k),I=DU.useContext(E)??w;return yf.jsx(_,{card:P,data:f,children:yf.jsx("div",{style:Z,id:P,onClick:(z)=>{if(H)if(z.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else D?.(H)},children:yf.jsx(I,{setUiAjaxConfiguration:C,uiConfig:U})})})},IP=JC;var TP=Q({name:"BoxCard",component:IP,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var VP=require("react");var mf=require("react/jsx-runtime"),YC=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:P,sx:H}=f,Z=VP.useContext(E)??w;return mf.jsx(_,{card:P,data:f,children:mf.jsx("div",{style:H,id:P,children:U.map((D,I)=>{return mf.jsx(Z,{uiConfig:D,setUiAjaxConfiguration:C},`children-${I}`)})})})},OP=YC;var JP=Q({name:"OneOfCard",component:OP,metadata:{author:"Swarm.ing",description:"Different variants"}});var Cf=require("react"),Hf=require("@tanstack/react-query");var uf=require("react");var xf=require("react"),Ef=new Map,kf=new Map;function jf(f,U){let C=`${f}::${U}`,P=f?Ef.get(C):void 0,[H,Z]=xf.useState(P??null);return xf.useEffect(()=>{if(!f)return;if(Ef.has(C)){Z(Ef.get(C));return}let D=kf.get(C);if(!D)D=fetch(f+`api/support/${U}`,{method:"GET"}).then(($)=>$.json()).then(($)=>{return Ef.set(C,$),kf.delete(C),$}).catch(($)=>{throw kf.delete(C),$}),kf.set(C,D);let I=!1;return D.then(($)=>{if(!I)Z($)}).catch(()=>{}),()=>{I=!0}},[f,U,C]),H}var ZU=null,YP=null;function XP(){YP?.()}function $U(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!ZU)ZU=new Promise((f)=>{YP=()=>{f()}});return ZU}var XC=({children:f})=>{let U=uf.useContext(y),C=Rf(),P=jf(C,"socketIO"),H=(Z)=>{if(typeof window<"u")window.sid=Z.sid,XP(),console.log(`SocketIO initialized: ${window.sid}`)};return uf.useEffect(()=>{if(!U)return;let Z=()=>{console.log("SocketIO connected")},D=(I)=>{console.log(`SocketIO disconnected: ${I}`),U.connect()};if(P)U.on("pieinit",H),U.on("connect",Z),U.on("disconnect",D),U.connect();return()=>{if(P)U.off("pieinit",H),U.off("connect",Z),U.off("disconnect",D),U.disconnect()}},[U,P]),f},l=XC;var df=require("react");var GC=({children:f})=>{let U=df.useContext(N),C=Rf(),P=jf(C,"centrifuge");return df.useEffect(()=>{if(!U)return;let H=()=>{console.log("Centrifuge connected")},Z=(D)=>{console.log("Centrifuge disconnected:",D)};if(P)U.on("connected",H),U.on("disconnected",Z),U.connect();return()=>{if(P)U.disconnect()}},[U,P]),f},r=GC;var qP=require("axios-date-transformer");var GP=require("react/jsx-runtime");function Pf(f,U,C){if(!U)return C;let P=f.replace(/^\//,""),H=U[P];if(!H)return C;return GP.jsx(of,{uiConfig:H})}var S=require("react/jsx-runtime"),qC=({location:f,fallback:U,piecache:C,onError:P,queryOptions:H,disableGlobalForm:Z})=>{let D=b(),I=g(),$=x(),z=Cf.useMemo(()=>qP.createAxiosDateTransformer({baseURL:D||""}),[D]),T=Cf.useMemo(()=>m(),[]),X=Cf.useMemo(()=>D?c(D):null,[D]),G=Cf.useMemo(()=>D?v(D,I):null,[D,I]),{data:O,isLoading:J,error:q}=Hf.useQuery({queryKey:["uiConfig",f.pathname+f.search,D],enabled:!!D,queryFn:async()=>{let Y=new URLSearchParams(f.search);Y.set("__pieroot","web");let W="/api/content"+f.pathname+"?"+Y.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",W);let B=await z.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",B.data);return B.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Y)=>Math.min(1000*2**Y,30000),...H}),V=Pf(f.pathname,C,U);if(!D)return V??null;if($)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),console.log("[PieRoot] Piecache provided:",!!C);if(q){if($)console.error("[PieRoot] Error fetching UI configuration:",q),console.error("[PieRoot] Error details:",{message:q.message,status:q.response?.status,data:q.response?.data});return P?.(),V}if(J||!O){if($)console.log("[PieRoot] Loading state:",{isLoading:J,hasUiConfiguration:!!O});return V}if($)console.log("[PieRoot] UI configuration loaded successfully:",O),console.log("[PieRoot] Rendering UI with configuration");return S.jsx(M.Provider,{value:T,children:S.jsx(y.Provider,{value:X,children:S.jsx(N.Provider,{value:G,children:S.jsx(K.Provider,{value:U??S.jsx(S.Fragment,{}),children:S.jsx(l,{children:S.jsx(r,{children:Z?S.jsx(w,{uiConfig:O}):S.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:S.jsx(w,{uiConfig:O})})})})})})})})},BC=(f)=>{let U=Cf.useMemo(()=>new Hf.QueryClient,[]);return S.jsx(k.Provider,{value:f.onNavigate,children:S.jsx(u.Provider,{value:f.config,children:S.jsx(Hf.QueryClientProvider,{client:U,children:S.jsx(qC,{...f})})})})},BP=BC;var Df=require("react"),Zf=require("@tanstack/react-query");var WP=require("axios-date-transformer");var bf=require("react");var pf=({onError:f}={})=>{let[U,C]=bf.useState(null),P=GU();return bf.useEffect(()=>{if(typeof window>"u")return;let H=window.Telegram?.WebApp;if(!H)return;try{H.ready?.()}catch(Z){f?.()}if(P==="telegram_expanded"&&(H.platform==="ios"||H.platform==="android"))H.expand();C(H)},[]),U};var o=require("react/jsx-runtime"),WC=({location:f,fallback:U,piecache:C,onError:P,queryOptions:H,disableGlobalForm:Z})=>{let D=b(),I=g(),$=x(),z=Df.useMemo(()=>WP.createAxiosDateTransformer({baseURL:D}),[D]),T=Df.useMemo(()=>m(),[]),X=Df.useMemo(()=>D?c(D):null,[D]),G=Df.useMemo(()=>D?v(D,I):null,[D,I]),O=pf({onError:P}),{data:J,isLoading:q,error:V}=Zf.useQuery({queryKey:["uiConfig",f.pathname+f.search,O?.initData],enabled:!!O?.initData,queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","telegram"),O?.initData)W.set("initData",O.initData);let B="/api/content"+f.pathname+"?"+W.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await z.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...H}),Y=Pf(f.pathname,C,U);if(!D)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&$)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}),P?.(),Y;if(q||!J){if($)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!J});return Y}if($)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return o.jsx(M.Provider,{value:T,children:o.jsx(y.Provider,{value:X,children:o.jsx(N.Provider,{value:G,children:o.jsx(K.Provider,{value:U??o.jsx(o.Fragment,{}),children:o.jsx(l,{children:o.jsx(r,{children:Z?o.jsx(w,{uiConfig:J}):o.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:o.jsx(w,{uiConfig:J})})})})})})})})},QC=(f)=>{let U=Df.useMemo(()=>new Zf.QueryClient,[]);return o.jsx(k.Provider,{value:f.onNavigate,children:o.jsx(u.Provider,{value:f.config,children:o.jsx(Zf.QueryClientProvider,{client:U,children:o.jsx(WC,{...f})})})})},QP=QC;var $f=require("react"),gf=require("@tanstack/react-query");var A=require("react/jsx-runtime"),RC=({location:f,fallback:U,children:C,disableGlobalForm:P})=>{let H=b(),Z=g(),D=x(),I=$f.useMemo(()=>m(),[]),$=$f.useMemo(()=>H?c(H):null,[H]),z=$f.useMemo(()=>H?v(H,Z):null,[H,Z]);if(D)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",H),console.log("[PieRoot] CENTRIFUGE_SERVER:",Z),console.log("[PieRoot] Fallback provided:",!!U);return A.jsx(M.Provider,{value:I,children:A.jsx(y.Provider,{value:$,children:A.jsx(N.Provider,{value:z,children:A.jsx(K.Provider,{value:U??A.jsx(A.Fragment,{}),children:A.jsx(l,{children:A.jsx(r,{children:P?C:A.jsx("form",{id:"piedata_global_form",action:H+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:C})})})})})})})},_C=(f)=>{let[U]=$f.useState(()=>new gf.QueryClient);return A.jsx(k.Provider,{value:f.onNavigate,children:A.jsx(u.Provider,{value:f.config,children:A.jsx(gf.QueryClientProvider,{client:U,children:A.jsx(RC,{...f})})})})},RP=_C;var zf=require("react"),If=require("@tanstack/react-query");var _P=require("axios-date-transformer");var vf=require("react"),cf=()=>{let[f,U]=vf.useState(null);return vf.useEffect(()=>{if(typeof window>"u")return;let C=window.WebApp;if(!C)return;C.ready(),U(C)},[]),f};var F=require("react/jsx-runtime"),wC=({location:f,fallback:U,piecache:C,onError:P,queryOptions:H,disableGlobalForm:Z})=>{let D=b(),I=g(),$=x(),z=zf.useMemo(()=>_P.createAxiosDateTransformer({baseURL:D}),[D]),T=zf.useMemo(()=>m(),[]),X=zf.useMemo(()=>D?c(D):null,[D]),G=zf.useMemo(()=>D?v(D,I):null,[D,I]),O=cf(),{data:J,isLoading:q,error:V}=If.useQuery({queryKey:["uiConfig",f.pathname+f.search,O?.initData],queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","max"),O?.initData)W.set("initData",O.initData);let B="/api/content"+f.pathname+"?"+W.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await z.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},enabled:!!O?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...H}),Y=Pf(f.pathname,C,U);if(!D)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&$)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}),P?.(),Y;if(q||!J){if($)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!J});return Y}if($)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return F.jsx(M.Provider,{value:T,children:F.jsx(y.Provider,{value:X,children:F.jsx(N.Provider,{value:G,children:F.jsx(K.Provider,{value:U??F.jsx(F.Fragment,{}),children:F.jsx(l,{children:F.jsx(r,{children:Z?F.jsx(w,{uiConfig:J}):F.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:F.jsx(w,{uiConfig:J})})})})})})})})},KC=(f)=>{let U=zf.useMemo(()=>new If.QueryClient,[]);return F.jsx(k.Provider,{value:f.onNavigate,children:F.jsx(u.Provider,{value:f.config,children:F.jsx(If.QueryClientProvider,{client:U,children:F.jsx(wC,{...f})})})})},wP=KC;var KP=require("react"),zU=(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 P=C[0];if(P instanceof HTMLInputElement){if(P.type==="file"&&P.files)return Array.from(P.files);return[P.value]}if(P instanceof HTMLTextAreaElement)return[P.value];return[]},SC=(f,U={},C=[],P,H)=>{let Z=H?.renderingLogEnabled??!1,D=H?.timeout,I=H?.retryPolicy,$=I?.maxRetries??0,z=I?.baseDelay??1000,T=I?.retryOn??[502,503,504];if(Z)console.log("Registering AJAX: ",P,U,C);return async(X={})=>{if(typeof window>"u"||typeof document>"u"){if(Z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let G=H?.apiServer;if(!G){if(Z)console.warn("AJAX skipped: apiServer is missing");return}if(!P||!f){if(Z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(C.includes("sid"))await $U();let O=new FormData;for(let[V,Y]of Object.entries({...U,...X}))O.append(V,Y);for(let V of C)for(let Y of zU(V,Z))O.append(V,Y);let J=G+"api/ajax_content"+P;f(null);let q;for(let V=0;V<=$;V++){if(V>0){let B=z*2**(V-1);if(Z)console.log(`AJAX retry ${V}/${$} after ${B}ms`);await new Promise((R)=>setTimeout(R,B))}let Y=D!=null?new AbortController:null,W=Y&&setTimeout(()=>Y.abort(),D);try{let B=await fetch(J,{method:"POST",body:O,signal:Y?.signal});if(W)clearTimeout(W);if(!B.ok&&T.includes(B.status)&&V<$){q=Error(`HTTP ${B.status}`);continue}let Bf=(B.headers.get("content-type")||"").includes("application/json");if(!!B.body?.getReader&&!Bf){let Wf=B.body.getReader(),EP=new TextDecoder,n="";while(!0){let{done:lf,value:kP}=await Wf.read();if(lf)break;n+=EP.decode(kP,{stream:!0});let TU=n.split(`
|
|
3
|
-
`);
|
|
2
|
+
var EI=Object.create;var{getPrototypeOf:yI,defineProperty:a,getOwnPropertyNames:OU,getOwnPropertyDescriptor:kI}=Object,TU=Object.prototype.hasOwnProperty;var VU=(f,U,I)=>{I=f!=null?EI(yI(f)):{};let C=U||!f||!f.__esModule?a(I,"default",{value:f,enumerable:!0}):I;for(let D of OU(f))if(!TU.call(C,D))a(C,D,{get:()=>f[D],enumerable:!0});return C},ZU=new WeakMap,jI=(f)=>{var U=ZU.get(f),I;if(U)return U;if(U=a({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")OU(f).map((C)=>!TU.call(U,C)&&a(U,C,{get:()=>f[C],enumerable:!(I=kI(f,C))||I.enumerable}));return ZU.set(f,U),U};var xI=(f,U)=>{for(var I in U)a(f,I,{get:U[I],enumerable:!0,configurable:!0,set:(C)=>U[I]=()=>C})};var PC={};xI(PC,{usePieEmit:()=>WU,useAjaxSubmit:()=>SI,unregisterComponent:()=>KU,trackLazy:()=>Xf,submitGlobalForm:()=>wI,registry:()=>R,registerPieComponent:()=>Y,registerMultipleComponents:()=>FU,readAjaxKey:()=>HU,preloadComponent:()=>gf,prefetchLazyComponents:()=>oU,pieName:()=>MI,hasComponent:()=>_U,getRegistrySize:()=>LU,getRegistryEntry:()=>l,getLazyComponentNames:()=>pf,getEmitter:()=>d,getComponentMeta:()=>wU,getAllRegisteredComponents:()=>MU,cn:()=>_I,UnionCard:()=>dU,UIRendererContext:()=>L,UILoading:()=>Af,UI:()=>_,SocketIOContext:()=>E,SessionStorageCard:()=>eU,SequenceCard:()=>mU,SecureStorageCard:()=>DI,PieRoot:()=>xf,PiePreviewRoot:()=>AI,PieConfigContext:()=>b,PieCard:()=>A,PieBaseRoot:()=>WI,PIEBREAK:()=>Bf,OneOfCard:()=>qI,MittContext:()=>y,IOEventsCard:()=>tU,HiddenCard:()=>hU,HTMLEmbedCard:()=>cU,FallbackContext:()=>M,DeviceStorageCard:()=>UI,CloudStorageCard:()=>CI,CentrifugeIOContext:()=>N,BoxCard:()=>VI,AutoRedirectCard:()=>iU,AjaxGroupCard:()=>OI});module.exports=jI(PC);var k=require("react");var $f=require("react"),b=$f.createContext(null),e=()=>{let f=$f.useContext(b);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},ff=()=>{let{apiServer:f}=e();return f},zf=ff,qf=()=>{let{centrifugeServer:f}=e();return f};var x=()=>{let{enableRenderingLog:f}=e();return f},$U=x;var Bf="__piedemo__";var qU=require("react"),df=require("centrifuge"),zU=new Map,Gf=(f,U)=>{if(!U)return null;let I=`${f}::${U}`,C=zU.get(I);if(C)return C;async function D(){let Z=await fetch(f+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new df.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let H=new df.Centrifuge(U,{getToken:D});return zU.set(I,H),H},mI=qU.createContext(null),N=mI;var GU=require("socket.io-client"),JU=require("react"),BU=new Map,Jf=(f)=>{let U=BU.get(f);if(U)return U;let I=GU.io(f,{autoConnect:!1,transports:["websocket"]});return BU.set(f,I),I},uI=JU.createContext(null),E=uI;var XU=VU(require("mitt")),g=require("react"),vf=null;function d(){if(!vf)vf=XU.default();return vf}var YU=g.createContext(null);function WU(f){let U=g.useContext(YU);return g.useCallback((I,C)=>{(U??d()).emit(`pie${I}_${f}`,C)},[f,U])}var y=YU;var c=require("react/jsx-runtime"),bI=({card:f,data:U,children:I,useSocketioSupport:C=!1,useCentrifugeSupport:D=!1,useMittSupport:H=!1,centrifugeChannel:Z=void 0,methods:V=void 0,stored:O=void 0})=>{let T=$U(),$=k.useRef(V);if($.current=V,T)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:C,centrifuge:D,mitt:H,centrifugeChannel:Z}),console.log("[PieCard] Methods:",V?Object.keys(V):"none"),console.log("[PieCard] Has children:",!!I);let J=k.useContext(E),W=k.useContext(N),z=k.useContext(y);if(k.useEffect(()=>{if(!J||!C||!$.current||!U.name){if(T&&C)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!J,useSocketioSupport:C,hasMethods:!!$.current,hasDataName:!!U?.name});return}let X=Object.keys($.current??{}).map((q)=>{let G=`pie${q}_${U.name}`;if(T)console.log(`[PieCard] Socket.IO registering event: ${G}`);let S=(Q)=>{$.current?.[q]?.(Q)};return J.on(G,S),[G,S]});return()=>{X.forEach(([q,G])=>{if(T)console.log(`[PieCard] Socket.IO unregistering event: ${q}`);J.off(q,G)})}},[J,U.name,C]),k.useEffect(()=>{if(!W||!D||!Z||!U.name){if(T&&D)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!W,useCentrifugeSupport:D,hasCentrifugeChannel:!!Z,hasMethods:!!$.current,hasDataName:!!U?.name});return}let X=Object.keys($.current??{}).map((q)=>{let G=`pie${q}_${U.name}_${Z}`;if(T)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let S=W.newSubscription(G);return S.on("publication",(Q)=>{if(T)console.log(`[PieCard] Centrifuge received data on ${G}:`,Q.data);$.current?.[q]?.(Q.data)}),S.subscribe(),S});return()=>{X.forEach((q)=>{if(T)console.log("[PieCard] Centrifuge unsubscribing from channel");q.unsubscribe(),W.removeSubscription(q)})}},[W,Z,U.name,D]),k.useEffect(()=>{if(!z||!H||!U.name){if(T&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!z,useMittSupport:H,hasMethods:!!$.current,hasDataName:!!U?.name});return}let B=Object.keys($.current??{}),X={};return B.forEach((q)=>{let G=`pie${q}_${U.name}`,S=(Q)=>{if(T)console.log(`[PieCard] Mitt registering event: ${G}`);$.current?.[q]?.(Q)};X[G]=S,z.on(G,S)}),()=>{Object.entries(X).forEach(([q,G])=>{if(T)console.log(`[PieCard] Mitt unregistering event: ${q}`);z.off(q,G)})}},[z,U.name,H]),T)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return c.jsxs(c.Fragment,{children:[c.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),I]});return I},A=bI;var QU=require("react"),v=new Map;function AU(f,U){return U.catch(()=>{if(v.get(f)===U)v.delete(f)}),v.set(f,U),U}function Xf(f,U){return QU.lazy(()=>{if(v.has(U))return v.get(U);return AU(U,f().then((I)=>I))})}var PU=async(f,U)=>{if(!U)return;if(v.has(f))return v.get(f);return AU(f,U().then((I)=>I))};var R=new Map,dI=(f)=>{if(!f.name)throw Error("Component registration requires a name");if(!f.component&&!f.loader)throw Error(`Component "${f.name}" requires component or loader`);let U={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=Xf(U.loader,f.name),U.isLazy=!0;return U};function Y(f){let U=dI(f);return R.set(U.name,U),U.component}var FU=(f)=>{f.forEach((U)=>Y(U))},KU=(f)=>{R.delete(f)},_U=(f)=>{return R.has(f)},wU=(f)=>{return R.get(f)?.metadata},l=(f)=>{return R.get(f)},MU=()=>{return Array.from(R.keys())},LU=()=>{return R.size},pf=()=>Array.from(R.values()).filter((f)=>f.isLazy&&typeof f.loader==="function").map((f)=>f.name),gf=(f)=>{let U=R.get(f);if(!U?.isLazy||typeof U.loader!=="function")return;return PU(f,U.loader)},SU=!1,oU=()=>{if(SU||typeof window>"u")return;SU=!0;let f=navigator.connection;if(f?.saveData)return;if(f?.effectiveType&&["slow-2g","2g"].includes(f.effectiveType))return;let U=pf(),I="requestIdleCallback"in window?(D)=>window.requestIdleCallback(D,{timeout:2000}):(D)=>window.setTimeout(D,300),C=(D)=>{if(D>=U.length)return;I(()=>{Promise.resolve().then(()=>gf(U[D])).catch(()=>{}).finally(()=>C(D+1))})};C(0)};var Uf=require("react");var RU=require("react"),Yf=require("react/jsx-runtime"),vI=RU.createContext(Yf.jsx(Yf.Fragment,{})),M=vI;var NU=require("react"),pI=NU.createContext(void 0),m=pI;var Wf=require("react"),EU=require("react/jsx-runtime"),gI=2,cI=400;class h extends Wf.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(f){if(this.props.onError?.(f),this.state.attempt<gI){let U=cI*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},U)}}componentDidUpdate(f){if(f.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return EU.jsx(Wf.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var Qf=require("react/jsx-runtime");function lI({uiConfig:f,setUiAjaxConfiguration:U}){let I=Uf.useContext(M),C=Uf.useContext(m),D=x();if(D)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let H=l(f.card);if(!H?.component){if(D)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return I}if(D)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let Z=H.component,V=Qf.jsx(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(H.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",H.name);return Qf.jsx(h,{name:H.name,fallback:H.fallback?Qf.jsx(H.fallback,{}):I,onError:C,children:V})}if(D)console.log("[UI] Rendering component directly:",H.name);return V}var _=Uf.memo(lI);var cf=require("react");var yU=require("react"),hI=yU.createContext(null),L=hI;var If=require("react/jsx-runtime");function kU({uiConfig:f,setUiAjaxConfiguration:U}){let I=cf.useContext(M),C=cf.useContext(m),D=x();if(D)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let H=l(f.card);if(!H?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return I}if(D)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(D)console.log("[UILoading] Rendering fallback for:",H.name);let O=H.fallback;return If.jsx(O,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",H.name);let Z=H.component,V=If.jsx(L.Provider,{value:kU,children:If.jsx(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(H.isLazy)return If.jsx(h,{name:H.name,fallback:I,onError:C,children:V});return V}var Af=kU;var jU=require("react");var Pf=require("react/jsx-runtime"),rI=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,sx:D}=f,H=jU.useContext(L)??_;return Pf.jsx(A,{card:C,data:f,children:Pf.jsx("div",{style:D,id:C,children:U.map((Z,V)=>{return Pf.jsx(H,{uiConfig:Z,setUiAjaxConfiguration:I},`children-${V}`)})})})},xU=rI;var mU=Y({name:"SequenceCard",component:xU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var uU=require("react");var lf=require("react/jsx-runtime"),nI=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C}=f,D=uU.useContext(L)??_;return lf.jsx(A,{card:C,data:f,children:U.map((H,Z)=>{return lf.jsx(D,{uiConfig:H,setUiAjaxConfiguration:I},`children-${Z}`)})})},bU=nI;var dU=Y({name:"UnionCard",component:bU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var Sf=require("react"),vU=VU(require("html-react-parser"));var o=require("react");function iI(){let f=new AudioContext,U=f.createOscillator(),I=U.connect(f.createMediaStreamDestination());U.start();let C=I.stream.getAudioTracks()[0];return C.enabled=!1,C}function hf(f=null,U){let[I,C]=o.useState(!1),D=o.useRef(null),H=o.useRef(null),Z=o.useRef(null),V=o.useCallback(async(J,W=!0)=>{if(D.current)O();let z=new RTCPeerConnection;if(z.onconnectionstatechange=()=>{if(z.connectionState==="connected")C(!0);else if(["disconnected","failed","closed"].includes(z.connectionState))C(!1)},z.ontrack=(P)=>{if(f)f.srcObject=P.streams[0]},W){let P=await navigator.mediaDevices.getUserMedia({audio:!0});z.addTrack(P.getTracks()[0],P)}else{let P=iI();z.addTrack(P)}let B=z.createDataChannel("oai-events");H.current=B,Z.current=new Promise((P)=>{B.addEventListener("open",()=>{P()})});let X=await z.createOffer();await z.setLocalDescription(X);let Q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await z.setRemoteDescription({type:"answer",sdp:Q}),D.current=z,await Z.current},[f]),O=o.useCallback(()=>{let J=H.current;if(J)J.close();D.current?.getSenders()?.forEach((W)=>W.track?.stop()),D.current?.close(),C(!1),D.current=null,H.current=null,Z.current=null},[f]),T=o.useCallback((J)=>{let W=H.current;if(!W){console.error("Data channel is not ready",J);return}let z=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),W.send(JSON.stringify(J)),!J.timestamp)J.timestamp=z;U?.(J)},[U,f]),$=o.useCallback((J)=>{if(!H.current){console.error("Data channel is not ready");return}let z=()=>{T({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),T({type:"response.create"})};if(Z.current)Z.current.then(z);else z()},[U,f]);return o.useEffect(()=>{let J=H.current;if(!J)return;let W=(z)=>{let B=JSON.parse(z.data);if(!B.timestamp)B.timestamp=new Date().toLocaleTimeString();U?.(B)};return J.addEventListener("message",W),()=>{J.removeEventListener("message",W)}},[U,f]),{isSessionActive:I,startSession:V,stopSession:O,sendTextMessage:$}}var gU=require("react/jsx-runtime"),sI=({data:f})=>{let{html:U,useSocketioSupport:I,useCentrifugeSupport:C,useMittSupport:D,centrifugeChannel:H}=f,[Z,V]=Sf.useState(U),{isSessionActive:O,startSession:T,sendTextMessage:$}=hf(null,(B)=>{if(console.log(B.type,B.type==="response.output_text.delta"&&B.delta),B.type==="response.output_text.delta"&&B.delta)V((X)=>X+B.delta)});return Sf.useEffect(()=>{V(U)},[U]),gU.jsx(A,{card:"HTMLEmbedCard",data:f,methods:{update:(B)=>{V(B.value)},generateUsingAI:async(B)=>{try{if(!O&&B.token)await T(B.token,!1);$(B.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(B)=>{if(!O&&B.token)await T(B.token,!1)}},useCentrifugeSupport:C,useSocketioSupport:I,useMittSupport:D,centrifugeChannel:H,children:vU.default(Z)})},pU=sI;var cU=Y({name:"HTMLEmbedCard",component:pU,metadata:{author:"Swarm.ing"}});var Ff=require("react");var rf=require("react/jsx-runtime"),tI=({data:f})=>{let{name:U,value:I,useSocketioSupport:C,useCentrifugeSupport:D,useMittSupport:H,centrifugeChannel:Z}=f,[V,O]=Ff.useState(I);return Ff.useEffect(()=>{O(I)},[I]),rf.jsx(A,{card:"HiddenCard",data:f,useSocketioSupport:C,useCentrifugeSupport:D,useMittSupport:H,centrifugeChannel:Z,methods:{update:({value:T})=>{O(T)}},children:rf.jsx("input",{type:"hidden",id:U,name:U,value:V})})},lU=tI;var hU=Y({name:"HiddenCard",component:lU,metadata:{author:"Swarm.ing"}});var Cf=require("react");var rU=require("react"),aI=rU.createContext(void 0),j=aI;var Kf=require("react/jsx-runtime"),eI=({data:f})=>{let{url:U}=f,I=Cf.useContext(j),C=Cf.useContext(M);return Cf.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else I?.(U)},[U,I]),Kf.jsx(Kf.Fragment,{children:C})},nU=eI;var iU=Y({name:"AutoRedirectCard",component:nU,metadata:{author:"Swarm.ing"}});var u=require("react-toastify"),_f=require("react-toastify");var n=require("react");var r=require("react/jsx-runtime"),fC={bounce:u.Bounce,slide:u.Slide,zoom:u.Zoom,flip:u.Flip},UC=(f)=>{let U={...f,type:f.alertType,transition:f.transition?fC[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};_f.toast(f.message,U)},IC=(f)=>{console.log("Log event",f)},CC=(f)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(C){console.error("[IOEventsCard] Failed to show notification",C)}},I=window.Notification.permission;if(I==="granted"){U();return}if(I==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((C)=>{if(C==="granted")U()})},HC=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:C,centrifugeChannel:D}=f,H=n.useContext(j),Z=n.useRef(H);Z.current=H;let V=n.useMemo(()=>({alert:UC,log:IC,push:CC,redirect:(O)=>{if(O.to){let T=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else Z.current?.(T)}else window.location.reload()},reload:(O)=>{if(O.to){let T=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else Z.current?.(T)}else window.location.reload()}}),[]);return r.jsx(r.Fragment,{children:r.jsx(A,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:C,centrifugeChannel:D,methods:V,children:r.jsx(_f.ToastContainer,{})})})},sU=HC;var tU=Y({name:"IOEventsCard",component:sU,metadata:{author:"Swarm.ing"}});var Hf=require("react");var nf=require("react/jsx-runtime"),DC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=Hf.useState(C);return Hf.useEffect(()=>{T(C)},[C]),Hf.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(I,O)},[I,O]),nf.jsx(A,{card:"SessionStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{sessionStorage.removeItem(I),T("")}},children:nf.jsx("input",{type:"hidden",id:U,name:U,value:O})})},aU=DC;var eU=Y({name:"SessionStorageCard",component:aU,metadata:{author:"PieData"}});var Df=require("react");var sf=require("react/jsx-runtime"),ZC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=Df.useState(C);return Df.useEffect(()=>{T(C)},[C]),Df.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(I,O)},[I,O]),sf.jsx(A,{card:"DeviceStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{localStorage.removeItem(I),T("")}},children:sf.jsx("input",{type:"hidden",id:U,name:U,value:O})})},fI=ZC;var UI=Y({name:"DeviceStorageCard",component:fI,metadata:{author:"PieData"}});var Zf=require("react");var tf=require("react/jsx-runtime"),OC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=Zf.useState(C);return Zf.useEffect(()=>{T(C)},[C]),Zf.useEffect(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.CloudStorage;if(!$)return;$.setItem(I,O)},[I,O]),tf.jsx(A,{card:"CloudStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{let $=window.Telegram?.WebApp?.CloudStorage;if($)$.removeItem(I);T("")}},children:tf.jsx("input",{type:"hidden",id:U,name:U,value:O})})},II=OC;var CI=Y({name:"CloudStorageCard",component:II,metadata:{author:"PieData"}});var Of=require("react");var af=require("react/jsx-runtime"),TC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=Of.useState(C);return Of.useEffect(()=>{T(C)},[C]),Of.useEffect(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.SecureStorage;if(!$)return;$.setItem(I,O)},[I,O]),af.jsx(A,{card:"SecureStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{let $=window.Telegram?.WebApp?.SecureStorage;if($)$.removeItem(I);T("")}},children:af.jsx("input",{type:"hidden",id:U,name:U,value:O})})},HI=TC;var DI=Y({name:"SecureStorageCard",component:HI,metadata:{author:"PieData"}});var w=require("react");var ef=require("react/jsx-runtime"),VC=({data:f,content:U})=>{let{useLoader:I,noReturn:C,returnType:D,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:V,centrifugeChannel:O}=f,T=w.useContext(M),$=w.useContext(L)??_,[J,W]=w.useState(!1),[z,B]=w.useState(null),X=w.useRef(U),q=w.useContext(y),G=w.useCallback((P)=>{if(P===null)W(!0);else if(W(!1),!C)X.current=P;if(!C)B(P)},[C]),S=w.useCallback((P)=>{X.current=P.content,B(P.content)},[]),Q=w.useCallback((P)=>{if(P===null)W(!0);else if(W(!1),!C)for(let Tf of P)q?.emit(Tf.name,Tf.data)},[C,q]);if(w.useEffect(()=>{B(U),W(!1)},[U]),!z&&I)return T;return ef.jsx(A,{card:"AjaxGroupCard",data:f,methods:{changeContent:S},useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:V,centrifugeChannel:O,children:ef.jsx($,{uiConfig:z??X.current,setUiAjaxConfiguration:D==="events"?Q:G})})},ZI=VC;var OI=Y({name:"AjaxGroupCard",component:ZI,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var fU=require("react");var wf=require("react/jsx-runtime"),$C=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,url:D,sx:H}=f,Z=fU.useContext(j),V=fU.useContext(L)??_;return wf.jsx(A,{card:C,data:f,children:wf.jsx("div",{style:H,id:C,onClick:(T)=>{if(D)if(T.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(D))window.location.href=D;else Z?.(D)},children:wf.jsx(V,{setUiAjaxConfiguration:I,uiConfig:U})})})},TI=$C;var VI=Y({name:"BoxCard",component:TI,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var $I=require("react");var Mf=require("react/jsx-runtime"),zC=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,sx:D}=f,H=$I.useContext(L)??_;return Mf.jsx(A,{card:C,data:f,children:Mf.jsx("div",{style:D,id:C,children:U.map((Z,V)=>{return Mf.jsx(H,{uiConfig:Z,setUiAjaxConfiguration:I},`children-${V}`)})})})},zI=zC;var qI=Y({name:"OneOfCard",component:zI,metadata:{author:"Swarm.ing",description:"Different variants"}});var i=require("react"),s=require("@tanstack/react-query");var Ef=require("react");var Rf=require("react"),Lf=new Map,of=new Map;function Nf(f,U){let I=`${f}::${U}`,C=f?Lf.get(I):void 0,[D,H]=Rf.useState(C??null);return Rf.useEffect(()=>{if(!f)return;if(Lf.has(I)){H(Lf.get(I));return}let Z=of.get(I);if(!Z)Z=fetch(f+`api/support/${U}`,{method:"GET"}).then((O)=>O.json()).then((O)=>{return Lf.set(I,O),of.delete(I),O}).catch((O)=>{throw of.delete(I),O}),of.set(I,Z);let V=!1;return Z.then((O)=>{if(!V)H(O)}).catch(()=>{}),()=>{V=!0}},[f,U,I]),D}var UU=null,BI=null;function GI(){BI?.()}function IU(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!UU)UU=new Promise((f)=>{BI=()=>{f()}});return UU}var qC=({children:f})=>{let U=Ef.useContext(E),I=zf(),C=Nf(I,"socketIO"),D=(H)=>{if(typeof window<"u")window.sid=H.sid,GI(),console.log(`SocketIO initialized: ${window.sid}`)};return Ef.useEffect(()=>{if(!U)return;let H=()=>{console.log("SocketIO connected")},Z=(V)=>{console.log(`SocketIO disconnected: ${V}`),U.connect()};if(C)U.on("pieinit",D),U.on("connect",H),U.on("disconnect",Z),U.connect();return()=>{if(C)U.off("pieinit",D),U.off("connect",H),U.off("disconnect",Z),U.disconnect()}},[U,C]),f},yf=qC;var kf=require("react");var BC=({children:f})=>{let U=kf.useContext(N),I=zf(),C=Nf(I,"centrifuge");return kf.useEffect(()=>{if(!U)return;let D=()=>{console.log("Centrifuge connected")},H=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(C)U.on("connected",D),U.on("disconnected",H),U.connect();return()=>{if(C)U.disconnect()}},[U,C]),f},jf=BC;var YI=require("axios-date-transformer");var XI=require("react/jsx-runtime");function JI(f,U,I){if(!U)return I;let C=f.replace(/^\//,""),D=U[C];if(!D)return I;return XI.jsx(Af,{uiConfig:D})}var F=require("react/jsx-runtime"),GC=({location:f,fallback:U,piecache:I,onError:C,queryOptions:D,disableGlobalForm:H})=>{let Z=ff(),V=qf(),O=x(),T=i.useMemo(()=>YI.createAxiosDateTransformer({baseURL:Z||""}),[Z]),$=i.useMemo(()=>d(),[]),J=i.useMemo(()=>Z?Jf(Z):null,[Z]),W=i.useMemo(()=>Z?Gf(Z,V):null,[Z,V]),{data:z,isLoading:B,error:X}=s.useQuery({queryKey:["uiConfig",f.pathname+f.search,Z],enabled:!!Z,queryFn:async()=>{let G=new URLSearchParams(f.search);G.set("__pieroot","web");let S="/api/content"+f.pathname+"?"+G.toString();if(O)console.log("[PieRoot] Fetching UI configuration from:",S);let Q=await T.get(S,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(O)console.log("[PieRoot] Received UI configuration:",Q.data);return Q.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(G)=>Math.min(1000*2**G,30000),...D}),q=JI(f.pathname,I,U);if(!Z)return q??null;if(O)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",V),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!I);if(X){if(O)console.error("[PieRoot] Error fetching UI configuration:",X),console.error("[PieRoot] Error details:",{message:X.message,status:X.response?.status,data:X.response?.data});return C?.(X),q}if(B||!z){if(O)console.log("[PieRoot] Loading state:",{isLoading:B,hasUiConfiguration:!!z});return q}if(O)console.log("[PieRoot] UI configuration loaded successfully:",z),console.log("[PieRoot] Rendering UI with configuration");return F.jsx(y.Provider,{value:$,children:F.jsx(E.Provider,{value:J,children:F.jsx(N.Provider,{value:W,children:F.jsx(M.Provider,{value:U??F.jsx(F.Fragment,{}),children:F.jsx(yf,{children:F.jsx(jf,{children:H?F.jsx(_,{uiConfig:z}):F.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:F.jsx(_,{uiConfig:z})})})})})})})})},JC=(f)=>{let U=i.useMemo(()=>new s.QueryClient,[]),I=f.queryClient??U;return F.jsx(j.Provider,{value:f.onNavigate,children:F.jsx(b.Provider,{value:f.config,children:F.jsx(m.Provider,{value:f.onError,children:F.jsx(s.QueryClientProvider,{client:I,children:F.jsx(GC,{...f})})})})})},xf=JC;var t=require("react"),mf=require("@tanstack/react-query");var K=require("react/jsx-runtime"),XC=({location:f,fallback:U,children:I,disableGlobalForm:C})=>{let D=ff(),H=qf(),Z=x(),V=t.useMemo(()=>d(),[]),O=t.useMemo(()=>D?Jf(D):null,[D]),T=t.useMemo(()=>D?Gf(D,H):null,[D,H]);if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",H),console.log("[PieRoot] Fallback provided:",!!U);return K.jsx(y.Provider,{value:V,children:K.jsx(E.Provider,{value:O,children:K.jsx(N.Provider,{value:T,children:K.jsx(M.Provider,{value:U??K.jsx(K.Fragment,{}),children:K.jsx(yf,{children:K.jsx(jf,{children:C?I:K.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:I})})})})})})})},YC=(f)=>{let[U]=t.useState(()=>new mf.QueryClient),I=f.queryClient??U;return K.jsx(j.Provider,{value:f.onNavigate,children:K.jsx(b.Provider,{value:f.config,children:K.jsx(m.Provider,{value:f.onError,children:K.jsx(mf.QueryClientProvider,{client:I,children:K.jsx(XC,{...f})})})})})},WI=YC;var QI=require("react");var CU=require("react/jsx-runtime"),WC=CU.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),QC=({apiServer:f,pathname:U="/",search:I="",centrifugeServer:C,fallback:D,enableRenderingLog:H=!1})=>{let Z=f??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",V=QI.useMemo(()=>({apiServer:Z,centrifugeServer:C,enableRenderingLog:H,pageProcessor:"web"}),[Z,C,H]);return CU.jsx(xf,{location:{pathname:U,search:I},config:V,fallback:D??WC,onNavigate:(T)=>{if(typeof window<"u")window.history.pushState(null,"",T)}})},AI=QC;var PI=require("react"),HU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let I=document.getElementsByName(f);if(!I.length){if(U)console.warn(`No input found with name ${f}`);return[]}let C=I[0];if(C instanceof HTMLInputElement){if(C.type==="file"&&C.files)return Array.from(C.files);return[C.value]}if(C instanceof HTMLTextAreaElement)return[C.value];return[]},AC=(f,U={},I=[],C,D)=>{let H=D?.renderingLogEnabled??!1,Z=D?.timeout,V=D?.retryPolicy,O=V?.maxRetries??0,T=V?.baseDelay??1000,$=V?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",C,U,I);return async(J={})=>{if(typeof window>"u"||typeof document>"u"){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let W=D?.apiServer;if(!W){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!C||!f){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(I.includes("sid"))await IU();let z=new FormData;for(let[q,G]of Object.entries({...U,...J}))z.append(q,G);for(let q of I)for(let G of HU(q,H))z.append(q,G);let B=W+"api/ajax_content"+C;f(null);let X;for(let q=0;q<=O;q++){if(q>0){let Q=T*2**(q-1);if(H)console.log(`AJAX retry ${q}/${O} after ${Q}ms`);await new Promise((P)=>setTimeout(P,Q))}let G=Z!=null?new AbortController:null,S=G&&setTimeout(()=>G.abort(),Z);try{let Q=await fetch(B,{method:"POST",body:z,signal:G?.signal});if(S)clearTimeout(S);if(!Q.ok&&$.includes(Q.status)&&q<O){X=Error(`HTTP ${Q.status}`);continue}let Tf=(Q.headers.get("content-type")||"").includes("application/json");if(!!Q.body?.getReader&&!Tf){let Vf=Q.body.getReader(),LI=new TextDecoder,p="";while(!0){let{done:uf,value:oI}=await Vf.read();if(uf)break;p+=LI.decode(oI,{stream:!0});let DU=p.split(`
|
|
3
|
+
`);p=DU.pop()??"";for(let RI of DU){let bf=RI.trim();if(!bf)continue;try{let NI=JSON.parse(bf);f([NI])}catch{if(H)console.warn("Failed to parse streamed line:",bf)}}}if(p.trim())try{let uf=JSON.parse(p);f([uf])}catch{if(H)console.warn("Failed to parse final streamed line:",p)}return{}}else{let Vf=await Q.json();return f(Vf),Vf}}catch(Q){if(S)clearTimeout(S);if(X=Q,q<O)continue;if(H)console.error("AJAX request failed:",Q);return f(null),Q}}if(H)console.error("AJAX request failed after retries:",X);return f(null),X}},SI=(f,U={},I=[],C,D)=>{let{apiServer:H,enableRenderingLog:Z}=e(),V=JSON.stringify(U),O=JSON.stringify(I),T=JSON.stringify(D);return PI.useMemo(()=>AC(f,U,I,C,{apiServer:H,renderingLogEnabled:Z,timeout:D?.timeout,retryPolicy:D?.retryPolicy}),[f,V,O,C,H,Z,T])};var FI=require("clsx"),KI=require("tailwind-merge");function _I(...f){return KI.twMerge(FI.clsx(f))}var wI=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var MI=(f,U)=>`${f}${Bf}${U}`;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MAX (VK Messenger) mini-app integration entry.
|
|
3
|
+
*
|
|
4
|
+
* `PieMaxRoot` and the MAX `WebApp` hooks are intentionally split out of the
|
|
5
|
+
* main `@swarm.ing/pieui` barrel so that apps which do not target MAX never
|
|
6
|
+
* reference this code from the main entry point. Import from
|
|
7
|
+
* `@swarm.ing/pieui/max` when building a MAX mini-app.
|
|
8
|
+
*/
|
|
9
|
+
export { default as PieMaxRoot } from '../components/PieMaxRoot';
|
|
10
|
+
export { useMaxWebApp, useMaxInitData, useMaxBackButton, useMaxHapticFeedback, } from '../util/useMaxWebApp';
|
|
11
|
+
export type { MaxWebApp, MaxWebAppData, MaxWebAppUser, MaxWebAppChat, MaxWebAppStartParam, } from '../types';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/max/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EACH,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,oBAAoB,GACvB,MAAM,sBAAsB,CAAA;AAE7B,YAAY,EACR,SAAS,EACT,aAAa,EACb,aAAa,EACb,aAAa,EACb,mBAAmB,GACtB,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{useMemo as K}from"react";import{QueryClient as iU,QueryClientProvider as aU,useQuery as rU}from"@tanstack/react-query";import JU from"mitt";import{createContext as ZU,useCallback as HL,useContext as JL}from"react";var A=null;function m(){if(!A)A=JU();return A}var NU=ZU(null);var d=NU;import{io as TU}from"socket.io-client";import{createContext as VU}from"react";var g=new Map,u=(U)=>{let L=g.get(U);if(L)return L;let $=TU(U,{autoConnect:!1,transports:["websocket"]});return g.set(U,$),$},YU=VU(null),X=YU;import{createContext as FU}from"react";import{Centrifuge as l}from"centrifuge";var c=new Map,h=(U,L)=>{if(!L)return null;let $=`${U}::${L}`,H=c.get($);if(H)return H;async function D(){let z=await fetch(U+"api/centrifuge/gen_token");if(!z.ok){if(z.status===403)throw new l.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let I=new l(L,{getToken:D});return c.set($,I),I},GU=FU(null),B=GU;import{useContext as XU,useEffect as BU}from"react";import{useEffect as OU,useState as QU}from"react";var E=new Map,R=new Map;function W(U,L){let $=`${U}::${L}`,H=U?E.get($):void 0,[D,I]=QU(H??null);return OU(()=>{if(!U)return;if(E.has($)){I(E.get($));return}let z=R.get($);if(!z)z=fetch(U+`api/support/${L}`,{method:"GET"}).then((J)=>J.json()).then((J)=>{return E.set($,J),R.delete($),J}).catch((J)=>{throw R.delete($),J}),R.set($,z);let N=!1;return z.then((J)=>{if(!N)I(J)}).catch(()=>{}),()=>{N=!0}},[U,L,$]),D}import{createContext as qU,useContext as KU}from"react";var P=qU(null),S=()=>{let U=KU(P);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},k=()=>{let{apiServer:U}=S();return U},j=k,o=()=>{let{centrifugeServer:U}=S();return U};var V=()=>{let{enableRenderingLog:U}=S();return U};var _U=null;function p(){_U?.()}var EU=({children:U})=>{let L=XU(X),$=j(),H=W($,"socketIO"),D=(I)=>{if(typeof window<"u")window.sid=I.sid,p(),console.log(`SocketIO initialized: ${window.sid}`)};return BU(()=>{if(!L)return;let I=()=>{console.log("SocketIO connected")},z=(N)=>{console.log(`SocketIO disconnected: ${N}`),L.connect()};if(H)L.on("pieinit",D),L.on("connect",I),L.on("disconnect",z),L.connect();return()=>{if(H)L.off("pieinit",D),L.off("connect",I),L.off("disconnect",z),L.disconnect()}},[L,H]),U},n=EU;import{useContext as RU,useEffect as WU}from"react";var jU=({children:U})=>{let L=RU(B),$=j(),H=W($,"centrifuge");return WU(()=>{if(!L)return;let D=()=>{console.log("Centrifuge connected")},I=(z)=>{console.log("Centrifuge disconnected:",z)};if(H)L.on("connected",D),L.on("disconnected",I),L.connect();return()=>{if(H)L.disconnect()}},[L,H]),U},s=jU;import{createContext as MU}from"react";import{jsx as PU,Fragment as AU}from"react/jsx-runtime";var fU=MU(PU(AU,{})),Y=fU;import{createContext as SU}from"react";var kU=SU(void 0),F=kU;var yU=new Map;var M=(U)=>{return yU.get(U)};import{useContext as i,memo as mU}from"react";import{Component as wU,Suspense as CU}from"react";import{jsx as vU}from"react/jsx-runtime";var bU=2,xU=400;class G extends wU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<bU){let L=xU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return vU(CU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as y}from"react/jsx-runtime";function dU({uiConfig:U,setUiAjaxConfiguration:L}){let $=i(Y),H=i(F),D=V();if(D)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let I=M(U.card);if(!I?.component){if(D)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(D)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let z=I.component,N=y(z,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(I.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",I.name);return y(G,{name:I.name,fallback:I.fallback?y(I.fallback,{}):$,onError:H,children:N})}if(D)console.log("[UI] Rendering component directly:",I.name);return N}var w=mU(dU);import{createAxiosDateTransformer as tU}from"axios-date-transformer";import{useEffect as a,useState as gU}from"react";var O=()=>{let[U,L]=gU(null);return a(()=>{if(typeof window>"u")return;let $=window.WebApp;if(!$)return;$.ready(),L($)},[]),U},uU=()=>{let U=O();return[U?.initDataUnsafe,U?.initData]},lU=(U)=>{let L=O();return a(()=>{if(!L||!U)return;return L.BackButton.onClick(U),L.BackButton.show(),()=>{L.BackButton.offClick(U),L.BackButton.hide()}},[L,U]),L?.BackButton??null},cU=()=>{return O()?.HapticFeedback??null};import{createContext as hU}from"react";var oU=hU(void 0),r=oU;import{useContext as e}from"react";import{createContext as pU}from"react";var nU=pU(null),t=nU;import{jsx as f}from"react/jsx-runtime";function UU({uiConfig:U,setUiAjaxConfiguration:L}){let $=e(Y),H=e(F),D=V();if(D)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let I=M(U.card);if(!I?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(D)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(D)console.log("[UILoading] Rendering fallback for:",I.name);let J=I.fallback;return f(J,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",I.name);let z=I.component,N=f(t.Provider,{value:UU,children:f(z,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(I.isLazy)return f(G,{name:I.name,fallback:$,onError:H,children:N});return N}var LU=UU;import{jsx as sU}from"react/jsx-runtime";function IU(U,L,$){if(!L)return $;let H=U.replace(/^\//,""),D=L[H];if(!D)return $;return sU(LU,{uiConfig:D})}import{jsx as Z,Fragment as LL}from"react/jsx-runtime";var eU=({location:U,fallback:L,piecache:$,onError:H,queryOptions:D,disableGlobalForm:I})=>{let z=k(),N=o(),J=V(),$U=K(()=>tU({baseURL:z}),[z]),zU=K(()=>m(),[]),DU=K(()=>z?u(z):null,[z]),HU=K(()=>z?h(z,N):null,[z,N]),_=O(),{data:Q,isLoading:C,error:T}=rU({queryKey:["uiConfig",U.pathname+U.search,_?.initData],queryFn:async()=>{let q=new URLSearchParams(U.search);if(q.set("__pieroot","max"),_?.initData)q.set("initData",_.initData);let x="/api/content"+U.pathname+"?"+q.toString();if(J)console.log("[PieRoot] Fetching UI configuration from:",x);let v=await $U.get(x,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(J)console.log("[PieRoot] Received UI configuration:",v.data);return v.data},enabled:!!_?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...D}),b=IU(U.pathname,$,L);if(!z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(T&&J)return console.error("[PieRoot] Error fetching UI configuration:",T),console.error("[PieRoot] Error details:",{message:T.message,status:T.response?.status,data:T.response?.data}),H?.(T),b;if(C||!Q){if(J)console.log("[PieRoot] Loading state:",{isLoading:C,hasUiConfiguration:!!Q});return b}if(J)console.log("[PieRoot] UI configuration loaded successfully:",Q),console.log("[PieRoot] Rendering UI with configuration");return Z(d.Provider,{value:zU,children:Z(X.Provider,{value:DU,children:Z(B.Provider,{value:HU,children:Z(Y.Provider,{value:L??Z(LL,{}),children:Z(n,{children:Z(s,{children:I?Z(w,{uiConfig:Q}):Z("form",{id:"piedata_global_form",action:z+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:Z(w,{uiConfig:Q})})})})})})})})},UL=(U)=>{let L=K(()=>new iU,[]),$=U.queryClient??L;return Z(r.Provider,{value:U.onNavigate,children:Z(P.Provider,{value:U.config,children:Z(F.Provider,{value:U.onError,children:Z(aU,{client:$,children:Z(eU,{...U})})})})})},IL=UL;export{O as useMaxWebApp,uU as useMaxInitData,cU as useMaxHapticFeedback,lU as useMaxBackButton,IL as PieMaxRoot};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var CU=Object.create;var{getPrototypeOf:bU,defineProperty:X,getOwnPropertyNames:t,getOwnPropertyDescriptor:xU}=Object,e=Object.prototype.hasOwnProperty;var vU=(U,L,I)=>{I=U!=null?CU(bU(U)):{};let z=L||!U||!U.__esModule?X(I,"default",{value:U,enumerable:!0}):I;for(let D of t(U))if(!e.call(z,D))X(z,D,{get:()=>U[D],enumerable:!0});return z},r=new WeakMap,mU=(U)=>{var L=r.get(U),I;if(L)return L;if(L=X({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")t(U).map((z)=>!e.call(L,z)&&X(L,z,{get:()=>U[z],enumerable:!(I=xU(U,z))||I.enumerable}));return r.set(U,L),L};var dU=(U,L)=>{for(var I in L)X(U,I,{get:L[I],enumerable:!0,configurable:!0,set:(z)=>L[I]=()=>z})};var IL={};dU(IL,{useMaxWebApp:()=>T,useMaxInitData:()=>qU,useMaxHapticFeedback:()=>_U,useMaxBackButton:()=>KU,PieMaxRoot:()=>PU});module.exports=mU(IL);var Q=require("react"),q=require("@tanstack/react-query");var UU=vU(require("mitt")),j=require("react"),g=null;function LU(){if(!g)g=UU.default();return g}var gU=j.createContext(null);var IU=gU;var zU=require("socket.io-client"),DU=require("react"),$U=new Map,HU=(U)=>{let L=$U.get(U);if(L)return L;let I=zU.io(U,{autoConnect:!1,transports:["websocket"]});return $U.set(U,I),I},uU=DU.createContext(null),M=uU;var ZU=require("react"),u=require("centrifuge"),JU=new Map,NU=(U,L)=>{if(!L)return null;let I=`${U}::${L}`,z=JU.get(I);if(z)return z;async function D(){let H=await fetch(U+"api/centrifuge/gen_token");if(!H.ok){if(H.status===403)throw new u.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${H.status}`)}return(await H.json()).token}let $=new u.Centrifuge(L,{getToken:D});return JU.set(I,$),$},lU=ZU.createContext(null),f=lU;var C=require("react");var S=require("react"),A=new Map,P=new Map;function k(U,L){let I=`${U}::${L}`,z=U?A.get(I):void 0,[D,$]=S.useState(z??null);return S.useEffect(()=>{if(!U)return;if(A.has(I)){$(A.get(I));return}let H=P.get(I);if(!H)H=fetch(U+`api/support/${L}`,{method:"GET"}).then((Z)=>Z.json()).then((Z)=>{return A.set(I,Z),P.delete(I),Z}).catch((Z)=>{throw P.delete(I),Z}),P.set(I,H);let N=!1;return H.then((Z)=>{if(!N)$(Z)}).catch(()=>{}),()=>{N=!0}},[U,L,I]),D}var y=require("react"),l=y.createContext(null),c=()=>{let U=y.useContext(l);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},h=()=>{let{apiServer:U}=c();return U},w=h,TU=()=>{let{centrifugeServer:U}=c();return U};var Y=()=>{let{enableRenderingLog:U}=c();return U};var cU=null;function VU(){cU?.()}var hU=({children:U})=>{let L=C.useContext(M),I=w(),z=k(I,"socketIO"),D=($)=>{if(typeof window<"u")window.sid=$.sid,VU(),console.log(`SocketIO initialized: ${window.sid}`)};return C.useEffect(()=>{if(!L)return;let $=()=>{console.log("SocketIO connected")},H=(N)=>{console.log(`SocketIO disconnected: ${N}`),L.connect()};if(z)L.on("pieinit",D),L.on("connect",$),L.on("disconnect",H),L.connect();return()=>{if(z)L.off("pieinit",D),L.off("connect",$),L.off("disconnect",H),L.disconnect()}},[L,z]),U},YU=hU;var b=require("react");var oU=({children:U})=>{let L=b.useContext(f),I=w(),z=k(I,"centrifuge");return b.useEffect(()=>{if(!L)return;let D=()=>{console.log("Centrifuge connected")},$=(H)=>{console.log("Centrifuge disconnected:",H)};if(z)L.on("connected",D),L.on("disconnected",$),L.connect();return()=>{if(z)L.disconnect()}},[L,z]),U},FU=oU;var GU=require("react"),x=require("react/jsx-runtime"),pU=GU.createContext(x.jsx(x.Fragment,{})),F=pU;var OU=require("react"),nU=OU.createContext(void 0),G=nU;var sU=new Map;var v=(U)=>{return sU.get(U)};var B=require("react");var m=require("react"),QU=require("react/jsx-runtime"),iU=2,aU=400;class O extends m.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<iU){let L=aU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return QU.jsx(m.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var d=require("react/jsx-runtime");function rU({uiConfig:U,setUiAjaxConfiguration:L}){let I=B.useContext(F),z=B.useContext(G),D=Y();if(D)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let $=v(U.card);if(!$?.component){if(D)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return I}if(D)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let H=$.component,N=d.jsx(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if($.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",$.name);return d.jsx(O,{name:$.name,fallback:$.fallback?d.jsx($.fallback,{}):I,onError:z,children:N})}if(D)console.log("[UI] Rendering component directly:",$.name);return N}var o=B.memo(rU);var AU=require("axios-date-transformer");var E=require("react"),T=()=>{let[U,L]=E.useState(null);return E.useEffect(()=>{if(typeof window>"u")return;let I=window.WebApp;if(!I)return;I.ready(),L(I)},[]),U},qU=()=>{let U=T();return[U?.initDataUnsafe,U?.initData]},KU=(U)=>{let L=T();return E.useEffect(()=>{if(!L||!U)return;return L.BackButton.onClick(U),L.BackButton.show(),()=>{L.BackButton.offClick(U),L.BackButton.hide()}},[L,U]),L?.BackButton??null},_U=()=>{return T()?.HapticFeedback??null};var XU=require("react"),tU=XU.createContext(void 0),BU=tU;var p=require("react");var EU=require("react"),eU=EU.createContext(null),RU=eU;var R=require("react/jsx-runtime");function WU({uiConfig:U,setUiAjaxConfiguration:L}){let I=p.useContext(F),z=p.useContext(G),D=Y();if(D)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let $=v(U.card);if(!$?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return I}if(D)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(D)console.log("[UILoading] Rendering fallback for:",$.name);let Z=$.fallback;return R.jsx(Z,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",$.name);let H=$.component,N=R.jsx(RU.Provider,{value:WU,children:R.jsx(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if($.isLazy)return R.jsx(O,{name:$.name,fallback:I,onError:z,children:N});return N}var jU=WU;var fU=require("react/jsx-runtime");function MU(U,L,I){if(!L)return I;let z=U.replace(/^\//,""),D=L[z];if(!D)return I;return fU.jsx(jU,{uiConfig:D})}var J=require("react/jsx-runtime"),UL=({location:U,fallback:L,piecache:I,onError:z,queryOptions:D,disableGlobalForm:$})=>{let H=h(),N=TU(),Z=Y(),SU=Q.useMemo(()=>AU.createAxiosDateTransformer({baseURL:H}),[H]),kU=Q.useMemo(()=>LU(),[]),yU=Q.useMemo(()=>H?HU(H):null,[H]),wU=Q.useMemo(()=>H?NU(H,N):null,[H,N]),W=T(),{data:K,isLoading:n,error:V}=q.useQuery({queryKey:["uiConfig",U.pathname+U.search,W?.initData],queryFn:async()=>{let _=new URLSearchParams(U.search);if(_.set("__pieroot","max"),W?.initData)_.set("initData",W.initData);let i="/api/content"+U.pathname+"?"+_.toString();if(Z)console.log("[PieRoot] Fetching UI configuration from:",i);let a=await SU.get(i,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(Z)console.log("[PieRoot] Received UI configuration:",a.data);return a.data},enabled:!!W?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(_)=>Math.min(1000*2**_,30000),...D}),s=MU(U.pathname,I,L);if(!H)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&Z)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),z?.(V),s;if(n||!K){if(Z)console.log("[PieRoot] Loading state:",{isLoading:n,hasUiConfiguration:!!K});return s}if(Z)console.log("[PieRoot] UI configuration loaded successfully:",K),console.log("[PieRoot] Rendering UI with configuration");return J.jsx(IU.Provider,{value:kU,children:J.jsx(M.Provider,{value:yU,children:J.jsx(f.Provider,{value:wU,children:J.jsx(F.Provider,{value:L??J.jsx(J.Fragment,{}),children:J.jsx(YU,{children:J.jsx(FU,{children:$?J.jsx(o,{uiConfig:K}):J.jsx("form",{id:"piedata_global_form",action:H+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:J.jsx(o,{uiConfig:K})})})})})})})})},LL=(U)=>{let L=Q.useMemo(()=>new q.QueryClient,[]),I=U.queryClient??L;return J.jsx(BU.Provider,{value:U.onNavigate,children:J.jsx(l.Provider,{value:U.config,children:J.jsx(G.Provider,{value:U.onError,children:J.jsx(q.QueryClientProvider,{client:I,children:J.jsx(UL,{...U})})})})})},PU=LL;
|
|
@@ -13,8 +13,8 @@ export type PieStorybookProvidersProps = {
|
|
|
13
13
|
emitter?: SBEmitter;
|
|
14
14
|
pieConfig?: Partial<typeof STORYBOOK_PIE_CONFIG>;
|
|
15
15
|
};
|
|
16
|
-
export declare const PieStorybookProviders: ({ children, emitter, pieConfig, }: PieStorybookProvidersProps) => import("react
|
|
17
|
-
export declare const withPieCard: (Story: (props?: unknown) => ReactNode) => import("react
|
|
16
|
+
export declare const PieStorybookProviders: ({ children, emitter, pieConfig, }: PieStorybookProvidersProps) => import("react").JSX.Element;
|
|
17
|
+
export declare const withPieCard: (Story: (props?: unknown) => ReactNode) => import("react").JSX.Element;
|
|
18
18
|
export declare const firePieMethod: (emitter: SBEmitter, cardName: string, methodName: string, payload: unknown) => void;
|
|
19
19
|
export type PieMethodTriggerProps = {
|
|
20
20
|
card: string;
|
|
@@ -22,7 +22,7 @@ export type PieMethodTriggerProps = {
|
|
|
22
22
|
payload?: unknown;
|
|
23
23
|
label?: string;
|
|
24
24
|
};
|
|
25
|
-
export declare const PieMethodTrigger: ({ card, method, payload, label, }: PieMethodTriggerProps) => import("react
|
|
25
|
+
export declare const PieMethodTrigger: ({ card, method, payload, label, }: PieMethodTriggerProps) => import("react").JSX.Element;
|
|
26
26
|
export { PIECARD_PARAM_KEY, PIE_STORYBOOK_FIRE_EVENT } from './addon/constants';
|
|
27
27
|
export type { PieMethodSpec, PieCardParams } from './addon/constants';
|
|
28
28
|
export declare const PieStorybookChannelBridge: () => null;
|