@swarm.ing/pieui 2.1.3 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{useContext as GH,useEffect as XH,useRef as fU}from"react";import{createContext as DU,useContext as VU}from"react";var IH=globalThis,K=(H,U)=>{let Z=Symbol.for(H);if(!(Z in IH))IH[Z]=U();return IH[Z]};var m=K("@swarm.ing/pieui:context:pieConfig",()=>DU(null)),p=()=>{let H=VU(m);if(!H)throw Error("usePieConfig must be used within PieConfigProvider");return H},g=()=>{let{apiServer:H}=p();return H},s=g,n=()=>{let{centrifugeServer:H}=p();return H};var j=()=>{let{enableRenderingLog:H}=p();return H},NH=j;var OH="__piedemo__";import{createContext as FU}from"react";import{Centrifuge as fH}from"centrifuge";var EH=K("@swarm.ing/pieui:centrifuge-cache",()=>new Map),r=(H,U)=>{if(!U)return null;let Z=`${H}::${U}`,z=EH.get(Z);if(z)return z;async function T(){let J=await fetch(H+"api/centrifuge/gen_token");if(!J.ok){if(J.status===403)throw new fH.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let $=new fH(U,{getToken:T});return EH.set(Z,$),$},_U=K("@swarm.ing/pieui:context:centrifuge",()=>FU(null)),y=_U;import{io as KU}from"socket.io-client";import{createContext as MU}from"react";var CH=K("@swarm.ing/pieui:socket-cache",()=>new Map),t=(H)=>{let U=CH.get(H);if(U)return U;let Z=KU(H,{autoConnect:!1,transports:["websocket"]});return CH.set(H,Z),Z},AU=K("@swarm.ing/pieui:context:socket",()=>MU(null)),k=AU;import PU from"mitt";import{createContext as RU,useCallback as wU,useContext as LU}from"react";function c(){return K("@swarm.ing/pieui:mitt-emitter",()=>PU())}var jH=K("@swarm.ing/pieui:context:mitt",()=>RU(null));function NU(H){let U=LU(jH);return wU((Z,z)=>{(U??c()).emit(`pie${Z}_${H}`,z)},[H,U])}var x=jH;import{jsx as jU,jsxs as yU,Fragment as CU}from"react/jsx-runtime";var EU=({card:H,data:U,children:Z,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:$=!1,centrifugeChannel:J=void 0,methods:B=void 0,stored:I=void 0})=>{let O=NH(),D=fU(B);if(D.current=B,O)console.log("[PieCard] Rendering card:",H),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:T,mitt:$,centrifugeChannel:J}),console.log("[PieCard] Methods:",B?Object.keys(B):"none"),console.log("[PieCard] Has children:",!!Z);let Q=GH(k),V=GH(y),G=GH(x);if(XH(()=>{if(!Q||!z||!D.current||!U.name){if(O&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!Q,useSocketioSupport:z,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}`;if(O)console.log(`[PieCard] Socket.IO registering event: ${q}`);let M=(F)=>{D.current?.[X]?.(F)};return Q.on(q,M),[q,M]});return()=>{W.forEach(([X,q])=>{if(O)console.log(`[PieCard] Socket.IO unregistering event: ${X}`);Q.off(X,q)})}},[Q,U.name,z]),XH(()=>{if(!V||!T||!J||!U.name){if(O&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}_${J}`;if(O)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let M=V.newSubscription(q);return M.on("publication",(F)=>{if(O)console.log(`[PieCard] Centrifuge received data on ${q}:`,F.data);D.current?.[X]?.(F.data)}),M.subscribe(),M});return()=>{W.forEach((X)=>{if(O)console.log("[PieCard] Centrifuge unsubscribing from channel");X.unsubscribe(),V.removeSubscription(X)})}},[V,J,U.name,T]),XH(()=>{if(!G||!$||!U.name){if(O&&$)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!G,useMittSupport:$,hasMethods:!!D.current,hasDataName:!!U?.name});return}let Y=Object.keys(D.current??{}),W={};return Y.forEach((X)=>{let q=`pie${X}_${U.name}`,M=(F)=>{if(O)console.log(`[PieCard] Mitt registering event: ${q}`);D.current?.[X]?.(F)};W[q]=M,G.on(q,M)}),()=>{Object.entries(W).forEach(([X,q])=>{if(O)console.log(`[PieCard] Mitt unregistering event: ${X}`);G.off(X,q)})}},[G,U.name,$]),O)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return yU(CU,{children:[jU("input",{type:"hidden",name:U.name,value:JSON.stringify(I)}),Z]});return Z},P=EU;import{lazy as kU}from"react";var b=new Map;function yH(H,U){return U.catch(()=>{if(b.get(H)===U)b.delete(H)}),b.set(H,U),U}function YH(H,U){return kU(()=>{if(b.has(U))return b.get(U);return yH(U,H().then((Z)=>Z))})}var kH=async(H,U)=>{if(!U)return;if(b.has(H))return b.get(H);return yH(H,U().then((Z)=>Z))};var E=K("@swarm.ing/pieui:component-registry",()=>new Map),xU=(H)=>{if(!H.name)throw Error("Component registration requires a name");if(!H.component&&!H.loader)throw Error(`Component "${H.name}" requires component or loader`);let U={name:H.name,component:H.component,loader:H.loader,metadata:H.metadata,fallback:H.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=YH(U.loader,H.name),U.isLazy=!0;return U};function _(H){let U=xU(H);return E.set(U.name,U),U.component}var SU=(H)=>{H.forEach((U)=>_(U))},bU=(H)=>{E.delete(H)},vU=(H)=>{return E.has(H)},mU=(H)=>{return E.get(H)?.metadata},u=(H)=>{return E.get(H)},cU=()=>{return Array.from(E.keys())},hU=()=>{return E.size},SH=()=>Array.from(E.values()).filter((H)=>H.isLazy&&typeof H.loader==="function").map((H)=>H.name),bH=(H)=>{let U=E.get(H);if(!U?.isLazy||typeof U.loader!=="function")return;return kH(H,U.loader)},xH=!1,pU=()=>{if(xH||typeof window>"u")return;xH=!0;let H=navigator.connection;if(H?.saveData)return;if(H?.effectiveType&&["slow-2g","2g"].includes(H.effectiveType))return;let U=SH(),Z="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=U.length)return;Z(()=>{Promise.resolve().then(()=>bH(U[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};import{useContext as vH,memo as eU}from"react";import{createContext as gU}from"react";import{jsx as oU,Fragment as dU}from"react/jsx-runtime";var uU=K("@swarm.ing/pieui:context:fallback",()=>gU(oU(dU,{}))),L=uU;import{createContext as lU}from"react";var iU=K("@swarm.ing/pieui:context:lazyError",()=>lU(void 0)),S=iU;import{Component as sU,Suspense as nU}from"react";import{jsx as aU}from"react/jsx-runtime";var rU=2,tU=400;class h extends sU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(H){if(this.props.onError?.(H),this.state.attempt<rU){let U=tU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},U)}}componentDidUpdate(H){if(H.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 aU(nU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as qH}from"react/jsx-runtime";function HZ({uiConfig:H,setUiAjaxConfiguration:U}){let Z=vH(L),z=vH(S),T=j();if(T)console.log("[UI] Rendering component:",H.card),console.log("[UI] Component data:",H.data),console.log("[UI] Component content:",H.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let $=u(H.card);if(!$?.component){if(T)console.warn(`[UI] Component not found in registry: ${H.card}`),console.log("[UI] Returning fallback component");return Z}if(T)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let J=$.component,B=qH(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U});if($.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",$.name);return qH(h,{name:$.name,fallback:$.fallback?qH($.fallback,{}):Z,onError:z,children:B})}if(T)console.log("[UI] Rendering component directly:",$.name);return B}var w=eU(HZ);import{useContext as mH}from"react";import{createContext as UZ}from"react";var ZZ=K("@swarm.ing/pieui:context:uiRenderer",()=>UZ(null)),N=ZZ;import{jsx as a}from"react/jsx-runtime";function cH({uiConfig:H,setUiAjaxConfiguration:U}){let Z=mH(L),z=mH(S),T=j();if(T)console.log("[UILoading] Rendering fallback for:",H.card),console.log("[UILoading] Component data:",H.data),console.log("[UILoading] Component content:",H.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let $=u(H.card);if(!$?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${H.card}`),console.log("[UILoading] Returning fallback component");return Z}if(T)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(T)console.log("[UILoading] Rendering fallback for:",$.name);let I=$.fallback;return a(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",$.name);let J=$.component,B=a(N.Provider,{value:cH,children:a(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U})});if($.isLazy)return a(h,{name:$.name,fallback:Z,onError:z,children:B});return B}var QH=cH;import{useContext as $Z}from"react";import{jsx as WH}from"react/jsx-runtime";var zZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:T}=H,$=$Z(N)??w;return WH(P,{card:z,data:H,children:WH("div",{style:T,id:z,children:U.map((J,B)=>{return WH($,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},hH=zZ;var TZ=_({name:"SequenceCard",component:hH,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as JZ}from"react";import{jsx as pH}from"react/jsx-runtime";var BZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z}=H,T=JZ(N)??w;return pH(P,{card:z,data:H,children:U.map(($,J)=>{return pH(T,{uiConfig:$,setUiAjaxConfiguration:Z},`children-${J}`)})})},gH=BZ;var IZ=_({name:"UnionCard",component:gH,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as YZ,useState as qZ}from"react";import QZ from"html-react-parser";import{useCallback as e,useEffect as OZ,useRef as DH,useState as GZ}from"react";function XZ(){let H=new AudioContext,U=H.createOscillator(),Z=U.connect(H.createMediaStreamDestination());U.start();let z=Z.stream.getAudioTracks()[0];return z.enabled=!1,z}function VH(H=null,U){let[Z,z]=GZ(!1),T=DH(null),$=DH(null),J=DH(null),B=e(async(Q,V=!0)=>{if(T.current)I();let G=new RTCPeerConnection;if(G.onconnectionstatechange=()=>{if(G.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(G.connectionState))z(!1)},G.ontrack=(A)=>{if(H)H.srcObject=A.streams[0]},V){let A=await navigator.mediaDevices.getUserMedia({audio:!0});G.addTrack(A.getTracks()[0],A)}else{let A=XZ();G.addTrack(A)}let Y=G.createDataChannel("oai-events");$.current=Y,J.current=new Promise((A)=>{Y.addEventListener("open",()=>{A()})});let W=await G.createOffer();await G.setLocalDescription(W);let F=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:W.sdp,headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/sdp"}})).text();await G.setRemoteDescription({type:"answer",sdp:F}),T.current=G,await J.current},[H]),I=e(()=>{let Q=$.current;if(Q)Q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,$.current=null,J.current=null},[H]),O=e((Q)=>{let V=$.current;if(!V){console.error("Data channel is not ready",Q);return}let G=new Date().toLocaleTimeString();if(Q.event_id=Q.event_id||crypto.randomUUID(),V.send(JSON.stringify(Q)),!Q.timestamp)Q.timestamp=G;U?.(Q)},[U,H]),D=e((Q)=>{if(!$.current){console.error("Data channel is not ready");return}let G=()=>{O({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Q}]}}),O({type:"response.create"})};if(J.current)J.current.then(G);else G()},[U,H]);return OZ(()=>{let Q=$.current;if(!Q)return;let V=(G)=>{let Y=JSON.parse(G.data);if(!Y.timestamp)Y.timestamp=new Date().toLocaleTimeString();U?.(Y)};return Q.addEventListener("message",V),()=>{Q.removeEventListener("message",V)}},[U,H]),{isSessionActive:Z,startSession:B,stopSession:I,sendTextMessage:D}}import{jsx as DZ}from"react/jsx-runtime";var WZ=({data:H})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:$}=H,[J,B]=qZ(U),{isSessionActive:I,startSession:O,sendTextMessage:D}=VH(null,(Y)=>{if(console.log(Y.type,Y.type==="response.output_text.delta"&&Y.delta),Y.type==="response.output_text.delta"&&Y.delta)B((W)=>W+Y.delta)});return YZ(()=>{B(U)},[U]),DZ(P,{card:"HTMLEmbedCard",data:H,methods:{update:(Y)=>{B(Y.value)},generateUsingAI:async(Y)=>{try{if(!I&&Y.token)await O(Y.token,!1);D(Y.prompt)}catch(W){console.error("Failed to generate using AI",W)}},initializeAI:async(Y)=>{if(!I&&Y.token)await O(Y.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:Z,useMittSupport:T,centrifugeChannel:$,children:QZ(J)})},uH=WZ;var VZ=_({name:"HTMLEmbedCard",component:uH,metadata:{author:"Swarm.ing"}});import{useEffect as FZ,useState as _Z}from"react";import{jsx as dH}from"react/jsx-runtime";var KZ=({data:H})=>{let{name:U,value:Z,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:J}=H,[B,I]=_Z(Z);return FZ(()=>{I(Z)},[Z]),dH(P,{card:"HiddenCard",data:H,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:J,methods:{update:({value:O})=>{I(O)}},children:dH("input",{type:"hidden",id:U,name:U,value:B})})},oH=KZ;var MZ=_({name:"HiddenCard",component:oH,metadata:{author:"Swarm.ing"}});import{useContext as lH,useEffect as RZ}from"react";import{createContext as AZ}from"react";var PZ=K("@swarm.ing/pieui:context:navigate",()=>AZ(void 0)),C=PZ;import{jsx as NZ,Fragment as LZ}from"react/jsx-runtime";var wZ=({data:H})=>{let{url:U}=H,Z=lH(C),z=lH(L);return RZ(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),NZ(LZ,{children:z})},iH=wZ;var fZ=_({name:"AutoRedirectCard",component:iH,metadata:{author:"Swarm.ing"}});import{Bounce as EZ,Slide as CZ,Zoom as jZ,Flip as yZ}from"react-toastify";import{toast as kZ,ToastContainer as xZ}from"react-toastify";import{useContext as SZ,useMemo as bZ,useRef as vZ}from"react";import{jsx as FH,Fragment as uZ}from"react/jsx-runtime";var mZ={bounce:EZ,slide:CZ,zoom:jZ,flip:yZ},cZ=(H)=>{let U={...H,type:H.alertType,transition:H.transition?mZ[H.transition]:void 0,position:H.position??"bottom-right",autoClose:H.autoClose??3000,style:{backgroundColor:"black",...H.sx}};kZ(H.message,U)},hZ=(H)=>{console.log("Log event",H)},pZ=(H)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(H.title,{body:H.message??H.subtitle,icon:H.icon,silent:H.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")U()})},gZ=({data:H})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:T}=H,$=SZ(C),J=vZ($);J.current=$;let B=bZ(()=>({alert:cZ,log:hZ,push:pZ,redirect:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()},reload:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()}}),[]);return FH(uZ,{children:FH(P,{card:"IOEventsCard",data:H,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:T,methods:B,children:FH(xZ,{})})})},sH=gZ;var dZ=_({name:"IOEventsCard",component:sH,metadata:{author:"Swarm.ing"}});import{useEffect as nH,useState as oZ}from"react";import{jsx as rH}from"react/jsx-runtime";var lZ=({data:H})=>{let{name:U,key:Z,value:z,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=oZ(z);return nH(()=>{O(z)},[z]),nH(()=>{if(typeof window>"u")return;sessionStorage.setItem(Z,I)},[Z,I]),rH(P,{card:"SessionStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{sessionStorage.removeItem(Z),O("")}},children:rH("input",{type:"hidden",id:U,name:U,value:I})})},tH=lZ;var iZ=_({name:"SessionStorageCard",component:tH,metadata:{author:"PieData"}});import{useEffect as aH,useState as sZ}from"react";import{jsx as eH}from"react/jsx-runtime";var nZ=({data:H})=>{let{name:U,key:Z,value:z,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=sZ(z);return aH(()=>{O(z)},[z]),aH(()=>{if(typeof window>"u")return;localStorage.setItem(Z,I)},[Z,I]),eH(P,{card:"DeviceStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{localStorage.removeItem(Z),O("")}},children:eH("input",{type:"hidden",id:U,name:U,value:I})})},HU=nZ;var rZ=_({name:"DeviceStorageCard",component:HU,metadata:{author:"PieData"}});import{useCallback as _H,useContext as KH,useEffect as tZ,useRef as aZ,useState as UU}from"react";import{jsx as ZU}from"react/jsx-runtime";var eZ=({data:H,content:U})=>{let{useLoader:Z,noReturn:z,returnType:T,useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I}=H,O=KH(L),D=KH(N)??w,[Q,V]=UU(!1),[G,Y]=UU(null),W=aZ(U),X=KH(x),q=_H((A)=>{if(A===null)V(!0);else if(V(!1),!z)W.current=A;if(!z)Y(A)},[z]),M=_H((A)=>{W.current=A.content,Y(A.content)},[]),F=_H((A)=>{if(A===null)V(!0);else if(V(!1),!z)for(let l of A)X?.emit(l.name,l.data)},[z,X]);if(tZ(()=>{Y(U),V(!1)},[U]),!G&&Z)return O;return ZU(P,{card:"AjaxGroupCard",data:H,methods:{changeContent:M},useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I,children:ZU(D,{uiConfig:G??W.current,setUiAjaxConfiguration:T==="events"?F:q})})},$U=eZ;var H$=_({name:"AjaxGroupCard",component:$U,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as zU}from"react";import{jsx as MH}from"react/jsx-runtime";var U$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,url:T,sx:$}=H,J=zU(C),B=zU(N)??w;return MH(P,{card:z,data:H,children:MH("div",{style:$,id:z,onClick:(O)=>{if(T)if(O.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:MH(B,{setUiAjaxConfiguration:Z,uiConfig:U})})})},TU=U$;var Z$=_({name:"BoxCard",component:TU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as $$}from"react";import{jsx as AH}from"react/jsx-runtime";var z$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:T}=H,$=$$(N)??w;return AH(P,{card:z,data:H,children:AH("div",{style:T,id:z,children:U.map((J,B)=>{return AH($,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},JU=z$;var T$=_({name:"OneOfCard",component:JU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as o}from"react";import{QueryClient as W$,QueryClientProvider as D$,useQuery as V$}from"@tanstack/react-query";import{useContext as I$,useEffect as O$}from"react";import{useEffect as J$,useState as B$}from"react";var HH=new Map,UH=new Map;function ZH(H,U){let Z=`${H}::${U}`,z=H?HH.get(Z):void 0,[T,$]=B$(z??null);return J$(()=>{if(!H)return;if(HH.has(Z)){$(HH.get(Z));return}let J=UH.get(Z);if(!J)J=fetch(H+`api/support/${U}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return HH.set(Z,I),UH.delete(Z),I}).catch((I)=>{throw UH.delete(Z),I}),UH.set(Z,J);let B=!1;return J.then((I)=>{if(!B)$(I)}).catch(()=>{}),()=>{B=!0}},[H,U,Z]),T}var d=K("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function BU(){d.resolve?.()}function PH(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!d.promise)d.promise=new Promise((H)=>{d.resolve=()=>{H()}});return d.promise}var G$=({children:H})=>{let U=I$(k),Z=s(),z=ZH(Z,"socketIO"),T=($)=>{if(typeof window<"u")window.sid=$.sid,BU(),console.log(`SocketIO initialized: ${window.sid}`)};return O$(()=>{if(!U)return;let $=()=>{console.log("SocketIO connected")},J=(B)=>{console.log(`SocketIO disconnected: ${B}`),U.connect()};if(z)U.on("pieinit",T),U.on("connect",$),U.on("disconnect",J),U.connect();return()=>{if(z)U.off("pieinit",T),U.off("connect",$),U.off("disconnect",J),U.disconnect()}},[U,z]),H},$H=G$;import{useContext as X$,useEffect as Y$}from"react";var q$=({children:H})=>{let U=X$(y),Z=s(),z=ZH(Z,"centrifuge");return Y$(()=>{if(!U)return;let T=()=>{console.log("Centrifuge connected")},$=(J)=>{console.log("Centrifuge disconnected:",J)};if(z)U.on("connected",T),U.on("disconnected",$),U.connect();return()=>{if(z)U.disconnect()}},[U,z]),H},zH=q$;import{createAxiosDateTransformer as F$}from"axios-date-transformer";import{jsx as Q$}from"react/jsx-runtime";function IU(H,U,Z){if(!U)return Z;let z=H.replace(/^\//,""),T=U[z];if(!T)return Z;return Q$(QH,{uiConfig:T})}import{jsx as R,Fragment as M$}from"react/jsx-runtime";var _$=({location:H,fallback:U,piecache:Z,onError:z,queryOptions:T,disableGlobalForm:$})=>{let J=g(),B=n(),I=j(),O=o(()=>F$({baseURL:J||""}),[J]),D=o(()=>c(),[]),Q=o(()=>J?t(J):null,[J]),V=o(()=>J?r(J,B):null,[J,B]),{data:G,isLoading:Y,error:W}=V$({queryKey:["uiConfig",H.pathname+H.search,J],enabled:!!J,queryFn:async()=>{let q=new URLSearchParams(H.search);q.set("__pieroot","web");let M="/api/content"+H.pathname+"?"+q.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",M);let F=await O.get(M,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",F.data);return F.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...T}),X=IU(H.pathname,Z,U);if(!J)return X??null;if(I)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",B),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!Z);if(W){if(I)console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data});return z?.(W),X}if(Y||!G){if(I)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!G});return X}if(I)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return R(x.Provider,{value:D,children:R(k.Provider,{value:Q,children:R(y.Provider,{value:V,children:R(L.Provider,{value:U??R(M$,{}),children:R($H,{children:R(zH,{children:$?R(w,{uiConfig:G}):R("form",{id:"piedata_global_form",action:J+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:R(w,{uiConfig:G})})})})})})})})},K$=(H)=>{let U=o(()=>new W$,[]),Z=H.queryClient??U;return R(C.Provider,{value:H.onNavigate,children:R(m.Provider,{value:H.config,children:R(S.Provider,{value:H.onError,children:R(D$,{client:Z,children:R(_$,{...H})})})})})},RH=K$;import{useMemo as wH,useState as A$}from"react";import{QueryClient as P$,QueryClientProvider as R$}from"@tanstack/react-query";import{jsx as f,Fragment as N$}from"react/jsx-runtime";var w$=({location:H,fallback:U,children:Z,disableGlobalForm:z})=>{let T=g(),$=n(),J=j(),B=wH(()=>c(),[]),I=wH(()=>T?t(T):null,[T]),O=wH(()=>T?r(T,$):null,[T,$]);if(J)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",$),console.log("[PieRoot] Fallback provided:",!!U);return f(x.Provider,{value:B,children:f(k.Provider,{value:I,children:f(y.Provider,{value:O,children:f(L.Provider,{value:U??f(N$,{}),children:f($H,{children:f(zH,{children:z?Z:f("form",{id:"piedata_global_form",action:T+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},L$=(H)=>{let[U]=A$(()=>new P$),Z=H.queryClient??U;return f(C.Provider,{value:H.onNavigate,children:f(m.Provider,{value:H.config,children:f(S.Provider,{value:H.onError,children:f(R$,{client:Z,children:f(w$,{...H})})})})})},f$=L$;import{useMemo as E$}from"react";import{jsx as OU}from"react/jsx-runtime";var C$=OU("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),j$=({apiServer:H,pathname:U="/",search:Z="",centrifugeServer:z,fallback:T,enableRenderingLog:$=!1})=>{let J=H??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",B=E$(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:$,pageProcessor:"web"}),[J,z,$]);return OU(RH,{location:{pathname:U,search:Z},config:B,fallback:T??C$,onNavigate:(O)=>{if(typeof window<"u")window.history.pushState(null,"",O)}})},y$=j$;import{useMemo as k$}from"react";var x$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],S$=new Set(["telegram:cloud","telegram:secure"]),TH=(H)=>{if(H==="sid")return{source:"sid",key:"sid"};for(let U of x$){let Z=U+":";if(H.startsWith(Z))return{source:U,key:H.slice(Z.length)}}return{source:"dom",key:H}},GU=(H,U=!1)=>{let{source:Z,key:z}=TH(H);if(Z==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}if(Z==="localStorage"||Z==="sessionStorage")try{let B=(Z==="localStorage"?window.localStorage:window.sessionStorage).getItem(z);if(B===null){if(U)console.warn(`No ${Z} value found for key ${z}`);return[]}return[B]}catch(J){if(U)console.warn(`Failed to read ${Z} key ${z}:`,J);return[]}if(Z==="cookie"){let J=b$(z);if(J===null){if(U)console.warn(`No cookie found for key ${z}`);return[]}return[J]}if(Z==="url"){let J=new URLSearchParams(window.location.search).getAll(z);if(!J.length&&U)console.warn(`No URL query param found for key ${z}`);return J}if(S$.has(Z)){if(U)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=document.getElementsByName(z);if(!T.length){if(U)console.warn(`No input found with name ${z}`);return[]}let $=T[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},b$=(H)=>{let U=document.cookie?document.cookie.split(";"):[];for(let Z of U){let z=Z.indexOf("=");if((z===-1?Z:Z.slice(0,z)).trim()===H){let $=z===-1?"":Z.slice(z+1).trim();try{return decodeURIComponent($)}catch{return $}}}return null},v$=(H,U,Z)=>{let z=window.Telegram?.WebApp,T=H==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,$=H==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if(Z)console.warn(`${$} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(U,(B,I)=>{if(B){if(Z)console.warn(`Failed to read ${$} key ${U}:`,B);J([]);return}if(I==null||I===""){if(Z)console.warn(`No ${$} value found for key ${U}`);J([]);return}J([I])})}catch(B){if(Z)console.warn(`Failed to read ${$} key ${U}:`,B);J([])}})},XU=async(H,U=!1)=>{let{source:Z,key:z}=TH(H);if(Z==="telegram:cloud"||Z==="telegram:secure")return v$(Z,z,U);return GU(H,U)},m$=(H,U={},Z=[],z,T)=>{let $=T?.renderingLogEnabled??!1,J=T?.timeout,B=T?.retryPolicy,I=B?.maxRetries??0,O=B?.baseDelay??1000,D=B?.retryOn??[502,503,504];if($)console.log("Registering AJAX: ",z,U,Z);return async(Q={})=>{if(typeof window>"u"||typeof document>"u"){if($)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if($)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!H){if($)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await PH();let G=new FormData;for(let[X,q]of Object.entries({...U,...Q}))G.append(X,q);for(let X of Z){let{key:q}=TH(X);for(let M of await XU(X,$))G.append(q,M)}let Y=V+"api/ajax_content"+z;H(null);let W;for(let X=0;X<=I;X++){if(X>0){let F=O*2**(X-1);if($)console.log(`AJAX retry ${X}/${I} after ${F}ms`);await new Promise((A)=>setTimeout(A,F))}let q=J!=null?new AbortController:null,M=q&&setTimeout(()=>q.abort(),J);try{let F=await fetch(Y,{method:"POST",body:G,signal:q?.signal});if(M)clearTimeout(M);if(!F.ok&&D.includes(F.status)&&X<I){W=Error(`HTTP ${F.status}`);continue}let l=(F.headers.get("content-type")||"").includes("application/json");if(!!F.body?.getReader&&!l){let i=F.body.getReader(),YU=new TextDecoder,v="";while(!0){let{done:JH,value:qU}=await i.read();if(JH)break;v+=YU.decode(qU,{stream:!0});let LH=v.split(`
2
+ import{useContext as GH,useEffect as XH,useRef as fU}from"react";import{createContext as DU,useContext as VU}from"react";var IH=globalThis,K=(H,U)=>{let Z=Symbol.for(H);if(!(Z in IH))IH[Z]=U();return IH[Z]};var m=K("@swarm.ing/pieui:context:pieConfig",()=>DU(null)),p=()=>{let H=VU(m);if(!H)throw Error("usePieConfig must be used within PieConfigProvider");return H},g=()=>{let{apiServer:H}=p();return H},s=g,n=()=>{let{centrifugeServer:H}=p();return H};var j=()=>{let{enableRenderingLog:H}=p();return H},NH=j;var OH="__piedemo__";import{createContext as FU}from"react";import{Centrifuge as fH}from"centrifuge";var EH=K("@swarm.ing/pieui:centrifuge-cache",()=>new Map),r=(H,U)=>{if(!U)return null;let Z=`${H}::${U}`,z=EH.get(Z);if(z)return z;async function T(){let J=await fetch(H+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new fH.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let $=new fH(U,{getToken:T});return EH.set(Z,$),$},_U=K("@swarm.ing/pieui:context:centrifuge",()=>FU(null)),y=_U;import{io as KU}from"socket.io-client";import{createContext as MU}from"react";var CH=K("@swarm.ing/pieui:socket-cache",()=>new Map),t=(H)=>{let U=CH.get(H);if(U)return U;let Z=KU(H,{autoConnect:!1,transports:["websocket"]});return CH.set(H,Z),Z},AU=K("@swarm.ing/pieui:context:socket",()=>MU(null)),k=AU;import PU from"mitt";import{createContext as RU,useCallback as wU,useContext as LU}from"react";function c(){return K("@swarm.ing/pieui:mitt-emitter",()=>PU())}var jH=K("@swarm.ing/pieui:context:mitt",()=>RU(null));function NU(H){let U=LU(jH);return wU((Z,z)=>{(U??c()).emit(`pie${Z}_${H}`,z)},[H,U])}var x=jH;import{jsx as jU,jsxs as yU,Fragment as CU}from"react/jsx-runtime";var EU=({card:H,data:U,children:Z,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:$=!1,centrifugeChannel:J=void 0,methods:B=void 0,stored:I=void 0})=>{let O=NH(),D=fU(B);if(D.current=B,O)console.log("[PieCard] Rendering card:",H),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:T,mitt:$,centrifugeChannel:J}),console.log("[PieCard] Methods:",B?Object.keys(B):"none"),console.log("[PieCard] Has children:",!!Z);let Q=GH(k),V=GH(y),G=GH(x);if(XH(()=>{if(!Q||!z||!D.current||!U.name){if(O&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!Q,useSocketioSupport:z,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}`;if(O)console.log(`[PieCard] Socket.IO registering event: ${q}`);let M=(F)=>{D.current?.[X]?.(F)};return Q.on(q,M),[q,M]});return()=>{W.forEach(([X,q])=>{if(O)console.log(`[PieCard] Socket.IO unregistering event: ${X}`);Q.off(X,q)})}},[Q,U.name,z]),XH(()=>{if(!V||!T||!J||!U.name){if(O&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}_${J}`;if(O)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let M=V.newSubscription(q);return M.on("publication",(F)=>{if(O)console.log(`[PieCard] Centrifuge received data on ${q}:`,F.data);D.current?.[X]?.(F.data)}),M.subscribe(),M});return()=>{W.forEach((X)=>{if(O)console.log("[PieCard] Centrifuge unsubscribing from channel");X.unsubscribe(),V.removeSubscription(X)})}},[V,J,U.name,T]),XH(()=>{if(!G||!$||!U.name){if(O&&$)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!G,useMittSupport:$,hasMethods:!!D.current,hasDataName:!!U?.name});return}let Y=Object.keys(D.current??{}),W={};return Y.forEach((X)=>{let q=`pie${X}_${U.name}`,M=(F)=>{if(O)console.log(`[PieCard] Mitt registering event: ${q}`);D.current?.[X]?.(F)};W[q]=M,G.on(q,M)}),()=>{Object.entries(W).forEach(([X,q])=>{if(O)console.log(`[PieCard] Mitt unregistering event: ${X}`);G.off(X,q)})}},[G,U.name,$]),O)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return yU(CU,{children:[jU("input",{type:"hidden",name:U.name,value:JSON.stringify(I)}),Z]});return Z},P=EU;import{lazy as kU}from"react";var b=new Map;function yH(H,U){return U.catch(()=>{if(b.get(H)===U)b.delete(H)}),b.set(H,U),U}function YH(H,U){return kU(()=>{if(b.has(U))return b.get(U);return yH(U,H().then((Z)=>Z))})}var kH=async(H,U)=>{if(!U)return;if(b.has(H))return b.get(H);return yH(H,U().then((Z)=>Z))};var E=K("@swarm.ing/pieui:component-registry",()=>new Map),xU=(H)=>{if(!H.name)throw Error("Component registration requires a name");if(!H.component&&!H.loader)throw Error(`Component "${H.name}" requires component or loader`);let U={name:H.name,component:H.component,loader:H.loader,metadata:H.metadata,fallback:H.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=YH(U.loader,H.name),U.isLazy=!0;return U};function _(H){let U=xU(H);return E.set(U.name,U),U.component}var SU=(H)=>{H.forEach((U)=>_(U))},bU=(H)=>{E.delete(H)},vU=(H)=>{return E.has(H)},mU=(H)=>{return E.get(H)?.metadata},u=(H)=>{return E.get(H)},cU=()=>{return Array.from(E.keys())},hU=()=>{return E.size},SH=()=>Array.from(E.values()).filter((H)=>H.isLazy&&typeof H.loader==="function").map((H)=>H.name),bH=(H)=>{let U=E.get(H);if(!U?.isLazy||typeof U.loader!=="function")return;return kH(H,U.loader)},xH=!1,pU=()=>{if(xH||typeof window>"u")return;xH=!0;let H=navigator.connection;if(H?.saveData)return;if(H?.effectiveType&&["slow-2g","2g"].includes(H.effectiveType))return;let U=SH(),Z="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=U.length)return;Z(()=>{Promise.resolve().then(()=>bH(U[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};import{useContext as vH,memo as eU}from"react";import{createContext as gU}from"react";import{jsx as oU,Fragment as dU}from"react/jsx-runtime";var uU=K("@swarm.ing/pieui:context:fallback",()=>gU(oU(dU,{}))),L=uU;import{createContext as lU}from"react";var iU=K("@swarm.ing/pieui:context:lazyError",()=>lU(void 0)),S=iU;import{Component as sU,Suspense as nU}from"react";import{jsx as aU}from"react/jsx-runtime";var rU=2,tU=400;class h extends sU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(H){if(this.props.onError?.(H),this.state.attempt<rU){let U=tU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},U)}}componentDidUpdate(H){if(H.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 aU(nU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as qH}from"react/jsx-runtime";function HZ({uiConfig:H,setUiAjaxConfiguration:U}){let Z=vH(L),z=vH(S),T=j();if(T)console.log("[UI] Rendering component:",H.card),console.log("[UI] Component data:",H.data),console.log("[UI] Component content:",H.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let $=u(H.card);if(!$?.component){if(T)console.warn(`[UI] Component not found in registry: ${H.card}`),console.log("[UI] Returning fallback component");return Z}if(T)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let J=$.component,B=qH(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U});if($.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",$.name);return qH(h,{name:$.name,fallback:$.fallback?qH($.fallback,{}):Z,onError:z,children:B})}if(T)console.log("[UI] Rendering component directly:",$.name);return B}var w=eU(HZ);import{useContext as mH}from"react";import{createContext as UZ}from"react";var ZZ=K("@swarm.ing/pieui:context:uiRenderer",()=>UZ(null)),N=ZZ;import{jsx as a}from"react/jsx-runtime";function cH({uiConfig:H,setUiAjaxConfiguration:U}){let Z=mH(L),z=mH(S),T=j();if(T)console.log("[UILoading] Rendering fallback for:",H.card),console.log("[UILoading] Component data:",H.data),console.log("[UILoading] Component content:",H.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let $=u(H.card);if(!$?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${H.card}`),console.log("[UILoading] Returning fallback component");return Z}if(T)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(T)console.log("[UILoading] Rendering fallback for:",$.name);let I=$.fallback;return a(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",$.name);let J=$.component,B=a(N.Provider,{value:cH,children:a(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U})});if($.isLazy)return a(h,{name:$.name,fallback:Z,onError:z,children:B});return B}var QH=cH;import{useContext as $Z}from"react";import{jsx as WH}from"react/jsx-runtime";var zZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:T}=H,$=$Z(N)??w;return WH(P,{card:z,data:H,children:WH("div",{style:T,id:z,children:U.map((J,B)=>{return WH($,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},hH=zZ;var TZ=_({name:"SequenceCard",component:hH,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as JZ}from"react";import{jsx as pH}from"react/jsx-runtime";var BZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z}=H,T=JZ(N)??w;return pH(P,{card:z,data:H,children:U.map(($,J)=>{return pH(T,{uiConfig:$,setUiAjaxConfiguration:Z},`children-${J}`)})})},gH=BZ;var IZ=_({name:"UnionCard",component:gH,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as YZ,useState as qZ}from"react";import QZ from"html-react-parser";import{useCallback as e,useEffect as OZ,useRef as DH,useState as GZ}from"react";function XZ(){let H=new AudioContext,U=H.createOscillator(),Z=U.connect(H.createMediaStreamDestination());U.start();let z=Z.stream.getAudioTracks()[0];return z.enabled=!1,z}function VH(H=null,U){let[Z,z]=GZ(!1),T=DH(null),$=DH(null),J=DH(null),B=e(async(Q,V=!0)=>{if(T.current)I();let G=new RTCPeerConnection;if(G.onconnectionstatechange=()=>{if(G.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(G.connectionState))z(!1)},G.ontrack=(A)=>{if(H)H.srcObject=A.streams[0]},V){let A=await navigator.mediaDevices.getUserMedia({audio:!0});G.addTrack(A.getTracks()[0],A)}else{let A=XZ();G.addTrack(A)}let Y=G.createDataChannel("oai-events");$.current=Y,J.current=new Promise((A)=>{Y.addEventListener("open",()=>{A()})});let W=await G.createOffer();await G.setLocalDescription(W);let F=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:W.sdp,headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/sdp"}})).text();await G.setRemoteDescription({type:"answer",sdp:F}),T.current=G,await J.current},[H]),I=e(()=>{let Q=$.current;if(Q)Q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,$.current=null,J.current=null},[H]),O=e((Q)=>{let V=$.current;if(!V){console.error("Data channel is not ready",Q);return}let G=new Date().toLocaleTimeString();if(Q.event_id=Q.event_id||crypto.randomUUID(),V.send(JSON.stringify(Q)),!Q.timestamp)Q.timestamp=G;U?.(Q)},[U,H]),D=e((Q)=>{if(!$.current){console.error("Data channel is not ready");return}let G=()=>{O({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Q}]}}),O({type:"response.create"})};if(J.current)J.current.then(G);else G()},[U,H]);return OZ(()=>{let Q=$.current;if(!Q)return;let V=(G)=>{let Y=JSON.parse(G.data);if(!Y.timestamp)Y.timestamp=new Date().toLocaleTimeString();U?.(Y)};return Q.addEventListener("message",V),()=>{Q.removeEventListener("message",V)}},[U,H]),{isSessionActive:Z,startSession:B,stopSession:I,sendTextMessage:D}}import{jsx as DZ}from"react/jsx-runtime";var WZ=({data:H})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:$}=H,[J,B]=qZ(U),{isSessionActive:I,startSession:O,sendTextMessage:D}=VH(null,(Y)=>{if(console.log(Y.type,Y.type==="response.output_text.delta"&&Y.delta),Y.type==="response.output_text.delta"&&Y.delta)B((W)=>W+Y.delta)});return YZ(()=>{B(U)},[U]),DZ(P,{card:"HTMLEmbedCard",data:H,methods:{update:(Y)=>{B(Y.value)},generateUsingAI:async(Y)=>{try{if(!I&&Y.token)await O(Y.token,!1);D(Y.prompt)}catch(W){console.error("Failed to generate using AI",W)}},initializeAI:async(Y)=>{if(!I&&Y.token)await O(Y.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:Z,useMittSupport:T,centrifugeChannel:$,children:QZ(J)})},uH=WZ;var VZ=_({name:"HTMLEmbedCard",component:uH,metadata:{author:"Swarm.ing"}});import{useEffect as FZ,useState as _Z}from"react";import{jsx as dH}from"react/jsx-runtime";var KZ=({data:H})=>{let{name:U,value:Z,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:J}=H,[B,I]=_Z(Z);return FZ(()=>{I(Z)},[Z]),dH(P,{card:"HiddenCard",data:H,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:J,methods:{update:({value:O})=>{I(O)}},children:dH("input",{type:"hidden",id:U,name:U,value:B})})},oH=KZ;var MZ=_({name:"HiddenCard",component:oH,metadata:{author:"Swarm.ing"}});import{useContext as lH,useEffect as RZ}from"react";import{createContext as AZ}from"react";var PZ=K("@swarm.ing/pieui:context:navigate",()=>AZ(void 0)),C=PZ;import{jsx as NZ,Fragment as LZ}from"react/jsx-runtime";var wZ=({data:H})=>{let{url:U}=H,Z=lH(C),z=lH(L);return RZ(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),NZ(LZ,{children:z})},iH=wZ;var fZ=_({name:"AutoRedirectCard",component:iH,metadata:{author:"Swarm.ing"}});import{Bounce as EZ,Slide as CZ,Zoom as jZ,Flip as yZ}from"react-toastify";import{toast as kZ,ToastContainer as xZ}from"react-toastify";import{useContext as SZ,useMemo as bZ,useRef as vZ}from"react";import{jsx as FH,Fragment as uZ}from"react/jsx-runtime";var mZ={bounce:EZ,slide:CZ,zoom:jZ,flip:yZ},cZ=(H)=>{let U={...H,type:H.alertType,transition:H.transition?mZ[H.transition]:void 0,position:H.position??"bottom-right",autoClose:H.autoClose??3000,style:{backgroundColor:"black",...H.sx}};kZ(H.message,U)},hZ=(H)=>{console.log("Log event",H)},pZ=(H)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(H.title,{body:H.message??H.subtitle,icon:H.icon,silent:H.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")U()})},gZ=({data:H})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:T}=H,$=SZ(C),J=vZ($);J.current=$;let B=bZ(()=>({alert:cZ,log:hZ,push:pZ,redirect:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()},reload:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()}}),[]);return FH(uZ,{children:FH(P,{card:"IOEventsCard",data:H,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:T,methods:B,children:FH(xZ,{})})})},sH=gZ;var dZ=_({name:"IOEventsCard",component:sH,metadata:{author:"Swarm.ing"}});import{useEffect as nH,useState as oZ}from"react";import{jsx as rH}from"react/jsx-runtime";var lZ=({data:H})=>{let{name:U,key:Z,value:z,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=oZ(z);return nH(()=>{O(z)},[z]),nH(()=>{if(typeof window>"u")return;sessionStorage.setItem(Z,I)},[Z,I]),rH(P,{card:"SessionStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{sessionStorage.removeItem(Z),O("")}},children:rH("input",{type:"hidden",id:U,name:U,value:I})})},tH=lZ;var iZ=_({name:"SessionStorageCard",component:tH,metadata:{author:"PieData"}});import{useEffect as aH,useState as sZ}from"react";import{jsx as eH}from"react/jsx-runtime";var nZ=({data:H})=>{let{name:U,key:Z,value:z,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=sZ(z);return aH(()=>{O(z)},[z]),aH(()=>{if(typeof window>"u")return;localStorage.setItem(Z,I)},[Z,I]),eH(P,{card:"DeviceStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{localStorage.removeItem(Z),O("")}},children:eH("input",{type:"hidden",id:U,name:U,value:I})})},HU=nZ;var rZ=_({name:"DeviceStorageCard",component:HU,metadata:{author:"PieData"}});import{useCallback as _H,useContext as KH,useEffect as tZ,useRef as aZ,useState as UU}from"react";import{jsx as ZU}from"react/jsx-runtime";var eZ=({data:H,content:U})=>{let{useLoader:Z,noReturn:z,returnType:T,useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I}=H,O=KH(L),D=KH(N)??w,[Q,V]=UU(!1),[G,Y]=UU(null),W=aZ(U),X=KH(x),q=_H((A)=>{if(A===null)V(!0);else if(V(!1),!z)W.current=A;if(!z)Y(A)},[z]),M=_H((A)=>{W.current=A.content,Y(A.content)},[]),F=_H((A)=>{if(A===null)V(!0);else if(V(!1),!z)for(let l of A)X?.emit(l.name,l.data)},[z,X]);if(tZ(()=>{Y(U),V(!1)},[U]),!G&&Z)return O;return ZU(P,{card:"AjaxGroupCard",data:H,methods:{changeContent:M},useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I,children:ZU(D,{uiConfig:G??W.current,setUiAjaxConfiguration:T==="events"?F:q})})},$U=eZ;var H$=_({name:"AjaxGroupCard",component:$U,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as zU}from"react";import{jsx as MH}from"react/jsx-runtime";var U$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,url:T,sx:$}=H,J=zU(C),B=zU(N)??w;return MH(P,{card:z,data:H,children:MH("div",{style:$,id:z,onClick:(O)=>{if(T)if(O.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:MH(B,{setUiAjaxConfiguration:Z,uiConfig:U})})})},TU=U$;var Z$=_({name:"BoxCard",component:TU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as $$}from"react";import{jsx as AH}from"react/jsx-runtime";var z$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:T}=H,$=$$(N)??w;return AH(P,{card:z,data:H,children:AH("div",{style:T,id:z,children:U.map((J,B)=>{return AH($,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},JU=z$;var T$=_({name:"OneOfCard",component:JU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as o}from"react";import{QueryClient as W$,QueryClientProvider as D$,useQuery as V$}from"@tanstack/react-query";import{useContext as I$,useEffect as O$}from"react";import{useEffect as J$,useState as B$}from"react";var HH=new Map,UH=new Map;function ZH(H,U){let Z=`${H}::${U}`,z=H?HH.get(Z):void 0,[T,$]=B$(z??null);return J$(()=>{if(!H)return;if(HH.has(Z)){$(HH.get(Z));return}let J=UH.get(Z);if(!J)J=fetch(H+`api/support/${U}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return HH.set(Z,I),UH.delete(Z),I}).catch((I)=>{throw UH.delete(Z),I}),UH.set(Z,J);let B=!1;return J.then((I)=>{if(!B)$(I)}).catch(()=>{}),()=>{B=!0}},[H,U,Z]),T}var d=K("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function BU(){d.resolve?.()}function PH(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!d.promise)d.promise=new Promise((H)=>{d.resolve=()=>{H()}});return d.promise}var G$=({children:H})=>{let U=I$(k),Z=s(),z=ZH(Z,"socketIO"),T=($)=>{if(typeof window<"u")window.sid=$.sid,BU(),console.log(`SocketIO initialized: ${window.sid}`)};return O$(()=>{if(!U)return;let $=()=>{console.log("SocketIO connected")},J=(B)=>{console.log(`SocketIO disconnected: ${B}`),U.connect()};if(z)U.on("pieinit",T),U.on("connect",$),U.on("disconnect",J),U.connect();return()=>{if(z)U.off("pieinit",T),U.off("connect",$),U.off("disconnect",J),U.disconnect()}},[U,z]),H},$H=G$;import{useContext as X$,useEffect as Y$}from"react";var q$=({children:H})=>{let U=X$(y),Z=s(),z=ZH(Z,"centrifuge");return Y$(()=>{if(!U)return;let T=()=>{console.log("Centrifuge connected")},$=(J)=>{console.log("Centrifuge disconnected:",J)};if(z)U.on("connected",T),U.on("disconnected",$),U.connect();return()=>{if(z)U.disconnect()}},[U,z]),H},zH=q$;import{createAxiosDateTransformer as F$}from"axios-date-transformer";import{jsx as Q$}from"react/jsx-runtime";function IU(H,U,Z){if(!U)return Z;let z=H.replace(/^\//,""),T=U[z];if(!T)return Z;return Q$(QH,{uiConfig:T})}import{jsx as R,Fragment as M$}from"react/jsx-runtime";var _$=({location:H,fallback:U,piecache:Z,onError:z,queryOptions:T,disableGlobalForm:$})=>{let J=g(),B=n(),I=j(),O=o(()=>F$({baseURL:J||""}),[J]),D=o(()=>c(),[]),Q=o(()=>J?t(J):null,[J]),V=o(()=>J?r(J,B):null,[J,B]),{data:G,isLoading:Y,error:W}=V$({queryKey:["uiConfig",H.pathname+H.search,J],enabled:!!J,queryFn:async()=>{let q=new URLSearchParams(H.search);q.set("__pieroot","web");let M="/api/content"+H.pathname+"?"+q.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",M);let F=await O.get(M,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",F.data);return F.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...T}),X=IU(H.pathname,Z,U);if(!J)return X??null;if(I)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",B),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!Z);if(W){if(I)console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data});return z?.(W),X}if(Y||!G){if(I)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!G});return X}if(I)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return R(x.Provider,{value:D,children:R(k.Provider,{value:Q,children:R(y.Provider,{value:V,children:R(L.Provider,{value:U??R(M$,{}),children:R($H,{children:R(zH,{children:$?R(w,{uiConfig:G}):R("form",{id:"piedata_global_form",action:J+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:R(w,{uiConfig:G})})})})})})})})},K$=(H)=>{let U=o(()=>new W$,[]),Z=H.queryClient??U;return R(C.Provider,{value:H.onNavigate,children:R(m.Provider,{value:H.config,children:R(S.Provider,{value:H.onError,children:R(D$,{client:Z,children:R(_$,{...H})})})})})},RH=K$;import{useMemo as wH,useState as A$}from"react";import{QueryClient as P$,QueryClientProvider as R$}from"@tanstack/react-query";import{jsx as f,Fragment as N$}from"react/jsx-runtime";var w$=({location:H,fallback:U,children:Z,disableGlobalForm:z})=>{let T=g(),$=n(),J=j(),B=wH(()=>c(),[]),I=wH(()=>T?t(T):null,[T]),O=wH(()=>T?r(T,$):null,[T,$]);if(J)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",$),console.log("[PieRoot] Fallback provided:",!!U);return f(x.Provider,{value:B,children:f(k.Provider,{value:I,children:f(y.Provider,{value:O,children:f(L.Provider,{value:U??f(N$,{}),children:f($H,{children:f(zH,{children:z?Z:f("form",{id:"piedata_global_form",action:T+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},L$=(H)=>{let[U]=A$(()=>new P$),Z=H.queryClient??U;return f(C.Provider,{value:H.onNavigate,children:f(m.Provider,{value:H.config,children:f(S.Provider,{value:H.onError,children:f(R$,{client:Z,children:f(w$,{...H})})})})})},f$=L$;import{useMemo as E$}from"react";import{jsx as OU}from"react/jsx-runtime";var C$=OU("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),j$=({apiServer:H,pathname:U="/",search:Z="",centrifugeServer:z,fallback:T,enableRenderingLog:$=!1})=>{let J=H??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",B=E$(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:$,pageProcessor:"web"}),[J,z,$]);return OU(RH,{location:{pathname:U,search:Z},config:B,fallback:T??C$,onNavigate:(O)=>{if(typeof window<"u")window.history.pushState(null,"",O)}})},y$=j$;import{useMemo as k$}from"react";var x$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],S$=new Set(["telegram:cloud","telegram:secure"]),TH=(H)=>{if(H==="sid")return{source:"sid",key:"sid"};for(let U of x$){let Z=U+":";if(H.startsWith(Z))return{source:U,key:H.slice(Z.length)}}return{source:"dom",key:H}},GU=(H,U=!1)=>{let{source:Z,key:z}=TH(H);if(Z==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}if(Z==="localStorage"||Z==="sessionStorage")try{let B=(Z==="localStorage"?window.localStorage:window.sessionStorage).getItem(z);if(B===null){if(U)console.warn(`No ${Z} value found for key ${z}`);return[]}return[B]}catch(J){if(U)console.warn(`Failed to read ${Z} key ${z}:`,J);return[]}if(Z==="cookie"){let J=b$(z);if(J===null){if(U)console.warn(`No cookie found for key ${z}`);return[]}return[J]}if(Z==="url"){let J=new URLSearchParams(window.location.search).getAll(z);if(!J.length&&U)console.warn(`No URL query param found for key ${z}`);return J}if(S$.has(Z)){if(U)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=document.getElementsByName(z);if(!T.length){if(U)console.warn(`No input found with name ${z}`);return[]}let $=T[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},b$=(H)=>{let U=document.cookie?document.cookie.split(";"):[];for(let Z of U){let z=Z.indexOf("=");if((z===-1?Z:Z.slice(0,z)).trim()===H){let $=z===-1?"":Z.slice(z+1).trim();try{return decodeURIComponent($)}catch{return $}}}return null},v$=(H,U,Z)=>{let z=window.Telegram?.WebApp,T=H==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,$=H==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if(Z)console.warn(`${$} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(U,(B,I)=>{if(B){if(Z)console.warn(`Failed to read ${$} key ${U}:`,B);J([]);return}if(I==null||I===""){if(Z)console.warn(`No ${$} value found for key ${U}`);J([]);return}J([I])})}catch(B){if(Z)console.warn(`Failed to read ${$} key ${U}:`,B);J([])}})},XU=async(H,U=!1)=>{let{source:Z,key:z}=TH(H);if(Z==="telegram:cloud"||Z==="telegram:secure")return v$(Z,z,U);return GU(H,U)},m$=(H,U={},Z=[],z,T)=>{let $=T?.renderingLogEnabled??!1,J=T?.timeout,B=T?.retryPolicy,I=B?.maxRetries??0,O=B?.baseDelay??1000,D=B?.retryOn??[502,503,504];if($)console.log("Registering AJAX: ",z,U,Z);return async(Q={})=>{if(typeof window>"u"||typeof document>"u"){if($)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if($)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!H){if($)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await PH();let G=new FormData;for(let[X,q]of Object.entries({...U,...Q}))G.append(X,q);for(let X of Z){let{key:q}=TH(X);for(let M of await XU(X,$))G.append(q,M)}let Y=V+"api/ajax_content"+z;H(null);let W;for(let X=0;X<=I;X++){if(X>0){let F=O*2**(X-1);if($)console.log(`AJAX retry ${X}/${I} after ${F}ms`);await new Promise((A)=>setTimeout(A,F))}let q=J!=null?new AbortController:null,M=q&&setTimeout(()=>q.abort(),J);try{let F=await fetch(Y,{method:"POST",body:G,signal:q?.signal});if(M)clearTimeout(M);if(!F.ok&&D.includes(F.status)&&X<I){W=Error(`HTTP ${F.status}`);continue}let l=(F.headers.get("content-type")||"").includes("application/json");if(!!F.body?.getReader&&!l){let i=F.body.getReader(),YU=new TextDecoder,v="";while(!0){let{done:JH,value:qU}=await i.read();if(JH)break;v+=YU.decode(qU,{stream:!0});let LH=v.split(`
3
3
  `);v=LH.pop()??"";for(let QU of LH){let BH=QU.trim();if(!BH)continue;try{let WU=JSON.parse(BH);H([WU])}catch{if($)console.warn("Failed to parse streamed line:",BH)}}}if(v.trim())try{let JH=JSON.parse(v);H([JH])}catch{if($)console.warn("Failed to parse final streamed line:",v)}return{}}else{let i=await F.json();return H(i),i}}catch(F){if(M)clearTimeout(M);if(W=F,X<I)continue;if($)console.error("AJAX request failed:",F);return H(null),F}}if($)console.error("AJAX request failed after retries:",W);return H(null),W}},c$=(H,U={},Z=[],z,T)=>{let{apiServer:$,enableRenderingLog:J}=p(),B=JSON.stringify(U),I=JSON.stringify(Z),O=JSON.stringify(T);return k$(()=>m$(H,U,Z,z,{apiServer:$,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[H,B,I,z,$,J,O])};import{clsx as h$}from"clsx";import{twMerge as p$}from"tailwind-merge";function g$(...H){return p$(h$(H))}var u$=()=>{if(typeof document>"u")return;let H=document.getElementById("piedata_global_form");H&&H.submit()};var d$=(H,U)=>`${H}${OH}${U}`;export{NU as usePieEmit,c$ as useAjaxSubmit,bU as unregisterComponent,YH as trackLazy,u$ as submitGlobalForm,E as registry,_ as registerPieComponent,SU as registerMultipleComponents,XU as readAjaxKeyAsync,GU as readAjaxKey,bH as preloadComponent,pU as prefetchLazyComponents,d$ as pieName,TH as parseDepName,vU as hasComponent,hU as getRegistrySize,u as getRegistryEntry,SH as getLazyComponentNames,c as getEmitter,mU as getComponentMeta,cU as getAllRegisteredComponents,g$ as cn,IZ as UnionCard,N as UIRendererContext,QH as UILoading,w as UI,k as SocketIOContext,iZ as SessionStorageCard,TZ as SequenceCard,RH as PieRoot,y$ as PiePreviewRoot,m as PieConfigContext,P as PieCard,f$ as PieBaseRoot,OH as PIEBREAK,T$ as OneOfCard,x as MittContext,dZ as IOEventsCard,MZ as HiddenCard,VZ as HTMLEmbedCard,L as FallbackContext,rZ as DeviceStorageCard,y as CentrifugeIOContext,Z$ as BoxCard,fZ as AutoRedirectCard,H$ as AjaxGroupCard};
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- var wZ=Object.create;var{getPrototypeOf:LZ,defineProperty:e,getOwnPropertyNames:TU,getOwnPropertyDescriptor:NZ}=Object,JU=Object.prototype.hasOwnProperty;var BU=(H,U,Z)=>{Z=H!=null?wZ(LZ(H)):{};let $=U||!H||!H.__esModule?e(Z,"default",{value:H,enumerable:!0}):Z;for(let T of TU(H))if(!JU.call($,T))e($,T,{get:()=>H[T],enumerable:!0});return $},zU=new WeakMap,fZ=(H)=>{var U=zU.get(H),Z;if(U)return U;if(U=e({},"__esModule",{value:!0}),H&&typeof H==="object"||typeof H==="function")TU(H).map(($)=>!JU.call(U,$)&&e(U,$,{get:()=>H[$],enumerable:!(Z=NZ(H,$))||Z.enumerable}));return zU.set(H,U),U};var EZ=(H,U)=>{for(var Z in U)e(H,Z,{get:U[Z],enumerable:!0,configurable:!0,set:($)=>U[Z]=()=>$})};var D$={};EZ(D$,{usePieEmit:()=>DU,useAjaxSubmit:()=>WZ,unregisterComponent:()=>AU,trackLazy:()=>VH,submitGlobalForm:()=>_Z,registry:()=>j,registerPieComponent:()=>_,registerMultipleComponents:()=>MU,readAjaxKeyAsync:()=>ZU,readAjaxKey:()=>UU,preloadComponent:()=>dH,prefetchLazyComponents:()=>NU,pieName:()=>KZ,parseDepName:()=>IH,hasComponent:()=>PU,getRegistrySize:()=>LU,getRegistryEntry:()=>l,getLazyComponentNames:()=>uH,getEmitter:()=>p,getComponentMeta:()=>RU,getAllRegisteredComponents:()=>wU,cn:()=>FZ,UnionCard:()=>mU,UIRendererContext:()=>E,UILoading:()=>MH,UI:()=>L,SocketIOContext:()=>k,SessionStorageCard:()=>tU,SequenceCard:()=>SU,PieRoot:()=>vH,PiePreviewRoot:()=>qZ,PieConfigContext:()=>h,PieCard:()=>A,PieBaseRoot:()=>XZ,PIEBREAK:()=>QH,OneOfCard:()=>JZ,MittContext:()=>x,IOEventsCard:()=>nU,HiddenCard:()=>dU,HTMLEmbedCard:()=>gU,FallbackContext:()=>f,DeviceStorageCard:()=>eU,CentrifugeIOContext:()=>y,BoxCard:()=>$Z,AutoRedirectCard:()=>iU,AjaxGroupCard:()=>UZ});module.exports=fZ(D$);var S=require("react");var XH=require("react");var pH=globalThis,K=(H,U)=>{let Z=Symbol.for(H);if(!(Z in pH))pH[Z]=U();return pH[Z]};var h=K("@swarm.ing/pieui:context:pieConfig",()=>XH.createContext(null)),HH=()=>{let H=XH.useContext(h);if(!H)throw Error("usePieConfig must be used within PieConfigProvider");return H},UH=()=>{let{apiServer:H}=HH();return H},YH=UH,qH=()=>{let{centrifugeServer:H}=HH();return H};var v=()=>{let{enableRenderingLog:H}=HH();return H},IU=v;var QH="__piedemo__";var GU=require("react"),gH=require("centrifuge");var OU=K("@swarm.ing/pieui:centrifuge-cache",()=>new Map),WH=(H,U)=>{if(!U)return null;let Z=`${H}::${U}`,$=OU.get(Z);if($)return $;async function T(){let J=await fetch(H+"api/centrifuge/gen_token");if(!J.ok){if(J.status===403)throw new gH.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let z=new gH.Centrifuge(U,{getToken:T});return OU.set(Z,z),z},CZ=K("@swarm.ing/pieui:context:centrifuge",()=>GU.createContext(null)),y=CZ;var YU=require("socket.io-client"),qU=require("react");var XU=K("@swarm.ing/pieui:socket-cache",()=>new Map),DH=(H)=>{let U=XU.get(H);if(U)return U;let Z=YU.io(H,{autoConnect:!1,transports:["websocket"]});return XU.set(H,Z),Z},jZ=K("@swarm.ing/pieui:context:socket",()=>qU.createContext(null)),k=jZ;var QU=BU(require("mitt")),d=require("react");function p(){return K("@swarm.ing/pieui:mitt-emitter",()=>QU.default())}var WU=K("@swarm.ing/pieui:context:mitt",()=>d.createContext(null));function DU(H){let U=d.useContext(WU);return d.useCallback((Z,$)=>{(U??p()).emit(`pie${Z}_${H}`,$)},[H,U])}var x=WU;var o=require("react/jsx-runtime"),yZ=({card:H,data:U,children:Z,useSocketioSupport:$=!1,useCentrifugeSupport:T=!1,useMittSupport:z=!1,centrifugeChannel:J=void 0,methods:B=void 0,stored:I=void 0})=>{let O=IU(),D=S.useRef(B);if(D.current=B,O)console.log("[PieCard] Rendering card:",H),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:$,centrifuge:T,mitt:z,centrifugeChannel:J}),console.log("[PieCard] Methods:",B?Object.keys(B):"none"),console.log("[PieCard] Has children:",!!Z);let Q=S.useContext(k),V=S.useContext(y),G=S.useContext(x);if(S.useEffect(()=>{if(!Q||!$||!D.current||!U.name){if(O&&$)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!Q,useSocketioSupport:$,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}`;if(O)console.log(`[PieCard] Socket.IO registering event: ${q}`);let M=(F)=>{D.current?.[X]?.(F)};return Q.on(q,M),[q,M]});return()=>{W.forEach(([X,q])=>{if(O)console.log(`[PieCard] Socket.IO unregistering event: ${X}`);Q.off(X,q)})}},[Q,U.name,$]),S.useEffect(()=>{if(!V||!T||!J||!U.name){if(O&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}_${J}`;if(O)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let M=V.newSubscription(q);return M.on("publication",(F)=>{if(O)console.log(`[PieCard] Centrifuge received data on ${q}:`,F.data);D.current?.[X]?.(F.data)}),M.subscribe(),M});return()=>{W.forEach((X)=>{if(O)console.log("[PieCard] Centrifuge unsubscribing from channel");X.unsubscribe(),V.removeSubscription(X)})}},[V,J,U.name,T]),S.useEffect(()=>{if(!G||!z||!U.name){if(O&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!G,useMittSupport:z,hasMethods:!!D.current,hasDataName:!!U?.name});return}let Y=Object.keys(D.current??{}),W={};return Y.forEach((X)=>{let q=`pie${X}_${U.name}`,M=(F)=>{if(O)console.log(`[PieCard] Mitt registering event: ${q}`);D.current?.[X]?.(F)};W[q]=M,G.on(q,M)}),()=>{Object.entries(W).forEach(([X,q])=>{if(O)console.log(`[PieCard] Mitt unregistering event: ${X}`);G.off(X,q)})}},[G,U.name,z]),O)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return o.jsxs(o.Fragment,{children:[o.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(I)}),Z]});return Z},A=yZ;var VU=require("react"),g=new Map;function FU(H,U){return U.catch(()=>{if(g.get(H)===U)g.delete(H)}),g.set(H,U),U}function VH(H,U){return VU.lazy(()=>{if(g.has(U))return g.get(U);return FU(U,H().then((Z)=>Z))})}var _U=async(H,U)=>{if(!U)return;if(g.has(H))return g.get(H);return FU(H,U().then((Z)=>Z))};var j=K("@swarm.ing/pieui:component-registry",()=>new Map),kZ=(H)=>{if(!H.name)throw Error("Component registration requires a name");if(!H.component&&!H.loader)throw Error(`Component "${H.name}" requires component or loader`);let U={name:H.name,component:H.component,loader:H.loader,metadata:H.metadata,fallback:H.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=VH(U.loader,H.name),U.isLazy=!0;return U};function _(H){let U=kZ(H);return j.set(U.name,U),U.component}var MU=(H)=>{H.forEach((U)=>_(U))},AU=(H)=>{j.delete(H)},PU=(H)=>{return j.has(H)},RU=(H)=>{return j.get(H)?.metadata},l=(H)=>{return j.get(H)},wU=()=>{return Array.from(j.keys())},LU=()=>{return j.size},uH=()=>Array.from(j.values()).filter((H)=>H.isLazy&&typeof H.loader==="function").map((H)=>H.name),dH=(H)=>{let U=j.get(H);if(!U?.isLazy||typeof U.loader!=="function")return;return _U(H,U.loader)},KU=!1,NU=()=>{if(KU||typeof window>"u")return;KU=!0;let H=navigator.connection;if(H?.saveData)return;if(H?.effectiveType&&["slow-2g","2g"].includes(H.effectiveType))return;let U=uH(),Z="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),$=(T)=>{if(T>=U.length)return;Z(()=>{Promise.resolve().then(()=>dH(U[T])).catch(()=>{}).finally(()=>$(T+1))})};$(0)};var ZH=require("react");var fU=require("react");var FH=require("react/jsx-runtime"),xZ=K("@swarm.ing/pieui:context:fallback",()=>fU.createContext(FH.jsx(FH.Fragment,{}))),f=xZ;var EU=require("react");var SZ=K("@swarm.ing/pieui:context:lazyError",()=>EU.createContext(void 0)),m=SZ;var _H=require("react"),CU=require("react/jsx-runtime"),bZ=2,vZ=400;class i extends _H.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(H){if(this.props.onError?.(H),this.state.attempt<bZ){let U=vZ*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},U)}}componentDidUpdate(H){if(H.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 CU.jsx(_H.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var KH=require("react/jsx-runtime");function mZ({uiConfig:H,setUiAjaxConfiguration:U}){let Z=ZH.useContext(f),$=ZH.useContext(m),T=v();if(T)console.log("[UI] Rendering component:",H.card),console.log("[UI] Component data:",H.data),console.log("[UI] Component content:",H.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let z=l(H.card);if(!z?.component){if(T)console.warn(`[UI] Component not found in registry: ${H.card}`),console.log("[UI] Returning fallback component");return Z}if(T)console.log("[UI] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let J=z.component,B=KH.jsx(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U});if(z.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",z.name);return KH.jsx(i,{name:z.name,fallback:z.fallback?KH.jsx(z.fallback,{}):Z,onError:$,children:B})}if(T)console.log("[UI] Rendering component directly:",z.name);return B}var L=ZH.memo(mZ);var oH=require("react");var jU=require("react");var cZ=K("@swarm.ing/pieui:context:uiRenderer",()=>jU.createContext(null)),E=cZ;var $H=require("react/jsx-runtime");function yU({uiConfig:H,setUiAjaxConfiguration:U}){let Z=oH.useContext(f),$=oH.useContext(m),T=v();if(T)console.log("[UILoading] Rendering fallback for:",H.card),console.log("[UILoading] Component data:",H.data),console.log("[UILoading] Component content:",H.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let z=l(H.card);if(!z?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${H.card}`),console.log("[UILoading] Returning fallback component");return Z}if(T)console.log("[UILoading] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata,hasFallback:!!z.fallback});if(z.fallback){if(T)console.log("[UILoading] Rendering fallback for:",z.name);let I=z.fallback;return $H.jsx(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",z.name);let J=z.component,B=$H.jsx(E.Provider,{value:yU,children:$H.jsx(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U})});if(z.isLazy)return $H.jsx(i,{name:z.name,fallback:Z,onError:$,children:B});return B}var MH=yU;var kU=require("react");var AH=require("react/jsx-runtime"),hZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$,sx:T}=H,z=kU.useContext(E)??L;return AH.jsx(A,{card:$,data:H,children:AH.jsx("div",{style:T,id:$,children:U.map((J,B)=>{return AH.jsx(z,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},xU=hZ;var SU=_({name:"SequenceCard",component:xU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var bU=require("react");var lH=require("react/jsx-runtime"),pZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$}=H,T=bU.useContext(E)??L;return lH.jsx(A,{card:$,data:H,children:U.map((z,J)=>{return lH.jsx(T,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${J}`)})})},vU=pZ;var mU=_({name:"UnionCard",component:vU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var PH=require("react"),cU=BU(require("html-react-parser"));var C=require("react");function gZ(){let H=new AudioContext,U=H.createOscillator(),Z=U.connect(H.createMediaStreamDestination());U.start();let $=Z.stream.getAudioTracks()[0];return $.enabled=!1,$}function iH(H=null,U){let[Z,$]=C.useState(!1),T=C.useRef(null),z=C.useRef(null),J=C.useRef(null),B=C.useCallback(async(Q,V=!0)=>{if(T.current)I();let G=new RTCPeerConnection;if(G.onconnectionstatechange=()=>{if(G.connectionState==="connected")$(!0);else if(["disconnected","failed","closed"].includes(G.connectionState))$(!1)},G.ontrack=(P)=>{if(H)H.srcObject=P.streams[0]},V){let P=await navigator.mediaDevices.getUserMedia({audio:!0});G.addTrack(P.getTracks()[0],P)}else{let P=gZ();G.addTrack(P)}let Y=G.createDataChannel("oai-events");z.current=Y,J.current=new Promise((P)=>{Y.addEventListener("open",()=>{P()})});let W=await G.createOffer();await G.setLocalDescription(W);let F=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:W.sdp,headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/sdp"}})).text();await G.setRemoteDescription({type:"answer",sdp:F}),T.current=G,await J.current},[H]),I=C.useCallback(()=>{let Q=z.current;if(Q)Q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),$(!1),T.current=null,z.current=null,J.current=null},[H]),O=C.useCallback((Q)=>{let V=z.current;if(!V){console.error("Data channel is not ready",Q);return}let G=new Date().toLocaleTimeString();if(Q.event_id=Q.event_id||crypto.randomUUID(),V.send(JSON.stringify(Q)),!Q.timestamp)Q.timestamp=G;U?.(Q)},[U,H]),D=C.useCallback((Q)=>{if(!z.current){console.error("Data channel is not ready");return}let G=()=>{O({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Q}]}}),O({type:"response.create"})};if(J.current)J.current.then(G);else G()},[U,H]);return C.useEffect(()=>{let Q=z.current;if(!Q)return;let V=(G)=>{let Y=JSON.parse(G.data);if(!Y.timestamp)Y.timestamp=new Date().toLocaleTimeString();U?.(Y)};return Q.addEventListener("message",V),()=>{Q.removeEventListener("message",V)}},[U,H]),{isSessionActive:Z,startSession:B,stopSession:I,sendTextMessage:D}}var pU=require("react/jsx-runtime"),uZ=({data:H})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:$,useMittSupport:T,centrifugeChannel:z}=H,[J,B]=PH.useState(U),{isSessionActive:I,startSession:O,sendTextMessage:D}=iH(null,(Y)=>{if(console.log(Y.type,Y.type==="response.output_text.delta"&&Y.delta),Y.type==="response.output_text.delta"&&Y.delta)B((W)=>W+Y.delta)});return PH.useEffect(()=>{B(U)},[U]),pU.jsx(A,{card:"HTMLEmbedCard",data:H,methods:{update:(Y)=>{B(Y.value)},generateUsingAI:async(Y)=>{try{if(!I&&Y.token)await O(Y.token,!1);D(Y.prompt)}catch(W){console.error("Failed to generate using AI",W)}},initializeAI:async(Y)=>{if(!I&&Y.token)await O(Y.token,!1)}},useCentrifugeSupport:$,useSocketioSupport:Z,useMittSupport:T,centrifugeChannel:z,children:cU.default(J)})},hU=uZ;var gU=_({name:"HTMLEmbedCard",component:hU,metadata:{author:"Swarm.ing"}});var RH=require("react");var sH=require("react/jsx-runtime"),dZ=({data:H})=>{let{name:U,value:Z,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J}=H,[B,I]=RH.useState(Z);return RH.useEffect(()=>{I(Z)},[Z]),sH.jsx(A,{card:"HiddenCard",data:H,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J,methods:{update:({value:O})=>{I(O)}},children:sH.jsx("input",{type:"hidden",id:U,name:U,value:B})})},uU=dZ;var dU=_({name:"HiddenCard",component:uU,metadata:{author:"Swarm.ing"}});var zH=require("react");var oU=require("react");var oZ=K("@swarm.ing/pieui:context:navigate",()=>oU.createContext(void 0)),b=oZ;var wH=require("react/jsx-runtime"),lZ=({data:H})=>{let{url:U}=H,Z=zH.useContext(b),$=zH.useContext(f);return zH.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),wH.jsx(wH.Fragment,{children:$})},lU=lZ;var iU=_({name:"AutoRedirectCard",component:lU,metadata:{author:"Swarm.ing"}});var c=require("react-toastify"),LH=require("react-toastify");var n=require("react");var s=require("react/jsx-runtime"),iZ={bounce:c.Bounce,slide:c.Slide,zoom:c.Zoom,flip:c.Flip},sZ=(H)=>{let U={...H,type:H.alertType,transition:H.transition?iZ[H.transition]:void 0,position:H.position??"bottom-right",autoClose:H.autoClose??3000,style:{backgroundColor:"black",...H.sx}};LH.toast(H.message,U)},nZ=(H)=>{console.log("Log event",H)},rZ=(H)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(H.title,{body:H.message??H.subtitle,icon:H.icon,silent:H.silent})}catch($){console.error("[IOEventsCard] Failed to show notification",$)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then(($)=>{if($==="granted")U()})},tZ=({data:H})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:$,centrifugeChannel:T}=H,z=n.useContext(b),J=n.useRef(z);J.current=z;let B=n.useMemo(()=>({alert:sZ,log:nZ,push:rZ,redirect:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()},reload:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()}}),[]);return s.jsx(s.Fragment,{children:s.jsx(A,{card:"IOEventsCard",data:H,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:$,centrifugeChannel:T,methods:B,children:s.jsx(LH.ToastContainer,{})})})},sU=tZ;var nU=_({name:"IOEventsCard",component:sU,metadata:{author:"Swarm.ing"}});var TH=require("react");var nH=require("react/jsx-runtime"),aZ=({data:H})=>{let{name:U,key:Z,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=TH.useState($);return TH.useEffect(()=>{O($)},[$]),TH.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(Z,I)},[Z,I]),nH.jsx(A,{card:"SessionStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{sessionStorage.removeItem(Z),O("")}},children:nH.jsx("input",{type:"hidden",id:U,name:U,value:I})})},rU=aZ;var tU=_({name:"SessionStorageCard",component:rU,metadata:{author:"PieData"}});var JH=require("react");var rH=require("react/jsx-runtime"),eZ=({data:H})=>{let{name:U,key:Z,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=JH.useState($);return JH.useEffect(()=>{O($)},[$]),JH.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(Z,I)},[Z,I]),rH.jsx(A,{card:"DeviceStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{localStorage.removeItem(Z),O("")}},children:rH.jsx("input",{type:"hidden",id:U,name:U,value:I})})},aU=eZ;var eU=_({name:"DeviceStorageCard",component:aU,metadata:{author:"PieData"}});var N=require("react");var tH=require("react/jsx-runtime"),H$=({data:H,content:U})=>{let{useLoader:Z,noReturn:$,returnType:T,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I}=H,O=N.useContext(f),D=N.useContext(E)??L,[Q,V]=N.useState(!1),[G,Y]=N.useState(null),W=N.useRef(U),X=N.useContext(x),q=N.useCallback((P)=>{if(P===null)V(!0);else if(V(!1),!$)W.current=P;if(!$)Y(P)},[$]),M=N.useCallback((P)=>{W.current=P.content,Y(P.content)},[]),F=N.useCallback((P)=>{if(P===null)V(!0);else if(V(!1),!$)for(let OH of P)X?.emit(OH.name,OH.data)},[$,X]);if(N.useEffect(()=>{Y(U),V(!1)},[U]),!G&&Z)return O;return tH.jsx(A,{card:"AjaxGroupCard",data:H,methods:{changeContent:M},useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I,children:tH.jsx(D,{uiConfig:G??W.current,setUiAjaxConfiguration:T==="events"?F:q})})},HZ=H$;var UZ=_({name:"AjaxGroupCard",component:HZ,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var aH=require("react");var NH=require("react/jsx-runtime"),U$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$,url:T,sx:z}=H,J=aH.useContext(b),B=aH.useContext(E)??L;return NH.jsx(A,{card:$,data:H,children:NH.jsx("div",{style:z,id:$,onClick:(O)=>{if(T)if(O.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:NH.jsx(B,{setUiAjaxConfiguration:Z,uiConfig:U})})})},ZZ=U$;var $Z=_({name:"BoxCard",component:ZZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var zZ=require("react");var fH=require("react/jsx-runtime"),Z$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$,sx:T}=H,z=zZ.useContext(E)??L;return fH.jsx(A,{card:$,data:H,children:fH.jsx("div",{style:T,id:$,children:U.map((J,B)=>{return fH.jsx(z,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},TZ=Z$;var JZ=_({name:"OneOfCard",component:TZ,metadata:{author:"Swarm.ing",description:"Different variants"}});var r=require("react"),t=require("@tanstack/react-query");var kH=require("react");var jH=require("react"),EH=new Map,CH=new Map;function yH(H,U){let Z=`${H}::${U}`,$=H?EH.get(Z):void 0,[T,z]=jH.useState($??null);return jH.useEffect(()=>{if(!H)return;if(EH.has(Z)){z(EH.get(Z));return}let J=CH.get(Z);if(!J)J=fetch(H+`api/support/${U}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return EH.set(Z,I),CH.delete(Z),I}).catch((I)=>{throw CH.delete(Z),I}),CH.set(Z,J);let B=!1;return J.then((I)=>{if(!B)z(I)}).catch(()=>{}),()=>{B=!0}},[H,U,Z]),T}var BH=K("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function BZ(){BH.resolve?.()}function eH(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!BH.promise)BH.promise=new Promise((H)=>{BH.resolve=()=>{H()}});return BH.promise}var $$=({children:H})=>{let U=kH.useContext(k),Z=YH(),$=yH(Z,"socketIO"),T=(z)=>{if(typeof window<"u")window.sid=z.sid,BZ(),console.log(`SocketIO initialized: ${window.sid}`)};return kH.useEffect(()=>{if(!U)return;let z=()=>{console.log("SocketIO connected")},J=(B)=>{console.log(`SocketIO disconnected: ${B}`),U.connect()};if($)U.on("pieinit",T),U.on("connect",z),U.on("disconnect",J),U.connect();return()=>{if($)U.off("pieinit",T),U.off("connect",z),U.off("disconnect",J),U.disconnect()}},[U,$]),H},xH=$$;var SH=require("react");var z$=({children:H})=>{let U=SH.useContext(y),Z=YH(),$=yH(Z,"centrifuge");return SH.useEffect(()=>{if(!U)return;let T=()=>{console.log("Centrifuge connected")},z=(J)=>{console.log("Centrifuge disconnected:",J)};if($)U.on("connected",T),U.on("disconnected",z),U.connect();return()=>{if($)U.disconnect()}},[U,$]),H},bH=z$;var GZ=require("axios-date-transformer");var OZ=require("react/jsx-runtime");function IZ(H,U,Z){if(!U)return Z;let $=H.replace(/^\//,""),T=U[$];if(!T)return Z;return OZ.jsx(MH,{uiConfig:T})}var R=require("react/jsx-runtime"),T$=({location:H,fallback:U,piecache:Z,onError:$,queryOptions:T,disableGlobalForm:z})=>{let J=UH(),B=qH(),I=v(),O=r.useMemo(()=>GZ.createAxiosDateTransformer({baseURL:J||""}),[J]),D=r.useMemo(()=>p(),[]),Q=r.useMemo(()=>J?DH(J):null,[J]),V=r.useMemo(()=>J?WH(J,B):null,[J,B]),{data:G,isLoading:Y,error:W}=t.useQuery({queryKey:["uiConfig",H.pathname+H.search,J],enabled:!!J,queryFn:async()=>{let q=new URLSearchParams(H.search);q.set("__pieroot","web");let M="/api/content"+H.pathname+"?"+q.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",M);let F=await O.get(M,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",F.data);return F.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...T}),X=IZ(H.pathname,Z,U);if(!J)return X??null;if(I)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",B),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!Z);if(W){if(I)console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data});return $?.(W),X}if(Y||!G){if(I)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!G});return X}if(I)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return R.jsx(x.Provider,{value:D,children:R.jsx(k.Provider,{value:Q,children:R.jsx(y.Provider,{value:V,children:R.jsx(f.Provider,{value:U??R.jsx(R.Fragment,{}),children:R.jsx(xH,{children:R.jsx(bH,{children:z?R.jsx(L,{uiConfig:G}):R.jsx("form",{id:"piedata_global_form",action:J+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:R.jsx(L,{uiConfig:G})})})})})})})})},J$=(H)=>{let U=r.useMemo(()=>new t.QueryClient,[]),Z=H.queryClient??U;return R.jsx(b.Provider,{value:H.onNavigate,children:R.jsx(h.Provider,{value:H.config,children:R.jsx(m.Provider,{value:H.onError,children:R.jsx(t.QueryClientProvider,{client:Z,children:R.jsx(T$,{...H})})})})})},vH=J$;var a=require("react"),mH=require("@tanstack/react-query");var w=require("react/jsx-runtime"),B$=({location:H,fallback:U,children:Z,disableGlobalForm:$})=>{let T=UH(),z=qH(),J=v(),B=a.useMemo(()=>p(),[]),I=a.useMemo(()=>T?DH(T):null,[T]),O=a.useMemo(()=>T?WH(T,z):null,[T,z]);if(J)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!U);return w.jsx(x.Provider,{value:B,children:w.jsx(k.Provider,{value:I,children:w.jsx(y.Provider,{value:O,children:w.jsx(f.Provider,{value:U??w.jsx(w.Fragment,{}),children:w.jsx(xH,{children:w.jsx(bH,{children:$?Z:w.jsx("form",{id:"piedata_global_form",action:T+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},I$=(H)=>{let[U]=a.useState(()=>new mH.QueryClient),Z=H.queryClient??U;return w.jsx(b.Provider,{value:H.onNavigate,children:w.jsx(h.Provider,{value:H.config,children:w.jsx(m.Provider,{value:H.onError,children:w.jsx(mH.QueryClientProvider,{client:Z,children:w.jsx(B$,{...H})})})})})},XZ=I$;var YZ=require("react");var HU=require("react/jsx-runtime"),O$=HU.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),G$=({apiServer:H,pathname:U="/",search:Z="",centrifugeServer:$,fallback:T,enableRenderingLog:z=!1})=>{let J=H??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",B=YZ.useMemo(()=>({apiServer:J,centrifugeServer:$,enableRenderingLog:z,pageProcessor:"web"}),[J,$,z]);return HU.jsx(vH,{location:{pathname:U,search:Z},config:B,fallback:T??O$,onNavigate:(O)=>{if(typeof window<"u")window.history.pushState(null,"",O)}})},qZ=G$;var QZ=require("react"),X$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],Y$=new Set(["telegram:cloud","telegram:secure"]),IH=(H)=>{if(H==="sid")return{source:"sid",key:"sid"};for(let U of X$){let Z=U+":";if(H.startsWith(Z))return{source:U,key:H.slice(Z.length)}}return{source:"dom",key:H}},UU=(H,U=!1)=>{let{source:Z,key:$}=IH(H);if(Z==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}if(Z==="localStorage"||Z==="sessionStorage")try{let B=(Z==="localStorage"?window.localStorage:window.sessionStorage).getItem($);if(B===null){if(U)console.warn(`No ${Z} value found for key ${$}`);return[]}return[B]}catch(J){if(U)console.warn(`Failed to read ${Z} key ${$}:`,J);return[]}if(Z==="cookie"){let J=q$($);if(J===null){if(U)console.warn(`No cookie found for key ${$}`);return[]}return[J]}if(Z==="url"){let J=new URLSearchParams(window.location.search).getAll($);if(!J.length&&U)console.warn(`No URL query param found for key ${$}`);return J}if(Y$.has(Z)){if(U)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=document.getElementsByName($);if(!T.length){if(U)console.warn(`No input found with name ${$}`);return[]}let z=T[0];if(z instanceof HTMLInputElement){if(z.type==="file"&&z.files)return Array.from(z.files);return[z.value]}if(z instanceof HTMLTextAreaElement)return[z.value];return[]},q$=(H)=>{let U=document.cookie?document.cookie.split(";"):[];for(let Z of U){let $=Z.indexOf("=");if(($===-1?Z:Z.slice(0,$)).trim()===H){let z=$===-1?"":Z.slice($+1).trim();try{return decodeURIComponent(z)}catch{return z}}}return null},Q$=(H,U,Z)=>{let $=window.Telegram?.WebApp,T=H==="telegram:cloud"?$?.CloudStorage:$?.SecureStorage,z=H==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if(Z)console.warn(`${z} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(U,(B,I)=>{if(B){if(Z)console.warn(`Failed to read ${z} key ${U}:`,B);J([]);return}if(I==null||I===""){if(Z)console.warn(`No ${z} value found for key ${U}`);J([]);return}J([I])})}catch(B){if(Z)console.warn(`Failed to read ${z} key ${U}:`,B);J([])}})},ZU=async(H,U=!1)=>{let{source:Z,key:$}=IH(H);if(Z==="telegram:cloud"||Z==="telegram:secure")return Q$(Z,$,U);return UU(H,U)},W$=(H,U={},Z=[],$,T)=>{let z=T?.renderingLogEnabled??!1,J=T?.timeout,B=T?.retryPolicy,I=B?.maxRetries??0,O=B?.baseDelay??1000,D=B?.retryOn??[502,503,504];if(z)console.log("Registering AJAX: ",$,U,Z);return async(Q={})=>{if(typeof window>"u"||typeof document>"u"){if(z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(z)console.warn("AJAX skipped: apiServer is missing");return}if(!$||!H){if(z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await eH();let G=new FormData;for(let[X,q]of Object.entries({...U,...Q}))G.append(X,q);for(let X of Z){let{key:q}=IH(X);for(let M of await ZU(X,z))G.append(q,M)}let Y=V+"api/ajax_content"+$;H(null);let W;for(let X=0;X<=I;X++){if(X>0){let F=O*2**(X-1);if(z)console.log(`AJAX retry ${X}/${I} after ${F}ms`);await new Promise((P)=>setTimeout(P,F))}let q=J!=null?new AbortController:null,M=q&&setTimeout(()=>q.abort(),J);try{let F=await fetch(Y,{method:"POST",body:G,signal:q?.signal});if(M)clearTimeout(M);if(!F.ok&&D.includes(F.status)&&X<I){W=Error(`HTTP ${F.status}`);continue}let OH=(F.headers.get("content-type")||"").includes("application/json");if(!!F.body?.getReader&&!OH){let GH=F.body.getReader(),MZ=new TextDecoder,u="";while(!0){let{done:cH,value:AZ}=await GH.read();if(cH)break;u+=MZ.decode(AZ,{stream:!0});let $U=u.split(`
2
+ var wZ=Object.create;var{getPrototypeOf:LZ,defineProperty:e,getOwnPropertyNames:TU,getOwnPropertyDescriptor:NZ}=Object,JU=Object.prototype.hasOwnProperty;var BU=(H,U,Z)=>{Z=H!=null?wZ(LZ(H)):{};let $=U||!H||!H.__esModule?e(Z,"default",{value:H,enumerable:!0}):Z;for(let T of TU(H))if(!JU.call($,T))e($,T,{get:()=>H[T],enumerable:!0});return $},zU=new WeakMap,fZ=(H)=>{var U=zU.get(H),Z;if(U)return U;if(U=e({},"__esModule",{value:!0}),H&&typeof H==="object"||typeof H==="function")TU(H).map(($)=>!JU.call(U,$)&&e(U,$,{get:()=>H[$],enumerable:!(Z=NZ(H,$))||Z.enumerable}));return zU.set(H,U),U};var EZ=(H,U)=>{for(var Z in U)e(H,Z,{get:U[Z],enumerable:!0,configurable:!0,set:($)=>U[Z]=()=>$})};var D$={};EZ(D$,{usePieEmit:()=>DU,useAjaxSubmit:()=>WZ,unregisterComponent:()=>AU,trackLazy:()=>VH,submitGlobalForm:()=>_Z,registry:()=>j,registerPieComponent:()=>_,registerMultipleComponents:()=>MU,readAjaxKeyAsync:()=>ZU,readAjaxKey:()=>UU,preloadComponent:()=>dH,prefetchLazyComponents:()=>NU,pieName:()=>KZ,parseDepName:()=>IH,hasComponent:()=>PU,getRegistrySize:()=>LU,getRegistryEntry:()=>l,getLazyComponentNames:()=>uH,getEmitter:()=>p,getComponentMeta:()=>RU,getAllRegisteredComponents:()=>wU,cn:()=>FZ,UnionCard:()=>mU,UIRendererContext:()=>E,UILoading:()=>MH,UI:()=>L,SocketIOContext:()=>k,SessionStorageCard:()=>tU,SequenceCard:()=>SU,PieRoot:()=>vH,PiePreviewRoot:()=>qZ,PieConfigContext:()=>h,PieCard:()=>A,PieBaseRoot:()=>XZ,PIEBREAK:()=>QH,OneOfCard:()=>JZ,MittContext:()=>x,IOEventsCard:()=>nU,HiddenCard:()=>dU,HTMLEmbedCard:()=>gU,FallbackContext:()=>f,DeviceStorageCard:()=>eU,CentrifugeIOContext:()=>y,BoxCard:()=>$Z,AutoRedirectCard:()=>iU,AjaxGroupCard:()=>UZ});module.exports=fZ(D$);var S=require("react");var XH=require("react");var pH=globalThis,K=(H,U)=>{let Z=Symbol.for(H);if(!(Z in pH))pH[Z]=U();return pH[Z]};var h=K("@swarm.ing/pieui:context:pieConfig",()=>XH.createContext(null)),HH=()=>{let H=XH.useContext(h);if(!H)throw Error("usePieConfig must be used within PieConfigProvider");return H},UH=()=>{let{apiServer:H}=HH();return H},YH=UH,qH=()=>{let{centrifugeServer:H}=HH();return H};var v=()=>{let{enableRenderingLog:H}=HH();return H},IU=v;var QH="__piedemo__";var GU=require("react"),gH=require("centrifuge");var OU=K("@swarm.ing/pieui:centrifuge-cache",()=>new Map),WH=(H,U)=>{if(!U)return null;let Z=`${H}::${U}`,$=OU.get(Z);if($)return $;async function T(){let J=await fetch(H+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new gH.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let z=new gH.Centrifuge(U,{getToken:T});return OU.set(Z,z),z},CZ=K("@swarm.ing/pieui:context:centrifuge",()=>GU.createContext(null)),y=CZ;var YU=require("socket.io-client"),qU=require("react");var XU=K("@swarm.ing/pieui:socket-cache",()=>new Map),DH=(H)=>{let U=XU.get(H);if(U)return U;let Z=YU.io(H,{autoConnect:!1,transports:["websocket"]});return XU.set(H,Z),Z},jZ=K("@swarm.ing/pieui:context:socket",()=>qU.createContext(null)),k=jZ;var QU=BU(require("mitt")),d=require("react");function p(){return K("@swarm.ing/pieui:mitt-emitter",()=>QU.default())}var WU=K("@swarm.ing/pieui:context:mitt",()=>d.createContext(null));function DU(H){let U=d.useContext(WU);return d.useCallback((Z,$)=>{(U??p()).emit(`pie${Z}_${H}`,$)},[H,U])}var x=WU;var o=require("react/jsx-runtime"),yZ=({card:H,data:U,children:Z,useSocketioSupport:$=!1,useCentrifugeSupport:T=!1,useMittSupport:z=!1,centrifugeChannel:J=void 0,methods:B=void 0,stored:I=void 0})=>{let O=IU(),D=S.useRef(B);if(D.current=B,O)console.log("[PieCard] Rendering card:",H),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:$,centrifuge:T,mitt:z,centrifugeChannel:J}),console.log("[PieCard] Methods:",B?Object.keys(B):"none"),console.log("[PieCard] Has children:",!!Z);let Q=S.useContext(k),V=S.useContext(y),G=S.useContext(x);if(S.useEffect(()=>{if(!Q||!$||!D.current||!U.name){if(O&&$)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!Q,useSocketioSupport:$,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}`;if(O)console.log(`[PieCard] Socket.IO registering event: ${q}`);let M=(F)=>{D.current?.[X]?.(F)};return Q.on(q,M),[q,M]});return()=>{W.forEach(([X,q])=>{if(O)console.log(`[PieCard] Socket.IO unregistering event: ${X}`);Q.off(X,q)})}},[Q,U.name,$]),S.useEffect(()=>{if(!V||!T||!J||!U.name){if(O&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}_${J}`;if(O)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let M=V.newSubscription(q);return M.on("publication",(F)=>{if(O)console.log(`[PieCard] Centrifuge received data on ${q}:`,F.data);D.current?.[X]?.(F.data)}),M.subscribe(),M});return()=>{W.forEach((X)=>{if(O)console.log("[PieCard] Centrifuge unsubscribing from channel");X.unsubscribe(),V.removeSubscription(X)})}},[V,J,U.name,T]),S.useEffect(()=>{if(!G||!z||!U.name){if(O&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!G,useMittSupport:z,hasMethods:!!D.current,hasDataName:!!U?.name});return}let Y=Object.keys(D.current??{}),W={};return Y.forEach((X)=>{let q=`pie${X}_${U.name}`,M=(F)=>{if(O)console.log(`[PieCard] Mitt registering event: ${q}`);D.current?.[X]?.(F)};W[q]=M,G.on(q,M)}),()=>{Object.entries(W).forEach(([X,q])=>{if(O)console.log(`[PieCard] Mitt unregistering event: ${X}`);G.off(X,q)})}},[G,U.name,z]),O)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return o.jsxs(o.Fragment,{children:[o.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(I)}),Z]});return Z},A=yZ;var VU=require("react"),g=new Map;function FU(H,U){return U.catch(()=>{if(g.get(H)===U)g.delete(H)}),g.set(H,U),U}function VH(H,U){return VU.lazy(()=>{if(g.has(U))return g.get(U);return FU(U,H().then((Z)=>Z))})}var _U=async(H,U)=>{if(!U)return;if(g.has(H))return g.get(H);return FU(H,U().then((Z)=>Z))};var j=K("@swarm.ing/pieui:component-registry",()=>new Map),kZ=(H)=>{if(!H.name)throw Error("Component registration requires a name");if(!H.component&&!H.loader)throw Error(`Component "${H.name}" requires component or loader`);let U={name:H.name,component:H.component,loader:H.loader,metadata:H.metadata,fallback:H.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=VH(U.loader,H.name),U.isLazy=!0;return U};function _(H){let U=kZ(H);return j.set(U.name,U),U.component}var MU=(H)=>{H.forEach((U)=>_(U))},AU=(H)=>{j.delete(H)},PU=(H)=>{return j.has(H)},RU=(H)=>{return j.get(H)?.metadata},l=(H)=>{return j.get(H)},wU=()=>{return Array.from(j.keys())},LU=()=>{return j.size},uH=()=>Array.from(j.values()).filter((H)=>H.isLazy&&typeof H.loader==="function").map((H)=>H.name),dH=(H)=>{let U=j.get(H);if(!U?.isLazy||typeof U.loader!=="function")return;return _U(H,U.loader)},KU=!1,NU=()=>{if(KU||typeof window>"u")return;KU=!0;let H=navigator.connection;if(H?.saveData)return;if(H?.effectiveType&&["slow-2g","2g"].includes(H.effectiveType))return;let U=uH(),Z="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),$=(T)=>{if(T>=U.length)return;Z(()=>{Promise.resolve().then(()=>dH(U[T])).catch(()=>{}).finally(()=>$(T+1))})};$(0)};var ZH=require("react");var fU=require("react");var FH=require("react/jsx-runtime"),xZ=K("@swarm.ing/pieui:context:fallback",()=>fU.createContext(FH.jsx(FH.Fragment,{}))),f=xZ;var EU=require("react");var SZ=K("@swarm.ing/pieui:context:lazyError",()=>EU.createContext(void 0)),m=SZ;var _H=require("react"),CU=require("react/jsx-runtime"),bZ=2,vZ=400;class i extends _H.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(H){if(this.props.onError?.(H),this.state.attempt<bZ){let U=vZ*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},U)}}componentDidUpdate(H){if(H.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 CU.jsx(_H.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var KH=require("react/jsx-runtime");function mZ({uiConfig:H,setUiAjaxConfiguration:U}){let Z=ZH.useContext(f),$=ZH.useContext(m),T=v();if(T)console.log("[UI] Rendering component:",H.card),console.log("[UI] Component data:",H.data),console.log("[UI] Component content:",H.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let z=l(H.card);if(!z?.component){if(T)console.warn(`[UI] Component not found in registry: ${H.card}`),console.log("[UI] Returning fallback component");return Z}if(T)console.log("[UI] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let J=z.component,B=KH.jsx(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U});if(z.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",z.name);return KH.jsx(i,{name:z.name,fallback:z.fallback?KH.jsx(z.fallback,{}):Z,onError:$,children:B})}if(T)console.log("[UI] Rendering component directly:",z.name);return B}var L=ZH.memo(mZ);var oH=require("react");var jU=require("react");var cZ=K("@swarm.ing/pieui:context:uiRenderer",()=>jU.createContext(null)),E=cZ;var $H=require("react/jsx-runtime");function yU({uiConfig:H,setUiAjaxConfiguration:U}){let Z=oH.useContext(f),$=oH.useContext(m),T=v();if(T)console.log("[UILoading] Rendering fallback for:",H.card),console.log("[UILoading] Component data:",H.data),console.log("[UILoading] Component content:",H.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let z=l(H.card);if(!z?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${H.card}`),console.log("[UILoading] Returning fallback component");return Z}if(T)console.log("[UILoading] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata,hasFallback:!!z.fallback});if(z.fallback){if(T)console.log("[UILoading] Rendering fallback for:",z.name);let I=z.fallback;return $H.jsx(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",z.name);let J=z.component,B=$H.jsx(E.Provider,{value:yU,children:$H.jsx(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U})});if(z.isLazy)return $H.jsx(i,{name:z.name,fallback:Z,onError:$,children:B});return B}var MH=yU;var kU=require("react");var AH=require("react/jsx-runtime"),hZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$,sx:T}=H,z=kU.useContext(E)??L;return AH.jsx(A,{card:$,data:H,children:AH.jsx("div",{style:T,id:$,children:U.map((J,B)=>{return AH.jsx(z,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},xU=hZ;var SU=_({name:"SequenceCard",component:xU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var bU=require("react");var lH=require("react/jsx-runtime"),pZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$}=H,T=bU.useContext(E)??L;return lH.jsx(A,{card:$,data:H,children:U.map((z,J)=>{return lH.jsx(T,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${J}`)})})},vU=pZ;var mU=_({name:"UnionCard",component:vU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var PH=require("react"),cU=BU(require("html-react-parser"));var C=require("react");function gZ(){let H=new AudioContext,U=H.createOscillator(),Z=U.connect(H.createMediaStreamDestination());U.start();let $=Z.stream.getAudioTracks()[0];return $.enabled=!1,$}function iH(H=null,U){let[Z,$]=C.useState(!1),T=C.useRef(null),z=C.useRef(null),J=C.useRef(null),B=C.useCallback(async(Q,V=!0)=>{if(T.current)I();let G=new RTCPeerConnection;if(G.onconnectionstatechange=()=>{if(G.connectionState==="connected")$(!0);else if(["disconnected","failed","closed"].includes(G.connectionState))$(!1)},G.ontrack=(P)=>{if(H)H.srcObject=P.streams[0]},V){let P=await navigator.mediaDevices.getUserMedia({audio:!0});G.addTrack(P.getTracks()[0],P)}else{let P=gZ();G.addTrack(P)}let Y=G.createDataChannel("oai-events");z.current=Y,J.current=new Promise((P)=>{Y.addEventListener("open",()=>{P()})});let W=await G.createOffer();await G.setLocalDescription(W);let F=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:W.sdp,headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/sdp"}})).text();await G.setRemoteDescription({type:"answer",sdp:F}),T.current=G,await J.current},[H]),I=C.useCallback(()=>{let Q=z.current;if(Q)Q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),$(!1),T.current=null,z.current=null,J.current=null},[H]),O=C.useCallback((Q)=>{let V=z.current;if(!V){console.error("Data channel is not ready",Q);return}let G=new Date().toLocaleTimeString();if(Q.event_id=Q.event_id||crypto.randomUUID(),V.send(JSON.stringify(Q)),!Q.timestamp)Q.timestamp=G;U?.(Q)},[U,H]),D=C.useCallback((Q)=>{if(!z.current){console.error("Data channel is not ready");return}let G=()=>{O({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Q}]}}),O({type:"response.create"})};if(J.current)J.current.then(G);else G()},[U,H]);return C.useEffect(()=>{let Q=z.current;if(!Q)return;let V=(G)=>{let Y=JSON.parse(G.data);if(!Y.timestamp)Y.timestamp=new Date().toLocaleTimeString();U?.(Y)};return Q.addEventListener("message",V),()=>{Q.removeEventListener("message",V)}},[U,H]),{isSessionActive:Z,startSession:B,stopSession:I,sendTextMessage:D}}var pU=require("react/jsx-runtime"),uZ=({data:H})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:$,useMittSupport:T,centrifugeChannel:z}=H,[J,B]=PH.useState(U),{isSessionActive:I,startSession:O,sendTextMessage:D}=iH(null,(Y)=>{if(console.log(Y.type,Y.type==="response.output_text.delta"&&Y.delta),Y.type==="response.output_text.delta"&&Y.delta)B((W)=>W+Y.delta)});return PH.useEffect(()=>{B(U)},[U]),pU.jsx(A,{card:"HTMLEmbedCard",data:H,methods:{update:(Y)=>{B(Y.value)},generateUsingAI:async(Y)=>{try{if(!I&&Y.token)await O(Y.token,!1);D(Y.prompt)}catch(W){console.error("Failed to generate using AI",W)}},initializeAI:async(Y)=>{if(!I&&Y.token)await O(Y.token,!1)}},useCentrifugeSupport:$,useSocketioSupport:Z,useMittSupport:T,centrifugeChannel:z,children:cU.default(J)})},hU=uZ;var gU=_({name:"HTMLEmbedCard",component:hU,metadata:{author:"Swarm.ing"}});var RH=require("react");var sH=require("react/jsx-runtime"),dZ=({data:H})=>{let{name:U,value:Z,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J}=H,[B,I]=RH.useState(Z);return RH.useEffect(()=>{I(Z)},[Z]),sH.jsx(A,{card:"HiddenCard",data:H,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J,methods:{update:({value:O})=>{I(O)}},children:sH.jsx("input",{type:"hidden",id:U,name:U,value:B})})},uU=dZ;var dU=_({name:"HiddenCard",component:uU,metadata:{author:"Swarm.ing"}});var zH=require("react");var oU=require("react");var oZ=K("@swarm.ing/pieui:context:navigate",()=>oU.createContext(void 0)),b=oZ;var wH=require("react/jsx-runtime"),lZ=({data:H})=>{let{url:U}=H,Z=zH.useContext(b),$=zH.useContext(f);return zH.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),wH.jsx(wH.Fragment,{children:$})},lU=lZ;var iU=_({name:"AutoRedirectCard",component:lU,metadata:{author:"Swarm.ing"}});var c=require("react-toastify"),LH=require("react-toastify");var n=require("react");var s=require("react/jsx-runtime"),iZ={bounce:c.Bounce,slide:c.Slide,zoom:c.Zoom,flip:c.Flip},sZ=(H)=>{let U={...H,type:H.alertType,transition:H.transition?iZ[H.transition]:void 0,position:H.position??"bottom-right",autoClose:H.autoClose??3000,style:{backgroundColor:"black",...H.sx}};LH.toast(H.message,U)},nZ=(H)=>{console.log("Log event",H)},rZ=(H)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(H.title,{body:H.message??H.subtitle,icon:H.icon,silent:H.silent})}catch($){console.error("[IOEventsCard] Failed to show notification",$)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then(($)=>{if($==="granted")U()})},tZ=({data:H})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:$,centrifugeChannel:T}=H,z=n.useContext(b),J=n.useRef(z);J.current=z;let B=n.useMemo(()=>({alert:sZ,log:nZ,push:rZ,redirect:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()},reload:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()}}),[]);return s.jsx(s.Fragment,{children:s.jsx(A,{card:"IOEventsCard",data:H,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:$,centrifugeChannel:T,methods:B,children:s.jsx(LH.ToastContainer,{})})})},sU=tZ;var nU=_({name:"IOEventsCard",component:sU,metadata:{author:"Swarm.ing"}});var TH=require("react");var nH=require("react/jsx-runtime"),aZ=({data:H})=>{let{name:U,key:Z,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=TH.useState($);return TH.useEffect(()=>{O($)},[$]),TH.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(Z,I)},[Z,I]),nH.jsx(A,{card:"SessionStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{sessionStorage.removeItem(Z),O("")}},children:nH.jsx("input",{type:"hidden",id:U,name:U,value:I})})},rU=aZ;var tU=_({name:"SessionStorageCard",component:rU,metadata:{author:"PieData"}});var JH=require("react");var rH=require("react/jsx-runtime"),eZ=({data:H})=>{let{name:U,key:Z,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=JH.useState($);return JH.useEffect(()=>{O($)},[$]),JH.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(Z,I)},[Z,I]),rH.jsx(A,{card:"DeviceStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{localStorage.removeItem(Z),O("")}},children:rH.jsx("input",{type:"hidden",id:U,name:U,value:I})})},aU=eZ;var eU=_({name:"DeviceStorageCard",component:aU,metadata:{author:"PieData"}});var N=require("react");var tH=require("react/jsx-runtime"),H$=({data:H,content:U})=>{let{useLoader:Z,noReturn:$,returnType:T,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I}=H,O=N.useContext(f),D=N.useContext(E)??L,[Q,V]=N.useState(!1),[G,Y]=N.useState(null),W=N.useRef(U),X=N.useContext(x),q=N.useCallback((P)=>{if(P===null)V(!0);else if(V(!1),!$)W.current=P;if(!$)Y(P)},[$]),M=N.useCallback((P)=>{W.current=P.content,Y(P.content)},[]),F=N.useCallback((P)=>{if(P===null)V(!0);else if(V(!1),!$)for(let OH of P)X?.emit(OH.name,OH.data)},[$,X]);if(N.useEffect(()=>{Y(U),V(!1)},[U]),!G&&Z)return O;return tH.jsx(A,{card:"AjaxGroupCard",data:H,methods:{changeContent:M},useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I,children:tH.jsx(D,{uiConfig:G??W.current,setUiAjaxConfiguration:T==="events"?F:q})})},HZ=H$;var UZ=_({name:"AjaxGroupCard",component:HZ,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var aH=require("react");var NH=require("react/jsx-runtime"),U$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$,url:T,sx:z}=H,J=aH.useContext(b),B=aH.useContext(E)??L;return NH.jsx(A,{card:$,data:H,children:NH.jsx("div",{style:z,id:$,onClick:(O)=>{if(T)if(O.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:NH.jsx(B,{setUiAjaxConfiguration:Z,uiConfig:U})})})},ZZ=U$;var $Z=_({name:"BoxCard",component:ZZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var zZ=require("react");var fH=require("react/jsx-runtime"),Z$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$,sx:T}=H,z=zZ.useContext(E)??L;return fH.jsx(A,{card:$,data:H,children:fH.jsx("div",{style:T,id:$,children:U.map((J,B)=>{return fH.jsx(z,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},TZ=Z$;var JZ=_({name:"OneOfCard",component:TZ,metadata:{author:"Swarm.ing",description:"Different variants"}});var r=require("react"),t=require("@tanstack/react-query");var kH=require("react");var jH=require("react"),EH=new Map,CH=new Map;function yH(H,U){let Z=`${H}::${U}`,$=H?EH.get(Z):void 0,[T,z]=jH.useState($??null);return jH.useEffect(()=>{if(!H)return;if(EH.has(Z)){z(EH.get(Z));return}let J=CH.get(Z);if(!J)J=fetch(H+`api/support/${U}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return EH.set(Z,I),CH.delete(Z),I}).catch((I)=>{throw CH.delete(Z),I}),CH.set(Z,J);let B=!1;return J.then((I)=>{if(!B)z(I)}).catch(()=>{}),()=>{B=!0}},[H,U,Z]),T}var BH=K("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function BZ(){BH.resolve?.()}function eH(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!BH.promise)BH.promise=new Promise((H)=>{BH.resolve=()=>{H()}});return BH.promise}var $$=({children:H})=>{let U=kH.useContext(k),Z=YH(),$=yH(Z,"socketIO"),T=(z)=>{if(typeof window<"u")window.sid=z.sid,BZ(),console.log(`SocketIO initialized: ${window.sid}`)};return kH.useEffect(()=>{if(!U)return;let z=()=>{console.log("SocketIO connected")},J=(B)=>{console.log(`SocketIO disconnected: ${B}`),U.connect()};if($)U.on("pieinit",T),U.on("connect",z),U.on("disconnect",J),U.connect();return()=>{if($)U.off("pieinit",T),U.off("connect",z),U.off("disconnect",J),U.disconnect()}},[U,$]),H},xH=$$;var SH=require("react");var z$=({children:H})=>{let U=SH.useContext(y),Z=YH(),$=yH(Z,"centrifuge");return SH.useEffect(()=>{if(!U)return;let T=()=>{console.log("Centrifuge connected")},z=(J)=>{console.log("Centrifuge disconnected:",J)};if($)U.on("connected",T),U.on("disconnected",z),U.connect();return()=>{if($)U.disconnect()}},[U,$]),H},bH=z$;var GZ=require("axios-date-transformer");var OZ=require("react/jsx-runtime");function IZ(H,U,Z){if(!U)return Z;let $=H.replace(/^\//,""),T=U[$];if(!T)return Z;return OZ.jsx(MH,{uiConfig:T})}var R=require("react/jsx-runtime"),T$=({location:H,fallback:U,piecache:Z,onError:$,queryOptions:T,disableGlobalForm:z})=>{let J=UH(),B=qH(),I=v(),O=r.useMemo(()=>GZ.createAxiosDateTransformer({baseURL:J||""}),[J]),D=r.useMemo(()=>p(),[]),Q=r.useMemo(()=>J?DH(J):null,[J]),V=r.useMemo(()=>J?WH(J,B):null,[J,B]),{data:G,isLoading:Y,error:W}=t.useQuery({queryKey:["uiConfig",H.pathname+H.search,J],enabled:!!J,queryFn:async()=>{let q=new URLSearchParams(H.search);q.set("__pieroot","web");let M="/api/content"+H.pathname+"?"+q.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",M);let F=await O.get(M,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",F.data);return F.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...T}),X=IZ(H.pathname,Z,U);if(!J)return X??null;if(I)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",B),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!Z);if(W){if(I)console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data});return $?.(W),X}if(Y||!G){if(I)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!G});return X}if(I)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return R.jsx(x.Provider,{value:D,children:R.jsx(k.Provider,{value:Q,children:R.jsx(y.Provider,{value:V,children:R.jsx(f.Provider,{value:U??R.jsx(R.Fragment,{}),children:R.jsx(xH,{children:R.jsx(bH,{children:z?R.jsx(L,{uiConfig:G}):R.jsx("form",{id:"piedata_global_form",action:J+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:R.jsx(L,{uiConfig:G})})})})})})})})},J$=(H)=>{let U=r.useMemo(()=>new t.QueryClient,[]),Z=H.queryClient??U;return R.jsx(b.Provider,{value:H.onNavigate,children:R.jsx(h.Provider,{value:H.config,children:R.jsx(m.Provider,{value:H.onError,children:R.jsx(t.QueryClientProvider,{client:Z,children:R.jsx(T$,{...H})})})})})},vH=J$;var a=require("react"),mH=require("@tanstack/react-query");var w=require("react/jsx-runtime"),B$=({location:H,fallback:U,children:Z,disableGlobalForm:$})=>{let T=UH(),z=qH(),J=v(),B=a.useMemo(()=>p(),[]),I=a.useMemo(()=>T?DH(T):null,[T]),O=a.useMemo(()=>T?WH(T,z):null,[T,z]);if(J)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!U);return w.jsx(x.Provider,{value:B,children:w.jsx(k.Provider,{value:I,children:w.jsx(y.Provider,{value:O,children:w.jsx(f.Provider,{value:U??w.jsx(w.Fragment,{}),children:w.jsx(xH,{children:w.jsx(bH,{children:$?Z:w.jsx("form",{id:"piedata_global_form",action:T+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},I$=(H)=>{let[U]=a.useState(()=>new mH.QueryClient),Z=H.queryClient??U;return w.jsx(b.Provider,{value:H.onNavigate,children:w.jsx(h.Provider,{value:H.config,children:w.jsx(m.Provider,{value:H.onError,children:w.jsx(mH.QueryClientProvider,{client:Z,children:w.jsx(B$,{...H})})})})})},XZ=I$;var YZ=require("react");var HU=require("react/jsx-runtime"),O$=HU.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),G$=({apiServer:H,pathname:U="/",search:Z="",centrifugeServer:$,fallback:T,enableRenderingLog:z=!1})=>{let J=H??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",B=YZ.useMemo(()=>({apiServer:J,centrifugeServer:$,enableRenderingLog:z,pageProcessor:"web"}),[J,$,z]);return HU.jsx(vH,{location:{pathname:U,search:Z},config:B,fallback:T??O$,onNavigate:(O)=>{if(typeof window<"u")window.history.pushState(null,"",O)}})},qZ=G$;var QZ=require("react"),X$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],Y$=new Set(["telegram:cloud","telegram:secure"]),IH=(H)=>{if(H==="sid")return{source:"sid",key:"sid"};for(let U of X$){let Z=U+":";if(H.startsWith(Z))return{source:U,key:H.slice(Z.length)}}return{source:"dom",key:H}},UU=(H,U=!1)=>{let{source:Z,key:$}=IH(H);if(Z==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}if(Z==="localStorage"||Z==="sessionStorage")try{let B=(Z==="localStorage"?window.localStorage:window.sessionStorage).getItem($);if(B===null){if(U)console.warn(`No ${Z} value found for key ${$}`);return[]}return[B]}catch(J){if(U)console.warn(`Failed to read ${Z} key ${$}:`,J);return[]}if(Z==="cookie"){let J=q$($);if(J===null){if(U)console.warn(`No cookie found for key ${$}`);return[]}return[J]}if(Z==="url"){let J=new URLSearchParams(window.location.search).getAll($);if(!J.length&&U)console.warn(`No URL query param found for key ${$}`);return J}if(Y$.has(Z)){if(U)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=document.getElementsByName($);if(!T.length){if(U)console.warn(`No input found with name ${$}`);return[]}let z=T[0];if(z instanceof HTMLInputElement){if(z.type==="file"&&z.files)return Array.from(z.files);return[z.value]}if(z instanceof HTMLTextAreaElement)return[z.value];return[]},q$=(H)=>{let U=document.cookie?document.cookie.split(";"):[];for(let Z of U){let $=Z.indexOf("=");if(($===-1?Z:Z.slice(0,$)).trim()===H){let z=$===-1?"":Z.slice($+1).trim();try{return decodeURIComponent(z)}catch{return z}}}return null},Q$=(H,U,Z)=>{let $=window.Telegram?.WebApp,T=H==="telegram:cloud"?$?.CloudStorage:$?.SecureStorage,z=H==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if(Z)console.warn(`${z} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(U,(B,I)=>{if(B){if(Z)console.warn(`Failed to read ${z} key ${U}:`,B);J([]);return}if(I==null||I===""){if(Z)console.warn(`No ${z} value found for key ${U}`);J([]);return}J([I])})}catch(B){if(Z)console.warn(`Failed to read ${z} key ${U}:`,B);J([])}})},ZU=async(H,U=!1)=>{let{source:Z,key:$}=IH(H);if(Z==="telegram:cloud"||Z==="telegram:secure")return Q$(Z,$,U);return UU(H,U)},W$=(H,U={},Z=[],$,T)=>{let z=T?.renderingLogEnabled??!1,J=T?.timeout,B=T?.retryPolicy,I=B?.maxRetries??0,O=B?.baseDelay??1000,D=B?.retryOn??[502,503,504];if(z)console.log("Registering AJAX: ",$,U,Z);return async(Q={})=>{if(typeof window>"u"||typeof document>"u"){if(z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(z)console.warn("AJAX skipped: apiServer is missing");return}if(!$||!H){if(z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await eH();let G=new FormData;for(let[X,q]of Object.entries({...U,...Q}))G.append(X,q);for(let X of Z){let{key:q}=IH(X);for(let M of await ZU(X,z))G.append(q,M)}let Y=V+"api/ajax_content"+$;H(null);let W;for(let X=0;X<=I;X++){if(X>0){let F=O*2**(X-1);if(z)console.log(`AJAX retry ${X}/${I} after ${F}ms`);await new Promise((P)=>setTimeout(P,F))}let q=J!=null?new AbortController:null,M=q&&setTimeout(()=>q.abort(),J);try{let F=await fetch(Y,{method:"POST",body:G,signal:q?.signal});if(M)clearTimeout(M);if(!F.ok&&D.includes(F.status)&&X<I){W=Error(`HTTP ${F.status}`);continue}let OH=(F.headers.get("content-type")||"").includes("application/json");if(!!F.body?.getReader&&!OH){let GH=F.body.getReader(),MZ=new TextDecoder,u="";while(!0){let{done:cH,value:AZ}=await GH.read();if(cH)break;u+=MZ.decode(AZ,{stream:!0});let $U=u.split(`
3
3
  `);u=$U.pop()??"";for(let PZ of $U){let hH=PZ.trim();if(!hH)continue;try{let RZ=JSON.parse(hH);H([RZ])}catch{if(z)console.warn("Failed to parse streamed line:",hH)}}}if(u.trim())try{let cH=JSON.parse(u);H([cH])}catch{if(z)console.warn("Failed to parse final streamed line:",u)}return{}}else{let GH=await F.json();return H(GH),GH}}catch(F){if(M)clearTimeout(M);if(W=F,X<I)continue;if(z)console.error("AJAX request failed:",F);return H(null),F}}if(z)console.error("AJAX request failed after retries:",W);return H(null),W}},WZ=(H,U={},Z=[],$,T)=>{let{apiServer:z,enableRenderingLog:J}=HH(),B=JSON.stringify(U),I=JSON.stringify(Z),O=JSON.stringify(T);return QZ.useMemo(()=>W$(H,U,Z,$,{apiServer:z,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[H,B,I,$,z,J,O])};var DZ=require("clsx"),VZ=require("tailwind-merge");function FZ(...H){return VZ.twMerge(DZ.clsx(H))}var _Z=()=>{if(typeof document>"u")return;let H=document.getElementById("piedata_global_form");H&&H.submit()};var KZ=(H,U)=>`${H}${QH}${U}`;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{useMemo as R}from"react";import{QueryClient as rU,QueryClientProvider as aU,useQuery as tU}from"@tanstack/react-query";import HU from"mitt";import{createContext as NU,useCallback as HL,useContext as NL}from"react";var A=globalThis,J=(U,L)=>{let T=Symbol.for(U);if(!(T in A))A[T]=L();return A[T]};function b(){return J("@swarm.ing/pieui:mitt-emitter",()=>HU())}var ZU=J("@swarm.ing/pieui:context:mitt",()=>NU(null));var u=ZU;import{io as VU}from"socket.io-client";import{createContext as YU}from"react";var c=J("@swarm.ing/pieui:socket-cache",()=>new Map),o=(U)=>{let L=c.get(U);if(L)return L;let T=VU(U,{autoConnect:!1,transports:["websocket"]});return c.set(U,T),T},FU=J("@swarm.ing/pieui:context:socket",()=>YU(null)),K=FU;import{createContext as GU}from"react";import{Centrifuge as g}from"centrifuge";var h=J("@swarm.ing/pieui:centrifuge-cache",()=>new Map),l=(U,L)=>{if(!L)return null;let T=`${U}::${L}`,D=h.get(T);if(D)return D;async function z(){let $=await fetch(U+"api/centrifuge/gen_token");if(!$.ok){if($.status===403)throw new g.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${$.status}`)}return(await $.json()).token}let I=new g(L,{getToken:z});return h.set(T,I),I},OU=J("@swarm.ing/pieui:context:centrifuge",()=>GU(null)),X=OU;import{useContext as KU,useEffect as XU}from"react";import{useEffect as QU,useState as _U}from"react";var B=new Map,W=new Map;function f(U,L){let T=`${U}::${L}`,D=U?B.get(T):void 0,[z,I]=_U(D??null);return QU(()=>{if(!U)return;if(B.has(T)){I(B.get(T));return}let $=W.get(T);if(!$)$=fetch(U+`api/support/${L}`,{method:"GET"}).then((H)=>H.json()).then((H)=>{return B.set(T,H),W.delete(T),H}).catch((H)=>{throw W.delete(T),H}),W.set(T,$);let Z=!1;return $.then((H)=>{if(!Z)I(H)}).catch(()=>{}),()=>{Z=!0}},[U,L,T]),z}import{createContext as qU,useContext as RU}from"react";var y=J("@swarm.ing/pieui:context:pieConfig",()=>qU(null)),w=()=>{let U=RU(y);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},k=()=>{let{apiServer:U}=w();return U},j=k,p=()=>{let{centrifugeServer:U}=w();return U};var Y=()=>{let{enableRenderingLog:U}=w();return U};var EU=J("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function n(){EU.resolve?.()}var BU=({children:U})=>{let L=KU(K),T=j(),D=f(T,"socketIO"),z=(I)=>{if(typeof window<"u")window.sid=I.sid,n(),console.log(`SocketIO initialized: ${window.sid}`)};return XU(()=>{if(!L)return;let I=()=>{console.log("SocketIO connected")},$=(Z)=>{console.log(`SocketIO disconnected: ${Z}`),L.connect()};if(D)L.on("pieinit",z),L.on("connect",I),L.on("disconnect",$),L.connect();return()=>{if(D)L.off("pieinit",z),L.off("connect",I),L.off("disconnect",$),L.disconnect()}},[L,D]),U},s=BU;import{useContext as WU,useEffect as fU}from"react";var jU=({children:U})=>{let L=WU(X),T=j(),D=f(T,"centrifuge");return fU(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},I=($)=>{console.log("Centrifuge disconnected:",$)};if(D)L.on("connected",z),L.on("disconnected",I),L.connect();return()=>{if(D)L.disconnect()}},[L,D]),U},i=jU;import{createContext as MU}from"react";import{jsx as yU,Fragment as AU}from"react/jsx-runtime";var PU=J("@swarm.ing/pieui:context:fallback",()=>MU(yU(AU,{}))),F=PU;import{createContext as wU}from"react";var kU=J("@swarm.ing/pieui:context:lazyError",()=>wU(void 0)),G=kU;var mU=J("@swarm.ing/pieui:component-registry",()=>new Map);var M=(U)=>{return mU.get(U)};import{useContext as r,memo as bU}from"react";import{Component as CU,Suspense as dU}from"react";import{jsx as xU}from"react/jsx-runtime";var SU=2,vU=400;class O extends CU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<SU){let L=vU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((T)=>({failed:!1,attempt:T.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return xU(dU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as m}from"react/jsx-runtime";function uU({uiConfig:U,setUiAjaxConfiguration:L}){let T=r(F),D=r(G),z=Y();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let I=M(U.card);if(!I?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return T}if(z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let $=I.component,Z=m($,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(I.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return m(O,{name:I.name,fallback:I.fallback?m(I.fallback,{}):T,onError:D,children:Z})}if(z)console.log("[UI] Rendering component directly:",I.name);return Z}var C=bU(uU);import{createAxiosDateTransformer as eU}from"axios-date-transformer";import{useEffect as a,useState as cU}from"react";var Q=()=>{let[U,L]=cU(null);return a(()=>{if(typeof window>"u")return;let T=window.WebApp;if(!T)return;T.ready(),L(T)},[]),U},oU=()=>{let U=Q();return[U?.initDataUnsafe,U?.initData]},gU=(U)=>{let L=Q();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},hU=()=>{return Q()?.HapticFeedback??null};import{createContext as lU}from"react";var pU=J("@swarm.ing/pieui:context:navigate",()=>lU(void 0)),t=pU;import{useContext as UU}from"react";import{createContext as nU}from"react";var sU=J("@swarm.ing/pieui:context:uiRenderer",()=>nU(null)),e=sU;import{jsx as P}from"react/jsx-runtime";function LU({uiConfig:U,setUiAjaxConfiguration:L}){let T=UU(F),D=UU(G),z=Y();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let I=M(U.card);if(!I?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return T}if(z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(z)console.log("[UILoading] Rendering fallback for:",I.name);let H=I.fallback;return P(H,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let $=I.component,Z=P(e.Provider,{value:LU,children:P($,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(I.isLazy)return P(O,{name:I.name,fallback:T,onError:D,children:Z});return Z}var TU=LU;import{jsx as iU}from"react/jsx-runtime";function IU(U,L,T){if(!L)return T;let D=U.replace(/^\//,""),z=L[D];if(!z)return T;return iU(TU,{uiConfig:z})}import{jsx as N,Fragment as TL}from"react/jsx-runtime";var UL=({location:U,fallback:L,piecache:T,onError:D,queryOptions:z,disableGlobalForm:I})=>{let $=k(),Z=p(),H=Y(),$U=R(()=>eU({baseURL:$}),[$]),zU=R(()=>b(),[]),JU=R(()=>$?o($):null,[$]),DU=R(()=>$?l($,Z):null,[$,Z]),E=Q(),{data:_,isLoading:d,error:V}=tU({queryKey:["uiConfig",U.pathname+U.search,E?.initData],queryFn:async()=>{let q=new URLSearchParams(U.search);if(q.set("__pieroot","max"),E?.initData)q.set("initData",E.initData);let v="/api/content"+U.pathname+"?"+q.toString();if(H)console.log("[PieRoot] Fetching UI configuration from:",v);let x=await $U.get(v,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(H)console.log("[PieRoot] Received UI configuration:",x.data);return x.data},enabled:!!E?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...z}),S=IU(U.pathname,T,L);if(!$)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&H)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),D?.(V),S;if(d||!_){if(H)console.log("[PieRoot] Loading state:",{isLoading:d,hasUiConfiguration:!!_});return S}if(H)console.log("[PieRoot] UI configuration loaded successfully:",_),console.log("[PieRoot] Rendering UI with configuration");return N(u.Provider,{value:zU,children:N(K.Provider,{value:JU,children:N(X.Provider,{value:DU,children:N(F.Provider,{value:L??N(TL,{}),children:N(s,{children:N(i,{children:I?N(C,{uiConfig:_}):N("form",{id:"piedata_global_form",action:$+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:N(C,{uiConfig:_})})})})})})})})},LL=(U)=>{let L=R(()=>new rU,[]),T=U.queryClient??L;return N(t.Provider,{value:U.onNavigate,children:N(y.Provider,{value:U.config,children:N(G.Provider,{value:U.onError,children:N(aU,{client:T,children:N(UL,{...U})})})})})},IL=LL;export{Q as useMaxWebApp,oU as useMaxInitData,hU as useMaxHapticFeedback,gU as useMaxBackButton,IL as PieMaxRoot};
2
+ import{useMemo as R}from"react";import{QueryClient as rU,QueryClientProvider as aU,useQuery as tU}from"@tanstack/react-query";import HU from"mitt";import{createContext as NU,useCallback as HL,useContext as NL}from"react";var A=globalThis,J=(U,L)=>{let T=Symbol.for(U);if(!(T in A))A[T]=L();return A[T]};function b(){return J("@swarm.ing/pieui:mitt-emitter",()=>HU())}var ZU=J("@swarm.ing/pieui:context:mitt",()=>NU(null));var u=ZU;import{io as VU}from"socket.io-client";import{createContext as YU}from"react";var c=J("@swarm.ing/pieui:socket-cache",()=>new Map),o=(U)=>{let L=c.get(U);if(L)return L;let T=VU(U,{autoConnect:!1,transports:["websocket"]});return c.set(U,T),T},FU=J("@swarm.ing/pieui:context:socket",()=>YU(null)),K=FU;import{createContext as GU}from"react";import{Centrifuge as g}from"centrifuge";var h=J("@swarm.ing/pieui:centrifuge-cache",()=>new Map),l=(U,L)=>{if(!L)return null;let T=`${U}::${L}`,D=h.get(T);if(D)return D;async function z(){let $=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!$.ok){if($.status===401||$.status===403)throw new g.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${$.status}`)}return(await $.json()).token}let I=new g(L,{getToken:z});return h.set(T,I),I},OU=J("@swarm.ing/pieui:context:centrifuge",()=>GU(null)),X=OU;import{useContext as KU,useEffect as XU}from"react";import{useEffect as QU,useState as _U}from"react";var B=new Map,W=new Map;function f(U,L){let T=`${U}::${L}`,D=U?B.get(T):void 0,[z,I]=_U(D??null);return QU(()=>{if(!U)return;if(B.has(T)){I(B.get(T));return}let $=W.get(T);if(!$)$=fetch(U+`api/support/${L}`,{method:"GET"}).then((H)=>H.json()).then((H)=>{return B.set(T,H),W.delete(T),H}).catch((H)=>{throw W.delete(T),H}),W.set(T,$);let Z=!1;return $.then((H)=>{if(!Z)I(H)}).catch(()=>{}),()=>{Z=!0}},[U,L,T]),z}import{createContext as qU,useContext as RU}from"react";var y=J("@swarm.ing/pieui:context:pieConfig",()=>qU(null)),w=()=>{let U=RU(y);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},k=()=>{let{apiServer:U}=w();return U},j=k,p=()=>{let{centrifugeServer:U}=w();return U};var Y=()=>{let{enableRenderingLog:U}=w();return U};var EU=J("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function n(){EU.resolve?.()}var BU=({children:U})=>{let L=KU(K),T=j(),D=f(T,"socketIO"),z=(I)=>{if(typeof window<"u")window.sid=I.sid,n(),console.log(`SocketIO initialized: ${window.sid}`)};return XU(()=>{if(!L)return;let I=()=>{console.log("SocketIO connected")},$=(Z)=>{console.log(`SocketIO disconnected: ${Z}`),L.connect()};if(D)L.on("pieinit",z),L.on("connect",I),L.on("disconnect",$),L.connect();return()=>{if(D)L.off("pieinit",z),L.off("connect",I),L.off("disconnect",$),L.disconnect()}},[L,D]),U},s=BU;import{useContext as WU,useEffect as fU}from"react";var jU=({children:U})=>{let L=WU(X),T=j(),D=f(T,"centrifuge");return fU(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},I=($)=>{console.log("Centrifuge disconnected:",$)};if(D)L.on("connected",z),L.on("disconnected",I),L.connect();return()=>{if(D)L.disconnect()}},[L,D]),U},i=jU;import{createContext as MU}from"react";import{jsx as yU,Fragment as AU}from"react/jsx-runtime";var PU=J("@swarm.ing/pieui:context:fallback",()=>MU(yU(AU,{}))),F=PU;import{createContext as wU}from"react";var kU=J("@swarm.ing/pieui:context:lazyError",()=>wU(void 0)),G=kU;var mU=J("@swarm.ing/pieui:component-registry",()=>new Map);var M=(U)=>{return mU.get(U)};import{useContext as r,memo as bU}from"react";import{Component as CU,Suspense as dU}from"react";import{jsx as xU}from"react/jsx-runtime";var SU=2,vU=400;class O extends CU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<SU){let L=vU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((T)=>({failed:!1,attempt:T.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return xU(dU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as m}from"react/jsx-runtime";function uU({uiConfig:U,setUiAjaxConfiguration:L}){let T=r(F),D=r(G),z=Y();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let I=M(U.card);if(!I?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return T}if(z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let $=I.component,Z=m($,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(I.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return m(O,{name:I.name,fallback:I.fallback?m(I.fallback,{}):T,onError:D,children:Z})}if(z)console.log("[UI] Rendering component directly:",I.name);return Z}var C=bU(uU);import{createAxiosDateTransformer as eU}from"axios-date-transformer";import{useEffect as a,useState as cU}from"react";var Q=()=>{let[U,L]=cU(null);return a(()=>{if(typeof window>"u")return;let T=window.WebApp;if(!T)return;T.ready(),L(T)},[]),U},oU=()=>{let U=Q();return[U?.initDataUnsafe,U?.initData]},gU=(U)=>{let L=Q();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},hU=()=>{return Q()?.HapticFeedback??null};import{createContext as lU}from"react";var pU=J("@swarm.ing/pieui:context:navigate",()=>lU(void 0)),t=pU;import{useContext as UU}from"react";import{createContext as nU}from"react";var sU=J("@swarm.ing/pieui:context:uiRenderer",()=>nU(null)),e=sU;import{jsx as P}from"react/jsx-runtime";function LU({uiConfig:U,setUiAjaxConfiguration:L}){let T=UU(F),D=UU(G),z=Y();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let I=M(U.card);if(!I?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return T}if(z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(z)console.log("[UILoading] Rendering fallback for:",I.name);let H=I.fallback;return P(H,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let $=I.component,Z=P(e.Provider,{value:LU,children:P($,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(I.isLazy)return P(O,{name:I.name,fallback:T,onError:D,children:Z});return Z}var TU=LU;import{jsx as iU}from"react/jsx-runtime";function IU(U,L,T){if(!L)return T;let D=U.replace(/^\//,""),z=L[D];if(!z)return T;return iU(TU,{uiConfig:z})}import{jsx as N,Fragment as TL}from"react/jsx-runtime";var UL=({location:U,fallback:L,piecache:T,onError:D,queryOptions:z,disableGlobalForm:I})=>{let $=k(),Z=p(),H=Y(),$U=R(()=>eU({baseURL:$}),[$]),zU=R(()=>b(),[]),JU=R(()=>$?o($):null,[$]),DU=R(()=>$?l($,Z):null,[$,Z]),E=Q(),{data:_,isLoading:d,error:V}=tU({queryKey:["uiConfig",U.pathname+U.search,E?.initData],queryFn:async()=>{let q=new URLSearchParams(U.search);if(q.set("__pieroot","max"),E?.initData)q.set("initData",E.initData);let v="/api/content"+U.pathname+"?"+q.toString();if(H)console.log("[PieRoot] Fetching UI configuration from:",v);let x=await $U.get(v,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(H)console.log("[PieRoot] Received UI configuration:",x.data);return x.data},enabled:!!E?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...z}),S=IU(U.pathname,T,L);if(!$)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&H)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),D?.(V),S;if(d||!_){if(H)console.log("[PieRoot] Loading state:",{isLoading:d,hasUiConfiguration:!!_});return S}if(H)console.log("[PieRoot] UI configuration loaded successfully:",_),console.log("[PieRoot] Rendering UI with configuration");return N(u.Provider,{value:zU,children:N(K.Provider,{value:JU,children:N(X.Provider,{value:DU,children:N(F.Provider,{value:L??N(TL,{}),children:N(s,{children:N(i,{children:I?N(C,{uiConfig:_}):N("form",{id:"piedata_global_form",action:$+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:N(C,{uiConfig:_})})})})})})})})},LL=(U)=>{let L=R(()=>new rU,[]),T=U.queryClient??L;return N(t.Provider,{value:U.onNavigate,children:N(y.Provider,{value:U.config,children:N(G.Provider,{value:U.onError,children:N(aU,{client:T,children:N(UL,{...U})})})})})},IL=LL;export{Q as useMaxWebApp,oU as useMaxInitData,hU as useMaxHapticFeedback,gU as useMaxBackButton,IL as PieMaxRoot};
package/dist/max/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var dU=Object.create;var{getPrototypeOf:SU,defineProperty:K,getOwnPropertyNames:e,getOwnPropertyDescriptor:vU}=Object,UU=Object.prototype.hasOwnProperty;var xU=(U,L,T)=>{T=U!=null?dU(SU(U)):{};let $=L||!U||!U.__esModule?K(T,"default",{value:U,enumerable:!0}):T;for(let z of e(U))if(!UU.call($,z))K($,z,{get:()=>U[z],enumerable:!0});return $},t=new WeakMap,bU=(U)=>{var L=t.get(U),T;if(L)return L;if(L=K({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")e(U).map(($)=>!UU.call(L,$)&&K(L,$,{get:()=>U[$],enumerable:!(T=vU(U,$))||T.enumerable}));return t.set(U,L),L};var uU=(U,L)=>{for(var T in L)K(U,T,{get:L[T],enumerable:!0,configurable:!0,set:($)=>L[T]=()=>$})};var IL={};uU(IL,{useMaxWebApp:()=>V,useMaxInitData:()=>qU,useMaxHapticFeedback:()=>EU,useMaxBackButton:()=>RU,PieMaxRoot:()=>yU});module.exports=bU(IL);var _=require("react"),q=require("@tanstack/react-query");var LU=xU(require("mitt")),j=require("react");var c=globalThis,D=(U,L)=>{let T=Symbol.for(U);if(!(T in c))c[T]=L();return c[T]};function TU(){return D("@swarm.ing/pieui:mitt-emitter",()=>LU.default())}var cU=D("@swarm.ing/pieui:context:mitt",()=>j.createContext(null));var IU=cU;var zU=require("socket.io-client"),JU=require("react");var $U=D("@swarm.ing/pieui:socket-cache",()=>new Map),DU=(U)=>{let L=$U.get(U);if(L)return L;let T=zU.io(U,{autoConnect:!1,transports:["websocket"]});return $U.set(U,T),T},oU=D("@swarm.ing/pieui:context:socket",()=>JU.createContext(null)),M=oU;var NU=require("react"),o=require("centrifuge");var HU=D("@swarm.ing/pieui:centrifuge-cache",()=>new Map),ZU=(U,L)=>{if(!L)return null;let T=`${U}::${L}`,$=HU.get(T);if($)return $;async function z(){let J=await fetch(U+"api/centrifuge/gen_token");if(!J.ok){if(J.status===403)throw new o.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let I=new o.Centrifuge(L,{getToken:z});return HU.set(T,I),I},gU=D("@swarm.ing/pieui:context:centrifuge",()=>NU.createContext(null)),P=gU;var d=require("react");var w=require("react"),A=new Map,y=new Map;function k(U,L){let T=`${U}::${L}`,$=U?A.get(T):void 0,[z,I]=w.useState($??null);return w.useEffect(()=>{if(!U)return;if(A.has(T)){I(A.get(T));return}let J=y.get(T);if(!J)J=fetch(U+`api/support/${L}`,{method:"GET"}).then((N)=>N.json()).then((N)=>{return A.set(T,N),y.delete(T),N}).catch((N)=>{throw y.delete(T),N}),y.set(T,J);let Z=!1;return J.then((N)=>{if(!Z)I(N)}).catch(()=>{}),()=>{Z=!0}},[U,L,T]),z}var m=require("react");var g=D("@swarm.ing/pieui:context:pieConfig",()=>m.createContext(null)),h=()=>{let U=m.useContext(g);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},l=()=>{let{apiServer:U}=h();return U},C=l,VU=()=>{let{centrifugeServer:U}=h();return U};var F=()=>{let{enableRenderingLog:U}=h();return U};var hU=D("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function YU(){hU.resolve?.()}var lU=({children:U})=>{let L=d.useContext(M),T=C(),$=k(T,"socketIO"),z=(I)=>{if(typeof window<"u")window.sid=I.sid,YU(),console.log(`SocketIO initialized: ${window.sid}`)};return d.useEffect(()=>{if(!L)return;let I=()=>{console.log("SocketIO connected")},J=(Z)=>{console.log(`SocketIO disconnected: ${Z}`),L.connect()};if($)L.on("pieinit",z),L.on("connect",I),L.on("disconnect",J),L.connect();return()=>{if($)L.off("pieinit",z),L.off("connect",I),L.off("disconnect",J),L.disconnect()}},[L,$]),U},FU=lU;var S=require("react");var pU=({children:U})=>{let L=S.useContext(P),T=C(),$=k(T,"centrifuge");return S.useEffect(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},I=(J)=>{console.log("Centrifuge disconnected:",J)};if($)L.on("connected",z),L.on("disconnected",I),L.connect();return()=>{if($)L.disconnect()}},[L,$]),U},GU=pU;var OU=require("react");var v=require("react/jsx-runtime"),nU=D("@swarm.ing/pieui:context:fallback",()=>OU.createContext(v.jsx(v.Fragment,{}))),G=nU;var QU=require("react");var sU=D("@swarm.ing/pieui:context:lazyError",()=>QU.createContext(void 0)),O=sU;var iU=D("@swarm.ing/pieui:component-registry",()=>new Map);var x=(U)=>{return iU.get(U)};var X=require("react");var b=require("react"),_U=require("react/jsx-runtime"),rU=2,aU=400;class Q extends b.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<rU){let L=aU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((T)=>({failed:!1,attempt:T.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 _U.jsx(b.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var u=require("react/jsx-runtime");function tU({uiConfig:U,setUiAjaxConfiguration:L}){let T=X.useContext(G),$=X.useContext(O),z=F();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let I=x(U.card);if(!I?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return T}if(z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let J=I.component,Z=u.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(I.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return u.jsx(Q,{name:I.name,fallback:I.fallback?u.jsx(I.fallback,{}):T,onError:$,children:Z})}if(z)console.log("[UI] Rendering component directly:",I.name);return Z}var p=X.memo(tU);var AU=require("axios-date-transformer");var B=require("react"),V=()=>{let[U,L]=B.useState(null);return B.useEffect(()=>{if(typeof window>"u")return;let T=window.WebApp;if(!T)return;T.ready(),L(T)},[]),U},qU=()=>{let U=V();return[U?.initDataUnsafe,U?.initData]},RU=(U)=>{let L=V();return B.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},EU=()=>{return V()?.HapticFeedback??null};var KU=require("react");var eU=D("@swarm.ing/pieui:context:navigate",()=>KU.createContext(void 0)),XU=eU;var n=require("react");var BU=require("react");var UL=D("@swarm.ing/pieui:context:uiRenderer",()=>BU.createContext(null)),WU=UL;var W=require("react/jsx-runtime");function fU({uiConfig:U,setUiAjaxConfiguration:L}){let T=n.useContext(G),$=n.useContext(O),z=F();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let I=x(U.card);if(!I?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return T}if(z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(z)console.log("[UILoading] Rendering fallback for:",I.name);let N=I.fallback;return W.jsx(N,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let J=I.component,Z=W.jsx(WU.Provider,{value:fU,children:W.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(I.isLazy)return W.jsx(Q,{name:I.name,fallback:T,onError:$,children:Z});return Z}var jU=fU;var PU=require("react/jsx-runtime");function MU(U,L,T){if(!L)return T;let $=U.replace(/^\//,""),z=L[$];if(!z)return T;return PU.jsx(jU,{uiConfig:z})}var H=require("react/jsx-runtime"),LL=({location:U,fallback:L,piecache:T,onError:$,queryOptions:z,disableGlobalForm:I})=>{let J=l(),Z=VU(),N=F(),wU=_.useMemo(()=>AU.createAxiosDateTransformer({baseURL:J}),[J]),kU=_.useMemo(()=>TU(),[]),mU=_.useMemo(()=>J?DU(J):null,[J]),CU=_.useMemo(()=>J?ZU(J,Z):null,[J,Z]),f=V(),{data:R,isLoading:s,error:Y}=q.useQuery({queryKey:["uiConfig",U.pathname+U.search,f?.initData],queryFn:async()=>{let E=new URLSearchParams(U.search);if(E.set("__pieroot","max"),f?.initData)E.set("initData",f.initData);let r="/api/content"+U.pathname+"?"+E.toString();if(N)console.log("[PieRoot] Fetching UI configuration from:",r);let a=await wU.get(r,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(N)console.log("[PieRoot] Received UI configuration:",a.data);return a.data},enabled:!!f?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(E)=>Math.min(1000*2**E,30000),...z}),i=MU(U.pathname,T,L);if(!J)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(Y&&N)return console.error("[PieRoot] Error fetching UI configuration:",Y),console.error("[PieRoot] Error details:",{message:Y.message,status:Y.response?.status,data:Y.response?.data}),$?.(Y),i;if(s||!R){if(N)console.log("[PieRoot] Loading state:",{isLoading:s,hasUiConfiguration:!!R});return i}if(N)console.log("[PieRoot] UI configuration loaded successfully:",R),console.log("[PieRoot] Rendering UI with configuration");return H.jsx(IU.Provider,{value:kU,children:H.jsx(M.Provider,{value:mU,children:H.jsx(P.Provider,{value:CU,children:H.jsx(G.Provider,{value:L??H.jsx(H.Fragment,{}),children:H.jsx(FU,{children:H.jsx(GU,{children:I?H.jsx(p,{uiConfig:R}):H.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:H.jsx(p,{uiConfig:R})})})})})})})})},TL=(U)=>{let L=_.useMemo(()=>new q.QueryClient,[]),T=U.queryClient??L;return H.jsx(XU.Provider,{value:U.onNavigate,children:H.jsx(g.Provider,{value:U.config,children:H.jsx(O.Provider,{value:U.onError,children:H.jsx(q.QueryClientProvider,{client:T,children:H.jsx(LL,{...U})})})})})},yU=TL;
2
+ var dU=Object.create;var{getPrototypeOf:SU,defineProperty:K,getOwnPropertyNames:e,getOwnPropertyDescriptor:vU}=Object,UU=Object.prototype.hasOwnProperty;var xU=(U,L,T)=>{T=U!=null?dU(SU(U)):{};let $=L||!U||!U.__esModule?K(T,"default",{value:U,enumerable:!0}):T;for(let J of e(U))if(!UU.call($,J))K($,J,{get:()=>U[J],enumerable:!0});return $},t=new WeakMap,bU=(U)=>{var L=t.get(U),T;if(L)return L;if(L=K({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")e(U).map(($)=>!UU.call(L,$)&&K(L,$,{get:()=>U[$],enumerable:!(T=vU(U,$))||T.enumerable}));return t.set(U,L),L};var uU=(U,L)=>{for(var T in L)K(U,T,{get:L[T],enumerable:!0,configurable:!0,set:($)=>L[T]=()=>$})};var IL={};uU(IL,{useMaxWebApp:()=>V,useMaxInitData:()=>qU,useMaxHapticFeedback:()=>EU,useMaxBackButton:()=>RU,PieMaxRoot:()=>yU});module.exports=bU(IL);var _=require("react"),q=require("@tanstack/react-query");var LU=xU(require("mitt")),j=require("react");var c=globalThis,D=(U,L)=>{let T=Symbol.for(U);if(!(T in c))c[T]=L();return c[T]};function TU(){return D("@swarm.ing/pieui:mitt-emitter",()=>LU.default())}var cU=D("@swarm.ing/pieui:context:mitt",()=>j.createContext(null));var IU=cU;var zU=require("socket.io-client"),JU=require("react");var $U=D("@swarm.ing/pieui:socket-cache",()=>new Map),DU=(U)=>{let L=$U.get(U);if(L)return L;let T=zU.io(U,{autoConnect:!1,transports:["websocket"]});return $U.set(U,T),T},oU=D("@swarm.ing/pieui:context:socket",()=>JU.createContext(null)),M=oU;var NU=require("react"),o=require("centrifuge");var HU=D("@swarm.ing/pieui:centrifuge-cache",()=>new Map),ZU=(U,L)=>{if(!L)return null;let T=`${U}::${L}`,$=HU.get(T);if($)return $;async function J(){let z=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!z.ok){if(z.status===401||z.status===403)throw new o.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let I=new o.Centrifuge(L,{getToken:J});return HU.set(T,I),I},gU=D("@swarm.ing/pieui:context:centrifuge",()=>NU.createContext(null)),P=gU;var d=require("react");var w=require("react"),A=new Map,y=new Map;function k(U,L){let T=`${U}::${L}`,$=U?A.get(T):void 0,[J,I]=w.useState($??null);return w.useEffect(()=>{if(!U)return;if(A.has(T)){I(A.get(T));return}let z=y.get(T);if(!z)z=fetch(U+`api/support/${L}`,{method:"GET"}).then((N)=>N.json()).then((N)=>{return A.set(T,N),y.delete(T),N}).catch((N)=>{throw y.delete(T),N}),y.set(T,z);let Z=!1;return z.then((N)=>{if(!Z)I(N)}).catch(()=>{}),()=>{Z=!0}},[U,L,T]),J}var m=require("react");var g=D("@swarm.ing/pieui:context:pieConfig",()=>m.createContext(null)),h=()=>{let U=m.useContext(g);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},l=()=>{let{apiServer:U}=h();return U},C=l,VU=()=>{let{centrifugeServer:U}=h();return U};var F=()=>{let{enableRenderingLog:U}=h();return U};var hU=D("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function YU(){hU.resolve?.()}var lU=({children:U})=>{let L=d.useContext(M),T=C(),$=k(T,"socketIO"),J=(I)=>{if(typeof window<"u")window.sid=I.sid,YU(),console.log(`SocketIO initialized: ${window.sid}`)};return d.useEffect(()=>{if(!L)return;let I=()=>{console.log("SocketIO connected")},z=(Z)=>{console.log(`SocketIO disconnected: ${Z}`),L.connect()};if($)L.on("pieinit",J),L.on("connect",I),L.on("disconnect",z),L.connect();return()=>{if($)L.off("pieinit",J),L.off("connect",I),L.off("disconnect",z),L.disconnect()}},[L,$]),U},FU=lU;var S=require("react");var pU=({children:U})=>{let L=S.useContext(P),T=C(),$=k(T,"centrifuge");return S.useEffect(()=>{if(!L)return;let J=()=>{console.log("Centrifuge connected")},I=(z)=>{console.log("Centrifuge disconnected:",z)};if($)L.on("connected",J),L.on("disconnected",I),L.connect();return()=>{if($)L.disconnect()}},[L,$]),U},GU=pU;var OU=require("react");var v=require("react/jsx-runtime"),nU=D("@swarm.ing/pieui:context:fallback",()=>OU.createContext(v.jsx(v.Fragment,{}))),G=nU;var QU=require("react");var sU=D("@swarm.ing/pieui:context:lazyError",()=>QU.createContext(void 0)),O=sU;var iU=D("@swarm.ing/pieui:component-registry",()=>new Map);var x=(U)=>{return iU.get(U)};var X=require("react");var b=require("react"),_U=require("react/jsx-runtime"),rU=2,aU=400;class Q extends b.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<rU){let L=aU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((T)=>({failed:!1,attempt:T.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 _U.jsx(b.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var u=require("react/jsx-runtime");function tU({uiConfig:U,setUiAjaxConfiguration:L}){let T=X.useContext(G),$=X.useContext(O),J=F();if(J)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=x(U.card);if(!I?.component){if(J)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return T}if(J)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let z=I.component,Z=u.jsx(z,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(I.isLazy){if(J)console.log("[UI] Rendering lazy component with Suspense:",I.name);return u.jsx(Q,{name:I.name,fallback:I.fallback?u.jsx(I.fallback,{}):T,onError:$,children:Z})}if(J)console.log("[UI] Rendering component directly:",I.name);return Z}var p=X.memo(tU);var AU=require("axios-date-transformer");var B=require("react"),V=()=>{let[U,L]=B.useState(null);return B.useEffect(()=>{if(typeof window>"u")return;let T=window.WebApp;if(!T)return;T.ready(),L(T)},[]),U},qU=()=>{let U=V();return[U?.initDataUnsafe,U?.initData]},RU=(U)=>{let L=V();return B.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},EU=()=>{return V()?.HapticFeedback??null};var KU=require("react");var eU=D("@swarm.ing/pieui:context:navigate",()=>KU.createContext(void 0)),XU=eU;var n=require("react");var BU=require("react");var UL=D("@swarm.ing/pieui:context:uiRenderer",()=>BU.createContext(null)),WU=UL;var W=require("react/jsx-runtime");function fU({uiConfig:U,setUiAjaxConfiguration:L}){let T=n.useContext(G),$=n.useContext(O),J=F();if(J)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=x(U.card);if(!I?.component){if(J)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return T}if(J)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(J)console.log("[UILoading] Rendering fallback for:",I.name);let N=I.fallback;return W.jsx(N,{})}if(J)console.log("[UILoading] No fallback, rendering full component:",I.name);let z=I.component,Z=W.jsx(WU.Provider,{value:fU,children:W.jsx(z,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(I.isLazy)return W.jsx(Q,{name:I.name,fallback:T,onError:$,children:Z});return Z}var jU=fU;var PU=require("react/jsx-runtime");function MU(U,L,T){if(!L)return T;let $=U.replace(/^\//,""),J=L[$];if(!J)return T;return PU.jsx(jU,{uiConfig:J})}var H=require("react/jsx-runtime"),LL=({location:U,fallback:L,piecache:T,onError:$,queryOptions:J,disableGlobalForm:I})=>{let z=l(),Z=VU(),N=F(),wU=_.useMemo(()=>AU.createAxiosDateTransformer({baseURL:z}),[z]),kU=_.useMemo(()=>TU(),[]),mU=_.useMemo(()=>z?DU(z):null,[z]),CU=_.useMemo(()=>z?ZU(z,Z):null,[z,Z]),f=V(),{data:R,isLoading:s,error:Y}=q.useQuery({queryKey:["uiConfig",U.pathname+U.search,f?.initData],queryFn:async()=>{let E=new URLSearchParams(U.search);if(E.set("__pieroot","max"),f?.initData)E.set("initData",f.initData);let r="/api/content"+U.pathname+"?"+E.toString();if(N)console.log("[PieRoot] Fetching UI configuration from:",r);let a=await wU.get(r,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(N)console.log("[PieRoot] Received UI configuration:",a.data);return a.data},enabled:!!f?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(E)=>Math.min(1000*2**E,30000),...J}),i=MU(U.pathname,T,L);if(!z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(Y&&N)return console.error("[PieRoot] Error fetching UI configuration:",Y),console.error("[PieRoot] Error details:",{message:Y.message,status:Y.response?.status,data:Y.response?.data}),$?.(Y),i;if(s||!R){if(N)console.log("[PieRoot] Loading state:",{isLoading:s,hasUiConfiguration:!!R});return i}if(N)console.log("[PieRoot] UI configuration loaded successfully:",R),console.log("[PieRoot] Rendering UI with configuration");return H.jsx(IU.Provider,{value:kU,children:H.jsx(M.Provider,{value:mU,children:H.jsx(P.Provider,{value:CU,children:H.jsx(G.Provider,{value:L??H.jsx(H.Fragment,{}),children:H.jsx(FU,{children:H.jsx(GU,{children:I?H.jsx(p,{uiConfig:R}):H.jsx("form",{id:"piedata_global_form",action:z+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:H.jsx(p,{uiConfig:R})})})})})})})})},TL=(U)=>{let L=_.useMemo(()=>new q.QueryClient,[]),T=U.queryClient??L;return H.jsx(XU.Provider,{value:U.onNavigate,children:H.jsx(g.Provider,{value:U.config,children:H.jsx(O.Provider,{value:U.onError,children:H.jsx(q.QueryClientProvider,{client:T,children:H.jsx(LL,{...U})})})})})},yU=TL;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{useMemo as w}from"react";import{QueryClient as F$,QueryClientProvider as G$,useQuery as Q$}from"@tanstack/react-query";import RU from"mitt";import{createContext as MU,useCallback as b$,useContext as v$}from"react";var h=globalThis,F=(U,$)=>{let H=Symbol.for(U);if(!(H in h))h[H]=$();return h[H]};function i(){return F("@swarm.ing/pieui:mitt-emitter",()=>RU())}var AU=F("@swarm.ing/pieui:context:mitt",()=>MU(null));var k=AU;import{io as EU}from"socket.io-client";import{createContext as NU}from"react";var r=F("@swarm.ing/pieui:socket-cache",()=>new Map),a=(U)=>{let $=r.get(U);if($)return $;let H=EU(U,{autoConnect:!1,transports:["websocket"]});return r.set(U,H),H},PU=F("@swarm.ing/pieui:context:socket",()=>NU(null)),M=PU;import{createContext as jU}from"react";import{Centrifuge as t}from"centrifuge";var e=F("@swarm.ing/pieui:centrifuge-cache",()=>new Map),UU=(U,$)=>{if(!$)return null;let H=`${U}::${$}`,B=e.get(H);if(B)return B;async function J(){let Z=await fetch(U+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new t.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let I=new t($,{getToken:J});return e.set(H,I),I},wU=F("@swarm.ing/pieui:context:centrifuge",()=>jU(null)),A=wU;import{useContext as vU,useEffect as CU}from"react";import{useEffect as kU,useState as xU}from"react";var x=new Map,f=new Map;function y(U,$){let H=`${U}::${$}`,B=U?x.get(H):void 0,[J,I]=xU(B??null);return kU(()=>{if(!U)return;if(x.has(H)){I(x.get(H));return}let Z=f.get(H);if(!Z)Z=fetch(U+`api/support/${$}`,{method:"GET"}).then((Y)=>Y.json()).then((Y)=>{return x.set(H,Y),f.delete(H),Y}).catch((Y)=>{throw f.delete(H),Y}),f.set(H,Z);let D=!1;return Z.then((Y)=>{if(!D)I(Y)}).catch(()=>{}),()=>{D=!0}},[U,$,H]),J}import{createContext as fU,useContext as yU}from"react";var l=F("@swarm.ing/pieui:context:pieConfig",()=>fU(null)),b=()=>{let U=yU(l);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},p=()=>{let{apiServer:U}=b();return U},v=p,$U=()=>{let{centrifugeServer:U}=b();return U};var R=()=>{let{enableRenderingLog:U}=b();return U},HU=R,IU=()=>{let{pageProcessor:U}=b();return U};var bU=F("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function JU(){bU.resolve?.()}var SU=({children:U})=>{let $=vU(M),H=v(),B=y(H,"socketIO"),J=(I)=>{if(typeof window<"u")window.sid=I.sid,JU(),console.log(`SocketIO initialized: ${window.sid}`)};return CU(()=>{if(!$)return;let I=()=>{console.log("SocketIO connected")},Z=(D)=>{console.log(`SocketIO disconnected: ${D}`),$.connect()};if(B)$.on("pieinit",J),$.on("connect",I),$.on("disconnect",Z),$.connect();return()=>{if(B)$.off("pieinit",J),$.off("connect",I),$.off("disconnect",Z),$.disconnect()}},[$,B]),U},ZU=SU;import{useContext as mU,useEffect as gU}from"react";var cU=({children:U})=>{let $=mU(A),H=v(),B=y(H,"centrifuge");return gU(()=>{if(!$)return;let J=()=>{console.log("Centrifuge connected")},I=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(B)$.on("connected",J),$.on("disconnected",I),$.connect();return()=>{if(B)$.disconnect()}},[$,B]),U},BU=cU;import{createContext as hU}from"react";import{jsx as dU,Fragment as pU}from"react/jsx-runtime";var lU=F("@swarm.ing/pieui:context:fallback",()=>hU(dU(pU,{}))),E=lU;import{createContext as uU}from"react";var oU=F("@swarm.ing/pieui:context:lazyError",()=>uU(void 0)),N=oU;import{lazy as nU}from"react";var j=new Map;function sU(U,$){return $.catch(()=>{if(j.get(U)===$)j.delete(U)}),j.set(U,$),$}function XU(U,$){return nU(()=>{if(j.has($))return j.get($);return sU($,U().then((H)=>H))})}var YU=F("@swarm.ing/pieui:component-registry",()=>new Map),iU=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let $={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!$.component&&$.loader)$.component=XU($.loader,U.name),$.isLazy=!0;return $};function C(U){let $=iU(U);return YU.set($.name,$),$.component}var S=(U)=>{return YU.get(U)};import{useContext as zU,memo as $$}from"react";import{Component as rU,Suspense as aU}from"react";import{jsx as U$}from"react/jsx-runtime";var tU=2,eU=400;class P extends rU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<tU){let $=eU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((H)=>({failed:!1,attempt:H.attempt+1}))},$)}}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 U$(aU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as d}from"react/jsx-runtime";function H$({uiConfig:U,setUiAjaxConfiguration:$}){let H=zU(E),B=zU(N),J=R();if(J)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:",!!$);let I=S(U.card);if(!I?.component){if(J)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return H}if(J)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let Z=I.component,D=d(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:$});if(I.isLazy){if(J)console.log("[UI] Rendering lazy component with Suspense:",I.name);return d(P,{name:I.name,fallback:I.fallback?d(I.fallback,{}):H,onError:B,children:D})}if(J)console.log("[UI] Rendering component directly:",I.name);return D}var u=$$(H$);import{createAxiosDateTransformer as T$}from"axios-date-transformer";import{useEffect as I$,useState as J$}from"react";var m=({onError:U}={})=>{let[$,H]=J$(null),B=IU();return I$(()=>{if(typeof window>"u")return;let J=window.Telegram?.WebApp;if(!J)return;try{J.ready?.()}catch(I){U?.()}if(B==="telegram_expanded"&&(J.platform==="ios"||J.platform==="android"))J.expand();H(J)},[]),$},Z$=()=>{let U=m();return[U?.initDataUnsafe,U?.initData]};import{createContext as B$}from"react";var X$=F("@swarm.ing/pieui:context:navigate",()=>B$(void 0)),DU=X$;import{useContext as GU}from"react";import{createContext as Y$}from"react";var z$=F("@swarm.ing/pieui:context:uiRenderer",()=>Y$(null)),FU=z$;import{jsx as g}from"react/jsx-runtime";function QU({uiConfig:U,setUiAjaxConfiguration:$}){let H=GU(E),B=GU(N),J=R();if(J)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:",!!$);let I=S(U.card);if(!I?.component){if(J)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return H}if(J)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(J)console.log("[UILoading] Rendering fallback for:",I.name);let Y=I.fallback;return g(Y,{})}if(J)console.log("[UILoading] No fallback, rendering full component:",I.name);let Z=I.component,D=g(FU.Provider,{value:QU,children:g(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:$})});if(I.isLazy)return g(P,{name:I.name,fallback:H,onError:B,children:D});return D}var TU=QU;import{jsx as D$}from"react/jsx-runtime";function qU(U,$,H){if(!$)return H;let B=U.replace(/^\//,""),J=$[B];if(!J)return H;return D$(TU,{uiConfig:J})}import{jsx as q,Fragment as K$}from"react/jsx-runtime";var q$=({location:U,fallback:$,piecache:H,onError:B,queryOptions:J,disableGlobalForm:I})=>{let Z=p(),D=$U(),Y=R(),G=w(()=>T$({baseURL:Z}),[Z]),X=w(()=>i(),[]),W=w(()=>Z?a(Z):null,[Z]),V=w(()=>Z?UU(Z,D):null,[Z,D]),L=m({onError:B}),{data:K,isLoading:O,error:z}=Q$({queryKey:["uiConfig",U.pathname+U.search,L?.initData],enabled:!!L?.initData,queryFn:async()=>{let T=new URLSearchParams(U.search);if(T.set("__pieroot","telegram"),L?.initData)T.set("initData",L.initData);let _="/api/content"+U.pathname+"?"+T.toString();if(Y)console.log("[PieRoot] Fetching UI configuration from:",_);let s=await G.get(_,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(Y)console.log("[PieRoot] Received UI configuration:",s.data);return s.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(T)=>Math.min(1000*2**T,30000),...J}),Q=qU(U.pathname,H,$);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(z&&Y)return console.error("[PieRoot] Error fetching UI configuration:",z),console.error("[PieRoot] Error details:",{message:z.message,status:z.response?.status,data:z.response?.data}),B?.(z),Q;if(O||!K){if(Y)console.log("[PieRoot] Loading state:",{isLoading:O,hasUiConfiguration:!!K});return Q}if(Y)console.log("[PieRoot] UI configuration loaded successfully:",K),console.log("[PieRoot] Rendering UI with configuration");return q(k.Provider,{value:X,children:q(M.Provider,{value:W,children:q(A.Provider,{value:V,children:q(E.Provider,{value:$??q(K$,{}),children:q(ZU,{children:q(BU,{children:I?q(u,{uiConfig:K}):q("form",{id:"piedata_global_form",action:Z+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:q(u,{uiConfig:K})})})})})})})})},L$=(U)=>{let $=w(()=>new F$,[]),H=U.queryClient??$;return q(DU.Provider,{value:U.onNavigate,children:q(l.Provider,{value:U.config,children:q(N.Provider,{value:U.onError,children:q(G$,{client:H,children:q(q$,{...U})})})})})},O$=L$;import{useEffect as LU,useState as A$}from"react";import{useContext as o,useEffect as n,useRef as _$}from"react";import{jsx as R$,jsxs as M$,Fragment as V$}from"react/jsx-runtime";var W$=({card:U,data:$,children:H,useSocketioSupport:B=!1,useCentrifugeSupport:J=!1,useMittSupport:I=!1,centrifugeChannel:Z=void 0,methods:D=void 0,stored:Y=void 0})=>{let G=HU(),X=_$(D);if(X.current=D,G)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",$),console.log("[PieCard] Component name:",$?.name),console.log("[PieCard] Real-time support:",{socketio:B,centrifuge:J,mitt:I,centrifugeChannel:Z}),console.log("[PieCard] Methods:",D?Object.keys(D):"none"),console.log("[PieCard] Has children:",!!H);let W=o(M),V=o(A),L=o(k);if(n(()=>{if(!W||!B||!X.current||!$.name){if(G&&B)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!W,useSocketioSupport:B,hasMethods:!!X.current,hasDataName:!!$?.name});return}let O=Object.keys(X.current??{}).map((z)=>{let Q=`pie${z}_${$.name}`;if(G)console.log(`[PieCard] Socket.IO registering event: ${Q}`);let T=(_)=>{X.current?.[z]?.(_)};return W.on(Q,T),[Q,T]});return()=>{O.forEach(([z,Q])=>{if(G)console.log(`[PieCard] Socket.IO unregistering event: ${z}`);W.off(z,Q)})}},[W,$.name,B]),n(()=>{if(!V||!J||!Z||!$.name){if(G&&J)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:J,hasCentrifugeChannel:!!Z,hasMethods:!!X.current,hasDataName:!!$?.name});return}let O=Object.keys(X.current??{}).map((z)=>{let Q=`pie${z}_${$.name}_${Z}`;if(G)console.log(`[PieCard] Centrifuge subscribing to channel: ${Q}`);let T=V.newSubscription(Q);return T.on("publication",(_)=>{if(G)console.log(`[PieCard] Centrifuge received data on ${Q}:`,_.data);X.current?.[z]?.(_.data)}),T.subscribe(),T});return()=>{O.forEach((z)=>{if(G)console.log("[PieCard] Centrifuge unsubscribing from channel");z.unsubscribe(),V.removeSubscription(z)})}},[V,Z,$.name,J]),n(()=>{if(!L||!I||!$.name){if(G&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!L,useMittSupport:I,hasMethods:!!X.current,hasDataName:!!$?.name});return}let K=Object.keys(X.current??{}),O={};return K.forEach((z)=>{let Q=`pie${z}_${$.name}`,T=(_)=>{if(G)console.log(`[PieCard] Mitt registering event: ${Q}`);X.current?.[z]?.(_)};O[Q]=T,L.on(Q,T)}),()=>{Object.entries(O).forEach(([z,Q])=>{if(G)console.log(`[PieCard] Mitt unregistering event: ${z}`);L.off(z,Q)})}},[L,$.name,I]),G)console.log("[PieCard] Rendering complete, returning children");if(Y!==void 0)return M$(V$,{children:[R$("input",{type:"hidden",name:$.name,value:JSON.stringify(Y)}),H]});return H},c=W$;import{jsx as KU}from"react/jsx-runtime";var E$=({data:U})=>{let{name:$,key:H,value:B,useSocketioSupport:J,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:D}=U,[Y,G]=A$(B);return LU(()=>{G(B)},[B]),LU(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.CloudStorage;if(!X)return;X.setItem(H,Y)},[H,Y]),KU(c,{card:"CloudStorageCard",data:U,useSocketioSupport:J,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:D,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.CloudStorage;if(X)X.removeItem(H);G("")}},children:KU("input",{type:"hidden",id:$,name:$,value:Y})})},OU=E$;var N$=C({name:"CloudStorageCard",component:OU,metadata:{author:"PieData"}});import{useEffect as _U,useState as P$}from"react";import{jsx as WU}from"react/jsx-runtime";var j$=({data:U})=>{let{name:$,key:H,value:B,useSocketioSupport:J,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:D}=U,[Y,G]=P$(B);return _U(()=>{G(B)},[B]),_U(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.SecureStorage;if(!X)return;X.setItem(H,Y)},[H,Y]),WU(c,{card:"SecureStorageCard",data:U,useSocketioSupport:J,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:D,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.SecureStorage;if(X)X.removeItem(H);G("")}},children:WU("input",{type:"hidden",id:$,name:$,value:Y})})},VU=j$;var w$=C({name:"SecureStorageCard",component:VU,metadata:{author:"PieData"}});export{m as useWebApp,Z$ as useInitData,w$ as SecureStorageCard,O$ as PieTelegramRoot,N$ as CloudStorageCard};
2
+ import{useMemo as w}from"react";import{QueryClient as F$,QueryClientProvider as G$,useQuery as Q$}from"@tanstack/react-query";import RU from"mitt";import{createContext as MU,useCallback as b$,useContext as v$}from"react";var h=globalThis,F=(U,$)=>{let H=Symbol.for(U);if(!(H in h))h[H]=$();return h[H]};function i(){return F("@swarm.ing/pieui:mitt-emitter",()=>RU())}var AU=F("@swarm.ing/pieui:context:mitt",()=>MU(null));var k=AU;import{io as EU}from"socket.io-client";import{createContext as NU}from"react";var r=F("@swarm.ing/pieui:socket-cache",()=>new Map),a=(U)=>{let $=r.get(U);if($)return $;let H=EU(U,{autoConnect:!1,transports:["websocket"]});return r.set(U,H),H},PU=F("@swarm.ing/pieui:context:socket",()=>NU(null)),M=PU;import{createContext as jU}from"react";import{Centrifuge as t}from"centrifuge";var e=F("@swarm.ing/pieui:centrifuge-cache",()=>new Map),UU=(U,$)=>{if(!$)return null;let H=`${U}::${$}`,B=e.get(H);if(B)return B;async function J(){let Z=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!Z.ok){if(Z.status===401||Z.status===403)throw new t.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let I=new t($,{getToken:J});return e.set(H,I),I},wU=F("@swarm.ing/pieui:context:centrifuge",()=>jU(null)),A=wU;import{useContext as vU,useEffect as CU}from"react";import{useEffect as kU,useState as xU}from"react";var x=new Map,f=new Map;function y(U,$){let H=`${U}::${$}`,B=U?x.get(H):void 0,[J,I]=xU(B??null);return kU(()=>{if(!U)return;if(x.has(H)){I(x.get(H));return}let Z=f.get(H);if(!Z)Z=fetch(U+`api/support/${$}`,{method:"GET"}).then((Y)=>Y.json()).then((Y)=>{return x.set(H,Y),f.delete(H),Y}).catch((Y)=>{throw f.delete(H),Y}),f.set(H,Z);let D=!1;return Z.then((Y)=>{if(!D)I(Y)}).catch(()=>{}),()=>{D=!0}},[U,$,H]),J}import{createContext as fU,useContext as yU}from"react";var l=F("@swarm.ing/pieui:context:pieConfig",()=>fU(null)),b=()=>{let U=yU(l);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},p=()=>{let{apiServer:U}=b();return U},v=p,$U=()=>{let{centrifugeServer:U}=b();return U};var R=()=>{let{enableRenderingLog:U}=b();return U},HU=R,IU=()=>{let{pageProcessor:U}=b();return U};var bU=F("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function JU(){bU.resolve?.()}var SU=({children:U})=>{let $=vU(M),H=v(),B=y(H,"socketIO"),J=(I)=>{if(typeof window<"u")window.sid=I.sid,JU(),console.log(`SocketIO initialized: ${window.sid}`)};return CU(()=>{if(!$)return;let I=()=>{console.log("SocketIO connected")},Z=(D)=>{console.log(`SocketIO disconnected: ${D}`),$.connect()};if(B)$.on("pieinit",J),$.on("connect",I),$.on("disconnect",Z),$.connect();return()=>{if(B)$.off("pieinit",J),$.off("connect",I),$.off("disconnect",Z),$.disconnect()}},[$,B]),U},ZU=SU;import{useContext as mU,useEffect as gU}from"react";var cU=({children:U})=>{let $=mU(A),H=v(),B=y(H,"centrifuge");return gU(()=>{if(!$)return;let J=()=>{console.log("Centrifuge connected")},I=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(B)$.on("connected",J),$.on("disconnected",I),$.connect();return()=>{if(B)$.disconnect()}},[$,B]),U},BU=cU;import{createContext as hU}from"react";import{jsx as dU,Fragment as pU}from"react/jsx-runtime";var lU=F("@swarm.ing/pieui:context:fallback",()=>hU(dU(pU,{}))),E=lU;import{createContext as uU}from"react";var oU=F("@swarm.ing/pieui:context:lazyError",()=>uU(void 0)),N=oU;import{lazy as nU}from"react";var j=new Map;function sU(U,$){return $.catch(()=>{if(j.get(U)===$)j.delete(U)}),j.set(U,$),$}function XU(U,$){return nU(()=>{if(j.has($))return j.get($);return sU($,U().then((H)=>H))})}var YU=F("@swarm.ing/pieui:component-registry",()=>new Map),iU=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let $={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!$.component&&$.loader)$.component=XU($.loader,U.name),$.isLazy=!0;return $};function C(U){let $=iU(U);return YU.set($.name,$),$.component}var S=(U)=>{return YU.get(U)};import{useContext as zU,memo as $$}from"react";import{Component as rU,Suspense as aU}from"react";import{jsx as U$}from"react/jsx-runtime";var tU=2,eU=400;class P extends rU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<tU){let $=eU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((H)=>({failed:!1,attempt:H.attempt+1}))},$)}}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 U$(aU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as d}from"react/jsx-runtime";function H$({uiConfig:U,setUiAjaxConfiguration:$}){let H=zU(E),B=zU(N),J=R();if(J)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:",!!$);let I=S(U.card);if(!I?.component){if(J)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return H}if(J)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let Z=I.component,D=d(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:$});if(I.isLazy){if(J)console.log("[UI] Rendering lazy component with Suspense:",I.name);return d(P,{name:I.name,fallback:I.fallback?d(I.fallback,{}):H,onError:B,children:D})}if(J)console.log("[UI] Rendering component directly:",I.name);return D}var u=$$(H$);import{createAxiosDateTransformer as T$}from"axios-date-transformer";import{useEffect as I$,useState as J$}from"react";var m=({onError:U}={})=>{let[$,H]=J$(null),B=IU();return I$(()=>{if(typeof window>"u")return;let J=window.Telegram?.WebApp;if(!J)return;try{J.ready?.()}catch(I){U?.()}if(B==="telegram_expanded"&&(J.platform==="ios"||J.platform==="android"))J.expand();H(J)},[]),$},Z$=()=>{let U=m();return[U?.initDataUnsafe,U?.initData]};import{createContext as B$}from"react";var X$=F("@swarm.ing/pieui:context:navigate",()=>B$(void 0)),DU=X$;import{useContext as GU}from"react";import{createContext as Y$}from"react";var z$=F("@swarm.ing/pieui:context:uiRenderer",()=>Y$(null)),FU=z$;import{jsx as g}from"react/jsx-runtime";function QU({uiConfig:U,setUiAjaxConfiguration:$}){let H=GU(E),B=GU(N),J=R();if(J)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:",!!$);let I=S(U.card);if(!I?.component){if(J)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return H}if(J)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(J)console.log("[UILoading] Rendering fallback for:",I.name);let Y=I.fallback;return g(Y,{})}if(J)console.log("[UILoading] No fallback, rendering full component:",I.name);let Z=I.component,D=g(FU.Provider,{value:QU,children:g(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:$})});if(I.isLazy)return g(P,{name:I.name,fallback:H,onError:B,children:D});return D}var TU=QU;import{jsx as D$}from"react/jsx-runtime";function qU(U,$,H){if(!$)return H;let B=U.replace(/^\//,""),J=$[B];if(!J)return H;return D$(TU,{uiConfig:J})}import{jsx as q,Fragment as K$}from"react/jsx-runtime";var q$=({location:U,fallback:$,piecache:H,onError:B,queryOptions:J,disableGlobalForm:I})=>{let Z=p(),D=$U(),Y=R(),G=w(()=>T$({baseURL:Z}),[Z]),X=w(()=>i(),[]),W=w(()=>Z?a(Z):null,[Z]),V=w(()=>Z?UU(Z,D):null,[Z,D]),L=m({onError:B}),{data:K,isLoading:O,error:z}=Q$({queryKey:["uiConfig",U.pathname+U.search,L?.initData],enabled:!!L?.initData,queryFn:async()=>{let T=new URLSearchParams(U.search);if(T.set("__pieroot","telegram"),L?.initData)T.set("initData",L.initData);let _="/api/content"+U.pathname+"?"+T.toString();if(Y)console.log("[PieRoot] Fetching UI configuration from:",_);let s=await G.get(_,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(Y)console.log("[PieRoot] Received UI configuration:",s.data);return s.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(T)=>Math.min(1000*2**T,30000),...J}),Q=qU(U.pathname,H,$);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(z&&Y)return console.error("[PieRoot] Error fetching UI configuration:",z),console.error("[PieRoot] Error details:",{message:z.message,status:z.response?.status,data:z.response?.data}),B?.(z),Q;if(O||!K){if(Y)console.log("[PieRoot] Loading state:",{isLoading:O,hasUiConfiguration:!!K});return Q}if(Y)console.log("[PieRoot] UI configuration loaded successfully:",K),console.log("[PieRoot] Rendering UI with configuration");return q(k.Provider,{value:X,children:q(M.Provider,{value:W,children:q(A.Provider,{value:V,children:q(E.Provider,{value:$??q(K$,{}),children:q(ZU,{children:q(BU,{children:I?q(u,{uiConfig:K}):q("form",{id:"piedata_global_form",action:Z+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:q(u,{uiConfig:K})})})})})})})})},L$=(U)=>{let $=w(()=>new F$,[]),H=U.queryClient??$;return q(DU.Provider,{value:U.onNavigate,children:q(l.Provider,{value:U.config,children:q(N.Provider,{value:U.onError,children:q(G$,{client:H,children:q(q$,{...U})})})})})},O$=L$;import{useEffect as LU,useState as A$}from"react";import{useContext as o,useEffect as n,useRef as _$}from"react";import{jsx as R$,jsxs as M$,Fragment as V$}from"react/jsx-runtime";var W$=({card:U,data:$,children:H,useSocketioSupport:B=!1,useCentrifugeSupport:J=!1,useMittSupport:I=!1,centrifugeChannel:Z=void 0,methods:D=void 0,stored:Y=void 0})=>{let G=HU(),X=_$(D);if(X.current=D,G)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",$),console.log("[PieCard] Component name:",$?.name),console.log("[PieCard] Real-time support:",{socketio:B,centrifuge:J,mitt:I,centrifugeChannel:Z}),console.log("[PieCard] Methods:",D?Object.keys(D):"none"),console.log("[PieCard] Has children:",!!H);let W=o(M),V=o(A),L=o(k);if(n(()=>{if(!W||!B||!X.current||!$.name){if(G&&B)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!W,useSocketioSupport:B,hasMethods:!!X.current,hasDataName:!!$?.name});return}let O=Object.keys(X.current??{}).map((z)=>{let Q=`pie${z}_${$.name}`;if(G)console.log(`[PieCard] Socket.IO registering event: ${Q}`);let T=(_)=>{X.current?.[z]?.(_)};return W.on(Q,T),[Q,T]});return()=>{O.forEach(([z,Q])=>{if(G)console.log(`[PieCard] Socket.IO unregistering event: ${z}`);W.off(z,Q)})}},[W,$.name,B]),n(()=>{if(!V||!J||!Z||!$.name){if(G&&J)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:J,hasCentrifugeChannel:!!Z,hasMethods:!!X.current,hasDataName:!!$?.name});return}let O=Object.keys(X.current??{}).map((z)=>{let Q=`pie${z}_${$.name}_${Z}`;if(G)console.log(`[PieCard] Centrifuge subscribing to channel: ${Q}`);let T=V.newSubscription(Q);return T.on("publication",(_)=>{if(G)console.log(`[PieCard] Centrifuge received data on ${Q}:`,_.data);X.current?.[z]?.(_.data)}),T.subscribe(),T});return()=>{O.forEach((z)=>{if(G)console.log("[PieCard] Centrifuge unsubscribing from channel");z.unsubscribe(),V.removeSubscription(z)})}},[V,Z,$.name,J]),n(()=>{if(!L||!I||!$.name){if(G&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!L,useMittSupport:I,hasMethods:!!X.current,hasDataName:!!$?.name});return}let K=Object.keys(X.current??{}),O={};return K.forEach((z)=>{let Q=`pie${z}_${$.name}`,T=(_)=>{if(G)console.log(`[PieCard] Mitt registering event: ${Q}`);X.current?.[z]?.(_)};O[Q]=T,L.on(Q,T)}),()=>{Object.entries(O).forEach(([z,Q])=>{if(G)console.log(`[PieCard] Mitt unregistering event: ${z}`);L.off(z,Q)})}},[L,$.name,I]),G)console.log("[PieCard] Rendering complete, returning children");if(Y!==void 0)return M$(V$,{children:[R$("input",{type:"hidden",name:$.name,value:JSON.stringify(Y)}),H]});return H},c=W$;import{jsx as KU}from"react/jsx-runtime";var E$=({data:U})=>{let{name:$,key:H,value:B,useSocketioSupport:J,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:D}=U,[Y,G]=A$(B);return LU(()=>{G(B)},[B]),LU(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.CloudStorage;if(!X)return;X.setItem(H,Y)},[H,Y]),KU(c,{card:"CloudStorageCard",data:U,useSocketioSupport:J,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:D,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.CloudStorage;if(X)X.removeItem(H);G("")}},children:KU("input",{type:"hidden",id:$,name:$,value:Y})})},OU=E$;var N$=C({name:"CloudStorageCard",component:OU,metadata:{author:"PieData"}});import{useEffect as _U,useState as P$}from"react";import{jsx as WU}from"react/jsx-runtime";var j$=({data:U})=>{let{name:$,key:H,value:B,useSocketioSupport:J,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:D}=U,[Y,G]=P$(B);return _U(()=>{G(B)},[B]),_U(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.SecureStorage;if(!X)return;X.setItem(H,Y)},[H,Y]),WU(c,{card:"SecureStorageCard",data:U,useSocketioSupport:J,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:D,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.SecureStorage;if(X)X.removeItem(H);G("")}},children:WU("input",{type:"hidden",id:$,name:$,value:Y})})},VU=j$;var w$=C({name:"SecureStorageCard",component:VU,metadata:{author:"PieData"}});export{m as useWebApp,Z$ as useInitData,w$ as SecureStorageCard,O$ as PieTelegramRoot,N$ as CloudStorageCard};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var aU=Object.create;var{getPrototypeOf:tU,defineProperty:f,getOwnPropertyNames:QU,getOwnPropertyDescriptor:eU}=Object,TU=Object.prototype.hasOwnProperty;var U$=(U,$,H)=>{H=U!=null?aU(tU(U)):{};let J=$||!U||!U.__esModule?f(H,"default",{value:U,enumerable:!0}):H;for(let Z of QU(U))if(!TU.call(J,Z))f(J,Z,{get:()=>U[Z],enumerable:!0});return J},GU=new WeakMap,$$=(U)=>{var $=GU.get(U),H;if($)return $;if($=f({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")QU(U).map((J)=>!TU.call($,J)&&f($,J,{get:()=>U[J],enumerable:!(H=eU(U,J))||H.enumerable}));return GU.set(U,$),$};var H$=(U,$)=>{for(var H in $)f(U,H,{get:$[H],enumerable:!0,configurable:!0,set:(J)=>$[H]=()=>J})};var M$={};H$(M$,{useWebApp:()=>v,useInitData:()=>CU,SecureStorageCard:()=>rU,PieTelegramRoot:()=>oU,CloudStorageCard:()=>sU});module.exports=$$(M$);var w=require("react"),k=require("@tanstack/react-query");var qU=U$(require("mitt")),g=require("react");var IU=globalThis,F=(U,$)=>{let H=Symbol.for(U);if(!(H in IU))IU[H]=$();return IU[H]};function LU(){return F("@swarm.ing/pieui:mitt-emitter",()=>qU.default())}var I$=F("@swarm.ing/pieui:context:mitt",()=>g.createContext(null));var c=I$;var OU=require("socket.io-client"),_U=require("react");var KU=F("@swarm.ing/pieui:socket-cache",()=>new Map),WU=(U)=>{let $=KU.get(U);if($)return $;let H=OU.io(U,{autoConnect:!1,transports:["websocket"]});return KU.set(U,H),H},J$=F("@swarm.ing/pieui:context:socket",()=>_U.createContext(null)),A=J$;var RU=require("react"),JU=require("centrifuge");var VU=F("@swarm.ing/pieui:centrifuge-cache",()=>new Map),MU=(U,$)=>{if(!$)return null;let H=`${U}::${$}`,J=VU.get(H);if(J)return J;async function Z(){let B=await fetch(U+"api/centrifuge/gen_token");if(!B.ok){if(B.status===403)throw new JU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${B.status}`)}return(await B.json()).token}let I=new JU.Centrifuge($,{getToken:Z});return VU.set(H,I),I},Z$=F("@swarm.ing/pieui:context:centrifuge",()=>RU.createContext(null)),E=Z$;var s=require("react");var p=require("react"),h=new Map,l=new Map;function d(U,$){let H=`${U}::${$}`,J=U?h.get(H):void 0,[Z,I]=p.useState(J??null);return p.useEffect(()=>{if(!U)return;if(h.has(H)){I(h.get(H));return}let B=l.get(H);if(!B)B=fetch(U+`api/support/${$}`,{method:"GET"}).then((Y)=>Y.json()).then((Y)=>{return h.set(H,Y),l.delete(H),Y}).catch((Y)=>{throw l.delete(H),Y}),l.set(H,B);let D=!1;return B.then((Y)=>{if(!D)I(Y)}).catch(()=>{}),()=>{D=!0}},[U,$,H]),Z}var u=require("react");var ZU=F("@swarm.ing/pieui:context:pieConfig",()=>u.createContext(null)),o=()=>{let U=u.useContext(ZU);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},BU=()=>{let{apiServer:U}=o();return U},n=BU,AU=()=>{let{centrifugeServer:U}=o();return U};var M=()=>{let{enableRenderingLog:U}=o();return U},EU=M,NU=()=>{let{pageProcessor:U}=o();return U};var B$=F("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function PU(){B$.resolve?.()}var X$=({children:U})=>{let $=s.useContext(A),H=n(),J=d(H,"socketIO"),Z=(I)=>{if(typeof window<"u")window.sid=I.sid,PU(),console.log(`SocketIO initialized: ${window.sid}`)};return s.useEffect(()=>{if(!$)return;let I=()=>{console.log("SocketIO connected")},B=(D)=>{console.log(`SocketIO disconnected: ${D}`),$.connect()};if(J)$.on("pieinit",Z),$.on("connect",I),$.on("disconnect",B),$.connect();return()=>{if(J)$.off("pieinit",Z),$.off("connect",I),$.off("disconnect",B),$.disconnect()}},[$,J]),U},jU=X$;var i=require("react");var Y$=({children:U})=>{let $=i.useContext(E),H=n(),J=d(H,"centrifuge");return i.useEffect(()=>{if(!$)return;let Z=()=>{console.log("Centrifuge connected")},I=(B)=>{console.log("Centrifuge disconnected:",B)};if(J)$.on("connected",Z),$.on("disconnected",I),$.connect();return()=>{if(J)$.disconnect()}},[$,J]),U},wU=Y$;var kU=require("react");var r=require("react/jsx-runtime"),z$=F("@swarm.ing/pieui:context:fallback",()=>kU.createContext(r.jsx(r.Fragment,{}))),N=z$;var xU=require("react");var D$=F("@swarm.ing/pieui:context:lazyError",()=>xU.createContext(void 0)),P=D$;var fU=require("react"),y=new Map;function F$(U,$){return $.catch(()=>{if(y.get(U)===$)y.delete(U)}),y.set(U,$),$}function yU(U,$){return fU.lazy(()=>{if(y.has($))return y.get($);return F$($,U().then((H)=>H))})}var bU=F("@swarm.ing/pieui:component-registry",()=>new Map),G$=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let $={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!$.component&&$.loader)$.component=yU($.loader,U.name),$.isLazy=!0;return $};function a(U){let $=G$(U);return bU.set($.name,$),$.component}var t=(U)=>{return bU.get(U)};var b=require("react");var e=require("react"),vU=require("react/jsx-runtime"),Q$=2,T$=400;class j extends e.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<Q$){let $=T$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((H)=>({failed:!1,attempt:H.attempt+1}))},$)}}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.jsx(e.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var UU=require("react/jsx-runtime");function q$({uiConfig:U,setUiAjaxConfiguration:$}){let H=b.useContext(N),J=b.useContext(P),Z=M();if(Z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!$);let I=t(U.card);if(!I?.component){if(Z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return H}if(Z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let B=I.component,D=UU.jsx(B,{data:U.data,content:U.content,setUiAjaxConfiguration:$});if(I.isLazy){if(Z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return UU.jsx(j,{name:I.name,fallback:I.fallback?UU.jsx(I.fallback,{}):H,onError:J,children:D})}if(Z)console.log("[UI] Rendering component directly:",I.name);return D}var XU=b.memo(q$);var uU=require("axios-date-transformer");var $U=require("react");var v=({onError:U}={})=>{let[$,H]=$U.useState(null),J=NU();return $U.useEffect(()=>{if(typeof window>"u")return;let Z=window.Telegram?.WebApp;if(!Z)return;try{Z.ready?.()}catch(I){U?.()}if(J==="telegram_expanded"&&(Z.platform==="ios"||Z.platform==="android"))Z.expand();H(Z)},[]),$},CU=()=>{let U=v();return[U?.initDataUnsafe,U?.initData]};var SU=require("react");var L$=F("@swarm.ing/pieui:context:navigate",()=>SU.createContext(void 0)),mU=L$;var YU=require("react");var gU=require("react");var K$=F("@swarm.ing/pieui:context:uiRenderer",()=>gU.createContext(null)),cU=K$;var C=require("react/jsx-runtime");function hU({uiConfig:U,setUiAjaxConfiguration:$}){let H=YU.useContext(N),J=YU.useContext(P),Z=M();if(Z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!$);let I=t(U.card);if(!I?.component){if(Z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return H}if(Z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(Z)console.log("[UILoading] Rendering fallback for:",I.name);let Y=I.fallback;return C.jsx(Y,{})}if(Z)console.log("[UILoading] No fallback, rendering full component:",I.name);let B=I.component,D=C.jsx(cU.Provider,{value:hU,children:C.jsx(B,{data:U.data,content:U.content,setUiAjaxConfiguration:$})});if(I.isLazy)return C.jsx(j,{name:I.name,fallback:H,onError:J,children:D});return D}var lU=hU;var dU=require("react/jsx-runtime");function pU(U,$,H){if(!$)return H;let J=U.replace(/^\//,""),Z=$[J];if(!Z)return H;return dU.jsx(lU,{uiConfig:Z})}var T=require("react/jsx-runtime"),O$=({location:U,fallback:$,piecache:H,onError:J,queryOptions:Z,disableGlobalForm:I})=>{let B=BU(),D=AU(),Y=M(),G=w.useMemo(()=>uU.createAxiosDateTransformer({baseURL:B}),[B]),X=w.useMemo(()=>LU(),[]),V=w.useMemo(()=>B?WU(B):null,[B]),R=w.useMemo(()=>B?MU(B,D):null,[B,D]),L=v({onError:J}),{data:O,isLoading:_,error:z}=k.useQuery({queryKey:["uiConfig",U.pathname+U.search,L?.initData],enabled:!!L?.initData,queryFn:async()=>{let q=new URLSearchParams(U.search);if(q.set("__pieroot","telegram"),L?.initData)q.set("initData",L.initData);let W="/api/content"+U.pathname+"?"+q.toString();if(Y)console.log("[PieRoot] Fetching UI configuration from:",W);let FU=await G.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(Y)console.log("[PieRoot] Received UI configuration:",FU.data);return FU.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...Z}),Q=pU(U.pathname,H,$);if(!B)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(z&&Y)return console.error("[PieRoot] Error fetching UI configuration:",z),console.error("[PieRoot] Error details:",{message:z.message,status:z.response?.status,data:z.response?.data}),J?.(z),Q;if(_||!O){if(Y)console.log("[PieRoot] Loading state:",{isLoading:_,hasUiConfiguration:!!O});return Q}if(Y)console.log("[PieRoot] UI configuration loaded successfully:",O),console.log("[PieRoot] Rendering UI with configuration");return T.jsx(c.Provider,{value:X,children:T.jsx(A.Provider,{value:V,children:T.jsx(E.Provider,{value:R,children:T.jsx(N.Provider,{value:$??T.jsx(T.Fragment,{}),children:T.jsx(jU,{children:T.jsx(wU,{children:I?T.jsx(XU,{uiConfig:O}):T.jsx("form",{id:"piedata_global_form",action:B+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:T.jsx(XU,{uiConfig:O})})})})})})})})},_$=(U)=>{let $=w.useMemo(()=>new k.QueryClient,[]),H=U.queryClient??$;return T.jsx(mU.Provider,{value:U.onNavigate,children:T.jsx(ZU.Provider,{value:U.config,children:T.jsx(P.Provider,{value:U.onError,children:T.jsx(k.QueryClientProvider,{client:H,children:T.jsx(O$,{...U})})})})})},oU=_$;var S=require("react");var K=require("react");var x=require("react/jsx-runtime"),W$=({card:U,data:$,children:H,useSocketioSupport:J=!1,useCentrifugeSupport:Z=!1,useMittSupport:I=!1,centrifugeChannel:B=void 0,methods:D=void 0,stored:Y=void 0})=>{let G=EU(),X=K.useRef(D);if(X.current=D,G)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",$),console.log("[PieCard] Component name:",$?.name),console.log("[PieCard] Real-time support:",{socketio:J,centrifuge:Z,mitt:I,centrifugeChannel:B}),console.log("[PieCard] Methods:",D?Object.keys(D):"none"),console.log("[PieCard] Has children:",!!H);let V=K.useContext(A),R=K.useContext(E),L=K.useContext(c);if(K.useEffect(()=>{if(!V||!J||!X.current||!$.name){if(G&&J)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!V,useSocketioSupport:J,hasMethods:!!X.current,hasDataName:!!$?.name});return}let _=Object.keys(X.current??{}).map((z)=>{let Q=`pie${z}_${$.name}`;if(G)console.log(`[PieCard] Socket.IO registering event: ${Q}`);let q=(W)=>{X.current?.[z]?.(W)};return V.on(Q,q),[Q,q]});return()=>{_.forEach(([z,Q])=>{if(G)console.log(`[PieCard] Socket.IO unregistering event: ${z}`);V.off(z,Q)})}},[V,$.name,J]),K.useEffect(()=>{if(!R||!Z||!B||!$.name){if(G&&Z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!R,useCentrifugeSupport:Z,hasCentrifugeChannel:!!B,hasMethods:!!X.current,hasDataName:!!$?.name});return}let _=Object.keys(X.current??{}).map((z)=>{let Q=`pie${z}_${$.name}_${B}`;if(G)console.log(`[PieCard] Centrifuge subscribing to channel: ${Q}`);let q=R.newSubscription(Q);return q.on("publication",(W)=>{if(G)console.log(`[PieCard] Centrifuge received data on ${Q}:`,W.data);X.current?.[z]?.(W.data)}),q.subscribe(),q});return()=>{_.forEach((z)=>{if(G)console.log("[PieCard] Centrifuge unsubscribing from channel");z.unsubscribe(),R.removeSubscription(z)})}},[R,B,$.name,Z]),K.useEffect(()=>{if(!L||!I||!$.name){if(G&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!L,useMittSupport:I,hasMethods:!!X.current,hasDataName:!!$?.name});return}let O=Object.keys(X.current??{}),_={};return O.forEach((z)=>{let Q=`pie${z}_${$.name}`,q=(W)=>{if(G)console.log(`[PieCard] Mitt registering event: ${Q}`);X.current?.[z]?.(W)};_[Q]=q,L.on(Q,q)}),()=>{Object.entries(_).forEach(([z,Q])=>{if(G)console.log(`[PieCard] Mitt unregistering event: ${z}`);L.off(z,Q)})}},[L,$.name,I]),G)console.log("[PieCard] Rendering complete, returning children");if(Y!==void 0)return x.jsxs(x.Fragment,{children:[x.jsx("input",{type:"hidden",name:$.name,value:JSON.stringify(Y)}),H]});return H},HU=W$;var zU=require("react/jsx-runtime"),V$=({data:U})=>{let{name:$,key:H,value:J,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:B,centrifugeChannel:D}=U,[Y,G]=S.useState(J);return S.useEffect(()=>{G(J)},[J]),S.useEffect(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.CloudStorage;if(!X)return;X.setItem(H,Y)},[H,Y]),zU.jsx(HU,{card:"CloudStorageCard",data:U,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:B,centrifugeChannel:D,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.CloudStorage;if(X)X.removeItem(H);G("")}},children:zU.jsx("input",{type:"hidden",id:$,name:$,value:Y})})},nU=V$;var sU=a({name:"CloudStorageCard",component:nU,metadata:{author:"PieData"}});var m=require("react");var DU=require("react/jsx-runtime"),R$=({data:U})=>{let{name:$,key:H,value:J,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:B,centrifugeChannel:D}=U,[Y,G]=m.useState(J);return m.useEffect(()=>{G(J)},[J]),m.useEffect(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.SecureStorage;if(!X)return;X.setItem(H,Y)},[H,Y]),DU.jsx(HU,{card:"SecureStorageCard",data:U,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:B,centrifugeChannel:D,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.SecureStorage;if(X)X.removeItem(H);G("")}},children:DU.jsx("input",{type:"hidden",id:$,name:$,value:Y})})},iU=R$;var rU=a({name:"SecureStorageCard",component:iU,metadata:{author:"PieData"}});
2
+ var aU=Object.create;var{getPrototypeOf:tU,defineProperty:f,getOwnPropertyNames:QU,getOwnPropertyDescriptor:eU}=Object,TU=Object.prototype.hasOwnProperty;var U$=(U,$,H)=>{H=U!=null?aU(tU(U)):{};let J=$||!U||!U.__esModule?f(H,"default",{value:U,enumerable:!0}):H;for(let Z of QU(U))if(!TU.call(J,Z))f(J,Z,{get:()=>U[Z],enumerable:!0});return J},GU=new WeakMap,$$=(U)=>{var $=GU.get(U),H;if($)return $;if($=f({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")QU(U).map((J)=>!TU.call($,J)&&f($,J,{get:()=>U[J],enumerable:!(H=eU(U,J))||H.enumerable}));return GU.set(U,$),$};var H$=(U,$)=>{for(var H in $)f(U,H,{get:$[H],enumerable:!0,configurable:!0,set:(J)=>$[H]=()=>J})};var M$={};H$(M$,{useWebApp:()=>v,useInitData:()=>CU,SecureStorageCard:()=>rU,PieTelegramRoot:()=>oU,CloudStorageCard:()=>sU});module.exports=$$(M$);var w=require("react"),k=require("@tanstack/react-query");var qU=U$(require("mitt")),g=require("react");var IU=globalThis,F=(U,$)=>{let H=Symbol.for(U);if(!(H in IU))IU[H]=$();return IU[H]};function LU(){return F("@swarm.ing/pieui:mitt-emitter",()=>qU.default())}var I$=F("@swarm.ing/pieui:context:mitt",()=>g.createContext(null));var c=I$;var OU=require("socket.io-client"),_U=require("react");var KU=F("@swarm.ing/pieui:socket-cache",()=>new Map),WU=(U)=>{let $=KU.get(U);if($)return $;let H=OU.io(U,{autoConnect:!1,transports:["websocket"]});return KU.set(U,H),H},J$=F("@swarm.ing/pieui:context:socket",()=>_U.createContext(null)),A=J$;var RU=require("react"),JU=require("centrifuge");var VU=F("@swarm.ing/pieui:centrifuge-cache",()=>new Map),MU=(U,$)=>{if(!$)return null;let H=`${U}::${$}`,J=VU.get(H);if(J)return J;async function Z(){let B=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!B.ok){if(B.status===401||B.status===403)throw new JU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${B.status}`)}return(await B.json()).token}let I=new JU.Centrifuge($,{getToken:Z});return VU.set(H,I),I},Z$=F("@swarm.ing/pieui:context:centrifuge",()=>RU.createContext(null)),E=Z$;var s=require("react");var p=require("react"),h=new Map,l=new Map;function d(U,$){let H=`${U}::${$}`,J=U?h.get(H):void 0,[Z,I]=p.useState(J??null);return p.useEffect(()=>{if(!U)return;if(h.has(H)){I(h.get(H));return}let B=l.get(H);if(!B)B=fetch(U+`api/support/${$}`,{method:"GET"}).then((Y)=>Y.json()).then((Y)=>{return h.set(H,Y),l.delete(H),Y}).catch((Y)=>{throw l.delete(H),Y}),l.set(H,B);let D=!1;return B.then((Y)=>{if(!D)I(Y)}).catch(()=>{}),()=>{D=!0}},[U,$,H]),Z}var u=require("react");var ZU=F("@swarm.ing/pieui:context:pieConfig",()=>u.createContext(null)),o=()=>{let U=u.useContext(ZU);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},BU=()=>{let{apiServer:U}=o();return U},n=BU,AU=()=>{let{centrifugeServer:U}=o();return U};var M=()=>{let{enableRenderingLog:U}=o();return U},EU=M,NU=()=>{let{pageProcessor:U}=o();return U};var B$=F("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function PU(){B$.resolve?.()}var X$=({children:U})=>{let $=s.useContext(A),H=n(),J=d(H,"socketIO"),Z=(I)=>{if(typeof window<"u")window.sid=I.sid,PU(),console.log(`SocketIO initialized: ${window.sid}`)};return s.useEffect(()=>{if(!$)return;let I=()=>{console.log("SocketIO connected")},B=(D)=>{console.log(`SocketIO disconnected: ${D}`),$.connect()};if(J)$.on("pieinit",Z),$.on("connect",I),$.on("disconnect",B),$.connect();return()=>{if(J)$.off("pieinit",Z),$.off("connect",I),$.off("disconnect",B),$.disconnect()}},[$,J]),U},jU=X$;var i=require("react");var Y$=({children:U})=>{let $=i.useContext(E),H=n(),J=d(H,"centrifuge");return i.useEffect(()=>{if(!$)return;let Z=()=>{console.log("Centrifuge connected")},I=(B)=>{console.log("Centrifuge disconnected:",B)};if(J)$.on("connected",Z),$.on("disconnected",I),$.connect();return()=>{if(J)$.disconnect()}},[$,J]),U},wU=Y$;var kU=require("react");var r=require("react/jsx-runtime"),z$=F("@swarm.ing/pieui:context:fallback",()=>kU.createContext(r.jsx(r.Fragment,{}))),N=z$;var xU=require("react");var D$=F("@swarm.ing/pieui:context:lazyError",()=>xU.createContext(void 0)),P=D$;var fU=require("react"),y=new Map;function F$(U,$){return $.catch(()=>{if(y.get(U)===$)y.delete(U)}),y.set(U,$),$}function yU(U,$){return fU.lazy(()=>{if(y.has($))return y.get($);return F$($,U().then((H)=>H))})}var bU=F("@swarm.ing/pieui:component-registry",()=>new Map),G$=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let $={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!$.component&&$.loader)$.component=yU($.loader,U.name),$.isLazy=!0;return $};function a(U){let $=G$(U);return bU.set($.name,$),$.component}var t=(U)=>{return bU.get(U)};var b=require("react");var e=require("react"),vU=require("react/jsx-runtime"),Q$=2,T$=400;class j extends e.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<Q$){let $=T$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((H)=>({failed:!1,attempt:H.attempt+1}))},$)}}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.jsx(e.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var UU=require("react/jsx-runtime");function q$({uiConfig:U,setUiAjaxConfiguration:$}){let H=b.useContext(N),J=b.useContext(P),Z=M();if(Z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!$);let I=t(U.card);if(!I?.component){if(Z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return H}if(Z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let B=I.component,D=UU.jsx(B,{data:U.data,content:U.content,setUiAjaxConfiguration:$});if(I.isLazy){if(Z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return UU.jsx(j,{name:I.name,fallback:I.fallback?UU.jsx(I.fallback,{}):H,onError:J,children:D})}if(Z)console.log("[UI] Rendering component directly:",I.name);return D}var XU=b.memo(q$);var uU=require("axios-date-transformer");var $U=require("react");var v=({onError:U}={})=>{let[$,H]=$U.useState(null),J=NU();return $U.useEffect(()=>{if(typeof window>"u")return;let Z=window.Telegram?.WebApp;if(!Z)return;try{Z.ready?.()}catch(I){U?.()}if(J==="telegram_expanded"&&(Z.platform==="ios"||Z.platform==="android"))Z.expand();H(Z)},[]),$},CU=()=>{let U=v();return[U?.initDataUnsafe,U?.initData]};var SU=require("react");var L$=F("@swarm.ing/pieui:context:navigate",()=>SU.createContext(void 0)),mU=L$;var YU=require("react");var gU=require("react");var K$=F("@swarm.ing/pieui:context:uiRenderer",()=>gU.createContext(null)),cU=K$;var C=require("react/jsx-runtime");function hU({uiConfig:U,setUiAjaxConfiguration:$}){let H=YU.useContext(N),J=YU.useContext(P),Z=M();if(Z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!$);let I=t(U.card);if(!I?.component){if(Z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return H}if(Z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(Z)console.log("[UILoading] Rendering fallback for:",I.name);let Y=I.fallback;return C.jsx(Y,{})}if(Z)console.log("[UILoading] No fallback, rendering full component:",I.name);let B=I.component,D=C.jsx(cU.Provider,{value:hU,children:C.jsx(B,{data:U.data,content:U.content,setUiAjaxConfiguration:$})});if(I.isLazy)return C.jsx(j,{name:I.name,fallback:H,onError:J,children:D});return D}var lU=hU;var dU=require("react/jsx-runtime");function pU(U,$,H){if(!$)return H;let J=U.replace(/^\//,""),Z=$[J];if(!Z)return H;return dU.jsx(lU,{uiConfig:Z})}var T=require("react/jsx-runtime"),O$=({location:U,fallback:$,piecache:H,onError:J,queryOptions:Z,disableGlobalForm:I})=>{let B=BU(),D=AU(),Y=M(),G=w.useMemo(()=>uU.createAxiosDateTransformer({baseURL:B}),[B]),X=w.useMemo(()=>LU(),[]),V=w.useMemo(()=>B?WU(B):null,[B]),R=w.useMemo(()=>B?MU(B,D):null,[B,D]),L=v({onError:J}),{data:O,isLoading:_,error:z}=k.useQuery({queryKey:["uiConfig",U.pathname+U.search,L?.initData],enabled:!!L?.initData,queryFn:async()=>{let q=new URLSearchParams(U.search);if(q.set("__pieroot","telegram"),L?.initData)q.set("initData",L.initData);let W="/api/content"+U.pathname+"?"+q.toString();if(Y)console.log("[PieRoot] Fetching UI configuration from:",W);let FU=await G.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(Y)console.log("[PieRoot] Received UI configuration:",FU.data);return FU.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...Z}),Q=pU(U.pathname,H,$);if(!B)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(z&&Y)return console.error("[PieRoot] Error fetching UI configuration:",z),console.error("[PieRoot] Error details:",{message:z.message,status:z.response?.status,data:z.response?.data}),J?.(z),Q;if(_||!O){if(Y)console.log("[PieRoot] Loading state:",{isLoading:_,hasUiConfiguration:!!O});return Q}if(Y)console.log("[PieRoot] UI configuration loaded successfully:",O),console.log("[PieRoot] Rendering UI with configuration");return T.jsx(c.Provider,{value:X,children:T.jsx(A.Provider,{value:V,children:T.jsx(E.Provider,{value:R,children:T.jsx(N.Provider,{value:$??T.jsx(T.Fragment,{}),children:T.jsx(jU,{children:T.jsx(wU,{children:I?T.jsx(XU,{uiConfig:O}):T.jsx("form",{id:"piedata_global_form",action:B+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:T.jsx(XU,{uiConfig:O})})})})})})})})},_$=(U)=>{let $=w.useMemo(()=>new k.QueryClient,[]),H=U.queryClient??$;return T.jsx(mU.Provider,{value:U.onNavigate,children:T.jsx(ZU.Provider,{value:U.config,children:T.jsx(P.Provider,{value:U.onError,children:T.jsx(k.QueryClientProvider,{client:H,children:T.jsx(O$,{...U})})})})})},oU=_$;var S=require("react");var K=require("react");var x=require("react/jsx-runtime"),W$=({card:U,data:$,children:H,useSocketioSupport:J=!1,useCentrifugeSupport:Z=!1,useMittSupport:I=!1,centrifugeChannel:B=void 0,methods:D=void 0,stored:Y=void 0})=>{let G=EU(),X=K.useRef(D);if(X.current=D,G)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",$),console.log("[PieCard] Component name:",$?.name),console.log("[PieCard] Real-time support:",{socketio:J,centrifuge:Z,mitt:I,centrifugeChannel:B}),console.log("[PieCard] Methods:",D?Object.keys(D):"none"),console.log("[PieCard] Has children:",!!H);let V=K.useContext(A),R=K.useContext(E),L=K.useContext(c);if(K.useEffect(()=>{if(!V||!J||!X.current||!$.name){if(G&&J)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!V,useSocketioSupport:J,hasMethods:!!X.current,hasDataName:!!$?.name});return}let _=Object.keys(X.current??{}).map((z)=>{let Q=`pie${z}_${$.name}`;if(G)console.log(`[PieCard] Socket.IO registering event: ${Q}`);let q=(W)=>{X.current?.[z]?.(W)};return V.on(Q,q),[Q,q]});return()=>{_.forEach(([z,Q])=>{if(G)console.log(`[PieCard] Socket.IO unregistering event: ${z}`);V.off(z,Q)})}},[V,$.name,J]),K.useEffect(()=>{if(!R||!Z||!B||!$.name){if(G&&Z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!R,useCentrifugeSupport:Z,hasCentrifugeChannel:!!B,hasMethods:!!X.current,hasDataName:!!$?.name});return}let _=Object.keys(X.current??{}).map((z)=>{let Q=`pie${z}_${$.name}_${B}`;if(G)console.log(`[PieCard] Centrifuge subscribing to channel: ${Q}`);let q=R.newSubscription(Q);return q.on("publication",(W)=>{if(G)console.log(`[PieCard] Centrifuge received data on ${Q}:`,W.data);X.current?.[z]?.(W.data)}),q.subscribe(),q});return()=>{_.forEach((z)=>{if(G)console.log("[PieCard] Centrifuge unsubscribing from channel");z.unsubscribe(),R.removeSubscription(z)})}},[R,B,$.name,Z]),K.useEffect(()=>{if(!L||!I||!$.name){if(G&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!L,useMittSupport:I,hasMethods:!!X.current,hasDataName:!!$?.name});return}let O=Object.keys(X.current??{}),_={};return O.forEach((z)=>{let Q=`pie${z}_${$.name}`,q=(W)=>{if(G)console.log(`[PieCard] Mitt registering event: ${Q}`);X.current?.[z]?.(W)};_[Q]=q,L.on(Q,q)}),()=>{Object.entries(_).forEach(([z,Q])=>{if(G)console.log(`[PieCard] Mitt unregistering event: ${z}`);L.off(z,Q)})}},[L,$.name,I]),G)console.log("[PieCard] Rendering complete, returning children");if(Y!==void 0)return x.jsxs(x.Fragment,{children:[x.jsx("input",{type:"hidden",name:$.name,value:JSON.stringify(Y)}),H]});return H},HU=W$;var zU=require("react/jsx-runtime"),V$=({data:U})=>{let{name:$,key:H,value:J,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:B,centrifugeChannel:D}=U,[Y,G]=S.useState(J);return S.useEffect(()=>{G(J)},[J]),S.useEffect(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.CloudStorage;if(!X)return;X.setItem(H,Y)},[H,Y]),zU.jsx(HU,{card:"CloudStorageCard",data:U,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:B,centrifugeChannel:D,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.CloudStorage;if(X)X.removeItem(H);G("")}},children:zU.jsx("input",{type:"hidden",id:$,name:$,value:Y})})},nU=V$;var sU=a({name:"CloudStorageCard",component:nU,metadata:{author:"PieData"}});var m=require("react");var DU=require("react/jsx-runtime"),R$=({data:U})=>{let{name:$,key:H,value:J,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:B,centrifugeChannel:D}=U,[Y,G]=m.useState(J);return m.useEffect(()=>{G(J)},[J]),m.useEffect(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.SecureStorage;if(!X)return;X.setItem(H,Y)},[H,Y]),DU.jsx(HU,{card:"SecureStorageCard",data:U,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:B,centrifugeChannel:D,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.SecureStorage;if(X)X.removeItem(H);G("")}},children:DU.jsx("input",{type:"hidden",id:$,name:$,value:Y})})},iU=R$;var rU=a({name:"SecureStorageCard",component:iU,metadata:{author:"PieData"}});
@@ -1 +1 @@
1
- {"version":3,"file":"centrifuge.d.ts","sourceRoot":"","sources":["../../src/util/centrifuge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAQvC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,GACtB,WAAW,MAAM,EACjB,mBAAmB,MAAM,KAC1B,UAAU,GAAG,IAwBf,CAAA;AAED;;;;GAIG;AACH,QAAA,MAAM,mBAAmB,4CAGxB,CAAA;AACD,eAAe,mBAAmB,CAAA"}
1
+ {"version":3,"file":"centrifuge.d.ts","sourceRoot":"","sources":["../../src/util/centrifuge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAQvC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,GACtB,WAAW,MAAM,EACjB,mBAAmB,MAAM,KAC1B,UAAU,GAAG,IAgCf,CAAA;AAED;;;;GAIG;AACH,QAAA,MAAM,mBAAmB,4CAGxB,CAAA;AACD,eAAe,mBAAmB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swarm.ing/pieui",
3
- "version": "2.1.3",
3
+ "version": "2.1.4",
4
4
  "description": "A React component library featuring PieCard component",
5
5
  "repository": {
6
6
  "type": "git",