@swarm.ing/pieui 2.1.6 → 2.1.7
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/components/PieCard/index.d.ts.map +1 -1
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/index.esm.js +2 -2
- package/dist/index.js +2 -2
- package/dist/native/index.esm.js +2 -2
- package/dist/native/index.js +2 -2
- package/dist/telegram/index.esm.js +1 -1
- package/dist/telegram/index.js +1 -1
- package/dist/tests/centrifugeSubscription.test.d.ts +2 -0
- package/dist/tests/centrifugeSubscription.test.d.ts.map +1 -0
- package/dist/util/centrifugeSubscription.d.ts +18 -0
- package/dist/util/centrifugeSubscription.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieCard/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieCard/index.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC;;;;;;;;;;;;;;;;;GAiBG;AACH,QAAA,MAAM,OAAO,GAAI,OAAO,GAAG,OAAO,EAAG,mIAWlC,YAAY,CAAC,OAAO,CAAC,gWAgPvB,CAAA;AAED,eAAe,OAAO,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useContext as x,useEffect as S,useRef as oo}from"react";import{createContext as Vo,useContext as Mo}from"react";var j=globalThis,Q=(o,U)=>{let I=Symbol.for(o);if(!(I in j))j[I]=U();return j[I]};var Ro=Q("@swarm.ing/pieui:context:pieConfig",()=>Vo(null)),Eo=()=>{let o=Mo(Ro);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var E=()=>{let{enableRenderingLog:o}=Eo();return o},n=E;import{createContext as No}from"react";import{Centrifuge as Gf}from"centrifuge";var Ff=Q("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var po=Q("@swarm.ing/pieui:context:centrifuge",()=>No(null)),s=po;import{io as Xf}from"socket.io-client";import{createContext as bo}from"react";var Kf=Q("@swarm.ing/pieui:socket-cache",()=>new Map);var mo=Q("@swarm.ing/pieui:context:socket",()=>bo(null)),a=mo;import Mf from"mitt";import{createContext as yo,useCallback as Nf,useContext as pf}from"react";var ko=Q("@swarm.ing/pieui:context:mitt",()=>yo(null));var p=ko;function t(o){return o.wasRecovering===!0&&o.recovered===!1}function e(o){return o.recoverable===!1}import{jsx as So,jsxs as go,Fragment as xo}from"react/jsx-runtime";var jo=({card:o,data:U,children:I,useSocketioSupport:T=!1,useCentrifugeSupport:P=!1,useMittSupport:f=!1,centrifugeChannel:w=void 0,methods:H=void 0,stored:O=void 0,onResync:L=void 0})=>{let $=n(),Z=oo(H);Z.current=H;let F=oo(L);if(F.current=L,$)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:T,centrifuge:P,mitt:f,centrifugeChannel:w}),console.log("[PieCard] Methods:",H?Object.keys(H):"none"),console.log("[PieCard] Has children:",!!I);let B=x(a),z=x(s),X=x(p);if(S(()=>{if(!B||!T||!Z.current||!U.name){if($&&T)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:T,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let K=Object.keys(Z.current??{}).map((D)=>{let q=`pie${D}_${U.name}`;if($)console.log(`[PieCard] Socket.IO registering event: ${q}`);let A=(Y)=>{Z.current?.[D]?.(Y)};return B.on(q,A),[q,A]});return()=>{K.forEach(([D,q])=>{if($)console.log(`[PieCard] Socket.IO unregistering event: ${D}`);B.off(D,q)})}},[B,U.name,T]),S(()=>{if(!z||!P||!w||!U.name){if($&&P)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!z,useCentrifugeSupport:P,hasCentrifugeChannel:!!w,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let K=Object.keys(Z.current??{}).map((D)=>{let q=`pie${D}_${U.name}_${w}`;if($)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let A=z.newSubscription(q,{recoverable:!0,positioned:!0});return A.on("publication",(Y)=>{if($)console.log(`[PieCard] Centrifuge received data on ${q}:`,Y.data);Z.current?.[D]?.(Y.data)}),A.on("subscribed",(Y)=>{if(e(Y))console.warn(`[PieCard] Centrifuge channel ${q} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(t(Y)){if($)console.log(`[PieCard] Centrifuge recovery gap on ${q}; requesting resync`);F.current?.({channel:q,reason:"gap"})}}),A.subscribe(),A});return()=>{K.forEach((D)=>{if($)console.log("[PieCard] Centrifuge unsubscribing from channel");D.unsubscribe(),z.removeSubscription(D)})}},[z,w,U.name,P]),S(()=>{if(!X||!f||!U.name){if($&&f)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!X,useMittSupport:f,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let V=Object.keys(Z.current??{}),K={};return V.forEach((D)=>{let q=`pie${D}_${U.name}`,A=(Y)=>{if($)console.log(`[PieCard] Mitt registering event: ${q}`);Z.current?.[D]?.(Y)};K[q]=A,X.on(q,A)}),()=>{Object.entries(K).forEach(([D,q])=>{if($)console.log(`[PieCard] Mitt unregistering event: ${D}`);X.off(D,q)})}},[X,U.name,f]),$)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return go(xo,{children:[So("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),I]});return I},J=jo;import{lazy as vo}from"react";var N=new Map;function lo(o,U){return U.catch(()=>{if(N.get(o)===U)N.delete(o)}),N.set(o,U),U}function Uo(o,U){return vo(()=>{if(N.has(U))return N.get(U);return lo(U,o().then((I)=>I))})}var fo=Q("@swarm.ing/pieui:component-registry",()=>new Map),ro=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let U={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=Uo(U.loader,o.name),U.isLazy=!0;return U};function G(o){let U=ro(o);return fo.set(U.name,U),U.component}var b=(o)=>{return fo.get(o)};import{useContext as Io,memo as fU}from"react";import{createContext as io}from"react";import{jsx as ho,Fragment as uo}from"react/jsx-runtime";var co=Q("@swarm.ing/pieui:context:fallback",()=>io(ho(uo,{}))),C=co;import{createContext as no}from"react";var so=Q("@swarm.ing/pieui:context:lazyError",()=>no(void 0)),m=so;import{Component as ao,Suspense as to}from"react";import{jsx as UU}from"react/jsx-runtime";var eo=2,oU=400;class M extends ao{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<eo){let U=oU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},U)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return UU(to,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as g}from"react/jsx-runtime";function IU({uiConfig:o,setUiAjaxConfiguration:U}){let I=Io(C),T=Io(m),P=E();if(P)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let f=b(o.card);if(!f?.component){if(P)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return I}if(P)console.log("[UI] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata});let w=f.component,H=g(w,{data:o.data,content:o.content,setUiAjaxConfiguration:U});if(f.isLazy){if(P)console.log("[UI] Rendering lazy component with Suspense:",f.name);return g(M,{name:f.name,fallback:f.fallback?g(f.fallback,{}):I,onError:T,children:H})}if(P)console.log("[UI] Rendering component directly:",f.name);return H}var _=fU(IU);import{useContext as To}from"react";import{createContext as TU}from"react";var PU=Q("@swarm.ing/pieui:context:uiRenderer",()=>TU(null)),W=PU;import{jsx as y}from"react/jsx-runtime";function Po({uiConfig:o,setUiAjaxConfiguration:U}){let I=To(C),T=To(m),P=E();if(P)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let f=b(o.card);if(!f?.component){if(P)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return I}if(P)console.log("[UILoading] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata,hasFallback:!!f.fallback});if(f.fallback){if(P)console.log("[UILoading] Rendering fallback for:",f.name);let O=f.fallback;return y(O,{})}if(P)console.log("[UILoading] No fallback, rendering full component:",f.name);let w=f.component,H=y(W.Provider,{value:Po,children:y(w,{data:o.data,content:o.content,setUiAjaxConfiguration:U})});if(f.isLazy)return y(M,{name:f.name,fallback:I,onError:T,children:H});return H}var wU=Po;import{useContext as zU}from"react";import{jsx as v}from"react/jsx-runtime";var HU=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,sx:P}=o,f=zU(W)??_;return v(J,{card:T,data:o,children:v("div",{style:P,id:T,children:U.map((w,H)=>{return v(f,{uiConfig:w,setUiAjaxConfiguration:I},`children-${H}`)})})})},wo=HU;var ZU=G({name:"SequenceCard",component:wo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as OU}from"react";import{jsx as zo}from"react/jsx-runtime";var LU=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T}=o,P=OU(W)??_;return zo(J,{card:T,data:o,children:U.map((f,w)=>{return zo(P,{uiConfig:f,setUiAjaxConfiguration:I},`children-${w}`)})})},Ho=LU;var AU=G({name:"UnionCard",component:Ho,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as GU,useState as JU}from"react";import FU from"html-react-parser";import{useCallback as k,useEffect as BU,useRef as l,useState as $U}from"react";function qU(){let o=new AudioContext,U=o.createOscillator(),I=U.connect(o.createMediaStreamDestination());U.start();let T=I.stream.getAudioTracks()[0];return T.enabled=!1,T}function r(o=null,U){let[I,T]=$U(!1),P=l(null),f=l(null),w=l(null),H=k(async(Z,F=!0)=>{if(P.current)O();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")T(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))T(!1)},B.ontrack=(A)=>{if(o)o.srcObject=A.streams[0]},F){let A=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(A.getTracks()[0],A)}else{let A=qU();B.addTrack(A)}let z=B.createDataChannel("oai-events");f.current=z,w.current=new Promise((A)=>{z.addEventListener("open",()=>{A()})});let X=await B.createOffer();await B.setLocalDescription(X);let q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${Z}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:q}),P.current=B,await w.current},[o]),O=k(()=>{let Z=f.current;if(Z)Z.close();P.current?.getSenders()?.forEach((F)=>F.track?.stop()),P.current?.close(),T(!1),P.current=null,f.current=null,w.current=null},[o]),L=k((Z)=>{let F=f.current;if(!F){console.error("Data channel is not ready",Z);return}let B=new Date().toLocaleTimeString();if(Z.event_id=Z.event_id||crypto.randomUUID(),F.send(JSON.stringify(Z)),!Z.timestamp)Z.timestamp=B;U?.(Z)},[U,o]),$=k((Z)=>{if(!f.current){console.error("Data channel is not ready");return}let B=()=>{L({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Z}]}}),L({type:"response.create"})};if(w.current)w.current.then(B);else B()},[U,o]);return BU(()=>{let Z=f.current;if(!Z)return;let F=(B)=>{let z=JSON.parse(B.data);if(!z.timestamp)z.timestamp=new Date().toLocaleTimeString();U?.(z)};return Z.addEventListener("message",F),()=>{Z.removeEventListener("message",F)}},[U,o]),{isSessionActive:I,startSession:H,stopSession:O,sendTextMessage:$}}import{jsx as QU}from"react/jsx-runtime";var DU=({data:o})=>{let{html:U,useSocketioSupport:I,useCentrifugeSupport:T,useMittSupport:P,centrifugeChannel:f}=o,[w,H]=JU(U),{isSessionActive:O,startSession:L,sendTextMessage:$}=r(null,(z)=>{if(console.log(z.type,z.type==="response.output_text.delta"&&z.delta),z.type==="response.output_text.delta"&&z.delta)H((X)=>X+z.delta)});return GU(()=>{H(U)},[U]),QU(J,{card:"HTMLEmbedCard",data:o,methods:{update:(z)=>{H(z.value)},generateUsingAI:async(z)=>{try{if(!O&&z.token)await L(z.token,!1);$(z.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(z)=>{if(!O&&z.token)await L(z.token,!1)}},useCentrifugeSupport:T,useSocketioSupport:I,useMittSupport:P,centrifugeChannel:f,children:FU(w)})},Zo=DU;var XU=G({name:"HTMLEmbedCard",component:Zo,metadata:{author:"Swarm.ing"}});import{useEffect as YU,useState as WU}from"react";import{jsx as Oo}from"react/jsx-runtime";var _U=({data:o})=>{let{name:U,value:I,useSocketioSupport:T,useCentrifugeSupport:P,useMittSupport:f,centrifugeChannel:w}=o,[H,O]=WU(I);return YU(()=>{O(I)},[I]),Oo(J,{card:"HiddenCard",data:o,useSocketioSupport:T,useCentrifugeSupport:P,useMittSupport:f,centrifugeChannel:w,methods:{update:({value:L})=>{O(L)}},children:Oo("input",{type:"hidden",id:U,name:U,value:H})})},Lo=_U;var KU=G({name:"HiddenCard",component:Lo,metadata:{author:"Swarm.ing"}});import{useContext as Ao,useEffect as MU}from"react";import{createContext as CU}from"react";var VU=Q("@swarm.ing/pieui:context:navigate",()=>CU(void 0)),R=VU;import{jsx as NU,Fragment as EU}from"react/jsx-runtime";var RU=({data:o})=>{let{url:U}=o,I=Ao(R),T=Ao(C);return MU(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else I?.(U)},[U,I]),NU(EU,{children:T})},Bo=RU;var pU=G({name:"AutoRedirectCard",component:Bo,metadata:{author:"Swarm.ing"}});import{Bounce as bU,Slide as mU,Zoom as yU,Flip as kU}from"react-toastify";import{toast as jU,ToastContainer as xU}from"react-toastify";import{useContext as SU,useMemo as gU,useRef as vU}from"react";import{jsx as i,Fragment as uU}from"react/jsx-runtime";var lU={bounce:bU,slide:mU,zoom:yU,flip:kU},rU=(o)=>{let U={...o,type:o.alertType,transition:o.transition?lU[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};jU(o.message,U)},iU=(o)=>{console.log("Log event",o)},dU=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(T){console.error("[IOEventsCard] Failed to show notification",T)}},I=window.Notification.permission;if(I==="granted"){U();return}if(I==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((T)=>{if(T==="granted")U()})},cU=({data:o})=>{let{useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:T,centrifugeChannel:P}=o,f=SU(R),w=vU(f);w.current=f;let H=gU(()=>({alert:rU,log:iU,push:dU,redirect:(O)=>{if(O.to){let L=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(L))window.location.href=L;else w.current?.(L)}else window.location.reload()},reload:(O)=>{if(O.to){let L=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(L))window.location.href=L;else w.current?.(L)}else window.location.reload()}}),[]);return i(uU,{children:i(J,{card:"IOEventsCard",data:o,useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:T,centrifugeChannel:P,methods:H,children:i(xU,{})})})},$o=cU;var hU=G({name:"IOEventsCard",component:$o,metadata:{author:"Swarm.ing"}});import{useEffect as qo,useState as nU}from"react";import{jsx as Go}from"react/jsx-runtime";var sU=({data:o})=>{let{name:U,key:I,value:T,useSocketioSupport:P,useCentrifugeSupport:f,useMittSupport:w,centrifugeChannel:H}=o,[O,L]=nU(T);return qo(()=>{L(T)},[T]),qo(()=>{if(typeof window>"u")return;sessionStorage.setItem(I,O)},[I,O]),Go(J,{card:"SessionStorageCard",data:o,useSocketioSupport:P,useCentrifugeSupport:f,useMittSupport:w,centrifugeChannel:H,methods:{update:({value:$})=>{L($)},remove:()=>{sessionStorage.removeItem(I),L("")}},children:Go("input",{type:"hidden",id:U,name:U,value:O})})},Jo=sU;var aU=G({name:"SessionStorageCard",component:Jo,metadata:{author:"PieData"}});import{useEffect as Fo,useState as tU}from"react";import{jsx as Do}from"react/jsx-runtime";var eU=({data:o})=>{let{name:U,key:I,value:T,useSocketioSupport:P,useCentrifugeSupport:f,useMittSupport:w,centrifugeChannel:H}=o,[O,L]=tU(T);return Fo(()=>{L(T)},[T]),Fo(()=>{if(typeof window>"u")return;localStorage.setItem(I,O)},[I,O]),Do(J,{card:"DeviceStorageCard",data:o,useSocketioSupport:P,useCentrifugeSupport:f,useMittSupport:w,centrifugeChannel:H,methods:{update:({value:$})=>{L($)},remove:()=>{localStorage.removeItem(I),L("")}},children:Do("input",{type:"hidden",id:U,name:U,value:O})})},Qo=eU;var of=G({name:"DeviceStorageCard",component:Qo,metadata:{author:"PieData"}});import{useCallback as d,useContext as c,useEffect as Uf,useRef as ff,useState as Xo}from"react";import{jsx as Yo}from"react/jsx-runtime";var If=({data:o,content:U})=>{let{useLoader:I,noReturn:T,returnType:P,useSocketioSupport:f,useCentrifugeSupport:w,useMittSupport:H,centrifugeChannel:O}=o,L=c(C),$=c(W)??_,[Z,F]=Xo(!1),[B,z]=Xo(null),X=ff(U),V=c(p),K=d((A)=>{if(A===null)F(!0);else if(F(!1),!T)X.current=A;if(!T)z(A)},[T]),D=d((A)=>{X.current=A.content,z(A.content)},[]),q=d((A)=>{if(A===null)F(!0);else if(F(!1),!T)for(let Y of A)V?.emit(Y.name,Y.data)},[T,V]);if(Uf(()=>{z(U),F(!1)},[U]),!B&&I)return L;return Yo(J,{card:"AjaxGroupCard",data:o,methods:{changeContent:D},useSocketioSupport:f,useCentrifugeSupport:w,useMittSupport:H,centrifugeChannel:O,children:Yo($,{uiConfig:B??X.current,setUiAjaxConfiguration:P==="events"?q:K})})},Wo=If;var Tf=G({name:"AjaxGroupCard",component:Wo,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as _o}from"react";import{jsx as u}from"react/jsx-runtime";var Pf=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,url:P,sx:f}=o,w=_o(R),H=_o(W)??_;return u(J,{card:T,data:o,children:u("div",{style:f,id:T,onClick:(L)=>{if(P)if(L.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(P))window.location.href=P;else w?.(P)},children:u(H,{setUiAjaxConfiguration:I,uiConfig:U})})})},Ko=Pf;var wf=G({name:"BoxCard",component:Ko,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as zf}from"react";import{jsx as h}from"react/jsx-runtime";var Hf=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,sx:P}=o,f=zf(W)??_;return h(J,{card:T,data:o,children:h("div",{style:P,id:T,children:U.map((w,H)=>{return h(f,{uiConfig:w,setUiAjaxConfiguration:I},`children-${H}`)})})})},Co=Hf;var Zf=G({name:"OneOfCard",component:Co,metadata:{author:"Swarm.ing",description:"Different variants"}});export{AU as UnionCard,wU as UILoading,_ as UI,aU as SessionStorageCard,ZU as SequenceCard,J as PieCard,Zf as OneOfCard,hU as IOEventsCard,KU as HiddenCard,XU as HTMLEmbedCard,of as DeviceStorageCard,wf as BoxCard,pU as AutoRedirectCard,Tf as AjaxGroupCard};
|
|
2
|
+
import{useContext as S,useEffect as g,useRef as TU}from"react";import{createContext as NU,useContext as kU}from"react";var b=globalThis,X=(U,f)=>{let T=Symbol.for(U);if(!(T in b))b[T]=f();return b[T]};var yU=X("@swarm.ing/pieui:context:pieConfig",()=>NU(null)),jU=()=>{let U=kU(yU);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U};var N=()=>{let{enableRenderingLog:U}=jU();return U},t=N;import{createContext as mU}from"react";import{Centrifuge as XI}from"centrifuge";var YI=X("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var pU=X("@swarm.ing/pieui:context:centrifuge",()=>mU(null)),e=pU;import{io as KI}from"socket.io-client";import{createContext as xU}from"react";var RI=X("@swarm.ing/pieui:socket-cache",()=>new Map);var bU=X("@swarm.ing/pieui:context:socket",()=>xU(null)),UU=bU;import kI from"mitt";import{createContext as SU,useCallback as mI,useContext as pI}from"react";var gU=X("@swarm.ing/pieui:context:mitt",()=>SU(null));var y=gU;function fU(U){return U.wasRecovering===!0&&U.recovered===!1}function IU(U){return U.recoverable===!1}function oU(U,f,T){let o=U.getSubscription(f);if(o)return{subscription:o,createdHere:!1};return{subscription:U.newSubscription(f,T),createdHere:!0}}import{jsx as dU,jsxs as rU,Fragment as lU}from"react/jsx-runtime";var vU=({card:U,data:f,children:T,useSocketioSupport:o=!1,useCentrifugeSupport:z=!1,useMittSupport:I=!1,centrifugeChannel:Z=void 0,methods:O=void 0,stored:B=void 0,onResync:H=void 0})=>{let q=t(),P=TU(O);P.current=O;let Q=TU(H);if(Q.current=H,q)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",f),console.log("[PieCard] Component name:",f?.name),console.log("[PieCard] Real-time support:",{socketio:o,centrifuge:z,mitt:I,centrifugeChannel:Z}),console.log("[PieCard] Methods:",O?Object.keys(O):"none"),console.log("[PieCard] Has children:",!!T);let $=S(UU),L=S(e),w=S(y);if(g(()=>{if(!$||!o||!P.current||!f.name){if(q&&o)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!$,useSocketioSupport:o,hasMethods:!!P.current,hasDataName:!!f?.name});return}let K=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}`;if(q)console.log(`[PieCard] Socket.IO registering event: ${G}`);let A=(_)=>{P.current?.[J]?.(_)};return $.on(G,A),[G,A]});return()=>{K.forEach(([J,G])=>{if(q)console.log(`[PieCard] Socket.IO unregistering event: ${J}`);$.off(J,G)})}},[$,f.name,o]),g(()=>{if(!L||!z||!Z||!f.name){if(q&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!P.current,hasDataName:!!f?.name});return}let K=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}_${Z}`;if(q)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let{subscription:A,createdHere:_}=oU(L,G,{recoverable:!0,positioned:!0}),s=(E)=>{if(q)console.log(`[PieCard] Centrifuge received data on ${G}:`,E.data);P.current?.[J]?.(E.data)},a=(E)=>{if(IU(E))console.warn(`[PieCard] Centrifuge channel ${G} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(fU(E)){if(q)console.log(`[PieCard] Centrifuge recovery gap on ${G}; requesting resync`);Q.current?.({channel:G,reason:"gap"})}};return A.on("publication",s),A.on("subscribed",a),A.subscribe(),{subscription:A,createdHere:_,onPublication:s,onSubscribed:a}});return()=>{K.forEach(({subscription:J,createdHere:G,onPublication:A,onSubscribed:_})=>{if(q)console.log("[PieCard] Centrifuge unsubscribing from channel");if(J.off("publication",A),J.off("subscribed",_),G)J.unsubscribe(),L.removeSubscription(J)})}},[L,Z,f.name,z]),g(()=>{if(!w||!I||!f.name){if(q&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:I,hasMethods:!!P.current,hasDataName:!!f?.name});return}let V=Object.keys(P.current??{}),K={};return V.forEach((J)=>{let G=`pie${J}_${f.name}`,A=(_)=>{if(q)console.log(`[PieCard] Mitt registering event: ${G}`);P.current?.[J]?.(_)};K[G]=A,w.on(G,A)}),()=>{Object.entries(K).forEach(([J,G])=>{if(q)console.log(`[PieCard] Mitt unregistering event: ${J}`);w.off(J,G)})}},[w,f.name,I]),q)console.log("[PieCard] Rendering complete, returning children");if(B!==void 0)return rU(lU,{children:[dU("input",{type:"hidden",name:f.name,value:JSON.stringify(B)}),T]});return T},D=vU;import{lazy as uU}from"react";var k=new Map;function cU(U,f){return f.catch(()=>{if(k.get(U)===f)k.delete(U)}),k.set(U,f),f}function zU(U,f){return uU(()=>{if(k.has(f))return k.get(f);return cU(f,U().then((T)=>T))})}var ZU=X("@swarm.ing/pieui:component-registry",()=>new Map),hU=(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 f={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!f.component&&f.loader)f.component=zU(f.loader,U.name),f.isLazy=!0;return f};function F(U){let f=hU(U);return ZU.set(f.name,f),f.component}var j=(U)=>{return ZU.get(U)};import{useContext as LU,memo as zf}from"react";import{createContext as iU}from"react";import{jsx as aU,Fragment as sU}from"react/jsx-runtime";var nU=X("@swarm.ing/pieui:context:fallback",()=>iU(aU(sU,{}))),C=nU;import{createContext as tU}from"react";var eU=X("@swarm.ing/pieui:context:lazyError",()=>tU(void 0)),m=eU;import{Component as Uf,Suspense as ff}from"react";import{jsx as Tf}from"react/jsx-runtime";var If=2,of=400;class M extends Uf{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<If){let f=of*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((T)=>({failed:!1,attempt:T.attempt+1}))},f)}}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 Tf(ff,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as v}from"react/jsx-runtime";function Zf({uiConfig:U,setUiAjaxConfiguration:f}){let T=LU(C),o=LU(m),z=N();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!f);let I=j(U.card);if(!I?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return T}if(z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let Z=I.component,O=v(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f});if(I.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return v(M,{name:I.name,fallback:I.fallback?v(I.fallback,{}):T,onError:o,children:O})}if(z)console.log("[UI] Rendering component directly:",I.name);return O}var W=zf(Zf);import{useContext as OU}from"react";import{createContext as Lf}from"react";var Of=X("@swarm.ing/pieui:context:uiRenderer",()=>Lf(null)),Y=Of;import{jsx as p}from"react/jsx-runtime";function PU({uiConfig:U,setUiAjaxConfiguration:f}){let T=OU(C),o=OU(m),z=N();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!f);let I=j(U.card);if(!I?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return T}if(z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(z)console.log("[UILoading] Rendering fallback for:",I.name);let B=I.fallback;return p(B,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let Z=I.component,O=p(Y.Provider,{value:PU,children:p(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f})});if(I.isLazy)return p(M,{name:I.name,fallback:T,onError:o,children:O});return O}var Pf=PU;import{useContext as Af}from"react";import{jsx as l}from"react/jsx-runtime";var Bf=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o,sx:z}=U,I=Af(Y)??W;return l(D,{card:o,data:U,children:l("div",{style:z,id:o,children:f.map((Z,O)=>{return l(I,{uiConfig:Z,setUiAjaxConfiguration:T},`children-${O}`)})})})},AU=Bf;var Hf=F({name:"SequenceCard",component:AU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as $f}from"react";import{jsx as BU}from"react/jsx-runtime";var qf=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o}=U,z=$f(Y)??W;return BU(D,{card:o,data:U,children:f.map((I,Z)=>{return BU(z,{uiConfig:I,setUiAjaxConfiguration:T},`children-${Z}`)})})},HU=qf;var Gf=F({name:"UnionCard",component:HU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as Qf,useState as Xf}from"react";import wf from"html-react-parser";import{useCallback as x,useEffect as Jf,useRef as d,useState as Ff}from"react";function Df(){let U=new AudioContext,f=U.createOscillator(),T=f.connect(U.createMediaStreamDestination());f.start();let o=T.stream.getAudioTracks()[0];return o.enabled=!1,o}function r(U=null,f){let[T,o]=Ff(!1),z=d(null),I=d(null),Z=d(null),O=x(async(P,Q=!0)=>{if(z.current)B();let $=new RTCPeerConnection;if($.onconnectionstatechange=()=>{if($.connectionState==="connected")o(!0);else if(["disconnected","failed","closed"].includes($.connectionState))o(!1)},$.ontrack=(A)=>{if(U)U.srcObject=A.streams[0]},Q){let A=await navigator.mediaDevices.getUserMedia({audio:!0});$.addTrack(A.getTracks()[0],A)}else{let A=Df();$.addTrack(A)}let L=$.createDataChannel("oai-events");I.current=L,Z.current=new Promise((A)=>{L.addEventListener("open",()=>{A()})});let w=await $.createOffer();await $.setLocalDescription(w);let G=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:w.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await $.setRemoteDescription({type:"answer",sdp:G}),z.current=$,await Z.current},[U]),B=x(()=>{let P=I.current;if(P)P.close();z.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),z.current?.close(),o(!1),z.current=null,I.current=null,Z.current=null},[U]),H=x((P)=>{let Q=I.current;if(!Q){console.error("Data channel is not ready",P);return}let $=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),Q.send(JSON.stringify(P)),!P.timestamp)P.timestamp=$;f?.(P)},[f,U]),q=x((P)=>{if(!I.current){console.error("Data channel is not ready");return}let $=()=>{H({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),H({type:"response.create"})};if(Z.current)Z.current.then($);else $()},[f,U]);return Jf(()=>{let P=I.current;if(!P)return;let Q=($)=>{let L=JSON.parse($.data);if(!L.timestamp)L.timestamp=new Date().toLocaleTimeString();f?.(L)};return P.addEventListener("message",Q),()=>{P.removeEventListener("message",Q)}},[f,U]),{isSessionActive:T,startSession:O,stopSession:B,sendTextMessage:q}}import{jsx as Wf}from"react/jsx-runtime";var Yf=({data:U})=>{let{html:f,useSocketioSupport:T,useCentrifugeSupport:o,useMittSupport:z,centrifugeChannel:I}=U,[Z,O]=Xf(f),{isSessionActive:B,startSession:H,sendTextMessage:q}=r(null,(L)=>{if(console.log(L.type,L.type==="response.output_text.delta"&&L.delta),L.type==="response.output_text.delta"&&L.delta)O((w)=>w+L.delta)});return Qf(()=>{O(f)},[f]),Wf(D,{card:"HTMLEmbedCard",data:U,methods:{update:(L)=>{O(L.value)},generateUsingAI:async(L)=>{try{if(!B&&L.token)await H(L.token,!1);q(L.prompt)}catch(w){console.error("Failed to generate using AI",w)}},initializeAI:async(L)=>{if(!B&&L.token)await H(L.token,!1)}},useCentrifugeSupport:o,useSocketioSupport:T,useMittSupport:z,centrifugeChannel:I,children:wf(Z)})},$U=Yf;var _f=F({name:"HTMLEmbedCard",component:$U,metadata:{author:"Swarm.ing"}});import{useEffect as Kf,useState as Cf}from"react";import{jsx as qU}from"react/jsx-runtime";var Vf=({data:U})=>{let{name:f,value:T,useSocketioSupport:o,useCentrifugeSupport:z,useMittSupport:I,centrifugeChannel:Z}=U,[O,B]=Cf(T);return Kf(()=>{B(T)},[T]),qU(D,{card:"HiddenCard",data:U,useSocketioSupport:o,useCentrifugeSupport:z,useMittSupport:I,centrifugeChannel:Z,methods:{update:({value:H})=>{B(H)}},children:qU("input",{type:"hidden",id:f,name:f,value:O})})},GU=Vf;var Mf=F({name:"HiddenCard",component:GU,metadata:{author:"Swarm.ing"}});import{useContext as JU,useEffect as Nf}from"react";import{createContext as Rf}from"react";var Ef=X("@swarm.ing/pieui:context:navigate",()=>Rf(void 0)),R=Ef;import{jsx as jf,Fragment as yf}from"react/jsx-runtime";var kf=({data:U})=>{let{url:f}=U,T=JU(R),o=JU(C);return Nf(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(f))window.location.href=f;else T?.(f)},[f,T]),jf(yf,{children:o})},FU=kf;var mf=F({name:"AutoRedirectCard",component:FU,metadata:{author:"Swarm.ing"}});import{Bounce as pf,Slide as xf,Zoom as bf,Flip as Sf}from"react-toastify";import{toast as gf,ToastContainer as vf}from"react-toastify";import{useContext as lf,useMemo as df,useRef as rf}from"react";import{jsx as u,Fragment as af}from"react/jsx-runtime";var uf={bounce:pf,slide:xf,zoom:bf,flip:Sf},cf=(U)=>{let f={...U,type:U.alertType,transition:U.transition?uf[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};gf(U.message,f)},hf=(U)=>{console.log("Log event",U)},nf=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let f=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(o){console.error("[IOEventsCard] Failed to show notification",o)}},T=window.Notification.permission;if(T==="granted"){f();return}if(T==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((o)=>{if(o==="granted")f()})},sf=({data:U})=>{let{useCentrifugeSupport:f,useSocketioSupport:T,useMittSupport:o,centrifugeChannel:z}=U,I=lf(R),Z=rf(I);Z.current=I;let O=df(()=>({alert:cf,log:hf,push:nf,redirect:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()},reload:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()}}),[]);return u(af,{children:u(D,{card:"IOEventsCard",data:U,useCentrifugeSupport:f,useSocketioSupport:T,useMittSupport:o,centrifugeChannel:z,methods:O,children:u(vf,{})})})},DU=sf;var tf=F({name:"IOEventsCard",component:DU,metadata:{author:"Swarm.ing"}});import{useEffect as QU,useState as ef}from"react";import{jsx as XU}from"react/jsx-runtime";var UI=({data:U})=>{let{name:f,key:T,value:o,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=ef(o);return QU(()=>{H(o)},[o]),QU(()=>{if(typeof window>"u")return;sessionStorage.setItem(T,B)},[T,B]),XU(D,{card:"SessionStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{sessionStorage.removeItem(T),H("")}},children:XU("input",{type:"hidden",id:f,name:f,value:B})})},wU=UI;var fI=F({name:"SessionStorageCard",component:wU,metadata:{author:"PieData"}});import{useEffect as YU,useState as II}from"react";import{jsx as WU}from"react/jsx-runtime";var oI=({data:U})=>{let{name:f,key:T,value:o,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=II(o);return YU(()=>{H(o)},[o]),YU(()=>{if(typeof window>"u")return;localStorage.setItem(T,B)},[T,B]),WU(D,{card:"DeviceStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{localStorage.removeItem(T),H("")}},children:WU("input",{type:"hidden",id:f,name:f,value:B})})},_U=oI;var TI=F({name:"DeviceStorageCard",component:_U,metadata:{author:"PieData"}});import{useCallback as c,useContext as h,useEffect as zI,useRef as ZI,useState as KU}from"react";import{jsx as CU}from"react/jsx-runtime";var LI=({data:U,content:f})=>{let{useLoader:T,noReturn:o,returnType:z,useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B}=U,H=h(C),q=h(Y)??W,[P,Q]=KU(!1),[$,L]=KU(null),w=ZI(f),V=h(y),K=c((A)=>{if(A===null)Q(!0);else if(Q(!1),!o)w.current=A;if(!o)L(A)},[o]),J=c((A)=>{w.current=A.content,L(A.content)},[]),G=c((A)=>{if(A===null)Q(!0);else if(Q(!1),!o)for(let _ of A)V?.emit(_.name,_.data)},[o,V]);if(zI(()=>{L(f),Q(!1)},[f]),!$&&T)return H;return CU(D,{card:"AjaxGroupCard",data:U,methods:{changeContent:J},useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B,children:CU(q,{uiConfig:$??w.current,setUiAjaxConfiguration:z==="events"?G:K})})},VU=LI;var OI=F({name:"AjaxGroupCard",component:VU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as MU}from"react";import{jsx as i}from"react/jsx-runtime";var PI=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o,url:z,sx:I}=U,Z=MU(R),O=MU(Y)??W;return i(D,{card:o,data:U,children:i("div",{style:I,id:o,onClick:(H)=>{if(z)if(H.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else Z?.(z)},children:i(O,{setUiAjaxConfiguration:T,uiConfig:f})})})},RU=PI;var AI=F({name:"BoxCard",component:RU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as BI}from"react";import{jsx as n}from"react/jsx-runtime";var HI=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o,sx:z}=U,I=BI(Y)??W;return n(D,{card:o,data:U,children:n("div",{style:z,id:o,children:f.map((Z,O)=>{return n(I,{uiConfig:Z,setUiAjaxConfiguration:T},`children-${O}`)})})})},EU=HI;var $I=F({name:"OneOfCard",component:EU,metadata:{author:"Swarm.ing",description:"Different variants"}});export{Gf as UnionCard,Pf as UILoading,W as UI,fI as SessionStorageCard,Hf as SequenceCard,D as PieCard,$I as OneOfCard,tf as IOEventsCard,Mf as HiddenCard,_f as HTMLEmbedCard,TI as DeviceStorageCard,AI as BoxCard,mf as AutoRedirectCard,OI as AjaxGroupCard};
|
package/dist/components/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var OU=Object.create;var{getPrototypeOf:LU,defineProperty:j,getOwnPropertyNames:Go,getOwnPropertyDescriptor:AU}=Object,Jo=Object.prototype.hasOwnProperty;var Fo=(o,U,f)=>{f=o!=null?OU(LU(o)):{};let I=U||!o||!o.__esModule?j(f,"default",{value:o,enumerable:!0}):f;for(let P of Go(o))if(!Jo.call(I,P))j(I,P,{get:()=>o[P],enumerable:!0});return I},qo=new WeakMap,BU=(o)=>{var U=qo.get(o),f;if(U)return U;if(U=j({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")Go(o).map((I)=>!Jo.call(U,I)&&j(U,I,{get:()=>o[I],enumerable:!(f=AU(o,I))||f.enumerable}));return qo.set(o,U),U};var $U=(o,U)=>{for(var f in U)j(o,f,{get:U[f],enumerable:!0,configurable:!0,set:(I)=>U[f]=()=>I})};var nU={};$U(nU,{UnionCard:()=>go,UILoading:()=>mo,UI:()=>K,SessionStorageCard:()=>oU,SequenceCard:()=>jo,PieCard:()=>G,OneOfCard:()=>ZU,IOEventsCard:()=>to,HiddenCard:()=>uo,HTMLEmbedCard:()=>io,DeviceStorageCard:()=>fU,BoxCard:()=>wU,AutoRedirectCard:()=>so,AjaxGroupCard:()=>TU});module.exports=BU(nU);var V=require("react");var d=require("react");var wo=globalThis,Q=(o,U)=>{let f=Symbol.for(o);if(!(f in wo))wo[f]=U();return wo[f]};var qU=Q("@swarm.ing/pieui:context:pieConfig",()=>d.createContext(null)),GU=()=>{let o=d.useContext(qU);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var x=()=>{let{enableRenderingLog:o}=GU();return o},Do=x;var Qo=require("react"),JU=require("centrifuge");var Uf=Q("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var FU=Q("@swarm.ing/pieui:context:centrifuge",()=>Qo.createContext(null)),Xo=FU;var DU=require("socket.io-client"),Yo=require("react");var Pf=Q("@swarm.ing/pieui:socket-cache",()=>new Map);var QU=Q("@swarm.ing/pieui:context:socket",()=>Yo.createContext(null)),Wo=QU;var XU=Fo(require("mitt")),c=require("react");var YU=Q("@swarm.ing/pieui:context:mitt",()=>c.createContext(null));var u=YU;function _o(o){return o.wasRecovering===!0&&o.recovered===!1}function Ko(o){return o.recoverable===!1}var p=require("react/jsx-runtime"),WU=({card:o,data:U,children:f,useSocketioSupport:I=!1,useCentrifugeSupport:P=!1,useMittSupport:T=!1,centrifugeChannel:w=void 0,methods:H=void 0,stored:O=void 0,onResync:L=void 0})=>{let $=Do(),Z=V.useRef(H);Z.current=H;let F=V.useRef(L);if(F.current=L,$)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:P,mitt:T,centrifugeChannel:w}),console.log("[PieCard] Methods:",H?Object.keys(H):"none"),console.log("[PieCard] Has children:",!!f);let B=V.useContext(Wo),z=V.useContext(Xo),X=V.useContext(u);if(V.useEffect(()=>{if(!B||!I||!Z.current||!U.name){if($&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:I,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let M=Object.keys(Z.current??{}).map((D)=>{let q=`pie${D}_${U.name}`;if($)console.log(`[PieCard] Socket.IO registering event: ${q}`);let A=(_)=>{Z.current?.[D]?.(_)};return B.on(q,A),[q,A]});return()=>{M.forEach(([D,q])=>{if($)console.log(`[PieCard] Socket.IO unregistering event: ${D}`);B.off(D,q)})}},[B,U.name,I]),V.useEffect(()=>{if(!z||!P||!w||!U.name){if($&&P)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!z,useCentrifugeSupport:P,hasCentrifugeChannel:!!w,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let M=Object.keys(Z.current??{}).map((D)=>{let q=`pie${D}_${U.name}_${w}`;if($)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let A=z.newSubscription(q,{recoverable:!0,positioned:!0});return A.on("publication",(_)=>{if($)console.log(`[PieCard] Centrifuge received data on ${q}:`,_.data);Z.current?.[D]?.(_.data)}),A.on("subscribed",(_)=>{if(Ko(_))console.warn(`[PieCard] Centrifuge channel ${q} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(_o(_)){if($)console.log(`[PieCard] Centrifuge recovery gap on ${q}; requesting resync`);F.current?.({channel:q,reason:"gap"})}}),A.subscribe(),A});return()=>{M.forEach((D)=>{if($)console.log("[PieCard] Centrifuge unsubscribing from channel");D.unsubscribe(),z.removeSubscription(D)})}},[z,w,U.name,P]),V.useEffect(()=>{if(!X||!T||!U.name){if($&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!X,useMittSupport:T,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let N=Object.keys(Z.current??{}),M={};return N.forEach((D)=>{let q=`pie${D}_${U.name}`,A=(_)=>{if($)console.log(`[PieCard] Mitt registering event: ${q}`);Z.current?.[D]?.(_)};M[q]=A,X.on(q,A)}),()=>{Object.entries(M).forEach(([D,q])=>{if($)console.log(`[PieCard] Mitt unregistering event: ${D}`);X.off(D,q)})}},[X,U.name,T]),$)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return p.jsxs(p.Fragment,{children:[p.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),f]});return f},G=WU;var Co=require("react"),S=new Map;function _U(o,U){return U.catch(()=>{if(S.get(o)===U)S.delete(o)}),S.set(o,U),U}function Vo(o,U){return Co.lazy(()=>{if(S.has(U))return S.get(U);return _U(U,o().then((f)=>f))})}var Mo=Q("@swarm.ing/pieui:component-registry",()=>new Map),KU=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let U={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=Vo(U.loader,o.name),U.isLazy=!0;return U};function J(o){let U=KU(o);return Mo.set(U.name,U),U.component}var h=(o)=>{return Mo.get(o)};var g=require("react");var Ro=require("react");var n=require("react/jsx-runtime"),CU=Q("@swarm.ing/pieui:context:fallback",()=>Ro.createContext(n.jsx(n.Fragment,{}))),R=CU;var Eo=require("react");var VU=Q("@swarm.ing/pieui:context:lazyError",()=>Eo.createContext(void 0)),s=VU;var a=require("react"),No=require("react/jsx-runtime"),MU=2,RU=400;class b extends a.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<MU){let U=RU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((f)=>({failed:!1,attempt:f.attempt+1}))},U)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return No.jsx(a.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var t=require("react/jsx-runtime");function EU({uiConfig:o,setUiAjaxConfiguration:U}){let f=g.useContext(R),I=g.useContext(s),P=x();if(P)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let T=h(o.card);if(!T?.component){if(P)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return f}if(P)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let w=T.component,H=t.jsx(w,{data:o.data,content:o.content,setUiAjaxConfiguration:U});if(T.isLazy){if(P)console.log("[UI] Rendering lazy component with Suspense:",T.name);return t.jsx(b,{name:T.name,fallback:T.fallback?t.jsx(T.fallback,{}):f,onError:I,children:H})}if(P)console.log("[UI] Rendering component directly:",T.name);return H}var K=g.memo(EU);var zo=require("react");var po=require("react");var NU=Q("@swarm.ing/pieui:context:uiRenderer",()=>po.createContext(null)),C=NU;var v=require("react/jsx-runtime");function bo({uiConfig:o,setUiAjaxConfiguration:U}){let f=zo.useContext(R),I=zo.useContext(s),P=x();if(P)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let T=h(o.card);if(!T?.component){if(P)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return f}if(P)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(P)console.log("[UILoading] Rendering fallback for:",T.name);let O=T.fallback;return v.jsx(O,{})}if(P)console.log("[UILoading] No fallback, rendering full component:",T.name);let w=T.component,H=v.jsx(C.Provider,{value:bo,children:v.jsx(w,{data:o.data,content:o.content,setUiAjaxConfiguration:U})});if(T.isLazy)return v.jsx(b,{name:T.name,fallback:f,onError:I,children:H});return H}var mo=bo;var yo=require("react");var e=require("react/jsx-runtime"),pU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,sx:P}=o,T=yo.useContext(C)??K;return e.jsx(G,{card:I,data:o,children:e.jsx("div",{style:P,id:I,children:U.map((w,H)=>{return e.jsx(T,{uiConfig:w,setUiAjaxConfiguration:f},`children-${H}`)})})})},ko=pU;var jo=J({name:"SequenceCard",component:ko,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var xo=require("react");var Ho=require("react/jsx-runtime"),bU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I}=o,P=xo.useContext(C)??K;return Ho.jsx(G,{card:I,data:o,children:U.map((T,w)=>{return Ho.jsx(P,{uiConfig:T,setUiAjaxConfiguration:f},`children-${w}`)})})},So=bU;var go=J({name:"UnionCard",component:So,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var oo=require("react"),vo=Fo(require("html-react-parser"));var W=require("react");function mU(){let o=new AudioContext,U=o.createOscillator(),f=U.connect(o.createMediaStreamDestination());U.start();let I=f.stream.getAudioTracks()[0];return I.enabled=!1,I}function Zo(o=null,U){let[f,I]=W.useState(!1),P=W.useRef(null),T=W.useRef(null),w=W.useRef(null),H=W.useCallback(async(Z,F=!0)=>{if(P.current)O();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))I(!1)},B.ontrack=(A)=>{if(o)o.srcObject=A.streams[0]},F){let A=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(A.getTracks()[0],A)}else{let A=mU();B.addTrack(A)}let z=B.createDataChannel("oai-events");T.current=z,w.current=new Promise((A)=>{z.addEventListener("open",()=>{A()})});let X=await B.createOffer();await B.setLocalDescription(X);let q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${Z}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:q}),P.current=B,await w.current},[o]),O=W.useCallback(()=>{let Z=T.current;if(Z)Z.close();P.current?.getSenders()?.forEach((F)=>F.track?.stop()),P.current?.close(),I(!1),P.current=null,T.current=null,w.current=null},[o]),L=W.useCallback((Z)=>{let F=T.current;if(!F){console.error("Data channel is not ready",Z);return}let B=new Date().toLocaleTimeString();if(Z.event_id=Z.event_id||crypto.randomUUID(),F.send(JSON.stringify(Z)),!Z.timestamp)Z.timestamp=B;U?.(Z)},[U,o]),$=W.useCallback((Z)=>{if(!T.current){console.error("Data channel is not ready");return}let B=()=>{L({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Z}]}}),L({type:"response.create"})};if(w.current)w.current.then(B);else B()},[U,o]);return W.useEffect(()=>{let Z=T.current;if(!Z)return;let F=(B)=>{let z=JSON.parse(B.data);if(!z.timestamp)z.timestamp=new Date().toLocaleTimeString();U?.(z)};return Z.addEventListener("message",F),()=>{Z.removeEventListener("message",F)}},[U,o]),{isSessionActive:f,startSession:H,stopSession:O,sendTextMessage:$}}var ro=require("react/jsx-runtime"),yU=({data:o})=>{let{html:U,useSocketioSupport:f,useCentrifugeSupport:I,useMittSupport:P,centrifugeChannel:T}=o,[w,H]=oo.useState(U),{isSessionActive:O,startSession:L,sendTextMessage:$}=Zo(null,(z)=>{if(console.log(z.type,z.type==="response.output_text.delta"&&z.delta),z.type==="response.output_text.delta"&&z.delta)H((X)=>X+z.delta)});return oo.useEffect(()=>{H(U)},[U]),ro.jsx(G,{card:"HTMLEmbedCard",data:o,methods:{update:(z)=>{H(z.value)},generateUsingAI:async(z)=>{try{if(!O&&z.token)await L(z.token,!1);$(z.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(z)=>{if(!O&&z.token)await L(z.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:f,useMittSupport:P,centrifugeChannel:T,children:vo.default(w)})},lo=yU;var io=J({name:"HTMLEmbedCard",component:lo,metadata:{author:"Swarm.ing"}});var Uo=require("react");var Oo=require("react/jsx-runtime"),kU=({data:o})=>{let{name:U,value:f,useSocketioSupport:I,useCentrifugeSupport:P,useMittSupport:T,centrifugeChannel:w}=o,[H,O]=Uo.useState(f);return Uo.useEffect(()=>{O(f)},[f]),Oo.jsx(G,{card:"HiddenCard",data:o,useSocketioSupport:I,useCentrifugeSupport:P,useMittSupport:T,centrifugeChannel:w,methods:{update:({value:L})=>{O(L)}},children:Oo.jsx("input",{type:"hidden",id:U,name:U,value:H})})},co=kU;var uo=J({name:"HiddenCard",component:co,metadata:{author:"Swarm.ing"}});var l=require("react");var ho=require("react");var jU=Q("@swarm.ing/pieui:context:navigate",()=>ho.createContext(void 0)),m=jU;var fo=require("react/jsx-runtime"),xU=({data:o})=>{let{url:U}=o,f=l.useContext(m),I=l.useContext(R);return l.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else f?.(U)},[U,f]),fo.jsx(fo.Fragment,{children:I})},no=xU;var so=J({name:"AutoRedirectCard",component:no,metadata:{author:"Swarm.ing"}});var E=require("react-toastify"),Io=require("react-toastify");var k=require("react");var y=require("react/jsx-runtime"),SU={bounce:E.Bounce,slide:E.Slide,zoom:E.Zoom,flip:E.Flip},gU=(o)=>{let U={...o,type:o.alertType,transition:o.transition?SU[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};Io.toast(o.message,U)},vU=(o)=>{console.log("Log event",o)},lU=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(I){console.error("[IOEventsCard] Failed to show notification",I)}},f=window.Notification.permission;if(f==="granted"){U();return}if(f==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")U()})},rU=({data:o})=>{let{useCentrifugeSupport:U,useSocketioSupport:f,useMittSupport:I,centrifugeChannel:P}=o,T=k.useContext(m),w=k.useRef(T);w.current=T;let H=k.useMemo(()=>({alert:gU,log:vU,push:lU,redirect:(O)=>{if(O.to){let L=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(L))window.location.href=L;else w.current?.(L)}else window.location.reload()},reload:(O)=>{if(O.to){let L=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(L))window.location.href=L;else w.current?.(L)}else window.location.reload()}}),[]);return y.jsx(y.Fragment,{children:y.jsx(G,{card:"IOEventsCard",data:o,useCentrifugeSupport:U,useSocketioSupport:f,useMittSupport:I,centrifugeChannel:P,methods:H,children:y.jsx(Io.ToastContainer,{})})})},ao=rU;var to=J({name:"IOEventsCard",component:ao,metadata:{author:"Swarm.ing"}});var r=require("react");var Lo=require("react/jsx-runtime"),iU=({data:o})=>{let{name:U,key:f,value:I,useSocketioSupport:P,useCentrifugeSupport:T,useMittSupport:w,centrifugeChannel:H}=o,[O,L]=r.useState(I);return r.useEffect(()=>{L(I)},[I]),r.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(f,O)},[f,O]),Lo.jsx(G,{card:"SessionStorageCard",data:o,useSocketioSupport:P,useCentrifugeSupport:T,useMittSupport:w,centrifugeChannel:H,methods:{update:({value:$})=>{L($)},remove:()=>{sessionStorage.removeItem(f),L("")}},children:Lo.jsx("input",{type:"hidden",id:U,name:U,value:O})})},eo=iU;var oU=J({name:"SessionStorageCard",component:eo,metadata:{author:"PieData"}});var i=require("react");var Ao=require("react/jsx-runtime"),dU=({data:o})=>{let{name:U,key:f,value:I,useSocketioSupport:P,useCentrifugeSupport:T,useMittSupport:w,centrifugeChannel:H}=o,[O,L]=i.useState(I);return i.useEffect(()=>{L(I)},[I]),i.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(f,O)},[f,O]),Ao.jsx(G,{card:"DeviceStorageCard",data:o,useSocketioSupport:P,useCentrifugeSupport:T,useMittSupport:w,centrifugeChannel:H,methods:{update:({value:$})=>{L($)},remove:()=>{localStorage.removeItem(f),L("")}},children:Ao.jsx("input",{type:"hidden",id:U,name:U,value:O})})},UU=dU;var fU=J({name:"DeviceStorageCard",component:UU,metadata:{author:"PieData"}});var Y=require("react");var Bo=require("react/jsx-runtime"),cU=({data:o,content:U})=>{let{useLoader:f,noReturn:I,returnType:P,useSocketioSupport:T,useCentrifugeSupport:w,useMittSupport:H,centrifugeChannel:O}=o,L=Y.useContext(R),$=Y.useContext(C)??K,[Z,F]=Y.useState(!1),[B,z]=Y.useState(null),X=Y.useRef(U),N=Y.useContext(u),M=Y.useCallback((A)=>{if(A===null)F(!0);else if(F(!1),!I)X.current=A;if(!I)z(A)},[I]),D=Y.useCallback((A)=>{X.current=A.content,z(A.content)},[]),q=Y.useCallback((A)=>{if(A===null)F(!0);else if(F(!1),!I)for(let _ of A)N?.emit(_.name,_.data)},[I,N]);if(Y.useEffect(()=>{z(U),F(!1)},[U]),!B&&f)return L;return Bo.jsx(G,{card:"AjaxGroupCard",data:o,methods:{changeContent:D},useSocketioSupport:T,useCentrifugeSupport:w,useMittSupport:H,centrifugeChannel:O,children:Bo.jsx($,{uiConfig:B??X.current,setUiAjaxConfiguration:P==="events"?q:M})})},IU=cU;var TU=J({name:"AjaxGroupCard",component:IU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var $o=require("react");var To=require("react/jsx-runtime"),uU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,url:P,sx:T}=o,w=$o.useContext(m),H=$o.useContext(C)??K;return To.jsx(G,{card:I,data:o,children:To.jsx("div",{style:T,id:I,onClick:(L)=>{if(P)if(L.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(P))window.location.href=P;else w?.(P)},children:To.jsx(H,{setUiAjaxConfiguration:f,uiConfig:U})})})},PU=uU;var wU=J({name:"BoxCard",component:PU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var zU=require("react");var Po=require("react/jsx-runtime"),hU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,sx:P}=o,T=zU.useContext(C)??K;return Po.jsx(G,{card:I,data:o,children:Po.jsx("div",{style:P,id:I,children:U.map((w,H)=>{return Po.jsx(T,{uiConfig:w,setUiAjaxConfiguration:f},`children-${H}`)})})})},HU=hU;var ZU=J({name:"OneOfCard",component:HU,metadata:{author:"Swarm.ing",description:"Different variants"}});
|
|
2
|
+
var $f=Object.create;var{getPrototypeOf:qf,defineProperty:b,getOwnPropertyNames:QU,getOwnPropertyDescriptor:Gf}=Object,XU=Object.prototype.hasOwnProperty;var wU=(U,f,o)=>{o=U!=null?$f(qf(U)):{};let I=f||!U||!U.__esModule?b(o,"default",{value:U,enumerable:!0}):o;for(let z of QU(U))if(!XU.call(I,z))b(I,z,{get:()=>U[z],enumerable:!0});return I},DU=new WeakMap,Jf=(U)=>{var f=DU.get(U),o;if(f)return f;if(f=b({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")QU(U).map((I)=>!XU.call(f,I)&&b(f,I,{get:()=>U[I],enumerable:!(o=Gf(U,I))||o.enumerable}));return DU.set(U,f),f};var Ff=(U,f)=>{for(var o in f)b(U,o,{get:f[o],enumerable:!0,configurable:!0,set:(I)=>f[o]=()=>I})};var ef={};Ff(ef,{UnionCard:()=>rU,UILoading:()=>bU,UI:()=>_,SessionStorageCard:()=>of,SequenceCard:()=>vU,PieCard:()=>F,OneOfCard:()=>Hf,IOEventsCard:()=>ff,HiddenCard:()=>sU,HTMLEmbedCard:()=>iU,DeviceStorageCard:()=>zf,BoxCard:()=>Pf,AutoRedirectCard:()=>eU,AjaxGroupCard:()=>Lf});module.exports=Jf(ef);var C=require("react");var c=require("react");var LU=globalThis,X=(U,f)=>{let o=Symbol.for(U);if(!(o in LU))LU[o]=f();return LU[o]};var Df=X("@swarm.ing/pieui:context:pieConfig",()=>c.createContext(null)),Qf=()=>{let U=c.useContext(Df);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U};var S=()=>{let{enableRenderingLog:U}=Qf();return U},YU=S;var WU=require("react"),Xf=require("centrifuge");var zI=X("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var wf=X("@swarm.ing/pieui:context:centrifuge",()=>WU.createContext(null)),_U=wf;var Yf=require("socket.io-client"),KU=require("react");var PI=X("@swarm.ing/pieui:socket-cache",()=>new Map);var Wf=X("@swarm.ing/pieui:context:socket",()=>KU.createContext(null)),CU=Wf;var _f=wU(require("mitt")),h=require("react");var Kf=X("@swarm.ing/pieui:context:mitt",()=>h.createContext(null));var i=Kf;function VU(U){return U.wasRecovering===!0&&U.recovered===!1}function MU(U){return U.recoverable===!1}function RU(U,f,o){let I=U.getSubscription(f);if(I)return{subscription:I,createdHere:!1};return{subscription:U.newSubscription(f,o),createdHere:!0}}var k=require("react/jsx-runtime"),Cf=({card:U,data:f,children:o,useSocketioSupport:I=!1,useCentrifugeSupport:z=!1,useMittSupport:T=!1,centrifugeChannel:Z=void 0,methods:O=void 0,stored:B=void 0,onResync:H=void 0})=>{let q=YU(),P=C.useRef(O);P.current=O;let Q=C.useRef(H);if(Q.current=H,q)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",f),console.log("[PieCard] Component name:",f?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:z,mitt:T,centrifugeChannel:Z}),console.log("[PieCard] Methods:",O?Object.keys(O):"none"),console.log("[PieCard] Has children:",!!o);let $=C.useContext(CU),L=C.useContext(_U),w=C.useContext(i);if(C.useEffect(()=>{if(!$||!I||!P.current||!f.name){if(q&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!$,useSocketioSupport:I,hasMethods:!!P.current,hasDataName:!!f?.name});return}let M=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}`;if(q)console.log(`[PieCard] Socket.IO registering event: ${G}`);let A=(V)=>{P.current?.[J]?.(V)};return $.on(G,A),[G,A]});return()=>{M.forEach(([J,G])=>{if(q)console.log(`[PieCard] Socket.IO unregistering event: ${J}`);$.off(J,G)})}},[$,f.name,I]),C.useEffect(()=>{if(!L||!z||!Z||!f.name){if(q&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!P.current,hasDataName:!!f?.name});return}let M=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}_${Z}`;if(q)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let{subscription:A,createdHere:V}=RU(L,G,{recoverable:!0,positioned:!0}),JU=(x)=>{if(q)console.log(`[PieCard] Centrifuge received data on ${G}:`,x.data);P.current?.[J]?.(x.data)},FU=(x)=>{if(MU(x))console.warn(`[PieCard] Centrifuge channel ${G} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(VU(x)){if(q)console.log(`[PieCard] Centrifuge recovery gap on ${G}; requesting resync`);Q.current?.({channel:G,reason:"gap"})}};return A.on("publication",JU),A.on("subscribed",FU),A.subscribe(),{subscription:A,createdHere:V,onPublication:JU,onSubscribed:FU}});return()=>{M.forEach(({subscription:J,createdHere:G,onPublication:A,onSubscribed:V})=>{if(q)console.log("[PieCard] Centrifuge unsubscribing from channel");if(J.off("publication",A),J.off("subscribed",V),G)J.unsubscribe(),L.removeSubscription(J)})}},[L,Z,f.name,z]),C.useEffect(()=>{if(!w||!T||!f.name){if(q&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:T,hasMethods:!!P.current,hasDataName:!!f?.name});return}let N=Object.keys(P.current??{}),M={};return N.forEach((J)=>{let G=`pie${J}_${f.name}`,A=(V)=>{if(q)console.log(`[PieCard] Mitt registering event: ${G}`);P.current?.[J]?.(V)};M[G]=A,w.on(G,A)}),()=>{Object.entries(M).forEach(([J,G])=>{if(q)console.log(`[PieCard] Mitt unregistering event: ${J}`);w.off(J,G)})}},[w,f.name,T]),q)console.log("[PieCard] Rendering complete, returning children");if(B!==void 0)return k.jsxs(k.Fragment,{children:[k.jsx("input",{type:"hidden",name:f.name,value:JSON.stringify(B)}),o]});return o},F=Cf;var EU=require("react"),g=new Map;function Vf(U,f){return f.catch(()=>{if(g.get(U)===f)g.delete(U)}),g.set(U,f),f}function NU(U,f){return EU.lazy(()=>{if(g.has(f))return g.get(f);return Vf(f,U().then((o)=>o))})}var kU=X("@swarm.ing/pieui:component-registry",()=>new Map),Mf=(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 f={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!f.component&&f.loader)f.component=NU(f.loader,U.name),f.isLazy=!0;return f};function D(U){let f=Mf(U);return kU.set(f.name,f),f.component}var n=(U)=>{return kU.get(U)};var v=require("react");var yU=require("react");var s=require("react/jsx-runtime"),Rf=X("@swarm.ing/pieui:context:fallback",()=>yU.createContext(s.jsx(s.Fragment,{}))),R=Rf;var jU=require("react");var Ef=X("@swarm.ing/pieui:context:lazyError",()=>jU.createContext(void 0)),a=Ef;var t=require("react"),mU=require("react/jsx-runtime"),Nf=2,kf=400;class y extends t.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<Nf){let f=kf*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((o)=>({failed:!1,attempt:o.attempt+1}))},f)}}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 mU.jsx(t.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var e=require("react/jsx-runtime");function yf({uiConfig:U,setUiAjaxConfiguration:f}){let o=v.useContext(R),I=v.useContext(a),z=S();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:",!!f);let T=n(U.card);if(!T?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return o}if(z)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let Z=T.component,O=e.jsx(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f});if(T.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",T.name);return e.jsx(y,{name:T.name,fallback:T.fallback?e.jsx(T.fallback,{}):o,onError:I,children:O})}if(z)console.log("[UI] Rendering component directly:",T.name);return O}var _=v.memo(yf);var OU=require("react");var pU=require("react");var jf=X("@swarm.ing/pieui:context:uiRenderer",()=>pU.createContext(null)),K=jf;var l=require("react/jsx-runtime");function xU({uiConfig:U,setUiAjaxConfiguration:f}){let o=OU.useContext(R),I=OU.useContext(a),z=S();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:",!!f);let T=n(U.card);if(!T?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return o}if(z)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(z)console.log("[UILoading] Rendering fallback for:",T.name);let B=T.fallback;return l.jsx(B,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",T.name);let Z=T.component,O=l.jsx(K.Provider,{value:xU,children:l.jsx(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f})});if(T.isLazy)return l.jsx(y,{name:T.name,fallback:o,onError:I,children:O});return O}var bU=xU;var SU=require("react");var UU=require("react/jsx-runtime"),mf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I,sx:z}=U,T=SU.useContext(K)??_;return UU.jsx(F,{card:I,data:U,children:UU.jsx("div",{style:z,id:I,children:f.map((Z,O)=>{return UU.jsx(T,{uiConfig:Z,setUiAjaxConfiguration:o},`children-${O}`)})})})},gU=mf;var vU=D({name:"SequenceCard",component:gU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var lU=require("react");var PU=require("react/jsx-runtime"),pf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I}=U,z=lU.useContext(K)??_;return PU.jsx(F,{card:I,data:U,children:f.map((T,Z)=>{return PU.jsx(z,{uiConfig:T,setUiAjaxConfiguration:o},`children-${Z}`)})})},dU=pf;var rU=D({name:"UnionCard",component:dU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var fU=require("react"),uU=wU(require("html-react-parser"));var W=require("react");function xf(){let U=new AudioContext,f=U.createOscillator(),o=f.connect(U.createMediaStreamDestination());f.start();let I=o.stream.getAudioTracks()[0];return I.enabled=!1,I}function AU(U=null,f){let[o,I]=W.useState(!1),z=W.useRef(null),T=W.useRef(null),Z=W.useRef(null),O=W.useCallback(async(P,Q=!0)=>{if(z.current)B();let $=new RTCPeerConnection;if($.onconnectionstatechange=()=>{if($.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes($.connectionState))I(!1)},$.ontrack=(A)=>{if(U)U.srcObject=A.streams[0]},Q){let A=await navigator.mediaDevices.getUserMedia({audio:!0});$.addTrack(A.getTracks()[0],A)}else{let A=xf();$.addTrack(A)}let L=$.createDataChannel("oai-events");T.current=L,Z.current=new Promise((A)=>{L.addEventListener("open",()=>{A()})});let w=await $.createOffer();await $.setLocalDescription(w);let G=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:w.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await $.setRemoteDescription({type:"answer",sdp:G}),z.current=$,await Z.current},[U]),B=W.useCallback(()=>{let P=T.current;if(P)P.close();z.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),z.current?.close(),I(!1),z.current=null,T.current=null,Z.current=null},[U]),H=W.useCallback((P)=>{let Q=T.current;if(!Q){console.error("Data channel is not ready",P);return}let $=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),Q.send(JSON.stringify(P)),!P.timestamp)P.timestamp=$;f?.(P)},[f,U]),q=W.useCallback((P)=>{if(!T.current){console.error("Data channel is not ready");return}let $=()=>{H({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),H({type:"response.create"})};if(Z.current)Z.current.then($);else $()},[f,U]);return W.useEffect(()=>{let P=T.current;if(!P)return;let Q=($)=>{let L=JSON.parse($.data);if(!L.timestamp)L.timestamp=new Date().toLocaleTimeString();f?.(L)};return P.addEventListener("message",Q),()=>{P.removeEventListener("message",Q)}},[f,U]),{isSessionActive:o,startSession:O,stopSession:B,sendTextMessage:q}}var hU=require("react/jsx-runtime"),bf=({data:U})=>{let{html:f,useSocketioSupport:o,useCentrifugeSupport:I,useMittSupport:z,centrifugeChannel:T}=U,[Z,O]=fU.useState(f),{isSessionActive:B,startSession:H,sendTextMessage:q}=AU(null,(L)=>{if(console.log(L.type,L.type==="response.output_text.delta"&&L.delta),L.type==="response.output_text.delta"&&L.delta)O((w)=>w+L.delta)});return fU.useEffect(()=>{O(f)},[f]),hU.jsx(F,{card:"HTMLEmbedCard",data:U,methods:{update:(L)=>{O(L.value)},generateUsingAI:async(L)=>{try{if(!B&&L.token)await H(L.token,!1);q(L.prompt)}catch(w){console.error("Failed to generate using AI",w)}},initializeAI:async(L)=>{if(!B&&L.token)await H(L.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:o,useMittSupport:z,centrifugeChannel:T,children:uU.default(Z)})},cU=bf;var iU=D({name:"HTMLEmbedCard",component:cU,metadata:{author:"Swarm.ing"}});var IU=require("react");var BU=require("react/jsx-runtime"),Sf=({data:U})=>{let{name:f,value:o,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:Z}=U,[O,B]=IU.useState(o);return IU.useEffect(()=>{B(o)},[o]),BU.jsx(F,{card:"HiddenCard",data:U,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:Z,methods:{update:({value:H})=>{B(H)}},children:BU.jsx("input",{type:"hidden",id:f,name:f,value:O})})},nU=Sf;var sU=D({name:"HiddenCard",component:nU,metadata:{author:"Swarm.ing"}});var d=require("react");var aU=require("react");var gf=X("@swarm.ing/pieui:context:navigate",()=>aU.createContext(void 0)),j=gf;var oU=require("react/jsx-runtime"),vf=({data:U})=>{let{url:f}=U,o=d.useContext(j),I=d.useContext(R);return d.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(f))window.location.href=f;else o?.(f)},[f,o]),oU.jsx(oU.Fragment,{children:I})},tU=vf;var eU=D({name:"AutoRedirectCard",component:tU,metadata:{author:"Swarm.ing"}});var E=require("react-toastify"),TU=require("react-toastify");var p=require("react");var m=require("react/jsx-runtime"),lf={bounce:E.Bounce,slide:E.Slide,zoom:E.Zoom,flip:E.Flip},df=(U)=>{let f={...U,type:U.alertType,transition:U.transition?lf[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};TU.toast(U.message,f)},rf=(U)=>{console.log("Log event",U)},uf=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let f=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(I){console.error("[IOEventsCard] Failed to show notification",I)}},o=window.Notification.permission;if(o==="granted"){f();return}if(o==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")f()})},cf=({data:U})=>{let{useCentrifugeSupport:f,useSocketioSupport:o,useMittSupport:I,centrifugeChannel:z}=U,T=p.useContext(j),Z=p.useRef(T);Z.current=T;let O=p.useMemo(()=>({alert:df,log:rf,push:uf,redirect:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()},reload:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()}}),[]);return m.jsx(m.Fragment,{children:m.jsx(F,{card:"IOEventsCard",data:U,useCentrifugeSupport:f,useSocketioSupport:o,useMittSupport:I,centrifugeChannel:z,methods:O,children:m.jsx(TU.ToastContainer,{})})})},Uf=cf;var ff=D({name:"IOEventsCard",component:Uf,metadata:{author:"Swarm.ing"}});var r=require("react");var HU=require("react/jsx-runtime"),hf=({data:U})=>{let{name:f,key:o,value:I,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=r.useState(I);return r.useEffect(()=>{H(I)},[I]),r.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(o,B)},[o,B]),HU.jsx(F,{card:"SessionStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{sessionStorage.removeItem(o),H("")}},children:HU.jsx("input",{type:"hidden",id:f,name:f,value:B})})},If=hf;var of=D({name:"SessionStorageCard",component:If,metadata:{author:"PieData"}});var u=require("react");var $U=require("react/jsx-runtime"),nf=({data:U})=>{let{name:f,key:o,value:I,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=u.useState(I);return u.useEffect(()=>{H(I)},[I]),u.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(o,B)},[o,B]),$U.jsx(F,{card:"DeviceStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{localStorage.removeItem(o),H("")}},children:$U.jsx("input",{type:"hidden",id:f,name:f,value:B})})},Tf=nf;var zf=D({name:"DeviceStorageCard",component:Tf,metadata:{author:"PieData"}});var Y=require("react");var qU=require("react/jsx-runtime"),sf=({data:U,content:f})=>{let{useLoader:o,noReturn:I,returnType:z,useSocketioSupport:T,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B}=U,H=Y.useContext(R),q=Y.useContext(K)??_,[P,Q]=Y.useState(!1),[$,L]=Y.useState(null),w=Y.useRef(f),N=Y.useContext(i),M=Y.useCallback((A)=>{if(A===null)Q(!0);else if(Q(!1),!I)w.current=A;if(!I)L(A)},[I]),J=Y.useCallback((A)=>{w.current=A.content,L(A.content)},[]),G=Y.useCallback((A)=>{if(A===null)Q(!0);else if(Q(!1),!I)for(let V of A)N?.emit(V.name,V.data)},[I,N]);if(Y.useEffect(()=>{L(f),Q(!1)},[f]),!$&&o)return H;return qU.jsx(F,{card:"AjaxGroupCard",data:U,methods:{changeContent:J},useSocketioSupport:T,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B,children:qU.jsx(q,{uiConfig:$??w.current,setUiAjaxConfiguration:z==="events"?G:M})})},Zf=sf;var Lf=D({name:"AjaxGroupCard",component:Zf,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var GU=require("react");var zU=require("react/jsx-runtime"),af=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I,url:z,sx:T}=U,Z=GU.useContext(j),O=GU.useContext(K)??_;return zU.jsx(F,{card:I,data:U,children:zU.jsx("div",{style:T,id:I,onClick:(H)=>{if(z)if(H.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else Z?.(z)},children:zU.jsx(O,{setUiAjaxConfiguration:o,uiConfig:f})})})},Of=af;var Pf=D({name:"BoxCard",component:Of,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Af=require("react");var ZU=require("react/jsx-runtime"),tf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I,sx:z}=U,T=Af.useContext(K)??_;return ZU.jsx(F,{card:I,data:U,children:ZU.jsx("div",{style:z,id:I,children:f.map((Z,O)=>{return ZU.jsx(T,{uiConfig:Z,setUiAjaxConfiguration:o},`children-${O}`)})})})},Bf=tf;var Hf=D({name:"OneOfCard",component:Bf,metadata:{author:"Swarm.ing",description:"Different variants"}});
|
package/dist/index.esm.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useContext as OU,useEffect as qU,useRef as bU}from"react";import{createContext as wZ,useContext as NZ}from"react";var YU=globalThis,P=(U,Z)=>{let H=Symbol.for(U);if(!(H in YU))YU[H]=Z();return YU[H]};var g=P("@swarm.ing/pieui:context:pieConfig",()=>wZ(null)),d=()=>{let U=NZ(g);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},o=()=>{let{apiServer:U}=d();return U},n=o,t=()=>{let{centrifugeServer:U}=d();return U};var k=()=>{let{enableRenderingLog:U}=d();return U},jU=k;var BU="__piedemo__";import{createContext as EZ}from"react";import{Centrifuge as fU}from"centrifuge";var CU=P("@swarm.ing/pieui:centrifuge-cache",()=>new Map),a=(U,Z)=>{if(!Z)return null;let H=`${U}::${Z}`,$=CU.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 fU.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let z=new fU(Z,{getToken:T});return CU.set(H,z),z},jZ=P("@swarm.ing/pieui:context:centrifuge",()=>EZ(null)),y=jZ;import{io as fZ}from"socket.io-client";import{createContext as CZ}from"react";var xU=P("@swarm.ing/pieui:socket-cache",()=>new Map),e=(U)=>{let Z=xU.get(U);if(Z)return Z;let H=fZ(U,{autoConnect:!1,transports:["websocket"]});return xU.set(U,H),H},xZ=P("@swarm.ing/pieui:context:socket",()=>CZ(null)),S=xZ;import kZ from"mitt";import{createContext as yZ,useCallback as SZ,useContext as bZ}from"react";function u(){return P("@swarm.ing/pieui:mitt-emitter",()=>kZ())}var kU=P("@swarm.ing/pieui:context:mitt",()=>yZ(null));function mZ(U){let Z=bZ(kU);return SZ((H,$)=>{(Z??u()).emit(`pie${H}_${U}`,$)},[U,Z])}var b=kU;function yU(U){return U.wasRecovering===!0&&U.recovered===!1}function SU(U){return U.recoverable===!1}import{jsx as hZ,jsxs as gZ,Fragment as pZ}from"react/jsx-runtime";var vZ=({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=jU(),q=bU(G);q.current=G;let V=bU(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=OU(S),O=OU(y),_=OU(b);if(qU(()=>{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=(w)=>{q.current?.[D]?.(w)};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,$]),qU(()=>{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",(w)=>{if(W)console.log(`[PieCard] Centrifuge received data on ${Y}:`,w.data);q.current?.[D]?.(w.data)}),Q.on("subscribed",(w)=>{if(SU(w))console.warn(`[PieCard] Centrifuge channel ${Y} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(yU(w)){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]),qU(()=>{if(!_||!z||!Z.name){if(W&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!_,useMittSupport:z,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let F=Object.keys(q.current??{}),A={};return F.forEach((D)=>{let Y=`pie${D}_${Z.name}`,Q=(w)=>{if(W)console.log(`[PieCard] Mitt registering event: ${Y}`);q.current?.[D]?.(w)};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 gZ(pZ,{children:[hZ("input",{type:"hidden",name:Z.name,value:JSON.stringify(I)}),H]});return H},M=vZ;import{lazy as uZ}from"react";var v=new Map;function mU(U,Z){return Z.catch(()=>{if(v.get(U)===Z)v.delete(U)}),v.set(U,Z),Z}function QU(U,Z){return uZ(()=>{if(v.has(Z))return v.get(Z);return mU(Z,U().then((H)=>H))})}var vU=async(U,Z)=>{if(!Z)return;if(v.has(U))return v.get(U);return mU(U,Z().then((H)=>H))};var C=P("@swarm.ing/pieui:component-registry",()=>new Map),cZ=(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=QU(Z.loader,U.name),Z.isLazy=!0;return Z};function K(U){let Z=cZ(U);return C.set(Z.name,Z),Z.component}var dZ=(U)=>{U.forEach((Z)=>K(Z))},oZ=(U)=>{C.delete(U)},lZ=(U)=>{return C.has(U)},iZ=(U)=>{return C.get(U)?.metadata},l=(U)=>{return C.get(U)},sZ=()=>{return Array.from(C.keys())},rZ=()=>{return C.size},hU=()=>Array.from(C.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),gU=(U)=>{let Z=C.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return vU(U,Z.loader)},pU=!1,nZ=()=>{if(pU||typeof window>"u")return;pU=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=hU(),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(()=>gU(Z[T])).catch(()=>{}).finally(()=>$(T+1))})};$(0)};import{useContext as uU,memo as GH}from"react";import{createContext as tZ}from"react";import{jsx as UH,Fragment as eZ}from"react/jsx-runtime";var aZ=P("@swarm.ing/pieui:context:fallback",()=>tZ(UH(eZ,{}))),E=aZ;import{createContext as ZH}from"react";var HH=P("@swarm.ing/pieui:context:lazyError",()=>ZH(void 0)),m=HH;import{Component as $H,Suspense as zH}from"react";import{jsx as IH}from"react/jsx-runtime";var TH=2,JH=400;class c extends $H{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<TH){let Z=JH*(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 IH(zH,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as WU}from"react/jsx-runtime";function XH({uiConfig:U,setUiAjaxConfiguration:Z}){let H=uU(E),$=uU(m),T=k();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=l(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=WU(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 WU(c,{name:z.name,fallback:z.fallback?WU(z.fallback,{}):H,onError:$,children:G})}if(T)console.log("[UI] Rendering component directly:",z.name);return G}var N=GH(XH);import{useContext as cU}from"react";import{createContext as YH}from"react";var BH=P("@swarm.ing/pieui:context:uiRenderer",()=>YH(null)),j=BH;import{jsx as UU}from"react/jsx-runtime";function dU({uiConfig:U,setUiAjaxConfiguration:Z}){let H=cU(E),$=cU(m),T=k();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=l(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 UU(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",z.name);let J=z.component,G=UU(j.Provider,{value:dU,children:UU(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(z.isLazy)return UU(c,{name:z.name,fallback:H,onError:$,children:G});return G}var DU=dU;import{useContext as OH}from"react";import{jsx as _U}from"react/jsx-runtime";var qH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:T}=U,z=OH(j)??N;return _U(M,{card:$,data:U,children:_U("div",{style:T,id:$,children:Z.map((J,G)=>{return _U(z,{uiConfig:J,setUiAjaxConfiguration:H},`children-${G}`)})})})},oU=qH;var QH=K({name:"SequenceCard",component:oU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as WH}from"react";import{jsx as lU}from"react/jsx-runtime";var DH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$}=U,T=WH(j)??N;return lU(M,{card:$,data:U,children:Z.map((z,J)=>{return lU(T,{uiConfig:z,setUiAjaxConfiguration:H},`children-${J}`)})})},iU=DH;var _H=K({name:"UnionCard",component:iU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as PH,useState as AH}from"react";import MH from"html-react-parser";import{useCallback as ZU,useEffect as VH,useRef as VU,useState as FH}from"react";function KH(){let U=new AudioContext,Z=U.createOscillator(),H=Z.connect(U.createMediaStreamDestination());Z.start();let $=H.stream.getAudioTracks()[0];return $.enabled=!1,$}function FU(U=null,Z){let[H,$]=FH(!1),T=VU(null),z=VU(null),J=VU(null),G=ZU(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=KH();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=ZU(()=>{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=ZU((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=ZU((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 VH(()=>{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}}import{jsx as LH}from"react/jsx-runtime";var RH=({data:U})=>{let{html:Z,useSocketioSupport:H,useCentrifugeSupport:$,useMittSupport:T,centrifugeChannel:z}=U,[J,G]=AH(Z),{isSessionActive:I,startSession:X,sendTextMessage:W}=FU(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 PH(()=>{G(Z)},[Z]),LH(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:MH(J)})},sU=RH;var wH=K({name:"HTMLEmbedCard",component:sU,metadata:{author:"Swarm.ing"}});import{useEffect as NH,useState as EH}from"react";import{jsx as rU}from"react/jsx-runtime";var jH=({data:U})=>{let{name:Z,value:H,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J}=U,[G,I]=EH(H);return NH(()=>{I(H)},[H]),rU(M,{card:"HiddenCard",data:U,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J,methods:{update:({value:X})=>{I(X)}},children:rU("input",{type:"hidden",id:Z,name:Z,value:G})})},nU=jH;var fH=K({name:"HiddenCard",component:nU,metadata:{author:"Swarm.ing"}});import{useContext as tU,useEffect as kH}from"react";import{createContext as CH}from"react";var xH=P("@swarm.ing/pieui:context:navigate",()=>CH(void 0)),x=xH;import{jsx as bH,Fragment as SH}from"react/jsx-runtime";var yH=({data:U})=>{let{url:Z}=U,H=tU(x),$=tU(E);return kH(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else H?.(Z)},[Z,H]),bH(SH,{children:$})},aU=yH;var mH=K({name:"AutoRedirectCard",component:aU,metadata:{author:"Swarm.ing"}});import{Bounce as vH,Slide as pH,Zoom as hH,Flip as gH}from"react-toastify";import{toast as uH,ToastContainer as cH}from"react-toastify";import{useContext as dH,useMemo as oH,useRef as lH}from"react";import{jsx as KU,Fragment as aH}from"react/jsx-runtime";var iH={bounce:vH,slide:pH,zoom:hH,flip:gH},sH=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?iH[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};uH(U.message,Z)},rH=(U)=>{console.log("Log event",U)},nH=(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()})},tH=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:T}=U,z=dH(x),J=lH(z);J.current=z;let G=oH(()=>({alert:sH,log:rH,push:nH,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 KU(aH,{children:KU(M,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:T,methods:G,children:KU(cH,{})})})},eU=tH;var eH=K({name:"IOEventsCard",component:eU,metadata:{author:"Swarm.ing"}});import{useEffect as UZ,useState as U$}from"react";import{jsx as ZZ}from"react/jsx-runtime";var Z$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G}=U,[I,X]=U$($);return UZ(()=>{X($)},[$]),UZ(()=>{if(typeof window>"u")return;sessionStorage.setItem(H,I)},[H,I]),ZZ(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:ZZ("input",{type:"hidden",id:Z,name:Z,value:I})})},HZ=Z$;var H$=K({name:"SessionStorageCard",component:HZ,metadata:{author:"PieData"}});import{useEffect as $Z,useState as $$}from"react";import{jsx as zZ}from"react/jsx-runtime";var z$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G}=U,[I,X]=$$($);return $Z(()=>{X($)},[$]),$Z(()=>{if(typeof window>"u")return;localStorage.setItem(H,I)},[H,I]),zZ(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:zZ("input",{type:"hidden",id:Z,name:Z,value:I})})},TZ=z$;var T$=K({name:"DeviceStorageCard",component:TZ,metadata:{author:"PieData"}});import{useCallback as PU,useContext as AU,useEffect as J$,useRef as I$,useState as JZ}from"react";import{jsx as IZ}from"react/jsx-runtime";var G$=({data:U,content:Z})=>{let{useLoader:H,noReturn:$,returnType:T,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I}=U,X=AU(E),W=AU(j)??N,[q,V]=JZ(!1),[B,O]=JZ(null),_=I$(Z),F=AU(b),A=PU((Q)=>{if(Q===null)V(!0);else if(V(!1),!$)_.current=Q;if(!$)O(Q)},[$]),D=PU((Q)=>{_.current=Q.content,O(Q.content)},[]),Y=PU((Q)=>{if(Q===null)V(!0);else if(V(!1),!$)for(let w of Q)F?.emit(w.name,w.data)},[$,F]);if(J$(()=>{O(Z),V(!1)},[Z]),!B&&H)return X;return IZ(M,{card:"AjaxGroupCard",data:U,methods:{changeContent:D},useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I,children:IZ(W,{uiConfig:B??_.current,setUiAjaxConfiguration:T==="events"?Y:A})})},GZ=G$;var X$=K({name:"AjaxGroupCard",component:GZ,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as XZ}from"react";import{jsx as MU}from"react/jsx-runtime";var Y$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,url:T,sx:z}=U,J=XZ(x),G=XZ(j)??N;return MU(M,{card:$,data:U,children:MU("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:MU(G,{setUiAjaxConfiguration:H,uiConfig:Z})})})},YZ=Y$;var B$=K({name:"BoxCard",component:YZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as O$}from"react";import{jsx as RU}from"react/jsx-runtime";var q$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:T}=U,z=O$(j)??N;return RU(M,{card:$,data:U,children:RU("div",{style:T,id:$,children:Z.map((J,G)=>{return RU(z,{uiConfig:J,setUiAjaxConfiguration:H},`children-${G}`)})})})},BZ=q$;var Q$=K({name:"OneOfCard",component:BZ,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as s}from"react";import{QueryClient as f$,QueryClientProvider as C$,useQuery as x$}from"@tanstack/react-query";import{useContext as M$,useEffect as R$}from"react";import{useEffect as W$,useState as D$}from"react";var HU=new Map,$U=new Map;function zU(U,Z){let H=`${U}::${Z}`,$=U?HU.get(H):void 0,[T,z]=D$($??null);return W$(()=>{if(!U)return;if(HU.has(H)){z(HU.get(H));return}let J=$U.get(H);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return HU.set(H,I),$U.delete(H),I}).catch((I)=>{throw $U.delete(H),I}),$U.set(H,J);let G=!1;return J.then((I)=>{if(!G)z(I)}).catch(()=>{}),()=>{G=!0}},[U,Z,H]),T}var _$=(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},V$={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:_$,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()}},OZ=V$;var F$={};function p(){return F$}var qZ=new Map;var QZ=(U)=>{return qZ.has(U)?qZ.get(U):null};var WZ,K$={isClient(){return!0},readSid(){return WZ},setSid(U){WZ=U},readWebStorage(U,Z){let H=p(),$=U==="local"?H.storage:H.sessionStorage;return $?$.getItem(Z):null},async readWebStorageAsync(U,Z){let H=p(),$=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=p();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=p();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=p();return Z.getInput?Z.getInput(U):QZ(U)},submitGlobalForm(){p().submitForm?.()}},DZ=K$;var P$=typeof navigator<"u"&&navigator.product==="ReactNative",A$=P$?DZ:OZ,R=A$;var i=P("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function _Z(){i.resolve?.()}function LU(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!i.promise)i.promise=new Promise((U)=>{i.resolve=()=>{U()}});return i.promise}var L$=({children:U})=>{let Z=M$(S),H=n(),$=zU(H,"socketIO"),T=(z)=>{if(R.isClient())R.setSid(z.sid),_Z(),console.log(`SocketIO initialized: ${R.readSid()}`)};return R$(()=>{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},TU=L$;import{useContext as w$,useEffect as N$}from"react";var E$=({children:U})=>{let Z=w$(y),H=n(),$=zU(H,"centrifuge");return N$(()=>{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},JU=E$;import{createAxiosDateTransformer as k$}from"axios-date-transformer";import{jsx as j$}from"react/jsx-runtime";function VZ(U,Z,H){if(!Z)return H;let $=U.replace(/^\//,""),T=Z[$];if(!T)return H;return j$(DU,{uiConfig:T})}import{jsx as L,Fragment as b$}from"react/jsx-runtime";var y$=({location:U,fallback:Z,piecache:H,onError:$,queryOptions:T,disableGlobalForm:z})=>{let J=o(),G=t(),I=k(),X=s(()=>k$({baseURL:J||""}),[J]),W=s(()=>u(),[]),q=s(()=>J?e(J):null,[J]),V=s(()=>J?a(J,G):null,[J,G]),{data:B,isLoading:O,error:_}=x$({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}),F=VZ(U.pathname,H,Z);if(!J)return F??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 $?.(_),F}if(O||!B){if(I)console.log("[PieRoot] Loading state:",{isLoading:O,hasUiConfiguration:!!B});return F}if(I)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L(b.Provider,{value:W,children:L(S.Provider,{value:q,children:L(y.Provider,{value:V,children:L(E.Provider,{value:Z??L(b$,{}),children:L(TU,{children:L(JU,{children:z?L(N,{uiConfig:B}):L("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:L(N,{uiConfig:B})})})})})})})})},S$=(U)=>{let Z=s(()=>new f$,[]),H=U.queryClient??Z;return L(x.Provider,{value:U.onNavigate,children:L(g.Provider,{value:U.config,children:L(m.Provider,{value:U.onError,children:L(C$,{client:H,children:L(y$,{...U})})})})})},wU=S$;import{useMemo as NU,useState as m$}from"react";import{QueryClient as v$,QueryClientProvider as p$}from"@tanstack/react-query";import{jsx as f,Fragment as u$}from"react/jsx-runtime";var h$=({location:U,fallback:Z,children:H,disableGlobalForm:$})=>{let T=o(),z=t(),J=k(),G=NU(()=>u(),[]),I=NU(()=>T?e(T):null,[T]),X=NU(()=>T?a(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 f(b.Provider,{value:G,children:f(S.Provider,{value:I,children:f(y.Provider,{value:X,children:f(E.Provider,{value:Z??f(u$,{}),children:f(TU,{children:f(JU,{children:$?H:f("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:H})})})})})})})},g$=(U)=>{let[Z]=m$(()=>new v$),H=U.queryClient??Z;return f(x.Provider,{value:U.onNavigate,children:f(g.Provider,{value:U.config,children:f(m.Provider,{value:U.onError,children:f(p$,{client:H,children:f(h$,{...U})})})})})},c$=g$;import{useMemo as d$}from"react";import{jsx as FZ}from"react/jsx-runtime";var o$=FZ("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=d$(()=>({apiServer:J,centrifugeServer:$,enableRenderingLog:z,pageProcessor:"web"}),[J,$,z]);return FZ(wU,{location:{pathname:Z,search:H},config:G,fallback:T??o$,onNavigate:(X)=>{if(typeof window<"u")window.history.pushState(null,"",X)}})},i$=l$;import{useMemo as s$}from"react";var r$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],n$=new Set(["telegram:cloud","telegram:secure"]),IU=(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}},KZ=(U,Z=!1)=>{let{source:H,key:$}=IU(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},t$=(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([])}})},PZ=async(U,Z=!1)=>{let{source:H,key:$}=IU(U);if(H==="telegram:cloud"||H==="telegram:secure")return t$(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 KZ(U,Z)},a$=(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 LU();let B=new FormData;for(let[F,A]of Object.entries({...Z,...q}))B.append(F,A);for(let F of H){let{key:A}=IU(F);for(let D of await PZ(F,z))B.append(A,D)}let O=V+"api/ajax_content"+$;U(null);let _;for(let F=0;F<=I;F++){if(F>0){let Y=X*2**(F-1);if(z)console.log(`AJAX retry ${F}/${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)&&F<I){_=Error(`HTTP ${Y.status}`);continue}let w=(Y.headers.get("content-type")||"").includes("application/json");if(!!Y.body?.getReader&&!w){let r=Y.body.getReader(),AZ=new TextDecoder,h="";while(!0){let{done:GU,value:MZ}=await r.read();if(GU)break;h+=AZ.decode(MZ,{stream:!0});let EU=h.split(`
|
|
3
|
-
`);
|
|
2
|
+
import{useContext as QU,useEffect as WU,useRef as pU}from"react";import{createContext as EZ,useContext as jZ}from"react";var qU=globalThis,A=(U,Z)=>{let $=Symbol.for(U);if(!($ in qU))qU[$]=Z();return qU[$]};var d=A("@swarm.ing/pieui:context:pieConfig",()=>EZ(null)),l=()=>{let U=jZ(d);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},i=()=>{let{apiServer:U}=l();return U},t=i,a=()=>{let{centrifugeServer:U}=l();return U};var k=()=>{let{enableRenderingLog:U}=l();return U},fU=k;var OU="__piedemo__";import{createContext as CZ}from"react";import{Centrifuge as xU}from"centrifuge";var kU=A("@swarm.ing/pieui:centrifuge-cache",()=>new Map),e=(U,Z)=>{if(!Z)return null;let $=`${U}::${Z}`,z=kU.get($);if(z)return z;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 xU.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let H=new xU(Z,{getToken:T});return kU.set($,H),H},fZ=A("@swarm.ing/pieui:context:centrifuge",()=>CZ(null)),y=fZ;import{io as xZ}from"socket.io-client";import{createContext as kZ}from"react";var yU=A("@swarm.ing/pieui:socket-cache",()=>new Map),UU=(U)=>{let Z=yU.get(U);if(Z)return Z;let $=xZ(U,{autoConnect:!1,transports:["websocket"]});return yU.set(U,$),$},yZ=A("@swarm.ing/pieui:context:socket",()=>kZ(null)),S=yZ;import SZ from"mitt";import{createContext as bZ,useCallback as vZ,useContext as mZ}from"react";function c(){return A("@swarm.ing/pieui:mitt-emitter",()=>SZ())}var SU=A("@swarm.ing/pieui:context:mitt",()=>bZ(null));function pZ(U){let Z=mZ(SU);return vZ(($,z)=>{(Z??c()).emit(`pie${$}_${U}`,z)},[U,Z])}var b=SU;function bU(U){return U.wasRecovering===!0&&U.recovered===!1}function vU(U){return U.recoverable===!1}function mU(U,Z,$){let z=U.getSubscription(Z);if(z)return{subscription:z,createdHere:!1};return{subscription:U.newSubscription(Z,$),createdHere:!0}}import{jsx as uZ,jsxs as dZ,Fragment as gZ}from"react/jsx-runtime";var hZ=({card:U,data:Z,children:$,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:H=!1,centrifugeChannel:J=void 0,methods:G=void 0,stored:I=void 0,onResync:Y=void 0})=>{let D=fU(),O=pU(G);O.current=G;let V=pU(Y);if(V.current=Y,D)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:z,centrifuge:T,mitt:H,centrifugeChannel:J}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!$);let B=QU(S),q=QU(y),_=QU(b);if(WU(()=>{if(!B||!z||!O.current||!Z.name){if(D&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:z,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let P=Object.keys(O.current??{}).map((W)=>{let X=`pie${W}_${Z.name}`;if(D)console.log(`[PieCard] Socket.IO registering event: ${X}`);let Q=(C)=>{O.current?.[W]?.(C)};return B.on(X,Q),[X,Q]});return()=>{P.forEach(([W,X])=>{if(D)console.log(`[PieCard] Socket.IO unregistering event: ${W}`);B.off(W,X)})}},[B,Z.name,z]),WU(()=>{if(!q||!T||!J||!Z.name){if(D&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!q,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let P=Object.keys(O.current??{}).map((W)=>{let X=`pie${W}_${Z.name}_${J}`;if(D)console.log(`[PieCard] Centrifuge subscribing to channel: ${X}`);let{subscription:Q,createdHere:C}=mU(q,X,{recoverable:!0,positioned:!0}),XU=(p)=>{if(D)console.log(`[PieCard] Centrifuge received data on ${X}:`,p.data);O.current?.[W]?.(p.data)},m=(p)=>{if(vU(p))console.warn(`[PieCard] Centrifuge channel ${X} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(bU(p)){if(D)console.log(`[PieCard] Centrifuge recovery gap on ${X}; requesting resync`);V.current?.({channel:X,reason:"gap"})}};return Q.on("publication",XU),Q.on("subscribed",m),Q.subscribe(),{subscription:Q,createdHere:C,onPublication:XU,onSubscribed:m}});return()=>{P.forEach(({subscription:W,createdHere:X,onPublication:Q,onSubscribed:C})=>{if(D)console.log("[PieCard] Centrifuge unsubscribing from channel");if(W.off("publication",Q),W.off("subscribed",C),X)W.unsubscribe(),q.removeSubscription(W)})}},[q,J,Z.name,T]),WU(()=>{if(!_||!H||!Z.name){if(D&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!_,useMittSupport:H,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let F=Object.keys(O.current??{}),P={};return F.forEach((W)=>{let X=`pie${W}_${Z.name}`,Q=(C)=>{if(D)console.log(`[PieCard] Mitt registering event: ${X}`);O.current?.[W]?.(C)};P[X]=Q,_.on(X,Q)}),()=>{Object.entries(P).forEach(([W,X])=>{if(D)console.log(`[PieCard] Mitt unregistering event: ${W}`);_.off(W,X)})}},[_,Z.name,H]),D)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return dZ(gZ,{children:[uZ("input",{type:"hidden",name:Z.name,value:JSON.stringify(I)}),$]});return $},M=hZ;import{lazy as cZ}from"react";var h=new Map;function hU(U,Z){return Z.catch(()=>{if(h.get(U)===Z)h.delete(U)}),h.set(U,Z),Z}function DU(U,Z){return cZ(()=>{if(h.has(Z))return h.get(Z);return hU(Z,U().then(($)=>$))})}var gU=async(U,Z)=>{if(!Z)return;if(h.has(U))return h.get(U);return hU(U,Z().then(($)=>$))};var f=A("@swarm.ing/pieui:component-registry",()=>new Map),oZ=(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=DU(Z.loader,U.name),Z.isLazy=!0;return Z};function K(U){let Z=oZ(U);return f.set(Z.name,Z),Z.component}var lZ=(U)=>{U.forEach((Z)=>K(Z))},iZ=(U)=>{f.delete(U)},sZ=(U)=>{return f.has(U)},rZ=(U)=>{return f.get(U)?.metadata},s=(U)=>{return f.get(U)},nZ=()=>{return Array.from(f.keys())},tZ=()=>{return f.size},dU=()=>Array.from(f.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),cU=(U)=>{let Z=f.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return gU(U,Z.loader)},uU=!1,aZ=()=>{if(uU||typeof window>"u")return;uU=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=dU(),$="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=Z.length)return;$(()=>{Promise.resolve().then(()=>cU(Z[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};import{useContext as oU,memo as Y$}from"react";import{createContext as eZ}from"react";import{jsx as $$,Fragment as Z$}from"react/jsx-runtime";var U$=A("@swarm.ing/pieui:context:fallback",()=>eZ($$(Z$,{}))),N=U$;import{createContext as z$}from"react";var H$=A("@swarm.ing/pieui:context:lazyError",()=>z$(void 0)),v=H$;import{Component as T$,Suspense as J$}from"react";import{jsx as X$}from"react/jsx-runtime";var I$=2,G$=400;class o extends T${state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<I$){let Z=G$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.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 X$(J$,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as _U}from"react/jsx-runtime";function B$({uiConfig:U,setUiAjaxConfiguration:Z}){let $=oU(N),z=oU(v),T=k();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 H=s(U.card);if(!H?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(T)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let J=H.component,G=_U(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(H.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",H.name);return _U(o,{name:H.name,fallback:H.fallback?_U(H.fallback,{}):$,onError:z,children:G})}if(T)console.log("[UI] Rendering component directly:",H.name);return G}var w=Y$(B$);import{useContext as lU}from"react";import{createContext as q$}from"react";var O$=A("@swarm.ing/pieui:context:uiRenderer",()=>q$(null)),E=O$;import{jsx as ZU}from"react/jsx-runtime";function iU({uiConfig:U,setUiAjaxConfiguration:Z}){let $=lU(N),z=lU(v),T=k();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 H=s(U.card);if(!H?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(T)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(T)console.log("[UILoading] Rendering fallback for:",H.name);let I=H.fallback;return ZU(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",H.name);let J=H.component,G=ZU(E.Provider,{value:iU,children:ZU(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(H.isLazy)return ZU(o,{name:H.name,fallback:$,onError:z,children:G});return G}var VU=iU;import{useContext as Q$}from"react";import{jsx as FU}from"react/jsx-runtime";var W$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=Q$(E)??w;return FU(M,{card:z,data:U,children:FU("div",{style:T,id:z,children:Z.map((J,G)=>{return FU(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${G}`)})})})},sU=W$;var D$=K({name:"SequenceCard",component:sU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as _$}from"react";import{jsx as rU}from"react/jsx-runtime";var V$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z}=U,T=_$(E)??w;return rU(M,{card:z,data:U,children:Z.map((H,J)=>{return rU(T,{uiConfig:H,setUiAjaxConfiguration:$},`children-${J}`)})})},nU=V$;var F$=K({name:"UnionCard",component:nU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as M$,useState as R$}from"react";import L$ from"html-react-parser";import{useCallback as $U,useEffect as K$,useRef as KU,useState as A$}from"react";function P$(){let U=new AudioContext,Z=U.createOscillator(),$=Z.connect(U.createMediaStreamDestination());Z.start();let z=$.stream.getAudioTracks()[0];return z.enabled=!1,z}function AU(U=null,Z){let[$,z]=A$(!1),T=KU(null),H=KU(null),J=KU(null),G=$U(async(O,V=!0)=>{if(T.current)I();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))z(!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=P$();B.addTrack(Q)}let q=B.createDataChannel("oai-events");H.current=q,J.current=new Promise((Q)=>{q.addEventListener("open",()=>{Q()})});let _=await B.createOffer();await B.setLocalDescription(_);let X=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:_.sdp,headers:{Authorization:`Bearer ${O}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:X}),T.current=B,await J.current},[U]),I=$U(()=>{let O=H.current;if(O)O.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,H.current=null,J.current=null},[U]),Y=$U((O)=>{let V=H.current;if(!V){console.error("Data channel is not ready",O);return}let B=new Date().toLocaleTimeString();if(O.event_id=O.event_id||crypto.randomUUID(),V.send(JSON.stringify(O)),!O.timestamp)O.timestamp=B;Z?.(O)},[Z,U]),D=$U((O)=>{if(!H.current){console.error("Data channel is not ready");return}let B=()=>{Y({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:O}]}}),Y({type:"response.create"})};if(J.current)J.current.then(B);else B()},[Z,U]);return K$(()=>{let O=H.current;if(!O)return;let V=(B)=>{let q=JSON.parse(B.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();Z?.(q)};return O.addEventListener("message",V),()=>{O.removeEventListener("message",V)}},[Z,U]),{isSessionActive:$,startSession:G,stopSession:I,sendTextMessage:D}}import{jsx as N$}from"react/jsx-runtime";var w$=({data:U})=>{let{html:Z,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:H}=U,[J,G]=R$(Z),{isSessionActive:I,startSession:Y,sendTextMessage:D}=AU(null,(q)=>{if(console.log(q.type,q.type==="response.output_text.delta"&&q.delta),q.type==="response.output_text.delta"&&q.delta)G((_)=>_+q.delta)});return M$(()=>{G(Z)},[Z]),N$(M,{card:"HTMLEmbedCard",data:U,methods:{update:(q)=>{G(q.value)},generateUsingAI:async(q)=>{try{if(!I&&q.token)await Y(q.token,!1);D(q.prompt)}catch(_){console.error("Failed to generate using AI",_)}},initializeAI:async(q)=>{if(!I&&q.token)await Y(q.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:$,useMittSupport:T,centrifugeChannel:H,children:L$(J)})},tU=w$;var E$=K({name:"HTMLEmbedCard",component:tU,metadata:{author:"Swarm.ing"}});import{useEffect as j$,useState as C$}from"react";import{jsx as aU}from"react/jsx-runtime";var f$=({data:U})=>{let{name:Z,value:$,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J}=U,[G,I]=C$($);return j$(()=>{I($)},[$]),aU(M,{card:"HiddenCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J,methods:{update:({value:Y})=>{I(Y)}},children:aU("input",{type:"hidden",id:Z,name:Z,value:G})})},eU=f$;var x$=K({name:"HiddenCard",component:eU,metadata:{author:"Swarm.ing"}});import{useContext as UZ,useEffect as S$}from"react";import{createContext as k$}from"react";var y$=A("@swarm.ing/pieui:context:navigate",()=>k$(void 0)),x=y$;import{jsx as m$,Fragment as v$}from"react/jsx-runtime";var b$=({data:U})=>{let{url:Z}=U,$=UZ(x),z=UZ(N);return S$(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else $?.(Z)},[Z,$]),m$(v$,{children:z})},ZZ=b$;var p$=K({name:"AutoRedirectCard",component:ZZ,metadata:{author:"Swarm.ing"}});import{Bounce as h$,Slide as g$,Zoom as u$,Flip as d$}from"react-toastify";import{toast as c$,ToastContainer as o$}from"react-toastify";import{useContext as l$,useMemo as i$,useRef as s$}from"react";import{jsx as PU,Fragment as Uz}from"react/jsx-runtime";var r$={bounce:h$,slide:g$,zoom:u$,flip:d$},n$=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?r$[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};c$(U.message,Z)},t$=(U)=>{console.log("Log event",U)},a$=(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(z){console.error("[IOEventsCard] Failed to show notification",z)}},$=window.Notification.permission;if($==="granted"){Z();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")Z()})},e$=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T}=U,H=l$(x),J=s$(H);J.current=H;let G=i$(()=>({alert:n$,log:t$,push:a$,redirect:(I)=>{if(I.to){let Y=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()},reload:(I)=>{if(I.to){let Y=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()}}),[]);return PU(Uz,{children:PU(M,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T,methods:G,children:PU(o$,{})})})},$Z=e$;var Zz=K({name:"IOEventsCard",component:$Z,metadata:{author:"Swarm.ing"}});import{useEffect as zZ,useState as $z}from"react";import{jsx as HZ}from"react/jsx-runtime";var zz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G}=U,[I,Y]=$z(z);return zZ(()=>{Y(z)},[z]),zZ(()=>{if(typeof window>"u")return;sessionStorage.setItem($,I)},[$,I]),HZ(M,{card:"SessionStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:D})=>{Y(D)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:HZ("input",{type:"hidden",id:Z,name:Z,value:I})})},TZ=zz;var Hz=K({name:"SessionStorageCard",component:TZ,metadata:{author:"PieData"}});import{useEffect as JZ,useState as Tz}from"react";import{jsx as IZ}from"react/jsx-runtime";var Jz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G}=U,[I,Y]=Tz(z);return JZ(()=>{Y(z)},[z]),JZ(()=>{if(typeof window>"u")return;localStorage.setItem($,I)},[$,I]),IZ(M,{card:"DeviceStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:D})=>{Y(D)},remove:()=>{localStorage.removeItem($),Y("")}},children:IZ("input",{type:"hidden",id:Z,name:Z,value:I})})},GZ=Jz;var Iz=K({name:"DeviceStorageCard",component:GZ,metadata:{author:"PieData"}});import{useCallback as MU,useContext as RU,useEffect as Gz,useRef as Xz,useState as XZ}from"react";import{jsx as YZ}from"react/jsx-runtime";var Yz=({data:U,content:Z})=>{let{useLoader:$,noReturn:z,returnType:T,useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I}=U,Y=RU(N),D=RU(E)??w,[O,V]=XZ(!1),[B,q]=XZ(null),_=Xz(Z),F=RU(b),P=MU((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)_.current=Q;if(!z)q(Q)},[z]),W=MU((Q)=>{_.current=Q.content,q(Q.content)},[]),X=MU((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)for(let C of Q)F?.emit(C.name,C.data)},[z,F]);if(Gz(()=>{q(Z),V(!1)},[Z]),!B&&$)return Y;return YZ(M,{card:"AjaxGroupCard",data:U,methods:{changeContent:W},useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I,children:YZ(D,{uiConfig:B??_.current,setUiAjaxConfiguration:T==="events"?X:P})})},BZ=Yz;var Bz=K({name:"AjaxGroupCard",component:BZ,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as qZ}from"react";import{jsx as LU}from"react/jsx-runtime";var qz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,url:T,sx:H}=U,J=qZ(x),G=qZ(E)??w;return LU(M,{card:z,data:U,children:LU("div",{style:H,id:z,onClick:(Y)=>{if(T)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:LU(G,{setUiAjaxConfiguration:$,uiConfig:Z})})})},OZ=qz;var Oz=K({name:"BoxCard",component:OZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Qz}from"react";import{jsx as wU}from"react/jsx-runtime";var Wz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=Qz(E)??w;return wU(M,{card:z,data:U,children:wU("div",{style:T,id:z,children:Z.map((J,G)=>{return wU(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${G}`)})})})},QZ=Wz;var Dz=K({name:"OneOfCard",component:QZ,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as n}from"react";import{QueryClient as xz,QueryClientProvider as kz,useQuery as yz}from"@tanstack/react-query";import{useContext as Lz,useEffect as wz}from"react";import{useEffect as _z,useState as Vz}from"react";var zU=new Map,HU=new Map;function TU(U,Z){let $=`${U}::${Z}`,z=U?zU.get($):void 0,[T,H]=Vz(z??null);return _z(()=>{if(!U)return;if(zU.has($)){H(zU.get($));return}let J=HU.get($);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return zU.set($,I),HU.delete($),I}).catch((I)=>{throw HU.delete($),I}),HU.set($,J);let G=!1;return J.then((I)=>{if(!G)H(I)}).catch(()=>{}),()=>{G=!0}},[U,Z,$]),T}var Fz=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let $ of Z){let z=$.indexOf("=");if((z===-1?$:$.slice(0,z)).trim()===U){let H=z===-1?"":$.slice(z+1).trim();try{return decodeURIComponent(H)}catch{return H}}}return null},Kz={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:Fz,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let $=Z[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},WZ=Kz;var Az={};function g(){return Az}var DZ=new Map;var _Z=(U)=>{return DZ.has(U)?DZ.get(U):null};var VZ,Pz={isClient(){return!0},readSid(){return VZ},setSid(U){VZ=U},readWebStorage(U,Z){let $=g(),z=U==="local"?$.storage:$.sessionStorage;return z?z.getItem(Z):null},async readWebStorageAsync(U,Z){let $=g(),z=U==="local"?$.asyncStorage:$.asyncSessionStorage;if(z)return z.getItem(Z);let T=U==="local"?$.storage:$.sessionStorage;return T?T.getItem(Z):null},readCookie(U){let Z=g();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=g();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=g();return Z.getInput?Z.getInput(U):_Z(U)},submitGlobalForm(){g().submitForm?.()}},FZ=Pz;var Mz=typeof navigator<"u"&&navigator.product==="ReactNative",Rz=Mz?FZ:WZ,R=Rz;var r=A("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function KZ(){r.resolve?.()}function NU(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!r.promise)r.promise=new Promise((U)=>{r.resolve=()=>{U()}});return r.promise}var Nz=({children:U})=>{let Z=Lz(S),$=t(),z=TU($,"socketIO"),T=(H)=>{if(R.isClient())R.setSid(H.sid),KZ(),console.log(`SocketIO initialized: ${R.readSid()}`)};return wz(()=>{if(!Z)return;let H=()=>{console.log("SocketIO connected")},J=(G)=>{console.log(`SocketIO disconnected: ${G}`),Z.connect()};if(z)Z.on("pieinit",T),Z.on("connect",H),Z.on("disconnect",J),Z.connect();return()=>{if(z)Z.off("pieinit",T),Z.off("connect",H),Z.off("disconnect",J),Z.disconnect()}},[Z,z]),U},JU=Nz;import{useContext as Ez,useEffect as jz}from"react";var Cz=({children:U})=>{let Z=Ez(y),$=t(),z=TU($,"centrifuge");return jz(()=>{if(!Z)return;let T=()=>{console.log("Centrifuge connected")},H=(J)=>{console.log("Centrifuge disconnected:",J)};if(z)Z.on("connected",T),Z.on("disconnected",H),Z.connect();return()=>{if(z)Z.disconnect()}},[Z,z]),U},IU=Cz;import{createAxiosDateTransformer as Sz}from"axios-date-transformer";import{jsx as fz}from"react/jsx-runtime";function AZ(U,Z,$){if(!Z)return $;let z=U.replace(/^\//,""),T=Z[z];if(!T)return $;return fz(VU,{uiConfig:T})}import{jsx as L,Fragment as mz}from"react/jsx-runtime";var bz=({location:U,fallback:Z,piecache:$,onError:z,queryOptions:T,disableGlobalForm:H})=>{let J=i(),G=a(),I=k(),Y=n(()=>Sz({baseURL:J||""}),[J]),D=n(()=>c(),[]),O=n(()=>J?UU(J):null,[J]),V=n(()=>J?e(J,G):null,[J,G]),{data:B,isLoading:q,error:_}=yz({queryKey:["uiConfig",U.pathname+U.search,J],enabled:!!J,queryFn:async()=>{let P=new URLSearchParams(U.search);P.set("__pieroot","web");let W="/api/content"+U.pathname+"?"+P.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",W);let X=await Y.get(W,{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:",X.data);return X.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(P)=>Math.min(1000*2**P,30000),...T}),F=AZ(U.pathname,$,Z);if(!J)return F??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:",!!$);if(_){if(I)console.error("[PieRoot] Error fetching UI configuration:",_),console.error("[PieRoot] Error details:",{message:_.message,status:_.response?.status,data:_.response?.data});return z?.(_),F}if(q||!B){if(I)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!B});return F}if(I)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L(b.Provider,{value:D,children:L(S.Provider,{value:O,children:L(y.Provider,{value:V,children:L(N.Provider,{value:Z??L(mz,{}),children:L(JU,{children:L(IU,{children:H?L(w,{uiConfig:B}):L("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:L(w,{uiConfig:B})})})})})})})})},vz=(U)=>{let Z=n(()=>new xz,[]),$=U.queryClient??Z;return L(x.Provider,{value:U.onNavigate,children:L(d.Provider,{value:U.config,children:L(v.Provider,{value:U.onError,children:L(kz,{client:$,children:L(bz,{...U})})})})})},EU=vz;import{useMemo as jU,useState as pz}from"react";import{QueryClient as hz,QueryClientProvider as gz}from"@tanstack/react-query";import{jsx as j,Fragment as cz}from"react/jsx-runtime";var uz=({location:U,fallback:Z,children:$,disableGlobalForm:z})=>{let T=i(),H=a(),J=k(),G=jU(()=>c(),[]),I=jU(()=>T?UU(T):null,[T]),Y=jU(()=>T?e(T,H):null,[T,H]);if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",H),console.log("[PieRoot] Fallback provided:",!!Z);return j(b.Provider,{value:G,children:j(S.Provider,{value:I,children:j(y.Provider,{value:Y,children:j(N.Provider,{value:Z??j(cz,{}),children:j(JU,{children:j(IU,{children:z?$:j("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},dz=(U)=>{let[Z]=pz(()=>new hz),$=U.queryClient??Z;return j(x.Provider,{value:U.onNavigate,children:j(d.Provider,{value:U.config,children:j(v.Provider,{value:U.onError,children:j(gz,{client:$,children:j(uz,{...U})})})})})},oz=dz;import{useMemo as lz}from"react";import{jsx as PZ}from"react/jsx-runtime";var iz=PZ("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),sz=({apiServer:U,pathname:Z="/",search:$="",centrifugeServer:z,fallback:T,enableRenderingLog:H=!1})=>{let J=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",G=lz(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:H,pageProcessor:"web"}),[J,z,H]);return PZ(EU,{location:{pathname:Z,search:$},config:G,fallback:T??iz,onNavigate:(Y)=>{if(typeof window<"u")window.history.pushState(null,"",Y)}})},rz=sz;import{useMemo as nz}from"react";var tz=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],az=new Set(["telegram:cloud","telegram:secure"]),GU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of tz){let $=Z+":";if(U.startsWith($))return{source:Z,key:U.slice($.length)}}return{source:"dom",key:U}},MZ=(U,Z=!1)=>{let{source:$,key:z}=GU(U);if($==="sid"){let H=R.readSid();if(!H)throw Error("SocketIO isn't initialized properly");return[H]}if($==="localStorage"||$==="sessionStorage")try{let H=R.readWebStorage($==="localStorage"?"local":"session",z);if(H===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[H]}catch(H){if(Z)console.warn(`Failed to read ${$} key ${z}:`,H);return[]}if($==="cookie"){let H=R.readCookie(z);if(H===null){if(Z)console.warn(`No cookie found for key ${z}`);return[]}return[H]}if($==="url"){let H=R.readUrlParams(z);if(!H.length&&Z)console.warn(`No URL query param found for key ${z}`);return H}if(az.has($)){if(Z)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=R.readDomInput(z);if(T===null){if(Z)console.warn(`No input found with name ${z}`);return[]}return T},ez=(U,Z,$)=>{let z=window.Telegram?.WebApp,T=U==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,H=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if($)console.warn(`${H} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(Z,(G,I)=>{if(G){if($)console.warn(`Failed to read ${H} key ${Z}:`,G);J([]);return}if(I==null||I===""){if($)console.warn(`No ${H} value found for key ${Z}`);J([]);return}J([I])})}catch(G){if($)console.warn(`Failed to read ${H} key ${Z}:`,G);J([])}})},RZ=async(U,Z=!1)=>{let{source:$,key:z}=GU(U);if($==="telegram:cloud"||$==="telegram:secure")return ez($,z,Z);if(($==="localStorage"||$==="sessionStorage")&&R.readWebStorageAsync)try{let T=await R.readWebStorageAsync($==="localStorage"?"local":"session",z);if(T===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[T]}catch(T){if(Z)console.warn(`Failed to read ${$} key ${z}:`,T);return[]}return MZ(U,Z)},UH=(U,Z={},$=[],z,T)=>{let H=T?.renderingLogEnabled??!1,J=T?.timeout,G=T?.retryPolicy,I=G?.maxRetries??0,Y=G?.baseDelay??1000,D=G?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",z,Z,$);return async(O={})=>{if(!R.isClient()){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!U){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await NU();let B=new FormData;for(let[F,P]of Object.entries({...Z,...O}))B.append(F,P);for(let F of $){let{key:P}=GU(F);for(let W of await RZ(F,H))B.append(P,W)}let q=V+"api/ajax_content"+z;U(null);let _;for(let F=0;F<=I;F++){if(F>0){let X=Y*2**(F-1);if(H)console.log(`AJAX retry ${F}/${I} after ${X}ms`);await new Promise((Q)=>setTimeout(Q,X))}let P=J!=null?new AbortController:null,W=P&&setTimeout(()=>P.abort(),J);try{let X=await fetch(q,{method:"POST",body:B,signal:P?.signal});if(W)clearTimeout(W);if(!X.ok&&D.includes(X.status)&&F<I){_=Error(`HTTP ${X.status}`);continue}let C=(X.headers.get("content-type")||"").includes("application/json");if(!!X.body?.getReader&&!C){let m=X.body.getReader(),p=new TextDecoder,u="";while(!0){let{done:YU,value:LZ}=await m.read();if(YU)break;u+=p.decode(LZ,{stream:!0});let CU=u.split(`
|
|
3
|
+
`);u=CU.pop()??"";for(let wZ of CU){let BU=wZ.trim();if(!BU)continue;try{let NZ=JSON.parse(BU);U([NZ])}catch{if(H)console.warn("Failed to parse streamed line:",BU)}}}if(u.trim())try{let YU=JSON.parse(u);U([YU])}catch{if(H)console.warn("Failed to parse final streamed line:",u)}return{}}else{let m=await X.json();return U(m),m}}catch(X){if(W)clearTimeout(W);if(_=X,F<I)continue;if(H)console.error("AJAX request failed:",X);return U(null),X}}if(H)console.error("AJAX request failed after retries:",_);return U(null),_}},ZH=(U,Z={},$=[],z,T)=>{let{apiServer:H,enableRenderingLog:J}=l(),G=JSON.stringify(Z),I=JSON.stringify($),Y=JSON.stringify(T);return nz(()=>UH(U,Z,$,z,{apiServer:H,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[U,G,I,z,H,J,Y])};import{clsx as $H}from"clsx";import{twMerge as zH}from"tailwind-merge";function HH(...U){return zH($H(U))}var TH=()=>{R.submitGlobalForm()};var JH=(U,Z)=>`${U}${OU}${Z}`;export{pZ as usePieEmit,ZH as useAjaxSubmit,iZ as unregisterComponent,DU as trackLazy,TH as submitGlobalForm,f as registry,K as registerPieComponent,lZ as registerMultipleComponents,RZ as readAjaxKeyAsync,MZ as readAjaxKey,cU as preloadComponent,aZ as prefetchLazyComponents,JH as pieName,GU as parseDepName,sZ as hasComponent,tZ as getRegistrySize,s as getRegistryEntry,dU as getLazyComponentNames,c as getEmitter,rZ as getComponentMeta,nZ as getAllRegisteredComponents,HH as cn,F$ as UnionCard,E as UIRendererContext,VU as UILoading,w as UI,S as SocketIOContext,Hz as SessionStorageCard,D$ as SequenceCard,EU as PieRoot,rz as PiePreviewRoot,d as PieConfigContext,M as PieCard,oz as PieBaseRoot,OU as PIEBREAK,Dz as OneOfCard,b as MittContext,Zz as IOEventsCard,x$ as HiddenCard,E$ as HTMLEmbedCard,N as FallbackContext,Iz as DeviceStorageCard,y as CentrifugeIOContext,Oz as BoxCard,p$ as AutoRedirectCard,Bz as AjaxGroupCard};
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
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
|
-
`);
|
|
2
|
+
var b$=Object.create;var{getPrototypeOf:v$,defineProperty:HU,getOwnPropertyNames:XZ,getOwnPropertyDescriptor:m$}=Object,YZ=Object.prototype.hasOwnProperty;var BZ=(U,Z,$)=>{$=U!=null?b$(v$(U)):{};let z=Z||!U||!U.__esModule?HU($,"default",{value:U,enumerable:!0}):$;for(let T of XZ(U))if(!YZ.call(z,T))HU(z,T,{get:()=>U[T],enumerable:!0});return z},GZ=new WeakMap,p$=(U)=>{var Z=GZ.get(U),$;if(Z)return Z;if(Z=HU({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")XZ(U).map((z)=>!YZ.call(Z,z)&&HU(Z,z,{get:()=>U[z],enumerable:!($=m$(U,z))||$.enumerable}));return GZ.set(U,Z),Z};var h$=(U,Z)=>{for(var $ in Z)HU(U,$,{get:Z[$],enumerable:!0,configurable:!0,set:(z)=>Z[$]=()=>z})};var xz={};h$(xz,{usePieEmit:()=>KZ,useAjaxSubmit:()=>N$,unregisterComponent:()=>jZ,trackLazy:()=>KU,submitGlobalForm:()=>f$,registry:()=>y,registerPieComponent:()=>F,registerMultipleComponents:()=>EZ,readAjaxKeyAsync:()=>JZ,readAjaxKey:()=>TZ,preloadComponent:()=>sU,prefetchLazyComponents:()=>yZ,pieName:()=>x$,parseDepName:()=>OU,hasComponent:()=>CZ,getRegistrySize:()=>kZ,getRegistryEntry:()=>t,getLazyComponentNames:()=>iU,getEmitter:()=>o,getComponentMeta:()=>fZ,getAllRegisteredComponents:()=>xZ,cn:()=>C$,UnionCard:()=>oZ,UIRendererContext:()=>C,UILoading:()=>RU,UI:()=>N,SocketIOContext:()=>b,SessionStorageCard:()=>H$,SequenceCard:()=>uZ,PieRoot:()=>hU,PiePreviewRoot:()=>L$,PieConfigContext:()=>c,PieCard:()=>M,PieBaseRoot:()=>M$,PIEBREAK:()=>_U,OneOfCard:()=>O$,MittContext:()=>v,IOEventsCard:()=>$$,HiddenCard:()=>tZ,HTMLEmbedCard:()=>rZ,FallbackContext:()=>j,DeviceStorageCard:()=>J$,CentrifugeIOContext:()=>S,BoxCard:()=>Y$,AutoRedirectCard:()=>U$,AjaxGroupCard:()=>G$});module.exports=p$(xz);var k=require("react");var QU=require("react");var oU=globalThis,A=(U,Z)=>{let $=Symbol.for(U);if(!($ in oU))oU[$]=Z();return oU[$]};var c=A("@swarm.ing/pieui:context:pieConfig",()=>QU.createContext(null)),TU=()=>{let U=QU.useContext(c);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},JU=()=>{let{apiServer:U}=TU();return U},WU=JU,DU=()=>{let{centrifugeServer:U}=TU();return U};var p=()=>{let{enableRenderingLog:U}=TU();return U},qZ=p;var _U="__piedemo__";var QZ=require("react"),lU=require("centrifuge");var OZ=A("@swarm.ing/pieui:centrifuge-cache",()=>new Map),VU=(U,Z)=>{if(!Z)return null;let $=`${U}::${Z}`,z=OZ.get($);if(z)return z;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 lU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let H=new lU.Centrifuge(Z,{getToken:T});return OZ.set($,H),H},g$=A("@swarm.ing/pieui:context:centrifuge",()=>QZ.createContext(null)),S=g$;var DZ=require("socket.io-client"),_Z=require("react");var WZ=A("@swarm.ing/pieui:socket-cache",()=>new Map),FU=(U)=>{let Z=WZ.get(U);if(Z)return Z;let $=DZ.io(U,{autoConnect:!1,transports:["websocket"]});return WZ.set(U,$),$},u$=A("@swarm.ing/pieui:context:socket",()=>_Z.createContext(null)),b=u$;var VZ=BZ(require("mitt")),r=require("react");function o(){return A("@swarm.ing/pieui:mitt-emitter",()=>VZ.default())}var FZ=A("@swarm.ing/pieui:context:mitt",()=>r.createContext(null));function KZ(U){let Z=r.useContext(FZ);return r.useCallback(($,z)=>{(Z??o()).emit(`pie${$}_${U}`,z)},[U,Z])}var v=FZ;function AZ(U){return U.wasRecovering===!0&&U.recovered===!1}function PZ(U){return U.recoverable===!1}function MZ(U,Z,$){let z=U.getSubscription(Z);if(z)return{subscription:z,createdHere:!1};return{subscription:U.newSubscription(Z,$),createdHere:!0}}var n=require("react/jsx-runtime"),d$=({card:U,data:Z,children:$,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:H=!1,centrifugeChannel:J=void 0,methods:G=void 0,stored:I=void 0,onResync:Y=void 0})=>{let D=qZ(),O=k.useRef(G);O.current=G;let V=k.useRef(Y);if(V.current=Y,D)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:z,centrifuge:T,mitt:H,centrifugeChannel:J}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!$);let B=k.useContext(b),q=k.useContext(S),_=k.useContext(v);if(k.useEffect(()=>{if(!B||!z||!O.current||!Z.name){if(D&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:z,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let P=Object.keys(O.current??{}).map((W)=>{let X=`pie${W}_${Z.name}`;if(D)console.log(`[PieCard] Socket.IO registering event: ${X}`);let Q=(x)=>{O.current?.[W]?.(x)};return B.on(X,Q),[X,Q]});return()=>{P.forEach(([W,X])=>{if(D)console.log(`[PieCard] Socket.IO unregistering event: ${W}`);B.off(W,X)})}},[B,Z.name,z]),k.useEffect(()=>{if(!q||!T||!J||!Z.name){if(D&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!q,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let P=Object.keys(O.current??{}).map((W)=>{let X=`pie${W}_${Z.name}_${J}`;if(D)console.log(`[PieCard] Centrifuge subscribing to channel: ${X}`);let{subscription:Q,createdHere:x}=MZ(q,X,{recoverable:!0,positioned:!0}),uU=(d)=>{if(D)console.log(`[PieCard] Centrifuge received data on ${X}:`,d.data);O.current?.[W]?.(d.data)},u=(d)=>{if(PZ(d))console.warn(`[PieCard] Centrifuge channel ${X} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(AZ(d)){if(D)console.log(`[PieCard] Centrifuge recovery gap on ${X}; requesting resync`);V.current?.({channel:X,reason:"gap"})}};return Q.on("publication",uU),Q.on("subscribed",u),Q.subscribe(),{subscription:Q,createdHere:x,onPublication:uU,onSubscribed:u}});return()=>{P.forEach(({subscription:W,createdHere:X,onPublication:Q,onSubscribed:x})=>{if(D)console.log("[PieCard] Centrifuge unsubscribing from channel");if(W.off("publication",Q),W.off("subscribed",x),X)W.unsubscribe(),q.removeSubscription(W)})}},[q,J,Z.name,T]),k.useEffect(()=>{if(!_||!H||!Z.name){if(D&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!_,useMittSupport:H,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let K=Object.keys(O.current??{}),P={};return K.forEach((W)=>{let X=`pie${W}_${Z.name}`,Q=(x)=>{if(D)console.log(`[PieCard] Mitt registering event: ${X}`);O.current?.[W]?.(x)};P[X]=Q,_.on(X,Q)}),()=>{Object.entries(P).forEach(([W,X])=>{if(D)console.log(`[PieCard] Mitt unregistering event: ${W}`);_.off(W,X)})}},[_,Z.name,H]),D)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return n.jsxs(n.Fragment,{children:[n.jsx("input",{type:"hidden",name:Z.name,value:JSON.stringify(I)}),$]});return $},M=d$;var RZ=require("react"),l=new Map;function LZ(U,Z){return Z.catch(()=>{if(l.get(U)===Z)l.delete(U)}),l.set(U,Z),Z}function KU(U,Z){return RZ.lazy(()=>{if(l.has(Z))return l.get(Z);return LZ(Z,U().then(($)=>$))})}var wZ=async(U,Z)=>{if(!Z)return;if(l.has(U))return l.get(U);return LZ(U,Z().then(($)=>$))};var y=A("@swarm.ing/pieui:component-registry",()=>new Map),c$=(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=KU(Z.loader,U.name),Z.isLazy=!0;return Z};function F(U){let Z=c$(U);return y.set(Z.name,Z),Z.component}var EZ=(U)=>{U.forEach((Z)=>F(Z))},jZ=(U)=>{y.delete(U)},CZ=(U)=>{return y.has(U)},fZ=(U)=>{return y.get(U)?.metadata},t=(U)=>{return y.get(U)},xZ=()=>{return Array.from(y.keys())},kZ=()=>{return y.size},iU=()=>Array.from(y.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),sU=(U)=>{let Z=y.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return wZ(U,Z.loader)},NZ=!1,yZ=()=>{if(NZ||typeof window>"u")return;NZ=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=iU(),$="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=Z.length)return;$(()=>{Promise.resolve().then(()=>sU(Z[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};var IU=require("react");var SZ=require("react");var AU=require("react/jsx-runtime"),o$=A("@swarm.ing/pieui:context:fallback",()=>SZ.createContext(AU.jsx(AU.Fragment,{}))),j=o$;var bZ=require("react");var l$=A("@swarm.ing/pieui:context:lazyError",()=>bZ.createContext(void 0)),h=l$;var PU=require("react"),vZ=require("react/jsx-runtime"),i$=2,s$=400;class a extends PU.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<i$){let Z=s$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.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 vZ.jsx(PU.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var MU=require("react/jsx-runtime");function r$({uiConfig:U,setUiAjaxConfiguration:Z}){let $=IU.useContext(j),z=IU.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 H=t(U.card);if(!H?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(T)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let J=H.component,G=MU.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(H.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",H.name);return MU.jsx(a,{name:H.name,fallback:H.fallback?MU.jsx(H.fallback,{}):$,onError:z,children:G})}if(T)console.log("[UI] Rendering component directly:",H.name);return G}var N=IU.memo(r$);var rU=require("react");var mZ=require("react");var n$=A("@swarm.ing/pieui:context:uiRenderer",()=>mZ.createContext(null)),C=n$;var GU=require("react/jsx-runtime");function pZ({uiConfig:U,setUiAjaxConfiguration:Z}){let $=rU.useContext(j),z=rU.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 H=t(U.card);if(!H?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(T)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(T)console.log("[UILoading] Rendering fallback for:",H.name);let I=H.fallback;return GU.jsx(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",H.name);let J=H.component,G=GU.jsx(C.Provider,{value:pZ,children:GU.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(H.isLazy)return GU.jsx(a,{name:H.name,fallback:$,onError:z,children:G});return G}var RU=pZ;var hZ=require("react");var LU=require("react/jsx-runtime"),t$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=hZ.useContext(C)??N;return LU.jsx(M,{card:z,data:U,children:LU.jsx("div",{style:T,id:z,children:Z.map((J,G)=>{return LU.jsx(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${G}`)})})})},gZ=t$;var uZ=F({name:"SequenceCard",component:gZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var dZ=require("react");var nU=require("react/jsx-runtime"),a$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z}=U,T=dZ.useContext(C)??N;return nU.jsx(M,{card:z,data:U,children:Z.map((H,J)=>{return nU.jsx(T,{uiConfig:H,setUiAjaxConfiguration:$},`children-${J}`)})})},cZ=a$;var oZ=F({name:"UnionCard",component:cZ,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var wU=require("react"),lZ=BZ(require("html-react-parser"));var f=require("react");function e$(){let U=new AudioContext,Z=U.createOscillator(),$=Z.connect(U.createMediaStreamDestination());Z.start();let z=$.stream.getAudioTracks()[0];return z.enabled=!1,z}function tU(U=null,Z){let[$,z]=f.useState(!1),T=f.useRef(null),H=f.useRef(null),J=f.useRef(null),G=f.useCallback(async(O,V=!0)=>{if(T.current)I();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))z(!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=e$();B.addTrack(Q)}let q=B.createDataChannel("oai-events");H.current=q,J.current=new Promise((Q)=>{q.addEventListener("open",()=>{Q()})});let _=await B.createOffer();await B.setLocalDescription(_);let X=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:_.sdp,headers:{Authorization:`Bearer ${O}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:X}),T.current=B,await J.current},[U]),I=f.useCallback(()=>{let O=H.current;if(O)O.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,H.current=null,J.current=null},[U]),Y=f.useCallback((O)=>{let V=H.current;if(!V){console.error("Data channel is not ready",O);return}let B=new Date().toLocaleTimeString();if(O.event_id=O.event_id||crypto.randomUUID(),V.send(JSON.stringify(O)),!O.timestamp)O.timestamp=B;Z?.(O)},[Z,U]),D=f.useCallback((O)=>{if(!H.current){console.error("Data channel is not ready");return}let B=()=>{Y({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:O}]}}),Y({type:"response.create"})};if(J.current)J.current.then(B);else B()},[Z,U]);return f.useEffect(()=>{let O=H.current;if(!O)return;let V=(B)=>{let q=JSON.parse(B.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();Z?.(q)};return O.addEventListener("message",V),()=>{O.removeEventListener("message",V)}},[Z,U]),{isSessionActive:$,startSession:G,stopSession:I,sendTextMessage:D}}var sZ=require("react/jsx-runtime"),Uz=({data:U})=>{let{html:Z,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:H}=U,[J,G]=wU.useState(Z),{isSessionActive:I,startSession:Y,sendTextMessage:D}=tU(null,(q)=>{if(console.log(q.type,q.type==="response.output_text.delta"&&q.delta),q.type==="response.output_text.delta"&&q.delta)G((_)=>_+q.delta)});return wU.useEffect(()=>{G(Z)},[Z]),sZ.jsx(M,{card:"HTMLEmbedCard",data:U,methods:{update:(q)=>{G(q.value)},generateUsingAI:async(q)=>{try{if(!I&&q.token)await Y(q.token,!1);D(q.prompt)}catch(_){console.error("Failed to generate using AI",_)}},initializeAI:async(q)=>{if(!I&&q.token)await Y(q.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:$,useMittSupport:T,centrifugeChannel:H,children:lZ.default(J)})},iZ=Uz;var rZ=F({name:"HTMLEmbedCard",component:iZ,metadata:{author:"Swarm.ing"}});var NU=require("react");var aU=require("react/jsx-runtime"),Zz=({data:U})=>{let{name:Z,value:$,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J}=U,[G,I]=NU.useState($);return NU.useEffect(()=>{I($)},[$]),aU.jsx(M,{card:"HiddenCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J,methods:{update:({value:Y})=>{I(Y)}},children:aU.jsx("input",{type:"hidden",id:Z,name:Z,value:G})})},nZ=Zz;var tZ=F({name:"HiddenCard",component:nZ,metadata:{author:"Swarm.ing"}});var XU=require("react");var aZ=require("react");var $z=A("@swarm.ing/pieui:context:navigate",()=>aZ.createContext(void 0)),m=$z;var EU=require("react/jsx-runtime"),zz=({data:U})=>{let{url:Z}=U,$=XU.useContext(m),z=XU.useContext(j);return XU.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else $?.(Z)},[Z,$]),EU.jsx(EU.Fragment,{children:z})},eZ=zz;var U$=F({name:"AutoRedirectCard",component:eZ,metadata:{author:"Swarm.ing"}});var g=require("react-toastify"),jU=require("react-toastify");var UU=require("react");var e=require("react/jsx-runtime"),Hz={bounce:g.Bounce,slide:g.Slide,zoom:g.Zoom,flip:g.Flip},Tz=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?Hz[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};jU.toast(U.message,Z)},Jz=(U)=>{console.log("Log event",U)},Iz=(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(z){console.error("[IOEventsCard] Failed to show notification",z)}},$=window.Notification.permission;if($==="granted"){Z();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")Z()})},Gz=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T}=U,H=UU.useContext(m),J=UU.useRef(H);J.current=H;let G=UU.useMemo(()=>({alert:Tz,log:Jz,push:Iz,redirect:(I)=>{if(I.to){let Y=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()},reload:(I)=>{if(I.to){let Y=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()}}),[]);return e.jsx(e.Fragment,{children:e.jsx(M,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T,methods:G,children:e.jsx(jU.ToastContainer,{})})})},Z$=Gz;var $$=F({name:"IOEventsCard",component:Z$,metadata:{author:"Swarm.ing"}});var YU=require("react");var eU=require("react/jsx-runtime"),Xz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G}=U,[I,Y]=YU.useState(z);return YU.useEffect(()=>{Y(z)},[z]),YU.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem($,I)},[$,I]),eU.jsx(M,{card:"SessionStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:D})=>{Y(D)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:eU.jsx("input",{type:"hidden",id:Z,name:Z,value:I})})},z$=Xz;var H$=F({name:"SessionStorageCard",component:z$,metadata:{author:"PieData"}});var BU=require("react");var UZ=require("react/jsx-runtime"),Yz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G}=U,[I,Y]=BU.useState(z);return BU.useEffect(()=>{Y(z)},[z]),BU.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem($,I)},[$,I]),UZ.jsx(M,{card:"DeviceStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:D})=>{Y(D)},remove:()=>{localStorage.removeItem($),Y("")}},children:UZ.jsx("input",{type:"hidden",id:Z,name:Z,value:I})})},T$=Yz;var J$=F({name:"DeviceStorageCard",component:T$,metadata:{author:"PieData"}});var E=require("react");var ZZ=require("react/jsx-runtime"),Bz=({data:U,content:Z})=>{let{useLoader:$,noReturn:z,returnType:T,useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I}=U,Y=E.useContext(j),D=E.useContext(C)??N,[O,V]=E.useState(!1),[B,q]=E.useState(null),_=E.useRef(Z),K=E.useContext(v),P=E.useCallback((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)_.current=Q;if(!z)q(Q)},[z]),W=E.useCallback((Q)=>{_.current=Q.content,q(Q.content)},[]),X=E.useCallback((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)for(let x of Q)K?.emit(x.name,x.data)},[z,K]);if(E.useEffect(()=>{q(Z),V(!1)},[Z]),!B&&$)return Y;return ZZ.jsx(M,{card:"AjaxGroupCard",data:U,methods:{changeContent:W},useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I,children:ZZ.jsx(D,{uiConfig:B??_.current,setUiAjaxConfiguration:T==="events"?X:P})})},I$=Bz;var G$=F({name:"AjaxGroupCard",component:I$,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var $Z=require("react");var CU=require("react/jsx-runtime"),qz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,url:T,sx:H}=U,J=$Z.useContext(m),G=$Z.useContext(C)??N;return CU.jsx(M,{card:z,data:U,children:CU.jsx("div",{style:H,id:z,onClick:(Y)=>{if(T)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:CU.jsx(G,{setUiAjaxConfiguration:$,uiConfig:Z})})})},X$=qz;var Y$=F({name:"BoxCard",component:X$,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var B$=require("react");var fU=require("react/jsx-runtime"),Oz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=B$.useContext(C)??N;return fU.jsx(M,{card:z,data:U,children:fU.jsx("div",{style:T,id:z,children:Z.map((J,G)=>{return fU.jsx(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${G}`)})})})},q$=Oz;var O$=F({name:"OneOfCard",component:q$,metadata:{author:"Swarm.ing",description:"Different variants"}});var ZU=require("react"),$U=require("@tanstack/react-query");var bU=require("react");var yU=require("react"),xU=new Map,kU=new Map;function SU(U,Z){let $=`${U}::${Z}`,z=U?xU.get($):void 0,[T,H]=yU.useState(z??null);return yU.useEffect(()=>{if(!U)return;if(xU.has($)){H(xU.get($));return}let J=kU.get($);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return xU.set($,I),kU.delete($),I}).catch((I)=>{throw kU.delete($),I}),kU.set($,J);let G=!1;return J.then((I)=>{if(!G)H(I)}).catch(()=>{}),()=>{G=!0}},[U,Z,$]),T}var Qz=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let $ of Z){let z=$.indexOf("=");if((z===-1?$:$.slice(0,z)).trim()===U){let H=z===-1?"":$.slice(z+1).trim();try{return decodeURIComponent(H)}catch{return H}}}return null},Wz={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:Qz,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let $=Z[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},Q$=Wz;var Dz={};function i(){return Dz}var W$=new Map;var D$=(U)=>{return W$.has(U)?W$.get(U):null};var _$,_z={isClient(){return!0},readSid(){return _$},setSid(U){_$=U},readWebStorage(U,Z){let $=i(),z=U==="local"?$.storage:$.sessionStorage;return z?z.getItem(Z):null},async readWebStorageAsync(U,Z){let $=i(),z=U==="local"?$.asyncStorage:$.asyncSessionStorage;if(z)return z.getItem(Z);let T=U==="local"?$.storage:$.sessionStorage;return T?T.getItem(Z):null},readCookie(U){let Z=i();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=i();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=i();return Z.getInput?Z.getInput(U):D$(U)},submitGlobalForm(){i().submitForm?.()}},V$=_z;var Vz=typeof navigator<"u"&&navigator.product==="ReactNative",Fz=Vz?V$:Q$,R=Fz;var qU=A("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function F$(){qU.resolve?.()}function zZ(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!qU.promise)qU.promise=new Promise((U)=>{qU.resolve=()=>{U()}});return qU.promise}var Kz=({children:U})=>{let Z=bU.useContext(b),$=WU(),z=SU($,"socketIO"),T=(H)=>{if(R.isClient())R.setSid(H.sid),F$(),console.log(`SocketIO initialized: ${R.readSid()}`)};return bU.useEffect(()=>{if(!Z)return;let H=()=>{console.log("SocketIO connected")},J=(G)=>{console.log(`SocketIO disconnected: ${G}`),Z.connect()};if(z)Z.on("pieinit",T),Z.on("connect",H),Z.on("disconnect",J),Z.connect();return()=>{if(z)Z.off("pieinit",T),Z.off("connect",H),Z.off("disconnect",J),Z.disconnect()}},[Z,z]),U},vU=Kz;var mU=require("react");var Az=({children:U})=>{let Z=mU.useContext(S),$=WU(),z=SU($,"centrifuge");return mU.useEffect(()=>{if(!Z)return;let T=()=>{console.log("Centrifuge connected")},H=(J)=>{console.log("Centrifuge disconnected:",J)};if(z)Z.on("connected",T),Z.on("disconnected",H),Z.connect();return()=>{if(z)Z.disconnect()}},[Z,z]),U},pU=Az;var P$=require("axios-date-transformer");var A$=require("react/jsx-runtime");function K$(U,Z,$){if(!Z)return $;let z=U.replace(/^\//,""),T=Z[z];if(!T)return $;return A$.jsx(RU,{uiConfig:T})}var L=require("react/jsx-runtime"),Pz=({location:U,fallback:Z,piecache:$,onError:z,queryOptions:T,disableGlobalForm:H})=>{let J=JU(),G=DU(),I=p(),Y=ZU.useMemo(()=>P$.createAxiosDateTransformer({baseURL:J||""}),[J]),D=ZU.useMemo(()=>o(),[]),O=ZU.useMemo(()=>J?FU(J):null,[J]),V=ZU.useMemo(()=>J?VU(J,G):null,[J,G]),{data:B,isLoading:q,error:_}=$U.useQuery({queryKey:["uiConfig",U.pathname+U.search,J],enabled:!!J,queryFn:async()=>{let P=new URLSearchParams(U.search);P.set("__pieroot","web");let W="/api/content"+U.pathname+"?"+P.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",W);let X=await Y.get(W,{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:",X.data);return X.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(P)=>Math.min(1000*2**P,30000),...T}),K=K$(U.pathname,$,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:",!!$);if(_){if(I)console.error("[PieRoot] Error fetching UI configuration:",_),console.error("[PieRoot] Error details:",{message:_.message,status:_.response?.status,data:_.response?.data});return z?.(_),K}if(q||!B){if(I)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!B});return K}if(I)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L.jsx(v.Provider,{value:D,children:L.jsx(b.Provider,{value:O,children:L.jsx(S.Provider,{value:V,children:L.jsx(j.Provider,{value:Z??L.jsx(L.Fragment,{}),children:L.jsx(vU,{children:L.jsx(pU,{children:H?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})})})})})})})})},Mz=(U)=>{let Z=ZU.useMemo(()=>new $U.QueryClient,[]),$=U.queryClient??Z;return L.jsx(m.Provider,{value:U.onNavigate,children:L.jsx(c.Provider,{value:U.config,children:L.jsx(h.Provider,{value:U.onError,children:L.jsx($U.QueryClientProvider,{client:$,children:L.jsx(Pz,{...U})})})})})},hU=Mz;var zU=require("react"),gU=require("@tanstack/react-query");var w=require("react/jsx-runtime"),Rz=({location:U,fallback:Z,children:$,disableGlobalForm:z})=>{let T=JU(),H=DU(),J=p(),G=zU.useMemo(()=>o(),[]),I=zU.useMemo(()=>T?FU(T):null,[T]),Y=zU.useMemo(()=>T?VU(T,H):null,[T,H]);if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",H),console.log("[PieRoot] Fallback provided:",!!Z);return w.jsx(v.Provider,{value:G,children:w.jsx(b.Provider,{value:I,children:w.jsx(S.Provider,{value:Y,children:w.jsx(j.Provider,{value:Z??w.jsx(w.Fragment,{}),children:w.jsx(vU,{children:w.jsx(pU,{children:z?$:w.jsx("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},Lz=(U)=>{let[Z]=zU.useState(()=>new gU.QueryClient),$=U.queryClient??Z;return w.jsx(m.Provider,{value:U.onNavigate,children:w.jsx(c.Provider,{value:U.config,children:w.jsx(h.Provider,{value:U.onError,children:w.jsx(gU.QueryClientProvider,{client:$,children:w.jsx(Rz,{...U})})})})})},M$=Lz;var R$=require("react");var HZ=require("react/jsx-runtime"),wz=HZ.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),Nz=({apiServer:U,pathname:Z="/",search:$="",centrifugeServer:z,fallback:T,enableRenderingLog:H=!1})=>{let J=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",G=R$.useMemo(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:H,pageProcessor:"web"}),[J,z,H]);return HZ.jsx(hU,{location:{pathname:Z,search:$},config:G,fallback:T??wz,onNavigate:(Y)=>{if(typeof window<"u")window.history.pushState(null,"",Y)}})},L$=Nz;var w$=require("react");var Ez=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],jz=new Set(["telegram:cloud","telegram:secure"]),OU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of Ez){let $=Z+":";if(U.startsWith($))return{source:Z,key:U.slice($.length)}}return{source:"dom",key:U}},TZ=(U,Z=!1)=>{let{source:$,key:z}=OU(U);if($==="sid"){let H=R.readSid();if(!H)throw Error("SocketIO isn't initialized properly");return[H]}if($==="localStorage"||$==="sessionStorage")try{let H=R.readWebStorage($==="localStorage"?"local":"session",z);if(H===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[H]}catch(H){if(Z)console.warn(`Failed to read ${$} key ${z}:`,H);return[]}if($==="cookie"){let H=R.readCookie(z);if(H===null){if(Z)console.warn(`No cookie found for key ${z}`);return[]}return[H]}if($==="url"){let H=R.readUrlParams(z);if(!H.length&&Z)console.warn(`No URL query param found for key ${z}`);return H}if(jz.has($)){if(Z)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=R.readDomInput(z);if(T===null){if(Z)console.warn(`No input found with name ${z}`);return[]}return T},Cz=(U,Z,$)=>{let z=window.Telegram?.WebApp,T=U==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,H=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if($)console.warn(`${H} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(Z,(G,I)=>{if(G){if($)console.warn(`Failed to read ${H} key ${Z}:`,G);J([]);return}if(I==null||I===""){if($)console.warn(`No ${H} value found for key ${Z}`);J([]);return}J([I])})}catch(G){if($)console.warn(`Failed to read ${H} key ${Z}:`,G);J([])}})},JZ=async(U,Z=!1)=>{let{source:$,key:z}=OU(U);if($==="telegram:cloud"||$==="telegram:secure")return Cz($,z,Z);if(($==="localStorage"||$==="sessionStorage")&&R.readWebStorageAsync)try{let T=await R.readWebStorageAsync($==="localStorage"?"local":"session",z);if(T===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[T]}catch(T){if(Z)console.warn(`Failed to read ${$} key ${z}:`,T);return[]}return TZ(U,Z)},fz=(U,Z={},$=[],z,T)=>{let H=T?.renderingLogEnabled??!1,J=T?.timeout,G=T?.retryPolicy,I=G?.maxRetries??0,Y=G?.baseDelay??1000,D=G?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",z,Z,$);return async(O={})=>{if(!R.isClient()){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!U){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await zZ();let B=new FormData;for(let[K,P]of Object.entries({...Z,...O}))B.append(K,P);for(let K of $){let{key:P}=OU(K);for(let W of await JZ(K,H))B.append(P,W)}let q=V+"api/ajax_content"+z;U(null);let _;for(let K=0;K<=I;K++){if(K>0){let X=Y*2**(K-1);if(H)console.log(`AJAX retry ${K}/${I} after ${X}ms`);await new Promise((Q)=>setTimeout(Q,X))}let P=J!=null?new AbortController:null,W=P&&setTimeout(()=>P.abort(),J);try{let X=await fetch(q,{method:"POST",body:B,signal:P?.signal});if(W)clearTimeout(W);if(!X.ok&&D.includes(X.status)&&K<I){_=Error(`HTTP ${X.status}`);continue}let x=(X.headers.get("content-type")||"").includes("application/json");if(!!X.body?.getReader&&!x){let u=X.body.getReader(),d=new TextDecoder,s="";while(!0){let{done:dU,value:k$}=await u.read();if(dU)break;s+=d.decode(k$,{stream:!0});let IZ=s.split(`
|
|
3
|
+
`);s=IZ.pop()??"";for(let y$ of IZ){let cU=y$.trim();if(!cU)continue;try{let S$=JSON.parse(cU);U([S$])}catch{if(H)console.warn("Failed to parse streamed line:",cU)}}}if(s.trim())try{let dU=JSON.parse(s);U([dU])}catch{if(H)console.warn("Failed to parse final streamed line:",s)}return{}}else{let u=await X.json();return U(u),u}}catch(X){if(W)clearTimeout(W);if(_=X,K<I)continue;if(H)console.error("AJAX request failed:",X);return U(null),X}}if(H)console.error("AJAX request failed after retries:",_);return U(null),_}},N$=(U,Z={},$=[],z,T)=>{let{apiServer:H,enableRenderingLog:J}=TU(),G=JSON.stringify(Z),I=JSON.stringify($),Y=JSON.stringify(T);return w$.useMemo(()=>fz(U,Z,$,z,{apiServer:H,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[U,G,I,z,H,J,Y])};var E$=require("clsx"),j$=require("tailwind-merge");function C$(...U){return j$.twMerge(E$.clsx(U))}var f$=()=>{R.submitGlobalForm()};var x$=(U,Z)=>`${U}${_U}${Z}`;
|
package/dist/native/index.esm.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
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(/ /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
|
-
`);
|
|
2
|
+
import{lazy as RJ}from"react";var g=new Map;function u$($,J){return J.catch(()=>{if(g.get($)===J)g.delete($)}),g.set($,J),J}function U$($,J){return RJ(()=>{if(g.has(J))return g.get(J);return u$(J,$().then((Z)=>Z))})}var d$=async($,J)=>{if(!J)return;if(g.has($))return g.get($);return u$($,J().then((Z)=>Z))};var V$=globalThis,T=($,J)=>{let Z=Symbol.for($);if(!(Z in V$))V$[Z]=J();return V$[Z]};var y=T("@swarm.ing/pieui:component-registry",()=>new Map),wJ=($)=>{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=U$(J.loader,$.name),J.isLazy=!0;return J};function t($){let J=wJ($);return y.set(J.name,J),J.component}var EJ=($)=>{$.forEach((J)=>t(J))},jJ=($)=>{y.delete($)},NJ=($)=>{return y.has($)},kJ=($)=>{return y.get($)?.metadata},o=($)=>{return y.get($)},yJ=()=>{return Array.from(y.keys())},xJ=()=>{return y.size},s$=()=>Array.from(y.values()).filter(($)=>$.isLazy&&typeof $.loader==="function").map(($)=>$.name),o$=($)=>{let J=y.get($);if(!J?.isLazy||typeof J.loader!=="function")return;return d$($,J.loader)},l$=!1,SJ=()=>{if(l$||typeof window>"u")return;l$=!0;let $=navigator.connection;if($?.saveData)return;if($?.effectiveType&&["slow-2g","2g"].includes($.effectiveType))return;let J=s$(),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(()=>o$(J[W])).catch(()=>{}).finally(()=>Y(W+1))})};Y(0)};import{useContext as YJ}from"react";import{Linking as KZ,Pressable as BZ,View as TZ}from"react-native";import{useContext as I$,useEffect as O$,useRef as ZJ}from"react";import{createContext as bJ,useContext as fJ}from"react";var d=T("@swarm.ing/pieui:context:pieConfig",()=>bJ(null)),i=()=>{let $=fJ(d);if(!$)throw Error("usePieConfig must be used within PieConfigProvider");return $},n=()=>{let{apiServer:$}=i();return $},e=n,$$=()=>{let{centrifugeServer:$}=i();return $};var S=()=>{let{enableRenderingLog:$}=i();return $},i$=S;var F$="__piedemo__";import{createContext as CJ}from"react";import{Centrifuge as n$}from"centrifuge";var r$=T("@swarm.ing/pieui:centrifuge-cache",()=>new Map),J$=($,J)=>{if(!J)return null;let Z=`${$}::${J}`,Y=r$.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 n$.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let X=new n$(J,{getToken:W});return r$.set(Z,X),X},vJ=T("@swarm.ing/pieui:context:centrifuge",()=>CJ(null)),b=vJ;import{io as hJ}from"socket.io-client";import{createContext as mJ}from"react";var a$=T("@swarm.ing/pieui:socket-cache",()=>new Map),Z$=($)=>{let J=a$.get($);if(J)return J;let Z=hJ($,{autoConnect:!1,transports:["websocket"]});return a$.set($,Z),Z},gJ=T("@swarm.ing/pieui:context:socket",()=>mJ(null)),f=gJ;import pJ from"mitt";import{createContext as cJ,useCallback as uJ,useContext as dJ}from"react";function l(){return T("@swarm.ing/pieui:mitt-emitter",()=>pJ())}var t$=T("@swarm.ing/pieui:context:mitt",()=>cJ(null));function lJ($){let J=dJ(t$);return uJ((Z,Y)=>{(J??l()).emit(`pie${Z}_${$}`,Y)},[$,J])}var C=t$;function e$($){return $.wasRecovering===!0&&$.recovered===!1}function $J($){return $.recoverable===!1}function JJ($,J,Z){let Y=$.getSubscription(J);if(Y)return{subscription:Y,createdHere:!1};return{subscription:$.newSubscription(J,Z),createdHere:!0}}import{jsx as iJ,jsxs as nJ,Fragment as oJ}from"react/jsx-runtime";var sJ=({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:_=void 0})=>{let K=i$(),M=ZJ(Q);M.current=Q;let w=ZJ(_);if(w.current=_,K)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=I$(f),L=I$(b),U=I$(C);if(O$(()=>{if(!I||!Y||!M.current||!J.name){if(K&&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((D)=>{let q=`pie${D}_${J.name}`;if(K)console.log(`[PieCard] Socket.IO registering event: ${q}`);let H=(k)=>{M.current?.[D]?.(k)};return I.on(q,H),[q,H]});return()=>{V.forEach(([D,q])=>{if(K)console.log(`[PieCard] Socket.IO unregistering event: ${D}`);I.off(D,q)})}},[I,J.name,Y]),O$(()=>{if(!L||!W||!z||!J.name){if(K&&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((D)=>{let q=`pie${D}_${J.name}_${z}`;if(K)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let{subscription:H,createdHere:k}=JJ(L,q,{recoverable:!0,positioned:!0}),K$=(m)=>{if(K)console.log(`[PieCard] Centrifuge received data on ${q}:`,m.data);M.current?.[D]?.(m.data)},h=(m)=>{if($J(m))console.warn(`[PieCard] Centrifuge channel ${q} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(e$(m)){if(K)console.log(`[PieCard] Centrifuge recovery gap on ${q}; requesting resync`);w.current?.({channel:q,reason:"gap"})}};return H.on("publication",K$),H.on("subscribed",h),H.subscribe(),{subscription:H,createdHere:k,onPublication:K$,onSubscribed:h}});return()=>{V.forEach(({subscription:D,createdHere:q,onPublication:H,onSubscribed:k})=>{if(K)console.log("[PieCard] Centrifuge unsubscribing from channel");if(D.off("publication",H),D.off("subscribed",k),q)D.unsubscribe(),L.removeSubscription(D)})}},[L,z,J.name,W]),O$(()=>{if(!U||!X||!J.name){if(K&&X)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!U,useMittSupport:X,hasMethods:!!M.current,hasDataName:!!J?.name});return}let B=Object.keys(M.current??{}),V={};return B.forEach((D)=>{let q=`pie${D}_${J.name}`,H=(k)=>{if(K)console.log(`[PieCard] Mitt registering event: ${q}`);M.current?.[D]?.(k)};V[q]=H,U.on(q,H)}),()=>{Object.entries(V).forEach(([D,q])=>{if(K)console.log(`[PieCard] Mitt unregistering event: ${D}`);U.off(D,q)})}},[U,J.name,X]),K)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return nJ(oJ,{children:[iJ("input",{type:"hidden",name:J.name,value:JSON.stringify(G)}),Z]});return Z},F=sJ;import{useContext as XJ,memo as QZ}from"react";import{createContext as rJ}from"react";import{jsx as eJ,Fragment as tJ}from"react/jsx-runtime";var aJ=T("@swarm.ing/pieui:context:fallback",()=>rJ(eJ(tJ,{}))),E=aJ;import{createContext as $Z}from"react";var JZ=T("@swarm.ing/pieui:context:lazyError",()=>$Z(void 0)),v=JZ;import{Component as ZZ,Suspense as XZ}from"react";import{jsx as zZ}from"react/jsx-runtime";var YZ=2,WZ=400;class s extends ZZ{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch($){if(this.props.onError?.($),this.state.attempt<YZ){let J=WZ*(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(XZ,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as M$}from"react/jsx-runtime";function GZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=XJ(E),Y=XJ(v),W=S();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=o($.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=M$(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J});if(X.isLazy){if(W)console.log("[UI] Rendering lazy component with Suspense:",X.name);return M$(s,{name:X.name,fallback:X.fallback?M$(X.fallback,{}):Z,onError:Y,children:Q})}if(W)console.log("[UI] Rendering component directly:",X.name);return Q}var P=QZ(GZ);import{createContext as _Z}from"react";var qZ=T("@swarm.ing/pieui:context:navigate",()=>_Z(void 0)),x=qZ;import{createContext as DZ}from"react";var HZ=T("@swarm.ing/pieui:context:uiRenderer",()=>DZ(null)),j=HZ;import{jsx as X$}from"react/jsx-runtime";var UZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),VZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,url:W,sx:X}=$,z=YJ(x),Q=YJ(j)??P,G=()=>{if(!W)return;if(UZ(W))KZ.openURL(W).catch(()=>{});else z?.(W)},_=X$(Q,{setUiAjaxConfiguration:Z,uiConfig:J});return X$(F,{card:Y,data:$,children:W?X$(BZ,{onPress:G,style:X,children:_}):X$(TZ,{style:X,children:_})})},A$=VZ;import{useContext as FZ}from"react";import{View as IZ}from"react-native";import{jsx as L$}from"react/jsx-runtime";var OZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,sx:W}=$,X=FZ(j)??P;return L$(F,{card:Y,data:$,children:L$(IZ,{style:W,children:J.map((z,Q)=>L$(X,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},P$=OZ;import{useContext as MZ}from"react";import{View as AZ}from"react-native";import{jsx as R$}from"react/jsx-runtime";var LZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,sx:W}=$,X=MZ(j)??P;return R$(F,{card:Y,data:$,children:R$(AZ,{style:W,children:J.map((z,Q)=>R$(X,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},w$=LZ;import{useEffect as WJ,useState as PZ}from"react";var Y$=new Map,p=($,J)=>{Y$.set($,J)},c=($)=>{Y$.delete($)},E$=($)=>{return Y$.has($)?Y$.get($):null};import{jsx as wZ}from"react/jsx-runtime";var RZ=({data:$})=>{let{name:J,value:Z,useSocketioSupport:Y,useCentrifugeSupport:W,useMittSupport:X,centrifugeChannel:z}=$,[Q,G]=PZ(Z);return WJ(()=>{G(Z)},[Z]),WJ(()=>{return p(J,[Q]),()=>c(J)},[J,Q]),wZ(F,{card:"HiddenCard",data:$,useSocketioSupport:Y,useCentrifugeSupport:W,useMittSupport:X,centrifugeChannel:z,methods:{update:({value:_})=>{G(_)}}})},j$=RZ;import{useEffect as zJ,useState as NZ}from"react";var W$={};function EZ($){W$={...W$,...$}}function R(){return W$}function jZ(){W$={}}import{jsx as yZ}from"react/jsx-runtime";var kZ=({data:$})=>{let{name:J,key:Z,value:Y,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q}=$,[G,_]=NZ(Y);return zJ(()=>{_(Y)},[Y]),zJ(()=>{return R().storage?.setItem?.(Z,G),p(J,[G]),()=>c(J)},[Z,J,G]),yZ(F,{card:"DeviceStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:K})=>{_(K)},remove:()=>{R().storage?.removeItem?.(Z),_("")}}})},N$=kZ;import{useEffect as QJ,useState as xZ}from"react";import{jsx as bZ}from"react/jsx-runtime";var SZ=({data:$})=>{let{name:J,key:Z,value:Y,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q}=$,[G,_]=xZ(Y);return QJ(()=>{_(Y)},[Y]),QJ(()=>{return R().sessionStorage?.setItem?.(Z,G),p(J,[G]),()=>c(J)},[Z,J,G]),bZ(F,{card:"SessionStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:K})=>{_(K)},remove:()=>{R().sessionStorage?.removeItem?.(Z),_("")}}})},k$=SZ;import{useContext as fZ,useMemo as CZ,useRef as vZ}from"react";import{Alert as hZ,Linking as mZ}from"react-native";import{jsx as cZ}from"react/jsx-runtime";var gZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),pZ=({data:$})=>{let{useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:Y,centrifugeChannel:W}=$,X=fZ(x),z=vZ(X);z.current=X;let Q=CZ(()=>{let G=(_)=>{if(!_)return;if(gZ(_))mZ.openURL(_).catch(()=>{});else z.current?.(_)};return{alert:(_)=>hZ.alert(String(_.title??""),String(_.message??"")),log:(_)=>console.log("Log event",_),push:(_)=>console.warn("[IOEventsCard] push notifications are not supported on native",_?.title),redirect:(_)=>G(_.to),reload:(_)=>G(_.to)}},[]);return cZ(F,{card:"IOEventsCard",data:$,useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:Y,centrifugeChannel:W,methods:Q})},y$=pZ;import{useEffect as uZ,useState as dZ}from"react";import{Text as lZ}from"react-native";import{jsx as GJ}from"react/jsx-runtime";var sZ=($)=>($??"").replace(/<[^>]*>/g,"").replace(/ /g," ").replace(/\s+/g," ").trim(),oZ=({data:$})=>{let{html:J,useSocketioSupport:Z,useCentrifugeSupport:Y,useMittSupport:W,centrifugeChannel:X}=$,[z,Q]=dZ(J);return uZ(()=>{Q(J)},[J]),GJ(F,{card:"HTMLEmbedCard",data:$,methods:{update:(G)=>Q(G.value)},useCentrifugeSupport:Y,useSocketioSupport:Z,useMittSupport:W,centrifugeChannel:X,children:GJ(lZ,{children:sZ(z)})})},x$=oZ;import{useContext as _J,useEffect as iZ}from"react";import{Linking as nZ}from"react-native";import{jsx as tZ,Fragment as aZ}from"react/jsx-runtime";var rZ=({data:$})=>{let{url:J}=$,Z=_J(x),Y=_J(E);return iZ(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(J))nZ.openURL(J).catch(()=>{});else Z?.(J)},[J,Z]),tZ(aZ,{children:Y})},S$=rZ;import{useContext as eZ}from"react";import{jsx as qJ}from"react/jsx-runtime";var $0=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y}=$,W=eZ(j)??P;return qJ(F,{card:Y,data:$,children:J.map((X,z)=>{return qJ(W,{uiConfig:X,setUiAjaxConfiguration:Z},`children-${z}`)})})},b$=$0;import{useCallback as f$,useContext as C$,useEffect as J0,useRef as Z0,useState as DJ}from"react";import{jsx as HJ}from"react/jsx-runtime";var X0=({data:$,content:J})=>{let{useLoader:Z,noReturn:Y,returnType:W,useSocketioSupport:X,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G}=$,_=C$(E),K=C$(j)??P,[M,w]=DJ(!1),[I,L]=DJ(null),U=Z0(J),B=C$(C),V=f$((H)=>{if(H===null)w(!0);else if(w(!1),!Y)U.current=H;if(!Y)L(H)},[Y]),D=f$((H)=>{U.current=H.content,L(H.content)},[]),q=f$((H)=>{if(H===null)w(!0);else if(w(!1),!Y)for(let k of H)B?.emit(k.name,k.data)},[Y,B]);if(J0(()=>{L(J),w(!1)},[J]),!I&&Z)return _;return HJ(F,{card:"AjaxGroupCard",data:$,methods:{changeContent:D},useSocketioSupport:X,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G,children:HJ(K,{uiConfig:I??U.current,setUiAjaxConfiguration:W==="events"?q:V})})},v$=X0;var Y0=[{name:"BoxCard",component:A$},{name:"SequenceCard",component:P$},{name:"OneOfCard",component:w$},{name:"HiddenCard",component:j$},{name:"DeviceStorageCard",component:N$},{name:"SessionStorageCard",component:k$},{name:"IOEventsCard",component:y$},{name:"HTMLEmbedCard",component:x$},{name:"AutoRedirectCard",component:S$},{name:"UnionCard",component:b$},{name:"AjaxGroupCard",component:v$}];for(let $ of Y0)t($);import{useMemo as m$,useState as F0}from"react";import{QueryClient as I0,QueryClientProvider as O0}from"@tanstack/react-query";import{useContext as H0,useEffect as K0}from"react";import{useEffect as W0,useState as z0}from"react";var z$=new Map,Q$=new Map;function G$($,J){let Z=`${$}::${J}`,Y=$?z$.get(Z):void 0,[W,X]=z0(Y??null);return W0(()=>{if(!$)return;if(z$.has(Z)){X(z$.get(Z));return}let z=Q$.get(Z);if(!z)z=fetch($+`api/support/${J}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return z$.set(Z,G),Q$.delete(Z),G}).catch((G)=>{throw Q$.delete(Z),G}),Q$.set(Z,z);let Q=!1;return z.then((G)=>{if(!Q)X(G)}).catch(()=>{}),()=>{Q=!0}},[$,J,Z]),W}var Q0=($)=>{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},G0={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:Q0,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()}},KJ=G0;var BJ,_0={isClient(){return!0},readSid(){return BJ},setSid($){BJ=$},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($):E$($)},submitGlobalForm(){R().submitForm?.()}},TJ=_0;var q0=typeof navigator<"u"&&navigator.product==="ReactNative",D0=q0?TJ:KJ,O=D0;var r=T("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function UJ(){r.resolve?.()}function h$(){if(!O.isClient())return Promise.resolve();if(O.readSid()!==void 0)return Promise.resolve();if(!r.promise)r.promise=new Promise(($)=>{r.resolve=()=>{$()}});return r.promise}var B0=({children:$})=>{let J=H0(f),Z=e(),Y=G$(Z,"socketIO"),W=(X)=>{if(O.isClient())O.setSid(X.sid),UJ(),console.log(`SocketIO initialized: ${O.readSid()}`)};return K0(()=>{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]),$},_$=B0;import{useContext as T0,useEffect as U0}from"react";var V0=({children:$})=>{let J=T0(b),Z=e(),Y=G$(Z,"centrifuge");return U0(()=>{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]),$},q$=V0;import{jsx as N,Fragment as L0}from"react/jsx-runtime";var M0=({location:$,fallback:J,children:Z,disableGlobalForm:Y})=>{let W=n(),X=$$(),z=S(),Q=m$(()=>l(),[]),G=m$(()=>W?Z$(W):null,[W]),_=m$(()=>W?J$(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 N(C.Provider,{value:Q,children:N(f.Provider,{value:G,children:N(b.Provider,{value:_,children:N(E.Provider,{value:J??N(L0,{}),children:N(_$,{children:N(q$,{children:Y?Z:N("form",{id:"piedata_global_form",action:W+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},A0=($)=>{let[J]=F0(()=>new I0),Z=$.queryClient??J;return N(x.Provider,{value:$.onNavigate,children:N(d.Provider,{value:$.config,children:N(v.Provider,{value:$.onError,children:N(O0,{client:Z,children:N(M0,{...$})})})})})},g$=A0;import{jsx as R0}from"react/jsx-runtime";var P0=($)=>{return R0(g$,{...$,disableGlobalForm:!0})},w0=P0;import{useMemo as a}from"react";import{QueryClient as j0,QueryClientProvider as N0,useQuery as k0}from"@tanstack/react-query";import{createAxiosDateTransformer as y0}from"axios-date-transformer";import{useContext as VJ}from"react";import{jsx as D$}from"react/jsx-runtime";function FJ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=VJ(E),Y=VJ(v),W=S();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=o($.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 D$(G,{})}if(W)console.log("[UILoading] No fallback, rendering full component:",X.name);let z=X.component,Q=D$(j.Provider,{value:FJ,children:D$(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J})});if(X.isLazy)return D$(s,{name:X.name,fallback:Z,onError:Y,children:Q});return Q}var p$=FJ;import{jsx as E0}from"react/jsx-runtime";function IJ($,J,Z){if(!J)return Z;let Y=$.replace(/^\//,""),W=J[Y];if(!W)return Z;return E0(p$,{uiConfig:W})}import{jsx as A,Fragment as b0}from"react/jsx-runtime";var x0=({location:$,fallback:J,piecache:Z,onError:Y,queryOptions:W,disableGlobalForm:X})=>{let z=n(),Q=$$(),G=S(),_=a(()=>y0({baseURL:z||""}),[z]),K=a(()=>l(),[]),M=a(()=>z?Z$(z):null,[z]),w=a(()=>z?J$(z,Q):null,[z,Q]),{data:I,isLoading:L,error:U}=k0({queryKey:["uiConfig",$.pathname+$.search,z],enabled:!!z,queryFn:async()=>{let V=new URLSearchParams($.search);V.set("__pieroot","web");let D="/api/content"+$.pathname+"?"+V.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",D);let q=await _.get(D,{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:",q.data);return q.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(V)=>Math.min(1000*2**V,30000),...W}),B=IJ($.pathname,Z,J);if(!z)return B??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),B}if(L||!I){if(G)console.log("[PieRoot] Loading state:",{isLoading:L,hasUiConfiguration:!!I});return B}if(G)console.log("[PieRoot] UI configuration loaded successfully:",I),console.log("[PieRoot] Rendering UI with configuration");return A(C.Provider,{value:K,children:A(f.Provider,{value:M,children:A(b.Provider,{value:w,children:A(E.Provider,{value:J??A(b0,{}),children:A(_$,{children:A(q$,{children:X?A(P,{uiConfig:I}):A("form",{id:"piedata_global_form",action:z+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:A(P,{uiConfig:I})})})})})})})})},S0=($)=>{let J=a(()=>new j0,[]),Z=$.queryClient??J;return A(x.Provider,{value:$.onNavigate,children:A(d.Provider,{value:$.config,children:A(v.Provider,{value:$.onError,children:A(N0,{client:Z,children:A(x0,{...$})})})})})},f0=S0;import{useMemo as C0}from"react";var v0=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],h0=new Set(["telegram:cloud","telegram:secure"]),H$=($)=>{if($==="sid")return{source:"sid",key:"sid"};for(let J of v0){let Z=J+":";if($.startsWith(Z))return{source:J,key:$.slice(Z.length)}}return{source:"dom",key:$}},OJ=($,J=!1)=>{let{source:Z,key:Y}=H$($);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(h0.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},m0=($,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([])}})},MJ=async($,J=!1)=>{let{source:Z,key:Y}=H$($);if(Z==="telegram:cloud"||Z==="telegram:secure")return m0(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 OJ($,J)},g0=($,J={},Z=[],Y,W)=>{let X=W?.renderingLogEnabled??!1,z=W?.timeout,Q=W?.retryPolicy,G=Q?.maxRetries??0,_=Q?.baseDelay??1000,K=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 w=W?.apiServer;if(!w){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 h$();let I=new FormData;for(let[B,V]of Object.entries({...J,...M}))I.append(B,V);for(let B of Z){let{key:V}=H$(B);for(let D of await MJ(B,X))I.append(V,D)}let L=w+"api/ajax_content"+Y;$(null);let U;for(let B=0;B<=G;B++){if(B>0){let q=_*2**(B-1);if(X)console.log(`AJAX retry ${B}/${G} after ${q}ms`);await new Promise((H)=>setTimeout(H,q))}let V=z!=null?new AbortController:null,D=V&&setTimeout(()=>V.abort(),z);try{let q=await fetch(L,{method:"POST",body:I,signal:V?.signal});if(D)clearTimeout(D);if(!q.ok&&K.includes(q.status)&&B<G){U=Error(`HTTP ${q.status}`);continue}let k=(q.headers.get("content-type")||"").includes("application/json");if(!!q.body?.getReader&&!k){let h=q.body.getReader(),m=new TextDecoder,u="";while(!0){let{done:B$,value:AJ}=await h.read();if(B$)break;u+=m.decode(AJ,{stream:!0});let c$=u.split(`
|
|
3
|
+
`);u=c$.pop()??"";for(let LJ of c$){let T$=LJ.trim();if(!T$)continue;try{let PJ=JSON.parse(T$);$([PJ])}catch{if(X)console.warn("Failed to parse streamed line:",T$)}}}if(u.trim())try{let B$=JSON.parse(u);$([B$])}catch{if(X)console.warn("Failed to parse final streamed line:",u)}return{}}else{let h=await q.json();return $(h),h}}catch(q){if(D)clearTimeout(D);if(U=q,B<G)continue;if(X)console.error("AJAX request failed:",q);return $(null),q}}if(X)console.error("AJAX request failed after retries:",U);return $(null),U}},p0=($,J={},Z=[],Y,W)=>{let{apiServer:X,enableRenderingLog:z}=i(),Q=JSON.stringify(J),G=JSON.stringify(Z),_=JSON.stringify(W);return C0(()=>g0($,J,Z,Y,{apiServer:X,renderingLogEnabled:z,timeout:W?.timeout,retryPolicy:W?.retryPolicy}),[$,Q,G,Y,X,z,_])};var c0=()=>{O.submitGlobalForm()};var u0=($,J)=>`${$}${F$}${J}`;export{lJ as usePieEmit,p0 as useAjaxSubmit,jJ as unregisterComponent,U$ as trackLazy,c0 as submitGlobalForm,p as setNativeField,jZ as resetNativeClientSources,y as registry,t as registerPieComponent,EJ as registerMultipleComponents,E$ as readNativeField,MJ as readAjaxKeyAsync,OJ as readAjaxKey,o$ as preloadComponent,SJ as prefetchLazyComponents,u0 as pieName,H$ as parseDepName,NJ as hasComponent,xJ as getRegistrySize,o as getRegistryEntry,R as getNativeClientConfig,s$ as getLazyComponentNames,l as getEmitter,kJ as getComponentMeta,yJ as getAllRegisteredComponents,EZ as configureNativeClientSources,c as clearNativeField,b$ as UnionCard,j as UIRendererContext,p$ as UILoading,P as UI,f as SocketIOContext,k$ as SessionStorageCard,P$ as SequenceCard,f0 as PieRoot,w0 as PieNativeRoot,d as PieConfigContext,F as PieCard,g$ as PieBaseRoot,F$ as PIEBREAK,w$ as OneOfCard,C as MittContext,y$ as IOEventsCard,j$ as HiddenCard,x$ as HTMLEmbedCard,E as FallbackContext,N$ as DeviceStorageCard,b as CentrifugeIOContext,A$ as BoxCard,S$ as AutoRedirectCard,v$ as AjaxGroupCard};
|
package/dist/native/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
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(/ /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
|
-
`);
|
|
2
|
+
var wZ=Object.create;var{getPrototypeOf:EZ,defineProperty:X$,getOwnPropertyNames:IJ,getOwnPropertyDescriptor:jZ}=Object,OJ=Object.prototype.hasOwnProperty;var NZ=($,J,Z)=>{Z=$!=null?wZ(EZ($)):{};let X=J||!$||!$.__esModule?X$(Z,"default",{value:$,enumerable:!0}):Z;for(let W of IJ($))if(!OJ.call(X,W))X$(X,W,{get:()=>$[W],enumerable:!0});return X},FJ=new WeakMap,kZ=($)=>{var J=FJ.get($),Z;if(J)return J;if(J=X$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function")IJ($).map((X)=>!OJ.call(J,X)&&X$(J,X,{get:()=>$[X],enumerable:!(Z=jZ($,X))||Z.enumerable}));return FJ.set($,J),J};var yZ=($,J)=>{for(var Z in J)X$($,Z,{get:J[Z],enumerable:!0,configurable:!0,set:(X)=>J[Z]=()=>X})};var O0={};yZ(O0,{usePieEmit:()=>gJ,useAjaxSubmit:()=>OZ,unregisterComponent:()=>wJ,trackLazy:()=>U$,submitGlobalForm:()=>MZ,setNativeField:()=>g,resetNativeClientSources:()=>JZ,registry:()=>x,registerPieComponent:()=>Y$,registerMultipleComponents:()=>RJ,readNativeField:()=>x$,readAjaxKeyAsync:()=>UJ,readAjaxKey:()=>TJ,preloadComponent:()=>QJ,prefetchLazyComponents:()=>yJ,pieName:()=>AZ,parseDepName:()=>T$,hasComponent:()=>EJ,getRegistrySize:()=>kJ,getRegistryEntry:()=>i,getNativeClientConfig:()=>R,getLazyComponentNames:()=>zJ,getEmitter:()=>s,getComponentMeta:()=>jJ,getAllRegisteredComponents:()=>NJ,configureNativeClientSources:()=>$Z,clearNativeField:()=>p,UnionCard:()=>u$,UIRendererContext:()=>N,UILoading:()=>JJ,UI:()=>P,SocketIOContext:()=>f,SessionStorageCard:()=>C$,SequenceCard:()=>j$,PieRoot:()=>FZ,PieNativeRoot:()=>HZ,PieConfigContext:()=>l,PieCard:()=>U,PieBaseRoot:()=>$J,PIEBREAK:()=>O$,OneOfCard:()=>k$,MittContext:()=>C,IOEventsCard:()=>h$,HiddenCard:()=>S$,HTMLEmbedCard:()=>g$,FallbackContext:()=>j,DeviceStorageCard:()=>f$,CentrifugeIOContext:()=>b,BoxCard:()=>w$,AutoRedirectCard:()=>p$,AjaxGroupCard:()=>d$});module.exports=kZ(O0);var MJ=require("react"),d=new Map;function AJ($,J){return J.catch(()=>{if(d.get($)===J)d.delete($)}),d.set($,J),J}function U$($,J){return MJ.lazy(()=>{if(d.has(J))return d.get(J);return AJ(J,$().then((Z)=>Z))})}var LJ=async($,J)=>{if(!J)return;if(d.has($))return d.get($);return AJ($,J().then((Z)=>Z))};var WJ=globalThis,T=($,J)=>{let Z=Symbol.for($);if(!(Z in WJ))WJ[Z]=J();return WJ[Z]};var x=T("@swarm.ing/pieui:component-registry",()=>new Map),xZ=($)=>{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=U$(J.loader,$.name),J.isLazy=!0;return J};function Y$($){let J=xZ($);return x.set(J.name,J),J.component}var RJ=($)=>{$.forEach((J)=>Y$(J))},wJ=($)=>{x.delete($)},EJ=($)=>{return x.has($)},jJ=($)=>{return x.get($)?.metadata},i=($)=>{return x.get($)},NJ=()=>{return Array.from(x.keys())},kJ=()=>{return x.size},zJ=()=>Array.from(x.values()).filter(($)=>$.isLazy&&typeof $.loader==="function").map(($)=>$.name),QJ=($)=>{let J=x.get($);if(!J?.isLazy||typeof J.loader!=="function")return;return LJ($,J.loader)},PJ=!1,yJ=()=>{if(PJ||typeof window>"u")return;PJ=!0;let $=navigator.connection;if($?.saveData)return;if($?.effectiveType&&["slow-2g","2g"].includes($.effectiveType))return;let J=zJ(),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(()=>QJ(J[W])).catch(()=>{}).finally(()=>X(W+1))})};X(0)};var _J=require("react"),t=require("react-native");var S=require("react");var V$=require("react");var l=T("@swarm.ing/pieui:context:pieConfig",()=>V$.createContext(null)),W$=()=>{let $=V$.useContext(l);if(!$)throw Error("usePieConfig must be used within PieConfigProvider");return $},z$=()=>{let{apiServer:$}=W$();return $},F$=z$,I$=()=>{let{centrifugeServer:$}=W$();return $};var h=()=>{let{enableRenderingLog:$}=W$();return $},xJ=h;var O$="__piedemo__";var bJ=require("react"),GJ=require("centrifuge");var SJ=T("@swarm.ing/pieui:centrifuge-cache",()=>new Map),M$=($,J)=>{if(!J)return null;let Z=`${$}::${J}`,X=SJ.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 GJ.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let Y=new GJ.Centrifuge(J,{getToken:W});return SJ.set(Z,Y),Y},SZ=T("@swarm.ing/pieui:context:centrifuge",()=>bJ.createContext(null)),b=SZ;var CJ=require("socket.io-client"),vJ=require("react");var fJ=T("@swarm.ing/pieui:socket-cache",()=>new Map),A$=($)=>{let J=fJ.get($);if(J)return J;let Z=CJ.io($,{autoConnect:!1,transports:["websocket"]});return fJ.set($,Z),Z},bZ=T("@swarm.ing/pieui:context:socket",()=>vJ.createContext(null)),f=bZ;var hJ=NZ(require("mitt")),n=require("react");function s(){return T("@swarm.ing/pieui:mitt-emitter",()=>hJ.default())}var mJ=T("@swarm.ing/pieui:context:mitt",()=>n.createContext(null));function gJ($){let J=n.useContext(mJ);return n.useCallback((Z,X)=>{(J??s()).emit(`pie${Z}_${$}`,X)},[$,J])}var C=mJ;function pJ($){return $.wasRecovering===!0&&$.recovered===!1}function cJ($){return $.recoverable===!1}function uJ($,J,Z){let X=$.getSubscription(J);if(X)return{subscription:X,createdHere:!1};return{subscription:$.newSubscription(J,Z),createdHere:!0}}var r=require("react/jsx-runtime"),fZ=({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:_=void 0})=>{let K=xJ(),A=S.useRef(Q);A.current=Q;let k=S.useRef(_);if(k.current=_,K)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=S.useContext(f),E=S.useContext(b),V=S.useContext(C);if(S.useEffect(()=>{if(!I||!X||!A.current||!J.name){if(K&&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((D)=>{let q=`pie${D}_${J.name}`;if(K)console.log(`[PieCard] Socket.IO registering event: ${q}`);let H=(y)=>{A.current?.[D]?.(y)};return I.on(q,H),[q,H]});return()=>{F.forEach(([D,q])=>{if(K)console.log(`[PieCard] Socket.IO unregistering event: ${D}`);I.off(D,q)})}},[I,J.name,X]),S.useEffect(()=>{if(!E||!W||!z||!J.name){if(K&&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((D)=>{let q=`pie${D}_${J.name}_${z}`;if(K)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let{subscription:H,createdHere:y}=uJ(E,q,{recoverable:!0,positioned:!0}),ZJ=(u)=>{if(K)console.log(`[PieCard] Centrifuge received data on ${q}:`,u.data);A.current?.[D]?.(u.data)},c=(u)=>{if(cJ(u))console.warn(`[PieCard] Centrifuge channel ${q} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(pJ(u)){if(K)console.log(`[PieCard] Centrifuge recovery gap on ${q}; requesting resync`);k.current?.({channel:q,reason:"gap"})}};return H.on("publication",ZJ),H.on("subscribed",c),H.subscribe(),{subscription:H,createdHere:y,onPublication:ZJ,onSubscribed:c}});return()=>{F.forEach(({subscription:D,createdHere:q,onPublication:H,onSubscribed:y})=>{if(K)console.log("[PieCard] Centrifuge unsubscribing from channel");if(D.off("publication",H),D.off("subscribed",y),q)D.unsubscribe(),E.removeSubscription(D)})}},[E,z,J.name,W]),S.useEffect(()=>{if(!V||!Y||!J.name){if(K&&Y)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!V,useMittSupport:Y,hasMethods:!!A.current,hasDataName:!!J?.name});return}let B=Object.keys(A.current??{}),F={};return B.forEach((D)=>{let q=`pie${D}_${J.name}`,H=(y)=>{if(K)console.log(`[PieCard] Mitt registering event: ${q}`);A.current?.[D]?.(y)};F[q]=H,V.on(q,H)}),()=>{Object.entries(F).forEach(([D,q])=>{if(K)console.log(`[PieCard] Mitt unregistering event: ${D}`);V.off(D,q)})}},[V,J.name,Y]),K)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return r.jsxs(r.Fragment,{children:[r.jsx("input",{type:"hidden",name:J.name,value:JSON.stringify(G)}),Z]});return Z},U=fZ;var Q$=require("react");var dJ=require("react");var L$=require("react/jsx-runtime"),CZ=T("@swarm.ing/pieui:context:fallback",()=>dJ.createContext(L$.jsx(L$.Fragment,{}))),j=CZ;var lJ=require("react");var vZ=T("@swarm.ing/pieui:context:lazyError",()=>lJ.createContext(void 0)),m=vZ;var P$=require("react"),sJ=require("react/jsx-runtime"),hZ=2,mZ=400;class a extends P$.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch($){if(this.props.onError?.($),this.state.attempt<hZ){let J=mZ*(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 sJ.jsx(P$.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var R$=require("react/jsx-runtime");function gZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=Q$.useContext(j),X=Q$.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=i($.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=R$.jsx(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J});if(Y.isLazy){if(W)console.log("[UI] Rendering lazy component with Suspense:",Y.name);return R$.jsx(a,{name:Y.name,fallback:Y.fallback?R$.jsx(Y.fallback,{}):Z,onError:X,children:Q})}if(W)console.log("[UI] Rendering component directly:",Y.name);return Q}var P=Q$.memo(gZ);var oJ=require("react");var pZ=T("@swarm.ing/pieui:context:navigate",()=>oJ.createContext(void 0)),v=pZ;var iJ=require("react");var cZ=T("@swarm.ing/pieui:context:uiRenderer",()=>iJ.createContext(null)),N=cZ;var G$=require("react/jsx-runtime"),uZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),dZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,url:W,sx:Y}=$,z=_J.useContext(v),Q=_J.useContext(N)??P,G=()=>{if(!W)return;if(uZ(W))t.Linking.openURL(W).catch(()=>{});else z?.(W)},_=G$.jsx(Q,{setUiAjaxConfiguration:Z,uiConfig:J});return G$.jsx(U,{card:X,data:$,children:W?G$.jsx(t.Pressable,{onPress:G,style:Y,children:_}):G$.jsx(t.View,{style:Y,children:_})})},w$=dZ;var nJ=require("react"),rJ=require("react-native");var E$=require("react/jsx-runtime"),lZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,sx:W}=$,Y=nJ.useContext(N)??P;return E$.jsx(U,{card:X,data:$,children:E$.jsx(rJ.View,{style:W,children:J.map((z,Q)=>E$.jsx(Y,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},j$=lZ;var aJ=require("react"),tJ=require("react-native");var N$=require("react/jsx-runtime"),sZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,sx:W}=$,Y=aJ.useContext(N)??P;return N$.jsx(U,{card:X,data:$,children:N$.jsx(tJ.View,{style:W,children:J.map((z,Q)=>N$.jsx(Y,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},k$=sZ;var _$=require("react");var y$=new Map,g=($,J)=>{y$.set($,J)},p=($)=>{y$.delete($)},x$=($)=>{return y$.has($)?y$.get($):null};var eJ=require("react/jsx-runtime"),oZ=({data:$})=>{let{name:J,value:Z,useSocketioSupport:X,useCentrifugeSupport:W,useMittSupport:Y,centrifugeChannel:z}=$,[Q,G]=_$.useState(Z);return _$.useEffect(()=>{G(Z)},[Z]),_$.useEffect(()=>{return g(J,[Q]),()=>p(J)},[J,Q]),eJ.jsx(U,{card:"HiddenCard",data:$,useSocketioSupport:X,useCentrifugeSupport:W,useMittSupport:Y,centrifugeChannel:z,methods:{update:({value:_})=>{G(_)}}})},S$=oZ;var q$=require("react");var b$={};function $Z($){b$={...b$,...$}}function R(){return b$}function JZ(){b$={}}var ZZ=require("react/jsx-runtime"),iZ=({data:$})=>{let{name:J,key:Z,value:X,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q}=$,[G,_]=q$.useState(X);return q$.useEffect(()=>{_(X)},[X]),q$.useEffect(()=>{return R().storage?.setItem?.(Z,G),g(J,[G]),()=>p(J)},[Z,J,G]),ZZ.jsx(U,{card:"DeviceStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:K})=>{_(K)},remove:()=>{R().storage?.removeItem?.(Z),_("")}}})},f$=iZ;var D$=require("react");var XZ=require("react/jsx-runtime"),nZ=({data:$})=>{let{name:J,key:Z,value:X,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q}=$,[G,_]=D$.useState(X);return D$.useEffect(()=>{_(X)},[X]),D$.useEffect(()=>{return R().sessionStorage?.setItem?.(Z,G),g(J,[G]),()=>p(J)},[Z,J,G]),XZ.jsx(U,{card:"SessionStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:K})=>{_(K)},remove:()=>{R().sessionStorage?.removeItem?.(Z),_("")}}})},C$=nZ;var e=require("react"),v$=require("react-native");var YZ=require("react/jsx-runtime"),rZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),aZ=({data:$})=>{let{useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:X,centrifugeChannel:W}=$,Y=e.useContext(v),z=e.useRef(Y);z.current=Y;let Q=e.useMemo(()=>{let G=(_)=>{if(!_)return;if(rZ(_))v$.Linking.openURL(_).catch(()=>{});else z.current?.(_)};return{alert:(_)=>v$.Alert.alert(String(_.title??""),String(_.message??"")),log:(_)=>console.log("Log event",_),push:(_)=>console.warn("[IOEventsCard] push notifications are not supported on native",_?.title),redirect:(_)=>G(_.to),reload:(_)=>G(_.to)}},[]);return YZ.jsx(U,{card:"IOEventsCard",data:$,useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:X,centrifugeChannel:W,methods:Q})},h$=aZ;var m$=require("react"),WZ=require("react-native");var qJ=require("react/jsx-runtime"),tZ=($)=>($??"").replace(/<[^>]*>/g,"").replace(/ /g," ").replace(/\s+/g," ").trim(),eZ=({data:$})=>{let{html:J,useSocketioSupport:Z,useCentrifugeSupport:X,useMittSupport:W,centrifugeChannel:Y}=$,[z,Q]=m$.useState(J);return m$.useEffect(()=>{Q(J)},[J]),qJ.jsx(U,{card:"HTMLEmbedCard",data:$,methods:{update:(G)=>Q(G.value)},useCentrifugeSupport:X,useSocketioSupport:Z,useMittSupport:W,centrifugeChannel:Y,children:qJ.jsx(WZ.Text,{children:tZ(z)})})},g$=eZ;var H$=require("react"),zZ=require("react-native");var c$=require("react/jsx-runtime"),$0=({data:$})=>{let{url:J}=$,Z=H$.useContext(v),X=H$.useContext(j);return H$.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(J))zZ.Linking.openURL(J).catch(()=>{});else Z?.(J)},[J,Z]),c$.jsx(c$.Fragment,{children:X})},p$=$0;var QZ=require("react");var DJ=require("react/jsx-runtime"),J0=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X}=$,W=QZ.useContext(N)??P;return DJ.jsx(U,{card:X,data:$,children:J.map((Y,z)=>{return DJ.jsx(W,{uiConfig:Y,setUiAjaxConfiguration:Z},`children-${z}`)})})},u$=J0;var w=require("react");var HJ=require("react/jsx-runtime"),Z0=({data:$,content:J})=>{let{useLoader:Z,noReturn:X,returnType:W,useSocketioSupport:Y,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G}=$,_=w.useContext(j),K=w.useContext(N)??P,[A,k]=w.useState(!1),[I,E]=w.useState(null),V=w.useRef(J),B=w.useContext(C),F=w.useCallback((H)=>{if(H===null)k(!0);else if(k(!1),!X)V.current=H;if(!X)E(H)},[X]),D=w.useCallback((H)=>{V.current=H.content,E(H.content)},[]),q=w.useCallback((H)=>{if(H===null)k(!0);else if(k(!1),!X)for(let y of H)B?.emit(y.name,y.data)},[X,B]);if(w.useEffect(()=>{E(J),k(!1)},[J]),!I&&Z)return _;return HJ.jsx(U,{card:"AjaxGroupCard",data:$,methods:{changeContent:D},useSocketioSupport:Y,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G,children:HJ.jsx(K,{uiConfig:I??V.current,setUiAjaxConfiguration:W==="events"?q:F})})},d$=Z0;var X0=[{name:"BoxCard",component:w$},{name:"SequenceCard",component:j$},{name:"OneOfCard",component:k$},{name:"HiddenCard",component:S$},{name:"DeviceStorageCard",component:f$},{name:"SessionStorageCard",component:C$},{name:"IOEventsCard",component:h$},{name:"HTMLEmbedCard",component:g$},{name:"AutoRedirectCard",component:p$},{name:"UnionCard",component:u$},{name:"AjaxGroupCard",component:d$}];for(let $ of X0)Y$($);var $$=require("react"),e$=require("@tanstack/react-query");var n$=require("react");var o$=require("react"),l$=new Map,s$=new Map;function i$($,J){let Z=`${$}::${J}`,X=$?l$.get(Z):void 0,[W,Y]=o$.useState(X??null);return o$.useEffect(()=>{if(!$)return;if(l$.has(Z)){Y(l$.get(Z));return}let z=s$.get(Z);if(!z)z=fetch($+`api/support/${J}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return l$.set(Z,G),s$.delete(Z),G}).catch((G)=>{throw s$.delete(Z),G}),s$.set(Z,z);let Q=!1;return z.then((G)=>{if(!Q)Y(G)}).catch(()=>{}),()=>{Q=!0}},[$,J,Z]),W}var Y0=($)=>{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},W0={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:Y0,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()}},GZ=W0;var _Z,z0={isClient(){return!0},readSid(){return _Z},setSid($){_Z=$},readWebStorage($,J){let Z=R(),X=$==="local"?Z.storage:Z.sessionStorage;return X?X.getItem(J):null},async readWebStorageAsync($,J){let Z=R(),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=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($):x$($)},submitGlobalForm(){R().submitForm?.()}},qZ=z0;var Q0=typeof navigator<"u"&&navigator.product==="ReactNative",G0=Q0?qZ:GZ,O=G0;var K$=T("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function DZ(){K$.resolve?.()}function KJ(){if(!O.isClient())return Promise.resolve();if(O.readSid()!==void 0)return Promise.resolve();if(!K$.promise)K$.promise=new Promise(($)=>{K$.resolve=()=>{$()}});return K$.promise}var _0=({children:$})=>{let J=n$.useContext(f),Z=F$(),X=i$(Z,"socketIO"),W=(Y)=>{if(O.isClient())O.setSid(Y.sid),DZ(),console.log(`SocketIO initialized: ${O.readSid()}`)};return n$.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]),$},r$=_0;var a$=require("react");var q0=({children:$})=>{let J=a$.useContext(b),Z=F$(),X=i$(Z,"centrifuge");return a$.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]),$},t$=q0;var L=require("react/jsx-runtime"),D0=({location:$,fallback:J,children:Z,disableGlobalForm:X})=>{let W=z$(),Y=I$(),z=h(),Q=$$.useMemo(()=>s(),[]),G=$$.useMemo(()=>W?A$(W):null,[W]),_=$$.useMemo(()=>W?M$(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(b.Provider,{value:_,children:L.jsx(j.Provider,{value:J??L.jsx(L.Fragment,{}),children:L.jsx(r$,{children:L.jsx(t$,{children:X?Z:L.jsx("form",{id:"piedata_global_form",action:W+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},H0=($)=>{let[J]=$$.useState(()=>new e$.QueryClient),Z=$.queryClient??J;return L.jsx(v.Provider,{value:$.onNavigate,children:L.jsx(l.Provider,{value:$.config,children:L.jsx(m.Provider,{value:$.onError,children:L.jsx(e$.QueryClientProvider,{client:Z,children:L.jsx(D0,{...$})})})})})},$J=H0;var KZ=require("react/jsx-runtime"),K0=($)=>{return KZ.jsx($J,{...$,disableGlobalForm:!0})},HZ=K0;var J$=require("react"),Z$=require("@tanstack/react-query");var VZ=require("axios-date-transformer");var BJ=require("react");var B$=require("react/jsx-runtime");function BZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=BJ.useContext(j),X=BJ.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=i($.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 B$.jsx(G,{})}if(W)console.log("[UILoading] No fallback, rendering full component:",Y.name);let z=Y.component,Q=B$.jsx(N.Provider,{value:BZ,children:B$.jsx(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J})});if(Y.isLazy)return B$.jsx(a,{name:Y.name,fallback:Z,onError:X,children:Q});return Q}var JJ=BZ;var UZ=require("react/jsx-runtime");function TZ($,J,Z){if(!J)return Z;let X=$.replace(/^\//,""),W=J[X];if(!W)return Z;return UZ.jsx(JJ,{uiConfig:W})}var M=require("react/jsx-runtime"),B0=({location:$,fallback:J,piecache:Z,onError:X,queryOptions:W,disableGlobalForm:Y})=>{let z=z$(),Q=I$(),G=h(),_=J$.useMemo(()=>VZ.createAxiosDateTransformer({baseURL:z||""}),[z]),K=J$.useMemo(()=>s(),[]),A=J$.useMemo(()=>z?A$(z):null,[z]),k=J$.useMemo(()=>z?M$(z,Q):null,[z,Q]),{data:I,isLoading:E,error:V}=Z$.useQuery({queryKey:["uiConfig",$.pathname+$.search,z],enabled:!!z,queryFn:async()=>{let F=new URLSearchParams($.search);F.set("__pieroot","web");let D="/api/content"+$.pathname+"?"+F.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",D);let q=await _.get(D,{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:",q.data);return q.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(F)=>Math.min(1000*2**F,30000),...W}),B=TZ($.pathname,Z,J);if(!z)return B??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),B}if(E||!I){if(G)console.log("[PieRoot] Loading state:",{isLoading:E,hasUiConfiguration:!!I});return B}if(G)console.log("[PieRoot] UI configuration loaded successfully:",I),console.log("[PieRoot] Rendering UI with configuration");return M.jsx(C.Provider,{value:K,children:M.jsx(f.Provider,{value:A,children:M.jsx(b.Provider,{value:k,children:M.jsx(j.Provider,{value:J??M.jsx(M.Fragment,{}),children:M.jsx(r$,{children:M.jsx(t$,{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})})})})})})})})},T0=($)=>{let J=J$.useMemo(()=>new Z$.QueryClient,[]),Z=$.queryClient??J;return M.jsx(v.Provider,{value:$.onNavigate,children:M.jsx(l.Provider,{value:$.config,children:M.jsx(m.Provider,{value:$.onError,children:M.jsx(Z$.QueryClientProvider,{client:Z,children:M.jsx(B0,{...$})})})})})},FZ=T0;var IZ=require("react");var U0=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],V0=new Set(["telegram:cloud","telegram:secure"]),T$=($)=>{if($==="sid")return{source:"sid",key:"sid"};for(let J of U0){let Z=J+":";if($.startsWith(Z))return{source:J,key:$.slice(Z.length)}}return{source:"dom",key:$}},TJ=($,J=!1)=>{let{source:Z,key:X}=T$($);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(V0.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},F0=($,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([])}})},UJ=async($,J=!1)=>{let{source:Z,key:X}=T$($);if(Z==="telegram:cloud"||Z==="telegram:secure")return F0(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 TJ($,J)},I0=($,J={},Z=[],X,W)=>{let Y=W?.renderingLogEnabled??!1,z=W?.timeout,Q=W?.retryPolicy,G=Q?.maxRetries??0,_=Q?.baseDelay??1000,K=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 k=W?.apiServer;if(!k){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 KJ();let I=new FormData;for(let[B,F]of Object.entries({...J,...A}))I.append(B,F);for(let B of Z){let{key:F}=T$(B);for(let D of await UJ(B,Y))I.append(F,D)}let E=k+"api/ajax_content"+X;$(null);let V;for(let B=0;B<=G;B++){if(B>0){let q=_*2**(B-1);if(Y)console.log(`AJAX retry ${B}/${G} after ${q}ms`);await new Promise((H)=>setTimeout(H,q))}let F=z!=null?new AbortController:null,D=F&&setTimeout(()=>F.abort(),z);try{let q=await fetch(E,{method:"POST",body:I,signal:F?.signal});if(D)clearTimeout(D);if(!q.ok&&K.includes(q.status)&&B<G){V=Error(`HTTP ${q.status}`);continue}let y=(q.headers.get("content-type")||"").includes("application/json");if(!!q.body?.getReader&&!y){let c=q.body.getReader(),u=new TextDecoder,o="";while(!0){let{done:XJ,value:LZ}=await c.read();if(XJ)break;o+=u.decode(LZ,{stream:!0});let VJ=o.split(`
|
|
3
|
+
`);o=VJ.pop()??"";for(let PZ of VJ){let YJ=PZ.trim();if(!YJ)continue;try{let RZ=JSON.parse(YJ);$([RZ])}catch{if(Y)console.warn("Failed to parse streamed line:",YJ)}}}if(o.trim())try{let XJ=JSON.parse(o);$([XJ])}catch{if(Y)console.warn("Failed to parse final streamed line:",o)}return{}}else{let c=await q.json();return $(c),c}}catch(q){if(D)clearTimeout(D);if(V=q,B<G)continue;if(Y)console.error("AJAX request failed:",q);return $(null),q}}if(Y)console.error("AJAX request failed after retries:",V);return $(null),V}},OZ=($,J={},Z=[],X,W)=>{let{apiServer:Y,enableRenderingLog:z}=W$(),Q=JSON.stringify(J),G=JSON.stringify(Z),_=JSON.stringify(W);return IZ.useMemo(()=>I0($,J,Z,X,{apiServer:Y,renderingLogEnabled:z,timeout:W?.timeout,retryPolicy:W?.retryPolicy}),[$,Q,G,X,Y,z,_])};var MZ=()=>{O.submitGlobalForm()};var AZ=($,J)=>`${$}${O$}${J}`;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
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};
|
|
2
|
+
import{useMemo as C}from"react";import{QueryClient as C$,QueryClientProvider as y$,useQuery as f$}from"@tanstack/react-query";import SU from"mitt";import{createContext as mU,useCallback as UI,useContext as $I}from"react";var o=globalThis,_=(U,$)=>{let I=Symbol.for(U);if(!(I in o))o[I]=$();return o[I]};function $U(){return _("@swarm.ing/pieui:mitt-emitter",()=>SU())}var gU=_("@swarm.ing/pieui:context:mitt",()=>mU(null));var f=gU;import{io as hU}from"socket.io-client";import{createContext as pU}from"react";var IU=_("@swarm.ing/pieui:socket-cache",()=>new Map),JU=(U)=>{let $=IU.get(U);if($)return $;let I=hU(U,{autoConnect:!1,transports:["websocket"]});return IU.set(U,I),I},dU=_("@swarm.ing/pieui:context:socket",()=>pU(null)),R=dU;import{createContext as lU}from"react";import{Centrifuge as ZU}from"centrifuge";var XU=_("@swarm.ing/pieui:centrifuge-cache",()=>new Map),YU=(U,$)=>{if(!$)return null;let I=`${U}::${$}`,Z=XU.get(I);if(Z)return Z;async function X(){let Y=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!Y.ok){if(Y.status===401||Y.status===403)throw new ZU.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Y.status}`)}return(await Y.json()).token}let J=new ZU($,{getToken:X});return XU.set(I,J),J},cU=_("@swarm.ing/pieui:context:centrifuge",()=>lU(null)),j=cU;import{useContext as I$,useEffect as J$}from"react";import{useEffect as uU,useState as oU}from"react";var b=new Map,v=new Map;function S(U,$){let I=`${U}::${$}`,Z=U?b.get(I):void 0,[X,J]=oU(Z??null);return uU(()=>{if(!U)return;if(b.has(I)){J(b.get(I));return}let Y=v.get(I);if(!Y)Y=fetch(U+`api/support/${$}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return b.set(I,G),v.delete(I),G}).catch((G)=>{throw v.delete(I),G}),v.set(I,Y);let H=!1;return Y.then((G)=>{if(!H)J(G)}).catch(()=>{}),()=>{H=!0}},[U,$,I]),X}import{createContext as sU,useContext as nU}from"react";var s=_("@swarm.ing/pieui:context:pieConfig",()=>sU(null)),m=()=>{let U=nU(s);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},n=()=>{let{apiServer:U}=m();return U},g=n,zU=()=>{let{centrifugeServer:U}=m();return U};var A=()=>{let{enableRenderingLog:U}=m();return U},GU=A,BU=()=>{let{pageProcessor:U}=m();return U};var iU=(U)=>{let $=document.cookie?document.cookie.split(";"):[];for(let I of $){let Z=I.indexOf("=");if((Z===-1?I:I.slice(0,Z)).trim()===U){let J=Z===-1?"":I.slice(Z+1).trim();try{return decodeURIComponent(J)}catch{return J}}}return null},rU={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:iU,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let $=document.getElementsByName(U);if(!$.length)return null;let I=$[0];if(I instanceof HTMLInputElement){if(I.type==="file"&&I.files)return Array.from(I.files);return[I.value]}if(I instanceof HTMLTextAreaElement)return[I.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},HU=rU;var aU={};function E(){return aU}var QU=new Map;var _U=(U)=>{return QU.has(U)?QU.get(U):null};var DU,tU={isClient(){return!0},readSid(){return DU},setSid(U){DU=U},readWebStorage(U,$){let I=E(),Z=U==="local"?I.storage:I.sessionStorage;return Z?Z.getItem($):null},async readWebStorageAsync(U,$){let I=E(),Z=U==="local"?I.asyncStorage:I.asyncSessionStorage;if(Z)return Z.getItem($);let X=U==="local"?I.storage:I.sessionStorage;return X?X.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):_U(U)},submitGlobalForm(){E().submitForm?.()}},FU=tU;var eU=typeof navigator<"u"&&navigator.product==="ReactNative",U$=eU?FU:HU,h=U$;var $$=_("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function TU(){$$.resolve?.()}var Z$=({children:U})=>{let $=I$(R),I=g(),Z=S(I,"socketIO"),X=(J)=>{if(h.isClient())h.setSid(J.sid),TU(),console.log(`SocketIO initialized: ${h.readSid()}`)};return J$(()=>{if(!$)return;let J=()=>{console.log("SocketIO connected")},Y=(H)=>{console.log(`SocketIO disconnected: ${H}`),$.connect()};if(Z)$.on("pieinit",X),$.on("connect",J),$.on("disconnect",Y),$.connect();return()=>{if(Z)$.off("pieinit",X),$.off("connect",J),$.off("disconnect",Y),$.disconnect()}},[$,Z]),U},KU=Z$;import{useContext as X$,useEffect as Y$}from"react";var z$=({children:U})=>{let $=X$(j),I=g(),Z=S(I,"centrifuge");return Y$(()=>{if(!$)return;let X=()=>{console.log("Centrifuge connected")},J=(Y)=>{console.log("Centrifuge disconnected:",Y)};if(Z)$.on("connected",X),$.on("disconnected",J),$.connect();return()=>{if(Z)$.disconnect()}},[$,Z]),U},LU=z$;import{createContext as G$}from"react";import{jsx as Q$,Fragment as H$}from"react/jsx-runtime";var B$=_("@swarm.ing/pieui:context:fallback",()=>G$(Q$(H$,{}))),P=B$;import{createContext as _$}from"react";var D$=_("@swarm.ing/pieui:context:lazyError",()=>_$(void 0)),N=D$;import{lazy as F$}from"react";var k=new Map;function T$(U,$){return $.catch(()=>{if(k.get(U)===$)k.delete(U)}),k.set(U,$),$}function qU(U,$){return F$(()=>{if(k.has($))return k.get($);return T$($,U().then((I)=>I))})}var WU=_("@swarm.ing/pieui:component-registry",()=>new Map),K$=(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=qU($.loader,U.name),$.isLazy=!0;return $};function p(U){let $=K$(U);return WU.set($.name,$),$.component}var d=(U)=>{return WU.get(U)};import{useContext as OU,memo as M$}from"react";import{Component as L$,Suspense as q$}from"react";import{jsx as V$}from"react/jsx-runtime";var W$=2,O$=400;class w extends L${state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<W$){let $=O$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.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 V$(q$,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as i}from"react/jsx-runtime";function A$({uiConfig:U,setUiAjaxConfiguration:$}){let I=OU(P),Z=OU(N),X=A();if(X)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=d(U.card);if(!J?.component){if(X)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return I}if(X)console.log("[UI] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata});let Y=J.component,H=i(Y,{data:U.data,content:U.content,setUiAjaxConfiguration:$});if(J.isLazy){if(X)console.log("[UI] Rendering lazy component with Suspense:",J.name);return i(w,{name:J.name,fallback:J.fallback?i(J.fallback,{}):I,onError:Z,children:H})}if(X)console.log("[UI] Rendering component directly:",J.name);return H}var r=M$(A$);import{createAxiosDateTransformer as b$}from"axios-date-transformer";import{useEffect as E$,useState as R$}from"react";var l=({onError:U}={})=>{let[$,I]=R$(null),Z=BU();return E$(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp;if(!X)return;try{X.ready?.()}catch(J){U?.()}if(Z==="telegram_expanded"&&(X.platform==="ios"||X.platform==="android"))X.expand();I(X)},[]),$},j$=()=>{let U=l();return[U?.initDataUnsafe,U?.initData]};import{createContext as P$}from"react";var N$=_("@swarm.ing/pieui:context:navigate",()=>P$(void 0)),VU=N$;import{useContext as AU}from"react";import{createContext as w$}from"react";var x$=_("@swarm.ing/pieui:context:uiRenderer",()=>w$(null)),MU=x$;import{jsx as c}from"react/jsx-runtime";function EU({uiConfig:U,setUiAjaxConfiguration:$}){let I=AU(P),Z=AU(N),X=A();if(X)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=d(U.card);if(!J?.component){if(X)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return I}if(X)console.log("[UILoading] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata,hasFallback:!!J.fallback});if(J.fallback){if(X)console.log("[UILoading] Rendering fallback for:",J.name);let G=J.fallback;return c(G,{})}if(X)console.log("[UILoading] No fallback, rendering full component:",J.name);let Y=J.component,H=c(MU.Provider,{value:EU,children:c(Y,{data:U.data,content:U.content,setUiAjaxConfiguration:$})});if(J.isLazy)return c(w,{name:J.name,fallback:I,onError:Z,children:H});return H}var RU=EU;import{jsx as k$}from"react/jsx-runtime";function jU(U,$,I){if(!$)return I;let Z=U.replace(/^\//,""),X=$[Z];if(!X)return I;return k$(RU,{uiConfig:X})}import{jsx as F,Fragment as m$}from"react/jsx-runtime";var v$=({location:U,fallback:$,piecache:I,onError:Z,queryOptions:X,disableGlobalForm:J})=>{let Y=n(),H=zU(),G=A(),K=C(()=>b$({baseURL:Y}),[Y]),z=C(()=>$U(),[]),T=C(()=>Y?JU(Y):null,[Y]),y=C(()=>Y?YU(Y,H):null,[Y,H]),q=l({onError:Z}),{data:L,isLoading:V,error:W}=f$({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 Q="/api/content"+U.pathname+"?"+B.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",Q);let D=await K.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:",D.data);return D.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(B)=>Math.min(1000*2**B,30000),...X}),O=jU(U.pathname,I,$);if(!Y)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(W&&G)return console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data}),Z?.(W),O;if(V||!L){if(G)console.log("[PieRoot] Loading state:",{isLoading:V,hasUiConfiguration:!!L});return O}if(G)console.log("[PieRoot] UI configuration loaded successfully:",L),console.log("[PieRoot] Rendering UI with configuration");return F(f.Provider,{value:z,children:F(R.Provider,{value:T,children:F(j.Provider,{value:y,children:F(P.Provider,{value:$??F(m$,{}),children:F(KU,{children:F(LU,{children:J?F(r,{uiConfig:L}):F("form",{id:"piedata_global_form",action:Y+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:F(r,{uiConfig:L})})})})})})})})},S$=(U)=>{let $=C(()=>new C$,[]),I=U.queryClient??$;return F(VU.Provider,{value:U.onNavigate,children:F(s.Provider,{value:U.config,children:F(N.Provider,{value:U.onError,children:F(y$,{client:I,children:F(v$,{...U})})})})})},g$=S$;import{useEffect as kU,useState as c$}from"react";import{useContext as a,useEffect as t,useRef as xU}from"react";function PU(U){return U.wasRecovering===!0&&U.recovered===!1}function NU(U){return U.recoverable===!1}function wU(U,$,I){let Z=U.getSubscription($);if(Z)return{subscription:Z,createdHere:!1};return{subscription:U.newSubscription($,I),createdHere:!0}}import{jsx as d$,jsxs as l$,Fragment as p$}from"react/jsx-runtime";var h$=({card:U,data:$,children:I,useSocketioSupport:Z=!1,useCentrifugeSupport:X=!1,useMittSupport:J=!1,centrifugeChannel:Y=void 0,methods:H=void 0,stored:G=void 0,onResync:K=void 0})=>{let z=GU(),T=xU(H);T.current=H;let y=xU(K);if(y.current=K,z)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:X,mitt:J,centrifugeChannel:Y}),console.log("[PieCard] Methods:",H?Object.keys(H):"none"),console.log("[PieCard] Has children:",!!I);let q=a(R),L=a(j),V=a(f);if(t(()=>{if(!q||!Z||!T.current||!$.name){if(z&&Z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!q,useSocketioSupport:Z,hasMethods:!!T.current,hasDataName:!!$?.name});return}let O=Object.keys(T.current??{}).map((B)=>{let Q=`pie${B}_${$.name}`;if(z)console.log(`[PieCard] Socket.IO registering event: ${Q}`);let D=(M)=>{T.current?.[B]?.(M)};return q.on(Q,D),[Q,D]});return()=>{O.forEach(([B,Q])=>{if(z)console.log(`[PieCard] Socket.IO unregistering event: ${B}`);q.off(B,Q)})}},[q,$.name,Z]),t(()=>{if(!L||!X||!Y||!$.name){if(z&&X)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:X,hasCentrifugeChannel:!!Y,hasMethods:!!T.current,hasDataName:!!$?.name});return}let O=Object.keys(T.current??{}).map((B)=>{let Q=`pie${B}_${$.name}_${Y}`;if(z)console.log(`[PieCard] Centrifuge subscribing to channel: ${Q}`);let{subscription:D,createdHere:M}=wU(L,Q,{recoverable:!0,positioned:!0}),e=(x)=>{if(z)console.log(`[PieCard] Centrifuge received data on ${Q}:`,x.data);T.current?.[B]?.(x.data)},UU=(x)=>{if(NU(x))console.warn(`[PieCard] Centrifuge channel ${Q} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(PU(x)){if(z)console.log(`[PieCard] Centrifuge recovery gap on ${Q}; requesting resync`);y.current?.({channel:Q,reason:"gap"})}};return D.on("publication",e),D.on("subscribed",UU),D.subscribe(),{subscription:D,createdHere:M,onPublication:e,onSubscribed:UU}});return()=>{O.forEach(({subscription:B,createdHere:Q,onPublication:D,onSubscribed:M})=>{if(z)console.log("[PieCard] Centrifuge unsubscribing from channel");if(B.off("publication",D),B.off("subscribed",M),Q)B.unsubscribe(),L.removeSubscription(B)})}},[L,Y,$.name,X]),t(()=>{if(!V||!J||!$.name){if(z&&J)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!V,useMittSupport:J,hasMethods:!!T.current,hasDataName:!!$?.name});return}let W=Object.keys(T.current??{}),O={};return W.forEach((B)=>{let Q=`pie${B}_${$.name}`,D=(M)=>{if(z)console.log(`[PieCard] Mitt registering event: ${Q}`);T.current?.[B]?.(M)};O[Q]=D,V.on(Q,D)}),()=>{Object.entries(O).forEach(([B,Q])=>{if(z)console.log(`[PieCard] Mitt unregistering event: ${B}`);V.off(B,Q)})}},[V,$.name,J]),z)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return l$(p$,{children:[d$("input",{type:"hidden",name:$.name,value:JSON.stringify(G)}),I]});return I},u=h$;import{jsx as CU}from"react/jsx-runtime";var u$=({data:U})=>{let{name:$,key:I,value:Z,useSocketioSupport:X,useCentrifugeSupport:J,useMittSupport:Y,centrifugeChannel:H}=U,[G,K]=c$(Z);return kU(()=>{K(Z)},[Z]),kU(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp?.CloudStorage;if(!z)return;z.setItem(I,G)},[I,G]),CU(u,{card:"CloudStorageCard",data:U,useSocketioSupport:X,useCentrifugeSupport:J,useMittSupport:Y,centrifugeChannel:H,methods:{update:({value:z})=>{K(z)},remove:()=>{let z=window.Telegram?.WebApp?.CloudStorage;if(z)z.removeItem(I);K("")}},children:CU("input",{type:"hidden",id:$,name:$,value:G})})},yU=u$;var o$=p({name:"CloudStorageCard",component:yU,metadata:{author:"PieData"}});import{useEffect as fU,useState as s$}from"react";import{jsx as bU}from"react/jsx-runtime";var n$=({data:U})=>{let{name:$,key:I,value:Z,useSocketioSupport:X,useCentrifugeSupport:J,useMittSupport:Y,centrifugeChannel:H}=U,[G,K]=s$(Z);return fU(()=>{K(Z)},[Z]),fU(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp?.SecureStorage;if(!z)return;z.setItem(I,G)},[I,G]),bU(u,{card:"SecureStorageCard",data:U,useSocketioSupport:X,useCentrifugeSupport:J,useMittSupport:Y,centrifugeChannel:H,methods:{update:({value:z})=>{K(z)},remove:()=>{let z=window.Telegram?.WebApp?.SecureStorage;if(z)z.removeItem(I);K("")}},children:bU("input",{type:"hidden",id:$,name:$,value:G})})},vU=n$;var i$=p({name:"SecureStorageCard",component:vU,metadata:{author:"PieData"}});export{l as useWebApp,j$ as useInitData,i$ as SecureStorageCard,g$ as PieTelegramRoot,o$ as CloudStorageCard};
|
package/dist/telegram/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var Y$=Object.create;var{getPrototypeOf:z$,defineProperty:y,getOwnPropertyNames:KU,getOwnPropertyDescriptor:G$}=Object,LU=Object.prototype.hasOwnProperty;var B$=(U,$,H)=>{H=U!=null?Y$(z$(U)):{};let I=$||!U||!U.__esModule?y(H,"default",{value:U,enumerable:!0}):H;for(let Z of KU(U))if(!LU.call(I,Z))y(I,Z,{get:()=>U[Z],enumerable:!0});return I},TU=new WeakMap,Q$=(U)=>{var $=TU.get(U),H;if($)return $;if($=y({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")KU(U).map((I)=>!LU.call($,I)&&y($,I,{get:()=>U[I],enumerable:!(H=G$(U,I))||H.enumerable}));return TU.set(U,$),$};var _$=(U,$)=>{for(var H in $)y(U,H,{get:$[H],enumerable:!0,configurable:!0,set:(I)=>$[H]=()=>I})};var g$={};_$(g$,{useWebApp:()=>S,useInitData:()=>lU,SecureStorageCard:()=>X$,PieTelegramRoot:()=>U$,CloudStorageCard:()=>J$});module.exports=Q$(g$);var k=require("react"),b=require("@tanstack/react-query");var qU=B$(require("mitt")),d=require("react");var YU=globalThis,Q=(U,$)=>{let H=Symbol.for(U);if(!(H in YU))YU[H]=$();return YU[H]};function OU(){return Q("@swarm.ing/pieui:mitt-emitter",()=>qU.default())}var D$=Q("@swarm.ing/pieui:context:mitt",()=>d.createContext(null));var c=D$;var VU=require("socket.io-client"),MU=require("react");var WU=Q("@swarm.ing/pieui:socket-cache",()=>new Map),AU=(U)=>{let $=WU.get(U);if($)return $;let H=VU.io(U,{autoConnect:!1,transports:["websocket"]});return WU.set(U,H),H},F$=Q("@swarm.ing/pieui:context:socket",()=>MU.createContext(null)),P=F$;var RU=require("react"),zU=require("centrifuge");var EU=Q("@swarm.ing/pieui:centrifuge-cache",()=>new Map),PU=(U,$)=>{if(!$)return null;let H=`${U}::${$}`,I=EU.get(H);if(I)return I;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 zU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${X.status}`)}return(await X.json()).token}let J=new zU.Centrifuge($,{getToken:Z});return EU.set(H,J),J},T$=Q("@swarm.ing/pieui:context:centrifuge",()=>RU.createContext(null)),j=T$;var t=require("react");var o=require("react"),l=new Map,u=new Map;function s(U,$){let H=`${U}::${$}`,I=U?l.get(H):void 0,[Z,J]=o.useState(I??null);return o.useEffect(()=>{if(!U)return;if(l.has(H)){J(l.get(H));return}let X=u.get(H);if(!X)X=fetch(U+`api/support/${$}`,{method:"GET"}).then((z)=>z.json()).then((z)=>{return l.set(H,z),u.delete(H),z}).catch((z)=>{throw u.delete(H),z}),u.set(H,X);let G=!1;return X.then((z)=>{if(!G)J(z)}).catch(()=>{}),()=>{G=!0}},[U,$,H]),Z}var n=require("react");var GU=Q("@swarm.ing/pieui:context:pieConfig",()=>n.createContext(null)),i=()=>{let U=n.useContext(GU);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},BU=()=>{let{apiServer:U}=i();return U},r=BU,jU=()=>{let{centrifugeServer:U}=i();return U};var E=()=>{let{enableRenderingLog:U}=i();return U},NU=E,wU=()=>{let{pageProcessor:U}=i();return U};var K$=(U)=>{let $=document.cookie?document.cookie.split(";"):[];for(let H of $){let I=H.indexOf("=");if((I===-1?H:H.slice(0,I)).trim()===U){let J=I===-1?"":H.slice(I+1).trim();try{return decodeURIComponent(J)}catch{return J}}}return null},L$={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:K$,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=L$;var q$={};function R(){return q$}var kU=new Map;var bU=(U)=>{return kU.has(U)?kU.get(U):null};var fU,O$={isClient(){return!0},readSid(){return fU},setSid(U){fU=U},readWebStorage(U,$){let H=R(),I=U==="local"?H.storage:H.sessionStorage;return I?I.getItem($):null},async readWebStorageAsync(U,$){let H=R(),I=U==="local"?H.asyncStorage:H.asyncSessionStorage;if(I)return I.getItem($);let Z=U==="local"?H.storage:H.sessionStorage;return Z?Z.getItem($):null},readCookie(U){let $=R();return $.getCookie?$.getCookie(U):null},readUrlParams(U){let $=R();return $.getRouteParams?$.getRouteParams(U):[]},readDomInput(U){let $=R();return $.getInput?$.getInput(U):bU(U)},submitGlobalForm(){R().submitForm?.()}},yU=O$;var W$=typeof navigator<"u"&&navigator.product==="ReactNative",V$=W$?yU:xU,a=V$;var M$=Q("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function CU(){M$.resolve?.()}var A$=({children:U})=>{let $=t.useContext(P),H=r(),I=s(H,"socketIO"),Z=(J)=>{if(a.isClient())a.setSid(J.sid),CU(),console.log(`SocketIO initialized: ${a.readSid()}`)};return t.useEffect(()=>{if(!$)return;let J=()=>{console.log("SocketIO connected")},X=(G)=>{console.log(`SocketIO disconnected: ${G}`),$.connect()};if(I)$.on("pieinit",Z),$.on("connect",J),$.on("disconnect",X),$.connect();return()=>{if(I)$.off("pieinit",Z),$.off("connect",J),$.off("disconnect",X),$.disconnect()}},[$,I]),U},vU=A$;var e=require("react");var E$=({children:U})=>{let $=e.useContext(j),H=r(),I=s(H,"centrifuge");return e.useEffect(()=>{if(!$)return;let Z=()=>{console.log("Centrifuge connected")},J=(X)=>{console.log("Centrifuge disconnected:",X)};if(I)$.on("connected",Z),$.on("disconnected",J),$.connect();return()=>{if(I)$.disconnect()}},[$,I]),U},SU=E$;var mU=require("react");var UU=require("react/jsx-runtime"),R$=Q("@swarm.ing/pieui:context:fallback",()=>mU.createContext(UU.jsx(UU.Fragment,{}))),N=R$;var gU=require("react");var P$=Q("@swarm.ing/pieui:context:lazyError",()=>gU.createContext(void 0)),w=P$;var hU=require("react"),C=new Map;function j$(U,$){return $.catch(()=>{if(C.get(U)===$)C.delete(U)}),C.set(U,$),$}function pU(U,$){return hU.lazy(()=>{if(C.has($))return C.get($);return j$($,U().then((H)=>H))})}var dU=Q("@swarm.ing/pieui:component-registry",()=>new Map),N$=(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=pU($.loader,U.name),$.isLazy=!0;return $};function $U(U){let $=N$(U);return dU.set($.name,$),$.component}var HU=(U)=>{return dU.get(U)};var v=require("react");var IU=require("react"),cU=require("react/jsx-runtime"),w$=2,x$=400;class x extends IU.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<w$){let $=x$*(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 cU.jsx(IU.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var JU=require("react/jsx-runtime");function k$({uiConfig:U,setUiAjaxConfiguration:$}){let H=v.useContext(N),I=v.useContext(w),Z=E();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 J=HU(U.card);if(!J?.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:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata});let X=J.component,G=JU.jsx(X,{data:U.data,content:U.content,setUiAjaxConfiguration:$});if(J.isLazy){if(Z)console.log("[UI] Rendering lazy component with Suspense:",J.name);return JU.jsx(x,{name:J.name,fallback:J.fallback?JU.jsx(J.fallback,{}):H,onError:I,children:G})}if(Z)console.log("[UI] Rendering component directly:",J.name);return G}var QU=v.memo(k$);var eU=require("axios-date-transformer");var ZU=require("react");var S=({onError:U}={})=>{let[$,H]=ZU.useState(null),I=wU();return ZU.useEffect(()=>{if(typeof window>"u")return;let Z=window.Telegram?.WebApp;if(!Z)return;try{Z.ready?.()}catch(J){U?.()}if(I==="telegram_expanded"&&(Z.platform==="ios"||Z.platform==="android"))Z.expand();H(Z)},[]),$},lU=()=>{let U=S();return[U?.initDataUnsafe,U?.initData]};var uU=require("react");var b$=Q("@swarm.ing/pieui:context:navigate",()=>uU.createContext(void 0)),oU=b$;var _U=require("react");var sU=require("react");var f$=Q("@swarm.ing/pieui:context:uiRenderer",()=>sU.createContext(null)),nU=f$;var m=require("react/jsx-runtime");function iU({uiConfig:U,setUiAjaxConfiguration:$}){let H=_U.useContext(N),I=_U.useContext(w),Z=E();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 J=HU(U.card);if(!J?.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:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata,hasFallback:!!J.fallback});if(J.fallback){if(Z)console.log("[UILoading] Rendering fallback for:",J.name);let z=J.fallback;return m.jsx(z,{})}if(Z)console.log("[UILoading] No fallback, rendering full component:",J.name);let X=J.component,G=m.jsx(nU.Provider,{value:iU,children:m.jsx(X,{data:U.data,content:U.content,setUiAjaxConfiguration:$})});if(J.isLazy)return m.jsx(x,{name:J.name,fallback:H,onError:I,children:G});return G}var rU=iU;var tU=require("react/jsx-runtime");function aU(U,$,H){if(!$)return H;let I=U.replace(/^\//,""),Z=$[I];if(!Z)return H;return tU.jsx(rU,{uiConfig:Z})}var D=require("react/jsx-runtime"),y$=({location:U,fallback:$,piecache:H,onError:I,queryOptions:Z,disableGlobalForm:J})=>{let X=BU(),G=jU(),z=E(),K=k.useMemo(()=>eU.createAxiosDateTransformer({baseURL:X}),[X]),Y=k.useMemo(()=>OU(),[]),F=k.useMemo(()=>X?AU(X):null,[X]),p=k.useMemo(()=>X?PU(X,G):null,[X,G]),O=S({onError:I}),{data:L,isLoading:A,error:W}=b.useQuery({queryKey:["uiConfig",U.pathname+U.search,O?.initData],enabled:!!O?.initData,queryFn:async()=>{let B=new URLSearchParams(U.search);if(B.set("__pieroot","telegram"),O?.initData)B.set("initData",O.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}),V=aU(U.pathname,H,$);if(!X)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(W&&z)return console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data}),I?.(W),V;if(A||!L){if(z)console.log("[PieRoot] Loading state:",{isLoading:A,hasUiConfiguration:!!L});return V}if(z)console.log("[PieRoot] UI configuration loaded successfully:",L),console.log("[PieRoot] Rendering UI with configuration");return D.jsx(c.Provider,{value:Y,children:D.jsx(P.Provider,{value:F,children:D.jsx(j.Provider,{value:p,children:D.jsx(N.Provider,{value:$??D.jsx(D.Fragment,{}),children:D.jsx(vU,{children:D.jsx(SU,{children:J?D.jsx(QU,{uiConfig:L}):D.jsx("form",{id:"piedata_global_form",action:X+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:D.jsx(QU,{uiConfig:L})})})})})})})})},C$=(U)=>{let $=k.useMemo(()=>new b.QueryClient,[]),H=U.queryClient??$;return D.jsx(oU.Provider,{value:U.onNavigate,children:D.jsx(GU.Provider,{value:U.config,children:D.jsx(w.Provider,{value:U.onError,children:D.jsx(b.QueryClientProvider,{client:H,children:D.jsx(y$,{...U})})})})})},U$=C$;var g=require("react");var q=require("react");function $$(U){return U.wasRecovering===!0&&U.recovered===!1}function H$(U){return U.recoverable===!1}var f=require("react/jsx-runtime"),v$=({card:U,data:$,children:H,useSocketioSupport:I=!1,useCentrifugeSupport:Z=!1,useMittSupport:J=!1,centrifugeChannel:X=void 0,methods:G=void 0,stored:z=void 0,onResync:K=void 0})=>{let Y=NU(),F=q.useRef(G);F.current=G;let p=q.useRef(K);if(p.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:I,centrifuge:Z,mitt:J,centrifugeChannel:X}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!H);let O=q.useContext(P),L=q.useContext(j),A=q.useContext(c);if(q.useEffect(()=>{if(!O||!I||!F.current||!$.name){if(Y&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!O,useSocketioSupport:I,hasMethods:!!F.current,hasDataName:!!$?.name});return}let V=Object.keys(F.current??{}).map((B)=>{let _=`pie${B}_${$.name}`;if(Y)console.log(`[PieCard] Socket.IO registering event: ${_}`);let T=(M)=>{F.current?.[B]?.(M)};return O.on(_,T),[_,T]});return()=>{V.forEach(([B,_])=>{if(Y)console.log(`[PieCard] Socket.IO unregistering event: ${B}`);O.off(B,_)})}},[O,$.name,I]),q.useEffect(()=>{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 V=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",(M)=>{if(Y)console.log(`[PieCard] Centrifuge received data on ${_}:`,M.data);F.current?.[B]?.(M.data)}),T.on("subscribed",(M)=>{if(H$(M))console.warn(`[PieCard] Centrifuge channel ${_} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if($$(M)){if(Y)console.log(`[PieCard] Centrifuge recovery gap on ${_}; requesting resync`);p.current?.({channel:_,reason:"gap"})}}),T.subscribe(),T});return()=>{V.forEach((B)=>{if(Y)console.log("[PieCard] Centrifuge unsubscribing from channel");B.unsubscribe(),L.removeSubscription(B)})}},[L,X,$.name,Z]),q.useEffect(()=>{if(!A||!J||!$.name){if(Y&&J)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!A,useMittSupport:J,hasMethods:!!F.current,hasDataName:!!$?.name});return}let W=Object.keys(F.current??{}),V={};return W.forEach((B)=>{let _=`pie${B}_${$.name}`,T=(M)=>{if(Y)console.log(`[PieCard] Mitt registering event: ${_}`);F.current?.[B]?.(M)};V[_]=T,A.on(_,T)}),()=>{Object.entries(V).forEach(([B,_])=>{if(Y)console.log(`[PieCard] Mitt unregistering event: ${B}`);A.off(B,_)})}},[A,$.name,J]),Y)console.log("[PieCard] Rendering complete, returning children");if(z!==void 0)return f.jsxs(f.Fragment,{children:[f.jsx("input",{type:"hidden",name:$.name,value:JSON.stringify(z)}),H]});return H},XU=v$;var DU=require("react/jsx-runtime"),S$=({data:U})=>{let{name:$,key:H,value:I,useSocketioSupport:Z,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G}=U,[z,K]=g.useState(I);return g.useEffect(()=>{K(I)},[I]),g.useEffect(()=>{if(typeof window>"u")return;let Y=window.Telegram?.WebApp?.CloudStorage;if(!Y)return;Y.setItem(H,z)},[H,z]),DU.jsx(XU,{card:"CloudStorageCard",data:U,useSocketioSupport:Z,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G,methods:{update:({value:Y})=>{K(Y)},remove:()=>{let Y=window.Telegram?.WebApp?.CloudStorage;if(Y)Y.removeItem(H);K("")}},children:DU.jsx("input",{type:"hidden",id:$,name:$,value:z})})},I$=S$;var J$=$U({name:"CloudStorageCard",component:I$,metadata:{author:"PieData"}});var h=require("react");var FU=require("react/jsx-runtime"),m$=({data:U})=>{let{name:$,key:H,value:I,useSocketioSupport:Z,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G}=U,[z,K]=h.useState(I);return h.useEffect(()=>{K(I)},[I]),h.useEffect(()=>{if(typeof window>"u")return;let Y=window.Telegram?.WebApp?.SecureStorage;if(!Y)return;Y.setItem(H,z)},[H,z]),FU.jsx(XU,{card:"SecureStorageCard",data:U,useSocketioSupport:Z,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G,methods:{update:({value:Y})=>{K(Y)},remove:()=>{let Y=window.Telegram?.WebApp?.SecureStorage;if(Y)Y.removeItem(H);K("")}},children:FU.jsx("input",{type:"hidden",id:$,name:$,value:z})})},Z$=m$;var X$=$U({name:"SecureStorageCard",component:Z$,metadata:{author:"PieData"}});
|
|
2
|
+
var Q$=Object.create;var{getPrototypeOf:_$,defineProperty:b,getOwnPropertyNames:WU,getOwnPropertyDescriptor:D$}=Object,OU=Object.prototype.hasOwnProperty;var F$=(U,$,I)=>{I=U!=null?Q$(_$(U)):{};let J=$||!U||!U.__esModule?b(I,"default",{value:U,enumerable:!0}):I;for(let X of WU(U))if(!OU.call(J,X))b(J,X,{get:()=>U[X],enumerable:!0});return J},qU=new WeakMap,T$=(U)=>{var $=qU.get(U),I;if($)return $;if($=b({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")WU(U).map((J)=>!OU.call($,J)&&b($,J,{get:()=>U[J],enumerable:!(I=D$(U,J))||I.enumerable}));return qU.set(U,$),$};var K$=(U,$)=>{for(var I in $)b(U,I,{get:$[I],enumerable:!0,configurable:!0,set:(J)=>$[I]=()=>J})};var l$={};K$(l$,{useWebApp:()=>m,useInitData:()=>sU,SecureStorageCard:()=>H$,PieTelegramRoot:()=>J$,CloudStorageCard:()=>G$});module.exports=T$(l$);var k=require("react"),C=require("@tanstack/react-query");var VU=F$(require("mitt")),l=require("react");var GU=globalThis,_=(U,$)=>{let I=Symbol.for(U);if(!(I in GU))GU[I]=$();return GU[I]};function MU(){return _("@swarm.ing/pieui:mitt-emitter",()=>VU.default())}var L$=_("@swarm.ing/pieui:context:mitt",()=>l.createContext(null));var c=L$;var EU=require("socket.io-client"),RU=require("react");var AU=_("@swarm.ing/pieui:socket-cache",()=>new Map),jU=(U)=>{let $=AU.get(U);if($)return $;let I=EU.io(U,{autoConnect:!1,transports:["websocket"]});return AU.set(U,I),I},q$=_("@swarm.ing/pieui:context:socket",()=>RU.createContext(null)),j=q$;var NU=require("react"),BU=require("centrifuge");var PU=_("@swarm.ing/pieui:centrifuge-cache",()=>new Map),wU=(U,$)=>{if(!$)return null;let I=`${U}::${$}`,J=PU.get(I);if(J)return J;async function X(){let Y=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!Y.ok){if(Y.status===401||Y.status===403)throw new BU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Y.status}`)}return(await Y.json()).token}let Z=new BU.Centrifuge($,{getToken:X});return PU.set(I,Z),Z},W$=_("@swarm.ing/pieui:context:centrifuge",()=>NU.createContext(null)),P=W$;var e=require("react");var s=require("react"),u=new Map,o=new Map;function n(U,$){let I=`${U}::${$}`,J=U?u.get(I):void 0,[X,Z]=s.useState(J??null);return s.useEffect(()=>{if(!U)return;if(u.has(I)){Z(u.get(I));return}let Y=o.get(I);if(!Y)Y=fetch(U+`api/support/${$}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return u.set(I,G),o.delete(I),G}).catch((G)=>{throw o.delete(I),G}),o.set(I,Y);let H=!1;return Y.then((G)=>{if(!H)Z(G)}).catch(()=>{}),()=>{H=!0}},[U,$,I]),X}var i=require("react");var HU=_("@swarm.ing/pieui:context:pieConfig",()=>i.createContext(null)),r=()=>{let U=i.useContext(HU);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},QU=()=>{let{apiServer:U}=r();return U},a=QU,xU=()=>{let{centrifugeServer:U}=r();return U};var E=()=>{let{enableRenderingLog:U}=r();return U},kU=E,CU=()=>{let{pageProcessor:U}=r();return U};var O$=(U)=>{let $=document.cookie?document.cookie.split(";"):[];for(let I of $){let J=I.indexOf("=");if((J===-1?I:I.slice(0,J)).trim()===U){let Z=J===-1?"":I.slice(J+1).trim();try{return decodeURIComponent(Z)}catch{return Z}}}return null},V$={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:O$,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let $=document.getElementsByName(U);if(!$.length)return null;let I=$[0];if(I instanceof HTMLInputElement){if(I.type==="file"&&I.files)return Array.from(I.files);return[I.value]}if(I instanceof HTMLTextAreaElement)return[I.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},yU=V$;var M$={};function R(){return M$}var fU=new Map;var bU=(U)=>{return fU.has(U)?fU.get(U):null};var vU,A$={isClient(){return!0},readSid(){return vU},setSid(U){vU=U},readWebStorage(U,$){let I=R(),J=U==="local"?I.storage:I.sessionStorage;return J?J.getItem($):null},async readWebStorageAsync(U,$){let I=R(),J=U==="local"?I.asyncStorage:I.asyncSessionStorage;if(J)return J.getItem($);let X=U==="local"?I.storage:I.sessionStorage;return X?X.getItem($):null},readCookie(U){let $=R();return $.getCookie?$.getCookie(U):null},readUrlParams(U){let $=R();return $.getRouteParams?$.getRouteParams(U):[]},readDomInput(U){let $=R();return $.getInput?$.getInput(U):bU(U)},submitGlobalForm(){R().submitForm?.()}},SU=A$;var E$=typeof navigator<"u"&&navigator.product==="ReactNative",R$=E$?SU:yU,t=R$;var j$=_("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function mU(){j$.resolve?.()}var P$=({children:U})=>{let $=e.useContext(j),I=a(),J=n(I,"socketIO"),X=(Z)=>{if(t.isClient())t.setSid(Z.sid),mU(),console.log(`SocketIO initialized: ${t.readSid()}`)};return e.useEffect(()=>{if(!$)return;let Z=()=>{console.log("SocketIO connected")},Y=(H)=>{console.log(`SocketIO disconnected: ${H}`),$.connect()};if(J)$.on("pieinit",X),$.on("connect",Z),$.on("disconnect",Y),$.connect();return()=>{if(J)$.off("pieinit",X),$.off("connect",Z),$.off("disconnect",Y),$.disconnect()}},[$,J]),U},gU=P$;var UU=require("react");var N$=({children:U})=>{let $=UU.useContext(P),I=a(),J=n(I,"centrifuge");return UU.useEffect(()=>{if(!$)return;let X=()=>{console.log("Centrifuge connected")},Z=(Y)=>{console.log("Centrifuge disconnected:",Y)};if(J)$.on("connected",X),$.on("disconnected",Z),$.connect();return()=>{if(J)$.disconnect()}},[$,J]),U},hU=N$;var pU=require("react");var $U=require("react/jsx-runtime"),w$=_("@swarm.ing/pieui:context:fallback",()=>pU.createContext($U.jsx($U.Fragment,{}))),N=w$;var dU=require("react");var x$=_("@swarm.ing/pieui:context:lazyError",()=>dU.createContext(void 0)),w=x$;var lU=require("react"),v=new Map;function k$(U,$){return $.catch(()=>{if(v.get(U)===$)v.delete(U)}),v.set(U,$),$}function cU(U,$){return lU.lazy(()=>{if(v.has($))return v.get($);return k$($,U().then((I)=>I))})}var uU=_("@swarm.ing/pieui:component-registry",()=>new Map),C$=(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=cU($.loader,U.name),$.isLazy=!0;return $};function IU(U){let $=C$(U);return uU.set($.name,$),$.component}var JU=(U)=>{return uU.get(U)};var S=require("react");var ZU=require("react"),oU=require("react/jsx-runtime"),y$=2,f$=400;class x extends ZU.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<y$){let $=f$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.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 oU.jsx(ZU.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var XU=require("react/jsx-runtime");function b$({uiConfig:U,setUiAjaxConfiguration:$}){let I=S.useContext(N),J=S.useContext(w),X=E();if(X)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 Z=JU(U.card);if(!Z?.component){if(X)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return I}if(X)console.log("[UI] Found component in registry:",{name:Z.name,isLazy:Z.isLazy,hasMetadata:!!Z.metadata});let Y=Z.component,H=XU.jsx(Y,{data:U.data,content:U.content,setUiAjaxConfiguration:$});if(Z.isLazy){if(X)console.log("[UI] Rendering lazy component with Suspense:",Z.name);return XU.jsx(x,{name:Z.name,fallback:Z.fallback?XU.jsx(Z.fallback,{}):I,onError:J,children:H})}if(X)console.log("[UI] Rendering component directly:",Z.name);return H}var _U=S.memo(b$);var I$=require("axios-date-transformer");var YU=require("react");var m=({onError:U}={})=>{let[$,I]=YU.useState(null),J=CU();return YU.useEffect(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp;if(!X)return;try{X.ready?.()}catch(Z){U?.()}if(J==="telegram_expanded"&&(X.platform==="ios"||X.platform==="android"))X.expand();I(X)},[]),$},sU=()=>{let U=m();return[U?.initDataUnsafe,U?.initData]};var nU=require("react");var v$=_("@swarm.ing/pieui:context:navigate",()=>nU.createContext(void 0)),iU=v$;var DU=require("react");var rU=require("react");var S$=_("@swarm.ing/pieui:context:uiRenderer",()=>rU.createContext(null)),aU=S$;var g=require("react/jsx-runtime");function tU({uiConfig:U,setUiAjaxConfiguration:$}){let I=DU.useContext(N),J=DU.useContext(w),X=E();if(X)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 Z=JU(U.card);if(!Z?.component){if(X)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return I}if(X)console.log("[UILoading] Found component in registry:",{name:Z.name,isLazy:Z.isLazy,hasMetadata:!!Z.metadata,hasFallback:!!Z.fallback});if(Z.fallback){if(X)console.log("[UILoading] Rendering fallback for:",Z.name);let G=Z.fallback;return g.jsx(G,{})}if(X)console.log("[UILoading] No fallback, rendering full component:",Z.name);let Y=Z.component,H=g.jsx(aU.Provider,{value:tU,children:g.jsx(Y,{data:U.data,content:U.content,setUiAjaxConfiguration:$})});if(Z.isLazy)return g.jsx(x,{name:Z.name,fallback:I,onError:J,children:H});return H}var eU=tU;var $$=require("react/jsx-runtime");function U$(U,$,I){if(!$)return I;let J=U.replace(/^\//,""),X=$[J];if(!X)return I;return $$.jsx(eU,{uiConfig:X})}var D=require("react/jsx-runtime"),m$=({location:U,fallback:$,piecache:I,onError:J,queryOptions:X,disableGlobalForm:Z})=>{let Y=QU(),H=xU(),G=E(),K=k.useMemo(()=>I$.createAxiosDateTransformer({baseURL:Y}),[Y]),z=k.useMemo(()=>MU(),[]),T=k.useMemo(()=>Y?jU(Y):null,[Y]),d=k.useMemo(()=>Y?wU(Y,H):null,[Y,H]),W=m({onError:J}),{data:L,isLoading:M,error:O}=C.useQuery({queryKey:["uiConfig",U.pathname+U.search,W?.initData],enabled:!!W?.initData,queryFn:async()=>{let B=new URLSearchParams(U.search);if(B.set("__pieroot","telegram"),W?.initData)B.set("initData",W.initData);let Q="/api/content"+U.pathname+"?"+B.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",Q);let F=await K.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:",F.data);return F.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(B)=>Math.min(1000*2**B,30000),...X}),V=U$(U.pathname,I,$);if(!Y)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(O&&G)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),V;if(M||!L){if(G)console.log("[PieRoot] Loading state:",{isLoading:M,hasUiConfiguration:!!L});return V}if(G)console.log("[PieRoot] UI configuration loaded successfully:",L),console.log("[PieRoot] Rendering UI with configuration");return D.jsx(c.Provider,{value:z,children:D.jsx(j.Provider,{value:T,children:D.jsx(P.Provider,{value:d,children:D.jsx(N.Provider,{value:$??D.jsx(D.Fragment,{}),children:D.jsx(gU,{children:D.jsx(hU,{children:Z?D.jsx(_U,{uiConfig:L}):D.jsx("form",{id:"piedata_global_form",action:Y+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:D.jsx(_U,{uiConfig:L})})})})})})})})},g$=(U)=>{let $=k.useMemo(()=>new C.QueryClient,[]),I=U.queryClient??$;return D.jsx(iU.Provider,{value:U.onNavigate,children:D.jsx(HU.Provider,{value:U.config,children:D.jsx(w.Provider,{value:U.onError,children:D.jsx(C.QueryClientProvider,{client:I,children:D.jsx(m$,{...U})})})})})},J$=g$;var h=require("react");var q=require("react");function Z$(U){return U.wasRecovering===!0&&U.recovered===!1}function X$(U){return U.recoverable===!1}function Y$(U,$,I){let J=U.getSubscription($);if(J)return{subscription:J,createdHere:!1};return{subscription:U.newSubscription($,I),createdHere:!0}}var y=require("react/jsx-runtime"),h$=({card:U,data:$,children:I,useSocketioSupport:J=!1,useCentrifugeSupport:X=!1,useMittSupport:Z=!1,centrifugeChannel:Y=void 0,methods:H=void 0,stored:G=void 0,onResync:K=void 0})=>{let z=kU(),T=q.useRef(H);T.current=H;let d=q.useRef(K);if(d.current=K,z)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:X,mitt:Z,centrifugeChannel:Y}),console.log("[PieCard] Methods:",H?Object.keys(H):"none"),console.log("[PieCard] Has children:",!!I);let W=q.useContext(j),L=q.useContext(P),M=q.useContext(c);if(q.useEffect(()=>{if(!W||!J||!T.current||!$.name){if(z&&J)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!W,useSocketioSupport:J,hasMethods:!!T.current,hasDataName:!!$?.name});return}let V=Object.keys(T.current??{}).map((B)=>{let Q=`pie${B}_${$.name}`;if(z)console.log(`[PieCard] Socket.IO registering event: ${Q}`);let F=(A)=>{T.current?.[B]?.(A)};return W.on(Q,F),[Q,F]});return()=>{V.forEach(([B,Q])=>{if(z)console.log(`[PieCard] Socket.IO unregistering event: ${B}`);W.off(B,Q)})}},[W,$.name,J]),q.useEffect(()=>{if(!L||!X||!Y||!$.name){if(z&&X)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:X,hasCentrifugeChannel:!!Y,hasMethods:!!T.current,hasDataName:!!$?.name});return}let V=Object.keys(T.current??{}).map((B)=>{let Q=`pie${B}_${$.name}_${Y}`;if(z)console.log(`[PieCard] Centrifuge subscribing to channel: ${Q}`);let{subscription:F,createdHere:A}=Y$(L,Q,{recoverable:!0,positioned:!0}),KU=(f)=>{if(z)console.log(`[PieCard] Centrifuge received data on ${Q}:`,f.data);T.current?.[B]?.(f.data)},LU=(f)=>{if(X$(f))console.warn(`[PieCard] Centrifuge channel ${Q} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(Z$(f)){if(z)console.log(`[PieCard] Centrifuge recovery gap on ${Q}; requesting resync`);d.current?.({channel:Q,reason:"gap"})}};return F.on("publication",KU),F.on("subscribed",LU),F.subscribe(),{subscription:F,createdHere:A,onPublication:KU,onSubscribed:LU}});return()=>{V.forEach(({subscription:B,createdHere:Q,onPublication:F,onSubscribed:A})=>{if(z)console.log("[PieCard] Centrifuge unsubscribing from channel");if(B.off("publication",F),B.off("subscribed",A),Q)B.unsubscribe(),L.removeSubscription(B)})}},[L,Y,$.name,X]),q.useEffect(()=>{if(!M||!Z||!$.name){if(z&&Z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!M,useMittSupport:Z,hasMethods:!!T.current,hasDataName:!!$?.name});return}let O=Object.keys(T.current??{}),V={};return O.forEach((B)=>{let Q=`pie${B}_${$.name}`,F=(A)=>{if(z)console.log(`[PieCard] Mitt registering event: ${Q}`);T.current?.[B]?.(A)};V[Q]=F,M.on(Q,F)}),()=>{Object.entries(V).forEach(([B,Q])=>{if(z)console.log(`[PieCard] Mitt unregistering event: ${B}`);M.off(B,Q)})}},[M,$.name,Z]),z)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return y.jsxs(y.Fragment,{children:[y.jsx("input",{type:"hidden",name:$.name,value:JSON.stringify(G)}),I]});return I},zU=h$;var FU=require("react/jsx-runtime"),p$=({data:U})=>{let{name:$,key:I,value:J,useSocketioSupport:X,useCentrifugeSupport:Z,useMittSupport:Y,centrifugeChannel:H}=U,[G,K]=h.useState(J);return h.useEffect(()=>{K(J)},[J]),h.useEffect(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp?.CloudStorage;if(!z)return;z.setItem(I,G)},[I,G]),FU.jsx(zU,{card:"CloudStorageCard",data:U,useSocketioSupport:X,useCentrifugeSupport:Z,useMittSupport:Y,centrifugeChannel:H,methods:{update:({value:z})=>{K(z)},remove:()=>{let z=window.Telegram?.WebApp?.CloudStorage;if(z)z.removeItem(I);K("")}},children:FU.jsx("input",{type:"hidden",id:$,name:$,value:G})})},z$=p$;var G$=IU({name:"CloudStorageCard",component:z$,metadata:{author:"PieData"}});var p=require("react");var TU=require("react/jsx-runtime"),d$=({data:U})=>{let{name:$,key:I,value:J,useSocketioSupport:X,useCentrifugeSupport:Z,useMittSupport:Y,centrifugeChannel:H}=U,[G,K]=p.useState(J);return p.useEffect(()=>{K(J)},[J]),p.useEffect(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp?.SecureStorage;if(!z)return;z.setItem(I,G)},[I,G]),TU.jsx(zU,{card:"SecureStorageCard",data:U,useSocketioSupport:X,useCentrifugeSupport:Z,useMittSupport:Y,centrifugeChannel:H,methods:{update:({value:z})=>{K(z)},remove:()=>{let z=window.Telegram?.WebApp?.SecureStorage;if(z)z.removeItem(I);K("")}},children:TU.jsx("input",{type:"hidden",id:$,name:$,value:G})})},B$=d$;var H$=IU({name:"SecureStorageCard",component:B$,metadata:{author:"PieData"}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"centrifugeSubscription.test.d.ts","sourceRoot":"","sources":["../../src/tests/centrifugeSubscription.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Centrifuge, Subscription, SubscriptionOptions } from 'centrifuge';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the existing Centrifuge subscription for `channel`, or creates one if
|
|
4
|
+
* none is registered yet. `centrifuge.newSubscription` throws if a subscription
|
|
5
|
+
* for the channel already exists, so callers that may subscribe to the same
|
|
6
|
+
* channel more than once (e.g. a card briefly mounted twice during a tree
|
|
7
|
+
* rebuild) must dedupe via `getSubscription` first — this helper does that.
|
|
8
|
+
*
|
|
9
|
+
* `createdHere` is `true` when this call allocated the subscription, so the
|
|
10
|
+
* caller knows it owns teardown (`unsubscribe` + `removeSubscription`); when a
|
|
11
|
+
* subscription is reused, the caller should only remove its own listeners and
|
|
12
|
+
* leave the subscription for its original owner.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getOrCreateSubscription(centrifuge: Pick<Centrifuge, 'getSubscription' | 'newSubscription'>, channel: string, options?: Partial<SubscriptionOptions>): {
|
|
15
|
+
subscription: Subscription;
|
|
16
|
+
createdHere: boolean;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=centrifugeSubscription.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"centrifugeSubscription.d.ts","sourceRoot":"","sources":["../../src/util/centrifugeSubscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAE/E;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACnC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,iBAAiB,GAAG,iBAAiB,CAAC,EACnE,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACvC;IAAE,YAAY,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAStD"}
|