@swarm.ing/pieui 2.1.5 → 2.1.6

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.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- var xH=Object.create;var{getPrototypeOf:yH,defineProperty:ZU,getOwnPropertyNames:GZ,getOwnPropertyDescriptor:kH}=Object,IZ=Object.prototype.hasOwnProperty;var XZ=(U,Z,H)=>{H=U!=null?xH(yH(U)):{};let $=Z||!U||!U.__esModule?ZU(H,"default",{value:U,enumerable:!0}):H;for(let J of GZ(U))if(!IZ.call($,J))ZU($,J,{get:()=>U[J],enumerable:!0});return $},TZ=new WeakMap,SH=(U)=>{var Z=TZ.get(U),H;if(Z)return Z;if(Z=ZU({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")GZ(U).map(($)=>!IZ.call(Z,$)&&ZU(Z,$,{get:()=>U[$],enumerable:!(H=kH(U,$))||H.enumerable}));return TZ.set(U,Z),Z};var bH=(U,Z)=>{for(var H in Z)ZU(U,H,{get:Z[H],enumerable:!0,configurable:!0,set:($)=>Z[H]=()=>$})};var E$={};bH(E$,{usePieEmit:()=>_Z,useAjaxSubmit:()=>PH,unregisterComponent:()=>RZ,trackLazy:()=>FU,submitGlobalForm:()=>wH,registry:()=>x,registerPieComponent:()=>F,registerMultipleComponents:()=>MZ,readAjaxKeyAsync:()=>zZ,readAjaxKey:()=>$Z,preloadComponent:()=>lU,prefetchLazyComponents:()=>jZ,pieName:()=>NH,parseDepName:()=>YU,hasComponent:()=>LZ,getRegistrySize:()=>EZ,getRegistryEntry:()=>s,getLazyComponentNames:()=>oU,getEmitter:()=>c,getComponentMeta:()=>wZ,getAllRegisteredComponents:()=>NZ,cn:()=>LH,UnionCard:()=>pZ,UIRendererContext:()=>f,UILoading:()=>MU,UI:()=>N,SocketIOContext:()=>k,SessionStorageCard:()=>eZ,SequenceCard:()=>vZ,PieRoot:()=>hU,PiePreviewRoot:()=>KH,PieConfigContext:()=>g,PieCard:()=>P,PieBaseRoot:()=>_H,PIEBREAK:()=>DU,OneOfCard:()=>IH,MittContext:()=>S,IOEventsCard:()=>tZ,HiddenCard:()=>lZ,HTMLEmbedCard:()=>dZ,FallbackContext:()=>j,DeviceStorageCard:()=>ZH,CentrifugeIOContext:()=>y,BoxCard:()=>JH,AutoRedirectCard:()=>nZ,AjaxGroupCard:()=>$H});module.exports=SH(E$);var b=require("react");var OU=require("react");var uU=globalThis,K=(U,Z)=>{let H=Symbol.for(U);if(!(H in uU))uU[H]=Z();return uU[H]};var g=K("@swarm.ing/pieui:context:pieConfig",()=>OU.createContext(null)),HU=()=>{let U=OU.useContext(g);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},$U=()=>{let{apiServer:U}=HU();return U},QU=$U,WU=()=>{let{centrifugeServer:U}=HU();return U};var m=()=>{let{enableRenderingLog:U}=HU();return U},YZ=m;var DU="__piedemo__";var qZ=require("react"),dU=require("centrifuge");var BZ=K("@swarm.ing/pieui:centrifuge-cache",()=>new Map),VU=(U,Z)=>{if(!Z)return null;let H=`${U}::${Z}`,$=BZ.get(H);if($)return $;async function J(){let T=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!T.ok){if(T.status===401||T.status===403)throw new dU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${T.status}`)}return(await T.json()).token}let z=new dU.Centrifuge(Z,{getToken:J});return BZ.set(H,z),z},vH=K("@swarm.ing/pieui:context:centrifuge",()=>qZ.createContext(null)),y=vH;var QZ=require("socket.io-client"),WZ=require("react");var OZ=K("@swarm.ing/pieui:socket-cache",()=>new Map),_U=(U)=>{let Z=OZ.get(U);if(Z)return Z;let H=QZ.io(U,{autoConnect:!1,transports:["websocket"]});return OZ.set(U,H),H},mH=K("@swarm.ing/pieui:context:socket",()=>WZ.createContext(null)),k=mH;var DZ=XZ(require("mitt")),l=require("react");function c(){return K("@swarm.ing/pieui:mitt-emitter",()=>DZ.default())}var VZ=K("@swarm.ing/pieui:context:mitt",()=>l.createContext(null));function _Z(U){let Z=l.useContext(VZ);return l.useCallback((H,$)=>{(Z??c()).emit(`pie${H}_${U}`,$)},[U,Z])}var S=VZ;var i=require("react/jsx-runtime"),hH=({card:U,data:Z,children:H,useSocketioSupport:$=!1,useCentrifugeSupport:J=!1,useMittSupport:z=!1,centrifugeChannel:T=void 0,methods:I=void 0,stored:G=void 0})=>{let X=YZ(),D=b.useRef(I);if(D.current=I,X)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:$,centrifuge:J,mitt:z,centrifugeChannel:T}),console.log("[PieCard] Methods:",I?Object.keys(I):"none"),console.log("[PieCard] Has children:",!!H);let Q=b.useContext(k),V=b.useContext(y),Y=b.useContext(S);if(b.useEffect(()=>{if(!Q||!$||!D.current||!Z.name){if(X&&$)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!Q,useSocketioSupport:$,hasMethods:!!D.current,hasDataName:!!Z?.name});return}let W=Object.keys(D.current??{}).map((B)=>{let O=`pie${B}_${Z.name}`;if(X)console.log(`[PieCard] Socket.IO registering event: ${O}`);let A=(_)=>{D.current?.[B]?.(_)};return Q.on(O,A),[O,A]});return()=>{W.forEach(([B,O])=>{if(X)console.log(`[PieCard] Socket.IO unregistering event: ${B}`);Q.off(B,O)})}},[Q,Z.name,$]),b.useEffect(()=>{if(!V||!J||!T||!Z.name){if(X&&J)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:J,hasCentrifugeChannel:!!T,hasMethods:!!D.current,hasDataName:!!Z?.name});return}let W=Object.keys(D.current??{}).map((B)=>{let O=`pie${B}_${Z.name}_${T}`;if(X)console.log(`[PieCard] Centrifuge subscribing to channel: ${O}`);let A=V.newSubscription(O);return A.on("publication",(_)=>{if(X)console.log(`[PieCard] Centrifuge received data on ${O}:`,_.data);D.current?.[B]?.(_.data)}),A.subscribe(),A});return()=>{W.forEach((B)=>{if(X)console.log("[PieCard] Centrifuge unsubscribing from channel");B.unsubscribe(),V.removeSubscription(B)})}},[V,T,Z.name,J]),b.useEffect(()=>{if(!Y||!z||!Z.name){if(X&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!Y,useMittSupport:z,hasMethods:!!D.current,hasDataName:!!Z?.name});return}let q=Object.keys(D.current??{}),W={};return q.forEach((B)=>{let O=`pie${B}_${Z.name}`,A=(_)=>{if(X)console.log(`[PieCard] Mitt registering event: ${O}`);D.current?.[B]?.(_)};W[O]=A,Y.on(O,A)}),()=>{Object.entries(W).forEach(([B,O])=>{if(X)console.log(`[PieCard] Mitt unregistering event: ${B}`);Y.off(B,O)})}},[Y,Z.name,z]),X)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return i.jsxs(i.Fragment,{children:[i.jsx("input",{type:"hidden",name:Z.name,value:JSON.stringify(G)}),H]});return H},P=hH;var FZ=require("react"),u=new Map;function KZ(U,Z){return Z.catch(()=>{if(u.get(U)===Z)u.delete(U)}),u.set(U,Z),Z}function FU(U,Z){return FZ.lazy(()=>{if(u.has(Z))return u.get(Z);return KZ(Z,U().then((H)=>H))})}var AZ=async(U,Z)=>{if(!Z)return;if(u.has(U))return u.get(U);return KZ(U,Z().then((H)=>H))};var x=K("@swarm.ing/pieui:component-registry",()=>new Map),pH=(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 Z={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!Z.component&&Z.loader)Z.component=FU(Z.loader,U.name),Z.isLazy=!0;return Z};function F(U){let Z=pH(U);return x.set(Z.name,Z),Z.component}var MZ=(U)=>{U.forEach((Z)=>F(Z))},RZ=(U)=>{x.delete(U)},LZ=(U)=>{return x.has(U)},wZ=(U)=>{return x.get(U)?.metadata},s=(U)=>{return x.get(U)},NZ=()=>{return Array.from(x.keys())},EZ=()=>{return x.size},oU=()=>Array.from(x.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),lU=(U)=>{let Z=x.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return AZ(U,Z.loader)},PZ=!1,jZ=()=>{if(PZ||typeof window>"u")return;PZ=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=oU(),H="requestIdleCallback"in window?(J)=>window.requestIdleCallback(J,{timeout:2000}):(J)=>window.setTimeout(J,300),$=(J)=>{if(J>=Z.length)return;H(()=>{Promise.resolve().then(()=>lU(Z[J])).catch(()=>{}).finally(()=>$(J+1))})};$(0)};var zU=require("react");var fZ=require("react");var KU=require("react/jsx-runtime"),gH=K("@swarm.ing/pieui:context:fallback",()=>fZ.createContext(KU.jsx(KU.Fragment,{}))),j=gH;var CZ=require("react");var cH=K("@swarm.ing/pieui:context:lazyError",()=>CZ.createContext(void 0)),h=cH;var AU=require("react"),xZ=require("react/jsx-runtime"),uH=2,dH=400;class n extends AU.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<uH){let Z=dH*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((H)=>({failed:!1,attempt:H.attempt+1}))},Z)}}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 xZ.jsx(AU.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var PU=require("react/jsx-runtime");function oH({uiConfig:U,setUiAjaxConfiguration:Z}){let H=zU.useContext(j),$=zU.useContext(h),J=m();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:",!!Z);let z=s(U.card);if(!z?.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:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let T=z.component,I=PU.jsx(T,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(z.isLazy){if(J)console.log("[UI] Rendering lazy component with Suspense:",z.name);return PU.jsx(n,{name:z.name,fallback:z.fallback?PU.jsx(z.fallback,{}):H,onError:$,children:I})}if(J)console.log("[UI] Rendering component directly:",z.name);return I}var N=zU.memo(oH);var iU=require("react");var yZ=require("react");var lH=K("@swarm.ing/pieui:context:uiRenderer",()=>yZ.createContext(null)),f=lH;var JU=require("react/jsx-runtime");function kZ({uiConfig:U,setUiAjaxConfiguration:Z}){let H=iU.useContext(j),$=iU.useContext(h),J=m();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:",!!Z);let z=s(U.card);if(!z?.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:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata,hasFallback:!!z.fallback});if(z.fallback){if(J)console.log("[UILoading] Rendering fallback for:",z.name);let G=z.fallback;return JU.jsx(G,{})}if(J)console.log("[UILoading] No fallback, rendering full component:",z.name);let T=z.component,I=JU.jsx(f.Provider,{value:kZ,children:JU.jsx(T,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(z.isLazy)return JU.jsx(n,{name:z.name,fallback:H,onError:$,children:I});return I}var MU=kZ;var SZ=require("react");var RU=require("react/jsx-runtime"),iH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:J}=U,z=SZ.useContext(f)??N;return RU.jsx(P,{card:$,data:U,children:RU.jsx("div",{style:J,id:$,children:Z.map((T,I)=>{return RU.jsx(z,{uiConfig:T,setUiAjaxConfiguration:H},`children-${I}`)})})})},bZ=iH;var vZ=F({name:"SequenceCard",component:bZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var mZ=require("react");var sU=require("react/jsx-runtime"),sH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$}=U,J=mZ.useContext(f)??N;return sU.jsx(P,{card:$,data:U,children:Z.map((z,T)=>{return sU.jsx(J,{uiConfig:z,setUiAjaxConfiguration:H},`children-${T}`)})})},hZ=sH;var pZ=F({name:"UnionCard",component:hZ,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var LU=require("react"),gZ=XZ(require("html-react-parser"));var C=require("react");function nH(){let U=new AudioContext,Z=U.createOscillator(),H=Z.connect(U.createMediaStreamDestination());Z.start();let $=H.stream.getAudioTracks()[0];return $.enabled=!1,$}function nU(U=null,Z){let[H,$]=C.useState(!1),J=C.useRef(null),z=C.useRef(null),T=C.useRef(null),I=C.useCallback(async(Q,V=!0)=>{if(J.current)G();let Y=new RTCPeerConnection;if(Y.onconnectionstatechange=()=>{if(Y.connectionState==="connected")$(!0);else if(["disconnected","failed","closed"].includes(Y.connectionState))$(!1)},Y.ontrack=(M)=>{if(U)U.srcObject=M.streams[0]},V){let M=await navigator.mediaDevices.getUserMedia({audio:!0});Y.addTrack(M.getTracks()[0],M)}else{let M=nH();Y.addTrack(M)}let q=Y.createDataChannel("oai-events");z.current=q,T.current=new Promise((M)=>{q.addEventListener("open",()=>{M()})});let W=await Y.createOffer();await Y.setLocalDescription(W);let _=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 Y.setRemoteDescription({type:"answer",sdp:_}),J.current=Y,await T.current},[U]),G=C.useCallback(()=>{let Q=z.current;if(Q)Q.close();J.current?.getSenders()?.forEach((V)=>V.track?.stop()),J.current?.close(),$(!1),J.current=null,z.current=null,T.current=null},[U]),X=C.useCallback((Q)=>{let V=z.current;if(!V){console.error("Data channel is not ready",Q);return}let Y=new Date().toLocaleTimeString();if(Q.event_id=Q.event_id||crypto.randomUUID(),V.send(JSON.stringify(Q)),!Q.timestamp)Q.timestamp=Y;Z?.(Q)},[Z,U]),D=C.useCallback((Q)=>{if(!z.current){console.error("Data channel is not ready");return}let Y=()=>{X({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Q}]}}),X({type:"response.create"})};if(T.current)T.current.then(Y);else Y()},[Z,U]);return C.useEffect(()=>{let Q=z.current;if(!Q)return;let V=(Y)=>{let q=JSON.parse(Y.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();Z?.(q)};return Q.addEventListener("message",V),()=>{Q.removeEventListener("message",V)}},[Z,U]),{isSessionActive:H,startSession:I,stopSession:G,sendTextMessage:D}}var uZ=require("react/jsx-runtime"),rH=({data:U})=>{let{html:Z,useSocketioSupport:H,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:z}=U,[T,I]=LU.useState(Z),{isSessionActive:G,startSession:X,sendTextMessage:D}=nU(null,(q)=>{if(console.log(q.type,q.type==="response.output_text.delta"&&q.delta),q.type==="response.output_text.delta"&&q.delta)I((W)=>W+q.delta)});return LU.useEffect(()=>{I(Z)},[Z]),uZ.jsx(P,{card:"HTMLEmbedCard",data:U,methods:{update:(q)=>{I(q.value)},generateUsingAI:async(q)=>{try{if(!G&&q.token)await X(q.token,!1);D(q.prompt)}catch(W){console.error("Failed to generate using AI",W)}},initializeAI:async(q)=>{if(!G&&q.token)await X(q.token,!1)}},useCentrifugeSupport:$,useSocketioSupport:H,useMittSupport:J,centrifugeChannel:z,children:gZ.default(T)})},cZ=rH;var dZ=F({name:"HTMLEmbedCard",component:cZ,metadata:{author:"Swarm.ing"}});var wU=require("react");var rU=require("react/jsx-runtime"),tH=({data:U})=>{let{name:Z,value:H,useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:z,centrifugeChannel:T}=U,[I,G]=wU.useState(H);return wU.useEffect(()=>{G(H)},[H]),rU.jsx(P,{card:"HiddenCard",data:U,useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)}},children:rU.jsx("input",{type:"hidden",id:Z,name:Z,value:I})})},oZ=tH;var lZ=F({name:"HiddenCard",component:oZ,metadata:{author:"Swarm.ing"}});var TU=require("react");var iZ=require("react");var aH=K("@swarm.ing/pieui:context:navigate",()=>iZ.createContext(void 0)),v=aH;var NU=require("react/jsx-runtime"),eH=({data:U})=>{let{url:Z}=U,H=TU.useContext(v),$=TU.useContext(j);return TU.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else H?.(Z)},[Z,H]),NU.jsx(NU.Fragment,{children:$})},sZ=eH;var nZ=F({name:"AutoRedirectCard",component:sZ,metadata:{author:"Swarm.ing"}});var p=require("react-toastify"),EU=require("react-toastify");var t=require("react");var r=require("react/jsx-runtime"),U$={bounce:p.Bounce,slide:p.Slide,zoom:p.Zoom,flip:p.Flip},Z$=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?U$[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};EU.toast(U.message,Z)},H$=(U)=>{console.log("Log event",U)},$$=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let Z=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch($){console.error("[IOEventsCard] Failed to show notification",$)}},H=window.Notification.permission;if(H==="granted"){Z();return}if(H==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then(($)=>{if($==="granted")Z()})},z$=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:J}=U,z=t.useContext(v),T=t.useRef(z);T.current=z;let I=t.useMemo(()=>({alert:Z$,log:H$,push:$$,redirect:(G)=>{if(G.to){let X=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(X))window.location.href=X;else T.current?.(X)}else window.location.reload()},reload:(G)=>{if(G.to){let X=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(X))window.location.href=X;else T.current?.(X)}else window.location.reload()}}),[]);return r.jsx(r.Fragment,{children:r.jsx(P,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:J,methods:I,children:r.jsx(EU.ToastContainer,{})})})},rZ=z$;var tZ=F({name:"IOEventsCard",component:rZ,metadata:{author:"Swarm.ing"}});var GU=require("react");var tU=require("react/jsx-runtime"),J$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:J,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:I}=U,[G,X]=GU.useState($);return GU.useEffect(()=>{X($)},[$]),GU.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(H,G)},[H,G]),tU.jsx(P,{card:"SessionStorageCard",data:U,useSocketioSupport:J,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:I,methods:{update:({value:D})=>{X(D)},remove:()=>{sessionStorage.removeItem(H),X("")}},children:tU.jsx("input",{type:"hidden",id:Z,name:Z,value:G})})},aZ=J$;var eZ=F({name:"SessionStorageCard",component:aZ,metadata:{author:"PieData"}});var IU=require("react");var aU=require("react/jsx-runtime"),T$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:J,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:I}=U,[G,X]=IU.useState($);return IU.useEffect(()=>{X($)},[$]),IU.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(H,G)},[H,G]),aU.jsx(P,{card:"DeviceStorageCard",data:U,useSocketioSupport:J,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:I,methods:{update:({value:D})=>{X(D)},remove:()=>{localStorage.removeItem(H),X("")}},children:aU.jsx("input",{type:"hidden",id:Z,name:Z,value:G})})},UH=T$;var ZH=F({name:"DeviceStorageCard",component:UH,metadata:{author:"PieData"}});var E=require("react");var eU=require("react/jsx-runtime"),G$=({data:U,content:Z})=>{let{useLoader:H,noReturn:$,returnType:J,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:I,centrifugeChannel:G}=U,X=E.useContext(j),D=E.useContext(f)??N,[Q,V]=E.useState(!1),[Y,q]=E.useState(null),W=E.useRef(Z),B=E.useContext(S),O=E.useCallback((M)=>{if(M===null)V(!0);else if(V(!1),!$)W.current=M;if(!$)q(M)},[$]),A=E.useCallback((M)=>{W.current=M.content,q(M.content)},[]),_=E.useCallback((M)=>{if(M===null)V(!0);else if(V(!1),!$)for(let BU of M)B?.emit(BU.name,BU.data)},[$,B]);if(E.useEffect(()=>{q(Z),V(!1)},[Z]),!Y&&H)return X;return eU.jsx(P,{card:"AjaxGroupCard",data:U,methods:{changeContent:A},useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:I,centrifugeChannel:G,children:eU.jsx(D,{uiConfig:Y??W.current,setUiAjaxConfiguration:J==="events"?_:O})})},HH=G$;var $H=F({name:"AjaxGroupCard",component:HH,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var UZ=require("react");var jU=require("react/jsx-runtime"),I$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,url:J,sx:z}=U,T=UZ.useContext(v),I=UZ.useContext(f)??N;return jU.jsx(P,{card:$,data:U,children:jU.jsx("div",{style:z,id:$,onClick:(X)=>{if(J)if(X.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(J))window.location.href=J;else T?.(J)},children:jU.jsx(I,{setUiAjaxConfiguration:H,uiConfig:Z})})})},zH=I$;var JH=F({name:"BoxCard",component:zH,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var TH=require("react");var fU=require("react/jsx-runtime"),X$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:J}=U,z=TH.useContext(f)??N;return fU.jsx(P,{card:$,data:U,children:fU.jsx("div",{style:J,id:$,children:Z.map((T,I)=>{return fU.jsx(z,{uiConfig:T,setUiAjaxConfiguration:H},`children-${I}`)})})})},GH=X$;var IH=F({name:"OneOfCard",component:GH,metadata:{author:"Swarm.ing",description:"Different variants"}});var a=require("react"),e=require("@tanstack/react-query");var SU=require("react");var yU=require("react"),CU=new Map,xU=new Map;function kU(U,Z){let H=`${U}::${Z}`,$=U?CU.get(H):void 0,[J,z]=yU.useState($??null);return yU.useEffect(()=>{if(!U)return;if(CU.has(H)){z(CU.get(H));return}let T=xU.get(H);if(!T)T=fetch(U+`api/support/${Z}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return CU.set(H,G),xU.delete(H),G}).catch((G)=>{throw xU.delete(H),G}),xU.set(H,T);let I=!1;return T.then((G)=>{if(!I)z(G)}).catch(()=>{}),()=>{I=!0}},[U,Z,H]),J}var Y$=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let H of Z){let $=H.indexOf("=");if(($===-1?H:H.slice(0,$)).trim()===U){let z=$===-1?"":H.slice($+1).trim();try{return decodeURIComponent(z)}catch{return z}}}return null},B$={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,Z){return(U==="local"?window.localStorage:window.sessionStorage).getItem(Z)},readCookie:Y$,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let H=Z[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},XH=B$;var q$={};function d(){return q$}var YH=new Map;var BH=(U)=>{return YH.has(U)?YH.get(U):null};var qH,O$={isClient(){return!0},readSid(){return qH},setSid(U){qH=U},readWebStorage(U,Z){let H=d(),$=U==="local"?H.storage:H.sessionStorage;return $?$.getItem(Z):null},async readWebStorageAsync(U,Z){let H=d(),$=U==="local"?H.asyncStorage:H.asyncSessionStorage;if($)return $.getItem(Z);let J=U==="local"?H.storage:H.sessionStorage;return J?J.getItem(Z):null},readCookie(U){let Z=d();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=d();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=d();return Z.getInput?Z.getInput(U):BH(U)},submitGlobalForm(){d().submitForm?.()}},OH=O$;var Q$=typeof navigator<"u"&&navigator.product==="ReactNative",W$=Q$?OH:XH,R=W$;var XU=K("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function QH(){XU.resolve?.()}function ZZ(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!XU.promise)XU.promise=new Promise((U)=>{XU.resolve=()=>{U()}});return XU.promise}var D$=({children:U})=>{let Z=SU.useContext(k),H=QU(),$=kU(H,"socketIO"),J=(z)=>{if(R.isClient())R.setSid(z.sid),QH(),console.log(`SocketIO initialized: ${R.readSid()}`)};return SU.useEffect(()=>{if(!Z)return;let z=()=>{console.log("SocketIO connected")},T=(I)=>{console.log(`SocketIO disconnected: ${I}`),Z.connect()};if($)Z.on("pieinit",J),Z.on("connect",z),Z.on("disconnect",T),Z.connect();return()=>{if($)Z.off("pieinit",J),Z.off("connect",z),Z.off("disconnect",T),Z.disconnect()}},[Z,$]),U},bU=D$;var vU=require("react");var V$=({children:U})=>{let Z=vU.useContext(y),H=QU(),$=kU(H,"centrifuge");return vU.useEffect(()=>{if(!Z)return;let J=()=>{console.log("Centrifuge connected")},z=(T)=>{console.log("Centrifuge disconnected:",T)};if($)Z.on("connected",J),Z.on("disconnected",z),Z.connect();return()=>{if($)Z.disconnect()}},[Z,$]),U},mU=V$;var VH=require("axios-date-transformer");var DH=require("react/jsx-runtime");function WH(U,Z,H){if(!Z)return H;let $=U.replace(/^\//,""),J=Z[$];if(!J)return H;return DH.jsx(MU,{uiConfig:J})}var L=require("react/jsx-runtime"),_$=({location:U,fallback:Z,piecache:H,onError:$,queryOptions:J,disableGlobalForm:z})=>{let T=$U(),I=WU(),G=m(),X=a.useMemo(()=>VH.createAxiosDateTransformer({baseURL:T||""}),[T]),D=a.useMemo(()=>c(),[]),Q=a.useMemo(()=>T?_U(T):null,[T]),V=a.useMemo(()=>T?VU(T,I):null,[T,I]),{data:Y,isLoading:q,error:W}=e.useQuery({queryKey:["uiConfig",U.pathname+U.search,T],enabled:!!T,queryFn:async()=>{let O=new URLSearchParams(U.search);O.set("__pieroot","web");let A="/api/content"+U.pathname+"?"+O.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",A);let _=await X.get(A,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",_.data);return _.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(O)=>Math.min(1000*2**O,30000),...J}),B=WH(U.pathname,H,Z);if(!T)return B??null;if(G)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",I),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!H);if(W){if(G)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),B}if(q||!Y){if(G)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!Y});return B}if(G)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return L.jsx(S.Provider,{value:D,children:L.jsx(k.Provider,{value:Q,children:L.jsx(y.Provider,{value:V,children:L.jsx(j.Provider,{value:Z??L.jsx(L.Fragment,{}),children:L.jsx(bU,{children:L.jsx(mU,{children:z?L.jsx(N,{uiConfig:Y}):L.jsx("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:L.jsx(N,{uiConfig:Y})})})})})})})})},F$=(U)=>{let Z=a.useMemo(()=>new e.QueryClient,[]),H=U.queryClient??Z;return L.jsx(v.Provider,{value:U.onNavigate,children:L.jsx(g.Provider,{value:U.config,children:L.jsx(h.Provider,{value:U.onError,children:L.jsx(e.QueryClientProvider,{client:H,children:L.jsx(_$,{...U})})})})})},hU=F$;var UU=require("react"),pU=require("@tanstack/react-query");var w=require("react/jsx-runtime"),K$=({location:U,fallback:Z,children:H,disableGlobalForm:$})=>{let J=$U(),z=WU(),T=m(),I=UU.useMemo(()=>c(),[]),G=UU.useMemo(()=>J?_U(J):null,[J]),X=UU.useMemo(()=>J?VU(J,z):null,[J,z]);if(T)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!Z);return w.jsx(S.Provider,{value:I,children:w.jsx(k.Provider,{value:G,children:w.jsx(y.Provider,{value:X,children:w.jsx(j.Provider,{value:Z??w.jsx(w.Fragment,{}),children:w.jsx(bU,{children:w.jsx(mU,{children:$?H:w.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:H})})})})})})})},A$=(U)=>{let[Z]=UU.useState(()=>new pU.QueryClient),H=U.queryClient??Z;return w.jsx(v.Provider,{value:U.onNavigate,children:w.jsx(g.Provider,{value:U.config,children:w.jsx(h.Provider,{value:U.onError,children:w.jsx(pU.QueryClientProvider,{client:H,children:w.jsx(K$,{...U})})})})})},_H=A$;var FH=require("react");var HZ=require("react/jsx-runtime"),P$=HZ.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),M$=({apiServer:U,pathname:Z="/",search:H="",centrifugeServer:$,fallback:J,enableRenderingLog:z=!1})=>{let T=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",I=FH.useMemo(()=>({apiServer:T,centrifugeServer:$,enableRenderingLog:z,pageProcessor:"web"}),[T,$,z]);return HZ.jsx(hU,{location:{pathname:Z,search:H},config:I,fallback:J??P$,onNavigate:(X)=>{if(typeof window<"u")window.history.pushState(null,"",X)}})},KH=M$;var AH=require("react");var R$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],L$=new Set(["telegram:cloud","telegram:secure"]),YU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of R$){let H=Z+":";if(U.startsWith(H))return{source:Z,key:U.slice(H.length)}}return{source:"dom",key:U}},$Z=(U,Z=!1)=>{let{source:H,key:$}=YU(U);if(H==="sid"){let z=R.readSid();if(!z)throw Error("SocketIO isn't initialized properly");return[z]}if(H==="localStorage"||H==="sessionStorage")try{let z=R.readWebStorage(H==="localStorage"?"local":"session",$);if(z===null){if(Z)console.warn(`No ${H} value found for key ${$}`);return[]}return[z]}catch(z){if(Z)console.warn(`Failed to read ${H} key ${$}:`,z);return[]}if(H==="cookie"){let z=R.readCookie($);if(z===null){if(Z)console.warn(`No cookie found for key ${$}`);return[]}return[z]}if(H==="url"){let z=R.readUrlParams($);if(!z.length&&Z)console.warn(`No URL query param found for key ${$}`);return z}if(L$.has(H)){if(Z)console.warn(`Source ${H} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let J=R.readDomInput($);if(J===null){if(Z)console.warn(`No input found with name ${$}`);return[]}return J},w$=(U,Z,H)=>{let $=window.Telegram?.WebApp,J=U==="telegram:cloud"?$?.CloudStorage:$?.SecureStorage,z=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!J){if(H)console.warn(`${z} is not available`);return Promise.resolve([])}return new Promise((T)=>{try{J.getItem(Z,(I,G)=>{if(I){if(H)console.warn(`Failed to read ${z} key ${Z}:`,I);T([]);return}if(G==null||G===""){if(H)console.warn(`No ${z} value found for key ${Z}`);T([]);return}T([G])})}catch(I){if(H)console.warn(`Failed to read ${z} key ${Z}:`,I);T([])}})},zZ=async(U,Z=!1)=>{let{source:H,key:$}=YU(U);if(H==="telegram:cloud"||H==="telegram:secure")return w$(H,$,Z);if((H==="localStorage"||H==="sessionStorage")&&R.readWebStorageAsync)try{let J=await R.readWebStorageAsync(H==="localStorage"?"local":"session",$);if(J===null){if(Z)console.warn(`No ${H} value found for key ${$}`);return[]}return[J]}catch(J){if(Z)console.warn(`Failed to read ${H} key ${$}:`,J);return[]}return $Z(U,Z)},N$=(U,Z={},H=[],$,J)=>{let z=J?.renderingLogEnabled??!1,T=J?.timeout,I=J?.retryPolicy,G=I?.maxRetries??0,X=I?.baseDelay??1000,D=I?.retryOn??[502,503,504];if(z)console.log("Registering AJAX: ",$,Z,H);return async(Q={})=>{if(!R.isClient()){if(z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=J?.apiServer;if(!V){if(z)console.warn("AJAX skipped: apiServer is missing");return}if(!$||!U){if(z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(H.includes("sid"))await ZZ();let Y=new FormData;for(let[B,O]of Object.entries({...Z,...Q}))Y.append(B,O);for(let B of H){let{key:O}=YU(B);for(let A of await zZ(B,z))Y.append(O,A)}let q=V+"api/ajax_content"+$;U(null);let W;for(let B=0;B<=G;B++){if(B>0){let _=X*2**(B-1);if(z)console.log(`AJAX retry ${B}/${G} after ${_}ms`);await new Promise((M)=>setTimeout(M,_))}let O=T!=null?new AbortController:null,A=O&&setTimeout(()=>O.abort(),T);try{let _=await fetch(q,{method:"POST",body:Y,signal:O?.signal});if(A)clearTimeout(A);if(!_.ok&&D.includes(_.status)&&B<G){W=Error(`HTTP ${_.status}`);continue}let BU=(_.headers.get("content-type")||"").includes("application/json");if(!!_.body?.getReader&&!BU){let qU=_.body.getReader(),EH=new TextDecoder,o="";while(!0){let{done:gU,value:jH}=await qU.read();if(gU)break;o+=EH.decode(jH,{stream:!0});let JZ=o.split(`
3
- `);o=JZ.pop()??"";for(let fH of JZ){let cU=fH.trim();if(!cU)continue;try{let CH=JSON.parse(cU);U([CH])}catch{if(z)console.warn("Failed to parse streamed line:",cU)}}}if(o.trim())try{let gU=JSON.parse(o);U([gU])}catch{if(z)console.warn("Failed to parse final streamed line:",o)}return{}}else{let qU=await _.json();return U(qU),qU}}catch(_){if(A)clearTimeout(A);if(W=_,B<G)continue;if(z)console.error("AJAX request failed:",_);return U(null),_}}if(z)console.error("AJAX request failed after retries:",W);return U(null),W}},PH=(U,Z={},H=[],$,J)=>{let{apiServer:z,enableRenderingLog:T}=HU(),I=JSON.stringify(Z),G=JSON.stringify(H),X=JSON.stringify(J);return AH.useMemo(()=>N$(U,Z,H,$,{apiServer:z,renderingLogEnabled:T,timeout:J?.timeout,retryPolicy:J?.retryPolicy}),[U,I,G,$,z,T,X])};var MH=require("clsx"),RH=require("tailwind-merge");function LH(...U){return RH.twMerge(MH.clsx(U))}var wH=()=>{R.submitGlobalForm()};var NH=(U,Z)=>`${U}${DU}${Z}`;
2
+ var yH=Object.create;var{getPrototypeOf:SH,defineProperty:HU,getOwnPropertyNames:IZ,getOwnPropertyDescriptor:bH}=Object,GZ=Object.prototype.hasOwnProperty;var XZ=(U,Z,H)=>{H=U!=null?yH(SH(U)):{};let $=Z||!U||!U.__esModule?HU(H,"default",{value:U,enumerable:!0}):H;for(let T of IZ(U))if(!GZ.call($,T))HU($,T,{get:()=>U[T],enumerable:!0});return $},JZ=new WeakMap,mH=(U)=>{var Z=JZ.get(U),H;if(Z)return Z;if(Z=HU({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")IZ(U).map(($)=>!GZ.call(Z,$)&&HU(Z,$,{get:()=>U[$],enumerable:!(H=bH(U,$))||H.enumerable}));return JZ.set(U,Z),Z};var vH=(U,Z)=>{for(var H in Z)HU(U,H,{get:Z[H],enumerable:!0,configurable:!0,set:($)=>Z[H]=()=>$})};var f$={};vH(f$,{usePieEmit:()=>VZ,useAjaxSubmit:()=>RH,unregisterComponent:()=>wZ,trackLazy:()=>FU,submitGlobalForm:()=>EH,registry:()=>y,registerPieComponent:()=>F,registerMultipleComponents:()=>LZ,readAjaxKeyAsync:()=>zZ,readAjaxKey:()=>$Z,preloadComponent:()=>lU,prefetchLazyComponents:()=>CZ,pieName:()=>jH,parseDepName:()=>BU,hasComponent:()=>NZ,getRegistrySize:()=>fZ,getRegistryEntry:()=>r,getLazyComponentNames:()=>oU,getEmitter:()=>c,getComponentMeta:()=>EZ,getAllRegisteredComponents:()=>jZ,cn:()=>NH,UnionCard:()=>uZ,UIRendererContext:()=>C,UILoading:()=>MU,UI:()=>N,SocketIOContext:()=>b,SessionStorageCard:()=>ZH,SequenceCard:()=>pZ,PieRoot:()=>pU,PiePreviewRoot:()=>AH,PieConfigContext:()=>u,PieCard:()=>M,PieBaseRoot:()=>KH,PIEBREAK:()=>DU,OneOfCard:()=>YH,MittContext:()=>m,IOEventsCard:()=>eZ,HiddenCard:()=>sZ,HTMLEmbedCard:()=>lZ,FallbackContext:()=>f,DeviceStorageCard:()=>$H,CentrifugeIOContext:()=>S,BoxCard:()=>IH,AutoRedirectCard:()=>tZ,AjaxGroupCard:()=>TH});module.exports=mH(f$);var k=require("react");var qU=require("react");var cU=globalThis,P=(U,Z)=>{let H=Symbol.for(U);if(!(H in cU))cU[H]=Z();return cU[H]};var u=P("@swarm.ing/pieui:context:pieConfig",()=>qU.createContext(null)),$U=()=>{let U=qU.useContext(u);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},zU=()=>{let{apiServer:U}=$U();return U},QU=zU,WU=()=>{let{centrifugeServer:U}=$U();return U};var p=()=>{let{enableRenderingLog:U}=$U();return U},YZ=p;var DU="__piedemo__";var OZ=require("react"),dU=require("centrifuge");var BZ=P("@swarm.ing/pieui:centrifuge-cache",()=>new Map),_U=(U,Z)=>{if(!Z)return null;let H=`${U}::${Z}`,$=BZ.get(H);if($)return $;async function T(){let J=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new dU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let z=new dU.Centrifuge(Z,{getToken:T});return BZ.set(H,z),z},pH=P("@swarm.ing/pieui:context:centrifuge",()=>OZ.createContext(null)),S=pH;var QZ=require("socket.io-client"),WZ=require("react");var qZ=P("@swarm.ing/pieui:socket-cache",()=>new Map),VU=(U)=>{let Z=qZ.get(U);if(Z)return Z;let H=QZ.io(U,{autoConnect:!1,transports:["websocket"]});return qZ.set(U,H),H},hH=P("@swarm.ing/pieui:context:socket",()=>WZ.createContext(null)),b=hH;var DZ=XZ(require("mitt")),i=require("react");function c(){return P("@swarm.ing/pieui:mitt-emitter",()=>DZ.default())}var _Z=P("@swarm.ing/pieui:context:mitt",()=>i.createContext(null));function VZ(U){let Z=i.useContext(_Z);return i.useCallback((H,$)=>{(Z??c()).emit(`pie${H}_${U}`,$)},[U,Z])}var m=_Z;function FZ(U){return U.wasRecovering===!0&&U.recovered===!1}function KZ(U){return U.recoverable===!1}var s=require("react/jsx-runtime"),gH=({card:U,data:Z,children:H,useSocketioSupport:$=!1,useCentrifugeSupport:T=!1,useMittSupport:z=!1,centrifugeChannel:J=void 0,methods:G=void 0,stored:I=void 0,onResync:X=void 0})=>{let W=YZ(),q=k.useRef(G);q.current=G;let V=k.useRef(X);if(V.current=X,W)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:$,centrifuge:T,mitt:z,centrifugeChannel:J}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!H);let B=k.useContext(b),O=k.useContext(S),_=k.useContext(m);if(k.useEffect(()=>{if(!B||!$||!q.current||!Z.name){if(W&&$)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:$,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let A=Object.keys(q.current??{}).map((D)=>{let Y=`pie${D}_${Z.name}`;if(W)console.log(`[PieCard] Socket.IO registering event: ${Y}`);let Q=(j)=>{q.current?.[D]?.(j)};return B.on(Y,Q),[Y,Q]});return()=>{A.forEach(([D,Y])=>{if(W)console.log(`[PieCard] Socket.IO unregistering event: ${D}`);B.off(D,Y)})}},[B,Z.name,$]),k.useEffect(()=>{if(!O||!T||!J||!Z.name){if(W&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let A=Object.keys(q.current??{}).map((D)=>{let Y=`pie${D}_${Z.name}_${J}`;if(W)console.log(`[PieCard] Centrifuge subscribing to channel: ${Y}`);let Q=O.newSubscription(Y,{recoverable:!0,positioned:!0});return Q.on("publication",(j)=>{if(W)console.log(`[PieCard] Centrifuge received data on ${Y}:`,j.data);q.current?.[D]?.(j.data)}),Q.on("subscribed",(j)=>{if(KZ(j))console.warn(`[PieCard] Centrifuge channel ${Y} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(FZ(j)){if(W)console.log(`[PieCard] Centrifuge recovery gap on ${Y}; requesting resync`);V.current?.({channel:Y,reason:"gap"})}}),Q.subscribe(),Q});return()=>{A.forEach((D)=>{if(W)console.log("[PieCard] Centrifuge unsubscribing from channel");D.unsubscribe(),O.removeSubscription(D)})}},[O,J,Z.name,T]),k.useEffect(()=>{if(!_||!z||!Z.name){if(W&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!_,useMittSupport:z,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let K=Object.keys(q.current??{}),A={};return K.forEach((D)=>{let Y=`pie${D}_${Z.name}`,Q=(j)=>{if(W)console.log(`[PieCard] Mitt registering event: ${Y}`);q.current?.[D]?.(j)};A[Y]=Q,_.on(Y,Q)}),()=>{Object.entries(A).forEach(([D,Y])=>{if(W)console.log(`[PieCard] Mitt unregistering event: ${D}`);_.off(D,Y)})}},[_,Z.name,z]),W)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return s.jsxs(s.Fragment,{children:[s.jsx("input",{type:"hidden",name:Z.name,value:JSON.stringify(I)}),H]});return H},M=gH;var PZ=require("react"),d=new Map;function AZ(U,Z){return Z.catch(()=>{if(d.get(U)===Z)d.delete(U)}),d.set(U,Z),Z}function FU(U,Z){return PZ.lazy(()=>{if(d.has(Z))return d.get(Z);return AZ(Z,U().then((H)=>H))})}var MZ=async(U,Z)=>{if(!Z)return;if(d.has(U))return d.get(U);return AZ(U,Z().then((H)=>H))};var y=P("@swarm.ing/pieui:component-registry",()=>new Map),uH=(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 Z={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!Z.component&&Z.loader)Z.component=FU(Z.loader,U.name),Z.isLazy=!0;return Z};function F(U){let Z=uH(U);return y.set(Z.name,Z),Z.component}var LZ=(U)=>{U.forEach((Z)=>F(Z))},wZ=(U)=>{y.delete(U)},NZ=(U)=>{return y.has(U)},EZ=(U)=>{return y.get(U)?.metadata},r=(U)=>{return y.get(U)},jZ=()=>{return Array.from(y.keys())},fZ=()=>{return y.size},oU=()=>Array.from(y.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),lU=(U)=>{let Z=y.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return MZ(U,Z.loader)},RZ=!1,CZ=()=>{if(RZ||typeof window>"u")return;RZ=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=oU(),H="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),$=(T)=>{if(T>=Z.length)return;H(()=>{Promise.resolve().then(()=>lU(Z[T])).catch(()=>{}).finally(()=>$(T+1))})};$(0)};var TU=require("react");var xZ=require("react");var KU=require("react/jsx-runtime"),cH=P("@swarm.ing/pieui:context:fallback",()=>xZ.createContext(KU.jsx(KU.Fragment,{}))),f=cH;var kZ=require("react");var dH=P("@swarm.ing/pieui:context:lazyError",()=>kZ.createContext(void 0)),h=dH;var PU=require("react"),yZ=require("react/jsx-runtime"),oH=2,lH=400;class n extends PU.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<oH){let Z=lH*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((H)=>({failed:!1,attempt:H.attempt+1}))},Z)}}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 yZ.jsx(PU.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var AU=require("react/jsx-runtime");function iH({uiConfig:U,setUiAjaxConfiguration:Z}){let H=TU.useContext(f),$=TU.useContext(h),T=p();if(T)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:",!!Z);let z=r(U.card);if(!z?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return H}if(T)console.log("[UI] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let J=z.component,G=AU.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(z.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",z.name);return AU.jsx(n,{name:z.name,fallback:z.fallback?AU.jsx(z.fallback,{}):H,onError:$,children:G})}if(T)console.log("[UI] Rendering component directly:",z.name);return G}var N=TU.memo(iH);var iU=require("react");var SZ=require("react");var sH=P("@swarm.ing/pieui:context:uiRenderer",()=>SZ.createContext(null)),C=sH;var JU=require("react/jsx-runtime");function bZ({uiConfig:U,setUiAjaxConfiguration:Z}){let H=iU.useContext(f),$=iU.useContext(h),T=p();if(T)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:",!!Z);let z=r(U.card);if(!z?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return H}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 JU.jsx(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",z.name);let J=z.component,G=JU.jsx(C.Provider,{value:bZ,children:JU.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(z.isLazy)return JU.jsx(n,{name:z.name,fallback:H,onError:$,children:G});return G}var MU=bZ;var mZ=require("react");var RU=require("react/jsx-runtime"),rH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:T}=U,z=mZ.useContext(C)??N;return RU.jsx(M,{card:$,data:U,children:RU.jsx("div",{style:T,id:$,children:Z.map((J,G)=>{return RU.jsx(z,{uiConfig:J,setUiAjaxConfiguration:H},`children-${G}`)})})})},vZ=rH;var pZ=F({name:"SequenceCard",component:vZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var hZ=require("react");var sU=require("react/jsx-runtime"),nH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$}=U,T=hZ.useContext(C)??N;return sU.jsx(M,{card:$,data:U,children:Z.map((z,J)=>{return sU.jsx(T,{uiConfig:z,setUiAjaxConfiguration:H},`children-${J}`)})})},gZ=nH;var uZ=F({name:"UnionCard",component:gZ,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var LU=require("react"),cZ=XZ(require("html-react-parser"));var x=require("react");function tH(){let U=new AudioContext,Z=U.createOscillator(),H=Z.connect(U.createMediaStreamDestination());Z.start();let $=H.stream.getAudioTracks()[0];return $.enabled=!1,$}function rU(U=null,Z){let[H,$]=x.useState(!1),T=x.useRef(null),z=x.useRef(null),J=x.useRef(null),G=x.useCallback(async(q,V=!0)=>{if(T.current)I();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")$(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))$(!1)},B.ontrack=(Q)=>{if(U)U.srcObject=Q.streams[0]},V){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(Q.getTracks()[0],Q)}else{let Q=tH();B.addTrack(Q)}let O=B.createDataChannel("oai-events");z.current=O,J.current=new Promise((Q)=>{O.addEventListener("open",()=>{Q()})});let _=await B.createOffer();await B.setLocalDescription(_);let Y=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:_.sdp,headers:{Authorization:`Bearer ${q}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:Y}),T.current=B,await J.current},[U]),I=x.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},[U]),X=x.useCallback((q)=>{let V=z.current;if(!V){console.error("Data channel is not ready",q);return}let B=new Date().toLocaleTimeString();if(q.event_id=q.event_id||crypto.randomUUID(),V.send(JSON.stringify(q)),!q.timestamp)q.timestamp=B;Z?.(q)},[Z,U]),W=x.useCallback((q)=>{if(!z.current){console.error("Data channel is not ready");return}let B=()=>{X({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:q}]}}),X({type:"response.create"})};if(J.current)J.current.then(B);else B()},[Z,U]);return x.useEffect(()=>{let q=z.current;if(!q)return;let V=(B)=>{let O=JSON.parse(B.data);if(!O.timestamp)O.timestamp=new Date().toLocaleTimeString();Z?.(O)};return q.addEventListener("message",V),()=>{q.removeEventListener("message",V)}},[Z,U]),{isSessionActive:H,startSession:G,stopSession:I,sendTextMessage:W}}var oZ=require("react/jsx-runtime"),aH=({data:U})=>{let{html:Z,useSocketioSupport:H,useCentrifugeSupport:$,useMittSupport:T,centrifugeChannel:z}=U,[J,G]=LU.useState(Z),{isSessionActive:I,startSession:X,sendTextMessage:W}=rU(null,(O)=>{if(console.log(O.type,O.type==="response.output_text.delta"&&O.delta),O.type==="response.output_text.delta"&&O.delta)G((_)=>_+O.delta)});return LU.useEffect(()=>{G(Z)},[Z]),oZ.jsx(M,{card:"HTMLEmbedCard",data:U,methods:{update:(O)=>{G(O.value)},generateUsingAI:async(O)=>{try{if(!I&&O.token)await X(O.token,!1);W(O.prompt)}catch(_){console.error("Failed to generate using AI",_)}},initializeAI:async(O)=>{if(!I&&O.token)await X(O.token,!1)}},useCentrifugeSupport:$,useSocketioSupport:H,useMittSupport:T,centrifugeChannel:z,children:cZ.default(J)})},dZ=aH;var lZ=F({name:"HTMLEmbedCard",component:dZ,metadata:{author:"Swarm.ing"}});var wU=require("react");var nU=require("react/jsx-runtime"),eH=({data:U})=>{let{name:Z,value:H,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J}=U,[G,I]=wU.useState(H);return wU.useEffect(()=>{I(H)},[H]),nU.jsx(M,{card:"HiddenCard",data:U,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J,methods:{update:({value:X})=>{I(X)}},children:nU.jsx("input",{type:"hidden",id:Z,name:Z,value:G})})},iZ=eH;var sZ=F({name:"HiddenCard",component:iZ,metadata:{author:"Swarm.ing"}});var IU=require("react");var rZ=require("react");var U$=P("@swarm.ing/pieui:context:navigate",()=>rZ.createContext(void 0)),v=U$;var NU=require("react/jsx-runtime"),Z$=({data:U})=>{let{url:Z}=U,H=IU.useContext(v),$=IU.useContext(f);return IU.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else H?.(Z)},[Z,H]),NU.jsx(NU.Fragment,{children:$})},nZ=Z$;var tZ=F({name:"AutoRedirectCard",component:nZ,metadata:{author:"Swarm.ing"}});var g=require("react-toastify"),EU=require("react-toastify");var a=require("react");var t=require("react/jsx-runtime"),H$={bounce:g.Bounce,slide:g.Slide,zoom:g.Zoom,flip:g.Flip},$$=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?H$[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};EU.toast(U.message,Z)},z$=(U)=>{console.log("Log event",U)},T$=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let Z=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch($){console.error("[IOEventsCard] Failed to show notification",$)}},H=window.Notification.permission;if(H==="granted"){Z();return}if(H==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then(($)=>{if($==="granted")Z()})},J$=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:T}=U,z=a.useContext(v),J=a.useRef(z);J.current=z;let G=a.useMemo(()=>({alert:$$,log:z$,push:T$,redirect:(I)=>{if(I.to){let X=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(X))window.location.href=X;else J.current?.(X)}else window.location.reload()},reload:(I)=>{if(I.to){let X=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(X))window.location.href=X;else J.current?.(X)}else window.location.reload()}}),[]);return t.jsx(t.Fragment,{children:t.jsx(M,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:T,methods:G,children:t.jsx(EU.ToastContainer,{})})})},aZ=J$;var eZ=F({name:"IOEventsCard",component:aZ,metadata:{author:"Swarm.ing"}});var GU=require("react");var tU=require("react/jsx-runtime"),I$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G}=U,[I,X]=GU.useState($);return GU.useEffect(()=>{X($)},[$]),GU.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(H,I)},[H,I]),tU.jsx(M,{card:"SessionStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:W})=>{X(W)},remove:()=>{sessionStorage.removeItem(H),X("")}},children:tU.jsx("input",{type:"hidden",id:Z,name:Z,value:I})})},UH=I$;var ZH=F({name:"SessionStorageCard",component:UH,metadata:{author:"PieData"}});var XU=require("react");var aU=require("react/jsx-runtime"),G$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G}=U,[I,X]=XU.useState($);return XU.useEffect(()=>{X($)},[$]),XU.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(H,I)},[H,I]),aU.jsx(M,{card:"DeviceStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:W})=>{X(W)},remove:()=>{localStorage.removeItem(H),X("")}},children:aU.jsx("input",{type:"hidden",id:Z,name:Z,value:I})})},HH=G$;var $H=F({name:"DeviceStorageCard",component:HH,metadata:{author:"PieData"}});var E=require("react");var eU=require("react/jsx-runtime"),X$=({data:U,content:Z})=>{let{useLoader:H,noReturn:$,returnType:T,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I}=U,X=E.useContext(f),W=E.useContext(C)??N,[q,V]=E.useState(!1),[B,O]=E.useState(null),_=E.useRef(Z),K=E.useContext(m),A=E.useCallback((Q)=>{if(Q===null)V(!0);else if(V(!1),!$)_.current=Q;if(!$)O(Q)},[$]),D=E.useCallback((Q)=>{_.current=Q.content,O(Q.content)},[]),Y=E.useCallback((Q)=>{if(Q===null)V(!0);else if(V(!1),!$)for(let j of Q)K?.emit(j.name,j.data)},[$,K]);if(E.useEffect(()=>{O(Z),V(!1)},[Z]),!B&&H)return X;return eU.jsx(M,{card:"AjaxGroupCard",data:U,methods:{changeContent:D},useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I,children:eU.jsx(W,{uiConfig:B??_.current,setUiAjaxConfiguration:T==="events"?Y:A})})},zH=X$;var TH=F({name:"AjaxGroupCard",component:zH,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var UZ=require("react");var jU=require("react/jsx-runtime"),Y$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,url:T,sx:z}=U,J=UZ.useContext(v),G=UZ.useContext(C)??N;return jU.jsx(M,{card:$,data:U,children:jU.jsx("div",{style:z,id:$,onClick:(X)=>{if(T)if(X.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:jU.jsx(G,{setUiAjaxConfiguration:H,uiConfig:Z})})})},JH=Y$;var IH=F({name:"BoxCard",component:JH,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var GH=require("react");var fU=require("react/jsx-runtime"),B$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:T}=U,z=GH.useContext(C)??N;return fU.jsx(M,{card:$,data:U,children:fU.jsx("div",{style:T,id:$,children:Z.map((J,G)=>{return fU.jsx(z,{uiConfig:J,setUiAjaxConfiguration:H},`children-${G}`)})})})},XH=B$;var YH=F({name:"OneOfCard",component:XH,metadata:{author:"Swarm.ing",description:"Different variants"}});var e=require("react"),UU=require("@tanstack/react-query");var SU=require("react");var kU=require("react"),CU=new Map,xU=new Map;function yU(U,Z){let H=`${U}::${Z}`,$=U?CU.get(H):void 0,[T,z]=kU.useState($??null);return kU.useEffect(()=>{if(!U)return;if(CU.has(H)){z(CU.get(H));return}let J=xU.get(H);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return CU.set(H,I),xU.delete(H),I}).catch((I)=>{throw xU.delete(H),I}),xU.set(H,J);let G=!1;return J.then((I)=>{if(!G)z(I)}).catch(()=>{}),()=>{G=!0}},[U,Z,H]),T}var O$=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let H of Z){let $=H.indexOf("=");if(($===-1?H:H.slice(0,$)).trim()===U){let z=$===-1?"":H.slice($+1).trim();try{return decodeURIComponent(z)}catch{return z}}}return null},q$={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,Z){return(U==="local"?window.localStorage:window.sessionStorage).getItem(Z)},readCookie:O$,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let H=Z[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},BH=q$;var Q$={};function o(){return Q$}var OH=new Map;var qH=(U)=>{return OH.has(U)?OH.get(U):null};var QH,W$={isClient(){return!0},readSid(){return QH},setSid(U){QH=U},readWebStorage(U,Z){let H=o(),$=U==="local"?H.storage:H.sessionStorage;return $?$.getItem(Z):null},async readWebStorageAsync(U,Z){let H=o(),$=U==="local"?H.asyncStorage:H.asyncSessionStorage;if($)return $.getItem(Z);let T=U==="local"?H.storage:H.sessionStorage;return T?T.getItem(Z):null},readCookie(U){let Z=o();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=o();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=o();return Z.getInput?Z.getInput(U):qH(U)},submitGlobalForm(){o().submitForm?.()}},WH=W$;var D$=typeof navigator<"u"&&navigator.product==="ReactNative",_$=D$?WH:BH,R=_$;var YU=P("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function DH(){YU.resolve?.()}function ZZ(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!YU.promise)YU.promise=new Promise((U)=>{YU.resolve=()=>{U()}});return YU.promise}var V$=({children:U})=>{let Z=SU.useContext(b),H=QU(),$=yU(H,"socketIO"),T=(z)=>{if(R.isClient())R.setSid(z.sid),DH(),console.log(`SocketIO initialized: ${R.readSid()}`)};return SU.useEffect(()=>{if(!Z)return;let z=()=>{console.log("SocketIO connected")},J=(G)=>{console.log(`SocketIO disconnected: ${G}`),Z.connect()};if($)Z.on("pieinit",T),Z.on("connect",z),Z.on("disconnect",J),Z.connect();return()=>{if($)Z.off("pieinit",T),Z.off("connect",z),Z.off("disconnect",J),Z.disconnect()}},[Z,$]),U},bU=V$;var mU=require("react");var F$=({children:U})=>{let Z=mU.useContext(S),H=QU(),$=yU(H,"centrifuge");return mU.useEffect(()=>{if(!Z)return;let T=()=>{console.log("Centrifuge connected")},z=(J)=>{console.log("Centrifuge disconnected:",J)};if($)Z.on("connected",T),Z.on("disconnected",z),Z.connect();return()=>{if($)Z.disconnect()}},[Z,$]),U},vU=F$;var FH=require("axios-date-transformer");var VH=require("react/jsx-runtime");function _H(U,Z,H){if(!Z)return H;let $=U.replace(/^\//,""),T=Z[$];if(!T)return H;return VH.jsx(MU,{uiConfig:T})}var L=require("react/jsx-runtime"),K$=({location:U,fallback:Z,piecache:H,onError:$,queryOptions:T,disableGlobalForm:z})=>{let J=zU(),G=WU(),I=p(),X=e.useMemo(()=>FH.createAxiosDateTransformer({baseURL:J||""}),[J]),W=e.useMemo(()=>c(),[]),q=e.useMemo(()=>J?VU(J):null,[J]),V=e.useMemo(()=>J?_U(J,G):null,[J,G]),{data:B,isLoading:O,error:_}=UU.useQuery({queryKey:["uiConfig",U.pathname+U.search,J],enabled:!!J,queryFn:async()=>{let A=new URLSearchParams(U.search);A.set("__pieroot","web");let D="/api/content"+U.pathname+"?"+A.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",D);let Y=await X.get(D,{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:",Y.data);return Y.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(A)=>Math.min(1000*2**A,30000),...T}),K=_H(U.pathname,H,Z);if(!J)return K??null;if(I)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!H);if(_){if(I)console.error("[PieRoot] Error fetching UI configuration:",_),console.error("[PieRoot] Error details:",{message:_.message,status:_.response?.status,data:_.response?.data});return $?.(_),K}if(O||!B){if(I)console.log("[PieRoot] Loading state:",{isLoading:O,hasUiConfiguration:!!B});return K}if(I)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L.jsx(m.Provider,{value:W,children:L.jsx(b.Provider,{value:q,children:L.jsx(S.Provider,{value:V,children:L.jsx(f.Provider,{value:Z??L.jsx(L.Fragment,{}),children:L.jsx(bU,{children:L.jsx(vU,{children:z?L.jsx(N,{uiConfig:B}):L.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:L.jsx(N,{uiConfig:B})})})})})})})})},P$=(U)=>{let Z=e.useMemo(()=>new UU.QueryClient,[]),H=U.queryClient??Z;return L.jsx(v.Provider,{value:U.onNavigate,children:L.jsx(u.Provider,{value:U.config,children:L.jsx(h.Provider,{value:U.onError,children:L.jsx(UU.QueryClientProvider,{client:H,children:L.jsx(K$,{...U})})})})})},pU=P$;var ZU=require("react"),hU=require("@tanstack/react-query");var w=require("react/jsx-runtime"),A$=({location:U,fallback:Z,children:H,disableGlobalForm:$})=>{let T=zU(),z=WU(),J=p(),G=ZU.useMemo(()=>c(),[]),I=ZU.useMemo(()=>T?VU(T):null,[T]),X=ZU.useMemo(()=>T?_U(T,z):null,[T,z]);if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!Z);return w.jsx(m.Provider,{value:G,children:w.jsx(b.Provider,{value:I,children:w.jsx(S.Provider,{value:X,children:w.jsx(f.Provider,{value:Z??w.jsx(w.Fragment,{}),children:w.jsx(bU,{children:w.jsx(vU,{children:$?H:w.jsx("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:H})})})})})})})},M$=(U)=>{let[Z]=ZU.useState(()=>new hU.QueryClient),H=U.queryClient??Z;return w.jsx(v.Provider,{value:U.onNavigate,children:w.jsx(u.Provider,{value:U.config,children:w.jsx(h.Provider,{value:U.onError,children:w.jsx(hU.QueryClientProvider,{client:H,children:w.jsx(A$,{...U})})})})})},KH=M$;var PH=require("react");var HZ=require("react/jsx-runtime"),R$=HZ.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),L$=({apiServer:U,pathname:Z="/",search:H="",centrifugeServer:$,fallback:T,enableRenderingLog:z=!1})=>{let J=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",G=PH.useMemo(()=>({apiServer:J,centrifugeServer:$,enableRenderingLog:z,pageProcessor:"web"}),[J,$,z]);return HZ.jsx(pU,{location:{pathname:Z,search:H},config:G,fallback:T??R$,onNavigate:(X)=>{if(typeof window<"u")window.history.pushState(null,"",X)}})},AH=L$;var MH=require("react");var w$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],N$=new Set(["telegram:cloud","telegram:secure"]),BU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of w$){let H=Z+":";if(U.startsWith(H))return{source:Z,key:U.slice(H.length)}}return{source:"dom",key:U}},$Z=(U,Z=!1)=>{let{source:H,key:$}=BU(U);if(H==="sid"){let z=R.readSid();if(!z)throw Error("SocketIO isn't initialized properly");return[z]}if(H==="localStorage"||H==="sessionStorage")try{let z=R.readWebStorage(H==="localStorage"?"local":"session",$);if(z===null){if(Z)console.warn(`No ${H} value found for key ${$}`);return[]}return[z]}catch(z){if(Z)console.warn(`Failed to read ${H} key ${$}:`,z);return[]}if(H==="cookie"){let z=R.readCookie($);if(z===null){if(Z)console.warn(`No cookie found for key ${$}`);return[]}return[z]}if(H==="url"){let z=R.readUrlParams($);if(!z.length&&Z)console.warn(`No URL query param found for key ${$}`);return z}if(N$.has(H)){if(Z)console.warn(`Source ${H} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=R.readDomInput($);if(T===null){if(Z)console.warn(`No input found with name ${$}`);return[]}return T},E$=(U,Z,H)=>{let $=window.Telegram?.WebApp,T=U==="telegram:cloud"?$?.CloudStorage:$?.SecureStorage,z=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if(H)console.warn(`${z} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(Z,(G,I)=>{if(G){if(H)console.warn(`Failed to read ${z} key ${Z}:`,G);J([]);return}if(I==null||I===""){if(H)console.warn(`No ${z} value found for key ${Z}`);J([]);return}J([I])})}catch(G){if(H)console.warn(`Failed to read ${z} key ${Z}:`,G);J([])}})},zZ=async(U,Z=!1)=>{let{source:H,key:$}=BU(U);if(H==="telegram:cloud"||H==="telegram:secure")return E$(H,$,Z);if((H==="localStorage"||H==="sessionStorage")&&R.readWebStorageAsync)try{let T=await R.readWebStorageAsync(H==="localStorage"?"local":"session",$);if(T===null){if(Z)console.warn(`No ${H} value found for key ${$}`);return[]}return[T]}catch(T){if(Z)console.warn(`Failed to read ${H} key ${$}:`,T);return[]}return $Z(U,Z)},j$=(U,Z={},H=[],$,T)=>{let z=T?.renderingLogEnabled??!1,J=T?.timeout,G=T?.retryPolicy,I=G?.maxRetries??0,X=G?.baseDelay??1000,W=G?.retryOn??[502,503,504];if(z)console.log("Registering AJAX: ",$,Z,H);return async(q={})=>{if(!R.isClient()){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(!$||!U){if(z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(H.includes("sid"))await ZZ();let B=new FormData;for(let[K,A]of Object.entries({...Z,...q}))B.append(K,A);for(let K of H){let{key:A}=BU(K);for(let D of await zZ(K,z))B.append(A,D)}let O=V+"api/ajax_content"+$;U(null);let _;for(let K=0;K<=I;K++){if(K>0){let Y=X*2**(K-1);if(z)console.log(`AJAX retry ${K}/${I} after ${Y}ms`);await new Promise((Q)=>setTimeout(Q,Y))}let A=J!=null?new AbortController:null,D=A&&setTimeout(()=>A.abort(),J);try{let Y=await fetch(O,{method:"POST",body:B,signal:A?.signal});if(D)clearTimeout(D);if(!Y.ok&&W.includes(Y.status)&&K<I){_=Error(`HTTP ${Y.status}`);continue}let j=(Y.headers.get("content-type")||"").includes("application/json");if(!!Y.body?.getReader&&!j){let OU=Y.body.getReader(),fH=new TextDecoder,l="";while(!0){let{done:gU,value:CH}=await OU.read();if(gU)break;l+=fH.decode(CH,{stream:!0});let TZ=l.split(`
3
+ `);l=TZ.pop()??"";for(let xH of TZ){let uU=xH.trim();if(!uU)continue;try{let kH=JSON.parse(uU);U([kH])}catch{if(z)console.warn("Failed to parse streamed line:",uU)}}}if(l.trim())try{let gU=JSON.parse(l);U([gU])}catch{if(z)console.warn("Failed to parse final streamed line:",l)}return{}}else{let OU=await Y.json();return U(OU),OU}}catch(Y){if(D)clearTimeout(D);if(_=Y,K<I)continue;if(z)console.error("AJAX request failed:",Y);return U(null),Y}}if(z)console.error("AJAX request failed after retries:",_);return U(null),_}},RH=(U,Z={},H=[],$,T)=>{let{apiServer:z,enableRenderingLog:J}=$U(),G=JSON.stringify(Z),I=JSON.stringify(H),X=JSON.stringify(T);return MH.useMemo(()=>j$(U,Z,H,$,{apiServer:z,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[U,G,I,$,z,J,X])};var LH=require("clsx"),wH=require("tailwind-merge");function NH(...U){return wH.twMerge(LH.clsx(U))}var EH=()=>{R.submitGlobalForm()};var jH=(U,Z)=>`${U}${DU}${Z}`;
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{lazy as OJ}from"react";var v=new Map;function p$($,J){return J.catch(()=>{if(v.get($)===J)v.delete($)}),v.set($,J),J}function B$($,J){return OJ(()=>{if(v.has(J))return v.get(J);return p$(J,$().then((Z)=>Z))})}var c$=async($,J)=>{if(!J)return;if(v.has($))return v.get($);return p$($,J().then((Z)=>Z))};var T$=globalThis,_=($,J)=>{let Z=Symbol.for($);if(!(Z in T$))T$[Z]=J();return T$[Z]};var k=_("@swarm.ing/pieui:component-registry",()=>new Map),MJ=($)=>{if(!$.name)throw Error("Component registration requires a name");if(!$.component&&!$.loader)throw Error(`Component "${$.name}" requires component or loader`);let J={name:$.name,component:$.component,loader:$.loader,metadata:$.metadata,fallback:$.fallback,isLazy:!1};if(!J.component&&J.loader)J.component=B$(J.loader,$.name),J.isLazy=!0;return J};function a($){let J=MJ($);return k.set(J.name,J),J.component}var AJ=($)=>{$.forEach((J)=>a(J))},LJ=($)=>{k.delete($)},PJ=($)=>{return k.has($)},RJ=($)=>{return k.get($)?.metadata},d=($)=>{return k.get($)},wJ=()=>{return Array.from(k.keys())},EJ=()=>{return k.size},d$=()=>Array.from(k.values()).filter(($)=>$.isLazy&&typeof $.loader==="function").map(($)=>$.name),l$=($)=>{let J=k.get($);if(!J?.isLazy||typeof J.loader!=="function")return;return c$($,J.loader)},u$=!1,jJ=()=>{if(u$||typeof window>"u")return;u$=!0;let $=navigator.connection;if($?.saveData)return;if($?.effectiveType&&["slow-2g","2g"].includes($.effectiveType))return;let J=d$(),Z="requestIdleCallback"in window?(z)=>window.requestIdleCallback(z,{timeout:2000}):(z)=>window.setTimeout(z,300),Y=(z)=>{if(z>=J.length)return;Z(()=>{Promise.resolve().then(()=>l$(J[z])).catch(()=>{}).finally(()=>Y(z+1))})};Y(0)};import{useContext as t$}from"react";import{Linking as HZ,Pressable as qZ,View as DZ}from"react-native";import{useContext as V$,useEffect as F$,useRef as pJ}from"react";import{createContext as NJ,useContext as kJ}from"react";var p=_("@swarm.ing/pieui:context:pieConfig",()=>NJ(null)),l=()=>{let $=kJ(p);if(!$)throw Error("usePieConfig must be used within PieConfigProvider");return $},s=()=>{let{apiServer:$}=l();return $},t=s,e=()=>{let{centrifugeServer:$}=l();return $};var x=()=>{let{enableRenderingLog:$}=l();return $},s$=x;var U$="__piedemo__";import{createContext as yJ}from"react";import{Centrifuge as o$}from"centrifuge";var i$=_("@swarm.ing/pieui:centrifuge-cache",()=>new Map),$$=($,J)=>{if(!J)return null;let Z=`${$}::${J}`,Y=i$.get(Z);if(Y)return Y;async function z(){let W=await fetch($+"api/centrifuge/gen_token",{credentials:"include"});if(!W.ok){if(W.status===401||W.status===403)throw new o$.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${W.status}`)}return(await W.json()).token}let X=new o$(J,{getToken:z});return i$.set(Z,X),X},xJ=_("@swarm.ing/pieui:context:centrifuge",()=>yJ(null)),b=xJ;import{io as bJ}from"socket.io-client";import{createContext as SJ}from"react";var n$=_("@swarm.ing/pieui:socket-cache",()=>new Map),J$=($)=>{let J=n$.get($);if(J)return J;let Z=bJ($,{autoConnect:!1,transports:["websocket"]});return n$.set($,Z),Z},fJ=_("@swarm.ing/pieui:context:socket",()=>SJ(null)),S=fJ;import CJ from"mitt";import{createContext as vJ,useCallback as hJ,useContext as mJ}from"react";function c(){return _("@swarm.ing/pieui:mitt-emitter",()=>CJ())}var r$=_("@swarm.ing/pieui:context:mitt",()=>vJ(null));function gJ($){let J=mJ(r$);return hJ((Z,Y)=>{(J??c()).emit(`pie${Z}_${$}`,Y)},[$,J])}var f=r$;import{jsx as dJ,jsxs as lJ,Fragment as uJ}from"react/jsx-runtime";var cJ=({card:$,data:J,children:Z,useSocketioSupport:Y=!1,useCentrifugeSupport:z=!1,useMittSupport:X=!1,centrifugeChannel:W=void 0,methods:Q=void 0,stored:G=void 0})=>{let H=s$(),T=pJ(Q);if(T.current=Q,H)console.log("[PieCard] Rendering card:",$),console.log("[PieCard] Card data:",J),console.log("[PieCard] Component name:",J?.name),console.log("[PieCard] Real-time support:",{socketio:Y,centrifuge:z,mitt:X,centrifugeChannel:W}),console.log("[PieCard] Methods:",Q?Object.keys(Q):"none"),console.log("[PieCard] Has children:",!!Z);let N=V$(S),O=V$(b),F=V$(f);if(F$(()=>{if(!N||!Y||!T.current||!J.name){if(H&&Y)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!N,useSocketioSupport:Y,hasMethods:!!T.current,hasDataName:!!J?.name});return}let B=Object.keys(T.current??{}).map((q)=>{let D=`pie${q}_${J.name}`;if(H)console.log(`[PieCard] Socket.IO registering event: ${D}`);let U=(K)=>{T.current?.[q]?.(K)};return N.on(D,U),[D,U]});return()=>{B.forEach(([q,D])=>{if(H)console.log(`[PieCard] Socket.IO unregistering event: ${q}`);N.off(q,D)})}},[N,J.name,Y]),F$(()=>{if(!O||!z||!W||!J.name){if(H&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:z,hasCentrifugeChannel:!!W,hasMethods:!!T.current,hasDataName:!!J?.name});return}let B=Object.keys(T.current??{}).map((q)=>{let D=`pie${q}_${J.name}_${W}`;if(H)console.log(`[PieCard] Centrifuge subscribing to channel: ${D}`);let U=O.newSubscription(D);return U.on("publication",(K)=>{if(H)console.log(`[PieCard] Centrifuge received data on ${D}:`,K.data);T.current?.[q]?.(K.data)}),U.subscribe(),U});return()=>{B.forEach((q)=>{if(H)console.log("[PieCard] Centrifuge unsubscribing from channel");q.unsubscribe(),O.removeSubscription(q)})}},[O,W,J.name,z]),F$(()=>{if(!F||!X||!J.name){if(H&&X)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!F,useMittSupport:X,hasMethods:!!T.current,hasDataName:!!J?.name});return}let E=Object.keys(T.current??{}),B={};return E.forEach((q)=>{let D=`pie${q}_${J.name}`,U=(K)=>{if(H)console.log(`[PieCard] Mitt registering event: ${D}`);T.current?.[q]?.(K)};B[D]=U,F.on(D,U)}),()=>{Object.entries(B).forEach(([q,D])=>{if(H)console.log(`[PieCard] Mitt unregistering event: ${q}`);F.off(q,D)})}},[F,J.name,X]),H)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return lJ(uJ,{children:[dJ("input",{type:"hidden",name:J.name,value:JSON.stringify(G)}),Z]});return Z},V=cJ;import{useContext as a$,memo as XZ}from"react";import{createContext as sJ}from"react";import{jsx as nJ,Fragment as iJ}from"react/jsx-runtime";var oJ=_("@swarm.ing/pieui:context:fallback",()=>sJ(nJ(iJ,{}))),P=oJ;import{createContext as rJ}from"react";var aJ=_("@swarm.ing/pieui:context:lazyError",()=>rJ(void 0)),C=aJ;import{Component as tJ,Suspense as eJ}from"react";import{jsx as ZZ}from"react/jsx-runtime";var $Z=2,JZ=400;class u extends tJ{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch($){if(this.props.onError?.($),this.state.attempt<$Z){let J=JZ*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},J)}}componentDidUpdate($){if($.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 ZZ(eJ,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as I$}from"react/jsx-runtime";function YZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=a$(P),Y=a$(C),z=x();if(z)console.log("[UI] Rendering component:",$.card),console.log("[UI] Component data:",$.data),console.log("[UI] Component content:",$.content),console.log("[UI] Has setUiAjaxConfiguration:",!!J);let X=d($.card);if(!X?.component){if(z)console.warn(`[UI] Component not found in registry: ${$.card}`),console.log("[UI] Returning fallback component");return Z}if(z)console.log("[UI] Found component in registry:",{name:X.name,isLazy:X.isLazy,hasMetadata:!!X.metadata});let W=X.component,Q=I$(W,{data:$.data,content:$.content,setUiAjaxConfiguration:J});if(X.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",X.name);return I$(u,{name:X.name,fallback:X.fallback?I$(X.fallback,{}):Z,onError:Y,children:Q})}if(z)console.log("[UI] Rendering component directly:",X.name);return Q}var A=XZ(YZ);import{createContext as zZ}from"react";var WZ=_("@swarm.ing/pieui:context:navigate",()=>zZ(void 0)),y=WZ;import{createContext as QZ}from"react";var GZ=_("@swarm.ing/pieui:context:uiRenderer",()=>QZ(null)),R=GZ;import{jsx as Z$}from"react/jsx-runtime";var KZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),_Z=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,url:z,sx:X}=$,W=t$(y),Q=t$(R)??A,G=()=>{if(!z)return;if(KZ(z))HZ.openURL(z).catch(()=>{});else W?.(z)},H=Z$(Q,{setUiAjaxConfiguration:Z,uiConfig:J});return Z$(V,{card:Y,data:$,children:z?Z$(qZ,{onPress:G,style:X,children:H}):Z$(DZ,{style:X,children:H})})},O$=_Z;import{useContext as BZ}from"react";import{View as TZ}from"react-native";import{jsx as M$}from"react/jsx-runtime";var UZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,sx:z}=$,X=BZ(R)??A;return M$(V,{card:Y,data:$,children:M$(TZ,{style:z,children:J.map((W,Q)=>M$(X,{uiConfig:W,setUiAjaxConfiguration:Z},`children-${Q}`))})})},A$=UZ;import{useContext as VZ}from"react";import{View as FZ}from"react-native";import{jsx as L$}from"react/jsx-runtime";var IZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,sx:z}=$,X=VZ(R)??A;return L$(V,{card:Y,data:$,children:L$(FZ,{style:z,children:J.map((W,Q)=>L$(X,{uiConfig:W,setUiAjaxConfiguration:Z},`children-${Q}`))})})},P$=IZ;import{useEffect as e$,useState as OZ}from"react";var X$=new Map,h=($,J)=>{X$.set($,J)},m=($)=>{X$.delete($)},R$=($)=>{return X$.has($)?X$.get($):null};import{jsx as AZ}from"react/jsx-runtime";var MZ=({data:$})=>{let{name:J,value:Z,useSocketioSupport:Y,useCentrifugeSupport:z,useMittSupport:X,centrifugeChannel:W}=$,[Q,G]=OZ(Z);return e$(()=>{G(Z)},[Z]),e$(()=>{return h(J,[Q]),()=>m(J)},[J,Q]),AZ(V,{card:"HiddenCard",data:$,useSocketioSupport:Y,useCentrifugeSupport:z,useMittSupport:X,centrifugeChannel:W,methods:{update:({value:H})=>{G(H)}}})},w$=MZ;import{useEffect as $J,useState as RZ}from"react";var Y$={};function LZ($){Y$={...Y$,...$}}function L(){return Y$}function PZ(){Y$={}}import{jsx as EZ}from"react/jsx-runtime";var wZ=({data:$})=>{let{name:J,key:Z,value:Y,useSocketioSupport:z,useCentrifugeSupport:X,useMittSupport:W,centrifugeChannel:Q}=$,[G,H]=RZ(Y);return $J(()=>{H(Y)},[Y]),$J(()=>{return L().storage?.setItem?.(Z,G),h(J,[G]),()=>m(J)},[Z,J,G]),EZ(V,{card:"DeviceStorageCard",data:$,useSocketioSupport:z,useCentrifugeSupport:X,useMittSupport:W,centrifugeChannel:Q,methods:{update:({value:T})=>{H(T)},remove:()=>{L().storage?.removeItem?.(Z),H("")}}})},E$=wZ;import{useEffect as JJ,useState as jZ}from"react";import{jsx as kZ}from"react/jsx-runtime";var NZ=({data:$})=>{let{name:J,key:Z,value:Y,useSocketioSupport:z,useCentrifugeSupport:X,useMittSupport:W,centrifugeChannel:Q}=$,[G,H]=jZ(Y);return JJ(()=>{H(Y)},[Y]),JJ(()=>{return L().sessionStorage?.setItem?.(Z,G),h(J,[G]),()=>m(J)},[Z,J,G]),kZ(V,{card:"SessionStorageCard",data:$,useSocketioSupport:z,useCentrifugeSupport:X,useMittSupport:W,centrifugeChannel:Q,methods:{update:({value:T})=>{H(T)},remove:()=>{L().sessionStorage?.removeItem?.(Z),H("")}}})},j$=NZ;import{useContext as yZ,useMemo as xZ,useRef as bZ}from"react";import{Alert as SZ,Linking as fZ}from"react-native";import{jsx as hZ}from"react/jsx-runtime";var CZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),vZ=({data:$})=>{let{useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:Y,centrifugeChannel:z}=$,X=yZ(y),W=bZ(X);W.current=X;let Q=xZ(()=>{let G=(H)=>{if(!H)return;if(CZ(H))fZ.openURL(H).catch(()=>{});else W.current?.(H)};return{alert:(H)=>SZ.alert(String(H.title??""),String(H.message??"")),log:(H)=>console.log("Log event",H),push:(H)=>console.warn("[IOEventsCard] push notifications are not supported on native",H?.title),redirect:(H)=>G(H.to),reload:(H)=>G(H.to)}},[]);return hZ(V,{card:"IOEventsCard",data:$,useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:Y,centrifugeChannel:z,methods:Q})},N$=vZ;import{useEffect as mZ,useState as gZ}from"react";import{Text as pZ}from"react-native";import{jsx as ZJ}from"react/jsx-runtime";var cZ=($)=>($??"").replace(/<[^>]*>/g,"").replace(/&nbsp;/g," ").replace(/\s+/g," ").trim(),uZ=({data:$})=>{let{html:J,useSocketioSupport:Z,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:X}=$,[W,Q]=gZ(J);return mZ(()=>{Q(J)},[J]),ZJ(V,{card:"HTMLEmbedCard",data:$,methods:{update:(G)=>Q(G.value)},useCentrifugeSupport:Y,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:X,children:ZJ(pZ,{children:cZ(W)})})},k$=uZ;import{useContext as XJ,useEffect as dZ}from"react";import{Linking as lZ}from"react-native";import{jsx as iZ,Fragment as oZ}from"react/jsx-runtime";var sZ=({data:$})=>{let{url:J}=$,Z=XJ(y),Y=XJ(P);return dZ(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(J))lZ.openURL(J).catch(()=>{});else Z?.(J)},[J,Z]),iZ(oZ,{children:Y})},y$=sZ;import{useContext as nZ}from"react";import{jsx as YJ}from"react/jsx-runtime";var rZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y}=$,z=nZ(R)??A;return YJ(V,{card:Y,data:$,children:J.map((X,W)=>{return YJ(z,{uiConfig:X,setUiAjaxConfiguration:Z},`children-${W}`)})})},x$=rZ;import{useCallback as b$,useContext as S$,useEffect as aZ,useRef as tZ,useState as zJ}from"react";import{jsx as WJ}from"react/jsx-runtime";var eZ=({data:$,content:J})=>{let{useLoader:Z,noReturn:Y,returnType:z,useSocketioSupport:X,useCentrifugeSupport:W,useMittSupport:Q,centrifugeChannel:G}=$,H=S$(P),T=S$(R)??A,[N,O]=zJ(!1),[F,E]=zJ(null),B=tZ(J),q=S$(f),D=b$((j)=>{if(j===null)O(!0);else if(O(!1),!Y)B.current=j;if(!Y)E(j)},[Y]),U=b$((j)=>{B.current=j.content,E(j.content)},[]),K=b$((j)=>{if(j===null)O(!0);else if(O(!1),!Y)for(let n of j)q?.emit(n.name,n.data)},[Y,q]);if(aZ(()=>{E(J),O(!1)},[J]),!F&&Z)return H;return WJ(V,{card:"AjaxGroupCard",data:$,methods:{changeContent:U},useSocketioSupport:X,useCentrifugeSupport:W,useMittSupport:Q,centrifugeChannel:G,children:WJ(T,{uiConfig:F??B.current,setUiAjaxConfiguration:z==="events"?K:D})})},f$=eZ;var $0=[{name:"BoxCard",component:O$},{name:"SequenceCard",component:A$},{name:"OneOfCard",component:P$},{name:"HiddenCard",component:w$},{name:"DeviceStorageCard",component:E$},{name:"SessionStorageCard",component:j$},{name:"IOEventsCard",component:N$},{name:"HTMLEmbedCard",component:k$},{name:"AutoRedirectCard",component:y$},{name:"UnionCard",component:x$},{name:"AjaxGroupCard",component:f$}];for(let $ of $0)a($);import{useMemo as v$,useState as B0}from"react";import{QueryClient as T0,QueryClientProvider as U0}from"@tanstack/react-query";import{useContext as G0,useEffect as H0}from"react";import{useEffect as J0,useState as Z0}from"react";var z$=new Map,W$=new Map;function Q$($,J){let Z=`${$}::${J}`,Y=$?z$.get(Z):void 0,[z,X]=Z0(Y??null);return J0(()=>{if(!$)return;if(z$.has(Z)){X(z$.get(Z));return}let W=W$.get(Z);if(!W)W=fetch($+`api/support/${J}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return z$.set(Z,G),W$.delete(Z),G}).catch((G)=>{throw W$.delete(Z),G}),W$.set(Z,W);let Q=!1;return W.then((G)=>{if(!Q)X(G)}).catch(()=>{}),()=>{Q=!0}},[$,J,Z]),z}var X0=($)=>{let J=document.cookie?document.cookie.split(";"):[];for(let Z of J){let Y=Z.indexOf("=");if((Y===-1?Z:Z.slice(0,Y)).trim()===$){let X=Y===-1?"":Z.slice(Y+1).trim();try{return decodeURIComponent(X)}catch{return X}}}return null},Y0={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid($){if(typeof window<"u")window.sid=$},readWebStorage($,J){return($==="local"?window.localStorage:window.sessionStorage).getItem(J)},readCookie:X0,readUrlParams($){return new URLSearchParams(window.location.search).getAll($)},readDomInput($){let J=document.getElementsByName($);if(!J.length)return null;let Z=J[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[]},submitGlobalForm(){if(typeof document>"u")return;let $=document.getElementById("piedata_global_form");$&&$.submit()}},QJ=Y0;var GJ,z0={isClient(){return!0},readSid(){return GJ},setSid($){GJ=$},readWebStorage($,J){let Z=L(),Y=$==="local"?Z.storage:Z.sessionStorage;return Y?Y.getItem(J):null},async readWebStorageAsync($,J){let Z=L(),Y=$==="local"?Z.asyncStorage:Z.asyncSessionStorage;if(Y)return Y.getItem(J);let z=$==="local"?Z.storage:Z.sessionStorage;return z?z.getItem(J):null},readCookie($){let J=L();return J.getCookie?J.getCookie($):null},readUrlParams($){let J=L();return J.getRouteParams?J.getRouteParams($):[]},readDomInput($){let J=L();return J.getInput?J.getInput($):R$($)},submitGlobalForm(){L().submitForm?.()}},HJ=z0;var W0=typeof navigator<"u"&&navigator.product==="ReactNative",Q0=W0?HJ:QJ,I=Q0;var o=_("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function qJ(){o.resolve?.()}function C$(){if(!I.isClient())return Promise.resolve();if(I.readSid()!==void 0)return Promise.resolve();if(!o.promise)o.promise=new Promise(($)=>{o.resolve=()=>{$()}});return o.promise}var q0=({children:$})=>{let J=G0(S),Z=t(),Y=Q$(Z,"socketIO"),z=(X)=>{if(I.isClient())I.setSid(X.sid),qJ(),console.log(`SocketIO initialized: ${I.readSid()}`)};return H0(()=>{if(!J)return;let X=()=>{console.log("SocketIO connected")},W=(Q)=>{console.log(`SocketIO disconnected: ${Q}`),J.connect()};if(Y)J.on("pieinit",z),J.on("connect",X),J.on("disconnect",W),J.connect();return()=>{if(Y)J.off("pieinit",z),J.off("connect",X),J.off("disconnect",W),J.disconnect()}},[J,Y]),$},G$=q0;import{useContext as D0,useEffect as K0}from"react";var _0=({children:$})=>{let J=D0(b),Z=t(),Y=Q$(Z,"centrifuge");return K0(()=>{if(!J)return;let z=()=>{console.log("Centrifuge connected")},X=(W)=>{console.log("Centrifuge disconnected:",W)};if(Y)J.on("connected",z),J.on("disconnected",X),J.connect();return()=>{if(Y)J.disconnect()}},[J,Y]),$},H$=_0;import{jsx as w,Fragment as I0}from"react/jsx-runtime";var V0=({location:$,fallback:J,children:Z,disableGlobalForm:Y})=>{let z=s(),X=e(),W=x(),Q=v$(()=>c(),[]),G=v$(()=>z?J$(z):null,[z]),H=v$(()=>z?$$(z,X):null,[z,X]);if(W)console.log("[PieRoot] Rendering with location:",$),console.log("[PieRoot] API_SERVER:",z),console.log("[PieRoot] CENTRIFUGE_SERVER:",X),console.log("[PieRoot] Fallback provided:",!!J);return w(f.Provider,{value:Q,children:w(S.Provider,{value:G,children:w(b.Provider,{value:H,children:w(P.Provider,{value:J??w(I0,{}),children:w(G$,{children:w(H$,{children:Y?Z:w("form",{id:"piedata_global_form",action:z+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},F0=($)=>{let[J]=B0(()=>new T0),Z=$.queryClient??J;return w(y.Provider,{value:$.onNavigate,children:w(p.Provider,{value:$.config,children:w(C.Provider,{value:$.onError,children:w(U0,{client:Z,children:w(V0,{...$})})})})})},h$=F0;import{jsx as M0}from"react/jsx-runtime";var O0=($)=>{return M0(h$,{...$,disableGlobalForm:!0})},A0=O0;import{useMemo as i}from"react";import{QueryClient as P0,QueryClientProvider as R0,useQuery as w0}from"@tanstack/react-query";import{createAxiosDateTransformer as E0}from"axios-date-transformer";import{useContext as DJ}from"react";import{jsx as q$}from"react/jsx-runtime";function KJ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=DJ(P),Y=DJ(C),z=x();if(z)console.log("[UILoading] Rendering fallback for:",$.card),console.log("[UILoading] Component data:",$.data),console.log("[UILoading] Component content:",$.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!J);let X=d($.card);if(!X?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${$.card}`),console.log("[UILoading] Returning fallback component");return Z}if(z)console.log("[UILoading] Found component in registry:",{name:X.name,isLazy:X.isLazy,hasMetadata:!!X.metadata,hasFallback:!!X.fallback});if(X.fallback){if(z)console.log("[UILoading] Rendering fallback for:",X.name);let G=X.fallback;return q$(G,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",X.name);let W=X.component,Q=q$(R.Provider,{value:KJ,children:q$(W,{data:$.data,content:$.content,setUiAjaxConfiguration:J})});if(X.isLazy)return q$(u,{name:X.name,fallback:Z,onError:Y,children:Q});return Q}var m$=KJ;import{jsx as L0}from"react/jsx-runtime";function _J($,J,Z){if(!J)return Z;let Y=$.replace(/^\//,""),z=J[Y];if(!z)return Z;return L0(m$,{uiConfig:z})}import{jsx as M,Fragment as k0}from"react/jsx-runtime";var j0=({location:$,fallback:J,piecache:Z,onError:Y,queryOptions:z,disableGlobalForm:X})=>{let W=s(),Q=e(),G=x(),H=i(()=>E0({baseURL:W||""}),[W]),T=i(()=>c(),[]),N=i(()=>W?J$(W):null,[W]),O=i(()=>W?$$(W,Q):null,[W,Q]),{data:F,isLoading:E,error:B}=w0({queryKey:["uiConfig",$.pathname+$.search,W],enabled:!!W,queryFn:async()=>{let D=new URLSearchParams($.search);D.set("__pieroot","web");let U="/api/content"+$.pathname+"?"+D.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",U);let K=await H.get(U,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",K.data);return K.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(D)=>Math.min(1000*2**D,30000),...z}),q=_J($.pathname,Z,J);if(!W)return q??null;if(G)console.log("[PieRoot] Rendering with location:",$),console.log("[PieRoot] API_SERVER:",W),console.log("[PieRoot] CENTRIFUGE_SERVER:",Q),console.log("[PieRoot] Fallback provided:",!!J),console.log("[PieRoot] Piecache provided:",!!Z);if(B){if(G)console.error("[PieRoot] Error fetching UI configuration:",B),console.error("[PieRoot] Error details:",{message:B.message,status:B.response?.status,data:B.response?.data});return Y?.(B),q}if(E||!F){if(G)console.log("[PieRoot] Loading state:",{isLoading:E,hasUiConfiguration:!!F});return q}if(G)console.log("[PieRoot] UI configuration loaded successfully:",F),console.log("[PieRoot] Rendering UI with configuration");return M(f.Provider,{value:T,children:M(S.Provider,{value:N,children:M(b.Provider,{value:O,children:M(P.Provider,{value:J??M(k0,{}),children:M(G$,{children:M(H$,{children:X?M(A,{uiConfig:F}):M("form",{id:"piedata_global_form",action:W+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:M(A,{uiConfig:F})})})})})})})})},N0=($)=>{let J=i(()=>new P0,[]),Z=$.queryClient??J;return M(y.Provider,{value:$.onNavigate,children:M(p.Provider,{value:$.config,children:M(C.Provider,{value:$.onError,children:M(R0,{client:Z,children:M(j0,{...$})})})})})},y0=N0;import{useMemo as x0}from"react";var b0=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],S0=new Set(["telegram:cloud","telegram:secure"]),D$=($)=>{if($==="sid")return{source:"sid",key:"sid"};for(let J of b0){let Z=J+":";if($.startsWith(Z))return{source:J,key:$.slice(Z.length)}}return{source:"dom",key:$}},BJ=($,J=!1)=>{let{source:Z,key:Y}=D$($);if(Z==="sid"){let X=I.readSid();if(!X)throw Error("SocketIO isn't initialized properly");return[X]}if(Z==="localStorage"||Z==="sessionStorage")try{let X=I.readWebStorage(Z==="localStorage"?"local":"session",Y);if(X===null){if(J)console.warn(`No ${Z} value found for key ${Y}`);return[]}return[X]}catch(X){if(J)console.warn(`Failed to read ${Z} key ${Y}:`,X);return[]}if(Z==="cookie"){let X=I.readCookie(Y);if(X===null){if(J)console.warn(`No cookie found for key ${Y}`);return[]}return[X]}if(Z==="url"){let X=I.readUrlParams(Y);if(!X.length&&J)console.warn(`No URL query param found for key ${Y}`);return X}if(S0.has(Z)){if(J)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let z=I.readDomInput(Y);if(z===null){if(J)console.warn(`No input found with name ${Y}`);return[]}return z},f0=($,J,Z)=>{let Y=window.Telegram?.WebApp,z=$==="telegram:cloud"?Y?.CloudStorage:Y?.SecureStorage,X=$==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!z){if(Z)console.warn(`${X} is not available`);return Promise.resolve([])}return new Promise((W)=>{try{z.getItem(J,(Q,G)=>{if(Q){if(Z)console.warn(`Failed to read ${X} key ${J}:`,Q);W([]);return}if(G==null||G===""){if(Z)console.warn(`No ${X} value found for key ${J}`);W([]);return}W([G])})}catch(Q){if(Z)console.warn(`Failed to read ${X} key ${J}:`,Q);W([])}})},TJ=async($,J=!1)=>{let{source:Z,key:Y}=D$($);if(Z==="telegram:cloud"||Z==="telegram:secure")return f0(Z,Y,J);if((Z==="localStorage"||Z==="sessionStorage")&&I.readWebStorageAsync)try{let z=await I.readWebStorageAsync(Z==="localStorage"?"local":"session",Y);if(z===null){if(J)console.warn(`No ${Z} value found for key ${Y}`);return[]}return[z]}catch(z){if(J)console.warn(`Failed to read ${Z} key ${Y}:`,z);return[]}return BJ($,J)},C0=($,J={},Z=[],Y,z)=>{let X=z?.renderingLogEnabled??!1,W=z?.timeout,Q=z?.retryPolicy,G=Q?.maxRetries??0,H=Q?.baseDelay??1000,T=Q?.retryOn??[502,503,504];if(X)console.log("Registering AJAX: ",Y,J,Z);return async(N={})=>{if(!I.isClient()){if(X)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let O=z?.apiServer;if(!O){if(X)console.warn("AJAX skipped: apiServer is missing");return}if(!Y||!$){if(X)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await C$();let F=new FormData;for(let[q,D]of Object.entries({...J,...N}))F.append(q,D);for(let q of Z){let{key:D}=D$(q);for(let U of await TJ(q,X))F.append(D,U)}let E=O+"api/ajax_content"+Y;$(null);let B;for(let q=0;q<=G;q++){if(q>0){let K=H*2**(q-1);if(X)console.log(`AJAX retry ${q}/${G} after ${K}ms`);await new Promise((j)=>setTimeout(j,K))}let D=W!=null?new AbortController:null,U=D&&setTimeout(()=>D.abort(),W);try{let K=await fetch(E,{method:"POST",body:F,signal:D?.signal});if(U)clearTimeout(U);if(!K.ok&&T.includes(K.status)&&q<G){B=Error(`HTTP ${K.status}`);continue}let n=(K.headers.get("content-type")||"").includes("application/json");if(!!K.body?.getReader&&!n){let r=K.body.getReader(),UJ=new TextDecoder,g="";while(!0){let{done:K$,value:VJ}=await r.read();if(K$)break;g+=UJ.decode(VJ,{stream:!0});let g$=g.split(`
3
- `);g=g$.pop()??"";for(let FJ of g$){let _$=FJ.trim();if(!_$)continue;try{let IJ=JSON.parse(_$);$([IJ])}catch{if(X)console.warn("Failed to parse streamed line:",_$)}}}if(g.trim())try{let K$=JSON.parse(g);$([K$])}catch{if(X)console.warn("Failed to parse final streamed line:",g)}return{}}else{let r=await K.json();return $(r),r}}catch(K){if(U)clearTimeout(U);if(B=K,q<G)continue;if(X)console.error("AJAX request failed:",K);return $(null),K}}if(X)console.error("AJAX request failed after retries:",B);return $(null),B}},v0=($,J={},Z=[],Y,z)=>{let{apiServer:X,enableRenderingLog:W}=l(),Q=JSON.stringify(J),G=JSON.stringify(Z),H=JSON.stringify(z);return x0(()=>C0($,J,Z,Y,{apiServer:X,renderingLogEnabled:W,timeout:z?.timeout,retryPolicy:z?.retryPolicy}),[$,Q,G,Y,X,W,H])};var h0=()=>{I.submitGlobalForm()};var m0=($,J)=>`${$}${U$}${J}`;export{gJ as usePieEmit,v0 as useAjaxSubmit,LJ as unregisterComponent,B$ as trackLazy,h0 as submitGlobalForm,h as setNativeField,PZ as resetNativeClientSources,k as registry,a as registerPieComponent,AJ as registerMultipleComponents,R$ as readNativeField,TJ as readAjaxKeyAsync,BJ as readAjaxKey,l$ as preloadComponent,jJ as prefetchLazyComponents,m0 as pieName,D$ as parseDepName,PJ as hasComponent,EJ as getRegistrySize,d as getRegistryEntry,L as getNativeClientConfig,d$ as getLazyComponentNames,c as getEmitter,RJ as getComponentMeta,wJ as getAllRegisteredComponents,LZ as configureNativeClientSources,m as clearNativeField,x$ as UnionCard,R as UIRendererContext,m$ as UILoading,A as UI,S as SocketIOContext,j$ as SessionStorageCard,A$ as SequenceCard,y0 as PieRoot,A0 as PieNativeRoot,p as PieConfigContext,V as PieCard,h$ as PieBaseRoot,U$ as PIEBREAK,P$ as OneOfCard,f as MittContext,N$ as IOEventsCard,w$ as HiddenCard,k$ as HTMLEmbedCard,P as FallbackContext,E$ as DeviceStorageCard,b as CentrifugeIOContext,O$ as BoxCard,y$ as AutoRedirectCard,f$ as AjaxGroupCard};
2
+ import{lazy as LJ}from"react";var h=new Map;function p$($,J){return J.catch(()=>{if(h.get($)===J)h.delete($)}),h.set($,J),J}function B$($,J){return LJ(()=>{if(h.has(J))return h.get(J);return p$(J,$().then((Z)=>Z))})}var c$=async($,J)=>{if(!J)return;if(h.has($))return h.get($);return p$($,J().then((Z)=>Z))};var T$=globalThis,T=($,J)=>{let Z=Symbol.for($);if(!(Z in T$))T$[Z]=J();return T$[Z]};var y=T("@swarm.ing/pieui:component-registry",()=>new Map),PJ=($)=>{if(!$.name)throw Error("Component registration requires a name");if(!$.component&&!$.loader)throw Error(`Component "${$.name}" requires component or loader`);let J={name:$.name,component:$.component,loader:$.loader,metadata:$.metadata,fallback:$.fallback,isLazy:!1};if(!J.component&&J.loader)J.component=B$(J.loader,$.name),J.isLazy=!0;return J};function a($){let J=PJ($);return y.set(J.name,J),J.component}var wJ=($)=>{$.forEach((J)=>a(J))},RJ=($)=>{y.delete($)},EJ=($)=>{return y.has($)},jJ=($)=>{return y.get($)?.metadata},l=($)=>{return y.get($)},NJ=()=>{return Array.from(y.keys())},kJ=()=>{return y.size},d$=()=>Array.from(y.values()).filter(($)=>$.isLazy&&typeof $.loader==="function").map(($)=>$.name),l$=($)=>{let J=y.get($);if(!J?.isLazy||typeof J.loader!=="function")return;return c$($,J.loader)},u$=!1,yJ=()=>{if(u$||typeof window>"u")return;u$=!0;let $=navigator.connection;if($?.saveData)return;if($?.effectiveType&&["slow-2g","2g"].includes($.effectiveType))return;let J=d$(),Z="requestIdleCallback"in window?(W)=>window.requestIdleCallback(W,{timeout:2000}):(W)=>window.setTimeout(W,300),Y=(W)=>{if(W>=J.length)return;Z(()=>{Promise.resolve().then(()=>l$(J[W])).catch(()=>{}).finally(()=>Y(W+1))})};Y(0)};import{useContext as JJ}from"react";import{Linking as qZ,Pressable as DZ,View as KZ}from"react-native";import{useContext as V$,useEffect as F$,useRef as e$}from"react";import{createContext as bJ,useContext as xJ}from"react";var c=T("@swarm.ing/pieui:context:pieConfig",()=>bJ(null)),s=()=>{let $=xJ(c);if(!$)throw Error("usePieConfig must be used within PieConfigProvider");return $},o=()=>{let{apiServer:$}=s();return $},t=o,e=()=>{let{centrifugeServer:$}=s();return $};var x=()=>{let{enableRenderingLog:$}=s();return $},s$=x;var U$="__piedemo__";import{createContext as SJ}from"react";import{Centrifuge as o$}from"centrifuge";var i$=T("@swarm.ing/pieui:centrifuge-cache",()=>new Map),$$=($,J)=>{if(!J)return null;let Z=`${$}::${J}`,Y=i$.get(Z);if(Y)return Y;async function W(){let z=await fetch($+"api/centrifuge/gen_token",{credentials:"include"});if(!z.ok){if(z.status===401||z.status===403)throw new o$.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let X=new o$(J,{getToken:W});return i$.set(Z,X),X},fJ=T("@swarm.ing/pieui:context:centrifuge",()=>SJ(null)),S=fJ;import{io as CJ}from"socket.io-client";import{createContext as vJ}from"react";var n$=T("@swarm.ing/pieui:socket-cache",()=>new Map),J$=($)=>{let J=n$.get($);if(J)return J;let Z=CJ($,{autoConnect:!1,transports:["websocket"]});return n$.set($,Z),Z},hJ=T("@swarm.ing/pieui:context:socket",()=>vJ(null)),f=hJ;import mJ from"mitt";import{createContext as gJ,useCallback as pJ,useContext as cJ}from"react";function u(){return T("@swarm.ing/pieui:mitt-emitter",()=>mJ())}var r$=T("@swarm.ing/pieui:context:mitt",()=>gJ(null));function uJ($){let J=cJ(r$);return pJ((Z,Y)=>{(J??u()).emit(`pie${Z}_${$}`,Y)},[$,J])}var C=r$;function a$($){return $.wasRecovering===!0&&$.recovered===!1}function t$($){return $.recoverable===!1}import{jsx as sJ,jsxs as oJ,Fragment as lJ}from"react/jsx-runtime";var dJ=({card:$,data:J,children:Z,useSocketioSupport:Y=!1,useCentrifugeSupport:W=!1,useMittSupport:X=!1,centrifugeChannel:z=void 0,methods:Q=void 0,stored:G=void 0,onResync:H=void 0})=>{let D=s$(),M=e$(Q);M.current=Q;let E=e$(H);if(E.current=H,D)console.log("[PieCard] Rendering card:",$),console.log("[PieCard] Card data:",J),console.log("[PieCard] Component name:",J?.name),console.log("[PieCard] Real-time support:",{socketio:Y,centrifuge:W,mitt:X,centrifugeChannel:z}),console.log("[PieCard] Methods:",Q?Object.keys(Q):"none"),console.log("[PieCard] Has children:",!!Z);let I=V$(f),L=V$(S),U=V$(C);if(F$(()=>{if(!I||!Y||!M.current||!J.name){if(D&&Y)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!I,useSocketioSupport:Y,hasMethods:!!M.current,hasDataName:!!J?.name});return}let V=Object.keys(M.current??{}).map((q)=>{let _=`pie${q}_${J.name}`;if(D)console.log(`[PieCard] Socket.IO registering event: ${_}`);let B=(P)=>{M.current?.[q]?.(P)};return I.on(_,B),[_,B]});return()=>{V.forEach(([q,_])=>{if(D)console.log(`[PieCard] Socket.IO unregistering event: ${q}`);I.off(q,_)})}},[I,J.name,Y]),F$(()=>{if(!L||!W||!z||!J.name){if(D&&W)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:W,hasCentrifugeChannel:!!z,hasMethods:!!M.current,hasDataName:!!J?.name});return}let V=Object.keys(M.current??{}).map((q)=>{let _=`pie${q}_${J.name}_${z}`;if(D)console.log(`[PieCard] Centrifuge subscribing to channel: ${_}`);let B=L.newSubscription(_,{recoverable:!0,positioned:!0});return B.on("publication",(P)=>{if(D)console.log(`[PieCard] Centrifuge received data on ${_}:`,P.data);M.current?.[q]?.(P.data)}),B.on("subscribed",(P)=>{if(t$(P))console.warn(`[PieCard] Centrifuge channel ${_} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(a$(P)){if(D)console.log(`[PieCard] Centrifuge recovery gap on ${_}; requesting resync`);E.current?.({channel:_,reason:"gap"})}}),B.subscribe(),B});return()=>{V.forEach((q)=>{if(D)console.log("[PieCard] Centrifuge unsubscribing from channel");q.unsubscribe(),L.removeSubscription(q)})}},[L,z,J.name,W]),F$(()=>{if(!U||!X||!J.name){if(D&&X)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!U,useMittSupport:X,hasMethods:!!M.current,hasDataName:!!J?.name});return}let K=Object.keys(M.current??{}),V={};return K.forEach((q)=>{let _=`pie${q}_${J.name}`,B=(P)=>{if(D)console.log(`[PieCard] Mitt registering event: ${_}`);M.current?.[q]?.(P)};V[_]=B,U.on(_,B)}),()=>{Object.entries(V).forEach(([q,_])=>{if(D)console.log(`[PieCard] Mitt unregistering event: ${q}`);U.off(q,_)})}},[U,J.name,X]),D)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return oJ(lJ,{children:[sJ("input",{type:"hidden",name:J.name,value:JSON.stringify(G)}),Z]});return Z},F=dJ;import{useContext as $J,memo as WZ}from"react";import{createContext as iJ}from"react";import{jsx as aJ,Fragment as rJ}from"react/jsx-runtime";var nJ=T("@swarm.ing/pieui:context:fallback",()=>iJ(aJ(rJ,{}))),j=nJ;import{createContext as tJ}from"react";var eJ=T("@swarm.ing/pieui:context:lazyError",()=>tJ(void 0)),v=eJ;import{Component as $Z,Suspense as JZ}from"react";import{jsx as YZ}from"react/jsx-runtime";var ZZ=2,XZ=400;class d extends $Z{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch($){if(this.props.onError?.($),this.state.attempt<ZZ){let J=XZ*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},J)}}componentDidUpdate($){if($.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 YZ(JZ,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as I$}from"react/jsx-runtime";function zZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=$J(j),Y=$J(v),W=x();if(W)console.log("[UI] Rendering component:",$.card),console.log("[UI] Component data:",$.data),console.log("[UI] Component content:",$.content),console.log("[UI] Has setUiAjaxConfiguration:",!!J);let X=l($.card);if(!X?.component){if(W)console.warn(`[UI] Component not found in registry: ${$.card}`),console.log("[UI] Returning fallback component");return Z}if(W)console.log("[UI] Found component in registry:",{name:X.name,isLazy:X.isLazy,hasMetadata:!!X.metadata});let z=X.component,Q=I$(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J});if(X.isLazy){if(W)console.log("[UI] Rendering lazy component with Suspense:",X.name);return I$(d,{name:X.name,fallback:X.fallback?I$(X.fallback,{}):Z,onError:Y,children:Q})}if(W)console.log("[UI] Rendering component directly:",X.name);return Q}var w=WZ(zZ);import{createContext as QZ}from"react";var GZ=T("@swarm.ing/pieui:context:navigate",()=>QZ(void 0)),b=GZ;import{createContext as HZ}from"react";var _Z=T("@swarm.ing/pieui:context:uiRenderer",()=>HZ(null)),N=_Z;import{jsx as Z$}from"react/jsx-runtime";var BZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),TZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,url:W,sx:X}=$,z=JJ(b),Q=JJ(N)??w,G=()=>{if(!W)return;if(BZ(W))qZ.openURL(W).catch(()=>{});else z?.(W)},H=Z$(Q,{setUiAjaxConfiguration:Z,uiConfig:J});return Z$(F,{card:Y,data:$,children:W?Z$(DZ,{onPress:G,style:X,children:H}):Z$(KZ,{style:X,children:H})})},O$=TZ;import{useContext as UZ}from"react";import{View as VZ}from"react-native";import{jsx as M$}from"react/jsx-runtime";var FZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,sx:W}=$,X=UZ(N)??w;return M$(F,{card:Y,data:$,children:M$(VZ,{style:W,children:J.map((z,Q)=>M$(X,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},A$=FZ;import{useContext as IZ}from"react";import{View as OZ}from"react-native";import{jsx as L$}from"react/jsx-runtime";var MZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,sx:W}=$,X=IZ(N)??w;return L$(F,{card:Y,data:$,children:L$(OZ,{style:W,children:J.map((z,Q)=>L$(X,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},P$=MZ;import{useEffect as ZJ,useState as AZ}from"react";var X$=new Map,m=($,J)=>{X$.set($,J)},g=($)=>{X$.delete($)},w$=($)=>{return X$.has($)?X$.get($):null};import{jsx as PZ}from"react/jsx-runtime";var LZ=({data:$})=>{let{name:J,value:Z,useSocketioSupport:Y,useCentrifugeSupport:W,useMittSupport:X,centrifugeChannel:z}=$,[Q,G]=AZ(Z);return ZJ(()=>{G(Z)},[Z]),ZJ(()=>{return m(J,[Q]),()=>g(J)},[J,Q]),PZ(F,{card:"HiddenCard",data:$,useSocketioSupport:Y,useCentrifugeSupport:W,useMittSupport:X,centrifugeChannel:z,methods:{update:({value:H})=>{G(H)}}})},R$=LZ;import{useEffect as XJ,useState as EZ}from"react";var Y$={};function wZ($){Y$={...Y$,...$}}function R(){return Y$}function RZ(){Y$={}}import{jsx as NZ}from"react/jsx-runtime";var jZ=({data:$})=>{let{name:J,key:Z,value:Y,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q}=$,[G,H]=EZ(Y);return XJ(()=>{H(Y)},[Y]),XJ(()=>{return R().storage?.setItem?.(Z,G),m(J,[G]),()=>g(J)},[Z,J,G]),NZ(F,{card:"DeviceStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:D})=>{H(D)},remove:()=>{R().storage?.removeItem?.(Z),H("")}}})},E$=jZ;import{useEffect as YJ,useState as kZ}from"react";import{jsx as bZ}from"react/jsx-runtime";var yZ=({data:$})=>{let{name:J,key:Z,value:Y,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q}=$,[G,H]=kZ(Y);return YJ(()=>{H(Y)},[Y]),YJ(()=>{return R().sessionStorage?.setItem?.(Z,G),m(J,[G]),()=>g(J)},[Z,J,G]),bZ(F,{card:"SessionStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:D})=>{H(D)},remove:()=>{R().sessionStorage?.removeItem?.(Z),H("")}}})},j$=yZ;import{useContext as xZ,useMemo as SZ,useRef as fZ}from"react";import{Alert as CZ,Linking as vZ}from"react-native";import{jsx as gZ}from"react/jsx-runtime";var hZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),mZ=({data:$})=>{let{useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:Y,centrifugeChannel:W}=$,X=xZ(b),z=fZ(X);z.current=X;let Q=SZ(()=>{let G=(H)=>{if(!H)return;if(hZ(H))vZ.openURL(H).catch(()=>{});else z.current?.(H)};return{alert:(H)=>CZ.alert(String(H.title??""),String(H.message??"")),log:(H)=>console.log("Log event",H),push:(H)=>console.warn("[IOEventsCard] push notifications are not supported on native",H?.title),redirect:(H)=>G(H.to),reload:(H)=>G(H.to)}},[]);return gZ(F,{card:"IOEventsCard",data:$,useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:Y,centrifugeChannel:W,methods:Q})},N$=mZ;import{useEffect as pZ,useState as cZ}from"react";import{Text as uZ}from"react-native";import{jsx as WJ}from"react/jsx-runtime";var dZ=($)=>($??"").replace(/<[^>]*>/g,"").replace(/&nbsp;/g," ").replace(/\s+/g," ").trim(),lZ=({data:$})=>{let{html:J,useSocketioSupport:Z,useCentrifugeSupport:Y,useMittSupport:W,centrifugeChannel:X}=$,[z,Q]=cZ(J);return pZ(()=>{Q(J)},[J]),WJ(F,{card:"HTMLEmbedCard",data:$,methods:{update:(G)=>Q(G.value)},useCentrifugeSupport:Y,useSocketioSupport:Z,useMittSupport:W,centrifugeChannel:X,children:WJ(uZ,{children:dZ(z)})})},k$=lZ;import{useContext as zJ,useEffect as sZ}from"react";import{Linking as oZ}from"react-native";import{jsx as rZ,Fragment as nZ}from"react/jsx-runtime";var iZ=({data:$})=>{let{url:J}=$,Z=zJ(b),Y=zJ(j);return sZ(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(J))oZ.openURL(J).catch(()=>{});else Z?.(J)},[J,Z]),rZ(nZ,{children:Y})},y$=iZ;import{useContext as aZ}from"react";import{jsx as QJ}from"react/jsx-runtime";var tZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y}=$,W=aZ(N)??w;return QJ(F,{card:Y,data:$,children:J.map((X,z)=>{return QJ(W,{uiConfig:X,setUiAjaxConfiguration:Z},`children-${z}`)})})},b$=tZ;import{useCallback as x$,useContext as S$,useEffect as eZ,useRef as $0,useState as GJ}from"react";import{jsx as HJ}from"react/jsx-runtime";var J0=({data:$,content:J})=>{let{useLoader:Z,noReturn:Y,returnType:W,useSocketioSupport:X,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G}=$,H=S$(j),D=S$(N)??w,[M,E]=GJ(!1),[I,L]=GJ(null),U=$0(J),K=S$(C),V=x$((B)=>{if(B===null)E(!0);else if(E(!1),!Y)U.current=B;if(!Y)L(B)},[Y]),q=x$((B)=>{U.current=B.content,L(B.content)},[]),_=x$((B)=>{if(B===null)E(!0);else if(E(!1),!Y)for(let P of B)K?.emit(P.name,P.data)},[Y,K]);if(eZ(()=>{L(J),E(!1)},[J]),!I&&Z)return H;return HJ(F,{card:"AjaxGroupCard",data:$,methods:{changeContent:q},useSocketioSupport:X,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G,children:HJ(D,{uiConfig:I??U.current,setUiAjaxConfiguration:W==="events"?_:V})})},f$=J0;var Z0=[{name:"BoxCard",component:O$},{name:"SequenceCard",component:A$},{name:"OneOfCard",component:P$},{name:"HiddenCard",component:R$},{name:"DeviceStorageCard",component:E$},{name:"SessionStorageCard",component:j$},{name:"IOEventsCard",component:N$},{name:"HTMLEmbedCard",component:k$},{name:"AutoRedirectCard",component:y$},{name:"UnionCard",component:b$},{name:"AjaxGroupCard",component:f$}];for(let $ of Z0)a($);import{useMemo as v$,useState as U0}from"react";import{QueryClient as V0,QueryClientProvider as F0}from"@tanstack/react-query";import{useContext as _0,useEffect as q0}from"react";import{useEffect as X0,useState as Y0}from"react";var W$=new Map,z$=new Map;function Q$($,J){let Z=`${$}::${J}`,Y=$?W$.get(Z):void 0,[W,X]=Y0(Y??null);return X0(()=>{if(!$)return;if(W$.has(Z)){X(W$.get(Z));return}let z=z$.get(Z);if(!z)z=fetch($+`api/support/${J}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return W$.set(Z,G),z$.delete(Z),G}).catch((G)=>{throw z$.delete(Z),G}),z$.set(Z,z);let Q=!1;return z.then((G)=>{if(!Q)X(G)}).catch(()=>{}),()=>{Q=!0}},[$,J,Z]),W}var W0=($)=>{let J=document.cookie?document.cookie.split(";"):[];for(let Z of J){let Y=Z.indexOf("=");if((Y===-1?Z:Z.slice(0,Y)).trim()===$){let X=Y===-1?"":Z.slice(Y+1).trim();try{return decodeURIComponent(X)}catch{return X}}}return null},z0={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid($){if(typeof window<"u")window.sid=$},readWebStorage($,J){return($==="local"?window.localStorage:window.sessionStorage).getItem(J)},readCookie:W0,readUrlParams($){return new URLSearchParams(window.location.search).getAll($)},readDomInput($){let J=document.getElementsByName($);if(!J.length)return null;let Z=J[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[]},submitGlobalForm(){if(typeof document>"u")return;let $=document.getElementById("piedata_global_form");$&&$.submit()}},_J=z0;var qJ,Q0={isClient(){return!0},readSid(){return qJ},setSid($){qJ=$},readWebStorage($,J){let Z=R(),Y=$==="local"?Z.storage:Z.sessionStorage;return Y?Y.getItem(J):null},async readWebStorageAsync($,J){let Z=R(),Y=$==="local"?Z.asyncStorage:Z.asyncSessionStorage;if(Y)return Y.getItem(J);let W=$==="local"?Z.storage:Z.sessionStorage;return W?W.getItem(J):null},readCookie($){let J=R();return J.getCookie?J.getCookie($):null},readUrlParams($){let J=R();return J.getRouteParams?J.getRouteParams($):[]},readDomInput($){let J=R();return J.getInput?J.getInput($):w$($)},submitGlobalForm(){R().submitForm?.()}},DJ=Q0;var G0=typeof navigator<"u"&&navigator.product==="ReactNative",H0=G0?DJ:_J,O=H0;var i=T("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function KJ(){i.resolve?.()}function C$(){if(!O.isClient())return Promise.resolve();if(O.readSid()!==void 0)return Promise.resolve();if(!i.promise)i.promise=new Promise(($)=>{i.resolve=()=>{$()}});return i.promise}var D0=({children:$})=>{let J=_0(f),Z=t(),Y=Q$(Z,"socketIO"),W=(X)=>{if(O.isClient())O.setSid(X.sid),KJ(),console.log(`SocketIO initialized: ${O.readSid()}`)};return q0(()=>{if(!J)return;let X=()=>{console.log("SocketIO connected")},z=(Q)=>{console.log(`SocketIO disconnected: ${Q}`),J.connect()};if(Y)J.on("pieinit",W),J.on("connect",X),J.on("disconnect",z),J.connect();return()=>{if(Y)J.off("pieinit",W),J.off("connect",X),J.off("disconnect",z),J.disconnect()}},[J,Y]),$},G$=D0;import{useContext as K0,useEffect as B0}from"react";var T0=({children:$})=>{let J=K0(S),Z=t(),Y=Q$(Z,"centrifuge");return B0(()=>{if(!J)return;let W=()=>{console.log("Centrifuge connected")},X=(z)=>{console.log("Centrifuge disconnected:",z)};if(Y)J.on("connected",W),J.on("disconnected",X),J.connect();return()=>{if(Y)J.disconnect()}},[J,Y]),$},H$=T0;import{jsx as k,Fragment as M0}from"react/jsx-runtime";var I0=({location:$,fallback:J,children:Z,disableGlobalForm:Y})=>{let W=o(),X=e(),z=x(),Q=v$(()=>u(),[]),G=v$(()=>W?J$(W):null,[W]),H=v$(()=>W?$$(W,X):null,[W,X]);if(z)console.log("[PieRoot] Rendering with location:",$),console.log("[PieRoot] API_SERVER:",W),console.log("[PieRoot] CENTRIFUGE_SERVER:",X),console.log("[PieRoot] Fallback provided:",!!J);return k(C.Provider,{value:Q,children:k(f.Provider,{value:G,children:k(S.Provider,{value:H,children:k(j.Provider,{value:J??k(M0,{}),children:k(G$,{children:k(H$,{children:Y?Z:k("form",{id:"piedata_global_form",action:W+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},O0=($)=>{let[J]=U0(()=>new V0),Z=$.queryClient??J;return k(b.Provider,{value:$.onNavigate,children:k(c.Provider,{value:$.config,children:k(v.Provider,{value:$.onError,children:k(F0,{client:Z,children:k(I0,{...$})})})})})},h$=O0;import{jsx as L0}from"react/jsx-runtime";var A0=($)=>{return L0(h$,{...$,disableGlobalForm:!0})},P0=A0;import{useMemo as n}from"react";import{QueryClient as R0,QueryClientProvider as E0,useQuery as j0}from"@tanstack/react-query";import{createAxiosDateTransformer as N0}from"axios-date-transformer";import{useContext as BJ}from"react";import{jsx as _$}from"react/jsx-runtime";function TJ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=BJ(j),Y=BJ(v),W=x();if(W)console.log("[UILoading] Rendering fallback for:",$.card),console.log("[UILoading] Component data:",$.data),console.log("[UILoading] Component content:",$.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!J);let X=l($.card);if(!X?.component){if(W)console.warn(`[UILoading] Component not found in registry: ${$.card}`),console.log("[UILoading] Returning fallback component");return Z}if(W)console.log("[UILoading] Found component in registry:",{name:X.name,isLazy:X.isLazy,hasMetadata:!!X.metadata,hasFallback:!!X.fallback});if(X.fallback){if(W)console.log("[UILoading] Rendering fallback for:",X.name);let G=X.fallback;return _$(G,{})}if(W)console.log("[UILoading] No fallback, rendering full component:",X.name);let z=X.component,Q=_$(N.Provider,{value:TJ,children:_$(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J})});if(X.isLazy)return _$(d,{name:X.name,fallback:Z,onError:Y,children:Q});return Q}var m$=TJ;import{jsx as w0}from"react/jsx-runtime";function UJ($,J,Z){if(!J)return Z;let Y=$.replace(/^\//,""),W=J[Y];if(!W)return Z;return w0(m$,{uiConfig:W})}import{jsx as A,Fragment as b0}from"react/jsx-runtime";var k0=({location:$,fallback:J,piecache:Z,onError:Y,queryOptions:W,disableGlobalForm:X})=>{let z=o(),Q=e(),G=x(),H=n(()=>N0({baseURL:z||""}),[z]),D=n(()=>u(),[]),M=n(()=>z?J$(z):null,[z]),E=n(()=>z?$$(z,Q):null,[z,Q]),{data:I,isLoading:L,error:U}=j0({queryKey:["uiConfig",$.pathname+$.search,z],enabled:!!z,queryFn:async()=>{let V=new URLSearchParams($.search);V.set("__pieroot","web");let q="/api/content"+$.pathname+"?"+V.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",q);let _=await H.get(q,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",_.data);return _.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(V)=>Math.min(1000*2**V,30000),...W}),K=UJ($.pathname,Z,J);if(!z)return K??null;if(G)console.log("[PieRoot] Rendering with location:",$),console.log("[PieRoot] API_SERVER:",z),console.log("[PieRoot] CENTRIFUGE_SERVER:",Q),console.log("[PieRoot] Fallback provided:",!!J),console.log("[PieRoot] Piecache provided:",!!Z);if(U){if(G)console.error("[PieRoot] Error fetching UI configuration:",U),console.error("[PieRoot] Error details:",{message:U.message,status:U.response?.status,data:U.response?.data});return Y?.(U),K}if(L||!I){if(G)console.log("[PieRoot] Loading state:",{isLoading:L,hasUiConfiguration:!!I});return K}if(G)console.log("[PieRoot] UI configuration loaded successfully:",I),console.log("[PieRoot] Rendering UI with configuration");return A(C.Provider,{value:D,children:A(f.Provider,{value:M,children:A(S.Provider,{value:E,children:A(j.Provider,{value:J??A(b0,{}),children:A(G$,{children:A(H$,{children:X?A(w,{uiConfig:I}):A("form",{id:"piedata_global_form",action:z+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:A(w,{uiConfig:I})})})})})})})})},y0=($)=>{let J=n(()=>new R0,[]),Z=$.queryClient??J;return A(b.Provider,{value:$.onNavigate,children:A(c.Provider,{value:$.config,children:A(v.Provider,{value:$.onError,children:A(E0,{client:Z,children:A(k0,{...$})})})})})},x0=y0;import{useMemo as S0}from"react";var f0=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],C0=new Set(["telegram:cloud","telegram:secure"]),q$=($)=>{if($==="sid")return{source:"sid",key:"sid"};for(let J of f0){let Z=J+":";if($.startsWith(Z))return{source:J,key:$.slice(Z.length)}}return{source:"dom",key:$}},VJ=($,J=!1)=>{let{source:Z,key:Y}=q$($);if(Z==="sid"){let X=O.readSid();if(!X)throw Error("SocketIO isn't initialized properly");return[X]}if(Z==="localStorage"||Z==="sessionStorage")try{let X=O.readWebStorage(Z==="localStorage"?"local":"session",Y);if(X===null){if(J)console.warn(`No ${Z} value found for key ${Y}`);return[]}return[X]}catch(X){if(J)console.warn(`Failed to read ${Z} key ${Y}:`,X);return[]}if(Z==="cookie"){let X=O.readCookie(Y);if(X===null){if(J)console.warn(`No cookie found for key ${Y}`);return[]}return[X]}if(Z==="url"){let X=O.readUrlParams(Y);if(!X.length&&J)console.warn(`No URL query param found for key ${Y}`);return X}if(C0.has(Z)){if(J)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let W=O.readDomInput(Y);if(W===null){if(J)console.warn(`No input found with name ${Y}`);return[]}return W},v0=($,J,Z)=>{let Y=window.Telegram?.WebApp,W=$==="telegram:cloud"?Y?.CloudStorage:Y?.SecureStorage,X=$==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!W){if(Z)console.warn(`${X} is not available`);return Promise.resolve([])}return new Promise((z)=>{try{W.getItem(J,(Q,G)=>{if(Q){if(Z)console.warn(`Failed to read ${X} key ${J}:`,Q);z([]);return}if(G==null||G===""){if(Z)console.warn(`No ${X} value found for key ${J}`);z([]);return}z([G])})}catch(Q){if(Z)console.warn(`Failed to read ${X} key ${J}:`,Q);z([])}})},FJ=async($,J=!1)=>{let{source:Z,key:Y}=q$($);if(Z==="telegram:cloud"||Z==="telegram:secure")return v0(Z,Y,J);if((Z==="localStorage"||Z==="sessionStorage")&&O.readWebStorageAsync)try{let W=await O.readWebStorageAsync(Z==="localStorage"?"local":"session",Y);if(W===null){if(J)console.warn(`No ${Z} value found for key ${Y}`);return[]}return[W]}catch(W){if(J)console.warn(`Failed to read ${Z} key ${Y}:`,W);return[]}return VJ($,J)},h0=($,J={},Z=[],Y,W)=>{let X=W?.renderingLogEnabled??!1,z=W?.timeout,Q=W?.retryPolicy,G=Q?.maxRetries??0,H=Q?.baseDelay??1000,D=Q?.retryOn??[502,503,504];if(X)console.log("Registering AJAX: ",Y,J,Z);return async(M={})=>{if(!O.isClient()){if(X)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let E=W?.apiServer;if(!E){if(X)console.warn("AJAX skipped: apiServer is missing");return}if(!Y||!$){if(X)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await C$();let I=new FormData;for(let[K,V]of Object.entries({...J,...M}))I.append(K,V);for(let K of Z){let{key:V}=q$(K);for(let q of await FJ(K,X))I.append(V,q)}let L=E+"api/ajax_content"+Y;$(null);let U;for(let K=0;K<=G;K++){if(K>0){let _=H*2**(K-1);if(X)console.log(`AJAX retry ${K}/${G} after ${_}ms`);await new Promise((B)=>setTimeout(B,_))}let V=z!=null?new AbortController:null,q=V&&setTimeout(()=>V.abort(),z);try{let _=await fetch(L,{method:"POST",body:I,signal:V?.signal});if(q)clearTimeout(q);if(!_.ok&&D.includes(_.status)&&K<G){U=Error(`HTTP ${_.status}`);continue}let P=(_.headers.get("content-type")||"").includes("application/json");if(!!_.body?.getReader&&!P){let r=_.body.getReader(),IJ=new TextDecoder,p="";while(!0){let{done:D$,value:OJ}=await r.read();if(D$)break;p+=IJ.decode(OJ,{stream:!0});let g$=p.split(`
3
+ `);p=g$.pop()??"";for(let MJ of g$){let K$=MJ.trim();if(!K$)continue;try{let AJ=JSON.parse(K$);$([AJ])}catch{if(X)console.warn("Failed to parse streamed line:",K$)}}}if(p.trim())try{let D$=JSON.parse(p);$([D$])}catch{if(X)console.warn("Failed to parse final streamed line:",p)}return{}}else{let r=await _.json();return $(r),r}}catch(_){if(q)clearTimeout(q);if(U=_,K<G)continue;if(X)console.error("AJAX request failed:",_);return $(null),_}}if(X)console.error("AJAX request failed after retries:",U);return $(null),U}},m0=($,J={},Z=[],Y,W)=>{let{apiServer:X,enableRenderingLog:z}=s(),Q=JSON.stringify(J),G=JSON.stringify(Z),H=JSON.stringify(W);return S0(()=>h0($,J,Z,Y,{apiServer:X,renderingLogEnabled:z,timeout:W?.timeout,retryPolicy:W?.retryPolicy}),[$,Q,G,Y,X,z,H])};var g0=()=>{O.submitGlobalForm()};var p0=($,J)=>`${$}${U$}${J}`;export{uJ as usePieEmit,m0 as useAjaxSubmit,RJ as unregisterComponent,B$ as trackLazy,g0 as submitGlobalForm,m as setNativeField,RZ as resetNativeClientSources,y as registry,a as registerPieComponent,wJ as registerMultipleComponents,w$ as readNativeField,FJ as readAjaxKeyAsync,VJ as readAjaxKey,l$ as preloadComponent,yJ as prefetchLazyComponents,p0 as pieName,q$ as parseDepName,EJ as hasComponent,kJ as getRegistrySize,l as getRegistryEntry,R as getNativeClientConfig,d$ as getLazyComponentNames,u as getEmitter,jJ as getComponentMeta,NJ as getAllRegisteredComponents,wZ as configureNativeClientSources,g as clearNativeField,b$ as UnionCard,N as UIRendererContext,m$ as UILoading,w as UI,f as SocketIOContext,j$ as SessionStorageCard,A$ as SequenceCard,x0 as PieRoot,P0 as PieNativeRoot,c as PieConfigContext,F as PieCard,h$ as PieBaseRoot,U$ as PIEBREAK,P$ as OneOfCard,C as MittContext,N$ as IOEventsCard,R$ as HiddenCard,k$ as HTMLEmbedCard,j as FallbackContext,E$ as DeviceStorageCard,S as CentrifugeIOContext,O$ as BoxCard,y$ as AutoRedirectCard,f$ as AjaxGroupCard};
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- var AZ=Object.create;var{getPrototypeOf:LZ,defineProperty:$$,getOwnPropertyNames:VJ,getOwnPropertyDescriptor:PZ}=Object,FJ=Object.prototype.hasOwnProperty;var RZ=($,J,Z)=>{Z=$!=null?AZ(LZ($)):{};let X=J||!$||!$.__esModule?$$(Z,"default",{value:$,enumerable:!0}):Z;for(let z of VJ($))if(!FJ.call(X,z))$$(X,z,{get:()=>$[z],enumerable:!0});return X},UJ=new WeakMap,wZ=($)=>{var J=UJ.get($),Z;if(J)return J;if(J=$$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function")VJ($).map((X)=>!FJ.call(J,X)&&$$(J,X,{get:()=>$[X],enumerable:!(Z=PZ($,X))||Z.enumerable}));return UJ.set($,J),J};var EZ=($,J)=>{for(var Z in J)$$($,Z,{get:J[Z],enumerable:!0,configurable:!0,set:(X)=>J[Z]=()=>X})};var U0={};EZ(U0,{usePieEmit:()=>hJ,useAjaxSubmit:()=>TZ,unregisterComponent:()=>PJ,trackLazy:()=>T$,submitGlobalForm:()=>UZ,setNativeField:()=>m,resetNativeClientSources:()=>rJ,registry:()=>k,registerPieComponent:()=>J$,registerMultipleComponents:()=>LJ,readNativeField:()=>y$,readAjaxKeyAsync:()=>BJ,readAjaxKey:()=>_J,preloadComponent:()=>zJ,prefetchLazyComponents:()=>NJ,pieName:()=>VZ,parseDepName:()=>K$,hasComponent:()=>RJ,getRegistrySize:()=>jJ,getRegistryEntry:()=>l,getNativeClientConfig:()=>P,getLazyComponentNames:()=>YJ,getEmitter:()=>u,getComponentMeta:()=>wJ,getAllRegisteredComponents:()=>EJ,configureNativeClientSources:()=>nJ,clearNativeField:()=>g,UnionCard:()=>c$,UIRendererContext:()=>E,UILoading:()=>$J,UI:()=>L,SocketIOContext:()=>b,SessionStorageCard:()=>f$,SequenceCard:()=>E$,PieRoot:()=>_Z,PieNativeRoot:()=>QZ,PieConfigContext:()=>c,PieCard:()=>T,PieBaseRoot:()=>e$,PIEBREAK:()=>I$,OneOfCard:()=>N$,MittContext:()=>S,IOEventsCard:()=>v$,HiddenCard:()=>x$,HTMLEmbedCard:()=>m$,FallbackContext:()=>w,DeviceStorageCard:()=>S$,CentrifugeIOContext:()=>x,BoxCard:()=>R$,AutoRedirectCard:()=>g$,AjaxGroupCard:()=>u$});module.exports=wZ(U0);var IJ=require("react"),p=new Map;function OJ($,J){return J.catch(()=>{if(p.get($)===J)p.delete($)}),p.set($,J),J}function T$($,J){return IJ.lazy(()=>{if(p.has(J))return p.get(J);return OJ(J,$().then((Z)=>Z))})}var MJ=async($,J)=>{if(!J)return;if(p.has($))return p.get($);return OJ($,J().then((Z)=>Z))};var XJ=globalThis,_=($,J)=>{let Z=Symbol.for($);if(!(Z in XJ))XJ[Z]=J();return XJ[Z]};var k=_("@swarm.ing/pieui:component-registry",()=>new Map),jZ=($)=>{if(!$.name)throw Error("Component registration requires a name");if(!$.component&&!$.loader)throw Error(`Component "${$.name}" requires component or loader`);let J={name:$.name,component:$.component,loader:$.loader,metadata:$.metadata,fallback:$.fallback,isLazy:!1};if(!J.component&&J.loader)J.component=T$(J.loader,$.name),J.isLazy=!0;return J};function J$($){let J=jZ($);return k.set(J.name,J),J.component}var LJ=($)=>{$.forEach((J)=>J$(J))},PJ=($)=>{k.delete($)},RJ=($)=>{return k.has($)},wJ=($)=>{return k.get($)?.metadata},l=($)=>{return k.get($)},EJ=()=>{return Array.from(k.keys())},jJ=()=>{return k.size},YJ=()=>Array.from(k.values()).filter(($)=>$.isLazy&&typeof $.loader==="function").map(($)=>$.name),zJ=($)=>{let J=k.get($);if(!J?.isLazy||typeof J.loader!=="function")return;return MJ($,J.loader)},AJ=!1,NJ=()=>{if(AJ||typeof window>"u")return;AJ=!0;let $=navigator.connection;if($?.saveData)return;if($?.effectiveType&&["slow-2g","2g"].includes($.effectiveType))return;let J=YJ(),Z="requestIdleCallback"in window?(z)=>window.requestIdleCallback(z,{timeout:2000}):(z)=>window.setTimeout(z,300),X=(z)=>{if(z>=J.length)return;Z(()=>{Promise.resolve().then(()=>zJ(J[z])).catch(()=>{}).finally(()=>X(z+1))})};X(0)};var QJ=require("react"),n=require("react-native");var f=require("react");var U$=require("react");var c=_("@swarm.ing/pieui:context:pieConfig",()=>U$.createContext(null)),Z$=()=>{let $=U$.useContext(c);if(!$)throw Error("usePieConfig must be used within PieConfigProvider");return $},X$=()=>{let{apiServer:$}=Z$();return $},V$=X$,F$=()=>{let{centrifugeServer:$}=Z$();return $};var v=()=>{let{enableRenderingLog:$}=Z$();return $},kJ=v;var I$="__piedemo__";var xJ=require("react"),WJ=require("centrifuge");var yJ=_("@swarm.ing/pieui:centrifuge-cache",()=>new Map),O$=($,J)=>{if(!J)return null;let Z=`${$}::${J}`,X=yJ.get(Z);if(X)return X;async function z(){let W=await fetch($+"api/centrifuge/gen_token",{credentials:"include"});if(!W.ok){if(W.status===401||W.status===403)throw new WJ.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${W.status}`)}return(await W.json()).token}let Y=new WJ.Centrifuge(J,{getToken:z});return yJ.set(Z,Y),Y},NZ=_("@swarm.ing/pieui:context:centrifuge",()=>xJ.createContext(null)),x=NZ;var SJ=require("socket.io-client"),fJ=require("react");var bJ=_("@swarm.ing/pieui:socket-cache",()=>new Map),M$=($)=>{let J=bJ.get($);if(J)return J;let Z=SJ.io($,{autoConnect:!1,transports:["websocket"]});return bJ.set($,Z),Z},kZ=_("@swarm.ing/pieui:context:socket",()=>fJ.createContext(null)),b=kZ;var CJ=RZ(require("mitt")),s=require("react");function u(){return _("@swarm.ing/pieui:mitt-emitter",()=>CJ.default())}var vJ=_("@swarm.ing/pieui:context:mitt",()=>s.createContext(null));function hJ($){let J=s.useContext(vJ);return s.useCallback((Z,X)=>{(J??u()).emit(`pie${Z}_${$}`,X)},[$,J])}var S=vJ;var o=require("react/jsx-runtime"),yZ=({card:$,data:J,children:Z,useSocketioSupport:X=!1,useCentrifugeSupport:z=!1,useMittSupport:Y=!1,centrifugeChannel:W=void 0,methods:Q=void 0,stored:G=void 0})=>{let H=kJ(),U=f.useRef(Q);if(U.current=Q,H)console.log("[PieCard] Rendering card:",$),console.log("[PieCard] Card data:",J),console.log("[PieCard] Component name:",J?.name),console.log("[PieCard] Real-time support:",{socketio:X,centrifuge:z,mitt:Y,centrifugeChannel:W}),console.log("[PieCard] Methods:",Q?Object.keys(Q):"none"),console.log("[PieCard] Has children:",!!Z);let y=f.useContext(b),M=f.useContext(x),F=f.useContext(S);if(f.useEffect(()=>{if(!y||!X||!U.current||!J.name){if(H&&X)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!y,useSocketioSupport:X,hasMethods:!!U.current,hasDataName:!!J?.name});return}let B=Object.keys(U.current??{}).map((q)=>{let D=`pie${q}_${J.name}`;if(H)console.log(`[PieCard] Socket.IO registering event: ${D}`);let V=(K)=>{U.current?.[q]?.(K)};return y.on(D,V),[D,V]});return()=>{B.forEach(([q,D])=>{if(H)console.log(`[PieCard] Socket.IO unregistering event: ${q}`);y.off(q,D)})}},[y,J.name,X]),f.useEffect(()=>{if(!M||!z||!W||!J.name){if(H&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!M,useCentrifugeSupport:z,hasCentrifugeChannel:!!W,hasMethods:!!U.current,hasDataName:!!J?.name});return}let B=Object.keys(U.current??{}).map((q)=>{let D=`pie${q}_${J.name}_${W}`;if(H)console.log(`[PieCard] Centrifuge subscribing to channel: ${D}`);let V=M.newSubscription(D);return V.on("publication",(K)=>{if(H)console.log(`[PieCard] Centrifuge received data on ${D}:`,K.data);U.current?.[q]?.(K.data)}),V.subscribe(),V});return()=>{B.forEach((q)=>{if(H)console.log("[PieCard] Centrifuge unsubscribing from channel");q.unsubscribe(),M.removeSubscription(q)})}},[M,W,J.name,z]),f.useEffect(()=>{if(!F||!Y||!J.name){if(H&&Y)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!F,useMittSupport:Y,hasMethods:!!U.current,hasDataName:!!J?.name});return}let j=Object.keys(U.current??{}),B={};return j.forEach((q)=>{let D=`pie${q}_${J.name}`,V=(K)=>{if(H)console.log(`[PieCard] Mitt registering event: ${D}`);U.current?.[q]?.(K)};B[D]=V,F.on(D,V)}),()=>{Object.entries(B).forEach(([q,D])=>{if(H)console.log(`[PieCard] Mitt unregistering event: ${q}`);F.off(q,D)})}},[F,J.name,Y]),H)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return o.jsxs(o.Fragment,{children:[o.jsx("input",{type:"hidden",name:J.name,value:JSON.stringify(G)}),Z]});return Z},T=yZ;var Y$=require("react");var mJ=require("react");var A$=require("react/jsx-runtime"),xZ=_("@swarm.ing/pieui:context:fallback",()=>mJ.createContext(A$.jsx(A$.Fragment,{}))),w=xZ;var gJ=require("react");var bZ=_("@swarm.ing/pieui:context:lazyError",()=>gJ.createContext(void 0)),h=bZ;var L$=require("react"),pJ=require("react/jsx-runtime"),SZ=2,fZ=400;class i extends L$.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch($){if(this.props.onError?.($),this.state.attempt<SZ){let J=fZ*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},J)}}componentDidUpdate($){if($.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 pJ.jsx(L$.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var P$=require("react/jsx-runtime");function CZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=Y$.useContext(w),X=Y$.useContext(h),z=v();if(z)console.log("[UI] Rendering component:",$.card),console.log("[UI] Component data:",$.data),console.log("[UI] Component content:",$.content),console.log("[UI] Has setUiAjaxConfiguration:",!!J);let Y=l($.card);if(!Y?.component){if(z)console.warn(`[UI] Component not found in registry: ${$.card}`),console.log("[UI] Returning fallback component");return Z}if(z)console.log("[UI] Found component in registry:",{name:Y.name,isLazy:Y.isLazy,hasMetadata:!!Y.metadata});let W=Y.component,Q=P$.jsx(W,{data:$.data,content:$.content,setUiAjaxConfiguration:J});if(Y.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",Y.name);return P$.jsx(i,{name:Y.name,fallback:Y.fallback?P$.jsx(Y.fallback,{}):Z,onError:X,children:Q})}if(z)console.log("[UI] Rendering component directly:",Y.name);return Q}var L=Y$.memo(CZ);var cJ=require("react");var vZ=_("@swarm.ing/pieui:context:navigate",()=>cJ.createContext(void 0)),C=vZ;var uJ=require("react");var hZ=_("@swarm.ing/pieui:context:uiRenderer",()=>uJ.createContext(null)),E=hZ;var z$=require("react/jsx-runtime"),mZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),gZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,url:z,sx:Y}=$,W=QJ.useContext(C),Q=QJ.useContext(E)??L,G=()=>{if(!z)return;if(mZ(z))n.Linking.openURL(z).catch(()=>{});else W?.(z)},H=z$.jsx(Q,{setUiAjaxConfiguration:Z,uiConfig:J});return z$.jsx(T,{card:X,data:$,children:z?z$.jsx(n.Pressable,{onPress:G,style:Y,children:H}):z$.jsx(n.View,{style:Y,children:H})})},R$=gZ;var dJ=require("react"),lJ=require("react-native");var w$=require("react/jsx-runtime"),pZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,sx:z}=$,Y=dJ.useContext(E)??L;return w$.jsx(T,{card:X,data:$,children:w$.jsx(lJ.View,{style:z,children:J.map((W,Q)=>w$.jsx(Y,{uiConfig:W,setUiAjaxConfiguration:Z},`children-${Q}`))})})},E$=pZ;var sJ=require("react"),oJ=require("react-native");var j$=require("react/jsx-runtime"),cZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,sx:z}=$,Y=sJ.useContext(E)??L;return j$.jsx(T,{card:X,data:$,children:j$.jsx(oJ.View,{style:z,children:J.map((W,Q)=>j$.jsx(Y,{uiConfig:W,setUiAjaxConfiguration:Z},`children-${Q}`))})})},N$=cZ;var W$=require("react");var k$=new Map,m=($,J)=>{k$.set($,J)},g=($)=>{k$.delete($)},y$=($)=>{return k$.has($)?k$.get($):null};var iJ=require("react/jsx-runtime"),uZ=({data:$})=>{let{name:J,value:Z,useSocketioSupport:X,useCentrifugeSupport:z,useMittSupport:Y,centrifugeChannel:W}=$,[Q,G]=W$.useState(Z);return W$.useEffect(()=>{G(Z)},[Z]),W$.useEffect(()=>{return m(J,[Q]),()=>g(J)},[J,Q]),iJ.jsx(T,{card:"HiddenCard",data:$,useSocketioSupport:X,useCentrifugeSupport:z,useMittSupport:Y,centrifugeChannel:W,methods:{update:({value:H})=>{G(H)}}})},x$=uZ;var Q$=require("react");var b$={};function nJ($){b$={...b$,...$}}function P(){return b$}function rJ(){b$={}}var aJ=require("react/jsx-runtime"),dZ=({data:$})=>{let{name:J,key:Z,value:X,useSocketioSupport:z,useCentrifugeSupport:Y,useMittSupport:W,centrifugeChannel:Q}=$,[G,H]=Q$.useState(X);return Q$.useEffect(()=>{H(X)},[X]),Q$.useEffect(()=>{return P().storage?.setItem?.(Z,G),m(J,[G]),()=>g(J)},[Z,J,G]),aJ.jsx(T,{card:"DeviceStorageCard",data:$,useSocketioSupport:z,useCentrifugeSupport:Y,useMittSupport:W,centrifugeChannel:Q,methods:{update:({value:U})=>{H(U)},remove:()=>{P().storage?.removeItem?.(Z),H("")}}})},S$=dZ;var G$=require("react");var tJ=require("react/jsx-runtime"),lZ=({data:$})=>{let{name:J,key:Z,value:X,useSocketioSupport:z,useCentrifugeSupport:Y,useMittSupport:W,centrifugeChannel:Q}=$,[G,H]=G$.useState(X);return G$.useEffect(()=>{H(X)},[X]),G$.useEffect(()=>{return P().sessionStorage?.setItem?.(Z,G),m(J,[G]),()=>g(J)},[Z,J,G]),tJ.jsx(T,{card:"SessionStorageCard",data:$,useSocketioSupport:z,useCentrifugeSupport:Y,useMittSupport:W,centrifugeChannel:Q,methods:{update:({value:U})=>{H(U)},remove:()=>{P().sessionStorage?.removeItem?.(Z),H("")}}})},f$=lZ;var r=require("react"),C$=require("react-native");var eJ=require("react/jsx-runtime"),sZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),oZ=({data:$})=>{let{useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:X,centrifugeChannel:z}=$,Y=r.useContext(C),W=r.useRef(Y);W.current=Y;let Q=r.useMemo(()=>{let G=(H)=>{if(!H)return;if(sZ(H))C$.Linking.openURL(H).catch(()=>{});else W.current?.(H)};return{alert:(H)=>C$.Alert.alert(String(H.title??""),String(H.message??"")),log:(H)=>console.log("Log event",H),push:(H)=>console.warn("[IOEventsCard] push notifications are not supported on native",H?.title),redirect:(H)=>G(H.to),reload:(H)=>G(H.to)}},[]);return eJ.jsx(T,{card:"IOEventsCard",data:$,useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:X,centrifugeChannel:z,methods:Q})},v$=oZ;var h$=require("react"),$Z=require("react-native");var GJ=require("react/jsx-runtime"),iZ=($)=>($??"").replace(/<[^>]*>/g,"").replace(/&nbsp;/g," ").replace(/\s+/g," ").trim(),nZ=({data:$})=>{let{html:J,useSocketioSupport:Z,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Y}=$,[W,Q]=h$.useState(J);return h$.useEffect(()=>{Q(J)},[J]),GJ.jsx(T,{card:"HTMLEmbedCard",data:$,methods:{update:(G)=>Q(G.value)},useCentrifugeSupport:X,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:Y,children:GJ.jsx($Z.Text,{children:iZ(W)})})},m$=nZ;var H$=require("react"),JZ=require("react-native");var p$=require("react/jsx-runtime"),rZ=({data:$})=>{let{url:J}=$,Z=H$.useContext(C),X=H$.useContext(w);return H$.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(J))JZ.Linking.openURL(J).catch(()=>{});else Z?.(J)},[J,Z]),p$.jsx(p$.Fragment,{children:X})},g$=rZ;var ZZ=require("react");var HJ=require("react/jsx-runtime"),aZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X}=$,z=ZZ.useContext(E)??L;return HJ.jsx(T,{card:X,data:$,children:J.map((Y,W)=>{return HJ.jsx(z,{uiConfig:Y,setUiAjaxConfiguration:Z},`children-${W}`)})})},c$=aZ;var R=require("react");var qJ=require("react/jsx-runtime"),tZ=({data:$,content:J})=>{let{useLoader:Z,noReturn:X,returnType:z,useSocketioSupport:Y,useCentrifugeSupport:W,useMittSupport:Q,centrifugeChannel:G}=$,H=R.useContext(w),U=R.useContext(E)??L,[y,M]=R.useState(!1),[F,j]=R.useState(null),B=R.useRef(J),q=R.useContext(S),D=R.useCallback((N)=>{if(N===null)M(!0);else if(M(!1),!X)B.current=N;if(!X)j(N)},[X]),V=R.useCallback((N)=>{B.current=N.content,j(N.content)},[]),K=R.useCallback((N)=>{if(N===null)M(!0);else if(M(!1),!X)for(let _$ of N)q?.emit(_$.name,_$.data)},[X,q]);if(R.useEffect(()=>{j(J),M(!1)},[J]),!F&&Z)return H;return qJ.jsx(T,{card:"AjaxGroupCard",data:$,methods:{changeContent:V},useSocketioSupport:Y,useCentrifugeSupport:W,useMittSupport:Q,centrifugeChannel:G,children:qJ.jsx(U,{uiConfig:F??B.current,setUiAjaxConfiguration:z==="events"?K:D})})},u$=tZ;var eZ=[{name:"BoxCard",component:R$},{name:"SequenceCard",component:E$},{name:"OneOfCard",component:N$},{name:"HiddenCard",component:x$},{name:"DeviceStorageCard",component:S$},{name:"SessionStorageCard",component:f$},{name:"IOEventsCard",component:v$},{name:"HTMLEmbedCard",component:m$},{name:"AutoRedirectCard",component:g$},{name:"UnionCard",component:c$},{name:"AjaxGroupCard",component:u$}];for(let $ of eZ)J$($);var a=require("react"),t$=require("@tanstack/react-query");var i$=require("react");var s$=require("react"),d$=new Map,l$=new Map;function o$($,J){let Z=`${$}::${J}`,X=$?d$.get(Z):void 0,[z,Y]=s$.useState(X??null);return s$.useEffect(()=>{if(!$)return;if(d$.has(Z)){Y(d$.get(Z));return}let W=l$.get(Z);if(!W)W=fetch($+`api/support/${J}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return d$.set(Z,G),l$.delete(Z),G}).catch((G)=>{throw l$.delete(Z),G}),l$.set(Z,W);let Q=!1;return W.then((G)=>{if(!Q)Y(G)}).catch(()=>{}),()=>{Q=!0}},[$,J,Z]),z}var $0=($)=>{let J=document.cookie?document.cookie.split(";"):[];for(let Z of J){let X=Z.indexOf("=");if((X===-1?Z:Z.slice(0,X)).trim()===$){let Y=X===-1?"":Z.slice(X+1).trim();try{return decodeURIComponent(Y)}catch{return Y}}}return null},J0={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid($){if(typeof window<"u")window.sid=$},readWebStorage($,J){return($==="local"?window.localStorage:window.sessionStorage).getItem(J)},readCookie:$0,readUrlParams($){return new URLSearchParams(window.location.search).getAll($)},readDomInput($){let J=document.getElementsByName($);if(!J.length)return null;let Z=J[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[]},submitGlobalForm(){if(typeof document>"u")return;let $=document.getElementById("piedata_global_form");$&&$.submit()}},XZ=J0;var YZ,Z0={isClient(){return!0},readSid(){return YZ},setSid($){YZ=$},readWebStorage($,J){let Z=P(),X=$==="local"?Z.storage:Z.sessionStorage;return X?X.getItem(J):null},async readWebStorageAsync($,J){let Z=P(),X=$==="local"?Z.asyncStorage:Z.asyncSessionStorage;if(X)return X.getItem(J);let z=$==="local"?Z.storage:Z.sessionStorage;return z?z.getItem(J):null},readCookie($){let J=P();return J.getCookie?J.getCookie($):null},readUrlParams($){let J=P();return J.getRouteParams?J.getRouteParams($):[]},readDomInput($){let J=P();return J.getInput?J.getInput($):y$($)},submitGlobalForm(){P().submitForm?.()}},zZ=Z0;var X0=typeof navigator<"u"&&navigator.product==="ReactNative",Y0=X0?zZ:XZ,I=Y0;var q$=_("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function WZ(){q$.resolve?.()}function DJ(){if(!I.isClient())return Promise.resolve();if(I.readSid()!==void 0)return Promise.resolve();if(!q$.promise)q$.promise=new Promise(($)=>{q$.resolve=()=>{$()}});return q$.promise}var z0=({children:$})=>{let J=i$.useContext(b),Z=V$(),X=o$(Z,"socketIO"),z=(Y)=>{if(I.isClient())I.setSid(Y.sid),WZ(),console.log(`SocketIO initialized: ${I.readSid()}`)};return i$.useEffect(()=>{if(!J)return;let Y=()=>{console.log("SocketIO connected")},W=(Q)=>{console.log(`SocketIO disconnected: ${Q}`),J.connect()};if(X)J.on("pieinit",z),J.on("connect",Y),J.on("disconnect",W),J.connect();return()=>{if(X)J.off("pieinit",z),J.off("connect",Y),J.off("disconnect",W),J.disconnect()}},[J,X]),$},n$=z0;var r$=require("react");var W0=({children:$})=>{let J=r$.useContext(x),Z=V$(),X=o$(Z,"centrifuge");return r$.useEffect(()=>{if(!J)return;let z=()=>{console.log("Centrifuge connected")},Y=(W)=>{console.log("Centrifuge disconnected:",W)};if(X)J.on("connected",z),J.on("disconnected",Y),J.connect();return()=>{if(X)J.disconnect()}},[J,X]),$},a$=W0;var A=require("react/jsx-runtime"),Q0=({location:$,fallback:J,children:Z,disableGlobalForm:X})=>{let z=X$(),Y=F$(),W=v(),Q=a.useMemo(()=>u(),[]),G=a.useMemo(()=>z?M$(z):null,[z]),H=a.useMemo(()=>z?O$(z,Y):null,[z,Y]);if(W)console.log("[PieRoot] Rendering with location:",$),console.log("[PieRoot] API_SERVER:",z),console.log("[PieRoot] CENTRIFUGE_SERVER:",Y),console.log("[PieRoot] Fallback provided:",!!J);return A.jsx(S.Provider,{value:Q,children:A.jsx(b.Provider,{value:G,children:A.jsx(x.Provider,{value:H,children:A.jsx(w.Provider,{value:J??A.jsx(A.Fragment,{}),children:A.jsx(n$,{children:A.jsx(a$,{children:X?Z:A.jsx("form",{id:"piedata_global_form",action:z+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},G0=($)=>{let[J]=a.useState(()=>new t$.QueryClient),Z=$.queryClient??J;return A.jsx(C.Provider,{value:$.onNavigate,children:A.jsx(c.Provider,{value:$.config,children:A.jsx(h.Provider,{value:$.onError,children:A.jsx(t$.QueryClientProvider,{client:Z,children:A.jsx(Q0,{...$})})})})})},e$=G0;var GZ=require("react/jsx-runtime"),H0=($)=>{return GZ.jsx(e$,{...$,disableGlobalForm:!0})},QZ=H0;var t=require("react"),e=require("@tanstack/react-query");var KZ=require("axios-date-transformer");var KJ=require("react");var D$=require("react/jsx-runtime");function HZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=KJ.useContext(w),X=KJ.useContext(h),z=v();if(z)console.log("[UILoading] Rendering fallback for:",$.card),console.log("[UILoading] Component data:",$.data),console.log("[UILoading] Component content:",$.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!J);let Y=l($.card);if(!Y?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${$.card}`),console.log("[UILoading] Returning fallback component");return Z}if(z)console.log("[UILoading] Found component in registry:",{name:Y.name,isLazy:Y.isLazy,hasMetadata:!!Y.metadata,hasFallback:!!Y.fallback});if(Y.fallback){if(z)console.log("[UILoading] Rendering fallback for:",Y.name);let G=Y.fallback;return D$.jsx(G,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",Y.name);let W=Y.component,Q=D$.jsx(E.Provider,{value:HZ,children:D$.jsx(W,{data:$.data,content:$.content,setUiAjaxConfiguration:J})});if(Y.isLazy)return D$.jsx(i,{name:Y.name,fallback:Z,onError:X,children:Q});return Q}var $J=HZ;var DZ=require("react/jsx-runtime");function qZ($,J,Z){if(!J)return Z;let X=$.replace(/^\//,""),z=J[X];if(!z)return Z;return DZ.jsx($J,{uiConfig:z})}var O=require("react/jsx-runtime"),q0=({location:$,fallback:J,piecache:Z,onError:X,queryOptions:z,disableGlobalForm:Y})=>{let W=X$(),Q=F$(),G=v(),H=t.useMemo(()=>KZ.createAxiosDateTransformer({baseURL:W||""}),[W]),U=t.useMemo(()=>u(),[]),y=t.useMemo(()=>W?M$(W):null,[W]),M=t.useMemo(()=>W?O$(W,Q):null,[W,Q]),{data:F,isLoading:j,error:B}=e.useQuery({queryKey:["uiConfig",$.pathname+$.search,W],enabled:!!W,queryFn:async()=>{let D=new URLSearchParams($.search);D.set("__pieroot","web");let V="/api/content"+$.pathname+"?"+D.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",V);let K=await H.get(V,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",K.data);return K.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(D)=>Math.min(1000*2**D,30000),...z}),q=qZ($.pathname,Z,J);if(!W)return q??null;if(G)console.log("[PieRoot] Rendering with location:",$),console.log("[PieRoot] API_SERVER:",W),console.log("[PieRoot] CENTRIFUGE_SERVER:",Q),console.log("[PieRoot] Fallback provided:",!!J),console.log("[PieRoot] Piecache provided:",!!Z);if(B){if(G)console.error("[PieRoot] Error fetching UI configuration:",B),console.error("[PieRoot] Error details:",{message:B.message,status:B.response?.status,data:B.response?.data});return X?.(B),q}if(j||!F){if(G)console.log("[PieRoot] Loading state:",{isLoading:j,hasUiConfiguration:!!F});return q}if(G)console.log("[PieRoot] UI configuration loaded successfully:",F),console.log("[PieRoot] Rendering UI with configuration");return O.jsx(S.Provider,{value:U,children:O.jsx(b.Provider,{value:y,children:O.jsx(x.Provider,{value:M,children:O.jsx(w.Provider,{value:J??O.jsx(O.Fragment,{}),children:O.jsx(n$,{children:O.jsx(a$,{children:Y?O.jsx(L,{uiConfig:F}):O.jsx("form",{id:"piedata_global_form",action:W+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:O.jsx(L,{uiConfig:F})})})})})})})})},D0=($)=>{let J=t.useMemo(()=>new e.QueryClient,[]),Z=$.queryClient??J;return O.jsx(C.Provider,{value:$.onNavigate,children:O.jsx(c.Provider,{value:$.config,children:O.jsx(h.Provider,{value:$.onError,children:O.jsx(e.QueryClientProvider,{client:Z,children:O.jsx(q0,{...$})})})})})},_Z=D0;var BZ=require("react");var K0=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],_0=new Set(["telegram:cloud","telegram:secure"]),K$=($)=>{if($==="sid")return{source:"sid",key:"sid"};for(let J of K0){let Z=J+":";if($.startsWith(Z))return{source:J,key:$.slice(Z.length)}}return{source:"dom",key:$}},_J=($,J=!1)=>{let{source:Z,key:X}=K$($);if(Z==="sid"){let Y=I.readSid();if(!Y)throw Error("SocketIO isn't initialized properly");return[Y]}if(Z==="localStorage"||Z==="sessionStorage")try{let Y=I.readWebStorage(Z==="localStorage"?"local":"session",X);if(Y===null){if(J)console.warn(`No ${Z} value found for key ${X}`);return[]}return[Y]}catch(Y){if(J)console.warn(`Failed to read ${Z} key ${X}:`,Y);return[]}if(Z==="cookie"){let Y=I.readCookie(X);if(Y===null){if(J)console.warn(`No cookie found for key ${X}`);return[]}return[Y]}if(Z==="url"){let Y=I.readUrlParams(X);if(!Y.length&&J)console.warn(`No URL query param found for key ${X}`);return Y}if(_0.has(Z)){if(J)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let z=I.readDomInput(X);if(z===null){if(J)console.warn(`No input found with name ${X}`);return[]}return z},B0=($,J,Z)=>{let X=window.Telegram?.WebApp,z=$==="telegram:cloud"?X?.CloudStorage:X?.SecureStorage,Y=$==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!z){if(Z)console.warn(`${Y} is not available`);return Promise.resolve([])}return new Promise((W)=>{try{z.getItem(J,(Q,G)=>{if(Q){if(Z)console.warn(`Failed to read ${Y} key ${J}:`,Q);W([]);return}if(G==null||G===""){if(Z)console.warn(`No ${Y} value found for key ${J}`);W([]);return}W([G])})}catch(Q){if(Z)console.warn(`Failed to read ${Y} key ${J}:`,Q);W([])}})},BJ=async($,J=!1)=>{let{source:Z,key:X}=K$($);if(Z==="telegram:cloud"||Z==="telegram:secure")return B0(Z,X,J);if((Z==="localStorage"||Z==="sessionStorage")&&I.readWebStorageAsync)try{let z=await I.readWebStorageAsync(Z==="localStorage"?"local":"session",X);if(z===null){if(J)console.warn(`No ${Z} value found for key ${X}`);return[]}return[z]}catch(z){if(J)console.warn(`Failed to read ${Z} key ${X}:`,z);return[]}return _J($,J)},T0=($,J={},Z=[],X,z)=>{let Y=z?.renderingLogEnabled??!1,W=z?.timeout,Q=z?.retryPolicy,G=Q?.maxRetries??0,H=Q?.baseDelay??1000,U=Q?.retryOn??[502,503,504];if(Y)console.log("Registering AJAX: ",X,J,Z);return async(y={})=>{if(!I.isClient()){if(Y)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let M=z?.apiServer;if(!M){if(Y)console.warn("AJAX skipped: apiServer is missing");return}if(!X||!$){if(Y)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await DJ();let F=new FormData;for(let[q,D]of Object.entries({...J,...y}))F.append(q,D);for(let q of Z){let{key:D}=K$(q);for(let V of await BJ(q,Y))F.append(D,V)}let j=M+"api/ajax_content"+X;$(null);let B;for(let q=0;q<=G;q++){if(q>0){let K=H*2**(q-1);if(Y)console.log(`AJAX retry ${q}/${G} after ${K}ms`);await new Promise((N)=>setTimeout(N,K))}let D=W!=null?new AbortController:null,V=D&&setTimeout(()=>D.abort(),W);try{let K=await fetch(j,{method:"POST",body:F,signal:D?.signal});if(V)clearTimeout(V);if(!K.ok&&U.includes(K.status)&&q<G){B=Error(`HTTP ${K.status}`);continue}let _$=(K.headers.get("content-type")||"").includes("application/json");if(!!K.body?.getReader&&!_$){let B$=K.body.getReader(),FZ=new TextDecoder,d="";while(!0){let{done:JJ,value:IZ}=await B$.read();if(JJ)break;d+=FZ.decode(IZ,{stream:!0});let TJ=d.split(`
3
- `);d=TJ.pop()??"";for(let OZ of TJ){let ZJ=OZ.trim();if(!ZJ)continue;try{let MZ=JSON.parse(ZJ);$([MZ])}catch{if(Y)console.warn("Failed to parse streamed line:",ZJ)}}}if(d.trim())try{let JJ=JSON.parse(d);$([JJ])}catch{if(Y)console.warn("Failed to parse final streamed line:",d)}return{}}else{let B$=await K.json();return $(B$),B$}}catch(K){if(V)clearTimeout(V);if(B=K,q<G)continue;if(Y)console.error("AJAX request failed:",K);return $(null),K}}if(Y)console.error("AJAX request failed after retries:",B);return $(null),B}},TZ=($,J={},Z=[],X,z)=>{let{apiServer:Y,enableRenderingLog:W}=Z$(),Q=JSON.stringify(J),G=JSON.stringify(Z),H=JSON.stringify(z);return BZ.useMemo(()=>T0($,J,Z,X,{apiServer:Y,renderingLogEnabled:W,timeout:z?.timeout,retryPolicy:z?.retryPolicy}),[$,Q,G,X,Y,W,H])};var UZ=()=>{I.submitGlobalForm()};var VZ=($,J)=>`${$}${I$}${J}`;
2
+ var PZ=Object.create;var{getPrototypeOf:wZ,defineProperty:J$,getOwnPropertyNames:VJ,getOwnPropertyDescriptor:RZ}=Object,FJ=Object.prototype.hasOwnProperty;var EZ=($,J,Z)=>{Z=$!=null?PZ(wZ($)):{};let X=J||!$||!$.__esModule?J$(Z,"default",{value:$,enumerable:!0}):Z;for(let W of VJ($))if(!FJ.call(X,W))J$(X,W,{get:()=>$[W],enumerable:!0});return X},UJ=new WeakMap,jZ=($)=>{var J=UJ.get($),Z;if(J)return J;if(J=J$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function")VJ($).map((X)=>!FJ.call(J,X)&&J$(J,X,{get:()=>$[X],enumerable:!(Z=RZ($,X))||Z.enumerable}));return UJ.set($,J),J};var NZ=($,J)=>{for(var Z in J)J$($,Z,{get:J[Z],enumerable:!0,configurable:!0,set:(X)=>J[Z]=()=>X})};var F0={};NZ(F0,{usePieEmit:()=>hJ,useAjaxSubmit:()=>VZ,unregisterComponent:()=>PJ,trackLazy:()=>T$,submitGlobalForm:()=>FZ,setNativeField:()=>g,resetNativeClientSources:()=>tJ,registry:()=>b,registerPieComponent:()=>Z$,registerMultipleComponents:()=>LJ,readNativeField:()=>y$,readAjaxKeyAsync:()=>BJ,readAjaxKey:()=>KJ,preloadComponent:()=>WJ,prefetchLazyComponents:()=>NJ,pieName:()=>IZ,parseDepName:()=>K$,hasComponent:()=>wJ,getRegistrySize:()=>jJ,getRegistryEntry:()=>s,getNativeClientConfig:()=>w,getLazyComponentNames:()=>YJ,getEmitter:()=>d,getComponentMeta:()=>RJ,getAllRegisteredComponents:()=>EJ,configureNativeClientSources:()=>aJ,clearNativeField:()=>p,UnionCard:()=>c$,UIRendererContext:()=>k,UILoading:()=>$J,UI:()=>P,SocketIOContext:()=>f,SessionStorageCard:()=>f$,SequenceCard:()=>E$,PieRoot:()=>TZ,PieNativeRoot:()=>HZ,PieConfigContext:()=>u,PieCard:()=>U,PieBaseRoot:()=>e$,PIEBREAK:()=>I$,OneOfCard:()=>N$,MittContext:()=>C,IOEventsCard:()=>v$,HiddenCard:()=>b$,HTMLEmbedCard:()=>m$,FallbackContext:()=>N,DeviceStorageCard:()=>S$,CentrifugeIOContext:()=>S,BoxCard:()=>w$,AutoRedirectCard:()=>g$,AjaxGroupCard:()=>u$});module.exports=jZ(F0);var IJ=require("react"),c=new Map;function OJ($,J){return J.catch(()=>{if(c.get($)===J)c.delete($)}),c.set($,J),J}function T$($,J){return IJ.lazy(()=>{if(c.has(J))return c.get(J);return OJ(J,$().then((Z)=>Z))})}var MJ=async($,J)=>{if(!J)return;if(c.has($))return c.get($);return OJ($,J().then((Z)=>Z))};var XJ=globalThis,T=($,J)=>{let Z=Symbol.for($);if(!(Z in XJ))XJ[Z]=J();return XJ[Z]};var b=T("@swarm.ing/pieui:component-registry",()=>new Map),kZ=($)=>{if(!$.name)throw Error("Component registration requires a name");if(!$.component&&!$.loader)throw Error(`Component "${$.name}" requires component or loader`);let J={name:$.name,component:$.component,loader:$.loader,metadata:$.metadata,fallback:$.fallback,isLazy:!1};if(!J.component&&J.loader)J.component=T$(J.loader,$.name),J.isLazy=!0;return J};function Z$($){let J=kZ($);return b.set(J.name,J),J.component}var LJ=($)=>{$.forEach((J)=>Z$(J))},PJ=($)=>{b.delete($)},wJ=($)=>{return b.has($)},RJ=($)=>{return b.get($)?.metadata},s=($)=>{return b.get($)},EJ=()=>{return Array.from(b.keys())},jJ=()=>{return b.size},YJ=()=>Array.from(b.values()).filter(($)=>$.isLazy&&typeof $.loader==="function").map(($)=>$.name),WJ=($)=>{let J=b.get($);if(!J?.isLazy||typeof J.loader!=="function")return;return MJ($,J.loader)},AJ=!1,NJ=()=>{if(AJ||typeof window>"u")return;AJ=!0;let $=navigator.connection;if($?.saveData)return;if($?.effectiveType&&["slow-2g","2g"].includes($.effectiveType))return;let J=YJ(),Z="requestIdleCallback"in window?(W)=>window.requestIdleCallback(W,{timeout:2000}):(W)=>window.setTimeout(W,300),X=(W)=>{if(W>=J.length)return;Z(()=>{Promise.resolve().then(()=>WJ(J[W])).catch(()=>{}).finally(()=>X(W+1))})};X(0)};var QJ=require("react"),r=require("react-native");var x=require("react");var U$=require("react");var u=T("@swarm.ing/pieui:context:pieConfig",()=>U$.createContext(null)),X$=()=>{let $=U$.useContext(u);if(!$)throw Error("usePieConfig must be used within PieConfigProvider");return $},Y$=()=>{let{apiServer:$}=X$();return $},V$=Y$,F$=()=>{let{centrifugeServer:$}=X$();return $};var h=()=>{let{enableRenderingLog:$}=X$();return $},kJ=h;var I$="__piedemo__";var bJ=require("react"),zJ=require("centrifuge");var yJ=T("@swarm.ing/pieui:centrifuge-cache",()=>new Map),O$=($,J)=>{if(!J)return null;let Z=`${$}::${J}`,X=yJ.get(Z);if(X)return X;async function W(){let z=await fetch($+"api/centrifuge/gen_token",{credentials:"include"});if(!z.ok){if(z.status===401||z.status===403)throw new zJ.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let Y=new zJ.Centrifuge(J,{getToken:W});return yJ.set(Z,Y),Y},yZ=T("@swarm.ing/pieui:context:centrifuge",()=>bJ.createContext(null)),S=yZ;var SJ=require("socket.io-client"),fJ=require("react");var xJ=T("@swarm.ing/pieui:socket-cache",()=>new Map),M$=($)=>{let J=xJ.get($);if(J)return J;let Z=SJ.io($,{autoConnect:!1,transports:["websocket"]});return xJ.set($,Z),Z},bZ=T("@swarm.ing/pieui:context:socket",()=>fJ.createContext(null)),f=bZ;var CJ=EZ(require("mitt")),o=require("react");function d(){return T("@swarm.ing/pieui:mitt-emitter",()=>CJ.default())}var vJ=T("@swarm.ing/pieui:context:mitt",()=>o.createContext(null));function hJ($){let J=o.useContext(vJ);return o.useCallback((Z,X)=>{(J??d()).emit(`pie${Z}_${$}`,X)},[$,J])}var C=vJ;function mJ($){return $.wasRecovering===!0&&$.recovered===!1}function gJ($){return $.recoverable===!1}var i=require("react/jsx-runtime"),xZ=({card:$,data:J,children:Z,useSocketioSupport:X=!1,useCentrifugeSupport:W=!1,useMittSupport:Y=!1,centrifugeChannel:z=void 0,methods:Q=void 0,stored:G=void 0,onResync:H=void 0})=>{let D=kJ(),A=x.useRef(Q);A.current=Q;let y=x.useRef(H);if(y.current=H,D)console.log("[PieCard] Rendering card:",$),console.log("[PieCard] Card data:",J),console.log("[PieCard] Component name:",J?.name),console.log("[PieCard] Real-time support:",{socketio:X,centrifuge:W,mitt:Y,centrifugeChannel:z}),console.log("[PieCard] Methods:",Q?Object.keys(Q):"none"),console.log("[PieCard] Has children:",!!Z);let I=x.useContext(f),E=x.useContext(S),V=x.useContext(C);if(x.useEffect(()=>{if(!I||!X||!A.current||!J.name){if(D&&X)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!I,useSocketioSupport:X,hasMethods:!!A.current,hasDataName:!!J?.name});return}let F=Object.keys(A.current??{}).map((q)=>{let _=`pie${q}_${J.name}`;if(D)console.log(`[PieCard] Socket.IO registering event: ${_}`);let B=(j)=>{A.current?.[q]?.(j)};return I.on(_,B),[_,B]});return()=>{F.forEach(([q,_])=>{if(D)console.log(`[PieCard] Socket.IO unregistering event: ${q}`);I.off(q,_)})}},[I,J.name,X]),x.useEffect(()=>{if(!E||!W||!z||!J.name){if(D&&W)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!E,useCentrifugeSupport:W,hasCentrifugeChannel:!!z,hasMethods:!!A.current,hasDataName:!!J?.name});return}let F=Object.keys(A.current??{}).map((q)=>{let _=`pie${q}_${J.name}_${z}`;if(D)console.log(`[PieCard] Centrifuge subscribing to channel: ${_}`);let B=E.newSubscription(_,{recoverable:!0,positioned:!0});return B.on("publication",(j)=>{if(D)console.log(`[PieCard] Centrifuge received data on ${_}:`,j.data);A.current?.[q]?.(j.data)}),B.on("subscribed",(j)=>{if(gJ(j))console.warn(`[PieCard] Centrifuge channel ${_} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(mJ(j)){if(D)console.log(`[PieCard] Centrifuge recovery gap on ${_}; requesting resync`);y.current?.({channel:_,reason:"gap"})}}),B.subscribe(),B});return()=>{F.forEach((q)=>{if(D)console.log("[PieCard] Centrifuge unsubscribing from channel");q.unsubscribe(),E.removeSubscription(q)})}},[E,z,J.name,W]),x.useEffect(()=>{if(!V||!Y||!J.name){if(D&&Y)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!V,useMittSupport:Y,hasMethods:!!A.current,hasDataName:!!J?.name});return}let K=Object.keys(A.current??{}),F={};return K.forEach((q)=>{let _=`pie${q}_${J.name}`,B=(j)=>{if(D)console.log(`[PieCard] Mitt registering event: ${_}`);A.current?.[q]?.(j)};F[_]=B,V.on(_,B)}),()=>{Object.entries(F).forEach(([q,_])=>{if(D)console.log(`[PieCard] Mitt unregistering event: ${q}`);V.off(q,_)})}},[V,J.name,Y]),D)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return i.jsxs(i.Fragment,{children:[i.jsx("input",{type:"hidden",name:J.name,value:JSON.stringify(G)}),Z]});return Z},U=xZ;var W$=require("react");var pJ=require("react");var A$=require("react/jsx-runtime"),SZ=T("@swarm.ing/pieui:context:fallback",()=>pJ.createContext(A$.jsx(A$.Fragment,{}))),N=SZ;var cJ=require("react");var fZ=T("@swarm.ing/pieui:context:lazyError",()=>cJ.createContext(void 0)),m=fZ;var L$=require("react"),uJ=require("react/jsx-runtime"),CZ=2,vZ=400;class n extends L$.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch($){if(this.props.onError?.($),this.state.attempt<CZ){let J=vZ*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},J)}}componentDidUpdate($){if($.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 uJ.jsx(L$.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var P$=require("react/jsx-runtime");function hZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=W$.useContext(N),X=W$.useContext(m),W=h();if(W)console.log("[UI] Rendering component:",$.card),console.log("[UI] Component data:",$.data),console.log("[UI] Component content:",$.content),console.log("[UI] Has setUiAjaxConfiguration:",!!J);let Y=s($.card);if(!Y?.component){if(W)console.warn(`[UI] Component not found in registry: ${$.card}`),console.log("[UI] Returning fallback component");return Z}if(W)console.log("[UI] Found component in registry:",{name:Y.name,isLazy:Y.isLazy,hasMetadata:!!Y.metadata});let z=Y.component,Q=P$.jsx(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J});if(Y.isLazy){if(W)console.log("[UI] Rendering lazy component with Suspense:",Y.name);return P$.jsx(n,{name:Y.name,fallback:Y.fallback?P$.jsx(Y.fallback,{}):Z,onError:X,children:Q})}if(W)console.log("[UI] Rendering component directly:",Y.name);return Q}var P=W$.memo(hZ);var dJ=require("react");var mZ=T("@swarm.ing/pieui:context:navigate",()=>dJ.createContext(void 0)),v=mZ;var lJ=require("react");var gZ=T("@swarm.ing/pieui:context:uiRenderer",()=>lJ.createContext(null)),k=gZ;var z$=require("react/jsx-runtime"),pZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),cZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,url:W,sx:Y}=$,z=QJ.useContext(v),Q=QJ.useContext(k)??P,G=()=>{if(!W)return;if(pZ(W))r.Linking.openURL(W).catch(()=>{});else z?.(W)},H=z$.jsx(Q,{setUiAjaxConfiguration:Z,uiConfig:J});return z$.jsx(U,{card:X,data:$,children:W?z$.jsx(r.Pressable,{onPress:G,style:Y,children:H}):z$.jsx(r.View,{style:Y,children:H})})},w$=cZ;var sJ=require("react"),oJ=require("react-native");var R$=require("react/jsx-runtime"),uZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,sx:W}=$,Y=sJ.useContext(k)??P;return R$.jsx(U,{card:X,data:$,children:R$.jsx(oJ.View,{style:W,children:J.map((z,Q)=>R$.jsx(Y,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},E$=uZ;var iJ=require("react"),nJ=require("react-native");var j$=require("react/jsx-runtime"),dZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,sx:W}=$,Y=iJ.useContext(k)??P;return j$.jsx(U,{card:X,data:$,children:j$.jsx(nJ.View,{style:W,children:J.map((z,Q)=>j$.jsx(Y,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},N$=dZ;var Q$=require("react");var k$=new Map,g=($,J)=>{k$.set($,J)},p=($)=>{k$.delete($)},y$=($)=>{return k$.has($)?k$.get($):null};var rJ=require("react/jsx-runtime"),lZ=({data:$})=>{let{name:J,value:Z,useSocketioSupport:X,useCentrifugeSupport:W,useMittSupport:Y,centrifugeChannel:z}=$,[Q,G]=Q$.useState(Z);return Q$.useEffect(()=>{G(Z)},[Z]),Q$.useEffect(()=>{return g(J,[Q]),()=>p(J)},[J,Q]),rJ.jsx(U,{card:"HiddenCard",data:$,useSocketioSupport:X,useCentrifugeSupport:W,useMittSupport:Y,centrifugeChannel:z,methods:{update:({value:H})=>{G(H)}}})},b$=lZ;var G$=require("react");var x$={};function aJ($){x$={...x$,...$}}function w(){return x$}function tJ(){x$={}}var eJ=require("react/jsx-runtime"),sZ=({data:$})=>{let{name:J,key:Z,value:X,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q}=$,[G,H]=G$.useState(X);return G$.useEffect(()=>{H(X)},[X]),G$.useEffect(()=>{return w().storage?.setItem?.(Z,G),g(J,[G]),()=>p(J)},[Z,J,G]),eJ.jsx(U,{card:"DeviceStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:D})=>{H(D)},remove:()=>{w().storage?.removeItem?.(Z),H("")}}})},S$=sZ;var H$=require("react");var $Z=require("react/jsx-runtime"),oZ=({data:$})=>{let{name:J,key:Z,value:X,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q}=$,[G,H]=H$.useState(X);return H$.useEffect(()=>{H(X)},[X]),H$.useEffect(()=>{return w().sessionStorage?.setItem?.(Z,G),g(J,[G]),()=>p(J)},[Z,J,G]),$Z.jsx(U,{card:"SessionStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:D})=>{H(D)},remove:()=>{w().sessionStorage?.removeItem?.(Z),H("")}}})},f$=oZ;var a=require("react"),C$=require("react-native");var JZ=require("react/jsx-runtime"),iZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),nZ=({data:$})=>{let{useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:X,centrifugeChannel:W}=$,Y=a.useContext(v),z=a.useRef(Y);z.current=Y;let Q=a.useMemo(()=>{let G=(H)=>{if(!H)return;if(iZ(H))C$.Linking.openURL(H).catch(()=>{});else z.current?.(H)};return{alert:(H)=>C$.Alert.alert(String(H.title??""),String(H.message??"")),log:(H)=>console.log("Log event",H),push:(H)=>console.warn("[IOEventsCard] push notifications are not supported on native",H?.title),redirect:(H)=>G(H.to),reload:(H)=>G(H.to)}},[]);return JZ.jsx(U,{card:"IOEventsCard",data:$,useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:X,centrifugeChannel:W,methods:Q})},v$=nZ;var h$=require("react"),ZZ=require("react-native");var GJ=require("react/jsx-runtime"),rZ=($)=>($??"").replace(/<[^>]*>/g,"").replace(/&nbsp;/g," ").replace(/\s+/g," ").trim(),aZ=({data:$})=>{let{html:J,useSocketioSupport:Z,useCentrifugeSupport:X,useMittSupport:W,centrifugeChannel:Y}=$,[z,Q]=h$.useState(J);return h$.useEffect(()=>{Q(J)},[J]),GJ.jsx(U,{card:"HTMLEmbedCard",data:$,methods:{update:(G)=>Q(G.value)},useCentrifugeSupport:X,useSocketioSupport:Z,useMittSupport:W,centrifugeChannel:Y,children:GJ.jsx(ZZ.Text,{children:rZ(z)})})},m$=aZ;var _$=require("react"),XZ=require("react-native");var p$=require("react/jsx-runtime"),tZ=({data:$})=>{let{url:J}=$,Z=_$.useContext(v),X=_$.useContext(N);return _$.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(J))XZ.Linking.openURL(J).catch(()=>{});else Z?.(J)},[J,Z]),p$.jsx(p$.Fragment,{children:X})},g$=tZ;var YZ=require("react");var HJ=require("react/jsx-runtime"),eZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X}=$,W=YZ.useContext(k)??P;return HJ.jsx(U,{card:X,data:$,children:J.map((Y,z)=>{return HJ.jsx(W,{uiConfig:Y,setUiAjaxConfiguration:Z},`children-${z}`)})})},c$=eZ;var R=require("react");var _J=require("react/jsx-runtime"),$0=({data:$,content:J})=>{let{useLoader:Z,noReturn:X,returnType:W,useSocketioSupport:Y,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G}=$,H=R.useContext(N),D=R.useContext(k)??P,[A,y]=R.useState(!1),[I,E]=R.useState(null),V=R.useRef(J),K=R.useContext(C),F=R.useCallback((B)=>{if(B===null)y(!0);else if(y(!1),!X)V.current=B;if(!X)E(B)},[X]),q=R.useCallback((B)=>{V.current=B.content,E(B.content)},[]),_=R.useCallback((B)=>{if(B===null)y(!0);else if(y(!1),!X)for(let j of B)K?.emit(j.name,j.data)},[X,K]);if(R.useEffect(()=>{E(J),y(!1)},[J]),!I&&Z)return H;return _J.jsx(U,{card:"AjaxGroupCard",data:$,methods:{changeContent:q},useSocketioSupport:Y,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G,children:_J.jsx(D,{uiConfig:I??V.current,setUiAjaxConfiguration:W==="events"?_:F})})},u$=$0;var J0=[{name:"BoxCard",component:w$},{name:"SequenceCard",component:E$},{name:"OneOfCard",component:N$},{name:"HiddenCard",component:b$},{name:"DeviceStorageCard",component:S$},{name:"SessionStorageCard",component:f$},{name:"IOEventsCard",component:v$},{name:"HTMLEmbedCard",component:m$},{name:"AutoRedirectCard",component:g$},{name:"UnionCard",component:c$},{name:"AjaxGroupCard",component:u$}];for(let $ of J0)Z$($);var t=require("react"),t$=require("@tanstack/react-query");var i$=require("react");var s$=require("react"),d$=new Map,l$=new Map;function o$($,J){let Z=`${$}::${J}`,X=$?d$.get(Z):void 0,[W,Y]=s$.useState(X??null);return s$.useEffect(()=>{if(!$)return;if(d$.has(Z)){Y(d$.get(Z));return}let z=l$.get(Z);if(!z)z=fetch($+`api/support/${J}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return d$.set(Z,G),l$.delete(Z),G}).catch((G)=>{throw l$.delete(Z),G}),l$.set(Z,z);let Q=!1;return z.then((G)=>{if(!Q)Y(G)}).catch(()=>{}),()=>{Q=!0}},[$,J,Z]),W}var Z0=($)=>{let J=document.cookie?document.cookie.split(";"):[];for(let Z of J){let X=Z.indexOf("=");if((X===-1?Z:Z.slice(0,X)).trim()===$){let Y=X===-1?"":Z.slice(X+1).trim();try{return decodeURIComponent(Y)}catch{return Y}}}return null},X0={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid($){if(typeof window<"u")window.sid=$},readWebStorage($,J){return($==="local"?window.localStorage:window.sessionStorage).getItem(J)},readCookie:Z0,readUrlParams($){return new URLSearchParams(window.location.search).getAll($)},readDomInput($){let J=document.getElementsByName($);if(!J.length)return null;let Z=J[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[]},submitGlobalForm(){if(typeof document>"u")return;let $=document.getElementById("piedata_global_form");$&&$.submit()}},WZ=X0;var zZ,Y0={isClient(){return!0},readSid(){return zZ},setSid($){zZ=$},readWebStorage($,J){let Z=w(),X=$==="local"?Z.storage:Z.sessionStorage;return X?X.getItem(J):null},async readWebStorageAsync($,J){let Z=w(),X=$==="local"?Z.asyncStorage:Z.asyncSessionStorage;if(X)return X.getItem(J);let W=$==="local"?Z.storage:Z.sessionStorage;return W?W.getItem(J):null},readCookie($){let J=w();return J.getCookie?J.getCookie($):null},readUrlParams($){let J=w();return J.getRouteParams?J.getRouteParams($):[]},readDomInput($){let J=w();return J.getInput?J.getInput($):y$($)},submitGlobalForm(){w().submitForm?.()}},QZ=Y0;var W0=typeof navigator<"u"&&navigator.product==="ReactNative",z0=W0?QZ:WZ,O=z0;var q$=T("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function GZ(){q$.resolve?.()}function qJ(){if(!O.isClient())return Promise.resolve();if(O.readSid()!==void 0)return Promise.resolve();if(!q$.promise)q$.promise=new Promise(($)=>{q$.resolve=()=>{$()}});return q$.promise}var Q0=({children:$})=>{let J=i$.useContext(f),Z=V$(),X=o$(Z,"socketIO"),W=(Y)=>{if(O.isClient())O.setSid(Y.sid),GZ(),console.log(`SocketIO initialized: ${O.readSid()}`)};return i$.useEffect(()=>{if(!J)return;let Y=()=>{console.log("SocketIO connected")},z=(Q)=>{console.log(`SocketIO disconnected: ${Q}`),J.connect()};if(X)J.on("pieinit",W),J.on("connect",Y),J.on("disconnect",z),J.connect();return()=>{if(X)J.off("pieinit",W),J.off("connect",Y),J.off("disconnect",z),J.disconnect()}},[J,X]),$},n$=Q0;var r$=require("react");var G0=({children:$})=>{let J=r$.useContext(S),Z=V$(),X=o$(Z,"centrifuge");return r$.useEffect(()=>{if(!J)return;let W=()=>{console.log("Centrifuge connected")},Y=(z)=>{console.log("Centrifuge disconnected:",z)};if(X)J.on("connected",W),J.on("disconnected",Y),J.connect();return()=>{if(X)J.disconnect()}},[J,X]),$},a$=G0;var L=require("react/jsx-runtime"),H0=({location:$,fallback:J,children:Z,disableGlobalForm:X})=>{let W=Y$(),Y=F$(),z=h(),Q=t.useMemo(()=>d(),[]),G=t.useMemo(()=>W?M$(W):null,[W]),H=t.useMemo(()=>W?O$(W,Y):null,[W,Y]);if(z)console.log("[PieRoot] Rendering with location:",$),console.log("[PieRoot] API_SERVER:",W),console.log("[PieRoot] CENTRIFUGE_SERVER:",Y),console.log("[PieRoot] Fallback provided:",!!J);return L.jsx(C.Provider,{value:Q,children:L.jsx(f.Provider,{value:G,children:L.jsx(S.Provider,{value:H,children:L.jsx(N.Provider,{value:J??L.jsx(L.Fragment,{}),children:L.jsx(n$,{children:L.jsx(a$,{children:X?Z:L.jsx("form",{id:"piedata_global_form",action:W+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},_0=($)=>{let[J]=t.useState(()=>new t$.QueryClient),Z=$.queryClient??J;return L.jsx(v.Provider,{value:$.onNavigate,children:L.jsx(u.Provider,{value:$.config,children:L.jsx(m.Provider,{value:$.onError,children:L.jsx(t$.QueryClientProvider,{client:Z,children:L.jsx(H0,{...$})})})})})},e$=_0;var _Z=require("react/jsx-runtime"),q0=($)=>{return _Z.jsx(e$,{...$,disableGlobalForm:!0})},HZ=q0;var e=require("react"),$$=require("@tanstack/react-query");var BZ=require("axios-date-transformer");var DJ=require("react");var D$=require("react/jsx-runtime");function qZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=DJ.useContext(N),X=DJ.useContext(m),W=h();if(W)console.log("[UILoading] Rendering fallback for:",$.card),console.log("[UILoading] Component data:",$.data),console.log("[UILoading] Component content:",$.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!J);let Y=s($.card);if(!Y?.component){if(W)console.warn(`[UILoading] Component not found in registry: ${$.card}`),console.log("[UILoading] Returning fallback component");return Z}if(W)console.log("[UILoading] Found component in registry:",{name:Y.name,isLazy:Y.isLazy,hasMetadata:!!Y.metadata,hasFallback:!!Y.fallback});if(Y.fallback){if(W)console.log("[UILoading] Rendering fallback for:",Y.name);let G=Y.fallback;return D$.jsx(G,{})}if(W)console.log("[UILoading] No fallback, rendering full component:",Y.name);let z=Y.component,Q=D$.jsx(k.Provider,{value:qZ,children:D$.jsx(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J})});if(Y.isLazy)return D$.jsx(n,{name:Y.name,fallback:Z,onError:X,children:Q});return Q}var $J=qZ;var KZ=require("react/jsx-runtime");function DZ($,J,Z){if(!J)return Z;let X=$.replace(/^\//,""),W=J[X];if(!W)return Z;return KZ.jsx($J,{uiConfig:W})}var M=require("react/jsx-runtime"),D0=({location:$,fallback:J,piecache:Z,onError:X,queryOptions:W,disableGlobalForm:Y})=>{let z=Y$(),Q=F$(),G=h(),H=e.useMemo(()=>BZ.createAxiosDateTransformer({baseURL:z||""}),[z]),D=e.useMemo(()=>d(),[]),A=e.useMemo(()=>z?M$(z):null,[z]),y=e.useMemo(()=>z?O$(z,Q):null,[z,Q]),{data:I,isLoading:E,error:V}=$$.useQuery({queryKey:["uiConfig",$.pathname+$.search,z],enabled:!!z,queryFn:async()=>{let F=new URLSearchParams($.search);F.set("__pieroot","web");let q="/api/content"+$.pathname+"?"+F.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",q);let _=await H.get(q,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",_.data);return _.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(F)=>Math.min(1000*2**F,30000),...W}),K=DZ($.pathname,Z,J);if(!z)return K??null;if(G)console.log("[PieRoot] Rendering with location:",$),console.log("[PieRoot] API_SERVER:",z),console.log("[PieRoot] CENTRIFUGE_SERVER:",Q),console.log("[PieRoot] Fallback provided:",!!J),console.log("[PieRoot] Piecache provided:",!!Z);if(V){if(G)console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data});return X?.(V),K}if(E||!I){if(G)console.log("[PieRoot] Loading state:",{isLoading:E,hasUiConfiguration:!!I});return K}if(G)console.log("[PieRoot] UI configuration loaded successfully:",I),console.log("[PieRoot] Rendering UI with configuration");return M.jsx(C.Provider,{value:D,children:M.jsx(f.Provider,{value:A,children:M.jsx(S.Provider,{value:y,children:M.jsx(N.Provider,{value:J??M.jsx(M.Fragment,{}),children:M.jsx(n$,{children:M.jsx(a$,{children:Y?M.jsx(P,{uiConfig:I}):M.jsx("form",{id:"piedata_global_form",action:z+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:M.jsx(P,{uiConfig:I})})})})})})})})},K0=($)=>{let J=e.useMemo(()=>new $$.QueryClient,[]),Z=$.queryClient??J;return M.jsx(v.Provider,{value:$.onNavigate,children:M.jsx(u.Provider,{value:$.config,children:M.jsx(m.Provider,{value:$.onError,children:M.jsx($$.QueryClientProvider,{client:Z,children:M.jsx(D0,{...$})})})})})},TZ=K0;var UZ=require("react");var B0=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],T0=new Set(["telegram:cloud","telegram:secure"]),K$=($)=>{if($==="sid")return{source:"sid",key:"sid"};for(let J of B0){let Z=J+":";if($.startsWith(Z))return{source:J,key:$.slice(Z.length)}}return{source:"dom",key:$}},KJ=($,J=!1)=>{let{source:Z,key:X}=K$($);if(Z==="sid"){let Y=O.readSid();if(!Y)throw Error("SocketIO isn't initialized properly");return[Y]}if(Z==="localStorage"||Z==="sessionStorage")try{let Y=O.readWebStorage(Z==="localStorage"?"local":"session",X);if(Y===null){if(J)console.warn(`No ${Z} value found for key ${X}`);return[]}return[Y]}catch(Y){if(J)console.warn(`Failed to read ${Z} key ${X}:`,Y);return[]}if(Z==="cookie"){let Y=O.readCookie(X);if(Y===null){if(J)console.warn(`No cookie found for key ${X}`);return[]}return[Y]}if(Z==="url"){let Y=O.readUrlParams(X);if(!Y.length&&J)console.warn(`No URL query param found for key ${X}`);return Y}if(T0.has(Z)){if(J)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let W=O.readDomInput(X);if(W===null){if(J)console.warn(`No input found with name ${X}`);return[]}return W},U0=($,J,Z)=>{let X=window.Telegram?.WebApp,W=$==="telegram:cloud"?X?.CloudStorage:X?.SecureStorage,Y=$==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!W){if(Z)console.warn(`${Y} is not available`);return Promise.resolve([])}return new Promise((z)=>{try{W.getItem(J,(Q,G)=>{if(Q){if(Z)console.warn(`Failed to read ${Y} key ${J}:`,Q);z([]);return}if(G==null||G===""){if(Z)console.warn(`No ${Y} value found for key ${J}`);z([]);return}z([G])})}catch(Q){if(Z)console.warn(`Failed to read ${Y} key ${J}:`,Q);z([])}})},BJ=async($,J=!1)=>{let{source:Z,key:X}=K$($);if(Z==="telegram:cloud"||Z==="telegram:secure")return U0(Z,X,J);if((Z==="localStorage"||Z==="sessionStorage")&&O.readWebStorageAsync)try{let W=await O.readWebStorageAsync(Z==="localStorage"?"local":"session",X);if(W===null){if(J)console.warn(`No ${Z} value found for key ${X}`);return[]}return[W]}catch(W){if(J)console.warn(`Failed to read ${Z} key ${X}:`,W);return[]}return KJ($,J)},V0=($,J={},Z=[],X,W)=>{let Y=W?.renderingLogEnabled??!1,z=W?.timeout,Q=W?.retryPolicy,G=Q?.maxRetries??0,H=Q?.baseDelay??1000,D=Q?.retryOn??[502,503,504];if(Y)console.log("Registering AJAX: ",X,J,Z);return async(A={})=>{if(!O.isClient()){if(Y)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let y=W?.apiServer;if(!y){if(Y)console.warn("AJAX skipped: apiServer is missing");return}if(!X||!$){if(Y)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await qJ();let I=new FormData;for(let[K,F]of Object.entries({...J,...A}))I.append(K,F);for(let K of Z){let{key:F}=K$(K);for(let q of await BJ(K,Y))I.append(F,q)}let E=y+"api/ajax_content"+X;$(null);let V;for(let K=0;K<=G;K++){if(K>0){let _=H*2**(K-1);if(Y)console.log(`AJAX retry ${K}/${G} after ${_}ms`);await new Promise((B)=>setTimeout(B,_))}let F=z!=null?new AbortController:null,q=F&&setTimeout(()=>F.abort(),z);try{let _=await fetch(E,{method:"POST",body:I,signal:F?.signal});if(q)clearTimeout(q);if(!_.ok&&D.includes(_.status)&&K<G){V=Error(`HTTP ${_.status}`);continue}let j=(_.headers.get("content-type")||"").includes("application/json");if(!!_.body?.getReader&&!j){let B$=_.body.getReader(),OZ=new TextDecoder,l="";while(!0){let{done:JJ,value:MZ}=await B$.read();if(JJ)break;l+=OZ.decode(MZ,{stream:!0});let TJ=l.split(`
3
+ `);l=TJ.pop()??"";for(let AZ of TJ){let ZJ=AZ.trim();if(!ZJ)continue;try{let LZ=JSON.parse(ZJ);$([LZ])}catch{if(Y)console.warn("Failed to parse streamed line:",ZJ)}}}if(l.trim())try{let JJ=JSON.parse(l);$([JJ])}catch{if(Y)console.warn("Failed to parse final streamed line:",l)}return{}}else{let B$=await _.json();return $(B$),B$}}catch(_){if(q)clearTimeout(q);if(V=_,K<G)continue;if(Y)console.error("AJAX request failed:",_);return $(null),_}}if(Y)console.error("AJAX request failed after retries:",V);return $(null),V}},VZ=($,J={},Z=[],X,W)=>{let{apiServer:Y,enableRenderingLog:z}=X$(),Q=JSON.stringify(J),G=JSON.stringify(Z),H=JSON.stringify(W);return UZ.useMemo(()=>V0($,J,Z,X,{apiServer:Y,renderingLogEnabled:z,timeout:W?.timeout,retryPolicy:W?.retryPolicy}),[$,Q,G,X,Y,z,H])};var FZ=()=>{O.submitGlobalForm()};var IZ=($,J)=>`${$}${I$}${J}`;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{useMemo as x}from"react";import{QueryClient as A$,QueryClientProvider as E$,useQuery as j$}from"@tanstack/react-query";import wU from"mitt";import{createContext as xU,useCallback as s$,useContext as n$}from"react";var l=globalThis,Q=(U,$)=>{let H=Symbol.for(U);if(!(H in l))l[H]=$();return l[H]};function a(){return Q("@swarm.ing/pieui:mitt-emitter",()=>wU())}var kU=Q("@swarm.ing/pieui:context:mitt",()=>xU(null));var k=kU;import{io as bU}from"socket.io-client";import{createContext as yU}from"react";var t=Q("@swarm.ing/pieui:socket-cache",()=>new Map),e=(U)=>{let $=t.get(U);if($)return $;let H=bU(U,{autoConnect:!1,transports:["websocket"]});return t.set(U,H),H},fU=Q("@swarm.ing/pieui:context:socket",()=>yU(null)),A=fU;import{createContext as CU}from"react";import{Centrifuge as UU}from"centrifuge";var $U=Q("@swarm.ing/pieui:centrifuge-cache",()=>new Map),HU=(U,$)=>{if(!$)return null;let H=`${U}::${$}`,Z=$U.get(H);if(Z)return Z;async function I(){let X=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!X.ok){if(X.status===401||X.status===403)throw new UU.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${X.status}`)}return(await X.json()).token}let J=new UU($,{getToken:I});return $U.set(H,J),J},vU=Q("@swarm.ing/pieui:context:centrifuge",()=>CU(null)),E=vU;import{useContext as nU,useEffect as iU}from"react";import{useEffect as SU,useState as gU}from"react";var b=new Map,y=new Map;function f(U,$){let H=`${U}::${$}`,Z=U?b.get(H):void 0,[I,J]=gU(Z??null);return SU(()=>{if(!U)return;if(b.has(H)){J(b.get(H));return}let X=y.get(H);if(!X)X=fetch(U+`api/support/${$}`,{method:"GET"}).then((z)=>z.json()).then((z)=>{return b.set(H,z),y.delete(H),z}).catch((z)=>{throw y.delete(H),z}),y.set(H,X);let B=!1;return X.then((z)=>{if(!B)J(z)}).catch(()=>{}),()=>{B=!0}},[U,$,H]),I}import{createContext as mU,useContext as hU}from"react";var d=Q("@swarm.ing/pieui:context:pieConfig",()=>mU(null)),C=()=>{let U=hU(d);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},u=()=>{let{apiServer:U}=C();return U},v=u,JU=()=>{let{centrifugeServer:U}=C();return U};var R=()=>{let{enableRenderingLog:U}=C();return U},ZU=R,IU=()=>{let{pageProcessor:U}=C();return U};var pU=(U)=>{let $=document.cookie?document.cookie.split(";"):[];for(let H of $){let Z=H.indexOf("=");if((Z===-1?H:H.slice(0,Z)).trim()===U){let J=Z===-1?"":H.slice(Z+1).trim();try{return decodeURIComponent(J)}catch{return J}}}return null},cU={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,$){return(U==="local"?window.localStorage:window.sessionStorage).getItem($)},readCookie:pU,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let $=document.getElementsByName(U);if(!$.length)return null;let H=$[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},XU=cU;var lU={};function M(){return lU}var YU=new Map;var zU=(U)=>{return YU.has(U)?YU.get(U):null};var GU,dU={isClient(){return!0},readSid(){return GU},setSid(U){GU=U},readWebStorage(U,$){let H=M(),Z=U==="local"?H.storage:H.sessionStorage;return Z?Z.getItem($):null},async readWebStorageAsync(U,$){let H=M(),Z=U==="local"?H.asyncStorage:H.asyncSessionStorage;if(Z)return Z.getItem($);let I=U==="local"?H.storage:H.sessionStorage;return I?I.getItem($):null},readCookie(U){let $=M();return $.getCookie?$.getCookie(U):null},readUrlParams(U){let $=M();return $.getRouteParams?$.getRouteParams(U):[]},readDomInput(U){let $=M();return $.getInput?$.getInput(U):zU(U)},submitGlobalForm(){M().submitForm?.()}},BU=dU;var uU=typeof navigator<"u"&&navigator.product==="ReactNative",oU=uU?BU:XU,S=oU;var sU=Q("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function QU(){sU.resolve?.()}var rU=({children:U})=>{let $=nU(A),H=v(),Z=f(H,"socketIO"),I=(J)=>{if(S.isClient())S.setSid(J.sid),QU(),console.log(`SocketIO initialized: ${S.readSid()}`)};return iU(()=>{if(!$)return;let J=()=>{console.log("SocketIO connected")},X=(B)=>{console.log(`SocketIO disconnected: ${B}`),$.connect()};if(Z)$.on("pieinit",I),$.on("connect",J),$.on("disconnect",X),$.connect();return()=>{if(Z)$.off("pieinit",I),$.off("connect",J),$.off("disconnect",X),$.disconnect()}},[$,Z]),U},DU=rU;import{useContext as aU,useEffect as tU}from"react";var eU=({children:U})=>{let $=aU(E),H=v(),Z=f(H,"centrifuge");return tU(()=>{if(!$)return;let I=()=>{console.log("Centrifuge connected")},J=(X)=>{console.log("Centrifuge disconnected:",X)};if(Z)$.on("connected",I),$.on("disconnected",J),$.connect();return()=>{if(Z)$.disconnect()}},[$,Z]),U},FU=eU;import{createContext as U$}from"react";import{jsx as J$,Fragment as H$}from"react/jsx-runtime";var $$=Q("@swarm.ing/pieui:context:fallback",()=>U$(J$(H$,{}))),j=$$;import{createContext as Z$}from"react";var I$=Q("@swarm.ing/pieui:context:lazyError",()=>Z$(void 0)),P=I$;import{lazy as X$}from"react";var w=new Map;function Y$(U,$){return $.catch(()=>{if(w.get(U)===$)w.delete(U)}),w.set(U,$),$}function LU(U,$){return X$(()=>{if(w.has($))return w.get($);return Y$($,U().then((H)=>H))})}var KU=Q("@swarm.ing/pieui:component-registry",()=>new Map),z$=(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=LU($.loader,U.name),$.isLazy=!0;return $};function g(U){let $=z$(U);return KU.set($.name,$),$.component}var m=(U)=>{return KU.get(U)};import{useContext as TU,memo as L$}from"react";import{Component as G$,Suspense as B$}from"react";import{jsx as F$}from"react/jsx-runtime";var Q$=2,D$=400;class N extends G${state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<Q$){let $=D$*(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 F$(B$,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as o}from"react/jsx-runtime";function K$({uiConfig:U,setUiAjaxConfiguration:$}){let H=TU(j),Z=TU(P),I=R();if(I)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!$);let J=m(U.card);if(!J?.component){if(I)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return H}if(I)console.log("[UI] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata});let X=J.component,B=o(X,{data:U.data,content:U.content,setUiAjaxConfiguration:$});if(J.isLazy){if(I)console.log("[UI] Rendering lazy component with Suspense:",J.name);return o(N,{name:J.name,fallback:J.fallback?o(J.fallback,{}):H,onError:Z,children:B})}if(I)console.log("[UI] Rendering component directly:",J.name);return B}var s=L$(K$);import{createAxiosDateTransformer as P$}from"axios-date-transformer";import{useEffect as T$,useState as _$}from"react";var h=({onError:U}={})=>{let[$,H]=_$(null),Z=IU();return T$(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp;if(!I)return;try{I.ready?.()}catch(J){U?.()}if(Z==="telegram_expanded"&&(I.platform==="ios"||I.platform==="android"))I.expand();H(I)},[]),$},q$=()=>{let U=h();return[U?.initDataUnsafe,U?.initData]};import{createContext as O$}from"react";var W$=Q("@swarm.ing/pieui:context:navigate",()=>O$(void 0)),_U=W$;import{useContext as OU}from"react";import{createContext as V$}from"react";var R$=Q("@swarm.ing/pieui:context:uiRenderer",()=>V$(null)),qU=R$;import{jsx as p}from"react/jsx-runtime";function WU({uiConfig:U,setUiAjaxConfiguration:$}){let H=OU(j),Z=OU(P),I=R();if(I)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!$);let J=m(U.card);if(!J?.component){if(I)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return H}if(I)console.log("[UILoading] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata,hasFallback:!!J.fallback});if(J.fallback){if(I)console.log("[UILoading] Rendering fallback for:",J.name);let z=J.fallback;return p(z,{})}if(I)console.log("[UILoading] No fallback, rendering full component:",J.name);let X=J.component,B=p(qU.Provider,{value:WU,children:p(X,{data:U.data,content:U.content,setUiAjaxConfiguration:$})});if(J.isLazy)return p(N,{name:J.name,fallback:H,onError:Z,children:B});return B}var VU=WU;import{jsx as M$}from"react/jsx-runtime";function RU(U,$,H){if(!$)return H;let Z=U.replace(/^\//,""),I=$[Z];if(!I)return H;return M$(VU,{uiConfig:I})}import{jsx as K,Fragment as x$}from"react/jsx-runtime";var N$=({location:U,fallback:$,piecache:H,onError:Z,queryOptions:I,disableGlobalForm:J})=>{let X=u(),B=JU(),z=R(),D=x(()=>P$({baseURL:X}),[X]),Y=x(()=>a(),[]),W=x(()=>X?e(X):null,[X]),V=x(()=>X?HU(X,B):null,[X,B]),T=h({onError:Z}),{data:_,isLoading:q,error:G}=j$({queryKey:["uiConfig",U.pathname+U.search,T?.initData],enabled:!!T?.initData,queryFn:async()=>{let L=new URLSearchParams(U.search);if(L.set("__pieroot","telegram"),T?.initData)L.set("initData",T.initData);let O="/api/content"+U.pathname+"?"+L.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",O);let r=await D.get(O,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",r.data);return r.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(L)=>Math.min(1000*2**L,30000),...I}),F=RU(U.pathname,H,$);if(!X)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(G&&z)return console.error("[PieRoot] Error fetching UI configuration:",G),console.error("[PieRoot] Error details:",{message:G.message,status:G.response?.status,data:G.response?.data}),Z?.(G),F;if(q||!_){if(z)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!_});return F}if(z)console.log("[PieRoot] UI configuration loaded successfully:",_),console.log("[PieRoot] Rendering UI with configuration");return K(k.Provider,{value:Y,children:K(A.Provider,{value:W,children:K(E.Provider,{value:V,children:K(j.Provider,{value:$??K(x$,{}),children:K(DU,{children:K(FU,{children:J?K(s,{uiConfig:_}):K("form",{id:"piedata_global_form",action:X+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:K(s,{uiConfig:_})})})})})})})})},w$=(U)=>{let $=x(()=>new A$,[]),H=U.queryClient??$;return K(_U.Provider,{value:U.onNavigate,children:K(d.Provider,{value:U.config,children:K(P.Provider,{value:U.onError,children:K(E$,{client:H,children:K(N$,{...U})})})})})},k$=w$;import{useEffect as MU,useState as S$}from"react";import{useContext as n,useEffect as i,useRef as b$}from"react";import{jsx as C$,jsxs as v$,Fragment as f$}from"react/jsx-runtime";var y$=({card:U,data:$,children:H,useSocketioSupport:Z=!1,useCentrifugeSupport:I=!1,useMittSupport:J=!1,centrifugeChannel:X=void 0,methods:B=void 0,stored:z=void 0})=>{let D=ZU(),Y=b$(B);if(Y.current=B,D)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",$),console.log("[PieCard] Component name:",$?.name),console.log("[PieCard] Real-time support:",{socketio:Z,centrifuge:I,mitt:J,centrifugeChannel:X}),console.log("[PieCard] Methods:",B?Object.keys(B):"none"),console.log("[PieCard] Has children:",!!H);let W=n(A),V=n(E),T=n(k);if(i(()=>{if(!W||!Z||!Y.current||!$.name){if(D&&Z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!W,useSocketioSupport:Z,hasMethods:!!Y.current,hasDataName:!!$?.name});return}let q=Object.keys(Y.current??{}).map((G)=>{let F=`pie${G}_${$.name}`;if(D)console.log(`[PieCard] Socket.IO registering event: ${F}`);let L=(O)=>{Y.current?.[G]?.(O)};return W.on(F,L),[F,L]});return()=>{q.forEach(([G,F])=>{if(D)console.log(`[PieCard] Socket.IO unregistering event: ${G}`);W.off(G,F)})}},[W,$.name,Z]),i(()=>{if(!V||!I||!X||!$.name){if(D&&I)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:I,hasCentrifugeChannel:!!X,hasMethods:!!Y.current,hasDataName:!!$?.name});return}let q=Object.keys(Y.current??{}).map((G)=>{let F=`pie${G}_${$.name}_${X}`;if(D)console.log(`[PieCard] Centrifuge subscribing to channel: ${F}`);let L=V.newSubscription(F);return L.on("publication",(O)=>{if(D)console.log(`[PieCard] Centrifuge received data on ${F}:`,O.data);Y.current?.[G]?.(O.data)}),L.subscribe(),L});return()=>{q.forEach((G)=>{if(D)console.log("[PieCard] Centrifuge unsubscribing from channel");G.unsubscribe(),V.removeSubscription(G)})}},[V,X,$.name,I]),i(()=>{if(!T||!J||!$.name){if(D&&J)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!T,useMittSupport:J,hasMethods:!!Y.current,hasDataName:!!$?.name});return}let _=Object.keys(Y.current??{}),q={};return _.forEach((G)=>{let F=`pie${G}_${$.name}`,L=(O)=>{if(D)console.log(`[PieCard] Mitt registering event: ${F}`);Y.current?.[G]?.(O)};q[F]=L,T.on(F,L)}),()=>{Object.entries(q).forEach(([G,F])=>{if(D)console.log(`[PieCard] Mitt unregistering event: ${G}`);T.off(G,F)})}},[T,$.name,J]),D)console.log("[PieCard] Rendering complete, returning children");if(z!==void 0)return v$(f$,{children:[C$("input",{type:"hidden",name:$.name,value:JSON.stringify(z)}),H]});return H},c=y$;import{jsx as AU}from"react/jsx-runtime";var g$=({data:U})=>{let{name:$,key:H,value:Z,useSocketioSupport:I,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:B}=U,[z,D]=S$(Z);return MU(()=>{D(Z)},[Z]),MU(()=>{if(typeof window>"u")return;let Y=window.Telegram?.WebApp?.CloudStorage;if(!Y)return;Y.setItem(H,z)},[H,z]),AU(c,{card:"CloudStorageCard",data:U,useSocketioSupport:I,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:B,methods:{update:({value:Y})=>{D(Y)},remove:()=>{let Y=window.Telegram?.WebApp?.CloudStorage;if(Y)Y.removeItem(H);D("")}},children:AU("input",{type:"hidden",id:$,name:$,value:z})})},EU=g$;var m$=g({name:"CloudStorageCard",component:EU,metadata:{author:"PieData"}});import{useEffect as jU,useState as h$}from"react";import{jsx as PU}from"react/jsx-runtime";var p$=({data:U})=>{let{name:$,key:H,value:Z,useSocketioSupport:I,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:B}=U,[z,D]=h$(Z);return jU(()=>{D(Z)},[Z]),jU(()=>{if(typeof window>"u")return;let Y=window.Telegram?.WebApp?.SecureStorage;if(!Y)return;Y.setItem(H,z)},[H,z]),PU(c,{card:"SecureStorageCard",data:U,useSocketioSupport:I,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:B,methods:{update:({value:Y})=>{D(Y)},remove:()=>{let Y=window.Telegram?.WebApp?.SecureStorage;if(Y)Y.removeItem(H);D("")}},children:PU("input",{type:"hidden",id:$,name:$,value:z})})},NU=p$;var c$=g({name:"SecureStorageCard",component:NU,metadata:{author:"PieData"}});export{h as useWebApp,q$ as useInitData,c$ as SecureStorageCard,k$ as PieTelegramRoot,m$ as CloudStorageCard};
2
+ import{useMemo as k}from"react";import{QueryClient as N$,QueryClientProvider as w$,useQuery as x$}from"@tanstack/react-query";import fU from"mitt";import{createContext as yU,useCallback as r$,useContext as a$}from"react";var u=globalThis,Q=(U,$)=>{let H=Symbol.for(U);if(!(H in u))u[H]=$();return u[H]};function t(){return Q("@swarm.ing/pieui:mitt-emitter",()=>fU())}var CU=Q("@swarm.ing/pieui:context:mitt",()=>yU(null));var f=CU;import{io as vU}from"socket.io-client";import{createContext as SU}from"react";var e=Q("@swarm.ing/pieui:socket-cache",()=>new Map),UU=(U)=>{let $=e.get(U);if($)return $;let H=vU(U,{autoConnect:!1,transports:["websocket"]});return e.set(U,H),H},mU=Q("@swarm.ing/pieui:context:socket",()=>SU(null)),R=mU;import{createContext as gU}from"react";import{Centrifuge as $U}from"centrifuge";var HU=Q("@swarm.ing/pieui:centrifuge-cache",()=>new Map),IU=(U,$)=>{if(!$)return null;let H=`${U}::${$}`,J=HU.get(H);if(J)return J;async function Z(){let X=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!X.ok){if(X.status===401||X.status===403)throw new $U.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${X.status}`)}return(await X.json()).token}let I=new $U($,{getToken:Z});return HU.set(H,I),I},hU=Q("@swarm.ing/pieui:context:centrifuge",()=>gU(null)),P=hU;import{useContext as tU,useEffect as eU}from"react";import{useEffect as pU,useState as dU}from"react";var y=new Map,C=new Map;function v(U,$){let H=`${U}::${$}`,J=U?y.get(H):void 0,[Z,I]=dU(J??null);return pU(()=>{if(!U)return;if(y.has(H)){I(y.get(H));return}let X=C.get(H);if(!X)X=fetch(U+`api/support/${$}`,{method:"GET"}).then((z)=>z.json()).then((z)=>{return y.set(H,z),C.delete(H),z}).catch((z)=>{throw C.delete(H),z}),C.set(H,X);let G=!1;return X.then((z)=>{if(!G)I(z)}).catch(()=>{}),()=>{G=!0}},[U,$,H]),Z}import{createContext as cU,useContext as lU}from"react";var o=Q("@swarm.ing/pieui:context:pieConfig",()=>cU(null)),S=()=>{let U=lU(o);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},s=()=>{let{apiServer:U}=S();return U},m=s,JU=()=>{let{centrifugeServer:U}=S();return U};var A=()=>{let{enableRenderingLog:U}=S();return U},ZU=A,XU=()=>{let{pageProcessor:U}=S();return U};var uU=(U)=>{let $=document.cookie?document.cookie.split(";"):[];for(let H of $){let J=H.indexOf("=");if((J===-1?H:H.slice(0,J)).trim()===U){let I=J===-1?"":H.slice(J+1).trim();try{return decodeURIComponent(I)}catch{return I}}}return null},oU={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,$){return(U==="local"?window.localStorage:window.sessionStorage).getItem($)},readCookie:uU,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let $=document.getElementsByName(U);if(!$.length)return null;let H=$[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},YU=oU;var sU={};function E(){return sU}var zU=new Map;var GU=(U)=>{return zU.has(U)?zU.get(U):null};var BU,nU={isClient(){return!0},readSid(){return BU},setSid(U){BU=U},readWebStorage(U,$){let H=E(),J=U==="local"?H.storage:H.sessionStorage;return J?J.getItem($):null},async readWebStorageAsync(U,$){let H=E(),J=U==="local"?H.asyncStorage:H.asyncSessionStorage;if(J)return J.getItem($);let Z=U==="local"?H.storage:H.sessionStorage;return Z?Z.getItem($):null},readCookie(U){let $=E();return $.getCookie?$.getCookie(U):null},readUrlParams(U){let $=E();return $.getRouteParams?$.getRouteParams(U):[]},readDomInput(U){let $=E();return $.getInput?$.getInput(U):GU(U)},submitGlobalForm(){E().submitForm?.()}},QU=nU;var iU=typeof navigator<"u"&&navigator.product==="ReactNative",rU=iU?QU:YU,g=rU;var aU=Q("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function _U(){aU.resolve?.()}var U$=({children:U})=>{let $=tU(R),H=m(),J=v(H,"socketIO"),Z=(I)=>{if(g.isClient())g.setSid(I.sid),_U(),console.log(`SocketIO initialized: ${g.readSid()}`)};return eU(()=>{if(!$)return;let I=()=>{console.log("SocketIO connected")},X=(G)=>{console.log(`SocketIO disconnected: ${G}`),$.connect()};if(J)$.on("pieinit",Z),$.on("connect",I),$.on("disconnect",X),$.connect();return()=>{if(J)$.off("pieinit",Z),$.off("connect",I),$.off("disconnect",X),$.disconnect()}},[$,J]),U},DU=U$;import{useContext as $$,useEffect as H$}from"react";var I$=({children:U})=>{let $=$$(P),H=m(),J=v(H,"centrifuge");return H$(()=>{if(!$)return;let Z=()=>{console.log("Centrifuge connected")},I=(X)=>{console.log("Centrifuge disconnected:",X)};if(J)$.on("connected",Z),$.on("disconnected",I),$.connect();return()=>{if(J)$.disconnect()}},[$,J]),U},FU=I$;import{createContext as J$}from"react";import{jsx as Y$,Fragment as X$}from"react/jsx-runtime";var Z$=Q("@swarm.ing/pieui:context:fallback",()=>J$(Y$(X$,{}))),j=Z$;import{createContext as z$}from"react";var G$=Q("@swarm.ing/pieui:context:lazyError",()=>z$(void 0)),N=G$;import{lazy as B$}from"react";var x=new Map;function Q$(U,$){return $.catch(()=>{if(x.get(U)===$)x.delete(U)}),x.set(U,$),$}function TU(U,$){return B$(()=>{if(x.has($))return x.get($);return Q$($,U().then((H)=>H))})}var KU=Q("@swarm.ing/pieui:component-registry",()=>new Map),_$=(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=TU($.loader,U.name),$.isLazy=!0;return $};function h(U){let $=_$(U);return KU.set($.name,$),$.component}var p=(U)=>{return KU.get(U)};import{useContext as LU,memo as q$}from"react";import{Component as D$,Suspense as F$}from"react";import{jsx as L$}from"react/jsx-runtime";var T$=2,K$=400;class w extends D${state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<T$){let $=K$*(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 L$(F$,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as n}from"react/jsx-runtime";function O$({uiConfig:U,setUiAjaxConfiguration:$}){let H=LU(j),J=LU(N),Z=A();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=p(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 X=I.component,G=n(X,{data:U.data,content:U.content,setUiAjaxConfiguration:$});if(I.isLazy){if(Z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return n(w,{name:I.name,fallback:I.fallback?n(I.fallback,{}):H,onError:J,children:G})}if(Z)console.log("[UI] Rendering component directly:",I.name);return G}var i=q$(O$);import{createAxiosDateTransformer as k$}from"axios-date-transformer";import{useEffect as W$,useState as V$}from"react";var d=({onError:U}={})=>{let[$,H]=V$(null),J=XU();return W$(()=>{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)},[]),$},M$=()=>{let U=d();return[U?.initDataUnsafe,U?.initData]};import{createContext as A$}from"react";var E$=Q("@swarm.ing/pieui:context:navigate",()=>A$(void 0)),qU=E$;import{useContext as WU}from"react";import{createContext as R$}from"react";var P$=Q("@swarm.ing/pieui:context:uiRenderer",()=>R$(null)),OU=P$;import{jsx as c}from"react/jsx-runtime";function VU({uiConfig:U,setUiAjaxConfiguration:$}){let H=WU(j),J=WU(N),Z=A();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=p(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 z=I.fallback;return c(z,{})}if(Z)console.log("[UILoading] No fallback, rendering full component:",I.name);let X=I.component,G=c(OU.Provider,{value:VU,children:c(X,{data:U.data,content:U.content,setUiAjaxConfiguration:$})});if(I.isLazy)return c(w,{name:I.name,fallback:H,onError:J,children:G});return G}var MU=VU;import{jsx as j$}from"react/jsx-runtime";function AU(U,$,H){if(!$)return H;let J=U.replace(/^\//,""),Z=$[J];if(!Z)return H;return j$(MU,{uiConfig:Z})}import{jsx as D,Fragment as y$}from"react/jsx-runtime";var b$=({location:U,fallback:$,piecache:H,onError:J,queryOptions:Z,disableGlobalForm:I})=>{let X=s(),G=JU(),z=A(),K=k(()=>k$({baseURL:X}),[X]),Y=k(()=>t(),[]),F=k(()=>X?UU(X):null,[X]),b=k(()=>X?IU(X,G):null,[X,G]),q=d({onError:J}),{data:L,isLoading:M,error:O}=x$({queryKey:["uiConfig",U.pathname+U.search,q?.initData],enabled:!!q?.initData,queryFn:async()=>{let B=new URLSearchParams(U.search);if(B.set("__pieroot","telegram"),q?.initData)B.set("initData",q.initData);let _="/api/content"+U.pathname+"?"+B.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",_);let T=await K.get(_,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",T.data);return T.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(B)=>Math.min(1000*2**B,30000),...Z}),W=AU(U.pathname,H,$);if(!X)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(O&&z)return console.error("[PieRoot] Error fetching UI configuration:",O),console.error("[PieRoot] Error details:",{message:O.message,status:O.response?.status,data:O.response?.data}),J?.(O),W;if(M||!L){if(z)console.log("[PieRoot] Loading state:",{isLoading:M,hasUiConfiguration:!!L});return W}if(z)console.log("[PieRoot] UI configuration loaded successfully:",L),console.log("[PieRoot] Rendering UI with configuration");return D(f.Provider,{value:Y,children:D(R.Provider,{value:F,children:D(P.Provider,{value:b,children:D(j.Provider,{value:$??D(y$,{}),children:D(DU,{children:D(FU,{children:I?D(i,{uiConfig:L}):D("form",{id:"piedata_global_form",action:X+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:D(i,{uiConfig:L})})})})})})})})},f$=(U)=>{let $=k(()=>new N$,[]),H=U.queryClient??$;return D(qU.Provider,{value:U.onNavigate,children:D(o.Provider,{value:U.config,children:D(N.Provider,{value:U.onError,children:D(w$,{client:H,children:D(b$,{...U})})})})})},C$=f$;import{useEffect as jU,useState as h$}from"react";import{useContext as r,useEffect as a,useRef as PU}from"react";function EU(U){return U.wasRecovering===!0&&U.recovered===!1}function RU(U){return U.recoverable===!1}import{jsx as m$,jsxs as g$,Fragment as S$}from"react/jsx-runtime";var v$=({card:U,data:$,children:H,useSocketioSupport:J=!1,useCentrifugeSupport:Z=!1,useMittSupport:I=!1,centrifugeChannel:X=void 0,methods:G=void 0,stored:z=void 0,onResync:K=void 0})=>{let Y=ZU(),F=PU(G);F.current=G;let b=PU(K);if(b.current=K,Y)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:X}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!H);let q=r(R),L=r(P),M=r(f);if(a(()=>{if(!q||!J||!F.current||!$.name){if(Y&&J)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!q,useSocketioSupport:J,hasMethods:!!F.current,hasDataName:!!$?.name});return}let W=Object.keys(F.current??{}).map((B)=>{let _=`pie${B}_${$.name}`;if(Y)console.log(`[PieCard] Socket.IO registering event: ${_}`);let T=(V)=>{F.current?.[B]?.(V)};return q.on(_,T),[_,T]});return()=>{W.forEach(([B,_])=>{if(Y)console.log(`[PieCard] Socket.IO unregistering event: ${B}`);q.off(B,_)})}},[q,$.name,J]),a(()=>{if(!L||!Z||!X||!$.name){if(Y&&Z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:Z,hasCentrifugeChannel:!!X,hasMethods:!!F.current,hasDataName:!!$?.name});return}let W=Object.keys(F.current??{}).map((B)=>{let _=`pie${B}_${$.name}_${X}`;if(Y)console.log(`[PieCard] Centrifuge subscribing to channel: ${_}`);let T=L.newSubscription(_,{recoverable:!0,positioned:!0});return T.on("publication",(V)=>{if(Y)console.log(`[PieCard] Centrifuge received data on ${_}:`,V.data);F.current?.[B]?.(V.data)}),T.on("subscribed",(V)=>{if(RU(V))console.warn(`[PieCard] Centrifuge channel ${_} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(EU(V)){if(Y)console.log(`[PieCard] Centrifuge recovery gap on ${_}; requesting resync`);b.current?.({channel:_,reason:"gap"})}}),T.subscribe(),T});return()=>{W.forEach((B)=>{if(Y)console.log("[PieCard] Centrifuge unsubscribing from channel");B.unsubscribe(),L.removeSubscription(B)})}},[L,X,$.name,Z]),a(()=>{if(!M||!I||!$.name){if(Y&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!M,useMittSupport:I,hasMethods:!!F.current,hasDataName:!!$?.name});return}let O=Object.keys(F.current??{}),W={};return O.forEach((B)=>{let _=`pie${B}_${$.name}`,T=(V)=>{if(Y)console.log(`[PieCard] Mitt registering event: ${_}`);F.current?.[B]?.(V)};W[_]=T,M.on(_,T)}),()=>{Object.entries(W).forEach(([B,_])=>{if(Y)console.log(`[PieCard] Mitt unregistering event: ${B}`);M.off(B,_)})}},[M,$.name,I]),Y)console.log("[PieCard] Rendering complete, returning children");if(z!==void 0)return g$(S$,{children:[m$("input",{type:"hidden",name:$.name,value:JSON.stringify(z)}),H]});return H},l=v$;import{jsx as NU}from"react/jsx-runtime";var p$=({data:U})=>{let{name:$,key:H,value:J,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:X,centrifugeChannel:G}=U,[z,K]=h$(J);return jU(()=>{K(J)},[J]),jU(()=>{if(typeof window>"u")return;let Y=window.Telegram?.WebApp?.CloudStorage;if(!Y)return;Y.setItem(H,z)},[H,z]),NU(l,{card:"CloudStorageCard",data:U,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:X,centrifugeChannel:G,methods:{update:({value:Y})=>{K(Y)},remove:()=>{let Y=window.Telegram?.WebApp?.CloudStorage;if(Y)Y.removeItem(H);K("")}},children:NU("input",{type:"hidden",id:$,name:$,value:z})})},wU=p$;var d$=h({name:"CloudStorageCard",component:wU,metadata:{author:"PieData"}});import{useEffect as xU,useState as c$}from"react";import{jsx as kU}from"react/jsx-runtime";var l$=({data:U})=>{let{name:$,key:H,value:J,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:X,centrifugeChannel:G}=U,[z,K]=c$(J);return xU(()=>{K(J)},[J]),xU(()=>{if(typeof window>"u")return;let Y=window.Telegram?.WebApp?.SecureStorage;if(!Y)return;Y.setItem(H,z)},[H,z]),kU(l,{card:"SecureStorageCard",data:U,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:X,centrifugeChannel:G,methods:{update:({value:Y})=>{K(Y)},remove:()=>{let Y=window.Telegram?.WebApp?.SecureStorage;if(Y)Y.removeItem(H);K("")}},children:kU("input",{type:"hidden",id:$,name:$,value:z})})},bU=l$;var u$=h({name:"SecureStorageCard",component:bU,metadata:{author:"PieData"}});export{d as useWebApp,M$ as useInitData,u$ as SecureStorageCard,C$ as PieTelegramRoot,d$ as CloudStorageCard};