@swarm.ing/pieui 2.1.0 → 2.1.2

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.
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{tool as x}from"@openai/agents";import{useContext as b,useMemo as k}from"react";import M from"mitt";import{createContext as w,useCallback as c,useContext as d}from"react";var P=null;function F(){if(!P)P=M();return P}var T=w(null);var O=T;var I=/^pie(.+?)_(.+)$/;function A(G=F(),H={}){let Z=[],L=new Set;for(let J of G.all.keys()){if(typeof J!=="string")continue;let Q=J.match(I);if(!Q)continue;let[,X,q]=Q,$={methodName:X,cardName:q,eventName:J};if(H.filter&&!H.filter($))continue;let W=H.nameFor?.($)??`${q}_${X}`;if(L.has(W))continue;L.add(W);let D=H.describe?.($)??`Invokes the "${X}" method on the PieCard "${q}" by emitting the in-process mitt event "${J}". The optional "payload" argument is forwarded verbatim to the card's handler.`;Z.push(x({name:W,description:D,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(j)=>{let Y=j?.payload;return G.emit(J,Y),`Emitted "${J}"`}}))}return Z}function N(G={}){let Z=b(O)??F(),L=[];for(let $ of Z.all.keys())if(typeof $==="string"&&I.test($))L.push($);L.sort();let J=L.join("|"),{filter:Q,describe:X,nameFor:q}=G;return k(()=>A(Z,{filter:Q,describe:X,nameFor:q}),[Z,J,Q,X,q])}import{useCallback as V,useEffect as y,useRef as _,useState as f}from"react";function v(){let G=new AudioContext,H=G.createOscillator(),Z=H.connect(G.createMediaStreamDestination());H.start();let L=Z.stream.getAudioTracks()[0];return L.enabled=!1,L}function R(G=null,H){let[Z,L]=f(!1),J=_(null),Q=_(null),X=_(null),q=V(async(j,Y=!0)=>{if(J.current)$();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")L(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))L(!1)},B.ontrack=(z)=>{if(G)G.srcObject=z.streams[0]},Y){let z=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(z.getTracks()[0],z)}else{let z=v();B.addTrack(z)}let U=B.createDataChannel("oai-events");Q.current=U,X.current=new Promise((z)=>{U.addEventListener("open",()=>{z()})});let K=await B.createOffer();await B.setLocalDescription(K);let S=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:K.sdp,headers:{Authorization:`Bearer ${j}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:S}),J.current=B,await X.current},[G]),$=V(()=>{let j=Q.current;if(j)j.close();J.current?.getSenders()?.forEach((Y)=>Y.track?.stop()),J.current?.close(),L(!1),J.current=null,Q.current=null,X.current=null},[G]),W=V((j)=>{let Y=Q.current;if(!Y){console.error("Data channel is not ready",j);return}let B=new Date().toLocaleTimeString();if(j.event_id=j.event_id||crypto.randomUUID(),Y.send(JSON.stringify(j)),!j.timestamp)j.timestamp=B;H?.(j)},[H,G]),D=V((j)=>{if(!Q.current){console.error("Data channel is not ready");return}let B=()=>{W({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:j}]}}),W({type:"response.create"})};if(X.current)X.current.then(B);else B()},[H,G]);return y(()=>{let j=Q.current;if(!j)return;let Y=(B)=>{let U=JSON.parse(B.data);if(!U.timestamp)U.timestamp=new Date().toLocaleTimeString();H?.(U)};return j.addEventListener("message",Y),()=>{j.removeEventListener("message",Y)}},[H,G]),{isSessionActive:Z,startSession:q,stopSession:$,sendTextMessage:D}}export{N as usePieMittAgentTools,R as useOpenAIWebRTC,A as getMittAgentTools};
2
+ import{tool as k}from"@openai/agents";import{useContext as x,useMemo as y}from"react";import K from"mitt";import{createContext as O,useCallback as l,useContext as p}from"react";var b=globalThis,w=(B,G)=>{let H=Symbol.for(B);if(!(H in b))b[H]=G();return b[H]};function _(){return w("@swarm.ing/pieui:mitt-emitter",()=>K())}var R=w("@swarm.ing/pieui:context:mitt",()=>O(null));var T=R;var f=/^pie(.+?)_(.+)$/;function S(B=_(),G={}){let H=[],P=new Set;for(let L of B.all.keys()){if(typeof L!=="string")continue;let Q=L.match(f);if(!Q)continue;let[,U,Z]=Q,Y={methodName:U,cardName:Z,eventName:L};if(G.filter&&!G.filter(Y))continue;let z=G.nameFor?.(Y)??`${Z}_${U}`;if(P.has(z))continue;P.add(z);let V=G.describe?.(Y)??`Invokes the "${U}" method on the PieCard "${Z}" by emitting the in-process mitt event "${L}". The optional "payload" argument is forwarded verbatim to the card's handler.`;H.push(k({name:z,description:V,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(J)=>{let X=J?.payload;return B.emit(L,X),`Emitted "${L}"`}}))}return H}function M(B={}){let H=x(T)??_(),P=[];for(let Y of H.all.keys())if(typeof Y==="string"&&f.test(Y))P.push(Y);P.sort();let L=P.join("|"),{filter:Q,describe:U,nameFor:Z}=B;return y(()=>S(H,{filter:Q,describe:U,nameFor:Z}),[H,L,Q,U,Z])}import{useCallback as W,useEffect as N,useRef as D,useState as g}from"react";function v(){let B=new AudioContext,G=B.createOscillator(),H=G.connect(B.createMediaStreamDestination());G.start();let P=H.stream.getAudioTracks()[0];return P.enabled=!1,P}function A(B=null,G){let[H,P]=g(!1),L=D(null),Q=D(null),U=D(null),Z=W(async(J,X=!0)=>{if(L.current)Y();let j=new RTCPeerConnection;if(j.onconnectionstatechange=()=>{if(j.connectionState==="connected")P(!0);else if(["disconnected","failed","closed"].includes(j.connectionState))P(!1)},j.ontrack=($)=>{if(B)B.srcObject=$.streams[0]},X){let $=await navigator.mediaDevices.getUserMedia({audio:!0});j.addTrack($.getTracks()[0],$)}else{let $=v();j.addTrack($)}let q=j.createDataChannel("oai-events");Q.current=q,U.current=new Promise(($)=>{q.addEventListener("open",()=>{$()})});let F=await j.createOffer();await j.setLocalDescription(F);let I=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:F.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await j.setRemoteDescription({type:"answer",sdp:I}),L.current=j,await U.current},[B]),Y=W(()=>{let J=Q.current;if(J)J.close();L.current?.getSenders()?.forEach((X)=>X.track?.stop()),L.current?.close(),P(!1),L.current=null,Q.current=null,U.current=null},[B]),z=W((J)=>{let X=Q.current;if(!X){console.error("Data channel is not ready",J);return}let j=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),X.send(JSON.stringify(J)),!J.timestamp)J.timestamp=j;G?.(J)},[G,B]),V=W((J)=>{if(!Q.current){console.error("Data channel is not ready");return}let j=()=>{z({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),z({type:"response.create"})};if(U.current)U.current.then(j);else j()},[G,B]);return N(()=>{let J=Q.current;if(!J)return;let X=(j)=>{let q=JSON.parse(j.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();G?.(q)};return J.addEventListener("message",X),()=>{J.removeEventListener("message",X)}},[G,B]),{isSessionActive:H,startSession:Z,stopSession:Y,sendTextMessage:V}}export{M as usePieMittAgentTools,A as useOpenAIWebRTC,S as getMittAgentTools};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var f=Object.create;var{getPrototypeOf:v,defineProperty:D,getOwnPropertyNames:M,getOwnPropertyDescriptor:C}=Object,w=Object.prototype.hasOwnProperty;var E=(j,B,H)=>{H=j!=null?f(v(j)):{};let G=B||!j||!j.__esModule?D(H,"default",{value:j,enumerable:!0}):H;for(let L of M(j))if(!w.call(G,L))D(G,L,{get:()=>j[L],enumerable:!0});return G},S=new WeakMap,g=(j)=>{var B=S.get(j),H;if(B)return B;if(B=D({},"__esModule",{value:!0}),j&&typeof j==="object"||typeof j==="function")M(j).map((G)=>!w.call(B,G)&&D(B,G,{get:()=>j[G],enumerable:!(H=C(j,G))||H.enumerable}));return S.set(j,B),B};var u=(j,B)=>{for(var H in B)D(j,H,{get:B[H],enumerable:!0,configurable:!0,set:(G)=>B[H]=()=>G})};var c={};u(c,{usePieMittAgentTools:()=>N,useOpenAIWebRTC:()=>A,getMittAgentTools:()=>I});module.exports=g(c);var b=require("@openai/agents"),F=require("react");var T=E(require("mitt")),P=require("react"),K=null;function O(){if(!K)K=T.default();return K}var h=P.createContext(null);var x=h;var k=/^pie(.+?)_(.+)$/;function I(j=O(),B={}){let H=[],G=new Set;for(let L of j.all.keys()){if(typeof L!=="string")continue;let Y=L.match(k);if(!Y)continue;let[,Z,z]=Y,q={methodName:Z,cardName:z,eventName:L};if(B.filter&&!B.filter(q))continue;let V=B.nameFor?.(q)??`${z}_${Z}`;if(G.has(V))continue;G.add(V);let _=B.describe?.(q)??`Invokes the "${Z}" method on the PieCard "${z}" by emitting the in-process mitt event "${L}". The optional "payload" argument is forwarded verbatim to the card's handler.`;H.push(b.tool({name:V,description:_,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(J)=>{let $=J?.payload;return j.emit(L,$),`Emitted "${L}"`}}))}return H}function N(j={}){let H=F.useContext(x)??O(),G=[];for(let q of H.all.keys())if(typeof q==="string"&&k.test(q))G.push(q);G.sort();let L=G.join("|"),{filter:Y,describe:Z,nameFor:z}=j;return F.useMemo(()=>I(H,{filter:Y,describe:Z,nameFor:z}),[H,L,Y,Z,z])}var X=require("react");function p(){let j=new AudioContext,B=j.createOscillator(),H=B.connect(j.createMediaStreamDestination());B.start();let G=H.stream.getAudioTracks()[0];return G.enabled=!1,G}function A(j=null,B){let[H,G]=X.useState(!1),L=X.useRef(null),Y=X.useRef(null),Z=X.useRef(null),z=X.useCallback(async(J,$=!0)=>{if(L.current)q();let Q=new RTCPeerConnection;if(Q.onconnectionstatechange=()=>{if(Q.connectionState==="connected")G(!0);else if(["disconnected","failed","closed"].includes(Q.connectionState))G(!1)},Q.ontrack=(U)=>{if(j)j.srcObject=U.streams[0]},$){let U=await navigator.mediaDevices.getUserMedia({audio:!0});Q.addTrack(U.getTracks()[0],U)}else{let U=p();Q.addTrack(U)}let W=Q.createDataChannel("oai-events");Y.current=W,Z.current=new Promise((U)=>{W.addEventListener("open",()=>{U()})});let R=await Q.createOffer();await Q.setLocalDescription(R);let y=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:R.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await Q.setRemoteDescription({type:"answer",sdp:y}),L.current=Q,await Z.current},[j]),q=X.useCallback(()=>{let J=Y.current;if(J)J.close();L.current?.getSenders()?.forEach(($)=>$.track?.stop()),L.current?.close(),G(!1),L.current=null,Y.current=null,Z.current=null},[j]),V=X.useCallback((J)=>{let $=Y.current;if(!$){console.error("Data channel is not ready",J);return}let Q=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),$.send(JSON.stringify(J)),!J.timestamp)J.timestamp=Q;B?.(J)},[B,j]),_=X.useCallback((J)=>{if(!Y.current){console.error("Data channel is not ready");return}let Q=()=>{V({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),V({type:"response.create"})};if(Z.current)Z.current.then(Q);else Q()},[B,j]);return X.useEffect(()=>{let J=Y.current;if(!J)return;let $=(Q)=>{let W=JSON.parse(Q.data);if(!W.timestamp)W.timestamp=new Date().toLocaleTimeString();B?.(W)};return J.addEventListener("message",$),()=>{J.removeEventListener("message",$)}},[B,j]),{isSessionActive:H,startSession:z,stopSession:q,sendTextMessage:_}}
2
+ var g=Object.create;var{getPrototypeOf:v,defineProperty:V,getOwnPropertyNames:K,getOwnPropertyDescriptor:C}=Object,O=Object.prototype.hasOwnProperty;var u=(J,j,B)=>{B=J!=null?g(v(J)):{};let G=j||!J||!J.__esModule?V(B,"default",{value:J,enumerable:!0}):B;for(let L of K(J))if(!O.call(G,L))V(G,L,{get:()=>J[L],enumerable:!0});return G},I=new WeakMap,E=(J)=>{var j=I.get(J),B;if(j)return j;if(j=V({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")K(J).map((G)=>!O.call(j,G)&&V(j,G,{get:()=>J[G],enumerable:!(B=C(J,G))||B.enumerable}));return I.set(J,j),j};var h=(J,j)=>{for(var B in j)V(J,B,{get:j[B],enumerable:!0,configurable:!0,set:(G)=>j[B]=()=>G})};var d={};h(d,{usePieMittAgentTools:()=>M,useOpenAIWebRTC:()=>S,getMittAgentTools:()=>f});module.exports=E(d);var x=require("@openai/agents"),w=require("react");var R=u(require("mitt")),b=require("react");var D=globalThis,F=(J,j)=>{let B=Symbol.for(J);if(!(B in D))D[B]=j();return D[B]};function T(){return F("@swarm.ing/pieui:mitt-emitter",()=>R.default())}var r=F("@swarm.ing/pieui:context:mitt",()=>b.createContext(null));var k=r;var y=/^pie(.+?)_(.+)$/;function f(J=T(),j={}){let B=[],G=new Set;for(let L of J.all.keys()){if(typeof L!=="string")continue;let U=L.match(y);if(!U)continue;let[,X,$]=U,Z={methodName:X,cardName:$,eventName:L};if(j.filter&&!j.filter(Z))continue;let W=j.nameFor?.(Z)??`${$}_${X}`;if(G.has(W))continue;G.add(W);let _=j.describe?.(Z)??`Invokes the "${X}" method on the PieCard "${$}" by emitting the in-process mitt event "${L}". The optional "payload" argument is forwarded verbatim to the card's handler.`;B.push(x.tool({name:W,description:_,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(H)=>{let Y=H?.payload;return J.emit(L,Y),`Emitted "${L}"`}}))}return B}function M(J={}){let B=w.useContext(k)??T(),G=[];for(let Z of B.all.keys())if(typeof Z==="string"&&y.test(Z))G.push(Z);G.sort();let L=G.join("|"),{filter:U,describe:X,nameFor:$}=J;return w.useMemo(()=>f(B,{filter:U,describe:X,nameFor:$}),[B,L,U,X,$])}var Q=require("react");function c(){let J=new AudioContext,j=J.createOscillator(),B=j.connect(J.createMediaStreamDestination());j.start();let G=B.stream.getAudioTracks()[0];return G.enabled=!1,G}function S(J=null,j){let[B,G]=Q.useState(!1),L=Q.useRef(null),U=Q.useRef(null),X=Q.useRef(null),$=Q.useCallback(async(H,Y=!0)=>{if(L.current)Z();let P=new RTCPeerConnection;if(P.onconnectionstatechange=()=>{if(P.connectionState==="connected")G(!0);else if(["disconnected","failed","closed"].includes(P.connectionState))G(!1)},P.ontrack=(q)=>{if(J)J.srcObject=q.streams[0]},Y){let q=await navigator.mediaDevices.getUserMedia({audio:!0});P.addTrack(q.getTracks()[0],q)}else{let q=c();P.addTrack(q)}let z=P.createDataChannel("oai-events");U.current=z,X.current=new Promise((q)=>{z.addEventListener("open",()=>{q()})});let A=await P.createOffer();await P.setLocalDescription(A);let N=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:A.sdp,headers:{Authorization:`Bearer ${H}`,"Content-Type":"application/sdp"}})).text();await P.setRemoteDescription({type:"answer",sdp:N}),L.current=P,await X.current},[J]),Z=Q.useCallback(()=>{let H=U.current;if(H)H.close();L.current?.getSenders()?.forEach((Y)=>Y.track?.stop()),L.current?.close(),G(!1),L.current=null,U.current=null,X.current=null},[J]),W=Q.useCallback((H)=>{let Y=U.current;if(!Y){console.error("Data channel is not ready",H);return}let P=new Date().toLocaleTimeString();if(H.event_id=H.event_id||crypto.randomUUID(),Y.send(JSON.stringify(H)),!H.timestamp)H.timestamp=P;j?.(H)},[j,J]),_=Q.useCallback((H)=>{if(!U.current){console.error("Data channel is not ready");return}let P=()=>{W({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:H}]}}),W({type:"response.create"})};if(X.current)X.current.then(P);else P()},[j,J]);return Q.useEffect(()=>{let H=U.current;if(!H)return;let Y=(P)=>{let z=JSON.parse(P.data);if(!z.timestamp)z.timestamp=new Date().toLocaleTimeString();j?.(z)};return H.addEventListener("message",Y),()=>{H.removeEventListener("message",Y)}},[j,J]),{isSessionActive:B,startSession:$,stopSession:Z,sendTextMessage:_}}
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{useContext as K,useEffect as M,useRef as Eo}from"react";import{createContext as Fo,useContext as Jo}from"react";var Qo=Fo(null),Wo=()=>{let o=Jo(Qo);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var G=()=>{let{enableRenderingLog:o}=Wo();return o},a=G;import{createContext as Xo}from"react";import{Centrifuge as Bf}from"centrifuge";var Yo=Xo(null),c=Yo;import{io as qf}from"socket.io-client";import{createContext as Ko}from"react";var Mo=Ko(null),v=Mo;import Qf from"mitt";import{createContext as Ro,useCallback as Yf,useContext as Kf}from"react";var _o=Ro(null);var J=_o;import{jsx as bo,jsxs as ko,Fragment as yo}from"react/jsx-runtime";var xo=({card:o,data:r,children:C,useSocketioSupport:p=!1,useCentrifugeSupport:U=!1,useMittSupport:f=!1,centrifugeChannel:m=void 0,methods:d=void 0,stored:S=void 0})=>{let u=a(),I=Eo(d);if(I.current=d,u)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:p,centrifuge:U,mitt:f,centrifugeChannel:m}),console.log("[PieCard] Methods:",d?Object.keys(d):"none"),console.log("[PieCard] Has children:",!!C);let w=K(v),H=K(c),A=K(J);if(M(()=>{if(!w||!p||!I.current||!r.name){if(u&&p)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!w,useSocketioSupport:p,hasMethods:!!I.current,hasDataName:!!r?.name});return}let z=Object.keys(I.current??{}).map((O)=>{let L=`pie${O}_${r.name}`;if(u)console.log(`[PieCard] Socket.IO registering event: ${L}`);let Z=(l)=>{I.current?.[O]?.(l)};return w.on(L,Z),[L,Z]});return()=>{z.forEach(([O,L])=>{if(u)console.log(`[PieCard] Socket.IO unregistering event: ${O}`);w.off(O,L)})}},[w,r.name,p]),M(()=>{if(!H||!U||!m||!r.name){if(u&&U)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!H,useCentrifugeSupport:U,hasCentrifugeChannel:!!m,hasMethods:!!I.current,hasDataName:!!r?.name});return}let z=Object.keys(I.current??{}).map((O)=>{let L=`pie${O}_${r.name}_${m}`;if(u)console.log(`[PieCard] Centrifuge subscribing to channel: ${L}`);let Z=H.newSubscription(L);return Z.on("publication",(l)=>{if(u)console.log(`[PieCard] Centrifuge received data on ${L}:`,l.data);I.current?.[O]?.(l.data)}),Z.subscribe(),Z});return()=>{z.forEach((O)=>{if(u)console.log("[PieCard] Centrifuge unsubscribing from channel");O.unsubscribe(),H.removeSubscription(O)})}},[H,m,r.name,U]),M(()=>{if(!A||!f||!r.name){if(u&&f)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!A,useMittSupport:f,hasMethods:!!I.current,hasDataName:!!r?.name});return}let P=Object.keys(I.current??{}),z={};return P.forEach((O)=>{let L=`pie${O}_${r.name}`,Z=(l)=>{if(u)console.log(`[PieCard] Mitt registering event: ${L}`);I.current?.[O]?.(l)};z[L]=Z,A.on(L,Z)}),()=>{Object.entries(z).forEach(([O,L])=>{if(u)console.log(`[PieCard] Mitt unregistering event: ${O}`);A.off(O,L)})}},[A,r.name,f]),u)console.log("[PieCard] Rendering complete, returning children");if(S!==void 0)return ko(yo,{children:[bo("input",{type:"hidden",name:r.name,value:JSON.stringify(S)}),C]});return C},i=xo;import{lazy as No}from"react";var F=new Map;function jo(o,r){return r.catch(()=>{if(F.get(o)===r)F.delete(o)}),F.set(o,r),r}function t(o,r){return No(()=>{if(F.has(r))return F.get(r);return jo(r,o().then((C)=>C))})}var h=new Map,no=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=t(r.loader,o.name),r.isLazy=!0;return r};function T(o){let r=no(o);return h.set(r.name,r),r.component}var Q=(o)=>{return h.get(o)};import{useContext as s,memo as Cr}from"react";import{createContext as ao}from"react";import{jsx as to,Fragment as vo}from"react/jsx-runtime";var co=ao(to(vo,{})),V=co;import{createContext as ho}from"react";var so=ho(void 0),W=so;import{Component as eo,Suspense as or}from"react";import{jsx as pr}from"react/jsx-runtime";var rr=2,fr=400;class q extends eo{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<rr){let r=fr*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((C)=>({failed:!1,attempt:C.attempt+1}))},r)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return pr(or,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as R}from"react/jsx-runtime";function Ur({uiConfig:o,setUiAjaxConfiguration:r}){let C=s(V),p=s(W),U=G();if(U)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let f=Q(o.card);if(!f?.component){if(U)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return C}if(U)console.log("[UI] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata});let m=f.component,d=R(m,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(f.isLazy){if(U)console.log("[UI] Rendering lazy component with Suspense:",f.name);return R(q,{name:f.name,fallback:f.fallback?R(f.fallback,{}):C,onError:p,children:d})}if(U)console.log("[UI] Rendering component directly:",f.name);return d}var B=Cr(Ur);import{useContext as e}from"react";import{createContext as ur}from"react";var mr=ur(null),g=mr;import{jsx as X}from"react/jsx-runtime";function oo({uiConfig:o,setUiAjaxConfiguration:r}){let C=e(V),p=e(W),U=G();if(U)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let f=Q(o.card);if(!f?.component){if(U)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return C}if(U)console.log("[UILoading] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata,hasFallback:!!f.fallback});if(f.fallback){if(U)console.log("[UILoading] Rendering fallback for:",f.name);let S=f.fallback;return X(S,{})}if(U)console.log("[UILoading] No fallback, rendering full component:",f.name);let m=f.component,d=X(g.Provider,{value:oo,children:X(m,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(f.isLazy)return X(q,{name:f.name,fallback:C,onError:p,children:d});return d}var Ir=oo;import{useContext as Sr}from"react";import{jsx as _}from"react/jsx-runtime";var dr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:p,sx:U}=o,f=Sr(g)??B;return _(i,{card:p,data:o,children:_("div",{style:U,id:p,children:r.map((m,d)=>{return _(f,{uiConfig:m,setUiAjaxConfiguration:C},`children-${d}`)})})})},ro=dr;var Pr=T({name:"SequenceCard",component:ro,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Ar}from"react";import{jsx as fo}from"react/jsx-runtime";var wr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:p}=o,U=Ar(g)??B;return fo(i,{card:p,data:o,children:r.map((f,m)=>{return fo(U,{uiConfig:f,setUiAjaxConfiguration:C},`children-${m}`)})})},po=wr;var Tr=T({name:"UnionCard",component:po,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as Lr,useState as Dr}from"react";import zr from"html-react-parser";import{useCallback as Y,useEffect as ir,useRef as E,useState as Hr}from"react";function Or(){let o=new AudioContext,r=o.createOscillator(),C=r.connect(o.createMediaStreamDestination());r.start();let p=C.stream.getAudioTracks()[0];return p.enabled=!1,p}function x(o=null,r){let[C,p]=Hr(!1),U=E(null),f=E(null),m=E(null),d=Y(async(w,H=!0)=>{if(U.current)S();let A=new RTCPeerConnection;if(A.onconnectionstatechange=()=>{if(A.connectionState==="connected")p(!0);else if(["disconnected","failed","closed"].includes(A.connectionState))p(!1)},A.ontrack=(D)=>{if(o)o.srcObject=D.streams[0]},H){let D=await navigator.mediaDevices.getUserMedia({audio:!0});A.addTrack(D.getTracks()[0],D)}else{let D=Or();A.addTrack(D)}let P=A.createDataChannel("oai-events");f.current=P,m.current=new Promise((D)=>{P.addEventListener("open",()=>{D()})});let z=await A.createOffer();await A.setLocalDescription(z);let l=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:z.sdp,headers:{Authorization:`Bearer ${w}`,"Content-Type":"application/sdp"}})).text();await A.setRemoteDescription({type:"answer",sdp:l}),U.current=A,await m.current},[o]),S=Y(()=>{let w=f.current;if(w)w.close();U.current?.getSenders()?.forEach((H)=>H.track?.stop()),U.current?.close(),p(!1),U.current=null,f.current=null,m.current=null},[o]),u=Y((w)=>{let H=f.current;if(!H){console.error("Data channel is not ready",w);return}let A=new Date().toLocaleTimeString();if(w.event_id=w.event_id||crypto.randomUUID(),H.send(JSON.stringify(w)),!w.timestamp)w.timestamp=A;r?.(w)},[r,o]),I=Y((w)=>{if(!f.current){console.error("Data channel is not ready");return}let A=()=>{u({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:w}]}}),u({type:"response.create"})};if(m.current)m.current.then(A);else A()},[r,o]);return ir(()=>{let w=f.current;if(!w)return;let H=(A)=>{let P=JSON.parse(A.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();r?.(P)};return w.addEventListener("message",H),()=>{w.removeEventListener("message",H)}},[r,o]),{isSessionActive:C,startSession:d,stopSession:S,sendTextMessage:I}}import{jsx as gr}from"react/jsx-runtime";var Zr=({data:o})=>{let{html:r,useSocketioSupport:C,useCentrifugeSupport:p,useMittSupport:U,centrifugeChannel:f}=o,[m,d]=Dr(r),{isSessionActive:S,startSession:u,sendTextMessage:I}=x(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)d((z)=>z+P.delta)});return Lr(()=>{d(r)},[r]),gr(i,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{d(P.value)},generateUsingAI:async(P)=>{try{if(!S&&P.token)await u(P.token,!1);I(P.prompt)}catch(z){console.error("Failed to generate using AI",z)}},initializeAI:async(P)=>{if(!S&&P.token)await u(P.token,!1)}},useCentrifugeSupport:p,useSocketioSupport:C,useMittSupport:U,centrifugeChannel:f,children:zr(m)})},Co=Zr;var Br=T({name:"HTMLEmbedCard",component:Co,metadata:{author:"Swarm.ing"}});import{useEffect as lr,useState as Vr}from"react";import{jsx as Uo}from"react/jsx-runtime";var qr=({data:o})=>{let{name:r,value:C,useSocketioSupport:p,useCentrifugeSupport:U,useMittSupport:f,centrifugeChannel:m}=o,[d,S]=Vr(C);return lr(()=>{S(C)},[C]),Uo(i,{card:"HiddenCard",data:o,useSocketioSupport:p,useCentrifugeSupport:U,useMittSupport:f,centrifugeChannel:m,methods:{update:({value:u})=>{S(u)}},children:Uo("input",{type:"hidden",id:r,name:r,value:d})})},uo=qr;var $r=T({name:"HiddenCard",component:uo,metadata:{author:"Swarm.ing"}});import{useContext as mo,useEffect as Jr}from"react";import{createContext as Gr}from"react";var Fr=Gr(void 0),$=Fr;import{jsx as Xr,Fragment as Wr}from"react/jsx-runtime";var Qr=({data:o})=>{let{url:r}=o,C=mo($),p=mo(V);return Jr(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else C?.(r)},[r,C]),Xr(Wr,{children:p})},Io=Qr;var Yr=T({name:"AutoRedirectCard",component:Io,metadata:{author:"Swarm.ing"}});import{Bounce as Kr,Slide as Mr,Zoom as Rr,Flip as _r}from"react-toastify";import{toast as Er,ToastContainer as xr}from"react-toastify";import{useContext as yr,useMemo as br,useRef as kr}from"react";import{jsx as y,Fragment as vr}from"react/jsx-runtime";var Nr={bounce:Kr,slide:Mr,zoom:Rr,flip:_r},jr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?Nr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};Er(o.message,r)},nr=(o)=>{console.log("Log event",o)},ar=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(p){console.error("[IOEventsCard] Failed to show notification",p)}},C=window.Notification.permission;if(C==="granted"){r();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((p)=>{if(p==="granted")r()})},cr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:U}=o,f=yr($),m=kr(f);m.current=f;let d=br(()=>({alert:jr,log:nr,push:ar,redirect:(S)=>{if(S.to){let u=S.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else m.current?.(u)}else window.location.reload()},reload:(S)=>{if(S.to){let u=S.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else m.current?.(u)}else window.location.reload()}}),[]);return y(vr,{children:y(i,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:U,methods:d,children:y(xr,{})})})},So=cr;var tr=T({name:"IOEventsCard",component:So,metadata:{author:"Swarm.ing"}});import{useEffect as Po,useState as hr}from"react";import{jsx as Ao}from"react/jsx-runtime";var sr=({data:o})=>{let{name:r,key:C,value:p,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:d}=o,[S,u]=hr(p);return Po(()=>{u(p)},[p]),Po(()=>{if(typeof window>"u")return;sessionStorage.setItem(C,S)},[C,S]),Ao(i,{card:"SessionStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:d,methods:{update:({value:I})=>{u(I)},remove:()=>{sessionStorage.removeItem(C),u("")}},children:Ao("input",{type:"hidden",id:r,name:r,value:S})})},wo=sr;var er=T({name:"SessionStorageCard",component:wo,metadata:{author:"PieData"}});import{useEffect as To,useState as of}from"react";import{jsx as io}from"react/jsx-runtime";var rf=({data:o})=>{let{name:r,key:C,value:p,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:d}=o,[S,u]=of(p);return To(()=>{u(p)},[p]),To(()=>{if(typeof window>"u")return;localStorage.setItem(C,S)},[C,S]),io(i,{card:"DeviceStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:d,methods:{update:({value:I})=>{u(I)},remove:()=>{localStorage.removeItem(C),u("")}},children:io("input",{type:"hidden",id:r,name:r,value:S})})},Ho=rf;var ff=T({name:"DeviceStorageCard",component:Ho,metadata:{author:"PieData"}});import{useEffect as Oo,useState as pf}from"react";import{jsx as Lo}from"react/jsx-runtime";var Cf=({data:o})=>{let{name:r,key:C,value:p,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:d}=o,[S,u]=pf(p);return Oo(()=>{u(p)},[p]),Oo(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp?.CloudStorage;if(!I)return;I.setItem(C,S)},[C,S]),Lo(i,{card:"CloudStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:d,methods:{update:({value:I})=>{u(I)},remove:()=>{let I=window.Telegram?.WebApp?.CloudStorage;if(I)I.removeItem(C);u("")}},children:Lo("input",{type:"hidden",id:r,name:r,value:S})})},Do=Cf;var Uf=T({name:"CloudStorageCard",component:Do,metadata:{author:"PieData"}});import{useEffect as zo,useState as uf}from"react";import{jsx as Zo}from"react/jsx-runtime";var mf=({data:o})=>{let{name:r,key:C,value:p,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:d}=o,[S,u]=uf(p);return zo(()=>{u(p)},[p]),zo(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp?.SecureStorage;if(!I)return;I.setItem(C,S)},[C,S]),Zo(i,{card:"SecureStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:d,methods:{update:({value:I})=>{u(I)},remove:()=>{let I=window.Telegram?.WebApp?.SecureStorage;if(I)I.removeItem(C);u("")}},children:Zo("input",{type:"hidden",id:r,name:r,value:S})})},go=mf;var If=T({name:"SecureStorageCard",component:go,metadata:{author:"PieData"}});import{useCallback as b,useContext as k,useEffect as Sf,useRef as df,useState as Bo}from"react";import{jsx as lo}from"react/jsx-runtime";var Pf=({data:o,content:r})=>{let{useLoader:C,noReturn:p,returnType:U,useSocketioSupport:f,useCentrifugeSupport:m,useMittSupport:d,centrifugeChannel:S}=o,u=k(V),I=k(g)??B,[w,H]=Bo(!1),[A,P]=Bo(null),z=df(r),O=k(J),L=b((D)=>{if(D===null)H(!0);else if(H(!1),!p)z.current=D;if(!p)P(D)},[p]),Z=b((D)=>{z.current=D.content,P(D.content)},[]),l=b((D)=>{if(D===null)H(!0);else if(H(!1),!p)for(let n of D)O?.emit(n.name,n.data)},[p,O]);if(Sf(()=>{P(r),H(!1)},[r]),!A&&C)return u;return lo(i,{card:"AjaxGroupCard",data:o,methods:{changeContent:Z},useSocketioSupport:f,useCentrifugeSupport:m,useMittSupport:d,centrifugeChannel:S,children:lo(I,{uiConfig:A??z.current,setUiAjaxConfiguration:U==="events"?l:L})})},Vo=Pf;var Af=T({name:"AjaxGroupCard",component:Vo,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as qo}from"react";import{jsx as N}from"react/jsx-runtime";var wf=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:p,url:U,sx:f}=o,m=qo($),d=qo(g)??B;return N(i,{card:p,data:o,children:N("div",{style:f,id:p,onClick:(u)=>{if(U)if(u.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else m?.(U)},children:N(d,{setUiAjaxConfiguration:C,uiConfig:r})})})},$o=wf;var Tf=T({name:"BoxCard",component:$o,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Hf}from"react";import{jsx as j}from"react/jsx-runtime";var Of=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:p,sx:U}=o,f=Hf(g)??B;return j(i,{card:p,data:o,children:j("div",{style:U,id:p,children:r.map((m,d)=>{return j(f,{uiConfig:m,setUiAjaxConfiguration:C},`children-${d}`)})})})},Go=Of;var Lf=T({name:"OneOfCard",component:Go,metadata:{author:"Swarm.ing",description:"Different variants"}});export{Tr as UnionCard,Ir as UILoading,B as UI,er as SessionStorageCard,Pr as SequenceCard,If as SecureStorageCard,i as PieCard,Lf as OneOfCard,tr as IOEventsCard,$r as HiddenCard,Br as HTMLEmbedCard,ff as DeviceStorageCard,Uf as CloudStorageCard,Tf as BoxCard,Yr as AutoRedirectCard,Af as AjaxGroupCard};
2
+ import{useContext as _,useEffect as g,useRef as ko}from"react";import{createContext as Xo,useContext as yo}from"react";var K=globalThis,L=(o,r)=>{let p=Symbol.for(o);if(!(p in K))K[p]=r();return K[p]};var Yo=L("@swarm.ing/pieui:context:pieConfig",()=>Xo(null)),Mo=()=>{let o=yo(Yo);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var Q=()=>{let{enableRenderingLog:o}=Mo();return o},c=Q;import{createContext as Ro}from"react";import{Centrifuge as Jf}from"centrifuge";var Qf=L("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var Ko=L("@swarm.ing/pieui:context:centrifuge",()=>Ro(null)),v=Ko;import{io as yf}from"socket.io-client";import{createContext as _o}from"react";var Kf=L("@swarm.ing/pieui:socket-cache",()=>new Map);var go=L("@swarm.ing/pieui:context:socket",()=>_o(null)),s=go;import xf from"mitt";import{createContext as xo,useCallback as lf,useContext as nf}from"react";var Eo=L("@swarm.ing/pieui:context:mitt",()=>xo(null));var X=Eo;import{jsx as No,jsxs as bo,Fragment as no}from"react/jsx-runtime";var lo=({card:o,data:r,children:p,useSocketioSupport:C=!1,useCentrifugeSupport:u=!1,useMittSupport:f=!1,centrifugeChannel:d=void 0,methods:I=void 0,stored:i=void 0})=>{let m=c(),U=ko(I);if(U.current=I,m)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:C,centrifuge:u,mitt:f,centrifugeChannel:d}),console.log("[PieCard] Methods:",I?Object.keys(I):"none"),console.log("[PieCard] Has children:",!!p);let S=_(s),H=_(v),w=_(X);if(g(()=>{if(!S||!C||!U.current||!r.name){if(m&&C)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!S,useSocketioSupport:C,hasMethods:!!U.current,hasDataName:!!r?.name});return}let Z=Object.keys(U.current??{}).map((O)=>{let D=`pie${O}_${r.name}`;if(m)console.log(`[PieCard] Socket.IO registering event: ${D}`);let B=($)=>{U.current?.[O]?.($)};return S.on(D,B),[D,B]});return()=>{Z.forEach(([O,D])=>{if(m)console.log(`[PieCard] Socket.IO unregistering event: ${O}`);S.off(O,D)})}},[S,r.name,C]),g(()=>{if(!H||!u||!d||!r.name){if(m&&u)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!H,useCentrifugeSupport:u,hasCentrifugeChannel:!!d,hasMethods:!!U.current,hasDataName:!!r?.name});return}let Z=Object.keys(U.current??{}).map((O)=>{let D=`pie${O}_${r.name}_${d}`;if(m)console.log(`[PieCard] Centrifuge subscribing to channel: ${D}`);let B=H.newSubscription(D);return B.on("publication",($)=>{if(m)console.log(`[PieCard] Centrifuge received data on ${D}:`,$.data);U.current?.[O]?.($.data)}),B.subscribe(),B});return()=>{Z.forEach((O)=>{if(m)console.log("[PieCard] Centrifuge unsubscribing from channel");O.unsubscribe(),H.removeSubscription(O)})}},[H,d,r.name,u]),g(()=>{if(!w||!f||!r.name){if(m&&f)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:f,hasMethods:!!U.current,hasDataName:!!r?.name});return}let P=Object.keys(U.current??{}),Z={};return P.forEach((O)=>{let D=`pie${O}_${r.name}`,B=($)=>{if(m)console.log(`[PieCard] Mitt registering event: ${D}`);U.current?.[O]?.($)};Z[D]=B,w.on(D,B)}),()=>{Object.entries(Z).forEach(([O,D])=>{if(m)console.log(`[PieCard] Mitt unregistering event: ${O}`);w.off(O,D)})}},[w,r.name,f]),m)console.log("[PieCard] Rendering complete, returning children");if(i!==void 0)return bo(no,{children:[No("input",{type:"hidden",name:r.name,value:JSON.stringify(i)}),p]});return p},T=lo;import{lazy as jo}from"react";var W=new Map;function to(o,r){return r.catch(()=>{if(W.get(o)===r)W.delete(o)}),W.set(o,r),r}function h(o,r){return jo(()=>{if(W.has(r))return W.get(r);return to(r,o().then((p)=>p))})}var e=L("@swarm.ing/pieui:component-registry",()=>new Map),ao=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=h(r.loader,o.name),r.isLazy=!0;return r};function A(o){let r=ao(o);return e.set(r.name,r),r.component}var y=(o)=>{return e.get(o)};import{useContext as oo,memo as mr}from"react";import{createContext as co}from"react";import{jsx as ho,Fragment as so}from"react/jsx-runtime";var vo=L("@swarm.ing/pieui:context:fallback",()=>co(ho(so,{}))),G=vo;import{createContext as eo}from"react";var or=L("@swarm.ing/pieui:context:lazyError",()=>eo(void 0)),Y=or;import{Component as rr,Suspense as fr}from"react";import{jsx as ur}from"react/jsx-runtime";var pr=2,Cr=400;class J extends rr{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<pr){let r=Cr*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((p)=>({failed:!1,attempt:p.attempt+1}))},r)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return ur(fr,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as x}from"react/jsx-runtime";function dr({uiConfig:o,setUiAjaxConfiguration:r}){let p=oo(G),C=oo(Y),u=Q();if(u)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let f=y(o.card);if(!f?.component){if(u)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return p}if(u)console.log("[UI] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata});let d=f.component,I=x(d,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(f.isLazy){if(u)console.log("[UI] Rendering lazy component with Suspense:",f.name);return x(J,{name:f.name,fallback:f.fallback?x(f.fallback,{}):p,onError:C,children:I})}if(u)console.log("[UI] Rendering component directly:",f.name);return I}var q=mr(dr);import{useContext as ro}from"react";import{createContext as Ur}from"react";var ir=L("@swarm.ing/pieui:context:uiRenderer",()=>Ur(null)),V=ir;import{jsx as M}from"react/jsx-runtime";function fo({uiConfig:o,setUiAjaxConfiguration:r}){let p=ro(G),C=ro(Y),u=Q();if(u)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let f=y(o.card);if(!f?.component){if(u)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return p}if(u)console.log("[UILoading] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata,hasFallback:!!f.fallback});if(f.fallback){if(u)console.log("[UILoading] Rendering fallback for:",f.name);let i=f.fallback;return M(i,{})}if(u)console.log("[UILoading] No fallback, rendering full component:",f.name);let d=f.component,I=M(V.Provider,{value:fo,children:M(d,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(f.isLazy)return M(J,{name:f.name,fallback:p,onError:C,children:I});return I}var Ir=fo;import{useContext as Pr}from"react";import{jsx as E}from"react/jsx-runtime";var wr=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:C,sx:u}=o,f=Pr(V)??q;return E(T,{card:C,data:o,children:E("div",{style:u,id:C,children:r.map((d,I)=>{return E(f,{uiConfig:d,setUiAjaxConfiguration:p},`children-${I}`)})})})},po=wr;var Sr=A({name:"SequenceCard",component:po,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Ar}from"react";import{jsx as Co}from"react/jsx-runtime";var Tr=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:C}=o,u=Ar(V)??q;return Co(T,{card:C,data:o,children:r.map((f,d)=>{return Co(u,{uiConfig:f,setUiAjaxConfiguration:p},`children-${d}`)})})},uo=Tr;var Hr=A({name:"UnionCard",component:uo,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as zr,useState as Zr}from"react";import Br from"html-react-parser";import{useCallback as R,useEffect as Or,useRef as k,useState as Lr}from"react";function Dr(){let o=new AudioContext,r=o.createOscillator(),p=r.connect(o.createMediaStreamDestination());r.start();let C=p.stream.getAudioTracks()[0];return C.enabled=!1,C}function l(o=null,r){let[p,C]=Lr(!1),u=k(null),f=k(null),d=k(null),I=R(async(S,H=!0)=>{if(u.current)i();let w=new RTCPeerConnection;if(w.onconnectionstatechange=()=>{if(w.connectionState==="connected")C(!0);else if(["disconnected","failed","closed"].includes(w.connectionState))C(!1)},w.ontrack=(z)=>{if(o)o.srcObject=z.streams[0]},H){let z=await navigator.mediaDevices.getUserMedia({audio:!0});w.addTrack(z.getTracks()[0],z)}else{let z=Dr();w.addTrack(z)}let P=w.createDataChannel("oai-events");f.current=P,d.current=new Promise((z)=>{P.addEventListener("open",()=>{z()})});let Z=await w.createOffer();await w.setLocalDescription(Z);let $=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:Z.sdp,headers:{Authorization:`Bearer ${S}`,"Content-Type":"application/sdp"}})).text();await w.setRemoteDescription({type:"answer",sdp:$}),u.current=w,await d.current},[o]),i=R(()=>{let S=f.current;if(S)S.close();u.current?.getSenders()?.forEach((H)=>H.track?.stop()),u.current?.close(),C(!1),u.current=null,f.current=null,d.current=null},[o]),m=R((S)=>{let H=f.current;if(!H){console.error("Data channel is not ready",S);return}let w=new Date().toLocaleTimeString();if(S.event_id=S.event_id||crypto.randomUUID(),H.send(JSON.stringify(S)),!S.timestamp)S.timestamp=w;r?.(S)},[r,o]),U=R((S)=>{if(!f.current){console.error("Data channel is not ready");return}let w=()=>{m({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:S}]}}),m({type:"response.create"})};if(d.current)d.current.then(w);else w()},[r,o]);return Or(()=>{let S=f.current;if(!S)return;let H=(w)=>{let P=JSON.parse(w.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();r?.(P)};return S.addEventListener("message",H),()=>{S.removeEventListener("message",H)}},[r,o]),{isSessionActive:p,startSession:I,stopSession:i,sendTextMessage:U}}import{jsx as qr}from"react/jsx-runtime";var Vr=({data:o})=>{let{html:r,useSocketioSupport:p,useCentrifugeSupport:C,useMittSupport:u,centrifugeChannel:f}=o,[d,I]=Zr(r),{isSessionActive:i,startSession:m,sendTextMessage:U}=l(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)I((Z)=>Z+P.delta)});return zr(()=>{I(r)},[r]),qr(T,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{I(P.value)},generateUsingAI:async(P)=>{try{if(!i&&P.token)await m(P.token,!1);U(P.prompt)}catch(Z){console.error("Failed to generate using AI",Z)}},initializeAI:async(P)=>{if(!i&&P.token)await m(P.token,!1)}},useCentrifugeSupport:C,useSocketioSupport:p,useMittSupport:u,centrifugeChannel:f,children:Br(d)})},mo=Vr;var $r=A({name:"HTMLEmbedCard",component:mo,metadata:{author:"Swarm.ing"}});import{useEffect as Gr,useState as Jr}from"react";import{jsx as Uo}from"react/jsx-runtime";var Fr=({data:o})=>{let{name:r,value:p,useSocketioSupport:C,useCentrifugeSupport:u,useMittSupport:f,centrifugeChannel:d}=o,[I,i]=Jr(p);return Gr(()=>{i(p)},[p]),Uo(T,{card:"HiddenCard",data:o,useSocketioSupport:C,useCentrifugeSupport:u,useMittSupport:f,centrifugeChannel:d,methods:{update:({value:m})=>{i(m)}},children:Uo("input",{type:"hidden",id:r,name:r,value:I})})},io=Fr;var Qr=A({name:"HiddenCard",component:io,metadata:{author:"Swarm.ing"}});import{useContext as Io,useEffect as yr}from"react";import{createContext as Wr}from"react";var Xr=L("@swarm.ing/pieui:context:navigate",()=>Wr(void 0)),F=Xr;import{jsx as Rr,Fragment as Mr}from"react/jsx-runtime";var Yr=({data:o})=>{let{url:r}=o,p=Io(F),C=Io(G);return yr(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else p?.(r)},[r,p]),Rr(Mr,{children:C})},Po=Yr;var Kr=A({name:"AutoRedirectCard",component:Po,metadata:{author:"Swarm.ing"}});import{Bounce as _r,Slide as gr,Zoom as xr,Flip as Er}from"react-toastify";import{toast as kr,ToastContainer as lr}from"react-toastify";import{useContext as nr,useMemo as Nr,useRef as br}from"react";import{jsx as n,Fragment as sr}from"react/jsx-runtime";var jr={bounce:_r,slide:gr,zoom:xr,flip:Er},tr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?jr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};kr(o.message,r)},ar=(o)=>{console.log("Log event",o)},cr=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(C){console.error("[IOEventsCard] Failed to show notification",C)}},p=window.Notification.permission;if(p==="granted"){r();return}if(p==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((C)=>{if(C==="granted")r()})},vr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:p,useMittSupport:C,centrifugeChannel:u}=o,f=nr(F),d=br(f);d.current=f;let I=Nr(()=>({alert:tr,log:ar,push:cr,redirect:(i)=>{if(i.to){let m=i.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()},reload:(i)=>{if(i.to){let m=i.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()}}),[]);return n(sr,{children:n(T,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:p,useMittSupport:C,centrifugeChannel:u,methods:I,children:n(lr,{})})})},wo=vr;var hr=A({name:"IOEventsCard",component:wo,metadata:{author:"Swarm.ing"}});import{useEffect as So,useState as er}from"react";import{jsx as Ao}from"react/jsx-runtime";var of=({data:o})=>{let{name:r,key:p,value:C,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=er(C);return So(()=>{m(C)},[C]),So(()=>{if(typeof window>"u")return;sessionStorage.setItem(p,i)},[p,i]),Ao(T,{card:"SessionStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{sessionStorage.removeItem(p),m("")}},children:Ao("input",{type:"hidden",id:r,name:r,value:i})})},To=of;var rf=A({name:"SessionStorageCard",component:To,metadata:{author:"PieData"}});import{useEffect as Ho,useState as ff}from"react";import{jsx as Oo}from"react/jsx-runtime";var pf=({data:o})=>{let{name:r,key:p,value:C,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=ff(C);return Ho(()=>{m(C)},[C]),Ho(()=>{if(typeof window>"u")return;localStorage.setItem(p,i)},[p,i]),Oo(T,{card:"DeviceStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{localStorage.removeItem(p),m("")}},children:Oo("input",{type:"hidden",id:r,name:r,value:i})})},Lo=pf;var Cf=A({name:"DeviceStorageCard",component:Lo,metadata:{author:"PieData"}});import{useEffect as Do,useState as uf}from"react";import{jsx as zo}from"react/jsx-runtime";var mf=({data:o})=>{let{name:r,key:p,value:C,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=uf(C);return Do(()=>{m(C)},[C]),Do(()=>{if(typeof window>"u")return;let U=window.Telegram?.WebApp?.CloudStorage;if(!U)return;U.setItem(p,i)},[p,i]),zo(T,{card:"CloudStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{let U=window.Telegram?.WebApp?.CloudStorage;if(U)U.removeItem(p);m("")}},children:zo("input",{type:"hidden",id:r,name:r,value:i})})},Zo=mf;var df=A({name:"CloudStorageCard",component:Zo,metadata:{author:"PieData"}});import{useEffect as Bo,useState as Uf}from"react";import{jsx as Vo}from"react/jsx-runtime";var If=({data:o})=>{let{name:r,key:p,value:C,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=Uf(C);return Bo(()=>{m(C)},[C]),Bo(()=>{if(typeof window>"u")return;let U=window.Telegram?.WebApp?.SecureStorage;if(!U)return;U.setItem(p,i)},[p,i]),Vo(T,{card:"SecureStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{let U=window.Telegram?.WebApp?.SecureStorage;if(U)U.removeItem(p);m("")}},children:Vo("input",{type:"hidden",id:r,name:r,value:i})})},qo=If;var Pf=A({name:"SecureStorageCard",component:qo,metadata:{author:"PieData"}});import{useCallback as N,useContext as b,useEffect as wf,useRef as Sf,useState as $o}from"react";import{jsx as Go}from"react/jsx-runtime";var Af=({data:o,content:r})=>{let{useLoader:p,noReturn:C,returnType:u,useSocketioSupport:f,useCentrifugeSupport:d,useMittSupport:I,centrifugeChannel:i}=o,m=b(G),U=b(V)??q,[S,H]=$o(!1),[w,P]=$o(null),Z=Sf(r),O=b(X),D=N((z)=>{if(z===null)H(!0);else if(H(!1),!C)Z.current=z;if(!C)P(z)},[C]),B=N((z)=>{Z.current=z.content,P(z.content)},[]),$=N((z)=>{if(z===null)H(!0);else if(H(!1),!C)for(let a of z)O?.emit(a.name,a.data)},[C,O]);if(wf(()=>{P(r),H(!1)},[r]),!w&&p)return m;return Go(T,{card:"AjaxGroupCard",data:o,methods:{changeContent:B},useSocketioSupport:f,useCentrifugeSupport:d,useMittSupport:I,centrifugeChannel:i,children:Go(U,{uiConfig:w??Z.current,setUiAjaxConfiguration:u==="events"?$:D})})},Jo=Af;var Tf=A({name:"AjaxGroupCard",component:Jo,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as Fo}from"react";import{jsx as j}from"react/jsx-runtime";var Hf=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:C,url:u,sx:f}=o,d=Fo(F),I=Fo(V)??q;return j(T,{card:C,data:o,children:j("div",{style:f,id:C,onClick:(m)=>{if(u)if(m.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else d?.(u)},children:j(I,{setUiAjaxConfiguration:p,uiConfig:r})})})},Qo=Hf;var Of=A({name:"BoxCard",component:Qo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Lf}from"react";import{jsx as t}from"react/jsx-runtime";var Df=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:C,sx:u}=o,f=Lf(V)??q;return t(T,{card:C,data:o,children:t("div",{style:u,id:C,children:r.map((d,I)=>{return t(f,{uiConfig:d,setUiAjaxConfiguration:p},`children-${I}`)})})})},Wo=Df;var zf=A({name:"OneOfCard",component:Wo,metadata:{author:"Swarm.ing",description:"Different variants"}});export{Hr as UnionCard,Ir as UILoading,q as UI,rf as SessionStorageCard,Sr as SequenceCard,Pf as SecureStorageCard,T as PieCard,zf as OneOfCard,hr as IOEventsCard,Qr as HiddenCard,$r as HTMLEmbedCard,Cf as DeviceStorageCard,df as CloudStorageCard,Of as BoxCard,Kr as AutoRedirectCard,Tf as AjaxGroupCard};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var Tr=Object.create;var{getPrototypeOf:ir,defineProperty:K,getOwnPropertyNames:Do,getOwnPropertyDescriptor:Hr}=Object,zo=Object.prototype.hasOwnProperty;var Zo=(o,r,p)=>{p=o!=null?Tr(ir(o)):{};let f=r||!o||!o.__esModule?K(p,"default",{value:o,enumerable:!0}):p;for(let U of Do(o))if(!zo.call(f,U))K(f,U,{get:()=>o[U],enumerable:!0});return f},Lo=new WeakMap,Or=(o)=>{var r=Lo.get(o),p;if(r)return r;if(r=K({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")Do(o).map((f)=>!zo.call(r,f)&&K(r,f,{get:()=>o[f],enumerable:!(p=Hr(o,f))||p.enumerable}));return Lo.set(o,r),r};var Lr=(o,r)=>{for(var p in r)K(o,p,{get:r[p],enumerable:!0,configurable:!0,set:(f)=>r[p]=()=>f})};var rf={};Lr(rf,{UnionCard:()=>yo,UILoading:()=>Ko,UI:()=>l,SessionStorageCard:()=>or,SequenceCard:()=>_o,SecureStorageCard:()=>ur,PieCard:()=>T,OneOfCard:()=>wr,IOEventsCard:()=>so,HiddenCard:()=>ao,HTMLEmbedCard:()=>jo,DeviceStorageCard:()=>fr,CloudStorageCard:()=>Cr,BoxCard:()=>dr,AutoRedirectCard:()=>to,AjaxGroupCard:()=>Ir});module.exports=Or(rf);var $=require("react");var j=require("react"),Dr=j.createContext(null),zr=()=>{let o=j.useContext(Dr);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var M=()=>{let{enableRenderingLog:o}=zr();return o},go=M;var Bo=require("react"),Zr=require("centrifuge");var gr=Bo.createContext(null),lo=gr;var Br=require("socket.io-client"),Vo=require("react");var lr=Vo.createContext(null),qo=lr;var Vr=Zo(require("mitt")),n=require("react");var qr=n.createContext(null);var a=qr;var J=require("react/jsx-runtime"),$r=({card:o,data:r,children:p,useSocketioSupport:f=!1,useCentrifugeSupport:U=!1,useMittSupport:C=!1,centrifugeChannel:m=void 0,methods:d=void 0,stored:S=void 0})=>{let u=go(),I=$.useRef(d);if(I.current=d,u)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:f,centrifuge:U,mitt:C,centrifugeChannel:m}),console.log("[PieCard] Methods:",d?Object.keys(d):"none"),console.log("[PieCard] Has children:",!!p);let w=$.useContext(qo),H=$.useContext(lo),A=$.useContext(a);if($.useEffect(()=>{if(!w||!f||!I.current||!r.name){if(u&&f)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!w,useSocketioSupport:f,hasMethods:!!I.current,hasDataName:!!r?.name});return}let z=Object.keys(I.current??{}).map((O)=>{let L=`pie${O}_${r.name}`;if(u)console.log(`[PieCard] Socket.IO registering event: ${L}`);let B=(q)=>{I.current?.[O]?.(q)};return w.on(L,B),[L,B]});return()=>{z.forEach(([O,L])=>{if(u)console.log(`[PieCard] Socket.IO unregistering event: ${O}`);w.off(O,L)})}},[w,r.name,f]),$.useEffect(()=>{if(!H||!U||!m||!r.name){if(u&&U)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!H,useCentrifugeSupport:U,hasCentrifugeChannel:!!m,hasMethods:!!I.current,hasDataName:!!r?.name});return}let z=Object.keys(I.current??{}).map((O)=>{let L=`pie${O}_${r.name}_${m}`;if(u)console.log(`[PieCard] Centrifuge subscribing to channel: ${L}`);let B=H.newSubscription(L);return B.on("publication",(q)=>{if(u)console.log(`[PieCard] Centrifuge received data on ${L}:`,q.data);I.current?.[O]?.(q.data)}),B.subscribe(),B});return()=>{z.forEach((O)=>{if(u)console.log("[PieCard] Centrifuge unsubscribing from channel");O.unsubscribe(),H.removeSubscription(O)})}},[H,m,r.name,U]),$.useEffect(()=>{if(!A||!C||!r.name){if(u&&C)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!A,useMittSupport:C,hasMethods:!!I.current,hasDataName:!!r?.name});return}let P=Object.keys(I.current??{}),z={};return P.forEach((O)=>{let L=`pie${O}_${r.name}`,B=(q)=>{if(u)console.log(`[PieCard] Mitt registering event: ${L}`);I.current?.[O]?.(q)};z[L]=B,A.on(L,B)}),()=>{Object.entries(z).forEach(([O,L])=>{if(u)console.log(`[PieCard] Mitt unregistering event: ${O}`);A.off(O,L)})}},[A,r.name,C]),u)console.log("[PieCard] Rendering complete, returning children");if(S!==void 0)return J.jsxs(J.Fragment,{children:[J.jsx("input",{type:"hidden",name:r.name,value:JSON.stringify(S)}),p]});return p},T=$r;var $o=require("react"),R=new Map;function Gr(o,r){return r.catch(()=>{if(R.get(o)===r)R.delete(o)}),R.set(o,r),r}function Go(o,r){return $o.lazy(()=>{if(R.has(r))return R.get(r);return Gr(r,o().then((p)=>p))})}var Fo=new Map,Fr=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=Go(r.loader,o.name),r.isLazy=!0;return r};function i(o){let r=Fr(o);return Fo.set(r.name,r),r.component}var c=(o)=>{return Fo.get(o)};var _=require("react");var Jo=require("react"),v=require("react/jsx-runtime"),Jr=Jo.createContext(v.jsx(v.Fragment,{})),G=Jr;var Qo=require("react"),Qr=Qo.createContext(void 0),t=Qr;var h=require("react"),Wo=require("react/jsx-runtime"),Wr=2,Xr=400;class Q extends h.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<Wr){let r=Xr*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((p)=>({failed:!1,attempt:p.attempt+1}))},r)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return Wo.jsx(h.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var s=require("react/jsx-runtime");function Yr({uiConfig:o,setUiAjaxConfiguration:r}){let p=_.useContext(G),f=_.useContext(t),U=M();if(U)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let C=c(o.card);if(!C?.component){if(U)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return p}if(U)console.log("[UI] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata});let m=C.component,d=s.jsx(m,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(C.isLazy){if(U)console.log("[UI] Rendering lazy component with Suspense:",C.name);return s.jsx(Q,{name:C.name,fallback:C.fallback?s.jsx(C.fallback,{}):p,onError:f,children:d})}if(U)console.log("[UI] Rendering component directly:",C.name);return d}var l=_.memo(Yr);var uo=require("react");var Xo=require("react"),Kr=Xo.createContext(null),V=Kr;var E=require("react/jsx-runtime");function Yo({uiConfig:o,setUiAjaxConfiguration:r}){let p=uo.useContext(G),f=uo.useContext(t),U=M();if(U)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let C=c(o.card);if(!C?.component){if(U)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return p}if(U)console.log("[UILoading] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata,hasFallback:!!C.fallback});if(C.fallback){if(U)console.log("[UILoading] Rendering fallback for:",C.name);let S=C.fallback;return E.jsx(S,{})}if(U)console.log("[UILoading] No fallback, rendering full component:",C.name);let m=C.component,d=E.jsx(V.Provider,{value:Yo,children:E.jsx(m,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(C.isLazy)return E.jsx(Q,{name:C.name,fallback:p,onError:f,children:d});return d}var Ko=Yo;var Mo=require("react");var e=require("react/jsx-runtime"),Mr=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f,sx:U}=o,C=Mo.useContext(V)??l;return e.jsx(T,{card:f,data:o,children:e.jsx("div",{style:U,id:f,children:r.map((m,d)=>{return e.jsx(C,{uiConfig:m,setUiAjaxConfiguration:p},`children-${d}`)})})})},Ro=Mr;var _o=i({name:"SequenceCard",component:Ro,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Eo=require("react");var mo=require("react/jsx-runtime"),Rr=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f}=o,U=Eo.useContext(V)??l;return mo.jsx(T,{card:f,data:o,children:r.map((C,m)=>{return mo.jsx(U,{uiConfig:C,setUiAjaxConfiguration:p},`children-${m}`)})})},xo=Rr;var yo=i({name:"UnionCard",component:xo,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var oo=require("react"),bo=Zo(require("html-react-parser"));var g=require("react");function _r(){let o=new AudioContext,r=o.createOscillator(),p=r.connect(o.createMediaStreamDestination());r.start();let f=p.stream.getAudioTracks()[0];return f.enabled=!1,f}function Io(o=null,r){let[p,f]=g.useState(!1),U=g.useRef(null),C=g.useRef(null),m=g.useRef(null),d=g.useCallback(async(w,H=!0)=>{if(U.current)S();let A=new RTCPeerConnection;if(A.onconnectionstatechange=()=>{if(A.connectionState==="connected")f(!0);else if(["disconnected","failed","closed"].includes(A.connectionState))f(!1)},A.ontrack=(D)=>{if(o)o.srcObject=D.streams[0]},H){let D=await navigator.mediaDevices.getUserMedia({audio:!0});A.addTrack(D.getTracks()[0],D)}else{let D=_r();A.addTrack(D)}let P=A.createDataChannel("oai-events");C.current=P,m.current=new Promise((D)=>{P.addEventListener("open",()=>{D()})});let z=await A.createOffer();await A.setLocalDescription(z);let q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:z.sdp,headers:{Authorization:`Bearer ${w}`,"Content-Type":"application/sdp"}})).text();await A.setRemoteDescription({type:"answer",sdp:q}),U.current=A,await m.current},[o]),S=g.useCallback(()=>{let w=C.current;if(w)w.close();U.current?.getSenders()?.forEach((H)=>H.track?.stop()),U.current?.close(),f(!1),U.current=null,C.current=null,m.current=null},[o]),u=g.useCallback((w)=>{let H=C.current;if(!H){console.error("Data channel is not ready",w);return}let A=new Date().toLocaleTimeString();if(w.event_id=w.event_id||crypto.randomUUID(),H.send(JSON.stringify(w)),!w.timestamp)w.timestamp=A;r?.(w)},[r,o]),I=g.useCallback((w)=>{if(!C.current){console.error("Data channel is not ready");return}let A=()=>{u({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:w}]}}),u({type:"response.create"})};if(m.current)m.current.then(A);else A()},[r,o]);return g.useEffect(()=>{let w=C.current;if(!w)return;let H=(A)=>{let P=JSON.parse(A.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();r?.(P)};return w.addEventListener("message",H),()=>{w.removeEventListener("message",H)}},[r,o]),{isSessionActive:p,startSession:d,stopSession:S,sendTextMessage:I}}var No=require("react/jsx-runtime"),Er=({data:o})=>{let{html:r,useSocketioSupport:p,useCentrifugeSupport:f,useMittSupport:U,centrifugeChannel:C}=o,[m,d]=oo.useState(r),{isSessionActive:S,startSession:u,sendTextMessage:I}=Io(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)d((z)=>z+P.delta)});return oo.useEffect(()=>{d(r)},[r]),No.jsx(T,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{d(P.value)},generateUsingAI:async(P)=>{try{if(!S&&P.token)await u(P.token,!1);I(P.prompt)}catch(z){console.error("Failed to generate using AI",z)}},initializeAI:async(P)=>{if(!S&&P.token)await u(P.token,!1)}},useCentrifugeSupport:f,useSocketioSupport:p,useMittSupport:U,centrifugeChannel:C,children:bo.default(m)})},ko=Er;var jo=i({name:"HTMLEmbedCard",component:ko,metadata:{author:"Swarm.ing"}});var ro=require("react");var So=require("react/jsx-runtime"),xr=({data:o})=>{let{name:r,value:p,useSocketioSupport:f,useCentrifugeSupport:U,useMittSupport:C,centrifugeChannel:m}=o,[d,S]=ro.useState(p);return ro.useEffect(()=>{S(p)},[p]),So.jsx(T,{card:"HiddenCard",data:o,useSocketioSupport:f,useCentrifugeSupport:U,useMittSupport:C,centrifugeChannel:m,methods:{update:({value:u})=>{S(u)}},children:So.jsx("input",{type:"hidden",id:r,name:r,value:d})})},no=xr;var ao=i({name:"HiddenCard",component:no,metadata:{author:"Swarm.ing"}});var x=require("react");var co=require("react"),yr=co.createContext(void 0),W=yr;var fo=require("react/jsx-runtime"),br=({data:o})=>{let{url:r}=o,p=x.useContext(W),f=x.useContext(G);return x.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else p?.(r)},[r,p]),fo.jsx(fo.Fragment,{children:f})},vo=br;var to=i({name:"AutoRedirectCard",component:vo,metadata:{author:"Swarm.ing"}});var F=require("react-toastify"),po=require("react-toastify");var Y=require("react");var X=require("react/jsx-runtime"),kr={bounce:F.Bounce,slide:F.Slide,zoom:F.Zoom,flip:F.Flip},Nr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?kr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};po.toast(o.message,r)},jr=(o)=>{console.log("Log event",o)},nr=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(f){console.error("[IOEventsCard] Failed to show notification",f)}},p=window.Notification.permission;if(p==="granted"){r();return}if(p==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((f)=>{if(f==="granted")r()})},ar=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:p,useMittSupport:f,centrifugeChannel:U}=o,C=Y.useContext(W),m=Y.useRef(C);m.current=C;let d=Y.useMemo(()=>({alert:Nr,log:jr,push:nr,redirect:(S)=>{if(S.to){let u=S.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else m.current?.(u)}else window.location.reload()},reload:(S)=>{if(S.to){let u=S.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else m.current?.(u)}else window.location.reload()}}),[]);return X.jsx(X.Fragment,{children:X.jsx(T,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:p,useMittSupport:f,centrifugeChannel:U,methods:d,children:X.jsx(po.ToastContainer,{})})})},ho=ar;var so=i({name:"IOEventsCard",component:ho,metadata:{author:"Swarm.ing"}});var y=require("react");var Po=require("react/jsx-runtime"),cr=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d}=o,[S,u]=y.useState(f);return y.useEffect(()=>{u(f)},[f]),y.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(p,S)},[p,S]),Po.jsx(T,{card:"SessionStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d,methods:{update:({value:I})=>{u(I)},remove:()=>{sessionStorage.removeItem(p),u("")}},children:Po.jsx("input",{type:"hidden",id:r,name:r,value:S})})},eo=cr;var or=i({name:"SessionStorageCard",component:eo,metadata:{author:"PieData"}});var b=require("react");var Ao=require("react/jsx-runtime"),vr=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d}=o,[S,u]=b.useState(f);return b.useEffect(()=>{u(f)},[f]),b.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(p,S)},[p,S]),Ao.jsx(T,{card:"DeviceStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d,methods:{update:({value:I})=>{u(I)},remove:()=>{localStorage.removeItem(p),u("")}},children:Ao.jsx("input",{type:"hidden",id:r,name:r,value:S})})},rr=vr;var fr=i({name:"DeviceStorageCard",component:rr,metadata:{author:"PieData"}});var k=require("react");var wo=require("react/jsx-runtime"),tr=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d}=o,[S,u]=k.useState(f);return k.useEffect(()=>{u(f)},[f]),k.useEffect(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp?.CloudStorage;if(!I)return;I.setItem(p,S)},[p,S]),wo.jsx(T,{card:"CloudStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d,methods:{update:({value:I})=>{u(I)},remove:()=>{let I=window.Telegram?.WebApp?.CloudStorage;if(I)I.removeItem(p);u("")}},children:wo.jsx("input",{type:"hidden",id:r,name:r,value:S})})},pr=tr;var Cr=i({name:"CloudStorageCard",component:pr,metadata:{author:"PieData"}});var N=require("react");var To=require("react/jsx-runtime"),hr=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d}=o,[S,u]=N.useState(f);return N.useEffect(()=>{u(f)},[f]),N.useEffect(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp?.SecureStorage;if(!I)return;I.setItem(p,S)},[p,S]),To.jsx(T,{card:"SecureStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:d,methods:{update:({value:I})=>{u(I)},remove:()=>{let I=window.Telegram?.WebApp?.SecureStorage;if(I)I.removeItem(p);u("")}},children:To.jsx("input",{type:"hidden",id:r,name:r,value:S})})},Ur=hr;var ur=i({name:"SecureStorageCard",component:Ur,metadata:{author:"PieData"}});var Z=require("react");var io=require("react/jsx-runtime"),sr=({data:o,content:r})=>{let{useLoader:p,noReturn:f,returnType:U,useSocketioSupport:C,useCentrifugeSupport:m,useMittSupport:d,centrifugeChannel:S}=o,u=Z.useContext(G),I=Z.useContext(V)??l,[w,H]=Z.useState(!1),[A,P]=Z.useState(null),z=Z.useRef(r),O=Z.useContext(a),L=Z.useCallback((D)=>{if(D===null)H(!0);else if(H(!1),!f)z.current=D;if(!f)P(D)},[f]),B=Z.useCallback((D)=>{z.current=D.content,P(D.content)},[]),q=Z.useCallback((D)=>{if(D===null)H(!0);else if(H(!1),!f)for(let Oo of D)O?.emit(Oo.name,Oo.data)},[f,O]);if(Z.useEffect(()=>{P(r),H(!1)},[r]),!A&&p)return u;return io.jsx(T,{card:"AjaxGroupCard",data:o,methods:{changeContent:B},useSocketioSupport:C,useCentrifugeSupport:m,useMittSupport:d,centrifugeChannel:S,children:io.jsx(I,{uiConfig:A??z.current,setUiAjaxConfiguration:U==="events"?q:L})})},mr=sr;var Ir=i({name:"AjaxGroupCard",component:mr,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var Ho=require("react");var Co=require("react/jsx-runtime"),er=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f,url:U,sx:C}=o,m=Ho.useContext(W),d=Ho.useContext(V)??l;return Co.jsx(T,{card:f,data:o,children:Co.jsx("div",{style:C,id:f,onClick:(u)=>{if(U)if(u.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else m?.(U)},children:Co.jsx(d,{setUiAjaxConfiguration:p,uiConfig:r})})})},Sr=er;var dr=i({name:"BoxCard",component:Sr,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Pr=require("react");var Uo=require("react/jsx-runtime"),of=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f,sx:U}=o,C=Pr.useContext(V)??l;return Uo.jsx(T,{card:f,data:o,children:Uo.jsx("div",{style:U,id:f,children:r.map((m,d)=>{return Uo.jsx(C,{uiConfig:m,setUiAjaxConfiguration:p},`children-${d}`)})})})},Ar=of;var wr=i({name:"OneOfCard",component:Ar,metadata:{author:"Swarm.ing",description:"Different variants"}});
2
+ var Hr=Object.create;var{getPrototypeOf:Or,defineProperty:K,getOwnPropertyNames:Zo,getOwnPropertyDescriptor:Lr}=Object,Bo=Object.prototype.hasOwnProperty;var Vo=(o,r,f)=>{f=o!=null?Hr(Or(o)):{};let p=r||!o||!o.__esModule?K(f,"default",{value:o,enumerable:!0}):f;for(let u of Zo(o))if(!Bo.call(p,u))K(p,u,{get:()=>o[u],enumerable:!0});return p},zo=new WeakMap,Dr=(o)=>{var r=zo.get(o),f;if(r)return r;if(r=K({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")Zo(o).map((p)=>!Bo.call(r,p)&&K(r,p,{get:()=>o[p],enumerable:!(f=Lr(o,p))||f.enumerable}));return zo.set(o,r),r};var zr=(o,r)=>{for(var f in r)K(o,f,{get:r[f],enumerable:!0,configurable:!0,set:(p)=>r[f]=()=>p})};var pf={};zr(pf,{UnionCard:()=>no,UILoading:()=>_o,UI:()=>$,SessionStorageCard:()=>fr,SequenceCard:()=>Eo,SecureStorageCard:()=>Ur,PieCard:()=>A,OneOfCard:()=>Tr,IOEventsCard:()=>or,HiddenCard:()=>co,HTMLEmbedCard:()=>to,DeviceStorageCard:()=>Cr,CloudStorageCard:()=>mr,BoxCard:()=>wr,AutoRedirectCard:()=>ho,AjaxGroupCard:()=>Ir});module.exports=Dr(pf);var F=require("react");var j=require("react");var Uo=globalThis,L=(o,r)=>{let f=Symbol.for(o);if(!(f in Uo))Uo[f]=r();return Uo[f]};var Zr=L("@swarm.ing/pieui:context:pieConfig",()=>j.createContext(null)),Br=()=>{let o=j.useContext(Zr);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var _=()=>{let{enableRenderingLog:o}=Br();return o},qo=_;var $o=require("react"),Vr=require("centrifuge");var If=L("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var qr=L("@swarm.ing/pieui:context:centrifuge",()=>$o.createContext(null)),Go=qr;var $r=require("socket.io-client"),Jo=require("react");var Af=L("@swarm.ing/pieui:socket-cache",()=>new Map);var Gr=L("@swarm.ing/pieui:context:socket",()=>Jo.createContext(null)),Fo=Gr;var Jr=Vo(require("mitt")),t=require("react");var Fr=L("@swarm.ing/pieui:context:mitt",()=>t.createContext(null));var a=Fr;var X=require("react/jsx-runtime"),Qr=({card:o,data:r,children:f,useSocketioSupport:p=!1,useCentrifugeSupport:u=!1,useMittSupport:C=!1,centrifugeChannel:d=void 0,methods:I=void 0,stored:i=void 0})=>{let m=qo(),U=F.useRef(I);if(U.current=I,m)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:p,centrifuge:u,mitt:C,centrifugeChannel:d}),console.log("[PieCard] Methods:",I?Object.keys(I):"none"),console.log("[PieCard] Has children:",!!f);let S=F.useContext(Fo),H=F.useContext(Go),w=F.useContext(a);if(F.useEffect(()=>{if(!S||!p||!U.current||!r.name){if(m&&p)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!S,useSocketioSupport:p,hasMethods:!!U.current,hasDataName:!!r?.name});return}let Z=Object.keys(U.current??{}).map((O)=>{let D=`pie${O}_${r.name}`;if(m)console.log(`[PieCard] Socket.IO registering event: ${D}`);let q=(J)=>{U.current?.[O]?.(J)};return S.on(D,q),[D,q]});return()=>{Z.forEach(([O,D])=>{if(m)console.log(`[PieCard] Socket.IO unregistering event: ${O}`);S.off(O,D)})}},[S,r.name,p]),F.useEffect(()=>{if(!H||!u||!d||!r.name){if(m&&u)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!H,useCentrifugeSupport:u,hasCentrifugeChannel:!!d,hasMethods:!!U.current,hasDataName:!!r?.name});return}let Z=Object.keys(U.current??{}).map((O)=>{let D=`pie${O}_${r.name}_${d}`;if(m)console.log(`[PieCard] Centrifuge subscribing to channel: ${D}`);let q=H.newSubscription(D);return q.on("publication",(J)=>{if(m)console.log(`[PieCard] Centrifuge received data on ${D}:`,J.data);U.current?.[O]?.(J.data)}),q.subscribe(),q});return()=>{Z.forEach((O)=>{if(m)console.log("[PieCard] Centrifuge unsubscribing from channel");O.unsubscribe(),H.removeSubscription(O)})}},[H,d,r.name,u]),F.useEffect(()=>{if(!w||!C||!r.name){if(m&&C)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:C,hasMethods:!!U.current,hasDataName:!!r?.name});return}let P=Object.keys(U.current??{}),Z={};return P.forEach((O)=>{let D=`pie${O}_${r.name}`,q=(J)=>{if(m)console.log(`[PieCard] Mitt registering event: ${D}`);U.current?.[O]?.(J)};Z[D]=q,w.on(D,q)}),()=>{Object.entries(Z).forEach(([O,D])=>{if(m)console.log(`[PieCard] Mitt unregistering event: ${O}`);w.off(O,D)})}},[w,r.name,C]),m)console.log("[PieCard] Rendering complete, returning children");if(i!==void 0)return X.jsxs(X.Fragment,{children:[X.jsx("input",{type:"hidden",name:r.name,value:JSON.stringify(i)}),f]});return f},A=Qr;var Qo=require("react"),g=new Map;function Wr(o,r){return r.catch(()=>{if(g.get(o)===r)g.delete(o)}),g.set(o,r),r}function Wo(o,r){return Qo.lazy(()=>{if(g.has(r))return g.get(r);return Wr(r,o().then((f)=>f))})}var Xo=L("@swarm.ing/pieui:component-registry",()=>new Map),Xr=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=Wo(r.loader,o.name),r.isLazy=!0;return r};function T(o){let r=Xr(o);return Xo.set(r.name,r),r.component}var c=(o)=>{return Xo.get(o)};var x=require("react");var yo=require("react");var v=require("react/jsx-runtime"),yr=L("@swarm.ing/pieui:context:fallback",()=>yo.createContext(v.jsx(v.Fragment,{}))),Q=yr;var Yo=require("react");var Yr=L("@swarm.ing/pieui:context:lazyError",()=>Yo.createContext(void 0)),s=Yr;var h=require("react"),Mo=require("react/jsx-runtime"),Mr=2,Rr=400;class y extends h.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<Mr){let r=Rr*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((f)=>({failed:!1,attempt:f.attempt+1}))},r)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return Mo.jsx(h.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var e=require("react/jsx-runtime");function Kr({uiConfig:o,setUiAjaxConfiguration:r}){let f=x.useContext(Q),p=x.useContext(s),u=_();if(u)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let C=c(o.card);if(!C?.component){if(u)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return f}if(u)console.log("[UI] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata});let d=C.component,I=e.jsx(d,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(C.isLazy){if(u)console.log("[UI] Rendering lazy component with Suspense:",C.name);return e.jsx(y,{name:C.name,fallback:C.fallback?e.jsx(C.fallback,{}):f,onError:p,children:I})}if(u)console.log("[UI] Rendering component directly:",C.name);return I}var $=x.memo(Kr);var io=require("react");var Ro=require("react");var _r=L("@swarm.ing/pieui:context:uiRenderer",()=>Ro.createContext(null)),G=_r;var E=require("react/jsx-runtime");function Ko({uiConfig:o,setUiAjaxConfiguration:r}){let f=io.useContext(Q),p=io.useContext(s),u=_();if(u)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let C=c(o.card);if(!C?.component){if(u)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return f}if(u)console.log("[UILoading] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata,hasFallback:!!C.fallback});if(C.fallback){if(u)console.log("[UILoading] Rendering fallback for:",C.name);let i=C.fallback;return E.jsx(i,{})}if(u)console.log("[UILoading] No fallback, rendering full component:",C.name);let d=C.component,I=E.jsx(G.Provider,{value:Ko,children:E.jsx(d,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(C.isLazy)return E.jsx(y,{name:C.name,fallback:f,onError:p,children:I});return I}var _o=Ko;var go=require("react");var oo=require("react/jsx-runtime"),gr=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p,sx:u}=o,C=go.useContext(G)??$;return oo.jsx(A,{card:p,data:o,children:oo.jsx("div",{style:u,id:p,children:r.map((d,I)=>{return oo.jsx(C,{uiConfig:d,setUiAjaxConfiguration:f},`children-${I}`)})})})},xo=gr;var Eo=T({name:"SequenceCard",component:xo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var ko=require("react");var Io=require("react/jsx-runtime"),xr=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p}=o,u=ko.useContext(G)??$;return Io.jsx(A,{card:p,data:o,children:r.map((C,d)=>{return Io.jsx(u,{uiConfig:C,setUiAjaxConfiguration:f},`children-${d}`)})})},lo=xr;var no=T({name:"UnionCard",component:lo,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var ro=require("react"),No=Vo(require("html-react-parser"));var V=require("react");function Er(){let o=new AudioContext,r=o.createOscillator(),f=r.connect(o.createMediaStreamDestination());r.start();let p=f.stream.getAudioTracks()[0];return p.enabled=!1,p}function Po(o=null,r){let[f,p]=V.useState(!1),u=V.useRef(null),C=V.useRef(null),d=V.useRef(null),I=V.useCallback(async(S,H=!0)=>{if(u.current)i();let w=new RTCPeerConnection;if(w.onconnectionstatechange=()=>{if(w.connectionState==="connected")p(!0);else if(["disconnected","failed","closed"].includes(w.connectionState))p(!1)},w.ontrack=(z)=>{if(o)o.srcObject=z.streams[0]},H){let z=await navigator.mediaDevices.getUserMedia({audio:!0});w.addTrack(z.getTracks()[0],z)}else{let z=Er();w.addTrack(z)}let P=w.createDataChannel("oai-events");C.current=P,d.current=new Promise((z)=>{P.addEventListener("open",()=>{z()})});let Z=await w.createOffer();await w.setLocalDescription(Z);let J=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:Z.sdp,headers:{Authorization:`Bearer ${S}`,"Content-Type":"application/sdp"}})).text();await w.setRemoteDescription({type:"answer",sdp:J}),u.current=w,await d.current},[o]),i=V.useCallback(()=>{let S=C.current;if(S)S.close();u.current?.getSenders()?.forEach((H)=>H.track?.stop()),u.current?.close(),p(!1),u.current=null,C.current=null,d.current=null},[o]),m=V.useCallback((S)=>{let H=C.current;if(!H){console.error("Data channel is not ready",S);return}let w=new Date().toLocaleTimeString();if(S.event_id=S.event_id||crypto.randomUUID(),H.send(JSON.stringify(S)),!S.timestamp)S.timestamp=w;r?.(S)},[r,o]),U=V.useCallback((S)=>{if(!C.current){console.error("Data channel is not ready");return}let w=()=>{m({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:S}]}}),m({type:"response.create"})};if(d.current)d.current.then(w);else w()},[r,o]);return V.useEffect(()=>{let S=C.current;if(!S)return;let H=(w)=>{let P=JSON.parse(w.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();r?.(P)};return S.addEventListener("message",H),()=>{S.removeEventListener("message",H)}},[r,o]),{isSessionActive:f,startSession:I,stopSession:i,sendTextMessage:U}}var jo=require("react/jsx-runtime"),kr=({data:o})=>{let{html:r,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:u,centrifugeChannel:C}=o,[d,I]=ro.useState(r),{isSessionActive:i,startSession:m,sendTextMessage:U}=Po(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)I((Z)=>Z+P.delta)});return ro.useEffect(()=>{I(r)},[r]),jo.jsx(A,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{I(P.value)},generateUsingAI:async(P)=>{try{if(!i&&P.token)await m(P.token,!1);U(P.prompt)}catch(Z){console.error("Failed to generate using AI",Z)}},initializeAI:async(P)=>{if(!i&&P.token)await m(P.token,!1)}},useCentrifugeSupport:p,useSocketioSupport:f,useMittSupport:u,centrifugeChannel:C,children:No.default(d)})},bo=kr;var to=T({name:"HTMLEmbedCard",component:bo,metadata:{author:"Swarm.ing"}});var fo=require("react");var wo=require("react/jsx-runtime"),lr=({data:o})=>{let{name:r,value:f,useSocketioSupport:p,useCentrifugeSupport:u,useMittSupport:C,centrifugeChannel:d}=o,[I,i]=fo.useState(f);return fo.useEffect(()=>{i(f)},[f]),wo.jsx(A,{card:"HiddenCard",data:o,useSocketioSupport:p,useCentrifugeSupport:u,useMittSupport:C,centrifugeChannel:d,methods:{update:({value:m})=>{i(m)}},children:wo.jsx("input",{type:"hidden",id:r,name:r,value:I})})},ao=lr;var co=T({name:"HiddenCard",component:ao,metadata:{author:"Swarm.ing"}});var k=require("react");var vo=require("react");var nr=L("@swarm.ing/pieui:context:navigate",()=>vo.createContext(void 0)),Y=nr;var po=require("react/jsx-runtime"),Nr=({data:o})=>{let{url:r}=o,f=k.useContext(Y),p=k.useContext(Q);return k.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else f?.(r)},[r,f]),po.jsx(po.Fragment,{children:p})},so=Nr;var ho=T({name:"AutoRedirectCard",component:so,metadata:{author:"Swarm.ing"}});var W=require("react-toastify"),Co=require("react-toastify");var R=require("react");var M=require("react/jsx-runtime"),br={bounce:W.Bounce,slide:W.Slide,zoom:W.Zoom,flip:W.Flip},jr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?br[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};Co.toast(o.message,r)},tr=(o)=>{console.log("Log event",o)},ar=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(p){console.error("[IOEventsCard] Failed to show notification",p)}},f=window.Notification.permission;if(f==="granted"){r();return}if(f==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((p)=>{if(p==="granted")r()})},cr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:f,useMittSupport:p,centrifugeChannel:u}=o,C=R.useContext(Y),d=R.useRef(C);d.current=C;let I=R.useMemo(()=>({alert:jr,log:tr,push:ar,redirect:(i)=>{if(i.to){let m=i.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()},reload:(i)=>{if(i.to){let m=i.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()}}),[]);return M.jsx(M.Fragment,{children:M.jsx(A,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:f,useMittSupport:p,centrifugeChannel:u,methods:I,children:M.jsx(Co.ToastContainer,{})})})},eo=cr;var or=T({name:"IOEventsCard",component:eo,metadata:{author:"Swarm.ing"}});var l=require("react");var So=require("react/jsx-runtime"),vr=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=l.useState(p);return l.useEffect(()=>{m(p)},[p]),l.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(f,i)},[f,i]),So.jsx(A,{card:"SessionStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{sessionStorage.removeItem(f),m("")}},children:So.jsx("input",{type:"hidden",id:r,name:r,value:i})})},rr=vr;var fr=T({name:"SessionStorageCard",component:rr,metadata:{author:"PieData"}});var n=require("react");var Ao=require("react/jsx-runtime"),sr=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=n.useState(p);return n.useEffect(()=>{m(p)},[p]),n.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(f,i)},[f,i]),Ao.jsx(A,{card:"DeviceStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{localStorage.removeItem(f),m("")}},children:Ao.jsx("input",{type:"hidden",id:r,name:r,value:i})})},pr=sr;var Cr=T({name:"DeviceStorageCard",component:pr,metadata:{author:"PieData"}});var N=require("react");var To=require("react/jsx-runtime"),hr=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=N.useState(p);return N.useEffect(()=>{m(p)},[p]),N.useEffect(()=>{if(typeof window>"u")return;let U=window.Telegram?.WebApp?.CloudStorage;if(!U)return;U.setItem(f,i)},[f,i]),To.jsx(A,{card:"CloudStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{let U=window.Telegram?.WebApp?.CloudStorage;if(U)U.removeItem(f);m("")}},children:To.jsx("input",{type:"hidden",id:r,name:r,value:i})})},ur=hr;var mr=T({name:"CloudStorageCard",component:ur,metadata:{author:"PieData"}});var b=require("react");var Ho=require("react/jsx-runtime"),er=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=b.useState(p);return b.useEffect(()=>{m(p)},[p]),b.useEffect(()=>{if(typeof window>"u")return;let U=window.Telegram?.WebApp?.SecureStorage;if(!U)return;U.setItem(f,i)},[f,i]),Ho.jsx(A,{card:"SecureStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{let U=window.Telegram?.WebApp?.SecureStorage;if(U)U.removeItem(f);m("")}},children:Ho.jsx("input",{type:"hidden",id:r,name:r,value:i})})},dr=er;var Ur=T({name:"SecureStorageCard",component:dr,metadata:{author:"PieData"}});var B=require("react");var Oo=require("react/jsx-runtime"),of=({data:o,content:r})=>{let{useLoader:f,noReturn:p,returnType:u,useSocketioSupport:C,useCentrifugeSupport:d,useMittSupport:I,centrifugeChannel:i}=o,m=B.useContext(Q),U=B.useContext(G)??$,[S,H]=B.useState(!1),[w,P]=B.useState(null),Z=B.useRef(r),O=B.useContext(a),D=B.useCallback((z)=>{if(z===null)H(!0);else if(H(!1),!p)Z.current=z;if(!p)P(z)},[p]),q=B.useCallback((z)=>{Z.current=z.content,P(z.content)},[]),J=B.useCallback((z)=>{if(z===null)H(!0);else if(H(!1),!p)for(let Do of z)O?.emit(Do.name,Do.data)},[p,O]);if(B.useEffect(()=>{P(r),H(!1)},[r]),!w&&f)return m;return Oo.jsx(A,{card:"AjaxGroupCard",data:o,methods:{changeContent:q},useSocketioSupport:C,useCentrifugeSupport:d,useMittSupport:I,centrifugeChannel:i,children:Oo.jsx(U,{uiConfig:w??Z.current,setUiAjaxConfiguration:u==="events"?J:D})})},ir=of;var Ir=T({name:"AjaxGroupCard",component:ir,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var Lo=require("react");var uo=require("react/jsx-runtime"),rf=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p,url:u,sx:C}=o,d=Lo.useContext(Y),I=Lo.useContext(G)??$;return uo.jsx(A,{card:p,data:o,children:uo.jsx("div",{style:C,id:p,onClick:(m)=>{if(u)if(m.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else d?.(u)},children:uo.jsx(I,{setUiAjaxConfiguration:f,uiConfig:r})})})},Pr=rf;var wr=T({name:"BoxCard",component:Pr,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Sr=require("react");var mo=require("react/jsx-runtime"),ff=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p,sx:u}=o,C=Sr.useContext(G)??$;return mo.jsx(A,{card:p,data:o,children:mo.jsx("div",{style:u,id:p,children:r.map((d,I)=>{return mo.jsx(C,{uiConfig:d,setUiAjaxConfiguration:f},`children-${I}`)})})})},Ar=ff;var Tr=T({name:"OneOfCard",component:Ar,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 Of,useEffect as Tf,useRef as yU}from"react";import{createContext as PU,useContext as SU}from"react";var m=PU(null),d=()=>{let f=SU(m);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},v=()=>{let{apiServer:f}=d();return f},h=v,r=()=>{let{centrifugeServer:f}=d();return f};var R=()=>{let{enableRenderingLog:f}=d();return f},_f=R;var Df="__piedemo__";import{createContext as FU}from"react";import{Centrifuge as wf}from"centrifuge";var Mf=new Map,n=(f,U)=>{if(!U)return null;let I=`${f}::${U}`,C=Mf.get(I);if(C)return C;async function D(){let Z=await fetch(f+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new wf.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let H=new wf(U,{getToken:D});return Mf.set(I,H),H},KU=FU(null),N=KU;import{io as _U}from"socket.io-client";import{createContext as wU}from"react";var Lf=new Map,i=(f)=>{let U=Lf.get(f);if(U)return U;let I=_U(f,{autoConnect:!1,transports:["websocket"]});return Lf.set(f,I),I},MU=wU(null),E=MU;import LU from"mitt";import{createContext as oU,useCallback as RU,useContext as NU}from"react";var Zf=null;function u(){if(!Zf)Zf=LU();return Zf}var of=oU(null);function EU(f){let U=NU(of);return RU((I,C)=>{(U??u()).emit(`pie${I}_${f}`,C)},[f,U])}var y=of;import{jsx as xU,jsxs as mU,Fragment as jU}from"react/jsx-runtime";var kU=({card:f,data:U,children:I,useSocketioSupport:C=!1,useCentrifugeSupport:D=!1,useMittSupport:H=!1,centrifugeChannel:Z=void 0,methods:V=void 0,stored:O=void 0})=>{let T=_f(),$=yU(V);if($.current=V,T)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:C,centrifuge:D,mitt:H,centrifugeChannel:Z}),console.log("[PieCard] Methods:",V?Object.keys(V):"none"),console.log("[PieCard] Has children:",!!I);let J=Of(E),Y=Of(N),z=Of(y);if(Tf(()=>{if(!J||!C||!$.current||!U.name){if(T&&C)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!J,useSocketioSupport:C,hasMethods:!!$.current,hasDataName:!!U?.name});return}let X=Object.keys($.current??{}).map((q)=>{let G=`pie${q}_${U.name}`;if(T)console.log(`[PieCard] Socket.IO registering event: ${G}`);let S=(W)=>{$.current?.[q]?.(W)};return J.on(G,S),[G,S]});return()=>{X.forEach(([q,G])=>{if(T)console.log(`[PieCard] Socket.IO unregistering event: ${q}`);J.off(q,G)})}},[J,U.name,C]),Tf(()=>{if(!Y||!D||!Z||!U.name){if(T&&D)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!Y,useCentrifugeSupport:D,hasCentrifugeChannel:!!Z,hasMethods:!!$.current,hasDataName:!!U?.name});return}let X=Object.keys($.current??{}).map((q)=>{let G=`pie${q}_${U.name}_${Z}`;if(T)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let S=Y.newSubscription(G);return S.on("publication",(W)=>{if(T)console.log(`[PieCard] Centrifuge received data on ${G}:`,W.data);$.current?.[q]?.(W.data)}),S.subscribe(),S});return()=>{X.forEach((q)=>{if(T)console.log("[PieCard] Centrifuge unsubscribing from channel");q.unsubscribe(),Y.removeSubscription(q)})}},[Y,Z,U.name,D]),Tf(()=>{if(!z||!H||!U.name){if(T&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!z,useMittSupport:H,hasMethods:!!$.current,hasDataName:!!U?.name});return}let B=Object.keys($.current??{}),X={};return B.forEach((q)=>{let G=`pie${q}_${U.name}`,S=(W)=>{if(T)console.log(`[PieCard] Mitt registering event: ${G}`);$.current?.[q]?.(W)};X[G]=S,z.on(G,S)}),()=>{Object.entries(X).forEach(([q,G])=>{if(T)console.log(`[PieCard] Mitt unregistering event: ${q}`);z.off(q,G)})}},[z,U.name,H]),T)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return mU(jU,{children:[xU("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),I]});return I},A=kU;import{lazy as uU}from"react";var j=new Map;function Rf(f,U){return U.catch(()=>{if(j.get(f)===U)j.delete(f)}),j.set(f,U),U}function Vf(f,U){return uU(()=>{if(j.has(U))return j.get(U);return Rf(U,f().then((I)=>I))})}var Nf=async(f,U)=>{if(!U)return;if(j.has(f))return j.get(f);return Rf(f,U().then((I)=>I))};var L=new Map,bU=(f)=>{if(!f.name)throw Error("Component registration requires a name");if(!f.component&&!f.loader)throw Error(`Component "${f.name}" requires component or loader`);let U={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=Vf(U.loader,f.name),U.isLazy=!0;return U};function Q(f){let U=bU(f);return L.set(U.name,U),U.component}var dU=(f)=>{f.forEach((U)=>Q(U))},vU=(f)=>{L.delete(f)},pU=(f)=>{return L.has(f)},gU=(f)=>{return L.get(f)?.metadata},p=(f)=>{return L.get(f)},cU=()=>{return Array.from(L.keys())},lU=()=>{return L.size},yf=()=>Array.from(L.values()).filter((f)=>f.isLazy&&typeof f.loader==="function").map((f)=>f.name),kf=(f)=>{let U=L.get(f);if(!U?.isLazy||typeof U.loader!=="function")return;return Nf(f,U.loader)},Ef=!1,hU=()=>{if(Ef||typeof window>"u")return;Ef=!0;let f=navigator.connection;if(f?.saveData)return;if(f?.effectiveType&&["slow-2g","2g"].includes(f.effectiveType))return;let U=yf(),I="requestIdleCallback"in window?(D)=>window.requestIdleCallback(D,{timeout:2000}):(D)=>window.setTimeout(D,300),C=(D)=>{if(D>=U.length)return;I(()=>{Promise.resolve().then(()=>kf(U[D])).catch(()=>{}).finally(()=>C(D+1))})};C(0)};import{useContext as jf,memo as HI}from"react";import{createContext as rU}from"react";import{jsx as sU,Fragment as iU}from"react/jsx-runtime";var nU=rU(sU(iU,{})),_=nU;import{createContext as tU}from"react";var aU=tU(void 0),k=aU;import{Component as eU,Suspense as fI}from"react";import{jsx as CI}from"react/jsx-runtime";var UI=2,II=400;class b extends eU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(f){if(this.props.onError?.(f),this.state.attempt<UI){let U=II*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},U)}}componentDidUpdate(f){if(f.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return CI(fI,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as $f}from"react/jsx-runtime";function DI({uiConfig:f,setUiAjaxConfiguration:U}){let I=jf(_),C=jf(k),D=R();if(D)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let H=p(f.card);if(!H?.component){if(D)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return I}if(D)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let Z=H.component,V=$f(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(H.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",H.name);return $f(b,{name:H.name,fallback:H.fallback?$f(H.fallback,{}):I,onError:C,children:V})}if(D)console.log("[UI] Rendering component directly:",H.name);return V}var K=HI(DI);import{useContext as xf}from"react";import{createContext as ZI}from"react";var OI=ZI(null),w=OI;import{jsx as s}from"react/jsx-runtime";function mf({uiConfig:f,setUiAjaxConfiguration:U}){let I=xf(_),C=xf(k),D=R();if(D)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let H=p(f.card);if(!H?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return I}if(D)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(D)console.log("[UILoading] Rendering fallback for:",H.name);let O=H.fallback;return s(O,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",H.name);let Z=H.component,V=s(w.Provider,{value:mf,children:s(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(H.isLazy)return s(b,{name:H.name,fallback:I,onError:C,children:V});return V}var zf=mf;import{useContext as TI}from"react";import{jsx as qf}from"react/jsx-runtime";var VI=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,sx:D}=f,H=TI(w)??K;return qf(A,{card:C,data:f,children:qf("div",{style:D,id:C,children:U.map((Z,V)=>{return qf(H,{uiConfig:Z,setUiAjaxConfiguration:I},`children-${V}`)})})})},uf=VI;var $I=Q({name:"SequenceCard",component:uf,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as zI}from"react";import{jsx as bf}from"react/jsx-runtime";var qI=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C}=f,D=zI(w)??K;return bf(A,{card:C,data:f,children:U.map((H,Z)=>{return bf(D,{uiConfig:H,setUiAjaxConfiguration:I},`children-${Z}`)})})},df=qI;var BI=Q({name:"UnionCard",component:df,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as YI,useState as WI}from"react";import QI from"html-react-parser";import{useCallback as t,useEffect as GI,useRef as Bf,useState as JI}from"react";function XI(){let f=new AudioContext,U=f.createOscillator(),I=U.connect(f.createMediaStreamDestination());U.start();let C=I.stream.getAudioTracks()[0];return C.enabled=!1,C}function Gf(f=null,U){let[I,C]=JI(!1),D=Bf(null),H=Bf(null),Z=Bf(null),V=t(async(J,Y=!0)=>{if(D.current)O();let z=new RTCPeerConnection;if(z.onconnectionstatechange=()=>{if(z.connectionState==="connected")C(!0);else if(["disconnected","failed","closed"].includes(z.connectionState))C(!1)},z.ontrack=(P)=>{if(f)f.srcObject=P.streams[0]},Y){let P=await navigator.mediaDevices.getUserMedia({audio:!0});z.addTrack(P.getTracks()[0],P)}else{let P=XI();z.addTrack(P)}let B=z.createDataChannel("oai-events");H.current=B,Z.current=new Promise((P)=>{B.addEventListener("open",()=>{P()})});let X=await z.createOffer();await z.setLocalDescription(X);let W=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await z.setRemoteDescription({type:"answer",sdp:W}),D.current=z,await Z.current},[f]),O=t(()=>{let J=H.current;if(J)J.close();D.current?.getSenders()?.forEach((Y)=>Y.track?.stop()),D.current?.close(),C(!1),D.current=null,H.current=null,Z.current=null},[f]),T=t((J)=>{let Y=H.current;if(!Y){console.error("Data channel is not ready",J);return}let z=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),Y.send(JSON.stringify(J)),!J.timestamp)J.timestamp=z;U?.(J)},[U,f]),$=t((J)=>{if(!H.current){console.error("Data channel is not ready");return}let z=()=>{T({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),T({type:"response.create"})};if(Z.current)Z.current.then(z);else z()},[U,f]);return GI(()=>{let J=H.current;if(!J)return;let Y=(z)=>{let B=JSON.parse(z.data);if(!B.timestamp)B.timestamp=new Date().toLocaleTimeString();U?.(B)};return J.addEventListener("message",Y),()=>{J.removeEventListener("message",Y)}},[U,f]),{isSessionActive:I,startSession:V,stopSession:O,sendTextMessage:$}}import{jsx as PI}from"react/jsx-runtime";var AI=({data:f})=>{let{html:U,useSocketioSupport:I,useCentrifugeSupport:C,useMittSupport:D,centrifugeChannel:H}=f,[Z,V]=WI(U),{isSessionActive:O,startSession:T,sendTextMessage:$}=Gf(null,(B)=>{if(console.log(B.type,B.type==="response.output_text.delta"&&B.delta),B.type==="response.output_text.delta"&&B.delta)V((X)=>X+B.delta)});return YI(()=>{V(U)},[U]),PI(A,{card:"HTMLEmbedCard",data:f,methods:{update:(B)=>{V(B.value)},generateUsingAI:async(B)=>{try{if(!O&&B.token)await T(B.token,!1);$(B.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(B)=>{if(!O&&B.token)await T(B.token,!1)}},useCentrifugeSupport:C,useSocketioSupport:I,useMittSupport:D,centrifugeChannel:H,children:QI(Z)})},vf=AI;var SI=Q({name:"HTMLEmbedCard",component:vf,metadata:{author:"Swarm.ing"}});import{useEffect as FI,useState as KI}from"react";import{jsx as pf}from"react/jsx-runtime";var _I=({data:f})=>{let{name:U,value:I,useSocketioSupport:C,useCentrifugeSupport:D,useMittSupport:H,centrifugeChannel:Z}=f,[V,O]=KI(I);return FI(()=>{O(I)},[I]),pf(A,{card:"HiddenCard",data:f,useSocketioSupport:C,useCentrifugeSupport:D,useMittSupport:H,centrifugeChannel:Z,methods:{update:({value:T})=>{O(T)}},children:pf("input",{type:"hidden",id:U,name:U,value:V})})},gf=_I;var wI=Q({name:"HiddenCard",component:gf,metadata:{author:"Swarm.ing"}});import{useContext as cf,useEffect as oI}from"react";import{createContext as MI}from"react";var LI=MI(void 0),o=LI;import{jsx as EI,Fragment as NI}from"react/jsx-runtime";var RI=({data:f})=>{let{url:U}=f,I=cf(o),C=cf(_);return oI(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else I?.(U)},[U,I]),EI(NI,{children:C})},lf=RI;var yI=Q({name:"AutoRedirectCard",component:lf,metadata:{author:"Swarm.ing"}});import{Bounce as kI,Slide as jI,Zoom as xI,Flip as mI}from"react-toastify";import{toast as uI,ToastContainer as bI}from"react-toastify";import{useContext as dI,useMemo as vI,useRef as pI}from"react";import{jsx as Jf,Fragment as nI}from"react/jsx-runtime";var gI={bounce:kI,slide:jI,zoom:xI,flip:mI},cI=(f)=>{let U={...f,type:f.alertType,transition:f.transition?gI[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};uI(f.message,U)},lI=(f)=>{console.log("Log event",f)},hI=(f)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(C){console.error("[IOEventsCard] Failed to show notification",C)}},I=window.Notification.permission;if(I==="granted"){U();return}if(I==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((C)=>{if(C==="granted")U()})},rI=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:C,centrifugeChannel:D}=f,H=dI(o),Z=pI(H);Z.current=H;let V=vI(()=>({alert:cI,log:lI,push:hI,redirect:(O)=>{if(O.to){let T=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else Z.current?.(T)}else window.location.reload()},reload:(O)=>{if(O.to){let T=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else Z.current?.(T)}else window.location.reload()}}),[]);return Jf(nI,{children:Jf(A,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:C,centrifugeChannel:D,methods:V,children:Jf(bI,{})})})},hf=rI;var iI=Q({name:"IOEventsCard",component:hf,metadata:{author:"Swarm.ing"}});import{useEffect as rf,useState as sI}from"react";import{jsx as nf}from"react/jsx-runtime";var tI=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=sI(C);return rf(()=>{T(C)},[C]),rf(()=>{if(typeof window>"u")return;sessionStorage.setItem(I,O)},[I,O]),nf(A,{card:"SessionStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{sessionStorage.removeItem(I),T("")}},children:nf("input",{type:"hidden",id:U,name:U,value:O})})},sf=tI;var aI=Q({name:"SessionStorageCard",component:sf,metadata:{author:"PieData"}});import{useEffect as tf,useState as eI}from"react";import{jsx as af}from"react/jsx-runtime";var fC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=eI(C);return tf(()=>{T(C)},[C]),tf(()=>{if(typeof window>"u")return;localStorage.setItem(I,O)},[I,O]),af(A,{card:"DeviceStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{localStorage.removeItem(I),T("")}},children:af("input",{type:"hidden",id:U,name:U,value:O})})},ef=fC;var UC=Q({name:"DeviceStorageCard",component:ef,metadata:{author:"PieData"}});import{useEffect as fU,useState as IC}from"react";import{jsx as UU}from"react/jsx-runtime";var CC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=IC(C);return fU(()=>{T(C)},[C]),fU(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.CloudStorage;if(!$)return;$.setItem(I,O)},[I,O]),UU(A,{card:"CloudStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{let $=window.Telegram?.WebApp?.CloudStorage;if($)$.removeItem(I);T("")}},children:UU("input",{type:"hidden",id:U,name:U,value:O})})},IU=CC;var HC=Q({name:"CloudStorageCard",component:IU,metadata:{author:"PieData"}});import{useEffect as CU,useState as DC}from"react";import{jsx as HU}from"react/jsx-runtime";var ZC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=DC(C);return CU(()=>{T(C)},[C]),CU(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.SecureStorage;if(!$)return;$.setItem(I,O)},[I,O]),HU(A,{card:"SecureStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{let $=window.Telegram?.WebApp?.SecureStorage;if($)$.removeItem(I);T("")}},children:HU("input",{type:"hidden",id:U,name:U,value:O})})},DU=ZC;var OC=Q({name:"SecureStorageCard",component:DU,metadata:{author:"PieData"}});import{useCallback as Xf,useContext as Yf,useEffect as TC,useRef as VC,useState as ZU}from"react";import{jsx as OU}from"react/jsx-runtime";var $C=({data:f,content:U})=>{let{useLoader:I,noReturn:C,returnType:D,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:V,centrifugeChannel:O}=f,T=Yf(_),$=Yf(w)??K,[J,Y]=ZU(!1),[z,B]=ZU(null),X=VC(U),q=Yf(y),G=Xf((P)=>{if(P===null)Y(!0);else if(Y(!1),!C)X.current=P;if(!C)B(P)},[C]),S=Xf((P)=>{X.current=P.content,B(P.content)},[]),W=Xf((P)=>{if(P===null)Y(!0);else if(Y(!1),!C)for(let c of P)q?.emit(c.name,c.data)},[C,q]);if(TC(()=>{B(U),Y(!1)},[U]),!z&&I)return T;return OU(A,{card:"AjaxGroupCard",data:f,methods:{changeContent:S},useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:V,centrifugeChannel:O,children:OU($,{uiConfig:z??X.current,setUiAjaxConfiguration:D==="events"?W:G})})},TU=$C;var zC=Q({name:"AjaxGroupCard",component:TU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as VU}from"react";import{jsx as Wf}from"react/jsx-runtime";var qC=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,url:D,sx:H}=f,Z=VU(o),V=VU(w)??K;return Wf(A,{card:C,data:f,children:Wf("div",{style:H,id:C,onClick:(T)=>{if(D)if(T.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(D))window.location.href=D;else Z?.(D)},children:Wf(V,{setUiAjaxConfiguration:I,uiConfig:U})})})},$U=qC;var BC=Q({name:"BoxCard",component:$U,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as GC}from"react";import{jsx as Qf}from"react/jsx-runtime";var JC=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,sx:D}=f,H=GC(w)??K;return Qf(A,{card:C,data:f,children:Qf("div",{style:D,id:C,children:U.map((Z,V)=>{return Qf(H,{uiConfig:Z,setUiAjaxConfiguration:I},`children-${V}`)})})})},zU=JC;var XC=Q({name:"OneOfCard",component:zU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as g}from"react";import{QueryClient as wC,QueryClientProvider as MC,useQuery as LC}from"@tanstack/react-query";import{useContext as QC,useEffect as AC}from"react";import{useEffect as YC,useState as WC}from"react";var a=new Map,e=new Map;function ff(f,U){let I=`${f}::${U}`,C=f?a.get(I):void 0,[D,H]=WC(C??null);return YC(()=>{if(!f)return;if(a.has(I)){H(a.get(I));return}let Z=e.get(I);if(!Z)Z=fetch(f+`api/support/${U}`,{method:"GET"}).then((O)=>O.json()).then((O)=>{return a.set(I,O),e.delete(I),O}).catch((O)=>{throw e.delete(I),O}),e.set(I,Z);let V=!1;return Z.then((O)=>{if(!V)H(O)}).catch(()=>{}),()=>{V=!0}},[f,U,I]),D}var Af=null,qU=null;function BU(){qU?.()}function Pf(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!Af)Af=new Promise((f)=>{qU=()=>{f()}});return Af}var PC=({children:f})=>{let U=QC(E),I=h(),C=ff(I,"socketIO"),D=(H)=>{if(typeof window<"u")window.sid=H.sid,BU(),console.log(`SocketIO initialized: ${window.sid}`)};return AC(()=>{if(!U)return;let H=()=>{console.log("SocketIO connected")},Z=(V)=>{console.log(`SocketIO disconnected: ${V}`),U.connect()};if(C)U.on("pieinit",D),U.on("connect",H),U.on("disconnect",Z),U.connect();return()=>{if(C)U.off("pieinit",D),U.off("connect",H),U.off("disconnect",Z),U.disconnect()}},[U,C]),f},Uf=PC;import{useContext as SC,useEffect as FC}from"react";var KC=({children:f})=>{let U=SC(N),I=h(),C=ff(I,"centrifuge");return FC(()=>{if(!U)return;let D=()=>{console.log("Centrifuge connected")},H=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(C)U.on("connected",D),U.on("disconnected",H),U.connect();return()=>{if(C)U.disconnect()}},[U,C]),f},If=KC;import{createAxiosDateTransformer as oC}from"axios-date-transformer";import{jsx as _C}from"react/jsx-runtime";function GU(f,U,I){if(!U)return I;let C=f.replace(/^\//,""),D=U[C];if(!D)return I;return _C(zf,{uiConfig:D})}import{jsx as F,Fragment as EC}from"react/jsx-runtime";var RC=({location:f,fallback:U,piecache:I,onError:C,queryOptions:D,disableGlobalForm:H})=>{let Z=v(),V=r(),O=R(),T=g(()=>oC({baseURL:Z||""}),[Z]),$=g(()=>u(),[]),J=g(()=>Z?i(Z):null,[Z]),Y=g(()=>Z?n(Z,V):null,[Z,V]),{data:z,isLoading:B,error:X}=LC({queryKey:["uiConfig",f.pathname+f.search,Z],enabled:!!Z,queryFn:async()=>{let G=new URLSearchParams(f.search);G.set("__pieroot","web");let S="/api/content"+f.pathname+"?"+G.toString();if(O)console.log("[PieRoot] Fetching UI configuration from:",S);let W=await T.get(S,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(O)console.log("[PieRoot] Received UI configuration:",W.data);return W.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(G)=>Math.min(1000*2**G,30000),...D}),q=GU(f.pathname,I,U);if(!Z)return q??null;if(O)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",V),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!I);if(X){if(O)console.error("[PieRoot] Error fetching UI configuration:",X),console.error("[PieRoot] Error details:",{message:X.message,status:X.response?.status,data:X.response?.data});return C?.(X),q}if(B||!z){if(O)console.log("[PieRoot] Loading state:",{isLoading:B,hasUiConfiguration:!!z});return q}if(O)console.log("[PieRoot] UI configuration loaded successfully:",z),console.log("[PieRoot] Rendering UI with configuration");return F(y.Provider,{value:$,children:F(E.Provider,{value:J,children:F(N.Provider,{value:Y,children:F(_.Provider,{value:U??F(EC,{}),children:F(Uf,{children:F(If,{children:H?F(K,{uiConfig:z}):F("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:F(K,{uiConfig:z})})})})})})})})},NC=(f)=>{let U=g(()=>new wC,[]),I=f.queryClient??U;return F(o.Provider,{value:f.onNavigate,children:F(m.Provider,{value:f.config,children:F(k.Provider,{value:f.onError,children:F(MC,{client:I,children:F(RC,{...f})})})})})},Sf=NC;import{useMemo as Ff,useState as yC}from"react";import{QueryClient as kC,QueryClientProvider as jC}from"@tanstack/react-query";import{jsx as M,Fragment as uC}from"react/jsx-runtime";var xC=({location:f,fallback:U,children:I,disableGlobalForm:C})=>{let D=v(),H=r(),Z=R(),V=Ff(()=>u(),[]),O=Ff(()=>D?i(D):null,[D]),T=Ff(()=>D?n(D,H):null,[D,H]);if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",H),console.log("[PieRoot] Fallback provided:",!!U);return M(y.Provider,{value:V,children:M(E.Provider,{value:O,children:M(N.Provider,{value:T,children:M(_.Provider,{value:U??M(uC,{}),children:M(Uf,{children:M(If,{children:C?I:M("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:I})})})})})})})},mC=(f)=>{let[U]=yC(()=>new kC),I=f.queryClient??U;return M(o.Provider,{value:f.onNavigate,children:M(m.Provider,{value:f.config,children:M(k.Provider,{value:f.onError,children:M(jC,{client:I,children:M(xC,{...f})})})})})},bC=mC;import{useMemo as dC}from"react";import{jsx as JU}from"react/jsx-runtime";var vC=JU("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),pC=({apiServer:f,pathname:U="/",search:I="",centrifugeServer:C,fallback:D,enableRenderingLog:H=!1})=>{let Z=f??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",V=dC(()=>({apiServer:Z,centrifugeServer:C,enableRenderingLog:H,pageProcessor:"web"}),[Z,C,H]);return JU(Sf,{location:{pathname:U,search:I},config:V,fallback:D??vC,onNavigate:(T)=>{if(typeof window<"u")window.history.pushState(null,"",T)}})},gC=pC;import{useMemo as cC}from"react";var XU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let I=document.getElementsByName(f);if(!I.length){if(U)console.warn(`No input found with name ${f}`);return[]}let C=I[0];if(C instanceof HTMLInputElement){if(C.type==="file"&&C.files)return Array.from(C.files);return[C.value]}if(C instanceof HTMLTextAreaElement)return[C.value];return[]},lC=(f,U={},I=[],C,D)=>{let H=D?.renderingLogEnabled??!1,Z=D?.timeout,V=D?.retryPolicy,O=V?.maxRetries??0,T=V?.baseDelay??1000,$=V?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",C,U,I);return async(J={})=>{if(typeof window>"u"||typeof document>"u"){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let Y=D?.apiServer;if(!Y){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!C||!f){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(I.includes("sid"))await Pf();let z=new FormData;for(let[q,G]of Object.entries({...U,...J}))z.append(q,G);for(let q of I)for(let G of XU(q,H))z.append(q,G);let B=Y+"api/ajax_content"+C;f(null);let X;for(let q=0;q<=O;q++){if(q>0){let W=T*2**(q-1);if(H)console.log(`AJAX retry ${q}/${O} after ${W}ms`);await new Promise((P)=>setTimeout(P,W))}let G=Z!=null?new AbortController:null,S=G&&setTimeout(()=>G.abort(),Z);try{let W=await fetch(B,{method:"POST",body:z,signal:G?.signal});if(S)clearTimeout(S);if(!W.ok&&$.includes(W.status)&&q<O){X=Error(`HTTP ${W.status}`);continue}let c=(W.headers.get("content-type")||"").includes("application/json");if(!!W.body?.getReader&&!c){let l=W.body.getReader(),YU=new TextDecoder,x="";while(!0){let{done:Cf,value:WU}=await l.read();if(Cf)break;x+=YU.decode(WU,{stream:!0});let Kf=x.split(`
3
- `);x=Kf.pop()??"";for(let QU of Kf){let Hf=QU.trim();if(!Hf)continue;try{let AU=JSON.parse(Hf);f([AU])}catch{if(H)console.warn("Failed to parse streamed line:",Hf)}}}if(x.trim())try{let Cf=JSON.parse(x);f([Cf])}catch{if(H)console.warn("Failed to parse final streamed line:",x)}return{}}else{let l=await W.json();return f(l),l}}catch(W){if(S)clearTimeout(S);if(X=W,q<O)continue;if(H)console.error("AJAX request failed:",W);return f(null),W}}if(H)console.error("AJAX request failed after retries:",X);return f(null),X}},hC=(f,U={},I=[],C,D)=>{let{apiServer:H,enableRenderingLog:Z}=d(),V=JSON.stringify(U),O=JSON.stringify(I),T=JSON.stringify(D);return cC(()=>lC(f,U,I,C,{apiServer:H,renderingLogEnabled:Z,timeout:D?.timeout,retryPolicy:D?.retryPolicy}),[f,V,O,C,H,Z,T])};import{clsx as rC}from"clsx";import{twMerge as nC}from"tailwind-merge";function iC(...f){return nC(rC(f))}var sC=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var tC=(f,U)=>`${f}${Df}${U}`;export{EU as usePieEmit,hC as useAjaxSubmit,vU as unregisterComponent,Vf as trackLazy,sC as submitGlobalForm,L as registry,Q as registerPieComponent,dU as registerMultipleComponents,XU as readAjaxKey,kf as preloadComponent,hU as prefetchLazyComponents,tC as pieName,pU as hasComponent,lU as getRegistrySize,p as getRegistryEntry,yf as getLazyComponentNames,u as getEmitter,gU as getComponentMeta,cU as getAllRegisteredComponents,iC as cn,BI as UnionCard,w as UIRendererContext,zf as UILoading,K as UI,E as SocketIOContext,aI as SessionStorageCard,$I as SequenceCard,OC as SecureStorageCard,Sf as PieRoot,gC as PiePreviewRoot,m as PieConfigContext,A as PieCard,bC as PieBaseRoot,Df as PIEBREAK,XC as OneOfCard,y as MittContext,iI as IOEventsCard,wI as HiddenCard,SI as HTMLEmbedCard,_ as FallbackContext,UC as DeviceStorageCard,HC as CloudStorageCard,N as CentrifugeIOContext,BC as BoxCard,yI as AutoRedirectCard,zC as AjaxGroupCard};
2
+ import{useContext as Vf,useEffect as $f,useRef as yC}from"react";import{createContext as QC,useContext as wC}from"react";var Zf=globalThis,Q=(f,C)=>{let U=Symbol.for(f);if(!(U in Zf))Zf[U]=C();return Zf[U]};var j=Q("@swarm.ing/pieui:context:pieConfig",()=>QC(null)),p=()=>{let f=wC(j);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},v=()=>{let{apiServer:f}=p();return f},n=v,i=()=>{let{centrifugeServer:f}=p();return f};var N=()=>{let{enableRenderingLog:f}=p();return f},Kf=N;var Of="__piedemo__";import{createContext as AC}from"react";import{Centrifuge as Mf}from"centrifuge";var Lf=Q("@swarm.ing/pieui:centrifuge-cache",()=>new Map),s=(f,C)=>{if(!C)return null;let U=`${f}::${C}`,I=Lf.get(U);if(I)return I;async function H(){let D=await fetch(f+"api/centrifuge/gen_token");if(!D.ok){if(D.status===403)throw new Mf.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${D.status}`)}return(await D.json()).token}let T=new Mf(C,{getToken:H});return Lf.set(U,T),T},_C=Q("@swarm.ing/pieui:context:centrifuge",()=>AC(null)),E=_C;import{io as FC}from"socket.io-client";import{createContext as KC}from"react";var Rf=Q("@swarm.ing/pieui:socket-cache",()=>new Map),t=(f)=>{let C=Rf.get(f);if(C)return C;let U=FC(f,{autoConnect:!1,transports:["websocket"]});return Rf.set(f,U),U},MC=Q("@swarm.ing/pieui:context:socket",()=>KC(null)),y=MC;import LC from"mitt";import{createContext as RC,useCallback as SC,useContext as NC}from"react";function d(){return Q("@swarm.ing/pieui:mitt-emitter",()=>LC())}var Sf=Q("@swarm.ing/pieui:context:mitt",()=>RC(null));function EC(f){let C=NC(Sf);return SC((U,I)=>{(C??d()).emit(`pie${U}_${f}`,I)},[f,C])}var m=Sf;import{jsx as uC,jsxs as xC,Fragment as kC}from"react/jsx-runtime";var mC=({card:f,data:C,children:U,useSocketioSupport:I=!1,useCentrifugeSupport:H=!1,useMittSupport:T=!1,centrifugeChannel:D=void 0,methods:V=void 0,stored:Z=void 0})=>{let O=Kf(),$=yC(V);if($.current=V,O)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",C),console.log("[PieCard] Component name:",C?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:H,mitt:T,centrifugeChannel:D}),console.log("[PieCard] Methods:",V?Object.keys(V):"none"),console.log("[PieCard] Has children:",!!U);let J=Vf(y),X=Vf(E),z=Vf(m);if($f(()=>{if(!J||!I||!$.current||!C.name){if(O&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!J,useSocketioSupport:I,hasMethods:!!$.current,hasDataName:!!C?.name});return}let G=Object.keys($.current??{}).map((o)=>{let B=`pie${o}_${C.name}`;if(O)console.log(`[PieCard] Socket.IO registering event: ${B}`);let A=(Y)=>{$.current?.[o]?.(Y)};return J.on(B,A),[B,A]});return()=>{G.forEach(([o,B])=>{if(O)console.log(`[PieCard] Socket.IO unregistering event: ${o}`);J.off(o,B)})}},[J,C.name,I]),$f(()=>{if(!X||!H||!D||!C.name){if(O&&H)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!X,useCentrifugeSupport:H,hasCentrifugeChannel:!!D,hasMethods:!!$.current,hasDataName:!!C?.name});return}let G=Object.keys($.current??{}).map((o)=>{let B=`pie${o}_${C.name}_${D}`;if(O)console.log(`[PieCard] Centrifuge subscribing to channel: ${B}`);let A=X.newSubscription(B);return A.on("publication",(Y)=>{if(O)console.log(`[PieCard] Centrifuge received data on ${B}:`,Y.data);$.current?.[o]?.(Y.data)}),A.subscribe(),A});return()=>{G.forEach((o)=>{if(O)console.log("[PieCard] Centrifuge unsubscribing from channel");o.unsubscribe(),X.removeSubscription(o)})}},[X,D,C.name,H]),$f(()=>{if(!z||!T||!C.name){if(O&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!z,useMittSupport:T,hasMethods:!!$.current,hasDataName:!!C?.name});return}let q=Object.keys($.current??{}),G={};return q.forEach((o)=>{let B=`pie${o}_${C.name}`,A=(Y)=>{if(O)console.log(`[PieCard] Mitt registering event: ${B}`);$.current?.[o]?.(Y)};G[B]=A,z.on(B,A)}),()=>{Object.entries(G).forEach(([o,B])=>{if(O)console.log(`[PieCard] Mitt unregistering event: ${o}`);z.off(o,B)})}},[z,C.name,T]),O)console.log("[PieCard] Rendering complete, returning children");if(Z!==void 0)return xC(kC,{children:[uC("input",{type:"hidden",name:C.name,value:JSON.stringify(Z)}),U]});return U},P=mC;import{lazy as jC}from"react";var u=new Map;function Nf(f,C){return C.catch(()=>{if(u.get(f)===C)u.delete(f)}),u.set(f,C),C}function zf(f,C){return jC(()=>{if(u.has(C))return u.get(C);return Nf(C,f().then((U)=>U))})}var Ef=async(f,C)=>{if(!C)return;if(u.has(f))return u.get(f);return Nf(f,C().then((U)=>U))};var R=Q("@swarm.ing/pieui:component-registry",()=>new Map),dC=(f)=>{if(!f.name)throw Error("Component registration requires a name");if(!f.component&&!f.loader)throw Error(`Component "${f.name}" requires component or loader`);let C={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!C.component&&C.loader)C.component=zf(C.loader,f.name),C.isLazy=!0;return C};function W(f){let C=dC(f);return R.set(C.name,C),C.component}var bC=(f)=>{f.forEach((C)=>W(C))},pC=(f)=>{R.delete(f)},vC=(f)=>{return R.has(f)},cC=(f)=>{return R.get(f)?.metadata},c=(f)=>{return R.get(f)},gC=()=>{return Array.from(R.keys())},hC=()=>{return R.size},mf=()=>Array.from(R.values()).filter((f)=>f.isLazy&&typeof f.loader==="function").map((f)=>f.name),kf=(f)=>{let C=R.get(f);if(!C?.isLazy||typeof C.loader!=="function")return;return Ef(f,C.loader)},yf=!1,rC=()=>{if(yf||typeof window>"u")return;yf=!0;let f=navigator.connection;if(f?.saveData)return;if(f?.effectiveType&&["slow-2g","2g"].includes(f.effectiveType))return;let C=mf(),U="requestIdleCallback"in window?(H)=>window.requestIdleCallback(H,{timeout:2000}):(H)=>window.setTimeout(H,300),I=(H)=>{if(H>=C.length)return;U(()=>{Promise.resolve().then(()=>kf(C[H])).catch(()=>{}).finally(()=>I(H+1))})};I(0)};import{useContext as uf,memo as TU}from"react";import{createContext as lC}from"react";import{jsx as sC,Fragment as iC}from"react/jsx-runtime";var nC=Q("@swarm.ing/pieui:context:fallback",()=>lC(sC(iC,{}))),K=nC;import{createContext as tC}from"react";var aC=Q("@swarm.ing/pieui:context:lazyError",()=>tC(void 0)),k=aC;import{Component as eC,Suspense as fU}from"react";import{jsx as IU}from"react/jsx-runtime";var CU=2,UU=400;class b extends eC{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(f){if(this.props.onError?.(f),this.state.attempt<CU){let C=UU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((U)=>({failed:!1,attempt:U.attempt+1}))},C)}}componentDidUpdate(f){if(f.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return IU(fU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as of}from"react/jsx-runtime";function HU({uiConfig:f,setUiAjaxConfiguration:C}){let U=uf(K),I=uf(k),H=N();if(H)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!C);let T=c(f.card);if(!T?.component){if(H)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return U}if(H)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let D=T.component,V=of(D,{data:f.data,content:f.content,setUiAjaxConfiguration:C});if(T.isLazy){if(H)console.log("[UI] Rendering lazy component with Suspense:",T.name);return of(b,{name:T.name,fallback:T.fallback?of(T.fallback,{}):U,onError:I,children:V})}if(H)console.log("[UI] Rendering component directly:",T.name);return V}var F=TU(HU);import{useContext as xf}from"react";import{createContext as DU}from"react";var ZU=Q("@swarm.ing/pieui:context:uiRenderer",()=>DU(null)),M=ZU;import{jsx as a}from"react/jsx-runtime";function jf({uiConfig:f,setUiAjaxConfiguration:C}){let U=xf(K),I=xf(k),H=N();if(H)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!C);let T=c(f.card);if(!T?.component){if(H)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return U}if(H)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(H)console.log("[UILoading] Rendering fallback for:",T.name);let Z=T.fallback;return a(Z,{})}if(H)console.log("[UILoading] No fallback, rendering full component:",T.name);let D=T.component,V=a(M.Provider,{value:jf,children:a(D,{data:f.data,content:f.content,setUiAjaxConfiguration:C})});if(T.isLazy)return a(b,{name:T.name,fallback:U,onError:I,children:V});return V}var qf=jf;import{useContext as OU}from"react";import{jsx as Bf}from"react/jsx-runtime";var VU=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I,sx:H}=f,T=OU(M)??F;return Bf(P,{card:I,data:f,children:Bf("div",{style:H,id:I,children:C.map((D,V)=>{return Bf(T,{uiConfig:D,setUiAjaxConfiguration:U},`children-${V}`)})})})},df=VU;var $U=W({name:"SequenceCard",component:df,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as zU}from"react";import{jsx as bf}from"react/jsx-runtime";var oU=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I}=f,H=zU(M)??F;return bf(P,{card:I,data:f,children:C.map((T,D)=>{return bf(H,{uiConfig:T,setUiAjaxConfiguration:U},`children-${D}`)})})},pf=oU;var qU=W({name:"UnionCard",component:pf,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as XU,useState as YU}from"react";import WU from"html-react-parser";import{useCallback as e,useEffect as BU,useRef as Jf,useState as JU}from"react";function GU(){let f=new AudioContext,C=f.createOscillator(),U=C.connect(f.createMediaStreamDestination());C.start();let I=U.stream.getAudioTracks()[0];return I.enabled=!1,I}function Gf(f=null,C){let[U,I]=JU(!1),H=Jf(null),T=Jf(null),D=Jf(null),V=e(async(J,X=!0)=>{if(H.current)Z();let z=new RTCPeerConnection;if(z.onconnectionstatechange=()=>{if(z.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes(z.connectionState))I(!1)},z.ontrack=(w)=>{if(f)f.srcObject=w.streams[0]},X){let w=await navigator.mediaDevices.getUserMedia({audio:!0});z.addTrack(w.getTracks()[0],w)}else{let w=GU();z.addTrack(w)}let q=z.createDataChannel("oai-events");T.current=q,D.current=new Promise((w)=>{q.addEventListener("open",()=>{w()})});let G=await z.createOffer();await z.setLocalDescription(G);let Y=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:G.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await z.setRemoteDescription({type:"answer",sdp:Y}),H.current=z,await D.current},[f]),Z=e(()=>{let J=T.current;if(J)J.close();H.current?.getSenders()?.forEach((X)=>X.track?.stop()),H.current?.close(),I(!1),H.current=null,T.current=null,D.current=null},[f]),O=e((J)=>{let X=T.current;if(!X){console.error("Data channel is not ready",J);return}let z=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),X.send(JSON.stringify(J)),!J.timestamp)J.timestamp=z;C?.(J)},[C,f]),$=e((J)=>{if(!T.current){console.error("Data channel is not ready");return}let z=()=>{O({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),O({type:"response.create"})};if(D.current)D.current.then(z);else z()},[C,f]);return BU(()=>{let J=T.current;if(!J)return;let X=(z)=>{let q=JSON.parse(z.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();C?.(q)};return J.addEventListener("message",X),()=>{J.removeEventListener("message",X)}},[C,f]),{isSessionActive:U,startSession:V,stopSession:Z,sendTextMessage:$}}import{jsx as QU}from"react/jsx-runtime";var PU=({data:f})=>{let{html:C,useSocketioSupport:U,useCentrifugeSupport:I,useMittSupport:H,centrifugeChannel:T}=f,[D,V]=YU(C),{isSessionActive:Z,startSession:O,sendTextMessage:$}=Gf(null,(q)=>{if(console.log(q.type,q.type==="response.output_text.delta"&&q.delta),q.type==="response.output_text.delta"&&q.delta)V((G)=>G+q.delta)});return XU(()=>{V(C)},[C]),QU(P,{card:"HTMLEmbedCard",data:f,methods:{update:(q)=>{V(q.value)},generateUsingAI:async(q)=>{try{if(!Z&&q.token)await O(q.token,!1);$(q.prompt)}catch(G){console.error("Failed to generate using AI",G)}},initializeAI:async(q)=>{if(!Z&&q.token)await O(q.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:U,useMittSupport:H,centrifugeChannel:T,children:WU(D)})},vf=PU;var wU=W({name:"HTMLEmbedCard",component:vf,metadata:{author:"Swarm.ing"}});import{useEffect as AU,useState as _U}from"react";import{jsx as cf}from"react/jsx-runtime";var FU=({data:f})=>{let{name:C,value:U,useSocketioSupport:I,useCentrifugeSupport:H,useMittSupport:T,centrifugeChannel:D}=f,[V,Z]=_U(U);return AU(()=>{Z(U)},[U]),cf(P,{card:"HiddenCard",data:f,useSocketioSupport:I,useCentrifugeSupport:H,useMittSupport:T,centrifugeChannel:D,methods:{update:({value:O})=>{Z(O)}},children:cf("input",{type:"hidden",id:C,name:C,value:V})})},gf=FU;var KU=W({name:"HiddenCard",component:gf,metadata:{author:"Swarm.ing"}});import{useContext as hf,useEffect as RU}from"react";import{createContext as MU}from"react";var LU=Q("@swarm.ing/pieui:context:navigate",()=>MU(void 0)),S=LU;import{jsx as EU,Fragment as NU}from"react/jsx-runtime";var SU=({data:f})=>{let{url:C}=f,U=hf(S),I=hf(K);return RU(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(C))window.location.href=C;else U?.(C)},[C,U]),EU(NU,{children:I})},rf=SU;var yU=W({name:"AutoRedirectCard",component:rf,metadata:{author:"Swarm.ing"}});import{Bounce as mU,Slide as kU,Zoom as uU,Flip as xU}from"react-toastify";import{toast as jU,ToastContainer as dU}from"react-toastify";import{useContext as bU,useMemo as pU,useRef as vU}from"react";import{jsx as Xf,Fragment as nU}from"react/jsx-runtime";var cU={bounce:mU,slide:kU,zoom:uU,flip:xU},gU=(f)=>{let C={...f,type:f.alertType,transition:f.transition?cU[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};jU(f.message,C)},hU=(f)=>{console.log("Log event",f)},rU=(f)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let C=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(I){console.error("[IOEventsCard] Failed to show notification",I)}},U=window.Notification.permission;if(U==="granted"){C();return}if(U==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")C()})},lU=({data:f})=>{let{useCentrifugeSupport:C,useSocketioSupport:U,useMittSupport:I,centrifugeChannel:H}=f,T=bU(S),D=vU(T);D.current=T;let V=pU(()=>({alert:gU,log:hU,push:rU,redirect:(Z)=>{if(Z.to){let O=Z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else D.current?.(O)}else window.location.reload()},reload:(Z)=>{if(Z.to){let O=Z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else D.current?.(O)}else window.location.reload()}}),[]);return Xf(nU,{children:Xf(P,{card:"IOEventsCard",data:f,useCentrifugeSupport:C,useSocketioSupport:U,useMittSupport:I,centrifugeChannel:H,methods:V,children:Xf(dU,{})})})},lf=lU;var iU=W({name:"IOEventsCard",component:lf,metadata:{author:"Swarm.ing"}});import{useEffect as nf,useState as sU}from"react";import{jsx as sf}from"react/jsx-runtime";var tU=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=sU(I);return nf(()=>{O(I)},[I]),nf(()=>{if(typeof window>"u")return;sessionStorage.setItem(U,Z)},[U,Z]),sf(P,{card:"SessionStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{sessionStorage.removeItem(U),O("")}},children:sf("input",{type:"hidden",id:C,name:C,value:Z})})},tf=tU;var aU=W({name:"SessionStorageCard",component:tf,metadata:{author:"PieData"}});import{useEffect as af,useState as eU}from"react";import{jsx as ef}from"react/jsx-runtime";var fI=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=eU(I);return af(()=>{O(I)},[I]),af(()=>{if(typeof window>"u")return;localStorage.setItem(U,Z)},[U,Z]),ef(P,{card:"DeviceStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{localStorage.removeItem(U),O("")}},children:ef("input",{type:"hidden",id:C,name:C,value:Z})})},fC=fI;var CI=W({name:"DeviceStorageCard",component:fC,metadata:{author:"PieData"}});import{useEffect as CC,useState as UI}from"react";import{jsx as UC}from"react/jsx-runtime";var II=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=UI(I);return CC(()=>{O(I)},[I]),CC(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.CloudStorage;if(!$)return;$.setItem(U,Z)},[U,Z]),UC(P,{card:"CloudStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{let $=window.Telegram?.WebApp?.CloudStorage;if($)$.removeItem(U);O("")}},children:UC("input",{type:"hidden",id:C,name:C,value:Z})})},IC=II;var TI=W({name:"CloudStorageCard",component:IC,metadata:{author:"PieData"}});import{useEffect as TC,useState as HI}from"react";import{jsx as HC}from"react/jsx-runtime";var DI=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=HI(I);return TC(()=>{O(I)},[I]),TC(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.SecureStorage;if(!$)return;$.setItem(U,Z)},[U,Z]),HC(P,{card:"SecureStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{let $=window.Telegram?.WebApp?.SecureStorage;if($)$.removeItem(U);O("")}},children:HC("input",{type:"hidden",id:C,name:C,value:Z})})},DC=DI;var ZI=W({name:"SecureStorageCard",component:DC,metadata:{author:"PieData"}});import{useCallback as Yf,useContext as Wf,useEffect as OI,useRef as VI,useState as ZC}from"react";import{jsx as OC}from"react/jsx-runtime";var $I=({data:f,content:C})=>{let{useLoader:U,noReturn:I,returnType:H,useSocketioSupport:T,useCentrifugeSupport:D,useMittSupport:V,centrifugeChannel:Z}=f,O=Wf(K),$=Wf(M)??F,[J,X]=ZC(!1),[z,q]=ZC(null),G=VI(C),o=Wf(m),B=Yf((w)=>{if(w===null)X(!0);else if(X(!1),!I)G.current=w;if(!I)q(w)},[I]),A=Yf((w)=>{G.current=w.content,q(w.content)},[]),Y=Yf((w)=>{if(w===null)X(!0);else if(X(!1),!I)for(let r of w)o?.emit(r.name,r.data)},[I,o]);if(OI(()=>{q(C),X(!1)},[C]),!z&&U)return O;return OC(P,{card:"AjaxGroupCard",data:f,methods:{changeContent:A},useSocketioSupport:T,useCentrifugeSupport:D,useMittSupport:V,centrifugeChannel:Z,children:OC($,{uiConfig:z??G.current,setUiAjaxConfiguration:H==="events"?Y:B})})},VC=$I;var zI=W({name:"AjaxGroupCard",component:VC,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as $C}from"react";import{jsx as Pf}from"react/jsx-runtime";var oI=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I,url:H,sx:T}=f,D=$C(S),V=$C(M)??F;return Pf(P,{card:I,data:f,children:Pf("div",{style:T,id:I,onClick:(O)=>{if(H)if(O.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else D?.(H)},children:Pf(V,{setUiAjaxConfiguration:U,uiConfig:C})})})},zC=oI;var qI=W({name:"BoxCard",component:zC,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as BI}from"react";import{jsx as Qf}from"react/jsx-runtime";var JI=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I,sx:H}=f,T=BI(M)??F;return Qf(P,{card:I,data:f,children:Qf("div",{style:H,id:I,children:C.map((D,V)=>{return Qf(T,{uiConfig:D,setUiAjaxConfiguration:U},`children-${V}`)})})})},oC=JI;var GI=W({name:"OneOfCard",component:oC,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as h}from"react";import{QueryClient as KI,QueryClientProvider as MI,useQuery as LI}from"@tanstack/react-query";import{useContext as WI,useEffect as PI}from"react";import{useEffect as XI,useState as YI}from"react";var ff=new Map,Cf=new Map;function Uf(f,C){let U=`${f}::${C}`,I=f?ff.get(U):void 0,[H,T]=YI(I??null);return XI(()=>{if(!f)return;if(ff.has(U)){T(ff.get(U));return}let D=Cf.get(U);if(!D)D=fetch(f+`api/support/${C}`,{method:"GET"}).then((Z)=>Z.json()).then((Z)=>{return ff.set(U,Z),Cf.delete(U),Z}).catch((Z)=>{throw Cf.delete(U),Z}),Cf.set(U,D);let V=!1;return D.then((Z)=>{if(!V)T(Z)}).catch(()=>{}),()=>{V=!0}},[f,C,U]),H}var g=Q("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function qC(){g.resolve?.()}function wf(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!g.promise)g.promise=new Promise((f)=>{g.resolve=()=>{f()}});return g.promise}var QI=({children:f})=>{let C=WI(y),U=n(),I=Uf(U,"socketIO"),H=(T)=>{if(typeof window<"u")window.sid=T.sid,qC(),console.log(`SocketIO initialized: ${window.sid}`)};return PI(()=>{if(!C)return;let T=()=>{console.log("SocketIO connected")},D=(V)=>{console.log(`SocketIO disconnected: ${V}`),C.connect()};if(I)C.on("pieinit",H),C.on("connect",T),C.on("disconnect",D),C.connect();return()=>{if(I)C.off("pieinit",H),C.off("connect",T),C.off("disconnect",D),C.disconnect()}},[C,I]),f},If=QI;import{useContext as wI,useEffect as AI}from"react";var _I=({children:f})=>{let C=wI(E),U=n(),I=Uf(U,"centrifuge");return AI(()=>{if(!C)return;let H=()=>{console.log("Centrifuge connected")},T=(D)=>{console.log("Centrifuge disconnected:",D)};if(I)C.on("connected",H),C.on("disconnected",T),C.connect();return()=>{if(I)C.disconnect()}},[C,I]),f},Tf=_I;import{createAxiosDateTransformer as RI}from"axios-date-transformer";import{jsx as FI}from"react/jsx-runtime";function BC(f,C,U){if(!C)return U;let I=f.replace(/^\//,""),H=C[I];if(!H)return U;return FI(qf,{uiConfig:H})}import{jsx as _,Fragment as EI}from"react/jsx-runtime";var SI=({location:f,fallback:C,piecache:U,onError:I,queryOptions:H,disableGlobalForm:T})=>{let D=v(),V=i(),Z=N(),O=h(()=>RI({baseURL:D||""}),[D]),$=h(()=>d(),[]),J=h(()=>D?t(D):null,[D]),X=h(()=>D?s(D,V):null,[D,V]),{data:z,isLoading:q,error:G}=LI({queryKey:["uiConfig",f.pathname+f.search,D],enabled:!!D,queryFn:async()=>{let B=new URLSearchParams(f.search);B.set("__pieroot","web");let A="/api/content"+f.pathname+"?"+B.toString();if(Z)console.log("[PieRoot] Fetching UI configuration from:",A);let Y=await O.get(A,{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:",Y.data);return Y.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(B)=>Math.min(1000*2**B,30000),...H}),o=BC(f.pathname,U,C);if(!D)return o??null;if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",V),console.log("[PieRoot] Fallback provided:",!!C),console.log("[PieRoot] Piecache provided:",!!U);if(G){if(Z)console.error("[PieRoot] Error fetching UI configuration:",G),console.error("[PieRoot] Error details:",{message:G.message,status:G.response?.status,data:G.response?.data});return I?.(G),o}if(q||!z){if(Z)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!z});return o}if(Z)console.log("[PieRoot] UI configuration loaded successfully:",z),console.log("[PieRoot] Rendering UI with configuration");return _(m.Provider,{value:$,children:_(y.Provider,{value:J,children:_(E.Provider,{value:X,children:_(K.Provider,{value:C??_(EI,{}),children:_(If,{children:_(Tf,{children:T?_(F,{uiConfig:z}):_("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:_(F,{uiConfig:z})})})})})})})})},NI=(f)=>{let C=h(()=>new KI,[]),U=f.queryClient??C;return _(S.Provider,{value:f.onNavigate,children:_(j.Provider,{value:f.config,children:_(k.Provider,{value:f.onError,children:_(MI,{client:U,children:_(SI,{...f})})})})})},Af=NI;import{useMemo as _f,useState as yI}from"react";import{QueryClient as mI,QueryClientProvider as kI}from"@tanstack/react-query";import{jsx as L,Fragment as jI}from"react/jsx-runtime";var uI=({location:f,fallback:C,children:U,disableGlobalForm:I})=>{let H=v(),T=i(),D=N(),V=_f(()=>d(),[]),Z=_f(()=>H?t(H):null,[H]),O=_f(()=>H?s(H,T):null,[H,T]);if(D)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",H),console.log("[PieRoot] CENTRIFUGE_SERVER:",T),console.log("[PieRoot] Fallback provided:",!!C);return L(m.Provider,{value:V,children:L(y.Provider,{value:Z,children:L(E.Provider,{value:O,children:L(K.Provider,{value:C??L(jI,{}),children:L(If,{children:L(Tf,{children:I?U:L("form",{id:"piedata_global_form",action:H+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:U})})})})})})})},xI=(f)=>{let[C]=yI(()=>new mI),U=f.queryClient??C;return L(S.Provider,{value:f.onNavigate,children:L(j.Provider,{value:f.config,children:L(k.Provider,{value:f.onError,children:L(kI,{client:U,children:L(uI,{...f})})})})})},dI=xI;import{useMemo as bI}from"react";import{jsx as JC}from"react/jsx-runtime";var pI=JC("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),vI=({apiServer:f,pathname:C="/",search:U="",centrifugeServer:I,fallback:H,enableRenderingLog:T=!1})=>{let D=f??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",V=bI(()=>({apiServer:D,centrifugeServer:I,enableRenderingLog:T,pageProcessor:"web"}),[D,I,T]);return JC(Af,{location:{pathname:C,search:U},config:V,fallback:H??pI,onNavigate:(O)=>{if(typeof window<"u")window.history.pushState(null,"",O)}})},cI=vI;import{useMemo as gI}from"react";var GC=(f,C=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let U=document.getElementsByName(f);if(!U.length){if(C)console.warn(`No input found with name ${f}`);return[]}let I=U[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[]},hI=(f,C={},U=[],I,H)=>{let T=H?.renderingLogEnabled??!1,D=H?.timeout,V=H?.retryPolicy,Z=V?.maxRetries??0,O=V?.baseDelay??1000,$=V?.retryOn??[502,503,504];if(T)console.log("Registering AJAX: ",I,C,U);return async(J={})=>{if(typeof window>"u"||typeof document>"u"){if(T)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let X=H?.apiServer;if(!X){if(T)console.warn("AJAX skipped: apiServer is missing");return}if(!I||!f){if(T)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(U.includes("sid"))await wf();let z=new FormData;for(let[o,B]of Object.entries({...C,...J}))z.append(o,B);for(let o of U)for(let B of GC(o,T))z.append(o,B);let q=X+"api/ajax_content"+I;f(null);let G;for(let o=0;o<=Z;o++){if(o>0){let Y=O*2**(o-1);if(T)console.log(`AJAX retry ${o}/${Z} after ${Y}ms`);await new Promise((w)=>setTimeout(w,Y))}let B=D!=null?new AbortController:null,A=B&&setTimeout(()=>B.abort(),D);try{let Y=await fetch(q,{method:"POST",body:z,signal:B?.signal});if(A)clearTimeout(A);if(!Y.ok&&$.includes(Y.status)&&o<Z){G=Error(`HTTP ${Y.status}`);continue}let r=(Y.headers.get("content-type")||"").includes("application/json");if(!!Y.body?.getReader&&!r){let l=Y.body.getReader(),XC=new TextDecoder,x="";while(!0){let{done:Hf,value:YC}=await l.read();if(Hf)break;x+=XC.decode(YC,{stream:!0});let Ff=x.split(`
3
+ `);x=Ff.pop()??"";for(let WC of Ff){let Df=WC.trim();if(!Df)continue;try{let PC=JSON.parse(Df);f([PC])}catch{if(T)console.warn("Failed to parse streamed line:",Df)}}}if(x.trim())try{let Hf=JSON.parse(x);f([Hf])}catch{if(T)console.warn("Failed to parse final streamed line:",x)}return{}}else{let l=await Y.json();return f(l),l}}catch(Y){if(A)clearTimeout(A);if(G=Y,o<Z)continue;if(T)console.error("AJAX request failed:",Y);return f(null),Y}}if(T)console.error("AJAX request failed after retries:",G);return f(null),G}},rI=(f,C={},U=[],I,H)=>{let{apiServer:T,enableRenderingLog:D}=p(),V=JSON.stringify(C),Z=JSON.stringify(U),O=JSON.stringify(H);return gI(()=>hI(f,C,U,I,{apiServer:T,renderingLogEnabled:D,timeout:H?.timeout,retryPolicy:H?.retryPolicy}),[f,V,Z,I,T,D,O])};import{clsx as lI}from"clsx";import{twMerge as nI}from"tailwind-merge";function iI(...f){return nI(lI(f))}var sI=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var tI=(f,C)=>`${f}${Of}${C}`;export{EC as usePieEmit,rI as useAjaxSubmit,pC as unregisterComponent,zf as trackLazy,sI as submitGlobalForm,R as registry,W as registerPieComponent,bC as registerMultipleComponents,GC as readAjaxKey,kf as preloadComponent,rC as prefetchLazyComponents,tI as pieName,vC as hasComponent,hC as getRegistrySize,c as getRegistryEntry,mf as getLazyComponentNames,d as getEmitter,cC as getComponentMeta,gC as getAllRegisteredComponents,iI as cn,qU as UnionCard,M as UIRendererContext,qf as UILoading,F as UI,y as SocketIOContext,aU as SessionStorageCard,$U as SequenceCard,ZI as SecureStorageCard,Af as PieRoot,cI as PiePreviewRoot,j as PieConfigContext,P as PieCard,dI as PieBaseRoot,Of as PIEBREAK,GI as OneOfCard,m as MittContext,iU as IOEventsCard,KU as HiddenCard,wU as HTMLEmbedCard,K as FallbackContext,CI as DeviceStorageCard,TI as CloudStorageCard,E as CentrifugeIOContext,qI as BoxCard,yU as AutoRedirectCard,zI as AjaxGroupCard};
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- var EI=Object.create;var{getPrototypeOf:yI,defineProperty:a,getOwnPropertyNames:OU,getOwnPropertyDescriptor:kI}=Object,TU=Object.prototype.hasOwnProperty;var VU=(f,U,I)=>{I=f!=null?EI(yI(f)):{};let C=U||!f||!f.__esModule?a(I,"default",{value:f,enumerable:!0}):I;for(let D of OU(f))if(!TU.call(C,D))a(C,D,{get:()=>f[D],enumerable:!0});return C},ZU=new WeakMap,jI=(f)=>{var U=ZU.get(f),I;if(U)return U;if(U=a({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")OU(f).map((C)=>!TU.call(U,C)&&a(U,C,{get:()=>f[C],enumerable:!(I=kI(f,C))||I.enumerable}));return ZU.set(f,U),U};var xI=(f,U)=>{for(var I in U)a(f,I,{get:U[I],enumerable:!0,configurable:!0,set:(C)=>U[I]=()=>C})};var PC={};xI(PC,{usePieEmit:()=>WU,useAjaxSubmit:()=>SI,unregisterComponent:()=>KU,trackLazy:()=>Xf,submitGlobalForm:()=>wI,registry:()=>R,registerPieComponent:()=>Y,registerMultipleComponents:()=>FU,readAjaxKey:()=>HU,preloadComponent:()=>gf,prefetchLazyComponents:()=>oU,pieName:()=>MI,hasComponent:()=>_U,getRegistrySize:()=>LU,getRegistryEntry:()=>l,getLazyComponentNames:()=>pf,getEmitter:()=>d,getComponentMeta:()=>wU,getAllRegisteredComponents:()=>MU,cn:()=>_I,UnionCard:()=>dU,UIRendererContext:()=>L,UILoading:()=>Af,UI:()=>_,SocketIOContext:()=>E,SessionStorageCard:()=>eU,SequenceCard:()=>mU,SecureStorageCard:()=>DI,PieRoot:()=>xf,PiePreviewRoot:()=>AI,PieConfigContext:()=>b,PieCard:()=>A,PieBaseRoot:()=>WI,PIEBREAK:()=>Bf,OneOfCard:()=>qI,MittContext:()=>y,IOEventsCard:()=>tU,HiddenCard:()=>hU,HTMLEmbedCard:()=>cU,FallbackContext:()=>M,DeviceStorageCard:()=>UI,CloudStorageCard:()=>CI,CentrifugeIOContext:()=>N,BoxCard:()=>VI,AutoRedirectCard:()=>iU,AjaxGroupCard:()=>OI});module.exports=jI(PC);var k=require("react");var $f=require("react"),b=$f.createContext(null),e=()=>{let f=$f.useContext(b);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},ff=()=>{let{apiServer:f}=e();return f},zf=ff,qf=()=>{let{centrifugeServer:f}=e();return f};var x=()=>{let{enableRenderingLog:f}=e();return f},$U=x;var Bf="__piedemo__";var qU=require("react"),df=require("centrifuge"),zU=new Map,Gf=(f,U)=>{if(!U)return null;let I=`${f}::${U}`,C=zU.get(I);if(C)return C;async function D(){let Z=await fetch(f+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new df.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let H=new df.Centrifuge(U,{getToken:D});return zU.set(I,H),H},mI=qU.createContext(null),N=mI;var GU=require("socket.io-client"),JU=require("react"),BU=new Map,Jf=(f)=>{let U=BU.get(f);if(U)return U;let I=GU.io(f,{autoConnect:!1,transports:["websocket"]});return BU.set(f,I),I},uI=JU.createContext(null),E=uI;var XU=VU(require("mitt")),g=require("react"),vf=null;function d(){if(!vf)vf=XU.default();return vf}var YU=g.createContext(null);function WU(f){let U=g.useContext(YU);return g.useCallback((I,C)=>{(U??d()).emit(`pie${I}_${f}`,C)},[f,U])}var y=YU;var c=require("react/jsx-runtime"),bI=({card:f,data:U,children:I,useSocketioSupport:C=!1,useCentrifugeSupport:D=!1,useMittSupport:H=!1,centrifugeChannel:Z=void 0,methods:V=void 0,stored:O=void 0})=>{let T=$U(),$=k.useRef(V);if($.current=V,T)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:C,centrifuge:D,mitt:H,centrifugeChannel:Z}),console.log("[PieCard] Methods:",V?Object.keys(V):"none"),console.log("[PieCard] Has children:",!!I);let J=k.useContext(E),W=k.useContext(N),z=k.useContext(y);if(k.useEffect(()=>{if(!J||!C||!$.current||!U.name){if(T&&C)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!J,useSocketioSupport:C,hasMethods:!!$.current,hasDataName:!!U?.name});return}let X=Object.keys($.current??{}).map((q)=>{let G=`pie${q}_${U.name}`;if(T)console.log(`[PieCard] Socket.IO registering event: ${G}`);let S=(Q)=>{$.current?.[q]?.(Q)};return J.on(G,S),[G,S]});return()=>{X.forEach(([q,G])=>{if(T)console.log(`[PieCard] Socket.IO unregistering event: ${q}`);J.off(q,G)})}},[J,U.name,C]),k.useEffect(()=>{if(!W||!D||!Z||!U.name){if(T&&D)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!W,useCentrifugeSupport:D,hasCentrifugeChannel:!!Z,hasMethods:!!$.current,hasDataName:!!U?.name});return}let X=Object.keys($.current??{}).map((q)=>{let G=`pie${q}_${U.name}_${Z}`;if(T)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let S=W.newSubscription(G);return S.on("publication",(Q)=>{if(T)console.log(`[PieCard] Centrifuge received data on ${G}:`,Q.data);$.current?.[q]?.(Q.data)}),S.subscribe(),S});return()=>{X.forEach((q)=>{if(T)console.log("[PieCard] Centrifuge unsubscribing from channel");q.unsubscribe(),W.removeSubscription(q)})}},[W,Z,U.name,D]),k.useEffect(()=>{if(!z||!H||!U.name){if(T&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!z,useMittSupport:H,hasMethods:!!$.current,hasDataName:!!U?.name});return}let B=Object.keys($.current??{}),X={};return B.forEach((q)=>{let G=`pie${q}_${U.name}`,S=(Q)=>{if(T)console.log(`[PieCard] Mitt registering event: ${G}`);$.current?.[q]?.(Q)};X[G]=S,z.on(G,S)}),()=>{Object.entries(X).forEach(([q,G])=>{if(T)console.log(`[PieCard] Mitt unregistering event: ${q}`);z.off(q,G)})}},[z,U.name,H]),T)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return c.jsxs(c.Fragment,{children:[c.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),I]});return I},A=bI;var QU=require("react"),v=new Map;function AU(f,U){return U.catch(()=>{if(v.get(f)===U)v.delete(f)}),v.set(f,U),U}function Xf(f,U){return QU.lazy(()=>{if(v.has(U))return v.get(U);return AU(U,f().then((I)=>I))})}var PU=async(f,U)=>{if(!U)return;if(v.has(f))return v.get(f);return AU(f,U().then((I)=>I))};var R=new Map,dI=(f)=>{if(!f.name)throw Error("Component registration requires a name");if(!f.component&&!f.loader)throw Error(`Component "${f.name}" requires component or loader`);let U={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=Xf(U.loader,f.name),U.isLazy=!0;return U};function Y(f){let U=dI(f);return R.set(U.name,U),U.component}var FU=(f)=>{f.forEach((U)=>Y(U))},KU=(f)=>{R.delete(f)},_U=(f)=>{return R.has(f)},wU=(f)=>{return R.get(f)?.metadata},l=(f)=>{return R.get(f)},MU=()=>{return Array.from(R.keys())},LU=()=>{return R.size},pf=()=>Array.from(R.values()).filter((f)=>f.isLazy&&typeof f.loader==="function").map((f)=>f.name),gf=(f)=>{let U=R.get(f);if(!U?.isLazy||typeof U.loader!=="function")return;return PU(f,U.loader)},SU=!1,oU=()=>{if(SU||typeof window>"u")return;SU=!0;let f=navigator.connection;if(f?.saveData)return;if(f?.effectiveType&&["slow-2g","2g"].includes(f.effectiveType))return;let U=pf(),I="requestIdleCallback"in window?(D)=>window.requestIdleCallback(D,{timeout:2000}):(D)=>window.setTimeout(D,300),C=(D)=>{if(D>=U.length)return;I(()=>{Promise.resolve().then(()=>gf(U[D])).catch(()=>{}).finally(()=>C(D+1))})};C(0)};var Uf=require("react");var RU=require("react"),Yf=require("react/jsx-runtime"),vI=RU.createContext(Yf.jsx(Yf.Fragment,{})),M=vI;var NU=require("react"),pI=NU.createContext(void 0),m=pI;var Wf=require("react"),EU=require("react/jsx-runtime"),gI=2,cI=400;class h extends Wf.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(f){if(this.props.onError?.(f),this.state.attempt<gI){let U=cI*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},U)}}componentDidUpdate(f){if(f.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return EU.jsx(Wf.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var Qf=require("react/jsx-runtime");function lI({uiConfig:f,setUiAjaxConfiguration:U}){let I=Uf.useContext(M),C=Uf.useContext(m),D=x();if(D)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let H=l(f.card);if(!H?.component){if(D)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return I}if(D)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let Z=H.component,V=Qf.jsx(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(H.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",H.name);return Qf.jsx(h,{name:H.name,fallback:H.fallback?Qf.jsx(H.fallback,{}):I,onError:C,children:V})}if(D)console.log("[UI] Rendering component directly:",H.name);return V}var _=Uf.memo(lI);var cf=require("react");var yU=require("react"),hI=yU.createContext(null),L=hI;var If=require("react/jsx-runtime");function kU({uiConfig:f,setUiAjaxConfiguration:U}){let I=cf.useContext(M),C=cf.useContext(m),D=x();if(D)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let H=l(f.card);if(!H?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return I}if(D)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(D)console.log("[UILoading] Rendering fallback for:",H.name);let O=H.fallback;return If.jsx(O,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",H.name);let Z=H.component,V=If.jsx(L.Provider,{value:kU,children:If.jsx(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(H.isLazy)return If.jsx(h,{name:H.name,fallback:I,onError:C,children:V});return V}var Af=kU;var jU=require("react");var Pf=require("react/jsx-runtime"),rI=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,sx:D}=f,H=jU.useContext(L)??_;return Pf.jsx(A,{card:C,data:f,children:Pf.jsx("div",{style:D,id:C,children:U.map((Z,V)=>{return Pf.jsx(H,{uiConfig:Z,setUiAjaxConfiguration:I},`children-${V}`)})})})},xU=rI;var mU=Y({name:"SequenceCard",component:xU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var uU=require("react");var lf=require("react/jsx-runtime"),nI=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C}=f,D=uU.useContext(L)??_;return lf.jsx(A,{card:C,data:f,children:U.map((H,Z)=>{return lf.jsx(D,{uiConfig:H,setUiAjaxConfiguration:I},`children-${Z}`)})})},bU=nI;var dU=Y({name:"UnionCard",component:bU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var Sf=require("react"),vU=VU(require("html-react-parser"));var o=require("react");function iI(){let f=new AudioContext,U=f.createOscillator(),I=U.connect(f.createMediaStreamDestination());U.start();let C=I.stream.getAudioTracks()[0];return C.enabled=!1,C}function hf(f=null,U){let[I,C]=o.useState(!1),D=o.useRef(null),H=o.useRef(null),Z=o.useRef(null),V=o.useCallback(async(J,W=!0)=>{if(D.current)O();let z=new RTCPeerConnection;if(z.onconnectionstatechange=()=>{if(z.connectionState==="connected")C(!0);else if(["disconnected","failed","closed"].includes(z.connectionState))C(!1)},z.ontrack=(P)=>{if(f)f.srcObject=P.streams[0]},W){let P=await navigator.mediaDevices.getUserMedia({audio:!0});z.addTrack(P.getTracks()[0],P)}else{let P=iI();z.addTrack(P)}let B=z.createDataChannel("oai-events");H.current=B,Z.current=new Promise((P)=>{B.addEventListener("open",()=>{P()})});let X=await z.createOffer();await z.setLocalDescription(X);let Q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await z.setRemoteDescription({type:"answer",sdp:Q}),D.current=z,await Z.current},[f]),O=o.useCallback(()=>{let J=H.current;if(J)J.close();D.current?.getSenders()?.forEach((W)=>W.track?.stop()),D.current?.close(),C(!1),D.current=null,H.current=null,Z.current=null},[f]),T=o.useCallback((J)=>{let W=H.current;if(!W){console.error("Data channel is not ready",J);return}let z=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),W.send(JSON.stringify(J)),!J.timestamp)J.timestamp=z;U?.(J)},[U,f]),$=o.useCallback((J)=>{if(!H.current){console.error("Data channel is not ready");return}let z=()=>{T({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),T({type:"response.create"})};if(Z.current)Z.current.then(z);else z()},[U,f]);return o.useEffect(()=>{let J=H.current;if(!J)return;let W=(z)=>{let B=JSON.parse(z.data);if(!B.timestamp)B.timestamp=new Date().toLocaleTimeString();U?.(B)};return J.addEventListener("message",W),()=>{J.removeEventListener("message",W)}},[U,f]),{isSessionActive:I,startSession:V,stopSession:O,sendTextMessage:$}}var gU=require("react/jsx-runtime"),sI=({data:f})=>{let{html:U,useSocketioSupport:I,useCentrifugeSupport:C,useMittSupport:D,centrifugeChannel:H}=f,[Z,V]=Sf.useState(U),{isSessionActive:O,startSession:T,sendTextMessage:$}=hf(null,(B)=>{if(console.log(B.type,B.type==="response.output_text.delta"&&B.delta),B.type==="response.output_text.delta"&&B.delta)V((X)=>X+B.delta)});return Sf.useEffect(()=>{V(U)},[U]),gU.jsx(A,{card:"HTMLEmbedCard",data:f,methods:{update:(B)=>{V(B.value)},generateUsingAI:async(B)=>{try{if(!O&&B.token)await T(B.token,!1);$(B.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(B)=>{if(!O&&B.token)await T(B.token,!1)}},useCentrifugeSupport:C,useSocketioSupport:I,useMittSupport:D,centrifugeChannel:H,children:vU.default(Z)})},pU=sI;var cU=Y({name:"HTMLEmbedCard",component:pU,metadata:{author:"Swarm.ing"}});var Ff=require("react");var rf=require("react/jsx-runtime"),tI=({data:f})=>{let{name:U,value:I,useSocketioSupport:C,useCentrifugeSupport:D,useMittSupport:H,centrifugeChannel:Z}=f,[V,O]=Ff.useState(I);return Ff.useEffect(()=>{O(I)},[I]),rf.jsx(A,{card:"HiddenCard",data:f,useSocketioSupport:C,useCentrifugeSupport:D,useMittSupport:H,centrifugeChannel:Z,methods:{update:({value:T})=>{O(T)}},children:rf.jsx("input",{type:"hidden",id:U,name:U,value:V})})},lU=tI;var hU=Y({name:"HiddenCard",component:lU,metadata:{author:"Swarm.ing"}});var Cf=require("react");var rU=require("react"),aI=rU.createContext(void 0),j=aI;var Kf=require("react/jsx-runtime"),eI=({data:f})=>{let{url:U}=f,I=Cf.useContext(j),C=Cf.useContext(M);return Cf.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else I?.(U)},[U,I]),Kf.jsx(Kf.Fragment,{children:C})},nU=eI;var iU=Y({name:"AutoRedirectCard",component:nU,metadata:{author:"Swarm.ing"}});var u=require("react-toastify"),_f=require("react-toastify");var n=require("react");var r=require("react/jsx-runtime"),fC={bounce:u.Bounce,slide:u.Slide,zoom:u.Zoom,flip:u.Flip},UC=(f)=>{let U={...f,type:f.alertType,transition:f.transition?fC[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};_f.toast(f.message,U)},IC=(f)=>{console.log("Log event",f)},CC=(f)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(C){console.error("[IOEventsCard] Failed to show notification",C)}},I=window.Notification.permission;if(I==="granted"){U();return}if(I==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((C)=>{if(C==="granted")U()})},HC=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:C,centrifugeChannel:D}=f,H=n.useContext(j),Z=n.useRef(H);Z.current=H;let V=n.useMemo(()=>({alert:UC,log:IC,push:CC,redirect:(O)=>{if(O.to){let T=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else Z.current?.(T)}else window.location.reload()},reload:(O)=>{if(O.to){let T=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else Z.current?.(T)}else window.location.reload()}}),[]);return r.jsx(r.Fragment,{children:r.jsx(A,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:C,centrifugeChannel:D,methods:V,children:r.jsx(_f.ToastContainer,{})})})},sU=HC;var tU=Y({name:"IOEventsCard",component:sU,metadata:{author:"Swarm.ing"}});var Hf=require("react");var nf=require("react/jsx-runtime"),DC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=Hf.useState(C);return Hf.useEffect(()=>{T(C)},[C]),Hf.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(I,O)},[I,O]),nf.jsx(A,{card:"SessionStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{sessionStorage.removeItem(I),T("")}},children:nf.jsx("input",{type:"hidden",id:U,name:U,value:O})})},aU=DC;var eU=Y({name:"SessionStorageCard",component:aU,metadata:{author:"PieData"}});var Df=require("react");var sf=require("react/jsx-runtime"),ZC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=Df.useState(C);return Df.useEffect(()=>{T(C)},[C]),Df.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(I,O)},[I,O]),sf.jsx(A,{card:"DeviceStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{localStorage.removeItem(I),T("")}},children:sf.jsx("input",{type:"hidden",id:U,name:U,value:O})})},fI=ZC;var UI=Y({name:"DeviceStorageCard",component:fI,metadata:{author:"PieData"}});var Zf=require("react");var tf=require("react/jsx-runtime"),OC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=Zf.useState(C);return Zf.useEffect(()=>{T(C)},[C]),Zf.useEffect(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.CloudStorage;if(!$)return;$.setItem(I,O)},[I,O]),tf.jsx(A,{card:"CloudStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{let $=window.Telegram?.WebApp?.CloudStorage;if($)$.removeItem(I);T("")}},children:tf.jsx("input",{type:"hidden",id:U,name:U,value:O})})},II=OC;var CI=Y({name:"CloudStorageCard",component:II,metadata:{author:"PieData"}});var Of=require("react");var af=require("react/jsx-runtime"),TC=({data:f})=>{let{name:U,key:I,value:C,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V}=f,[O,T]=Of.useState(C);return Of.useEffect(()=>{T(C)},[C]),Of.useEffect(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.SecureStorage;if(!$)return;$.setItem(I,O)},[I,O]),af.jsx(A,{card:"SecureStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:$})=>{T($)},remove:()=>{let $=window.Telegram?.WebApp?.SecureStorage;if($)$.removeItem(I);T("")}},children:af.jsx("input",{type:"hidden",id:U,name:U,value:O})})},HI=TC;var DI=Y({name:"SecureStorageCard",component:HI,metadata:{author:"PieData"}});var w=require("react");var ef=require("react/jsx-runtime"),VC=({data:f,content:U})=>{let{useLoader:I,noReturn:C,returnType:D,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:V,centrifugeChannel:O}=f,T=w.useContext(M),$=w.useContext(L)??_,[J,W]=w.useState(!1),[z,B]=w.useState(null),X=w.useRef(U),q=w.useContext(y),G=w.useCallback((P)=>{if(P===null)W(!0);else if(W(!1),!C)X.current=P;if(!C)B(P)},[C]),S=w.useCallback((P)=>{X.current=P.content,B(P.content)},[]),Q=w.useCallback((P)=>{if(P===null)W(!0);else if(W(!1),!C)for(let Tf of P)q?.emit(Tf.name,Tf.data)},[C,q]);if(w.useEffect(()=>{B(U),W(!1)},[U]),!z&&I)return T;return ef.jsx(A,{card:"AjaxGroupCard",data:f,methods:{changeContent:S},useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:V,centrifugeChannel:O,children:ef.jsx($,{uiConfig:z??X.current,setUiAjaxConfiguration:D==="events"?Q:G})})},ZI=VC;var OI=Y({name:"AjaxGroupCard",component:ZI,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var fU=require("react");var wf=require("react/jsx-runtime"),$C=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,url:D,sx:H}=f,Z=fU.useContext(j),V=fU.useContext(L)??_;return wf.jsx(A,{card:C,data:f,children:wf.jsx("div",{style:H,id:C,onClick:(T)=>{if(D)if(T.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(D))window.location.href=D;else Z?.(D)},children:wf.jsx(V,{setUiAjaxConfiguration:I,uiConfig:U})})})},TI=$C;var VI=Y({name:"BoxCard",component:TI,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var $I=require("react");var Mf=require("react/jsx-runtime"),zC=({data:f,content:U,setUiAjaxConfiguration:I})=>{let{name:C,sx:D}=f,H=$I.useContext(L)??_;return Mf.jsx(A,{card:C,data:f,children:Mf.jsx("div",{style:D,id:C,children:U.map((Z,V)=>{return Mf.jsx(H,{uiConfig:Z,setUiAjaxConfiguration:I},`children-${V}`)})})})},zI=zC;var qI=Y({name:"OneOfCard",component:zI,metadata:{author:"Swarm.ing",description:"Different variants"}});var i=require("react"),s=require("@tanstack/react-query");var Ef=require("react");var Rf=require("react"),Lf=new Map,of=new Map;function Nf(f,U){let I=`${f}::${U}`,C=f?Lf.get(I):void 0,[D,H]=Rf.useState(C??null);return Rf.useEffect(()=>{if(!f)return;if(Lf.has(I)){H(Lf.get(I));return}let Z=of.get(I);if(!Z)Z=fetch(f+`api/support/${U}`,{method:"GET"}).then((O)=>O.json()).then((O)=>{return Lf.set(I,O),of.delete(I),O}).catch((O)=>{throw of.delete(I),O}),of.set(I,Z);let V=!1;return Z.then((O)=>{if(!V)H(O)}).catch(()=>{}),()=>{V=!0}},[f,U,I]),D}var UU=null,BI=null;function GI(){BI?.()}function IU(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!UU)UU=new Promise((f)=>{BI=()=>{f()}});return UU}var qC=({children:f})=>{let U=Ef.useContext(E),I=zf(),C=Nf(I,"socketIO"),D=(H)=>{if(typeof window<"u")window.sid=H.sid,GI(),console.log(`SocketIO initialized: ${window.sid}`)};return Ef.useEffect(()=>{if(!U)return;let H=()=>{console.log("SocketIO connected")},Z=(V)=>{console.log(`SocketIO disconnected: ${V}`),U.connect()};if(C)U.on("pieinit",D),U.on("connect",H),U.on("disconnect",Z),U.connect();return()=>{if(C)U.off("pieinit",D),U.off("connect",H),U.off("disconnect",Z),U.disconnect()}},[U,C]),f},yf=qC;var kf=require("react");var BC=({children:f})=>{let U=kf.useContext(N),I=zf(),C=Nf(I,"centrifuge");return kf.useEffect(()=>{if(!U)return;let D=()=>{console.log("Centrifuge connected")},H=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(C)U.on("connected",D),U.on("disconnected",H),U.connect();return()=>{if(C)U.disconnect()}},[U,C]),f},jf=BC;var YI=require("axios-date-transformer");var XI=require("react/jsx-runtime");function JI(f,U,I){if(!U)return I;let C=f.replace(/^\//,""),D=U[C];if(!D)return I;return XI.jsx(Af,{uiConfig:D})}var F=require("react/jsx-runtime"),GC=({location:f,fallback:U,piecache:I,onError:C,queryOptions:D,disableGlobalForm:H})=>{let Z=ff(),V=qf(),O=x(),T=i.useMemo(()=>YI.createAxiosDateTransformer({baseURL:Z||""}),[Z]),$=i.useMemo(()=>d(),[]),J=i.useMemo(()=>Z?Jf(Z):null,[Z]),W=i.useMemo(()=>Z?Gf(Z,V):null,[Z,V]),{data:z,isLoading:B,error:X}=s.useQuery({queryKey:["uiConfig",f.pathname+f.search,Z],enabled:!!Z,queryFn:async()=>{let G=new URLSearchParams(f.search);G.set("__pieroot","web");let S="/api/content"+f.pathname+"?"+G.toString();if(O)console.log("[PieRoot] Fetching UI configuration from:",S);let Q=await T.get(S,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(O)console.log("[PieRoot] Received UI configuration:",Q.data);return Q.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(G)=>Math.min(1000*2**G,30000),...D}),q=JI(f.pathname,I,U);if(!Z)return q??null;if(O)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",V),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!I);if(X){if(O)console.error("[PieRoot] Error fetching UI configuration:",X),console.error("[PieRoot] Error details:",{message:X.message,status:X.response?.status,data:X.response?.data});return C?.(X),q}if(B||!z){if(O)console.log("[PieRoot] Loading state:",{isLoading:B,hasUiConfiguration:!!z});return q}if(O)console.log("[PieRoot] UI configuration loaded successfully:",z),console.log("[PieRoot] Rendering UI with configuration");return F.jsx(y.Provider,{value:$,children:F.jsx(E.Provider,{value:J,children:F.jsx(N.Provider,{value:W,children:F.jsx(M.Provider,{value:U??F.jsx(F.Fragment,{}),children:F.jsx(yf,{children:F.jsx(jf,{children:H?F.jsx(_,{uiConfig:z}):F.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:F.jsx(_,{uiConfig:z})})})})})})})})},JC=(f)=>{let U=i.useMemo(()=>new s.QueryClient,[]),I=f.queryClient??U;return F.jsx(j.Provider,{value:f.onNavigate,children:F.jsx(b.Provider,{value:f.config,children:F.jsx(m.Provider,{value:f.onError,children:F.jsx(s.QueryClientProvider,{client:I,children:F.jsx(GC,{...f})})})})})},xf=JC;var t=require("react"),mf=require("@tanstack/react-query");var K=require("react/jsx-runtime"),XC=({location:f,fallback:U,children:I,disableGlobalForm:C})=>{let D=ff(),H=qf(),Z=x(),V=t.useMemo(()=>d(),[]),O=t.useMemo(()=>D?Jf(D):null,[D]),T=t.useMemo(()=>D?Gf(D,H):null,[D,H]);if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",H),console.log("[PieRoot] Fallback provided:",!!U);return K.jsx(y.Provider,{value:V,children:K.jsx(E.Provider,{value:O,children:K.jsx(N.Provider,{value:T,children:K.jsx(M.Provider,{value:U??K.jsx(K.Fragment,{}),children:K.jsx(yf,{children:K.jsx(jf,{children:C?I:K.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:I})})})})})})})},YC=(f)=>{let[U]=t.useState(()=>new mf.QueryClient),I=f.queryClient??U;return K.jsx(j.Provider,{value:f.onNavigate,children:K.jsx(b.Provider,{value:f.config,children:K.jsx(m.Provider,{value:f.onError,children:K.jsx(mf.QueryClientProvider,{client:I,children:K.jsx(XC,{...f})})})})})},WI=YC;var QI=require("react");var CU=require("react/jsx-runtime"),WC=CU.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),QC=({apiServer:f,pathname:U="/",search:I="",centrifugeServer:C,fallback:D,enableRenderingLog:H=!1})=>{let Z=f??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",V=QI.useMemo(()=>({apiServer:Z,centrifugeServer:C,enableRenderingLog:H,pageProcessor:"web"}),[Z,C,H]);return CU.jsx(xf,{location:{pathname:U,search:I},config:V,fallback:D??WC,onNavigate:(T)=>{if(typeof window<"u")window.history.pushState(null,"",T)}})},AI=QC;var PI=require("react"),HU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let I=document.getElementsByName(f);if(!I.length){if(U)console.warn(`No input found with name ${f}`);return[]}let C=I[0];if(C instanceof HTMLInputElement){if(C.type==="file"&&C.files)return Array.from(C.files);return[C.value]}if(C instanceof HTMLTextAreaElement)return[C.value];return[]},AC=(f,U={},I=[],C,D)=>{let H=D?.renderingLogEnabled??!1,Z=D?.timeout,V=D?.retryPolicy,O=V?.maxRetries??0,T=V?.baseDelay??1000,$=V?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",C,U,I);return async(J={})=>{if(typeof window>"u"||typeof document>"u"){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let W=D?.apiServer;if(!W){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!C||!f){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(I.includes("sid"))await IU();let z=new FormData;for(let[q,G]of Object.entries({...U,...J}))z.append(q,G);for(let q of I)for(let G of HU(q,H))z.append(q,G);let B=W+"api/ajax_content"+C;f(null);let X;for(let q=0;q<=O;q++){if(q>0){let Q=T*2**(q-1);if(H)console.log(`AJAX retry ${q}/${O} after ${Q}ms`);await new Promise((P)=>setTimeout(P,Q))}let G=Z!=null?new AbortController:null,S=G&&setTimeout(()=>G.abort(),Z);try{let Q=await fetch(B,{method:"POST",body:z,signal:G?.signal});if(S)clearTimeout(S);if(!Q.ok&&$.includes(Q.status)&&q<O){X=Error(`HTTP ${Q.status}`);continue}let Tf=(Q.headers.get("content-type")||"").includes("application/json");if(!!Q.body?.getReader&&!Tf){let Vf=Q.body.getReader(),LI=new TextDecoder,p="";while(!0){let{done:uf,value:oI}=await Vf.read();if(uf)break;p+=LI.decode(oI,{stream:!0});let DU=p.split(`
3
- `);p=DU.pop()??"";for(let RI of DU){let bf=RI.trim();if(!bf)continue;try{let NI=JSON.parse(bf);f([NI])}catch{if(H)console.warn("Failed to parse streamed line:",bf)}}}if(p.trim())try{let uf=JSON.parse(p);f([uf])}catch{if(H)console.warn("Failed to parse final streamed line:",p)}return{}}else{let Vf=await Q.json();return f(Vf),Vf}}catch(Q){if(S)clearTimeout(S);if(X=Q,q<O)continue;if(H)console.error("AJAX request failed:",Q);return f(null),Q}}if(H)console.error("AJAX request failed after retries:",X);return f(null),X}},SI=(f,U={},I=[],C,D)=>{let{apiServer:H,enableRenderingLog:Z}=e(),V=JSON.stringify(U),O=JSON.stringify(I),T=JSON.stringify(D);return PI.useMemo(()=>AC(f,U,I,C,{apiServer:H,renderingLogEnabled:Z,timeout:D?.timeout,retryPolicy:D?.retryPolicy}),[f,V,O,C,H,Z,T])};var FI=require("clsx"),KI=require("tailwind-merge");function _I(...f){return KI.twMerge(FI.clsx(f))}var wI=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var MI=(f,U)=>`${f}${Bf}${U}`;
2
+ var EU=Object.create;var{getPrototypeOf:yU,defineProperty:e,getOwnPropertyNames:OC,getOwnPropertyDescriptor:mU}=Object,VC=Object.prototype.hasOwnProperty;var $C=(f,C,U)=>{U=f!=null?EU(yU(f)):{};let I=C||!f||!f.__esModule?e(U,"default",{value:f,enumerable:!0}):U;for(let H of OC(f))if(!VC.call(I,H))e(I,H,{get:()=>f[H],enumerable:!0});return I},ZC=new WeakMap,kU=(f)=>{var C=ZC.get(f),U;if(C)return C;if(C=e({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")OC(f).map((I)=>!VC.call(C,I)&&e(C,I,{get:()=>f[I],enumerable:!(U=mU(f,I))||U.enumerable}));return ZC.set(f,C),C};var uU=(f,C)=>{for(var U in C)e(f,U,{get:C[U],enumerable:!0,configurable:!0,set:(I)=>C[U]=()=>I})};var QI={};uU(QI,{usePieEmit:()=>WC,useAjaxSubmit:()=>wU,unregisterComponent:()=>FC,trackLazy:()=>Yf,submitGlobalForm:()=>KU,registry:()=>N,registerPieComponent:()=>X,registerMultipleComponents:()=>_C,readAjaxKey:()=>HC,preloadComponent:()=>hf,prefetchLazyComponents:()=>SC,pieName:()=>MU,hasComponent:()=>KC,getRegistrySize:()=>RC,getRegistryEntry:()=>r,getLazyComponentNames:()=>gf,getEmitter:()=>p,getComponentMeta:()=>MC,getAllRegisteredComponents:()=>LC,cn:()=>FU,UnionCard:()=>pC,UIRendererContext:()=>R,UILoading:()=>wf,UI:()=>K,SocketIOContext:()=>y,SessionStorageCard:()=>fU,SequenceCard:()=>jC,SecureStorageCard:()=>DU,PieRoot:()=>jf,PiePreviewRoot:()=>PU,PieConfigContext:()=>b,PieCard:()=>P,PieBaseRoot:()=>YU,PIEBREAK:()=>Jf,OneOfCard:()=>qU,MittContext:()=>m,IOEventsCard:()=>aC,HiddenCard:()=>lC,HTMLEmbedCard:()=>hC,FallbackContext:()=>L,DeviceStorageCard:()=>UU,CloudStorageCard:()=>TU,CentrifugeIOContext:()=>E,BoxCard:()=>$U,AutoRedirectCard:()=>sC,AjaxGroupCard:()=>OU});module.exports=kU(QI);var k=require("react");var of=require("react");var vf=globalThis,Q=(f,C)=>{let U=Symbol.for(f);if(!(U in vf))vf[U]=C();return vf[U]};var b=Q("@swarm.ing/pieui:context:pieConfig",()=>of.createContext(null)),ff=()=>{let f=of.useContext(b);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},Cf=()=>{let{apiServer:f}=ff();return f},qf=Cf,Bf=()=>{let{centrifugeServer:f}=ff();return f};var x=()=>{let{enableRenderingLog:f}=ff();return f},zC=x;var Jf="__piedemo__";var qC=require("react"),cf=require("centrifuge");var oC=Q("@swarm.ing/pieui:centrifuge-cache",()=>new Map),Gf=(f,C)=>{if(!C)return null;let U=`${f}::${C}`,I=oC.get(U);if(I)return I;async function H(){let D=await fetch(f+"api/centrifuge/gen_token");if(!D.ok){if(D.status===403)throw new cf.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${D.status}`)}return(await D.json()).token}let T=new cf.Centrifuge(C,{getToken:H});return oC.set(U,T),T},xU=Q("@swarm.ing/pieui:context:centrifuge",()=>qC.createContext(null)),E=xU;var JC=require("socket.io-client"),GC=require("react");var BC=Q("@swarm.ing/pieui:socket-cache",()=>new Map),Xf=(f)=>{let C=BC.get(f);if(C)return C;let U=JC.io(f,{autoConnect:!1,transports:["websocket"]});return BC.set(f,U),U},jU=Q("@swarm.ing/pieui:context:socket",()=>GC.createContext(null)),y=jU;var XC=$C(require("mitt")),g=require("react");function p(){return Q("@swarm.ing/pieui:mitt-emitter",()=>XC.default())}var YC=Q("@swarm.ing/pieui:context:mitt",()=>g.createContext(null));function WC(f){let C=g.useContext(YC);return g.useCallback((U,I)=>{(C??p()).emit(`pie${U}_${f}`,I)},[f,C])}var m=YC;var h=require("react/jsx-runtime"),dU=({card:f,data:C,children:U,useSocketioSupport:I=!1,useCentrifugeSupport:H=!1,useMittSupport:T=!1,centrifugeChannel:D=void 0,methods:V=void 0,stored:Z=void 0})=>{let O=zC(),$=k.useRef(V);if($.current=V,O)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",C),console.log("[PieCard] Component name:",C?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:H,mitt:T,centrifugeChannel:D}),console.log("[PieCard] Methods:",V?Object.keys(V):"none"),console.log("[PieCard] Has children:",!!U);let J=k.useContext(y),Y=k.useContext(E),z=k.useContext(m);if(k.useEffect(()=>{if(!J||!I||!$.current||!C.name){if(O&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!J,useSocketioSupport:I,hasMethods:!!$.current,hasDataName:!!C?.name});return}let G=Object.keys($.current??{}).map((o)=>{let B=`pie${o}_${C.name}`;if(O)console.log(`[PieCard] Socket.IO registering event: ${B}`);let A=(W)=>{$.current?.[o]?.(W)};return J.on(B,A),[B,A]});return()=>{G.forEach(([o,B])=>{if(O)console.log(`[PieCard] Socket.IO unregistering event: ${o}`);J.off(o,B)})}},[J,C.name,I]),k.useEffect(()=>{if(!Y||!H||!D||!C.name){if(O&&H)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!Y,useCentrifugeSupport:H,hasCentrifugeChannel:!!D,hasMethods:!!$.current,hasDataName:!!C?.name});return}let G=Object.keys($.current??{}).map((o)=>{let B=`pie${o}_${C.name}_${D}`;if(O)console.log(`[PieCard] Centrifuge subscribing to channel: ${B}`);let A=Y.newSubscription(B);return A.on("publication",(W)=>{if(O)console.log(`[PieCard] Centrifuge received data on ${B}:`,W.data);$.current?.[o]?.(W.data)}),A.subscribe(),A});return()=>{G.forEach((o)=>{if(O)console.log("[PieCard] Centrifuge unsubscribing from channel");o.unsubscribe(),Y.removeSubscription(o)})}},[Y,D,C.name,H]),k.useEffect(()=>{if(!z||!T||!C.name){if(O&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!z,useMittSupport:T,hasMethods:!!$.current,hasDataName:!!C?.name});return}let q=Object.keys($.current??{}),G={};return q.forEach((o)=>{let B=`pie${o}_${C.name}`,A=(W)=>{if(O)console.log(`[PieCard] Mitt registering event: ${B}`);$.current?.[o]?.(W)};G[B]=A,z.on(B,A)}),()=>{Object.entries(G).forEach(([o,B])=>{if(O)console.log(`[PieCard] Mitt unregistering event: ${o}`);z.off(o,B)})}},[z,C.name,T]),O)console.log("[PieCard] Rendering complete, returning children");if(Z!==void 0)return h.jsxs(h.Fragment,{children:[h.jsx("input",{type:"hidden",name:C.name,value:JSON.stringify(Z)}),U]});return U},P=dU;var PC=require("react"),v=new Map;function QC(f,C){return C.catch(()=>{if(v.get(f)===C)v.delete(f)}),v.set(f,C),C}function Yf(f,C){return PC.lazy(()=>{if(v.has(C))return v.get(C);return QC(C,f().then((U)=>U))})}var wC=async(f,C)=>{if(!C)return;if(v.has(f))return v.get(f);return QC(f,C().then((U)=>U))};var N=Q("@swarm.ing/pieui:component-registry",()=>new Map),bU=(f)=>{if(!f.name)throw Error("Component registration requires a name");if(!f.component&&!f.loader)throw Error(`Component "${f.name}" requires component or loader`);let C={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!C.component&&C.loader)C.component=Yf(C.loader,f.name),C.isLazy=!0;return C};function X(f){let C=bU(f);return N.set(C.name,C),C.component}var _C=(f)=>{f.forEach((C)=>X(C))},FC=(f)=>{N.delete(f)},KC=(f)=>{return N.has(f)},MC=(f)=>{return N.get(f)?.metadata},r=(f)=>{return N.get(f)},LC=()=>{return Array.from(N.keys())},RC=()=>{return N.size},gf=()=>Array.from(N.values()).filter((f)=>f.isLazy&&typeof f.loader==="function").map((f)=>f.name),hf=(f)=>{let C=N.get(f);if(!C?.isLazy||typeof C.loader!=="function")return;return wC(f,C.loader)},AC=!1,SC=()=>{if(AC||typeof window>"u")return;AC=!0;let f=navigator.connection;if(f?.saveData)return;if(f?.effectiveType&&["slow-2g","2g"].includes(f.effectiveType))return;let C=gf(),U="requestIdleCallback"in window?(H)=>window.requestIdleCallback(H,{timeout:2000}):(H)=>window.setTimeout(H,300),I=(H)=>{if(H>=C.length)return;U(()=>{Promise.resolve().then(()=>hf(C[H])).catch(()=>{}).finally(()=>I(H+1))})};I(0)};var Uf=require("react");var NC=require("react");var Wf=require("react/jsx-runtime"),pU=Q("@swarm.ing/pieui:context:fallback",()=>NC.createContext(Wf.jsx(Wf.Fragment,{}))),L=pU;var EC=require("react");var vU=Q("@swarm.ing/pieui:context:lazyError",()=>EC.createContext(void 0)),j=vU;var Pf=require("react"),yC=require("react/jsx-runtime"),cU=2,gU=400;class l extends Pf.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(f){if(this.props.onError?.(f),this.state.attempt<cU){let C=gU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((U)=>({failed:!1,attempt:U.attempt+1}))},C)}}componentDidUpdate(f){if(f.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return yC.jsx(Pf.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var Qf=require("react/jsx-runtime");function hU({uiConfig:f,setUiAjaxConfiguration:C}){let U=Uf.useContext(L),I=Uf.useContext(j),H=x();if(H)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!C);let T=r(f.card);if(!T?.component){if(H)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return U}if(H)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let D=T.component,V=Qf.jsx(D,{data:f.data,content:f.content,setUiAjaxConfiguration:C});if(T.isLazy){if(H)console.log("[UI] Rendering lazy component with Suspense:",T.name);return Qf.jsx(l,{name:T.name,fallback:T.fallback?Qf.jsx(T.fallback,{}):U,onError:I,children:V})}if(H)console.log("[UI] Rendering component directly:",T.name);return V}var K=Uf.memo(hU);var rf=require("react");var mC=require("react");var rU=Q("@swarm.ing/pieui:context:uiRenderer",()=>mC.createContext(null)),R=rU;var If=require("react/jsx-runtime");function kC({uiConfig:f,setUiAjaxConfiguration:C}){let U=rf.useContext(L),I=rf.useContext(j),H=x();if(H)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!C);let T=r(f.card);if(!T?.component){if(H)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return U}if(H)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(H)console.log("[UILoading] Rendering fallback for:",T.name);let Z=T.fallback;return If.jsx(Z,{})}if(H)console.log("[UILoading] No fallback, rendering full component:",T.name);let D=T.component,V=If.jsx(R.Provider,{value:kC,children:If.jsx(D,{data:f.data,content:f.content,setUiAjaxConfiguration:C})});if(T.isLazy)return If.jsx(l,{name:T.name,fallback:U,onError:I,children:V});return V}var wf=kC;var uC=require("react");var Af=require("react/jsx-runtime"),lU=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I,sx:H}=f,T=uC.useContext(R)??K;return Af.jsx(P,{card:I,data:f,children:Af.jsx("div",{style:H,id:I,children:C.map((D,V)=>{return Af.jsx(T,{uiConfig:D,setUiAjaxConfiguration:U},`children-${V}`)})})})},xC=lU;var jC=X({name:"SequenceCard",component:xC,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var dC=require("react");var lf=require("react/jsx-runtime"),nU=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I}=f,H=dC.useContext(R)??K;return lf.jsx(P,{card:I,data:f,children:C.map((T,D)=>{return lf.jsx(H,{uiConfig:T,setUiAjaxConfiguration:U},`children-${D}`)})})},bC=nU;var pC=X({name:"UnionCard",component:bC,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var _f=require("react"),vC=$C(require("html-react-parser"));var S=require("react");function iU(){let f=new AudioContext,C=f.createOscillator(),U=C.connect(f.createMediaStreamDestination());C.start();let I=U.stream.getAudioTracks()[0];return I.enabled=!1,I}function nf(f=null,C){let[U,I]=S.useState(!1),H=S.useRef(null),T=S.useRef(null),D=S.useRef(null),V=S.useCallback(async(J,Y=!0)=>{if(H.current)Z();let z=new RTCPeerConnection;if(z.onconnectionstatechange=()=>{if(z.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes(z.connectionState))I(!1)},z.ontrack=(w)=>{if(f)f.srcObject=w.streams[0]},Y){let w=await navigator.mediaDevices.getUserMedia({audio:!0});z.addTrack(w.getTracks()[0],w)}else{let w=iU();z.addTrack(w)}let q=z.createDataChannel("oai-events");T.current=q,D.current=new Promise((w)=>{q.addEventListener("open",()=>{w()})});let G=await z.createOffer();await z.setLocalDescription(G);let W=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:G.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await z.setRemoteDescription({type:"answer",sdp:W}),H.current=z,await D.current},[f]),Z=S.useCallback(()=>{let J=T.current;if(J)J.close();H.current?.getSenders()?.forEach((Y)=>Y.track?.stop()),H.current?.close(),I(!1),H.current=null,T.current=null,D.current=null},[f]),O=S.useCallback((J)=>{let Y=T.current;if(!Y){console.error("Data channel is not ready",J);return}let z=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),Y.send(JSON.stringify(J)),!J.timestamp)J.timestamp=z;C?.(J)},[C,f]),$=S.useCallback((J)=>{if(!T.current){console.error("Data channel is not ready");return}let z=()=>{O({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),O({type:"response.create"})};if(D.current)D.current.then(z);else z()},[C,f]);return S.useEffect(()=>{let J=T.current;if(!J)return;let Y=(z)=>{let q=JSON.parse(z.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();C?.(q)};return J.addEventListener("message",Y),()=>{J.removeEventListener("message",Y)}},[C,f]),{isSessionActive:U,startSession:V,stopSession:Z,sendTextMessage:$}}var gC=require("react/jsx-runtime"),sU=({data:f})=>{let{html:C,useSocketioSupport:U,useCentrifugeSupport:I,useMittSupport:H,centrifugeChannel:T}=f,[D,V]=_f.useState(C),{isSessionActive:Z,startSession:O,sendTextMessage:$}=nf(null,(q)=>{if(console.log(q.type,q.type==="response.output_text.delta"&&q.delta),q.type==="response.output_text.delta"&&q.delta)V((G)=>G+q.delta)});return _f.useEffect(()=>{V(C)},[C]),gC.jsx(P,{card:"HTMLEmbedCard",data:f,methods:{update:(q)=>{V(q.value)},generateUsingAI:async(q)=>{try{if(!Z&&q.token)await O(q.token,!1);$(q.prompt)}catch(G){console.error("Failed to generate using AI",G)}},initializeAI:async(q)=>{if(!Z&&q.token)await O(q.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:U,useMittSupport:H,centrifugeChannel:T,children:vC.default(D)})},cC=sU;var hC=X({name:"HTMLEmbedCard",component:cC,metadata:{author:"Swarm.ing"}});var Ff=require("react");var sf=require("react/jsx-runtime"),tU=({data:f})=>{let{name:C,value:U,useSocketioSupport:I,useCentrifugeSupport:H,useMittSupport:T,centrifugeChannel:D}=f,[V,Z]=Ff.useState(U);return Ff.useEffect(()=>{Z(U)},[U]),sf.jsx(P,{card:"HiddenCard",data:f,useSocketioSupport:I,useCentrifugeSupport:H,useMittSupport:T,centrifugeChannel:D,methods:{update:({value:O})=>{Z(O)}},children:sf.jsx("input",{type:"hidden",id:C,name:C,value:V})})},rC=tU;var lC=X({name:"HiddenCard",component:rC,metadata:{author:"Swarm.ing"}});var Tf=require("react");var nC=require("react");var aU=Q("@swarm.ing/pieui:context:navigate",()=>nC.createContext(void 0)),u=aU;var Kf=require("react/jsx-runtime"),eU=({data:f})=>{let{url:C}=f,U=Tf.useContext(u),I=Tf.useContext(L);return Tf.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(C))window.location.href=C;else U?.(C)},[C,U]),Kf.jsx(Kf.Fragment,{children:I})},iC=eU;var sC=X({name:"AutoRedirectCard",component:iC,metadata:{author:"Swarm.ing"}});var d=require("react-toastify"),Mf=require("react-toastify");var i=require("react");var n=require("react/jsx-runtime"),fI={bounce:d.Bounce,slide:d.Slide,zoom:d.Zoom,flip:d.Flip},CI=(f)=>{let C={...f,type:f.alertType,transition:f.transition?fI[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};Mf.toast(f.message,C)},UI=(f)=>{console.log("Log event",f)},II=(f)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let C=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(I){console.error("[IOEventsCard] Failed to show notification",I)}},U=window.Notification.permission;if(U==="granted"){C();return}if(U==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")C()})},TI=({data:f})=>{let{useCentrifugeSupport:C,useSocketioSupport:U,useMittSupport:I,centrifugeChannel:H}=f,T=i.useContext(u),D=i.useRef(T);D.current=T;let V=i.useMemo(()=>({alert:CI,log:UI,push:II,redirect:(Z)=>{if(Z.to){let O=Z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else D.current?.(O)}else window.location.reload()},reload:(Z)=>{if(Z.to){let O=Z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else D.current?.(O)}else window.location.reload()}}),[]);return n.jsx(n.Fragment,{children:n.jsx(P,{card:"IOEventsCard",data:f,useCentrifugeSupport:C,useSocketioSupport:U,useMittSupport:I,centrifugeChannel:H,methods:V,children:n.jsx(Mf.ToastContainer,{})})})},tC=TI;var aC=X({name:"IOEventsCard",component:tC,metadata:{author:"Swarm.ing"}});var Hf=require("react");var tf=require("react/jsx-runtime"),HI=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=Hf.useState(I);return Hf.useEffect(()=>{O(I)},[I]),Hf.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(U,Z)},[U,Z]),tf.jsx(P,{card:"SessionStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{sessionStorage.removeItem(U),O("")}},children:tf.jsx("input",{type:"hidden",id:C,name:C,value:Z})})},eC=HI;var fU=X({name:"SessionStorageCard",component:eC,metadata:{author:"PieData"}});var Df=require("react");var af=require("react/jsx-runtime"),DI=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=Df.useState(I);return Df.useEffect(()=>{O(I)},[I]),Df.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(U,Z)},[U,Z]),af.jsx(P,{card:"DeviceStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{localStorage.removeItem(U),O("")}},children:af.jsx("input",{type:"hidden",id:C,name:C,value:Z})})},CU=DI;var UU=X({name:"DeviceStorageCard",component:CU,metadata:{author:"PieData"}});var Zf=require("react");var ef=require("react/jsx-runtime"),ZI=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=Zf.useState(I);return Zf.useEffect(()=>{O(I)},[I]),Zf.useEffect(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.CloudStorage;if(!$)return;$.setItem(U,Z)},[U,Z]),ef.jsx(P,{card:"CloudStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{let $=window.Telegram?.WebApp?.CloudStorage;if($)$.removeItem(U);O("")}},children:ef.jsx("input",{type:"hidden",id:C,name:C,value:Z})})},IU=ZI;var TU=X({name:"CloudStorageCard",component:IU,metadata:{author:"PieData"}});var Of=require("react");var fC=require("react/jsx-runtime"),OI=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=Of.useState(I);return Of.useEffect(()=>{O(I)},[I]),Of.useEffect(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.SecureStorage;if(!$)return;$.setItem(U,Z)},[U,Z]),fC.jsx(P,{card:"SecureStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{let $=window.Telegram?.WebApp?.SecureStorage;if($)$.removeItem(U);O("")}},children:fC.jsx("input",{type:"hidden",id:C,name:C,value:Z})})},HU=OI;var DU=X({name:"SecureStorageCard",component:HU,metadata:{author:"PieData"}});var M=require("react");var CC=require("react/jsx-runtime"),VI=({data:f,content:C})=>{let{useLoader:U,noReturn:I,returnType:H,useSocketioSupport:T,useCentrifugeSupport:D,useMittSupport:V,centrifugeChannel:Z}=f,O=M.useContext(L),$=M.useContext(R)??K,[J,Y]=M.useState(!1),[z,q]=M.useState(null),G=M.useRef(C),o=M.useContext(m),B=M.useCallback((w)=>{if(w===null)Y(!0);else if(Y(!1),!I)G.current=w;if(!I)q(w)},[I]),A=M.useCallback((w)=>{G.current=w.content,q(w.content)},[]),W=M.useCallback((w)=>{if(w===null)Y(!0);else if(Y(!1),!I)for(let $f of w)o?.emit($f.name,$f.data)},[I,o]);if(M.useEffect(()=>{q(C),Y(!1)},[C]),!z&&U)return O;return CC.jsx(P,{card:"AjaxGroupCard",data:f,methods:{changeContent:A},useSocketioSupport:T,useCentrifugeSupport:D,useMittSupport:V,centrifugeChannel:Z,children:CC.jsx($,{uiConfig:z??G.current,setUiAjaxConfiguration:H==="events"?W:B})})},ZU=VI;var OU=X({name:"AjaxGroupCard",component:ZU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var UC=require("react");var Lf=require("react/jsx-runtime"),$I=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I,url:H,sx:T}=f,D=UC.useContext(u),V=UC.useContext(R)??K;return Lf.jsx(P,{card:I,data:f,children:Lf.jsx("div",{style:T,id:I,onClick:(O)=>{if(H)if(O.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else D?.(H)},children:Lf.jsx(V,{setUiAjaxConfiguration:U,uiConfig:C})})})},VU=$I;var $U=X({name:"BoxCard",component:VU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var zU=require("react");var Rf=require("react/jsx-runtime"),zI=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I,sx:H}=f,T=zU.useContext(R)??K;return Rf.jsx(P,{card:I,data:f,children:Rf.jsx("div",{style:H,id:I,children:C.map((D,V)=>{return Rf.jsx(T,{uiConfig:D,setUiAjaxConfiguration:U},`children-${V}`)})})})},oU=zI;var qU=X({name:"OneOfCard",component:oU,metadata:{author:"Swarm.ing",description:"Different variants"}});var s=require("react"),t=require("@tanstack/react-query");var mf=require("react");var Ef=require("react"),Sf=new Map,Nf=new Map;function yf(f,C){let U=`${f}::${C}`,I=f?Sf.get(U):void 0,[H,T]=Ef.useState(I??null);return Ef.useEffect(()=>{if(!f)return;if(Sf.has(U)){T(Sf.get(U));return}let D=Nf.get(U);if(!D)D=fetch(f+`api/support/${C}`,{method:"GET"}).then((Z)=>Z.json()).then((Z)=>{return Sf.set(U,Z),Nf.delete(U),Z}).catch((Z)=>{throw Nf.delete(U),Z}),Nf.set(U,D);let V=!1;return D.then((Z)=>{if(!V)T(Z)}).catch(()=>{}),()=>{V=!0}},[f,C,U]),H}var Vf=Q("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function BU(){Vf.resolve?.()}function IC(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!Vf.promise)Vf.promise=new Promise((f)=>{Vf.resolve=()=>{f()}});return Vf.promise}var oI=({children:f})=>{let C=mf.useContext(y),U=qf(),I=yf(U,"socketIO"),H=(T)=>{if(typeof window<"u")window.sid=T.sid,BU(),console.log(`SocketIO initialized: ${window.sid}`)};return mf.useEffect(()=>{if(!C)return;let T=()=>{console.log("SocketIO connected")},D=(V)=>{console.log(`SocketIO disconnected: ${V}`),C.connect()};if(I)C.on("pieinit",H),C.on("connect",T),C.on("disconnect",D),C.connect();return()=>{if(I)C.off("pieinit",H),C.off("connect",T),C.off("disconnect",D),C.disconnect()}},[C,I]),f},kf=oI;var uf=require("react");var qI=({children:f})=>{let C=uf.useContext(E),U=qf(),I=yf(U,"centrifuge");return uf.useEffect(()=>{if(!C)return;let H=()=>{console.log("Centrifuge connected")},T=(D)=>{console.log("Centrifuge disconnected:",D)};if(I)C.on("connected",H),C.on("disconnected",T),C.connect();return()=>{if(I)C.disconnect()}},[C,I]),f},xf=qI;var XU=require("axios-date-transformer");var GU=require("react/jsx-runtime");function JU(f,C,U){if(!C)return U;let I=f.replace(/^\//,""),H=C[I];if(!H)return U;return GU.jsx(wf,{uiConfig:H})}var _=require("react/jsx-runtime"),BI=({location:f,fallback:C,piecache:U,onError:I,queryOptions:H,disableGlobalForm:T})=>{let D=Cf(),V=Bf(),Z=x(),O=s.useMemo(()=>XU.createAxiosDateTransformer({baseURL:D||""}),[D]),$=s.useMemo(()=>p(),[]),J=s.useMemo(()=>D?Xf(D):null,[D]),Y=s.useMemo(()=>D?Gf(D,V):null,[D,V]),{data:z,isLoading:q,error:G}=t.useQuery({queryKey:["uiConfig",f.pathname+f.search,D],enabled:!!D,queryFn:async()=>{let B=new URLSearchParams(f.search);B.set("__pieroot","web");let A="/api/content"+f.pathname+"?"+B.toString();if(Z)console.log("[PieRoot] Fetching UI configuration from:",A);let W=await O.get(A,{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:",W.data);return W.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(B)=>Math.min(1000*2**B,30000),...H}),o=JU(f.pathname,U,C);if(!D)return o??null;if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",V),console.log("[PieRoot] Fallback provided:",!!C),console.log("[PieRoot] Piecache provided:",!!U);if(G){if(Z)console.error("[PieRoot] Error fetching UI configuration:",G),console.error("[PieRoot] Error details:",{message:G.message,status:G.response?.status,data:G.response?.data});return I?.(G),o}if(q||!z){if(Z)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!z});return o}if(Z)console.log("[PieRoot] UI configuration loaded successfully:",z),console.log("[PieRoot] Rendering UI with configuration");return _.jsx(m.Provider,{value:$,children:_.jsx(y.Provider,{value:J,children:_.jsx(E.Provider,{value:Y,children:_.jsx(L.Provider,{value:C??_.jsx(_.Fragment,{}),children:_.jsx(kf,{children:_.jsx(xf,{children:T?_.jsx(K,{uiConfig:z}):_.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:_.jsx(K,{uiConfig:z})})})})})})})})},JI=(f)=>{let C=s.useMemo(()=>new t.QueryClient,[]),U=f.queryClient??C;return _.jsx(u.Provider,{value:f.onNavigate,children:_.jsx(b.Provider,{value:f.config,children:_.jsx(j.Provider,{value:f.onError,children:_.jsx(t.QueryClientProvider,{client:U,children:_.jsx(BI,{...f})})})})})},jf=JI;var a=require("react"),df=require("@tanstack/react-query");var F=require("react/jsx-runtime"),GI=({location:f,fallback:C,children:U,disableGlobalForm:I})=>{let H=Cf(),T=Bf(),D=x(),V=a.useMemo(()=>p(),[]),Z=a.useMemo(()=>H?Xf(H):null,[H]),O=a.useMemo(()=>H?Gf(H,T):null,[H,T]);if(D)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",H),console.log("[PieRoot] CENTRIFUGE_SERVER:",T),console.log("[PieRoot] Fallback provided:",!!C);return F.jsx(m.Provider,{value:V,children:F.jsx(y.Provider,{value:Z,children:F.jsx(E.Provider,{value:O,children:F.jsx(L.Provider,{value:C??F.jsx(F.Fragment,{}),children:F.jsx(kf,{children:F.jsx(xf,{children:I?U:F.jsx("form",{id:"piedata_global_form",action:H+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:U})})})})})})})},XI=(f)=>{let[C]=a.useState(()=>new df.QueryClient),U=f.queryClient??C;return F.jsx(u.Provider,{value:f.onNavigate,children:F.jsx(b.Provider,{value:f.config,children:F.jsx(j.Provider,{value:f.onError,children:F.jsx(df.QueryClientProvider,{client:U,children:F.jsx(GI,{...f})})})})})},YU=XI;var WU=require("react");var TC=require("react/jsx-runtime"),YI=TC.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),WI=({apiServer:f,pathname:C="/",search:U="",centrifugeServer:I,fallback:H,enableRenderingLog:T=!1})=>{let D=f??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",V=WU.useMemo(()=>({apiServer:D,centrifugeServer:I,enableRenderingLog:T,pageProcessor:"web"}),[D,I,T]);return TC.jsx(jf,{location:{pathname:C,search:U},config:V,fallback:H??YI,onNavigate:(O)=>{if(typeof window<"u")window.history.pushState(null,"",O)}})},PU=WI;var QU=require("react"),HC=(f,C=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let U=document.getElementsByName(f);if(!U.length){if(C)console.warn(`No input found with name ${f}`);return[]}let I=U[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[]},PI=(f,C={},U=[],I,H)=>{let T=H?.renderingLogEnabled??!1,D=H?.timeout,V=H?.retryPolicy,Z=V?.maxRetries??0,O=V?.baseDelay??1000,$=V?.retryOn??[502,503,504];if(T)console.log("Registering AJAX: ",I,C,U);return async(J={})=>{if(typeof window>"u"||typeof document>"u"){if(T)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let Y=H?.apiServer;if(!Y){if(T)console.warn("AJAX skipped: apiServer is missing");return}if(!I||!f){if(T)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(U.includes("sid"))await IC();let z=new FormData;for(let[o,B]of Object.entries({...C,...J}))z.append(o,B);for(let o of U)for(let B of HC(o,T))z.append(o,B);let q=Y+"api/ajax_content"+I;f(null);let G;for(let o=0;o<=Z;o++){if(o>0){let W=O*2**(o-1);if(T)console.log(`AJAX retry ${o}/${Z} after ${W}ms`);await new Promise((w)=>setTimeout(w,W))}let B=D!=null?new AbortController:null,A=B&&setTimeout(()=>B.abort(),D);try{let W=await fetch(q,{method:"POST",body:z,signal:B?.signal});if(A)clearTimeout(A);if(!W.ok&&$.includes(W.status)&&o<Z){G=Error(`HTTP ${W.status}`);continue}let $f=(W.headers.get("content-type")||"").includes("application/json");if(!!W.body?.getReader&&!$f){let zf=W.body.getReader(),LU=new TextDecoder,c="";while(!0){let{done:bf,value:RU}=await zf.read();if(bf)break;c+=LU.decode(RU,{stream:!0});let DC=c.split(`
3
+ `);c=DC.pop()??"";for(let SU of DC){let pf=SU.trim();if(!pf)continue;try{let NU=JSON.parse(pf);f([NU])}catch{if(T)console.warn("Failed to parse streamed line:",pf)}}}if(c.trim())try{let bf=JSON.parse(c);f([bf])}catch{if(T)console.warn("Failed to parse final streamed line:",c)}return{}}else{let zf=await W.json();return f(zf),zf}}catch(W){if(A)clearTimeout(A);if(G=W,o<Z)continue;if(T)console.error("AJAX request failed:",W);return f(null),W}}if(T)console.error("AJAX request failed after retries:",G);return f(null),G}},wU=(f,C={},U=[],I,H)=>{let{apiServer:T,enableRenderingLog:D}=ff(),V=JSON.stringify(C),Z=JSON.stringify(U),O=JSON.stringify(H);return QU.useMemo(()=>PI(f,C,U,I,{apiServer:T,renderingLogEnabled:D,timeout:H?.timeout,retryPolicy:H?.retryPolicy}),[f,V,Z,I,T,D,O])};var AU=require("clsx"),_U=require("tailwind-merge");function FU(...f){return _U.twMerge(AU.clsx(f))}var KU=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var MU=(f,C)=>`${f}${Jf}${C}`;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{useMemo as K}from"react";import{QueryClient as iU,QueryClientProvider as aU,useQuery as rU}from"@tanstack/react-query";import JU from"mitt";import{createContext as ZU,useCallback as HL,useContext as JL}from"react";var A=null;function m(){if(!A)A=JU();return A}var NU=ZU(null);var d=NU;import{io as TU}from"socket.io-client";import{createContext as VU}from"react";var g=new Map,u=(U)=>{let L=g.get(U);if(L)return L;let $=TU(U,{autoConnect:!1,transports:["websocket"]});return g.set(U,$),$},YU=VU(null),X=YU;import{createContext as FU}from"react";import{Centrifuge as l}from"centrifuge";var c=new Map,h=(U,L)=>{if(!L)return null;let $=`${U}::${L}`,H=c.get($);if(H)return H;async function D(){let z=await fetch(U+"api/centrifuge/gen_token");if(!z.ok){if(z.status===403)throw new l.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let I=new l(L,{getToken:D});return c.set($,I),I},GU=FU(null),B=GU;import{useContext as XU,useEffect as BU}from"react";import{useEffect as OU,useState as QU}from"react";var E=new Map,R=new Map;function W(U,L){let $=`${U}::${L}`,H=U?E.get($):void 0,[D,I]=QU(H??null);return OU(()=>{if(!U)return;if(E.has($)){I(E.get($));return}let z=R.get($);if(!z)z=fetch(U+`api/support/${L}`,{method:"GET"}).then((J)=>J.json()).then((J)=>{return E.set($,J),R.delete($),J}).catch((J)=>{throw R.delete($),J}),R.set($,z);let N=!1;return z.then((J)=>{if(!N)I(J)}).catch(()=>{}),()=>{N=!0}},[U,L,$]),D}import{createContext as qU,useContext as KU}from"react";var P=qU(null),S=()=>{let U=KU(P);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},k=()=>{let{apiServer:U}=S();return U},j=k,o=()=>{let{centrifugeServer:U}=S();return U};var V=()=>{let{enableRenderingLog:U}=S();return U};var _U=null;function p(){_U?.()}var EU=({children:U})=>{let L=XU(X),$=j(),H=W($,"socketIO"),D=(I)=>{if(typeof window<"u")window.sid=I.sid,p(),console.log(`SocketIO initialized: ${window.sid}`)};return BU(()=>{if(!L)return;let I=()=>{console.log("SocketIO connected")},z=(N)=>{console.log(`SocketIO disconnected: ${N}`),L.connect()};if(H)L.on("pieinit",D),L.on("connect",I),L.on("disconnect",z),L.connect();return()=>{if(H)L.off("pieinit",D),L.off("connect",I),L.off("disconnect",z),L.disconnect()}},[L,H]),U},n=EU;import{useContext as RU,useEffect as WU}from"react";var jU=({children:U})=>{let L=RU(B),$=j(),H=W($,"centrifuge");return WU(()=>{if(!L)return;let D=()=>{console.log("Centrifuge connected")},I=(z)=>{console.log("Centrifuge disconnected:",z)};if(H)L.on("connected",D),L.on("disconnected",I),L.connect();return()=>{if(H)L.disconnect()}},[L,H]),U},s=jU;import{createContext as MU}from"react";import{jsx as PU,Fragment as AU}from"react/jsx-runtime";var fU=MU(PU(AU,{})),Y=fU;import{createContext as SU}from"react";var kU=SU(void 0),F=kU;var yU=new Map;var M=(U)=>{return yU.get(U)};import{useContext as i,memo as mU}from"react";import{Component as wU,Suspense as CU}from"react";import{jsx as vU}from"react/jsx-runtime";var bU=2,xU=400;class G extends wU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<bU){let L=xU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return vU(CU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as y}from"react/jsx-runtime";function dU({uiConfig:U,setUiAjaxConfiguration:L}){let $=i(Y),H=i(F),D=V();if(D)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let I=M(U.card);if(!I?.component){if(D)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(D)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let z=I.component,N=y(z,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(I.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",I.name);return y(G,{name:I.name,fallback:I.fallback?y(I.fallback,{}):$,onError:H,children:N})}if(D)console.log("[UI] Rendering component directly:",I.name);return N}var w=mU(dU);import{createAxiosDateTransformer as tU}from"axios-date-transformer";import{useEffect as a,useState as gU}from"react";var O=()=>{let[U,L]=gU(null);return a(()=>{if(typeof window>"u")return;let $=window.WebApp;if(!$)return;$.ready(),L($)},[]),U},uU=()=>{let U=O();return[U?.initDataUnsafe,U?.initData]},lU=(U)=>{let L=O();return a(()=>{if(!L||!U)return;return L.BackButton.onClick(U),L.BackButton.show(),()=>{L.BackButton.offClick(U),L.BackButton.hide()}},[L,U]),L?.BackButton??null},cU=()=>{return O()?.HapticFeedback??null};import{createContext as hU}from"react";var oU=hU(void 0),r=oU;import{useContext as e}from"react";import{createContext as pU}from"react";var nU=pU(null),t=nU;import{jsx as f}from"react/jsx-runtime";function UU({uiConfig:U,setUiAjaxConfiguration:L}){let $=e(Y),H=e(F),D=V();if(D)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let I=M(U.card);if(!I?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(D)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(D)console.log("[UILoading] Rendering fallback for:",I.name);let J=I.fallback;return f(J,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",I.name);let z=I.component,N=f(t.Provider,{value:UU,children:f(z,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(I.isLazy)return f(G,{name:I.name,fallback:$,onError:H,children:N});return N}var LU=UU;import{jsx as sU}from"react/jsx-runtime";function IU(U,L,$){if(!L)return $;let H=U.replace(/^\//,""),D=L[H];if(!D)return $;return sU(LU,{uiConfig:D})}import{jsx as Z,Fragment as LL}from"react/jsx-runtime";var eU=({location:U,fallback:L,piecache:$,onError:H,queryOptions:D,disableGlobalForm:I})=>{let z=k(),N=o(),J=V(),$U=K(()=>tU({baseURL:z}),[z]),zU=K(()=>m(),[]),DU=K(()=>z?u(z):null,[z]),HU=K(()=>z?h(z,N):null,[z,N]),_=O(),{data:Q,isLoading:C,error:T}=rU({queryKey:["uiConfig",U.pathname+U.search,_?.initData],queryFn:async()=>{let q=new URLSearchParams(U.search);if(q.set("__pieroot","max"),_?.initData)q.set("initData",_.initData);let x="/api/content"+U.pathname+"?"+q.toString();if(J)console.log("[PieRoot] Fetching UI configuration from:",x);let v=await $U.get(x,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(J)console.log("[PieRoot] Received UI configuration:",v.data);return v.data},enabled:!!_?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...D}),b=IU(U.pathname,$,L);if(!z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(T&&J)return console.error("[PieRoot] Error fetching UI configuration:",T),console.error("[PieRoot] Error details:",{message:T.message,status:T.response?.status,data:T.response?.data}),H?.(T),b;if(C||!Q){if(J)console.log("[PieRoot] Loading state:",{isLoading:C,hasUiConfiguration:!!Q});return b}if(J)console.log("[PieRoot] UI configuration loaded successfully:",Q),console.log("[PieRoot] Rendering UI with configuration");return Z(d.Provider,{value:zU,children:Z(X.Provider,{value:DU,children:Z(B.Provider,{value:HU,children:Z(Y.Provider,{value:L??Z(LL,{}),children:Z(n,{children:Z(s,{children:I?Z(w,{uiConfig:Q}):Z("form",{id:"piedata_global_form",action:z+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:Z(w,{uiConfig:Q})})})})})})})})},UL=(U)=>{let L=K(()=>new iU,[]),$=U.queryClient??L;return Z(r.Provider,{value:U.onNavigate,children:Z(P.Provider,{value:U.config,children:Z(F.Provider,{value:U.onError,children:Z(aU,{client:$,children:Z(eU,{...U})})})})})},IL=UL;export{O as useMaxWebApp,uU as useMaxInitData,cU as useMaxHapticFeedback,lU as useMaxBackButton,IL as PieMaxRoot};
2
+ import{useMemo as R}from"react";import{QueryClient as rU,QueryClientProvider as aU,useQuery as tU}from"@tanstack/react-query";import HU from"mitt";import{createContext as NU,useCallback as HL,useContext as NL}from"react";var A=globalThis,J=(U,L)=>{let T=Symbol.for(U);if(!(T in A))A[T]=L();return A[T]};function b(){return J("@swarm.ing/pieui:mitt-emitter",()=>HU())}var ZU=J("@swarm.ing/pieui:context:mitt",()=>NU(null));var u=ZU;import{io as VU}from"socket.io-client";import{createContext as YU}from"react";var c=J("@swarm.ing/pieui:socket-cache",()=>new Map),o=(U)=>{let L=c.get(U);if(L)return L;let T=VU(U,{autoConnect:!1,transports:["websocket"]});return c.set(U,T),T},FU=J("@swarm.ing/pieui:context:socket",()=>YU(null)),K=FU;import{createContext as GU}from"react";import{Centrifuge as g}from"centrifuge";var h=J("@swarm.ing/pieui:centrifuge-cache",()=>new Map),l=(U,L)=>{if(!L)return null;let T=`${U}::${L}`,D=h.get(T);if(D)return D;async function z(){let $=await fetch(U+"api/centrifuge/gen_token");if(!$.ok){if($.status===403)throw new g.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${$.status}`)}return(await $.json()).token}let I=new g(L,{getToken:z});return h.set(T,I),I},OU=J("@swarm.ing/pieui:context:centrifuge",()=>GU(null)),X=OU;import{useContext as KU,useEffect as XU}from"react";import{useEffect as QU,useState as _U}from"react";var B=new Map,W=new Map;function f(U,L){let T=`${U}::${L}`,D=U?B.get(T):void 0,[z,I]=_U(D??null);return QU(()=>{if(!U)return;if(B.has(T)){I(B.get(T));return}let $=W.get(T);if(!$)$=fetch(U+`api/support/${L}`,{method:"GET"}).then((H)=>H.json()).then((H)=>{return B.set(T,H),W.delete(T),H}).catch((H)=>{throw W.delete(T),H}),W.set(T,$);let Z=!1;return $.then((H)=>{if(!Z)I(H)}).catch(()=>{}),()=>{Z=!0}},[U,L,T]),z}import{createContext as qU,useContext as RU}from"react";var y=J("@swarm.ing/pieui:context:pieConfig",()=>qU(null)),w=()=>{let U=RU(y);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},k=()=>{let{apiServer:U}=w();return U},j=k,p=()=>{let{centrifugeServer:U}=w();return U};var Y=()=>{let{enableRenderingLog:U}=w();return U};var EU=J("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function n(){EU.resolve?.()}var BU=({children:U})=>{let L=KU(K),T=j(),D=f(T,"socketIO"),z=(I)=>{if(typeof window<"u")window.sid=I.sid,n(),console.log(`SocketIO initialized: ${window.sid}`)};return XU(()=>{if(!L)return;let I=()=>{console.log("SocketIO connected")},$=(Z)=>{console.log(`SocketIO disconnected: ${Z}`),L.connect()};if(D)L.on("pieinit",z),L.on("connect",I),L.on("disconnect",$),L.connect();return()=>{if(D)L.off("pieinit",z),L.off("connect",I),L.off("disconnect",$),L.disconnect()}},[L,D]),U},s=BU;import{useContext as WU,useEffect as fU}from"react";var jU=({children:U})=>{let L=WU(X),T=j(),D=f(T,"centrifuge");return fU(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},I=($)=>{console.log("Centrifuge disconnected:",$)};if(D)L.on("connected",z),L.on("disconnected",I),L.connect();return()=>{if(D)L.disconnect()}},[L,D]),U},i=jU;import{createContext as MU}from"react";import{jsx as yU,Fragment as AU}from"react/jsx-runtime";var PU=J("@swarm.ing/pieui:context:fallback",()=>MU(yU(AU,{}))),F=PU;import{createContext as wU}from"react";var kU=J("@swarm.ing/pieui:context:lazyError",()=>wU(void 0)),G=kU;var mU=J("@swarm.ing/pieui:component-registry",()=>new Map);var M=(U)=>{return mU.get(U)};import{useContext as r,memo as bU}from"react";import{Component as CU,Suspense as dU}from"react";import{jsx as xU}from"react/jsx-runtime";var SU=2,vU=400;class O extends CU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<SU){let L=vU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((T)=>({failed:!1,attempt:T.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return xU(dU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as m}from"react/jsx-runtime";function uU({uiConfig:U,setUiAjaxConfiguration:L}){let T=r(F),D=r(G),z=Y();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let I=M(U.card);if(!I?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return T}if(z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let $=I.component,Z=m($,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(I.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return m(O,{name:I.name,fallback:I.fallback?m(I.fallback,{}):T,onError:D,children:Z})}if(z)console.log("[UI] Rendering component directly:",I.name);return Z}var C=bU(uU);import{createAxiosDateTransformer as eU}from"axios-date-transformer";import{useEffect as a,useState as cU}from"react";var Q=()=>{let[U,L]=cU(null);return a(()=>{if(typeof window>"u")return;let T=window.WebApp;if(!T)return;T.ready(),L(T)},[]),U},oU=()=>{let U=Q();return[U?.initDataUnsafe,U?.initData]},gU=(U)=>{let L=Q();return a(()=>{if(!L||!U)return;return L.BackButton.onClick(U),L.BackButton.show(),()=>{L.BackButton.offClick(U),L.BackButton.hide()}},[L,U]),L?.BackButton??null},hU=()=>{return Q()?.HapticFeedback??null};import{createContext as lU}from"react";var pU=J("@swarm.ing/pieui:context:navigate",()=>lU(void 0)),t=pU;import{useContext as UU}from"react";import{createContext as nU}from"react";var sU=J("@swarm.ing/pieui:context:uiRenderer",()=>nU(null)),e=sU;import{jsx as P}from"react/jsx-runtime";function LU({uiConfig:U,setUiAjaxConfiguration:L}){let T=UU(F),D=UU(G),z=Y();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let I=M(U.card);if(!I?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return T}if(z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(z)console.log("[UILoading] Rendering fallback for:",I.name);let H=I.fallback;return P(H,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let $=I.component,Z=P(e.Provider,{value:LU,children:P($,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(I.isLazy)return P(O,{name:I.name,fallback:T,onError:D,children:Z});return Z}var TU=LU;import{jsx as iU}from"react/jsx-runtime";function IU(U,L,T){if(!L)return T;let D=U.replace(/^\//,""),z=L[D];if(!z)return T;return iU(TU,{uiConfig:z})}import{jsx as N,Fragment as TL}from"react/jsx-runtime";var UL=({location:U,fallback:L,piecache:T,onError:D,queryOptions:z,disableGlobalForm:I})=>{let $=k(),Z=p(),H=Y(),$U=R(()=>eU({baseURL:$}),[$]),zU=R(()=>b(),[]),JU=R(()=>$?o($):null,[$]),DU=R(()=>$?l($,Z):null,[$,Z]),E=Q(),{data:_,isLoading:d,error:V}=tU({queryKey:["uiConfig",U.pathname+U.search,E?.initData],queryFn:async()=>{let q=new URLSearchParams(U.search);if(q.set("__pieroot","max"),E?.initData)q.set("initData",E.initData);let v="/api/content"+U.pathname+"?"+q.toString();if(H)console.log("[PieRoot] Fetching UI configuration from:",v);let x=await $U.get(v,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(H)console.log("[PieRoot] Received UI configuration:",x.data);return x.data},enabled:!!E?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...z}),S=IU(U.pathname,T,L);if(!$)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&H)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),D?.(V),S;if(d||!_){if(H)console.log("[PieRoot] Loading state:",{isLoading:d,hasUiConfiguration:!!_});return S}if(H)console.log("[PieRoot] UI configuration loaded successfully:",_),console.log("[PieRoot] Rendering UI with configuration");return N(u.Provider,{value:zU,children:N(K.Provider,{value:JU,children:N(X.Provider,{value:DU,children:N(F.Provider,{value:L??N(TL,{}),children:N(s,{children:N(i,{children:I?N(C,{uiConfig:_}):N("form",{id:"piedata_global_form",action:$+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:N(C,{uiConfig:_})})})})})})})})},LL=(U)=>{let L=R(()=>new rU,[]),T=U.queryClient??L;return N(t.Provider,{value:U.onNavigate,children:N(y.Provider,{value:U.config,children:N(G.Provider,{value:U.onError,children:N(aU,{client:T,children:N(UL,{...U})})})})})},IL=LL;export{Q as useMaxWebApp,oU as useMaxInitData,hU as useMaxHapticFeedback,gU as useMaxBackButton,IL as PieMaxRoot};
package/dist/max/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var CU=Object.create;var{getPrototypeOf:bU,defineProperty:X,getOwnPropertyNames:t,getOwnPropertyDescriptor:xU}=Object,e=Object.prototype.hasOwnProperty;var vU=(U,L,I)=>{I=U!=null?CU(bU(U)):{};let z=L||!U||!U.__esModule?X(I,"default",{value:U,enumerable:!0}):I;for(let D of t(U))if(!e.call(z,D))X(z,D,{get:()=>U[D],enumerable:!0});return z},r=new WeakMap,mU=(U)=>{var L=r.get(U),I;if(L)return L;if(L=X({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")t(U).map((z)=>!e.call(L,z)&&X(L,z,{get:()=>U[z],enumerable:!(I=xU(U,z))||I.enumerable}));return r.set(U,L),L};var dU=(U,L)=>{for(var I in L)X(U,I,{get:L[I],enumerable:!0,configurable:!0,set:(z)=>L[I]=()=>z})};var IL={};dU(IL,{useMaxWebApp:()=>T,useMaxInitData:()=>qU,useMaxHapticFeedback:()=>_U,useMaxBackButton:()=>KU,PieMaxRoot:()=>PU});module.exports=mU(IL);var Q=require("react"),q=require("@tanstack/react-query");var UU=vU(require("mitt")),j=require("react"),g=null;function LU(){if(!g)g=UU.default();return g}var gU=j.createContext(null);var IU=gU;var zU=require("socket.io-client"),DU=require("react"),$U=new Map,HU=(U)=>{let L=$U.get(U);if(L)return L;let I=zU.io(U,{autoConnect:!1,transports:["websocket"]});return $U.set(U,I),I},uU=DU.createContext(null),M=uU;var ZU=require("react"),u=require("centrifuge"),JU=new Map,NU=(U,L)=>{if(!L)return null;let I=`${U}::${L}`,z=JU.get(I);if(z)return z;async function D(){let H=await fetch(U+"api/centrifuge/gen_token");if(!H.ok){if(H.status===403)throw new u.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${H.status}`)}return(await H.json()).token}let $=new u.Centrifuge(L,{getToken:D});return JU.set(I,$),$},lU=ZU.createContext(null),f=lU;var C=require("react");var S=require("react"),A=new Map,P=new Map;function k(U,L){let I=`${U}::${L}`,z=U?A.get(I):void 0,[D,$]=S.useState(z??null);return S.useEffect(()=>{if(!U)return;if(A.has(I)){$(A.get(I));return}let H=P.get(I);if(!H)H=fetch(U+`api/support/${L}`,{method:"GET"}).then((Z)=>Z.json()).then((Z)=>{return A.set(I,Z),P.delete(I),Z}).catch((Z)=>{throw P.delete(I),Z}),P.set(I,H);let N=!1;return H.then((Z)=>{if(!N)$(Z)}).catch(()=>{}),()=>{N=!0}},[U,L,I]),D}var y=require("react"),l=y.createContext(null),c=()=>{let U=y.useContext(l);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},h=()=>{let{apiServer:U}=c();return U},w=h,TU=()=>{let{centrifugeServer:U}=c();return U};var Y=()=>{let{enableRenderingLog:U}=c();return U};var cU=null;function VU(){cU?.()}var hU=({children:U})=>{let L=C.useContext(M),I=w(),z=k(I,"socketIO"),D=($)=>{if(typeof window<"u")window.sid=$.sid,VU(),console.log(`SocketIO initialized: ${window.sid}`)};return C.useEffect(()=>{if(!L)return;let $=()=>{console.log("SocketIO connected")},H=(N)=>{console.log(`SocketIO disconnected: ${N}`),L.connect()};if(z)L.on("pieinit",D),L.on("connect",$),L.on("disconnect",H),L.connect();return()=>{if(z)L.off("pieinit",D),L.off("connect",$),L.off("disconnect",H),L.disconnect()}},[L,z]),U},YU=hU;var b=require("react");var oU=({children:U})=>{let L=b.useContext(f),I=w(),z=k(I,"centrifuge");return b.useEffect(()=>{if(!L)return;let D=()=>{console.log("Centrifuge connected")},$=(H)=>{console.log("Centrifuge disconnected:",H)};if(z)L.on("connected",D),L.on("disconnected",$),L.connect();return()=>{if(z)L.disconnect()}},[L,z]),U},FU=oU;var GU=require("react"),x=require("react/jsx-runtime"),pU=GU.createContext(x.jsx(x.Fragment,{})),F=pU;var OU=require("react"),nU=OU.createContext(void 0),G=nU;var sU=new Map;var v=(U)=>{return sU.get(U)};var B=require("react");var m=require("react"),QU=require("react/jsx-runtime"),iU=2,aU=400;class O extends m.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<iU){let L=aU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return QU.jsx(m.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var d=require("react/jsx-runtime");function rU({uiConfig:U,setUiAjaxConfiguration:L}){let I=B.useContext(F),z=B.useContext(G),D=Y();if(D)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let $=v(U.card);if(!$?.component){if(D)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return I}if(D)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let H=$.component,N=d.jsx(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if($.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",$.name);return d.jsx(O,{name:$.name,fallback:$.fallback?d.jsx($.fallback,{}):I,onError:z,children:N})}if(D)console.log("[UI] Rendering component directly:",$.name);return N}var o=B.memo(rU);var AU=require("axios-date-transformer");var E=require("react"),T=()=>{let[U,L]=E.useState(null);return E.useEffect(()=>{if(typeof window>"u")return;let I=window.WebApp;if(!I)return;I.ready(),L(I)},[]),U},qU=()=>{let U=T();return[U?.initDataUnsafe,U?.initData]},KU=(U)=>{let L=T();return E.useEffect(()=>{if(!L||!U)return;return L.BackButton.onClick(U),L.BackButton.show(),()=>{L.BackButton.offClick(U),L.BackButton.hide()}},[L,U]),L?.BackButton??null},_U=()=>{return T()?.HapticFeedback??null};var XU=require("react"),tU=XU.createContext(void 0),BU=tU;var p=require("react");var EU=require("react"),eU=EU.createContext(null),RU=eU;var R=require("react/jsx-runtime");function WU({uiConfig:U,setUiAjaxConfiguration:L}){let I=p.useContext(F),z=p.useContext(G),D=Y();if(D)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let $=v(U.card);if(!$?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return I}if(D)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(D)console.log("[UILoading] Rendering fallback for:",$.name);let Z=$.fallback;return R.jsx(Z,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",$.name);let H=$.component,N=R.jsx(RU.Provider,{value:WU,children:R.jsx(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if($.isLazy)return R.jsx(O,{name:$.name,fallback:I,onError:z,children:N});return N}var jU=WU;var fU=require("react/jsx-runtime");function MU(U,L,I){if(!L)return I;let z=U.replace(/^\//,""),D=L[z];if(!D)return I;return fU.jsx(jU,{uiConfig:D})}var J=require("react/jsx-runtime"),UL=({location:U,fallback:L,piecache:I,onError:z,queryOptions:D,disableGlobalForm:$})=>{let H=h(),N=TU(),Z=Y(),SU=Q.useMemo(()=>AU.createAxiosDateTransformer({baseURL:H}),[H]),kU=Q.useMemo(()=>LU(),[]),yU=Q.useMemo(()=>H?HU(H):null,[H]),wU=Q.useMemo(()=>H?NU(H,N):null,[H,N]),W=T(),{data:K,isLoading:n,error:V}=q.useQuery({queryKey:["uiConfig",U.pathname+U.search,W?.initData],queryFn:async()=>{let _=new URLSearchParams(U.search);if(_.set("__pieroot","max"),W?.initData)_.set("initData",W.initData);let i="/api/content"+U.pathname+"?"+_.toString();if(Z)console.log("[PieRoot] Fetching UI configuration from:",i);let a=await SU.get(i,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(Z)console.log("[PieRoot] Received UI configuration:",a.data);return a.data},enabled:!!W?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(_)=>Math.min(1000*2**_,30000),...D}),s=MU(U.pathname,I,L);if(!H)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&Z)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),z?.(V),s;if(n||!K){if(Z)console.log("[PieRoot] Loading state:",{isLoading:n,hasUiConfiguration:!!K});return s}if(Z)console.log("[PieRoot] UI configuration loaded successfully:",K),console.log("[PieRoot] Rendering UI with configuration");return J.jsx(IU.Provider,{value:kU,children:J.jsx(M.Provider,{value:yU,children:J.jsx(f.Provider,{value:wU,children:J.jsx(F.Provider,{value:L??J.jsx(J.Fragment,{}),children:J.jsx(YU,{children:J.jsx(FU,{children:$?J.jsx(o,{uiConfig:K}):J.jsx("form",{id:"piedata_global_form",action:H+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:J.jsx(o,{uiConfig:K})})})})})})})})},LL=(U)=>{let L=Q.useMemo(()=>new q.QueryClient,[]),I=U.queryClient??L;return J.jsx(BU.Provider,{value:U.onNavigate,children:J.jsx(l.Provider,{value:U.config,children:J.jsx(G.Provider,{value:U.onError,children:J.jsx(q.QueryClientProvider,{client:I,children:J.jsx(UL,{...U})})})})})},PU=LL;
2
+ var dU=Object.create;var{getPrototypeOf:SU,defineProperty:K,getOwnPropertyNames:e,getOwnPropertyDescriptor:vU}=Object,UU=Object.prototype.hasOwnProperty;var xU=(U,L,T)=>{T=U!=null?dU(SU(U)):{};let $=L||!U||!U.__esModule?K(T,"default",{value:U,enumerable:!0}):T;for(let z of e(U))if(!UU.call($,z))K($,z,{get:()=>U[z],enumerable:!0});return $},t=new WeakMap,bU=(U)=>{var L=t.get(U),T;if(L)return L;if(L=K({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")e(U).map(($)=>!UU.call(L,$)&&K(L,$,{get:()=>U[$],enumerable:!(T=vU(U,$))||T.enumerable}));return t.set(U,L),L};var uU=(U,L)=>{for(var T in L)K(U,T,{get:L[T],enumerable:!0,configurable:!0,set:($)=>L[T]=()=>$})};var IL={};uU(IL,{useMaxWebApp:()=>V,useMaxInitData:()=>qU,useMaxHapticFeedback:()=>EU,useMaxBackButton:()=>RU,PieMaxRoot:()=>yU});module.exports=bU(IL);var _=require("react"),q=require("@tanstack/react-query");var LU=xU(require("mitt")),j=require("react");var c=globalThis,D=(U,L)=>{let T=Symbol.for(U);if(!(T in c))c[T]=L();return c[T]};function TU(){return D("@swarm.ing/pieui:mitt-emitter",()=>LU.default())}var cU=D("@swarm.ing/pieui:context:mitt",()=>j.createContext(null));var IU=cU;var zU=require("socket.io-client"),JU=require("react");var $U=D("@swarm.ing/pieui:socket-cache",()=>new Map),DU=(U)=>{let L=$U.get(U);if(L)return L;let T=zU.io(U,{autoConnect:!1,transports:["websocket"]});return $U.set(U,T),T},oU=D("@swarm.ing/pieui:context:socket",()=>JU.createContext(null)),M=oU;var NU=require("react"),o=require("centrifuge");var HU=D("@swarm.ing/pieui:centrifuge-cache",()=>new Map),ZU=(U,L)=>{if(!L)return null;let T=`${U}::${L}`,$=HU.get(T);if($)return $;async function z(){let J=await fetch(U+"api/centrifuge/gen_token");if(!J.ok){if(J.status===403)throw new o.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let I=new o.Centrifuge(L,{getToken:z});return HU.set(T,I),I},gU=D("@swarm.ing/pieui:context:centrifuge",()=>NU.createContext(null)),P=gU;var d=require("react");var w=require("react"),A=new Map,y=new Map;function k(U,L){let T=`${U}::${L}`,$=U?A.get(T):void 0,[z,I]=w.useState($??null);return w.useEffect(()=>{if(!U)return;if(A.has(T)){I(A.get(T));return}let J=y.get(T);if(!J)J=fetch(U+`api/support/${L}`,{method:"GET"}).then((N)=>N.json()).then((N)=>{return A.set(T,N),y.delete(T),N}).catch((N)=>{throw y.delete(T),N}),y.set(T,J);let Z=!1;return J.then((N)=>{if(!Z)I(N)}).catch(()=>{}),()=>{Z=!0}},[U,L,T]),z}var m=require("react");var g=D("@swarm.ing/pieui:context:pieConfig",()=>m.createContext(null)),h=()=>{let U=m.useContext(g);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},l=()=>{let{apiServer:U}=h();return U},C=l,VU=()=>{let{centrifugeServer:U}=h();return U};var F=()=>{let{enableRenderingLog:U}=h();return U};var hU=D("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function YU(){hU.resolve?.()}var lU=({children:U})=>{let L=d.useContext(M),T=C(),$=k(T,"socketIO"),z=(I)=>{if(typeof window<"u")window.sid=I.sid,YU(),console.log(`SocketIO initialized: ${window.sid}`)};return d.useEffect(()=>{if(!L)return;let I=()=>{console.log("SocketIO connected")},J=(Z)=>{console.log(`SocketIO disconnected: ${Z}`),L.connect()};if($)L.on("pieinit",z),L.on("connect",I),L.on("disconnect",J),L.connect();return()=>{if($)L.off("pieinit",z),L.off("connect",I),L.off("disconnect",J),L.disconnect()}},[L,$]),U},FU=lU;var S=require("react");var pU=({children:U})=>{let L=S.useContext(P),T=C(),$=k(T,"centrifuge");return S.useEffect(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},I=(J)=>{console.log("Centrifuge disconnected:",J)};if($)L.on("connected",z),L.on("disconnected",I),L.connect();return()=>{if($)L.disconnect()}},[L,$]),U},GU=pU;var OU=require("react");var v=require("react/jsx-runtime"),nU=D("@swarm.ing/pieui:context:fallback",()=>OU.createContext(v.jsx(v.Fragment,{}))),G=nU;var QU=require("react");var sU=D("@swarm.ing/pieui:context:lazyError",()=>QU.createContext(void 0)),O=sU;var iU=D("@swarm.ing/pieui:component-registry",()=>new Map);var x=(U)=>{return iU.get(U)};var X=require("react");var b=require("react"),_U=require("react/jsx-runtime"),rU=2,aU=400;class Q extends b.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<rU){let L=aU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((T)=>({failed:!1,attempt:T.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return _U.jsx(b.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var u=require("react/jsx-runtime");function tU({uiConfig:U,setUiAjaxConfiguration:L}){let T=X.useContext(G),$=X.useContext(O),z=F();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let I=x(U.card);if(!I?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return T}if(z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let J=I.component,Z=u.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(I.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return u.jsx(Q,{name:I.name,fallback:I.fallback?u.jsx(I.fallback,{}):T,onError:$,children:Z})}if(z)console.log("[UI] Rendering component directly:",I.name);return Z}var p=X.memo(tU);var AU=require("axios-date-transformer");var B=require("react"),V=()=>{let[U,L]=B.useState(null);return B.useEffect(()=>{if(typeof window>"u")return;let T=window.WebApp;if(!T)return;T.ready(),L(T)},[]),U},qU=()=>{let U=V();return[U?.initDataUnsafe,U?.initData]},RU=(U)=>{let L=V();return B.useEffect(()=>{if(!L||!U)return;return L.BackButton.onClick(U),L.BackButton.show(),()=>{L.BackButton.offClick(U),L.BackButton.hide()}},[L,U]),L?.BackButton??null},EU=()=>{return V()?.HapticFeedback??null};var KU=require("react");var eU=D("@swarm.ing/pieui:context:navigate",()=>KU.createContext(void 0)),XU=eU;var n=require("react");var BU=require("react");var UL=D("@swarm.ing/pieui:context:uiRenderer",()=>BU.createContext(null)),WU=UL;var W=require("react/jsx-runtime");function fU({uiConfig:U,setUiAjaxConfiguration:L}){let T=n.useContext(G),$=n.useContext(O),z=F();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let I=x(U.card);if(!I?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return T}if(z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(z)console.log("[UILoading] Rendering fallback for:",I.name);let N=I.fallback;return W.jsx(N,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let J=I.component,Z=W.jsx(WU.Provider,{value:fU,children:W.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(I.isLazy)return W.jsx(Q,{name:I.name,fallback:T,onError:$,children:Z});return Z}var jU=fU;var PU=require("react/jsx-runtime");function MU(U,L,T){if(!L)return T;let $=U.replace(/^\//,""),z=L[$];if(!z)return T;return PU.jsx(jU,{uiConfig:z})}var H=require("react/jsx-runtime"),LL=({location:U,fallback:L,piecache:T,onError:$,queryOptions:z,disableGlobalForm:I})=>{let J=l(),Z=VU(),N=F(),wU=_.useMemo(()=>AU.createAxiosDateTransformer({baseURL:J}),[J]),kU=_.useMemo(()=>TU(),[]),mU=_.useMemo(()=>J?DU(J):null,[J]),CU=_.useMemo(()=>J?ZU(J,Z):null,[J,Z]),f=V(),{data:R,isLoading:s,error:Y}=q.useQuery({queryKey:["uiConfig",U.pathname+U.search,f?.initData],queryFn:async()=>{let E=new URLSearchParams(U.search);if(E.set("__pieroot","max"),f?.initData)E.set("initData",f.initData);let r="/api/content"+U.pathname+"?"+E.toString();if(N)console.log("[PieRoot] Fetching UI configuration from:",r);let a=await wU.get(r,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(N)console.log("[PieRoot] Received UI configuration:",a.data);return a.data},enabled:!!f?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(E)=>Math.min(1000*2**E,30000),...z}),i=MU(U.pathname,T,L);if(!J)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(Y&&N)return console.error("[PieRoot] Error fetching UI configuration:",Y),console.error("[PieRoot] Error details:",{message:Y.message,status:Y.response?.status,data:Y.response?.data}),$?.(Y),i;if(s||!R){if(N)console.log("[PieRoot] Loading state:",{isLoading:s,hasUiConfiguration:!!R});return i}if(N)console.log("[PieRoot] UI configuration loaded successfully:",R),console.log("[PieRoot] Rendering UI with configuration");return H.jsx(IU.Provider,{value:kU,children:H.jsx(M.Provider,{value:mU,children:H.jsx(P.Provider,{value:CU,children:H.jsx(G.Provider,{value:L??H.jsx(H.Fragment,{}),children:H.jsx(FU,{children:H.jsx(GU,{children:I?H.jsx(p,{uiConfig:R}):H.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:H.jsx(p,{uiConfig:R})})})})})})})})},TL=(U)=>{let L=_.useMemo(()=>new q.QueryClient,[]),T=U.queryClient??L;return H.jsx(XU.Provider,{value:U.onNavigate,children:H.jsx(g.Provider,{value:U.config,children:H.jsx(O.Provider,{value:U.onError,children:H.jsx(q.QueryClientProvider,{client:T,children:H.jsx(LL,{...U})})})})})},yU=TL;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{useMemo as Q}from"react";import{QueryClient as sU,QueryClientProvider as iU,useQuery as aU}from"@tanstack/react-query";import VU from"mitt";import{createContext as ZU,useCallback as HL,useContext as JL}from"react";var k=null;function m(){if(!k)k=VU();return k}var BU=ZU(null);var d=BU;import{io as FU}from"socket.io-client";import{createContext as NU}from"react";var u=new Map,g=(U)=>{let L=u.get(U);if(L)return L;let $=FU(U,{autoConnect:!1,transports:["websocket"]});return u.set(U,$),$},XU=NU(null),K=XU;import{createContext as YU}from"react";import{Centrifuge as c}from"centrifuge";var l=new Map,h=(U,L)=>{if(!L)return null;let $=`${U}::${L}`,J=l.get($);if(J)return J;async function z(){let H=await fetch(U+"api/centrifuge/gen_token");if(!H.ok){if(H.status===403)throw new c.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${H.status}`)}return(await H.json()).token}let I=new c(L,{getToken:z});return l.set($,I),I},DU=YU(null),_=DU;import{useContext as _U,useEffect as WU}from"react";import{useEffect as GU,useState as OU}from"react";var W=new Map,R=new Map;function T(U,L){let $=`${U}::${L}`,J=U?W.get($):void 0,[z,I]=OU(J??null);return GU(()=>{if(!U)return;if(W.has($)){I(W.get($));return}let H=R.get($);if(!H)H=fetch(U+`api/support/${L}`,{method:"GET"}).then((V)=>V.json()).then((V)=>{return W.set($,V),R.delete($),V}).catch((V)=>{throw R.delete($),V}),R.set($,H);let B=!1;return H.then((V)=>{if(!B)I(V)}).catch(()=>{}),()=>{B=!0}},[U,L,$]),z}import{createContext as QU,useContext as qU}from"react";var P=QU(null),E=()=>{let U=qU(P);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},S=()=>{let{apiServer:U}=E();return U},M=S,o=()=>{let{centrifugeServer:U}=E();return U};var N=()=>{let{enableRenderingLog:U}=E();return U};var p=()=>{let{pageProcessor:U}=E();return U};var KU=null;function n(){KU?.()}var RU=({children:U})=>{let L=_U(K),$=M(),J=T($,"socketIO"),z=(I)=>{if(typeof window<"u")window.sid=I.sid,n(),console.log(`SocketIO initialized: ${window.sid}`)};return WU(()=>{if(!L)return;let I=()=>{console.log("SocketIO connected")},H=(B)=>{console.log(`SocketIO disconnected: ${B}`),L.connect()};if(J)L.on("pieinit",z),L.on("connect",I),L.on("disconnect",H),L.connect();return()=>{if(J)L.off("pieinit",z),L.off("connect",I),L.off("disconnect",H),L.disconnect()}},[L,J]),U},s=RU;import{useContext as TU,useEffect as EU}from"react";var MU=({children:U})=>{let L=TU(_),$=M(),J=T($,"centrifuge");return EU(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},I=(H)=>{console.log("Centrifuge disconnected:",H)};if(J)L.on("connected",z),L.on("disconnected",I),L.connect();return()=>{if(J)L.disconnect()}},[L,J]),U},i=MU;import{createContext as AU}from"react";import{jsx as kU,Fragment as fU}from"react/jsx-runtime";var jU=AU(kU(fU,{})),X=jU;import{createContext as PU}from"react";var SU=PU(void 0),Y=SU;var wU=new Map;var A=(U)=>{return wU.get(U)};import{useContext as a,memo as mU}from"react";import{Component as bU,Suspense as yU}from"react";import{jsx as vU}from"react/jsx-runtime";var xU=2,CU=400;class D extends bU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<xU){let L=CU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return vU(yU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as w}from"react/jsx-runtime";function dU({uiConfig:U,setUiAjaxConfiguration:L}){let $=a(X),J=a(Y),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:",!!L);let I=A(U.card);if(!I?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let H=I.component,B=w(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(I.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return w(D,{name:I.name,fallback:I.fallback?w(I.fallback,{}):$,onError:J,children:B})}if(z)console.log("[UI] Rendering component directly:",I.name);return B}var b=mU(dU);import{createAxiosDateTransformer as tU}from"axios-date-transformer";import{useEffect as uU,useState as gU}from"react";var j=({onError:U}={})=>{let[L,$]=gU(null),J=p();return uU(()=>{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();$(z)},[]),L},cU=()=>{let U=j();return[U?.initDataUnsafe,U?.initData]};import{createContext as lU}from"react";var hU=lU(void 0),t=hU;import{useContext as e}from"react";import{createContext as oU}from"react";var pU=oU(null),r=pU;import{jsx as f}from"react/jsx-runtime";function UU({uiConfig:U,setUiAjaxConfiguration:L}){let $=e(X),J=e(Y),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:",!!L);let I=A(U.card);if(!I?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}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 V=I.fallback;return f(V,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let H=I.component,B=f(r.Provider,{value:UU,children:f(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(I.isLazy)return f(D,{name:I.name,fallback:$,onError:J,children:B});return B}var LU=UU;import{jsx as nU}from"react/jsx-runtime";function IU(U,L,$){if(!L)return $;let J=U.replace(/^\//,""),z=L[J];if(!z)return $;return nU(LU,{uiConfig:z})}import{jsx as Z,Fragment as UL}from"react/jsx-runtime";var rU=({location:U,fallback:L,piecache:$,onError:J,queryOptions:z,disableGlobalForm:I})=>{let H=S(),B=o(),V=N(),$U=Q(()=>tU({baseURL:H}),[H]),zU=Q(()=>m(),[]),HU=Q(()=>H?g(H):null,[H]),JU=Q(()=>H?h(H,B):null,[H,B]),q=j({onError:J}),{data:G,isLoading:y,error:F}=aU({queryKey:["uiConfig",U.pathname+U.search,q?.initData],enabled:!!q?.initData,queryFn:async()=>{let O=new URLSearchParams(U.search);if(O.set("__pieroot","telegram"),q?.initData)O.set("initData",q.initData);let C="/api/content"+U.pathname+"?"+O.toString();if(V)console.log("[PieRoot] Fetching UI configuration from:",C);let v=await $U.get(C,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(V)console.log("[PieRoot] Received UI configuration:",v.data);return v.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(O)=>Math.min(1000*2**O,30000),...z}),x=IU(U.pathname,$,L);if(!H)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(F&&V)return console.error("[PieRoot] Error fetching UI configuration:",F),console.error("[PieRoot] Error details:",{message:F.message,status:F.response?.status,data:F.response?.data}),J?.(F),x;if(y||!G){if(V)console.log("[PieRoot] Loading state:",{isLoading:y,hasUiConfiguration:!!G});return x}if(V)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return Z(d.Provider,{value:zU,children:Z(K.Provider,{value:HU,children:Z(_.Provider,{value:JU,children:Z(X.Provider,{value:L??Z(UL,{}),children:Z(s,{children:Z(i,{children:I?Z(b,{uiConfig:G}):Z("form",{id:"piedata_global_form",action:H+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:Z(b,{uiConfig:G})})})})})})})})},eU=(U)=>{let L=Q(()=>new sU,[]),$=U.queryClient??L;return Z(t.Provider,{value:U.onNavigate,children:Z(P.Provider,{value:U.config,children:Z(Y.Provider,{value:U.onError,children:Z(iU,{client:$,children:Z(rU,{...U})})})})})},LL=eU;export{j as useWebApp,cU as useInitData,LL as PieTelegramRoot};
2
+ import{useMemo as R}from"react";import{QueryClient as iU,QueryClientProvider as rU,useQuery as aU}from"@tanstack/react-query";import VU from"mitt";import{createContext as ZU,useCallback as NL,useContext as VL}from"react";var P=globalThis,N=(U,L)=>{let I=Symbol.for(U);if(!(I in P))P[I]=L();return P[I]};function v(){return N("@swarm.ing/pieui:mitt-emitter",()=>VU())}var BU=N("@swarm.ing/pieui:context:mitt",()=>ZU(null));var u=BU;import{io as FU}from"socket.io-client";import{createContext as XU}from"react";var c=N("@swarm.ing/pieui:socket-cache",()=>new Map),o=(U)=>{let L=c.get(U);if(L)return L;let I=FU(U,{autoConnect:!1,transports:["websocket"]});return c.set(U,I),I},YU=N("@swarm.ing/pieui:context:socket",()=>XU(null)),_=YU;import{createContext as DU}from"react";import{Centrifuge as h}from"centrifuge";var g=N("@swarm.ing/pieui:centrifuge-cache",()=>new Map),l=(U,L)=>{if(!L)return null;let I=`${U}::${L}`,J=g.get(I);if(J)return J;async function z(){let H=await fetch(U+"api/centrifuge/gen_token");if(!H.ok){if(H.status===403)throw new h.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${H.status}`)}return(await H.json()).token}let $=new h(L,{getToken:z});return g.set(I,$),$},GU=N("@swarm.ing/pieui:context:centrifuge",()=>DU(null)),q=GU;import{useContext as qU,useEffect as KU}from"react";import{useEffect as OU,useState as QU}from"react";var K=new Map,W=new Map;function E(U,L){let I=`${U}::${L}`,J=U?K.get(I):void 0,[z,$]=QU(J??null);return OU(()=>{if(!U)return;if(K.has(I)){$(K.get(I));return}let H=W.get(I);if(!H)H=fetch(U+`api/support/${L}`,{method:"GET"}).then((V)=>V.json()).then((V)=>{return K.set(I,V),W.delete(I),V}).catch((V)=>{throw W.delete(I),V}),W.set(I,H);let B=!1;return H.then((V)=>{if(!B)$(V)}).catch(()=>{}),()=>{B=!0}},[U,L,I]),z}import{createContext as RU,useContext as TU}from"react";var w=N("@swarm.ing/pieui:context:pieConfig",()=>RU(null)),M=()=>{let U=TU(w);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},y=()=>{let{apiServer:U}=M();return U},f=y,p=()=>{let{centrifugeServer:U}=M();return U};var X=()=>{let{enableRenderingLog:U}=M();return U};var n=()=>{let{pageProcessor:U}=M();return U};var _U=N("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function s(){_U.resolve?.()}var WU=({children:U})=>{let L=qU(_),I=f(),J=E(I,"socketIO"),z=($)=>{if(typeof window<"u")window.sid=$.sid,s(),console.log(`SocketIO initialized: ${window.sid}`)};return KU(()=>{if(!L)return;let $=()=>{console.log("SocketIO connected")},H=(B)=>{console.log(`SocketIO disconnected: ${B}`),L.connect()};if(J)L.on("pieinit",z),L.on("connect",$),L.on("disconnect",H),L.connect();return()=>{if(J)L.off("pieinit",z),L.off("connect",$),L.off("disconnect",H),L.disconnect()}},[L,J]),U},i=WU;import{useContext as EU,useEffect as MU}from"react";var fU=({children:U})=>{let L=EU(q),I=f(),J=E(I,"centrifuge");return MU(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},$=(H)=>{console.log("Centrifuge disconnected:",H)};if(J)L.on("connected",z),L.on("disconnected",$),L.connect();return()=>{if(J)L.disconnect()}},[L,J]),U},r=fU;import{createContext as AU}from"react";import{jsx as PU,Fragment as kU}from"react/jsx-runtime";var jU=N("@swarm.ing/pieui:context:fallback",()=>AU(PU(kU,{}))),Y=jU;import{createContext as wU}from"react";var yU=N("@swarm.ing/pieui:context:lazyError",()=>wU(void 0)),D=yU;var mU=N("@swarm.ing/pieui:component-registry",()=>new Map);var A=(U)=>{return mU.get(U)};import{useContext as a,memo as vU}from"react";import{Component as CU,Suspense as xU}from"react";import{jsx as SU}from"react/jsx-runtime";var bU=2,dU=400;class G extends CU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<bU){let L=dU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return SU(xU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as m}from"react/jsx-runtime";function uU({uiConfig:U,setUiAjaxConfiguration:L}){let I=a(Y),J=a(D),z=X();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let $=A(U.card);if(!$?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return I}if(z)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let H=$.component,B=m(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if($.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",$.name);return m(G,{name:$.name,fallback:$.fallback?m($.fallback,{}):I,onError:J,children:B})}if(z)console.log("[UI] Rendering component directly:",$.name);return B}var C=vU(uU);import{createAxiosDateTransformer as tU}from"axios-date-transformer";import{useEffect as cU,useState as oU}from"react";var j=({onError:U}={})=>{let[L,I]=oU(null),J=n();return cU(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp;if(!z)return;try{z.ready?.()}catch($){U?.()}if(J==="telegram_expanded"&&(z.platform==="ios"||z.platform==="android"))z.expand();I(z)},[]),L},hU=()=>{let U=j();return[U?.initDataUnsafe,U?.initData]};import{createContext as gU}from"react";var lU=N("@swarm.ing/pieui:context:navigate",()=>gU(void 0)),t=lU;import{useContext as UU}from"react";import{createContext as pU}from"react";var nU=N("@swarm.ing/pieui:context:uiRenderer",()=>pU(null)),e=nU;import{jsx as k}from"react/jsx-runtime";function LU({uiConfig:U,setUiAjaxConfiguration:L}){let I=UU(Y),J=UU(D),z=X();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let $=A(U.card);if(!$?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return I}if(z)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(z)console.log("[UILoading] Rendering fallback for:",$.name);let V=$.fallback;return k(V,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",$.name);let H=$.component,B=k(e.Provider,{value:LU,children:k(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if($.isLazy)return k(G,{name:$.name,fallback:I,onError:J,children:B});return B}var IU=LU;import{jsx as sU}from"react/jsx-runtime";function $U(U,L,I){if(!L)return I;let J=U.replace(/^\//,""),z=L[J];if(!z)return I;return sU(IU,{uiConfig:z})}import{jsx as Z,Fragment as LL}from"react/jsx-runtime";var eU=({location:U,fallback:L,piecache:I,onError:J,queryOptions:z,disableGlobalForm:$})=>{let H=y(),B=p(),V=X(),zU=R(()=>tU({baseURL:H}),[H]),HU=R(()=>v(),[]),JU=R(()=>H?o(H):null,[H]),NU=R(()=>H?l(H,B):null,[H,B]),T=j({onError:J}),{data:O,isLoading:x,error:F}=aU({queryKey:["uiConfig",U.pathname+U.search,T?.initData],enabled:!!T?.initData,queryFn:async()=>{let Q=new URLSearchParams(U.search);if(Q.set("__pieroot","telegram"),T?.initData)Q.set("initData",T.initData);let d="/api/content"+U.pathname+"?"+Q.toString();if(V)console.log("[PieRoot] Fetching UI configuration from:",d);let S=await zU.get(d,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(V)console.log("[PieRoot] Received UI configuration:",S.data);return S.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Q)=>Math.min(1000*2**Q,30000),...z}),b=$U(U.pathname,I,L);if(!H)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(F&&V)return console.error("[PieRoot] Error fetching UI configuration:",F),console.error("[PieRoot] Error details:",{message:F.message,status:F.response?.status,data:F.response?.data}),J?.(F),b;if(x||!O){if(V)console.log("[PieRoot] Loading state:",{isLoading:x,hasUiConfiguration:!!O});return b}if(V)console.log("[PieRoot] UI configuration loaded successfully:",O),console.log("[PieRoot] Rendering UI with configuration");return Z(u.Provider,{value:HU,children:Z(_.Provider,{value:JU,children:Z(q.Provider,{value:NU,children:Z(Y.Provider,{value:L??Z(LL,{}),children:Z(i,{children:Z(r,{children:$?Z(C,{uiConfig:O}):Z("form",{id:"piedata_global_form",action:H+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:Z(C,{uiConfig:O})})})})})})})})},UL=(U)=>{let L=R(()=>new iU,[]),I=U.queryClient??L;return Z(t.Provider,{value:U.onNavigate,children:Z(w.Provider,{value:U.config,children:Z(D.Provider,{value:U.onError,children:Z(rU,{client:I,children:Z(eU,{...U})})})})})},IL=UL;export{j as useWebApp,hU as useInitData,IL as PieTelegramRoot};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var bU=Object.create;var{getPrototypeOf:yU,defineProperty:K,getOwnPropertyNames:r,getOwnPropertyDescriptor:xU}=Object,e=Object.prototype.hasOwnProperty;var CU=(U,L,I)=>{I=U!=null?bU(yU(U)):{};let H=L||!U||!U.__esModule?K(I,"default",{value:U,enumerable:!0}):I;for(let z of r(U))if(!e.call(H,z))K(H,z,{get:()=>U[z],enumerable:!0});return H},t=new WeakMap,vU=(U)=>{var L=t.get(U),I;if(L)return L;if(L=K({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")r(U).map((H)=>!e.call(L,H)&&K(L,H,{get:()=>U[H],enumerable:!(I=xU(U,H))||I.enumerable}));return t.set(U,L),L};var mU=(U,L)=>{for(var I in L)K(U,I,{get:L[I],enumerable:!0,configurable:!0,set:(H)=>L[I]=()=>H})};var LL={};mU(LL,{useWebApp:()=>W,useInitData:()=>qU,PieTelegramRoot:()=>fU});module.exports=vU(LL);var G=require("react"),O=require("@tanstack/react-query");var UU=CU(require("mitt")),E=require("react"),g=null;function LU(){if(!g)g=UU.default();return g}var dU=E.createContext(null);var IU=dU;var zU=require("socket.io-client"),HU=require("react"),$U=new Map,JU=(U)=>{let L=$U.get(U);if(L)return L;let I=zU.io(U,{autoConnect:!1,transports:["websocket"]});return $U.set(U,I),I},uU=HU.createContext(null),M=uU;var ZU=require("react"),c=require("centrifuge"),VU=new Map,BU=(U,L)=>{if(!L)return null;let I=`${U}::${L}`,H=VU.get(I);if(H)return H;async function z(){let J=await fetch(U+"api/centrifuge/gen_token");if(!J.ok){if(J.status===403)throw new c.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let $=new c.Centrifuge(L,{getToken:z});return VU.set(I,$),$},gU=ZU.createContext(null),A=gU;var y=require("react");var k=require("react"),j=new Map,f=new Map;function P(U,L){let I=`${U}::${L}`,H=U?j.get(I):void 0,[z,$]=k.useState(H??null);return k.useEffect(()=>{if(!U)return;if(j.has(I)){$(j.get(I));return}let J=f.get(I);if(!J)J=fetch(U+`api/support/${L}`,{method:"GET"}).then((Z)=>Z.json()).then((Z)=>{return j.set(I,Z),f.delete(I),Z}).catch((Z)=>{throw f.delete(I),Z}),f.set(I,J);let B=!1;return J.then((Z)=>{if(!B)$(Z)}).catch(()=>{}),()=>{B=!0}},[U,L,I]),z}var S=require("react"),l=S.createContext(null),w=()=>{let U=S.useContext(l);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},h=()=>{let{apiServer:U}=w();return U},b=h,FU=()=>{let{centrifugeServer:U}=w();return U};var N=()=>{let{enableRenderingLog:U}=w();return U};var NU=()=>{let{pageProcessor:U}=w();return U};var cU=null;function XU(){cU?.()}var lU=({children:U})=>{let L=y.useContext(M),I=b(),H=P(I,"socketIO"),z=($)=>{if(typeof window<"u")window.sid=$.sid,XU(),console.log(`SocketIO initialized: ${window.sid}`)};return y.useEffect(()=>{if(!L)return;let $=()=>{console.log("SocketIO connected")},J=(B)=>{console.log(`SocketIO disconnected: ${B}`),L.connect()};if(H)L.on("pieinit",z),L.on("connect",$),L.on("disconnect",J),L.connect();return()=>{if(H)L.off("pieinit",z),L.off("connect",$),L.off("disconnect",J),L.disconnect()}},[L,H]),U},YU=lU;var x=require("react");var hU=({children:U})=>{let L=x.useContext(A),I=b(),H=P(I,"centrifuge");return x.useEffect(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},$=(J)=>{console.log("Centrifuge disconnected:",J)};if(H)L.on("connected",z),L.on("disconnected",$),L.connect();return()=>{if(H)L.disconnect()}},[L,H]),U},DU=hU;var GU=require("react"),C=require("react/jsx-runtime"),oU=GU.createContext(C.jsx(C.Fragment,{})),X=oU;var OU=require("react"),pU=OU.createContext(void 0),Y=pU;var nU=new Map;var v=(U)=>{return nU.get(U)};var _=require("react");var m=require("react"),QU=require("react/jsx-runtime"),sU=2,iU=400;class D extends m.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<sU){let L=iU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return QU.jsx(m.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var d=require("react/jsx-runtime");function aU({uiConfig:U,setUiAjaxConfiguration:L}){let I=_.useContext(X),H=_.useContext(Y),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:",!!L);let $=v(U.card);if(!$?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return I}if(z)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let J=$.component,B=d.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if($.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",$.name);return d.jsx(D,{name:$.name,fallback:$.fallback?d.jsx($.fallback,{}):I,onError:H,children:B})}if(z)console.log("[UI] Rendering component directly:",$.name);return B}var o=_.memo(aU);var jU=require("axios-date-transformer");var u=require("react");var W=({onError:U}={})=>{let[L,I]=u.useState(null),H=NU();return u.useEffect(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp;if(!z)return;try{z.ready?.()}catch($){U?.()}if(H==="telegram_expanded"&&(z.platform==="ios"||z.platform==="android"))z.expand();I(z)},[]),L},qU=()=>{let U=W();return[U?.initDataUnsafe,U?.initData]};var KU=require("react"),tU=KU.createContext(void 0),_U=tU;var p=require("react");var WU=require("react"),rU=WU.createContext(null),RU=rU;var R=require("react/jsx-runtime");function TU({uiConfig:U,setUiAjaxConfiguration:L}){let I=p.useContext(X),H=p.useContext(Y),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:",!!L);let $=v(U.card);if(!$?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return I}if(z)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(z)console.log("[UILoading] Rendering fallback for:",$.name);let Z=$.fallback;return R.jsx(Z,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",$.name);let J=$.component,B=R.jsx(RU.Provider,{value:TU,children:R.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if($.isLazy)return R.jsx(D,{name:$.name,fallback:I,onError:H,children:B});return B}var EU=TU;var AU=require("react/jsx-runtime");function MU(U,L,I){if(!L)return I;let H=U.replace(/^\//,""),z=L[H];if(!z)return I;return AU.jsx(EU,{uiConfig:z})}var V=require("react/jsx-runtime"),eU=({location:U,fallback:L,piecache:I,onError:H,queryOptions:z,disableGlobalForm:$})=>{let J=h(),B=FU(),Z=N(),kU=G.useMemo(()=>jU.createAxiosDateTransformer({baseURL:J}),[J]),PU=G.useMemo(()=>LU(),[]),SU=G.useMemo(()=>J?JU(J):null,[J]),wU=G.useMemo(()=>J?BU(J,B):null,[J,B]),T=W({onError:H}),{data:Q,isLoading:n,error:F}=O.useQuery({queryKey:["uiConfig",U.pathname+U.search,T?.initData],enabled:!!T?.initData,queryFn:async()=>{let q=new URLSearchParams(U.search);if(q.set("__pieroot","telegram"),T?.initData)q.set("initData",T.initData);let i="/api/content"+U.pathname+"?"+q.toString();if(Z)console.log("[PieRoot] Fetching UI configuration from:",i);let a=await kU.get(i,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(Z)console.log("[PieRoot] Received UI configuration:",a.data);return a.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...z}),s=MU(U.pathname,I,L);if(!J)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(F&&Z)return console.error("[PieRoot] Error fetching UI configuration:",F),console.error("[PieRoot] Error details:",{message:F.message,status:F.response?.status,data:F.response?.data}),H?.(F),s;if(n||!Q){if(Z)console.log("[PieRoot] Loading state:",{isLoading:n,hasUiConfiguration:!!Q});return s}if(Z)console.log("[PieRoot] UI configuration loaded successfully:",Q),console.log("[PieRoot] Rendering UI with configuration");return V.jsx(IU.Provider,{value:PU,children:V.jsx(M.Provider,{value:SU,children:V.jsx(A.Provider,{value:wU,children:V.jsx(X.Provider,{value:L??V.jsx(V.Fragment,{}),children:V.jsx(YU,{children:V.jsx(DU,{children:$?V.jsx(o,{uiConfig:Q}):V.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:V.jsx(o,{uiConfig:Q})})})})})})})})},UL=(U)=>{let L=G.useMemo(()=>new O.QueryClient,[]),I=U.queryClient??L;return V.jsx(_U.Provider,{value:U.onNavigate,children:V.jsx(l.Provider,{value:U.config,children:V.jsx(Y.Provider,{value:U.onError,children:V.jsx(O.QueryClientProvider,{client:I,children:V.jsx(eU,{...U})})})})})},fU=UL;
2
+ var CU=Object.create;var{getPrototypeOf:xU,defineProperty:_,getOwnPropertyNames:e,getOwnPropertyDescriptor:bU}=Object,UU=Object.prototype.hasOwnProperty;var dU=(U,L,I)=>{I=U!=null?CU(xU(U)):{};let H=L||!U||!U.__esModule?_(I,"default",{value:U,enumerable:!0}):I;for(let z of e(U))if(!UU.call(H,z))_(H,z,{get:()=>U[z],enumerable:!0});return H},t=new WeakMap,SU=(U)=>{var L=t.get(U),I;if(L)return L;if(L=_({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")e(U).map((H)=>!UU.call(L,H)&&_(L,H,{get:()=>U[H],enumerable:!(I=bU(U,H))||I.enumerable}));return t.set(U,L),L};var vU=(U,L)=>{for(var I in L)_(U,I,{get:L[I],enumerable:!0,configurable:!0,set:(H)=>L[I]=()=>H})};var IL={};vU(IL,{useWebApp:()=>K,useInitData:()=>TU,PieTelegramRoot:()=>kU});module.exports=SU(IL);var O=require("react"),Q=require("@tanstack/react-query");var LU=dU(require("mitt")),M=require("react");var o=globalThis,N=(U,L)=>{let I=Symbol.for(U);if(!(I in o))o[I]=L();return o[I]};function IU(){return N("@swarm.ing/pieui:mitt-emitter",()=>LU.default())}var uU=N("@swarm.ing/pieui:context:mitt",()=>M.createContext(null));var $U=uU;var HU=require("socket.io-client"),JU=require("react");var zU=N("@swarm.ing/pieui:socket-cache",()=>new Map),NU=(U)=>{let L=zU.get(U);if(L)return L;let I=HU.io(U,{autoConnect:!1,transports:["websocket"]});return zU.set(U,I),I},cU=N("@swarm.ing/pieui:context:socket",()=>JU.createContext(null)),f=cU;var ZU=require("react"),h=require("centrifuge");var VU=N("@swarm.ing/pieui:centrifuge-cache",()=>new Map),BU=(U,L)=>{if(!L)return null;let I=`${U}::${L}`,H=VU.get(I);if(H)return H;async function z(){let J=await fetch(U+"api/centrifuge/gen_token");if(!J.ok){if(J.status===403)throw new h.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let $=new h.Centrifuge(L,{getToken:z});return VU.set(I,$),$},oU=N("@swarm.ing/pieui:context:centrifuge",()=>ZU.createContext(null)),A=oU;var x=require("react");var P=require("react"),j=new Map,k=new Map;function w(U,L){let I=`${U}::${L}`,H=U?j.get(I):void 0,[z,$]=P.useState(H??null);return P.useEffect(()=>{if(!U)return;if(j.has(I)){$(j.get(I));return}let J=k.get(I);if(!J)J=fetch(U+`api/support/${L}`,{method:"GET"}).then((Z)=>Z.json()).then((Z)=>{return j.set(I,Z),k.delete(I),Z}).catch((Z)=>{throw k.delete(I),Z}),k.set(I,J);let B=!1;return J.then((Z)=>{if(!B)$(Z)}).catch(()=>{}),()=>{B=!0}},[U,L,I]),z}var y=require("react");var g=N("@swarm.ing/pieui:context:pieConfig",()=>y.createContext(null)),m=()=>{let U=y.useContext(g);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},l=()=>{let{apiServer:U}=m();return U},C=l,FU=()=>{let{centrifugeServer:U}=m();return U};var X=()=>{let{enableRenderingLog:U}=m();return U};var XU=()=>{let{pageProcessor:U}=m();return U};var hU=N("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function YU(){hU.resolve?.()}var gU=({children:U})=>{let L=x.useContext(f),I=C(),H=w(I,"socketIO"),z=($)=>{if(typeof window<"u")window.sid=$.sid,YU(),console.log(`SocketIO initialized: ${window.sid}`)};return x.useEffect(()=>{if(!L)return;let $=()=>{console.log("SocketIO connected")},J=(B)=>{console.log(`SocketIO disconnected: ${B}`),L.connect()};if(H)L.on("pieinit",z),L.on("connect",$),L.on("disconnect",J),L.connect();return()=>{if(H)L.off("pieinit",z),L.off("connect",$),L.off("disconnect",J),L.disconnect()}},[L,H]),U},DU=gU;var b=require("react");var lU=({children:U})=>{let L=b.useContext(A),I=C(),H=w(I,"centrifuge");return b.useEffect(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},$=(J)=>{console.log("Centrifuge disconnected:",J)};if(H)L.on("connected",z),L.on("disconnected",$),L.connect();return()=>{if(H)L.disconnect()}},[L,H]),U},GU=lU;var OU=require("react");var d=require("react/jsx-runtime"),pU=N("@swarm.ing/pieui:context:fallback",()=>OU.createContext(d.jsx(d.Fragment,{}))),Y=pU;var QU=require("react");var nU=N("@swarm.ing/pieui:context:lazyError",()=>QU.createContext(void 0)),D=nU;var sU=N("@swarm.ing/pieui:component-registry",()=>new Map);var S=(U)=>{return sU.get(U)};var q=require("react");var v=require("react"),RU=require("react/jsx-runtime"),iU=2,rU=400;class G extends v.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<iU){let L=rU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return RU.jsx(v.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var u=require("react/jsx-runtime");function aU({uiConfig:U,setUiAjaxConfiguration:L}){let I=q.useContext(Y),H=q.useContext(D),z=X();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let $=S(U.card);if(!$?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return I}if(z)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let J=$.component,B=u.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if($.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",$.name);return u.jsx(G,{name:$.name,fallback:$.fallback?u.jsx($.fallback,{}):I,onError:H,children:B})}if(z)console.log("[UI] Rendering component directly:",$.name);return B}var p=q.memo(aU);var jU=require("axios-date-transformer");var c=require("react");var K=({onError:U}={})=>{let[L,I]=c.useState(null),H=XU();return c.useEffect(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp;if(!z)return;try{z.ready?.()}catch($){U?.()}if(H==="telegram_expanded"&&(z.platform==="ios"||z.platform==="android"))z.expand();I(z)},[]),L},TU=()=>{let U=K();return[U?.initDataUnsafe,U?.initData]};var _U=require("react");var tU=N("@swarm.ing/pieui:context:navigate",()=>_U.createContext(void 0)),qU=tU;var n=require("react");var KU=require("react");var eU=N("@swarm.ing/pieui:context:uiRenderer",()=>KU.createContext(null)),WU=eU;var W=require("react/jsx-runtime");function EU({uiConfig:U,setUiAjaxConfiguration:L}){let I=n.useContext(Y),H=n.useContext(D),z=X();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let $=S(U.card);if(!$?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return I}if(z)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(z)console.log("[UILoading] Rendering fallback for:",$.name);let Z=$.fallback;return W.jsx(Z,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",$.name);let J=$.component,B=W.jsx(WU.Provider,{value:EU,children:W.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if($.isLazy)return W.jsx(G,{name:$.name,fallback:I,onError:H,children:B});return B}var MU=EU;var AU=require("react/jsx-runtime");function fU(U,L,I){if(!L)return I;let H=U.replace(/^\//,""),z=L[H];if(!z)return I;return AU.jsx(MU,{uiConfig:z})}var V=require("react/jsx-runtime"),UL=({location:U,fallback:L,piecache:I,onError:H,queryOptions:z,disableGlobalForm:$})=>{let J=l(),B=FU(),Z=X(),PU=O.useMemo(()=>jU.createAxiosDateTransformer({baseURL:J}),[J]),wU=O.useMemo(()=>IU(),[]),yU=O.useMemo(()=>J?NU(J):null,[J]),mU=O.useMemo(()=>J?BU(J,B):null,[J,B]),E=K({onError:H}),{data:R,isLoading:s,error:F}=Q.useQuery({queryKey:["uiConfig",U.pathname+U.search,E?.initData],enabled:!!E?.initData,queryFn:async()=>{let T=new URLSearchParams(U.search);if(T.set("__pieroot","telegram"),E?.initData)T.set("initData",E.initData);let r="/api/content"+U.pathname+"?"+T.toString();if(Z)console.log("[PieRoot] Fetching UI configuration from:",r);let a=await PU.get(r,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(Z)console.log("[PieRoot] Received UI configuration:",a.data);return a.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(T)=>Math.min(1000*2**T,30000),...z}),i=fU(U.pathname,I,L);if(!J)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(F&&Z)return console.error("[PieRoot] Error fetching UI configuration:",F),console.error("[PieRoot] Error details:",{message:F.message,status:F.response?.status,data:F.response?.data}),H?.(F),i;if(s||!R){if(Z)console.log("[PieRoot] Loading state:",{isLoading:s,hasUiConfiguration:!!R});return i}if(Z)console.log("[PieRoot] UI configuration loaded successfully:",R),console.log("[PieRoot] Rendering UI with configuration");return V.jsx($U.Provider,{value:wU,children:V.jsx(f.Provider,{value:yU,children:V.jsx(A.Provider,{value:mU,children:V.jsx(Y.Provider,{value:L??V.jsx(V.Fragment,{}),children:V.jsx(DU,{children:V.jsx(GU,{children:$?V.jsx(p,{uiConfig:R}):V.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:V.jsx(p,{uiConfig:R})})})})})})})})},LL=(U)=>{let L=O.useMemo(()=>new Q.QueryClient,[]),I=U.queryClient??L;return V.jsx(qU.Provider,{value:U.onNavigate,children:V.jsx(g.Provider,{value:U.config,children:V.jsx(D.Provider,{value:U.onError,children:V.jsx(Q.QueryClientProvider,{client:I,children:V.jsx(UL,{...U})})})})})},kU=LL;
@@ -1 +1 @@
1
- {"version":3,"file":"centrifuge.d.ts","sourceRoot":"","sources":["../../src/util/centrifuge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAIvC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,GACtB,WAAW,MAAM,EACjB,mBAAmB,MAAM,KAC1B,UAAU,GAAG,IAwBf,CAAA;AAED;;;;GAIG;AACH,QAAA,MAAM,mBAAmB,4CAAyC,CAAA;AAClE,eAAe,mBAAmB,CAAA"}
1
+ {"version":3,"file":"centrifuge.d.ts","sourceRoot":"","sources":["../../src/util/centrifuge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAQvC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,GACtB,WAAW,MAAM,EACjB,mBAAmB,MAAM,KAC1B,UAAU,GAAG,IAwBf,CAAA;AAED;;;;GAIG;AACH,QAAA,MAAM,mBAAmB,4CAGxB,CAAA;AACD,eAAe,mBAAmB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../../src/util/fallback.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAA;AAEhD;;;;;GAKG;AACH,QAAA,MAAM,eAAe,oCAAkC,CAAA;AAEvD,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../../src/util/fallback.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAA;AAGhD;;;;;GAKG;AACH,QAAA,MAAM,eAAe,oCAGpB,CAAA;AAED,eAAe,eAAe,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const globalSingleton: <T>(name: string, create: () => T) => T;
2
+ //# sourceMappingURL=globalSingleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalSingleton.d.ts","sourceRoot":"","sources":["../../src/util/globalSingleton.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,MAAM,MAAM,EAAE,QAAQ,MAAM,CAAC,KAAG,CAMlE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"lazyError.d.ts","sourceRoot":"","sources":["../../src/util/lazyError.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,QAAA,MAAM,gBAAgB,mCAA0B,OAAO,KAAK,IAAI,cAE/D,CAAA;AAED,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"lazyError.d.ts","sourceRoot":"","sources":["../../src/util/lazyError.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,QAAA,MAAM,gBAAgB,mCAEW,OAAO,KAAK,IAAI,cAChD,CAAA;AAED,eAAe,gBAAgB,CAAA"}
@@ -14,6 +14,9 @@ export type MittEvents = {
14
14
  * Prefer {@link usePieEmit} from within React components — it honours the
15
15
  * provider-supplied emitter from `MittContext` when one is available.
16
16
  *
17
+ * The emitter is stashed on `globalThis` so every pre-bundled entry point shares
18
+ * the same instance and events emitted from one bundle reach listeners in another.
19
+ *
17
20
  * @returns The process-wide Mitt emitter instance.
18
21
  */
19
22
  export declare function getEmitter(): Emitter<MittEvents>;
@@ -1 +1 @@
1
- {"version":3,"file":"mitt.d.ts","sourceRoot":"","sources":["../../src/util/mitt.ts"],"names":[],"mappings":"AAEA,OAAa,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAGpC;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB,CAAA;AAID;;;;;;;;GAQG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAKhD;AAED;;;;;GAKG;AACH,QAAA,MAAM,WAAW,qDAAkD,CAAA;AAEnE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,gBAGlB,MAAM,YAAY,GAAG,UAKzC;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"mitt.d.ts","sourceRoot":"","sources":["../../src/util/mitt.ts"],"names":[],"mappings":"AAEA,OAAa,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAIpC;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAIhD;AAED;;;;;GAKG;AACH,QAAA,MAAM,WAAW,qDAGhB,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,gBAGlB,MAAM,YAAY,GAAG,UAKzC;AAED,eAAe,WAAW,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../src/util/navigate.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;AAElD;;;;;GAKG;AACH,QAAA,MAAM,eAAe,uDAAyD,CAAA;AAE9E,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../src/util/navigate.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;AAElD;;;;;GAKG;AACH,QAAA,MAAM,eAAe,uDAGpB,CAAA;AAED,eAAe,eAAe,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"pieConfig.d.ts","sourceRoot":"","sources":["../../src/util/pieConfig.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,2CAAwC,CAAA;AAErE;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,iBAMxB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,cAGxB,CAAA;AAED,6CAA6C;AAC7C,eAAO,MAAM,YAAY,cAAe,CAAA;AAExC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,0BAG/B,CAAA;AAED,oDAAoD;AACpD,eAAO,MAAM,mBAAmB,0BAAsB,CAAA;AAEtD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,2BAGpC,CAAA;AAED,yDAAyD;AACzD,eAAO,MAAM,qBAAqB,2BAA2B,CAAA;AAE7D;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,0BAG5B,CAAA;AAED,iDAAiD;AACjD,eAAO,MAAM,gBAAgB,0BAAmB,CAAA;AAEhD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,gBAAgB,CAAA"}
1
+ {"version":3,"file":"pieConfig.d.ts","sourceRoot":"","sources":["../../src/util/pieConfig.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGpC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,2CAG5B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,iBAMxB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,cAGxB,CAAA;AAED,6CAA6C;AAC7C,eAAO,MAAM,YAAY,cAAe,CAAA;AAExC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,0BAG/B,CAAA;AAED,oDAAoD;AACpD,eAAO,MAAM,mBAAmB,0BAAsB,CAAA;AAEtD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,2BAGpC,CAAA;AAED,yDAAyD;AACzD,eAAO,MAAM,qBAAqB,2BAA2B,CAAA;AAE7D;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,0BAG5B,CAAA;AAED,iDAAiD;AACjD,eAAO,MAAM,gBAAgB,0BAAmB,CAAA;AAEhD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,gBAAgB,CAAA"}
@@ -5,8 +5,19 @@ import { ComponentType } from 'react';
5
5
  * call to {@link registerPieComponent} writes into this `Map`, and the
6
6
  * dynamic UI renderer reads from it at render time to resolve a `card` name
7
7
  * to a concrete React component.
8
+ *
9
+ * The `Map` is stashed on `globalThis` under a shared `Symbol.for` key (via
10
+ * {@link globalSingleton}) so that every copy of this module resolves to the
11
+ * SAME instance. `registry.ts` gets inlined into each pre-bundled entry point
12
+ * (main, `/components`, `/telegram`, `/max`, `/agent`), and without a shared
13
+ * backing store each bundle would own a separate `Map`. A component registered
14
+ * via one entry (`import "@swarm.ing/pieui/components"`) would then be invisible
15
+ * to a renderer loaded from another (`PieTelegramRoot` from
16
+ * `@swarm.ing/pieui/telegram`), surfacing as "[UI] Component not found in
17
+ * registry".
8
18
  */
9
- export declare const registry: Map<string, ComponentRegistration<any>>;
19
+ type RegistryMap = Map<string, ComponentRegistration<any>>;
20
+ export declare const registry: RegistryMap;
10
21
  /**
11
22
  * Registers a PieUI component so it can be rendered by name from a dynamic
12
23
  * UI configuration.
@@ -86,4 +97,5 @@ export declare const preloadComponent: (name: string) => Promise<unknown> | unde
86
97
  * landing screen).
87
98
  */
88
99
  export declare const prefetchLazyComponents: () => void;
100
+ export {};
89
101
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/util/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,yCAAgD,CAAA;AAwCrE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EACvC,YAAY,EAAE,qBAAqB,CAAC,MAAM,CAAC,GAC5C,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAInC;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GACnC,YAAY,qBAAqB,CAAC,GAAG,CAAC,EAAE,SAG3C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,SAE/C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,YAExC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GACzB,MAAM,MAAM,KACb,iBAAiB,GAAG,SAEtB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GACzB,MAAM,MAAM,KACb,qBAAqB,CAAC,GAAG,CAAC,GAAG,SAE/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAO,MAAM,EAEnD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,QAAO,MAElC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAO,MAAM,EAGpB,CAAA;AAE3B;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,GAAG,SAIlE,CAAA;AAID;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,QAAO,IAsCzC,CAAA"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/util/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAGrC;;;;;;;;;;;;;;;GAeG;AACH,KAAK,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAA;AAE1D,eAAO,MAAM,QAAQ,EAAE,WAGtB,CAAA;AAwCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EACvC,YAAY,EAAE,qBAAqB,CAAC,MAAM,CAAC,GAC5C,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAInC;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GACnC,YAAY,qBAAqB,CAAC,GAAG,CAAC,EAAE,SAG3C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,SAE/C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,YAExC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GACzB,MAAM,MAAM,KACb,iBAAiB,GAAG,SAEtB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GACzB,MAAM,MAAM,KACb,qBAAqB,CAAC,GAAG,CAAC,GAAG,SAE/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAO,MAAM,EAEnD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,QAAO,MAElC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAO,MAAM,EAGpB,CAAA;AAE3B;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,GAAG,SAIlE,CAAA;AAID;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,QAAO,IAsCzC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/util/socket.ts"],"names":[],"mappings":"AAEA,OAAO,EAAM,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAK7C;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,SAAS,GAAI,WAAW,MAAM,KAAG,MAU7C,CAAA;AAED;;;;GAIG;AACH,QAAA,MAAM,eAAe,0JAAqC,CAAA;AAE1D,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/util/socket.ts"],"names":[],"mappings":"AAEA,OAAO,EAAM,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAS7C;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,SAAS,GAAI,WAAW,MAAM,KAAG,MAU7C,CAAA;AAED;;;;GAIG;AACH,QAAA,MAAM,eAAe,0JAGpB,CAAA;AAED,eAAe,eAAe,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"uiRenderer.d.ts","sourceRoot":"","sources":["../../src/util/uiRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAiB,MAAM,OAAO,CAAA;AACpD,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEnE;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,YAAY,CAAA;IACtB,sBAAsB,CAAC,EAAE,0BAA0B,CAAA;CACtD,CAAA;AAED;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB,gEAEtB,CAAA;AAED,eAAe,iBAAiB,CAAA"}
1
+ {"version":3,"file":"uiRenderer.d.ts","sourceRoot":"","sources":["../../src/util/uiRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAiB,MAAM,OAAO,CAAA;AACpD,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGnE;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,YAAY,CAAA;IACtB,sBAAsB,CAAC,EAAE,0BAA0B,CAAA;CACtD,CAAA;AAED;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB,gEAGtB,CAAA;AAED,eAAe,iBAAiB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"waitForSidAvailable.d.ts","sourceRoot":"","sources":["../../src/util/waitForSidAvailable.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,gBAAgB,SAE/B;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAe3D"}
1
+ {"version":3,"file":"waitForSidAvailable.d.ts","sourceRoot":"","sources":["../../src/util/waitForSidAvailable.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,wBAAgB,gBAAgB,SAE/B;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAe3D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swarm.ing/pieui",
3
- "version": "2.1.0",
3
+ "version": "2.1.2",
4
4
  "description": "A React component library featuring PieCard component",
5
5
  "repository": {
6
6
  "type": "git",