@swarm.ing/pieui 2.1.6 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/components/PieCard/index.d.ts.map +1 -1
  2. package/dist/components/index.esm.js +1 -1
  3. package/dist/components/index.js +1 -1
  4. package/dist/index.esm.js +2 -2
  5. package/dist/index.js +2 -2
  6. package/dist/native/index.esm.js +2 -2
  7. package/dist/native/index.js +2 -2
  8. package/dist/server/card.d.ts +28 -0
  9. package/dist/server/card.d.ts.map +1 -0
  10. package/dist/server/cards/AjaxGroupCard.d.ts +8 -0
  11. package/dist/server/cards/AjaxGroupCard.d.ts.map +1 -0
  12. package/dist/server/cards/HTMLEmbedCard.d.ts +6 -0
  13. package/dist/server/cards/HTMLEmbedCard.d.ts.map +1 -0
  14. package/dist/server/cards/HiddenCard.d.ts +6 -0
  15. package/dist/server/cards/HiddenCard.d.ts.map +1 -0
  16. package/dist/server/cards/OneOfCard.d.ts +8 -0
  17. package/dist/server/cards/OneOfCard.d.ts.map +1 -0
  18. package/dist/server/cards/UnionCard.d.ts +8 -0
  19. package/dist/server/cards/UnionCard.d.ts.map +1 -0
  20. package/dist/server/cards/index.d.ts +6 -0
  21. package/dist/server/cards/index.d.ts.map +1 -0
  22. package/dist/server/form.d.ts +5 -0
  23. package/dist/server/form.d.ts.map +1 -0
  24. package/dist/server/index.d.ts +9 -0
  25. package/dist/server/index.d.ts.map +1 -0
  26. package/dist/server/index.esm.js +382 -0
  27. package/dist/server/index.js +427 -0
  28. package/dist/server/page.d.ts +26 -0
  29. package/dist/server/page.d.ts.map +1 -0
  30. package/dist/server/realtime.d.ts +13 -0
  31. package/dist/server/realtime.d.ts.map +1 -0
  32. package/dist/server/types.d.ts +28 -0
  33. package/dist/server/types.d.ts.map +1 -0
  34. package/dist/server/web.d.ts +23 -0
  35. package/dist/server/web.d.ts.map +1 -0
  36. package/dist/telegram/index.esm.js +1 -1
  37. package/dist/telegram/index.js +1 -1
  38. package/dist/tests/centrifugeSubscription.test.d.ts +2 -0
  39. package/dist/tests/centrifugeSubscription.test.d.ts.map +1 -0
  40. package/dist/tests/server/card-fill.test.d.ts +2 -0
  41. package/dist/tests/server/card-fill.test.d.ts.map +1 -0
  42. package/dist/tests/server/card-generate.test.d.ts +2 -0
  43. package/dist/tests/server/card-generate.test.d.ts.map +1 -0
  44. package/dist/tests/server/cards.test.d.ts +2 -0
  45. package/dist/tests/server/cards.test.d.ts.map +1 -0
  46. package/dist/tests/server/e2e.test.d.ts +2 -0
  47. package/dist/tests/server/e2e.test.d.ts.map +1 -0
  48. package/dist/tests/server/entry.test.d.ts +2 -0
  49. package/dist/tests/server/entry.test.d.ts.map +1 -0
  50. package/dist/tests/server/form.test.d.ts +2 -0
  51. package/dist/tests/server/form.test.d.ts.map +1 -0
  52. package/dist/tests/server/page.test.d.ts +2 -0
  53. package/dist/tests/server/page.test.d.ts.map +1 -0
  54. package/dist/tests/server/realtime.test.d.ts +2 -0
  55. package/dist/tests/server/realtime.test.d.ts.map +1 -0
  56. package/dist/tests/server/web-ajax.test.d.ts +2 -0
  57. package/dist/tests/server/web-ajax.test.d.ts.map +1 -0
  58. package/dist/tests/server/web-content.test.d.ts +2 -0
  59. package/dist/tests/server/web-content.test.d.ts.map +1 -0
  60. package/dist/tests/server/web-process.test.d.ts +2 -0
  61. package/dist/tests/server/web-process.test.d.ts.map +1 -0
  62. package/dist/tests/server/web-token.test.d.ts +2 -0
  63. package/dist/tests/server/web-token.test.d.ts.map +1 -0
  64. package/dist/util/centrifugeSubscription.d.ts +18 -0
  65. package/dist/util/centrifugeSubscription.d.ts.map +1 -0
  66. package/package.json +28 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieCard/index.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC;;;;;;;;;;;;;;;;;GAiBG;AACH,QAAA,MAAM,OAAO,GAAI,OAAO,GAAG,OAAO,EAAG,mIAWlC,YAAY,CAAC,OAAO,CAAC,gWAgOvB,CAAA;AAED,eAAe,OAAO,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieCard/index.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC;;;;;;;;;;;;;;;;;GAiBG;AACH,QAAA,MAAM,OAAO,GAAI,OAAO,GAAG,OAAO,EAAG,mIAWlC,YAAY,CAAC,OAAO,CAAC,gWAgPvB,CAAA;AAED,eAAe,OAAO,CAAA"}
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{useContext as x,useEffect as S,useRef as oo}from"react";import{createContext as Vo,useContext as Mo}from"react";var j=globalThis,Q=(o,U)=>{let I=Symbol.for(o);if(!(I in j))j[I]=U();return j[I]};var Ro=Q("@swarm.ing/pieui:context:pieConfig",()=>Vo(null)),Eo=()=>{let o=Mo(Ro);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var E=()=>{let{enableRenderingLog:o}=Eo();return o},n=E;import{createContext as No}from"react";import{Centrifuge as Gf}from"centrifuge";var Ff=Q("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var po=Q("@swarm.ing/pieui:context:centrifuge",()=>No(null)),s=po;import{io as Xf}from"socket.io-client";import{createContext as bo}from"react";var Kf=Q("@swarm.ing/pieui:socket-cache",()=>new Map);var mo=Q("@swarm.ing/pieui:context:socket",()=>bo(null)),a=mo;import Mf from"mitt";import{createContext as yo,useCallback as Nf,useContext as pf}from"react";var ko=Q("@swarm.ing/pieui:context:mitt",()=>yo(null));var p=ko;function t(o){return o.wasRecovering===!0&&o.recovered===!1}function e(o){return o.recoverable===!1}import{jsx as So,jsxs as go,Fragment as xo}from"react/jsx-runtime";var jo=({card:o,data:U,children:I,useSocketioSupport:T=!1,useCentrifugeSupport:P=!1,useMittSupport:f=!1,centrifugeChannel:w=void 0,methods:H=void 0,stored:O=void 0,onResync:L=void 0})=>{let $=n(),Z=oo(H);Z.current=H;let F=oo(L);if(F.current=L,$)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:T,centrifuge:P,mitt:f,centrifugeChannel:w}),console.log("[PieCard] Methods:",H?Object.keys(H):"none"),console.log("[PieCard] Has children:",!!I);let B=x(a),z=x(s),X=x(p);if(S(()=>{if(!B||!T||!Z.current||!U.name){if($&&T)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:T,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let K=Object.keys(Z.current??{}).map((D)=>{let q=`pie${D}_${U.name}`;if($)console.log(`[PieCard] Socket.IO registering event: ${q}`);let A=(Y)=>{Z.current?.[D]?.(Y)};return B.on(q,A),[q,A]});return()=>{K.forEach(([D,q])=>{if($)console.log(`[PieCard] Socket.IO unregistering event: ${D}`);B.off(D,q)})}},[B,U.name,T]),S(()=>{if(!z||!P||!w||!U.name){if($&&P)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!z,useCentrifugeSupport:P,hasCentrifugeChannel:!!w,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let K=Object.keys(Z.current??{}).map((D)=>{let q=`pie${D}_${U.name}_${w}`;if($)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let A=z.newSubscription(q,{recoverable:!0,positioned:!0});return A.on("publication",(Y)=>{if($)console.log(`[PieCard] Centrifuge received data on ${q}:`,Y.data);Z.current?.[D]?.(Y.data)}),A.on("subscribed",(Y)=>{if(e(Y))console.warn(`[PieCard] Centrifuge channel ${q} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(t(Y)){if($)console.log(`[PieCard] Centrifuge recovery gap on ${q}; requesting resync`);F.current?.({channel:q,reason:"gap"})}}),A.subscribe(),A});return()=>{K.forEach((D)=>{if($)console.log("[PieCard] Centrifuge unsubscribing from channel");D.unsubscribe(),z.removeSubscription(D)})}},[z,w,U.name,P]),S(()=>{if(!X||!f||!U.name){if($&&f)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!X,useMittSupport:f,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let V=Object.keys(Z.current??{}),K={};return V.forEach((D)=>{let q=`pie${D}_${U.name}`,A=(Y)=>{if($)console.log(`[PieCard] Mitt registering event: ${q}`);Z.current?.[D]?.(Y)};K[q]=A,X.on(q,A)}),()=>{Object.entries(K).forEach(([D,q])=>{if($)console.log(`[PieCard] Mitt unregistering event: ${D}`);X.off(D,q)})}},[X,U.name,f]),$)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return go(xo,{children:[So("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),I]});return I},J=jo;import{lazy as vo}from"react";var N=new Map;function lo(o,U){return U.catch(()=>{if(N.get(o)===U)N.delete(o)}),N.set(o,U),U}function Uo(o,U){return vo(()=>{if(N.has(U))return N.get(U);return lo(U,o().then((I)=>I))})}var fo=Q("@swarm.ing/pieui:component-registry",()=>new Map),ro=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let U={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=Uo(U.loader,o.name),U.isLazy=!0;return U};function G(o){let U=ro(o);return fo.set(U.name,U),U.component}var b=(o)=>{return fo.get(o)};import{useContext as Io,memo as fU}from"react";import{createContext as io}from"react";import{jsx as ho,Fragment as uo}from"react/jsx-runtime";var co=Q("@swarm.ing/pieui:context:fallback",()=>io(ho(uo,{}))),C=co;import{createContext as no}from"react";var so=Q("@swarm.ing/pieui:context:lazyError",()=>no(void 0)),m=so;import{Component as ao,Suspense as to}from"react";import{jsx as UU}from"react/jsx-runtime";var eo=2,oU=400;class M extends ao{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<eo){let U=oU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},U)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return UU(to,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as g}from"react/jsx-runtime";function IU({uiConfig:o,setUiAjaxConfiguration:U}){let I=Io(C),T=Io(m),P=E();if(P)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let f=b(o.card);if(!f?.component){if(P)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return I}if(P)console.log("[UI] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata});let w=f.component,H=g(w,{data:o.data,content:o.content,setUiAjaxConfiguration:U});if(f.isLazy){if(P)console.log("[UI] Rendering lazy component with Suspense:",f.name);return g(M,{name:f.name,fallback:f.fallback?g(f.fallback,{}):I,onError:T,children:H})}if(P)console.log("[UI] Rendering component directly:",f.name);return H}var _=fU(IU);import{useContext as To}from"react";import{createContext as TU}from"react";var PU=Q("@swarm.ing/pieui:context:uiRenderer",()=>TU(null)),W=PU;import{jsx as y}from"react/jsx-runtime";function Po({uiConfig:o,setUiAjaxConfiguration:U}){let I=To(C),T=To(m),P=E();if(P)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let f=b(o.card);if(!f?.component){if(P)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return I}if(P)console.log("[UILoading] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata,hasFallback:!!f.fallback});if(f.fallback){if(P)console.log("[UILoading] Rendering fallback for:",f.name);let O=f.fallback;return y(O,{})}if(P)console.log("[UILoading] No fallback, rendering full component:",f.name);let w=f.component,H=y(W.Provider,{value:Po,children:y(w,{data:o.data,content:o.content,setUiAjaxConfiguration:U})});if(f.isLazy)return y(M,{name:f.name,fallback:I,onError:T,children:H});return H}var wU=Po;import{useContext as zU}from"react";import{jsx as v}from"react/jsx-runtime";var HU=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,sx:P}=o,f=zU(W)??_;return v(J,{card:T,data:o,children:v("div",{style:P,id:T,children:U.map((w,H)=>{return v(f,{uiConfig:w,setUiAjaxConfiguration:I},`children-${H}`)})})})},wo=HU;var ZU=G({name:"SequenceCard",component:wo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as OU}from"react";import{jsx as zo}from"react/jsx-runtime";var LU=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T}=o,P=OU(W)??_;return zo(J,{card:T,data:o,children:U.map((f,w)=>{return zo(P,{uiConfig:f,setUiAjaxConfiguration:I},`children-${w}`)})})},Ho=LU;var AU=G({name:"UnionCard",component:Ho,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as GU,useState as JU}from"react";import FU from"html-react-parser";import{useCallback as k,useEffect as BU,useRef as l,useState as $U}from"react";function qU(){let o=new AudioContext,U=o.createOscillator(),I=U.connect(o.createMediaStreamDestination());U.start();let T=I.stream.getAudioTracks()[0];return T.enabled=!1,T}function r(o=null,U){let[I,T]=$U(!1),P=l(null),f=l(null),w=l(null),H=k(async(Z,F=!0)=>{if(P.current)O();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")T(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))T(!1)},B.ontrack=(A)=>{if(o)o.srcObject=A.streams[0]},F){let A=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(A.getTracks()[0],A)}else{let A=qU();B.addTrack(A)}let z=B.createDataChannel("oai-events");f.current=z,w.current=new Promise((A)=>{z.addEventListener("open",()=>{A()})});let X=await B.createOffer();await B.setLocalDescription(X);let q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${Z}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:q}),P.current=B,await w.current},[o]),O=k(()=>{let Z=f.current;if(Z)Z.close();P.current?.getSenders()?.forEach((F)=>F.track?.stop()),P.current?.close(),T(!1),P.current=null,f.current=null,w.current=null},[o]),L=k((Z)=>{let F=f.current;if(!F){console.error("Data channel is not ready",Z);return}let B=new Date().toLocaleTimeString();if(Z.event_id=Z.event_id||crypto.randomUUID(),F.send(JSON.stringify(Z)),!Z.timestamp)Z.timestamp=B;U?.(Z)},[U,o]),$=k((Z)=>{if(!f.current){console.error("Data channel is not ready");return}let B=()=>{L({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Z}]}}),L({type:"response.create"})};if(w.current)w.current.then(B);else B()},[U,o]);return BU(()=>{let Z=f.current;if(!Z)return;let F=(B)=>{let z=JSON.parse(B.data);if(!z.timestamp)z.timestamp=new Date().toLocaleTimeString();U?.(z)};return Z.addEventListener("message",F),()=>{Z.removeEventListener("message",F)}},[U,o]),{isSessionActive:I,startSession:H,stopSession:O,sendTextMessage:$}}import{jsx as QU}from"react/jsx-runtime";var DU=({data:o})=>{let{html:U,useSocketioSupport:I,useCentrifugeSupport:T,useMittSupport:P,centrifugeChannel:f}=o,[w,H]=JU(U),{isSessionActive:O,startSession:L,sendTextMessage:$}=r(null,(z)=>{if(console.log(z.type,z.type==="response.output_text.delta"&&z.delta),z.type==="response.output_text.delta"&&z.delta)H((X)=>X+z.delta)});return GU(()=>{H(U)},[U]),QU(J,{card:"HTMLEmbedCard",data:o,methods:{update:(z)=>{H(z.value)},generateUsingAI:async(z)=>{try{if(!O&&z.token)await L(z.token,!1);$(z.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(z)=>{if(!O&&z.token)await L(z.token,!1)}},useCentrifugeSupport:T,useSocketioSupport:I,useMittSupport:P,centrifugeChannel:f,children:FU(w)})},Zo=DU;var XU=G({name:"HTMLEmbedCard",component:Zo,metadata:{author:"Swarm.ing"}});import{useEffect as YU,useState as WU}from"react";import{jsx as Oo}from"react/jsx-runtime";var _U=({data:o})=>{let{name:U,value:I,useSocketioSupport:T,useCentrifugeSupport:P,useMittSupport:f,centrifugeChannel:w}=o,[H,O]=WU(I);return YU(()=>{O(I)},[I]),Oo(J,{card:"HiddenCard",data:o,useSocketioSupport:T,useCentrifugeSupport:P,useMittSupport:f,centrifugeChannel:w,methods:{update:({value:L})=>{O(L)}},children:Oo("input",{type:"hidden",id:U,name:U,value:H})})},Lo=_U;var KU=G({name:"HiddenCard",component:Lo,metadata:{author:"Swarm.ing"}});import{useContext as Ao,useEffect as MU}from"react";import{createContext as CU}from"react";var VU=Q("@swarm.ing/pieui:context:navigate",()=>CU(void 0)),R=VU;import{jsx as NU,Fragment as EU}from"react/jsx-runtime";var RU=({data:o})=>{let{url:U}=o,I=Ao(R),T=Ao(C);return MU(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else I?.(U)},[U,I]),NU(EU,{children:T})},Bo=RU;var pU=G({name:"AutoRedirectCard",component:Bo,metadata:{author:"Swarm.ing"}});import{Bounce as bU,Slide as mU,Zoom as yU,Flip as kU}from"react-toastify";import{toast as jU,ToastContainer as xU}from"react-toastify";import{useContext as SU,useMemo as gU,useRef as vU}from"react";import{jsx as i,Fragment as uU}from"react/jsx-runtime";var lU={bounce:bU,slide:mU,zoom:yU,flip:kU},rU=(o)=>{let U={...o,type:o.alertType,transition:o.transition?lU[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};jU(o.message,U)},iU=(o)=>{console.log("Log event",o)},dU=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(T){console.error("[IOEventsCard] Failed to show notification",T)}},I=window.Notification.permission;if(I==="granted"){U();return}if(I==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((T)=>{if(T==="granted")U()})},cU=({data:o})=>{let{useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:T,centrifugeChannel:P}=o,f=SU(R),w=vU(f);w.current=f;let H=gU(()=>({alert:rU,log:iU,push:dU,redirect:(O)=>{if(O.to){let L=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(L))window.location.href=L;else w.current?.(L)}else window.location.reload()},reload:(O)=>{if(O.to){let L=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(L))window.location.href=L;else w.current?.(L)}else window.location.reload()}}),[]);return i(uU,{children:i(J,{card:"IOEventsCard",data:o,useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:T,centrifugeChannel:P,methods:H,children:i(xU,{})})})},$o=cU;var hU=G({name:"IOEventsCard",component:$o,metadata:{author:"Swarm.ing"}});import{useEffect as qo,useState as nU}from"react";import{jsx as Go}from"react/jsx-runtime";var sU=({data:o})=>{let{name:U,key:I,value:T,useSocketioSupport:P,useCentrifugeSupport:f,useMittSupport:w,centrifugeChannel:H}=o,[O,L]=nU(T);return qo(()=>{L(T)},[T]),qo(()=>{if(typeof window>"u")return;sessionStorage.setItem(I,O)},[I,O]),Go(J,{card:"SessionStorageCard",data:o,useSocketioSupport:P,useCentrifugeSupport:f,useMittSupport:w,centrifugeChannel:H,methods:{update:({value:$})=>{L($)},remove:()=>{sessionStorage.removeItem(I),L("")}},children:Go("input",{type:"hidden",id:U,name:U,value:O})})},Jo=sU;var aU=G({name:"SessionStorageCard",component:Jo,metadata:{author:"PieData"}});import{useEffect as Fo,useState as tU}from"react";import{jsx as Do}from"react/jsx-runtime";var eU=({data:o})=>{let{name:U,key:I,value:T,useSocketioSupport:P,useCentrifugeSupport:f,useMittSupport:w,centrifugeChannel:H}=o,[O,L]=tU(T);return Fo(()=>{L(T)},[T]),Fo(()=>{if(typeof window>"u")return;localStorage.setItem(I,O)},[I,O]),Do(J,{card:"DeviceStorageCard",data:o,useSocketioSupport:P,useCentrifugeSupport:f,useMittSupport:w,centrifugeChannel:H,methods:{update:({value:$})=>{L($)},remove:()=>{localStorage.removeItem(I),L("")}},children:Do("input",{type:"hidden",id:U,name:U,value:O})})},Qo=eU;var of=G({name:"DeviceStorageCard",component:Qo,metadata:{author:"PieData"}});import{useCallback as d,useContext as c,useEffect as Uf,useRef as ff,useState as Xo}from"react";import{jsx as Yo}from"react/jsx-runtime";var If=({data:o,content:U})=>{let{useLoader:I,noReturn:T,returnType:P,useSocketioSupport:f,useCentrifugeSupport:w,useMittSupport:H,centrifugeChannel:O}=o,L=c(C),$=c(W)??_,[Z,F]=Xo(!1),[B,z]=Xo(null),X=ff(U),V=c(p),K=d((A)=>{if(A===null)F(!0);else if(F(!1),!T)X.current=A;if(!T)z(A)},[T]),D=d((A)=>{X.current=A.content,z(A.content)},[]),q=d((A)=>{if(A===null)F(!0);else if(F(!1),!T)for(let Y of A)V?.emit(Y.name,Y.data)},[T,V]);if(Uf(()=>{z(U),F(!1)},[U]),!B&&I)return L;return Yo(J,{card:"AjaxGroupCard",data:o,methods:{changeContent:D},useSocketioSupport:f,useCentrifugeSupport:w,useMittSupport:H,centrifugeChannel:O,children:Yo($,{uiConfig:B??X.current,setUiAjaxConfiguration:P==="events"?q:K})})},Wo=If;var Tf=G({name:"AjaxGroupCard",component:Wo,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as _o}from"react";import{jsx as u}from"react/jsx-runtime";var Pf=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,url:P,sx:f}=o,w=_o(R),H=_o(W)??_;return u(J,{card:T,data:o,children:u("div",{style:f,id:T,onClick:(L)=>{if(P)if(L.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(P))window.location.href=P;else w?.(P)},children:u(H,{setUiAjaxConfiguration:I,uiConfig:U})})})},Ko=Pf;var wf=G({name:"BoxCard",component:Ko,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as zf}from"react";import{jsx as h}from"react/jsx-runtime";var Hf=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,sx:P}=o,f=zf(W)??_;return h(J,{card:T,data:o,children:h("div",{style:P,id:T,children:U.map((w,H)=>{return h(f,{uiConfig:w,setUiAjaxConfiguration:I},`children-${H}`)})})})},Co=Hf;var Zf=G({name:"OneOfCard",component:Co,metadata:{author:"Swarm.ing",description:"Different variants"}});export{AU as UnionCard,wU as UILoading,_ as UI,aU as SessionStorageCard,ZU as SequenceCard,J as PieCard,Zf as OneOfCard,hU as IOEventsCard,KU as HiddenCard,XU as HTMLEmbedCard,of as DeviceStorageCard,wf as BoxCard,pU as AutoRedirectCard,Tf as AjaxGroupCard};
2
+ import{useContext as S,useEffect as g,useRef as TU}from"react";import{createContext as NU,useContext as kU}from"react";var b=globalThis,X=(U,f)=>{let T=Symbol.for(U);if(!(T in b))b[T]=f();return b[T]};var yU=X("@swarm.ing/pieui:context:pieConfig",()=>NU(null)),jU=()=>{let U=kU(yU);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U};var N=()=>{let{enableRenderingLog:U}=jU();return U},t=N;import{createContext as mU}from"react";import{Centrifuge as XI}from"centrifuge";var YI=X("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var pU=X("@swarm.ing/pieui:context:centrifuge",()=>mU(null)),e=pU;import{io as KI}from"socket.io-client";import{createContext as xU}from"react";var RI=X("@swarm.ing/pieui:socket-cache",()=>new Map);var bU=X("@swarm.ing/pieui:context:socket",()=>xU(null)),UU=bU;import kI from"mitt";import{createContext as SU,useCallback as mI,useContext as pI}from"react";var gU=X("@swarm.ing/pieui:context:mitt",()=>SU(null));var y=gU;function fU(U){return U.wasRecovering===!0&&U.recovered===!1}function IU(U){return U.recoverable===!1}function oU(U,f,T){let o=U.getSubscription(f);if(o)return{subscription:o,createdHere:!1};return{subscription:U.newSubscription(f,T),createdHere:!0}}import{jsx as dU,jsxs as rU,Fragment as lU}from"react/jsx-runtime";var vU=({card:U,data:f,children:T,useSocketioSupport:o=!1,useCentrifugeSupport:z=!1,useMittSupport:I=!1,centrifugeChannel:Z=void 0,methods:O=void 0,stored:B=void 0,onResync:H=void 0})=>{let q=t(),P=TU(O);P.current=O;let Q=TU(H);if(Q.current=H,q)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",f),console.log("[PieCard] Component name:",f?.name),console.log("[PieCard] Real-time support:",{socketio:o,centrifuge:z,mitt:I,centrifugeChannel:Z}),console.log("[PieCard] Methods:",O?Object.keys(O):"none"),console.log("[PieCard] Has children:",!!T);let $=S(UU),L=S(e),w=S(y);if(g(()=>{if(!$||!o||!P.current||!f.name){if(q&&o)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!$,useSocketioSupport:o,hasMethods:!!P.current,hasDataName:!!f?.name});return}let K=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}`;if(q)console.log(`[PieCard] Socket.IO registering event: ${G}`);let A=(_)=>{P.current?.[J]?.(_)};return $.on(G,A),[G,A]});return()=>{K.forEach(([J,G])=>{if(q)console.log(`[PieCard] Socket.IO unregistering event: ${J}`);$.off(J,G)})}},[$,f.name,o]),g(()=>{if(!L||!z||!Z||!f.name){if(q&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!P.current,hasDataName:!!f?.name});return}let K=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}_${Z}`;if(q)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let{subscription:A,createdHere:_}=oU(L,G,{recoverable:!0,positioned:!0}),s=(E)=>{if(q)console.log(`[PieCard] Centrifuge received data on ${G}:`,E.data);P.current?.[J]?.(E.data)},a=(E)=>{if(IU(E))console.warn(`[PieCard] Centrifuge channel ${G} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(fU(E)){if(q)console.log(`[PieCard] Centrifuge recovery gap on ${G}; requesting resync`);Q.current?.({channel:G,reason:"gap"})}};return A.on("publication",s),A.on("subscribed",a),A.subscribe(),{subscription:A,createdHere:_,onPublication:s,onSubscribed:a}});return()=>{K.forEach(({subscription:J,createdHere:G,onPublication:A,onSubscribed:_})=>{if(q)console.log("[PieCard] Centrifuge unsubscribing from channel");if(J.off("publication",A),J.off("subscribed",_),G)J.unsubscribe(),L.removeSubscription(J)})}},[L,Z,f.name,z]),g(()=>{if(!w||!I||!f.name){if(q&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:I,hasMethods:!!P.current,hasDataName:!!f?.name});return}let V=Object.keys(P.current??{}),K={};return V.forEach((J)=>{let G=`pie${J}_${f.name}`,A=(_)=>{if(q)console.log(`[PieCard] Mitt registering event: ${G}`);P.current?.[J]?.(_)};K[G]=A,w.on(G,A)}),()=>{Object.entries(K).forEach(([J,G])=>{if(q)console.log(`[PieCard] Mitt unregistering event: ${J}`);w.off(J,G)})}},[w,f.name,I]),q)console.log("[PieCard] Rendering complete, returning children");if(B!==void 0)return rU(lU,{children:[dU("input",{type:"hidden",name:f.name,value:JSON.stringify(B)}),T]});return T},D=vU;import{lazy as uU}from"react";var k=new Map;function cU(U,f){return f.catch(()=>{if(k.get(U)===f)k.delete(U)}),k.set(U,f),f}function zU(U,f){return uU(()=>{if(k.has(f))return k.get(f);return cU(f,U().then((T)=>T))})}var ZU=X("@swarm.ing/pieui:component-registry",()=>new Map),hU=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let f={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!f.component&&f.loader)f.component=zU(f.loader,U.name),f.isLazy=!0;return f};function F(U){let f=hU(U);return ZU.set(f.name,f),f.component}var j=(U)=>{return ZU.get(U)};import{useContext as LU,memo as zf}from"react";import{createContext as iU}from"react";import{jsx as aU,Fragment as sU}from"react/jsx-runtime";var nU=X("@swarm.ing/pieui:context:fallback",()=>iU(aU(sU,{}))),C=nU;import{createContext as tU}from"react";var eU=X("@swarm.ing/pieui:context:lazyError",()=>tU(void 0)),m=eU;import{Component as Uf,Suspense as ff}from"react";import{jsx as Tf}from"react/jsx-runtime";var If=2,of=400;class M extends Uf{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<If){let f=of*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((T)=>({failed:!1,attempt:T.attempt+1}))},f)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return Tf(ff,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as v}from"react/jsx-runtime";function Zf({uiConfig:U,setUiAjaxConfiguration:f}){let T=LU(C),o=LU(m),z=N();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!f);let I=j(U.card);if(!I?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return T}if(z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let Z=I.component,O=v(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f});if(I.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return v(M,{name:I.name,fallback:I.fallback?v(I.fallback,{}):T,onError:o,children:O})}if(z)console.log("[UI] Rendering component directly:",I.name);return O}var W=zf(Zf);import{useContext as OU}from"react";import{createContext as Lf}from"react";var Of=X("@swarm.ing/pieui:context:uiRenderer",()=>Lf(null)),Y=Of;import{jsx as p}from"react/jsx-runtime";function PU({uiConfig:U,setUiAjaxConfiguration:f}){let T=OU(C),o=OU(m),z=N();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!f);let I=j(U.card);if(!I?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return T}if(z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(z)console.log("[UILoading] Rendering fallback for:",I.name);let B=I.fallback;return p(B,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let Z=I.component,O=p(Y.Provider,{value:PU,children:p(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f})});if(I.isLazy)return p(M,{name:I.name,fallback:T,onError:o,children:O});return O}var Pf=PU;import{useContext as Af}from"react";import{jsx as l}from"react/jsx-runtime";var Bf=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o,sx:z}=U,I=Af(Y)??W;return l(D,{card:o,data:U,children:l("div",{style:z,id:o,children:f.map((Z,O)=>{return l(I,{uiConfig:Z,setUiAjaxConfiguration:T},`children-${O}`)})})})},AU=Bf;var Hf=F({name:"SequenceCard",component:AU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as $f}from"react";import{jsx as BU}from"react/jsx-runtime";var qf=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o}=U,z=$f(Y)??W;return BU(D,{card:o,data:U,children:f.map((I,Z)=>{return BU(z,{uiConfig:I,setUiAjaxConfiguration:T},`children-${Z}`)})})},HU=qf;var Gf=F({name:"UnionCard",component:HU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as Qf,useState as Xf}from"react";import wf from"html-react-parser";import{useCallback as x,useEffect as Jf,useRef as d,useState as Ff}from"react";function Df(){let U=new AudioContext,f=U.createOscillator(),T=f.connect(U.createMediaStreamDestination());f.start();let o=T.stream.getAudioTracks()[0];return o.enabled=!1,o}function r(U=null,f){let[T,o]=Ff(!1),z=d(null),I=d(null),Z=d(null),O=x(async(P,Q=!0)=>{if(z.current)B();let $=new RTCPeerConnection;if($.onconnectionstatechange=()=>{if($.connectionState==="connected")o(!0);else if(["disconnected","failed","closed"].includes($.connectionState))o(!1)},$.ontrack=(A)=>{if(U)U.srcObject=A.streams[0]},Q){let A=await navigator.mediaDevices.getUserMedia({audio:!0});$.addTrack(A.getTracks()[0],A)}else{let A=Df();$.addTrack(A)}let L=$.createDataChannel("oai-events");I.current=L,Z.current=new Promise((A)=>{L.addEventListener("open",()=>{A()})});let w=await $.createOffer();await $.setLocalDescription(w);let G=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:w.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await $.setRemoteDescription({type:"answer",sdp:G}),z.current=$,await Z.current},[U]),B=x(()=>{let P=I.current;if(P)P.close();z.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),z.current?.close(),o(!1),z.current=null,I.current=null,Z.current=null},[U]),H=x((P)=>{let Q=I.current;if(!Q){console.error("Data channel is not ready",P);return}let $=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),Q.send(JSON.stringify(P)),!P.timestamp)P.timestamp=$;f?.(P)},[f,U]),q=x((P)=>{if(!I.current){console.error("Data channel is not ready");return}let $=()=>{H({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),H({type:"response.create"})};if(Z.current)Z.current.then($);else $()},[f,U]);return Jf(()=>{let P=I.current;if(!P)return;let Q=($)=>{let L=JSON.parse($.data);if(!L.timestamp)L.timestamp=new Date().toLocaleTimeString();f?.(L)};return P.addEventListener("message",Q),()=>{P.removeEventListener("message",Q)}},[f,U]),{isSessionActive:T,startSession:O,stopSession:B,sendTextMessage:q}}import{jsx as Wf}from"react/jsx-runtime";var Yf=({data:U})=>{let{html:f,useSocketioSupport:T,useCentrifugeSupport:o,useMittSupport:z,centrifugeChannel:I}=U,[Z,O]=Xf(f),{isSessionActive:B,startSession:H,sendTextMessage:q}=r(null,(L)=>{if(console.log(L.type,L.type==="response.output_text.delta"&&L.delta),L.type==="response.output_text.delta"&&L.delta)O((w)=>w+L.delta)});return Qf(()=>{O(f)},[f]),Wf(D,{card:"HTMLEmbedCard",data:U,methods:{update:(L)=>{O(L.value)},generateUsingAI:async(L)=>{try{if(!B&&L.token)await H(L.token,!1);q(L.prompt)}catch(w){console.error("Failed to generate using AI",w)}},initializeAI:async(L)=>{if(!B&&L.token)await H(L.token,!1)}},useCentrifugeSupport:o,useSocketioSupport:T,useMittSupport:z,centrifugeChannel:I,children:wf(Z)})},$U=Yf;var _f=F({name:"HTMLEmbedCard",component:$U,metadata:{author:"Swarm.ing"}});import{useEffect as Kf,useState as Cf}from"react";import{jsx as qU}from"react/jsx-runtime";var Vf=({data:U})=>{let{name:f,value:T,useSocketioSupport:o,useCentrifugeSupport:z,useMittSupport:I,centrifugeChannel:Z}=U,[O,B]=Cf(T);return Kf(()=>{B(T)},[T]),qU(D,{card:"HiddenCard",data:U,useSocketioSupport:o,useCentrifugeSupport:z,useMittSupport:I,centrifugeChannel:Z,methods:{update:({value:H})=>{B(H)}},children:qU("input",{type:"hidden",id:f,name:f,value:O})})},GU=Vf;var Mf=F({name:"HiddenCard",component:GU,metadata:{author:"Swarm.ing"}});import{useContext as JU,useEffect as Nf}from"react";import{createContext as Rf}from"react";var Ef=X("@swarm.ing/pieui:context:navigate",()=>Rf(void 0)),R=Ef;import{jsx as jf,Fragment as yf}from"react/jsx-runtime";var kf=({data:U})=>{let{url:f}=U,T=JU(R),o=JU(C);return Nf(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(f))window.location.href=f;else T?.(f)},[f,T]),jf(yf,{children:o})},FU=kf;var mf=F({name:"AutoRedirectCard",component:FU,metadata:{author:"Swarm.ing"}});import{Bounce as pf,Slide as xf,Zoom as bf,Flip as Sf}from"react-toastify";import{toast as gf,ToastContainer as vf}from"react-toastify";import{useContext as lf,useMemo as df,useRef as rf}from"react";import{jsx as u,Fragment as af}from"react/jsx-runtime";var uf={bounce:pf,slide:xf,zoom:bf,flip:Sf},cf=(U)=>{let f={...U,type:U.alertType,transition:U.transition?uf[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};gf(U.message,f)},hf=(U)=>{console.log("Log event",U)},nf=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let f=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(o){console.error("[IOEventsCard] Failed to show notification",o)}},T=window.Notification.permission;if(T==="granted"){f();return}if(T==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((o)=>{if(o==="granted")f()})},sf=({data:U})=>{let{useCentrifugeSupport:f,useSocketioSupport:T,useMittSupport:o,centrifugeChannel:z}=U,I=lf(R),Z=rf(I);Z.current=I;let O=df(()=>({alert:cf,log:hf,push:nf,redirect:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()},reload:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()}}),[]);return u(af,{children:u(D,{card:"IOEventsCard",data:U,useCentrifugeSupport:f,useSocketioSupport:T,useMittSupport:o,centrifugeChannel:z,methods:O,children:u(vf,{})})})},DU=sf;var tf=F({name:"IOEventsCard",component:DU,metadata:{author:"Swarm.ing"}});import{useEffect as QU,useState as ef}from"react";import{jsx as XU}from"react/jsx-runtime";var UI=({data:U})=>{let{name:f,key:T,value:o,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=ef(o);return QU(()=>{H(o)},[o]),QU(()=>{if(typeof window>"u")return;sessionStorage.setItem(T,B)},[T,B]),XU(D,{card:"SessionStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{sessionStorage.removeItem(T),H("")}},children:XU("input",{type:"hidden",id:f,name:f,value:B})})},wU=UI;var fI=F({name:"SessionStorageCard",component:wU,metadata:{author:"PieData"}});import{useEffect as YU,useState as II}from"react";import{jsx as WU}from"react/jsx-runtime";var oI=({data:U})=>{let{name:f,key:T,value:o,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=II(o);return YU(()=>{H(o)},[o]),YU(()=>{if(typeof window>"u")return;localStorage.setItem(T,B)},[T,B]),WU(D,{card:"DeviceStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{localStorage.removeItem(T),H("")}},children:WU("input",{type:"hidden",id:f,name:f,value:B})})},_U=oI;var TI=F({name:"DeviceStorageCard",component:_U,metadata:{author:"PieData"}});import{useCallback as c,useContext as h,useEffect as zI,useRef as ZI,useState as KU}from"react";import{jsx as CU}from"react/jsx-runtime";var LI=({data:U,content:f})=>{let{useLoader:T,noReturn:o,returnType:z,useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B}=U,H=h(C),q=h(Y)??W,[P,Q]=KU(!1),[$,L]=KU(null),w=ZI(f),V=h(y),K=c((A)=>{if(A===null)Q(!0);else if(Q(!1),!o)w.current=A;if(!o)L(A)},[o]),J=c((A)=>{w.current=A.content,L(A.content)},[]),G=c((A)=>{if(A===null)Q(!0);else if(Q(!1),!o)for(let _ of A)V?.emit(_.name,_.data)},[o,V]);if(zI(()=>{L(f),Q(!1)},[f]),!$&&T)return H;return CU(D,{card:"AjaxGroupCard",data:U,methods:{changeContent:J},useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B,children:CU(q,{uiConfig:$??w.current,setUiAjaxConfiguration:z==="events"?G:K})})},VU=LI;var OI=F({name:"AjaxGroupCard",component:VU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as MU}from"react";import{jsx as i}from"react/jsx-runtime";var PI=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o,url:z,sx:I}=U,Z=MU(R),O=MU(Y)??W;return i(D,{card:o,data:U,children:i("div",{style:I,id:o,onClick:(H)=>{if(z)if(H.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else Z?.(z)},children:i(O,{setUiAjaxConfiguration:T,uiConfig:f})})})},RU=PI;var AI=F({name:"BoxCard",component:RU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as BI}from"react";import{jsx as n}from"react/jsx-runtime";var HI=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o,sx:z}=U,I=BI(Y)??W;return n(D,{card:o,data:U,children:n("div",{style:z,id:o,children:f.map((Z,O)=>{return n(I,{uiConfig:Z,setUiAjaxConfiguration:T},`children-${O}`)})})})},EU=HI;var $I=F({name:"OneOfCard",component:EU,metadata:{author:"Swarm.ing",description:"Different variants"}});export{Gf as UnionCard,Pf as UILoading,W as UI,fI as SessionStorageCard,Hf as SequenceCard,D as PieCard,$I as OneOfCard,tf as IOEventsCard,Mf as HiddenCard,_f as HTMLEmbedCard,TI as DeviceStorageCard,AI as BoxCard,mf as AutoRedirectCard,OI as AjaxGroupCard};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var OU=Object.create;var{getPrototypeOf:LU,defineProperty:j,getOwnPropertyNames:Go,getOwnPropertyDescriptor:AU}=Object,Jo=Object.prototype.hasOwnProperty;var Fo=(o,U,f)=>{f=o!=null?OU(LU(o)):{};let I=U||!o||!o.__esModule?j(f,"default",{value:o,enumerable:!0}):f;for(let P of Go(o))if(!Jo.call(I,P))j(I,P,{get:()=>o[P],enumerable:!0});return I},qo=new WeakMap,BU=(o)=>{var U=qo.get(o),f;if(U)return U;if(U=j({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")Go(o).map((I)=>!Jo.call(U,I)&&j(U,I,{get:()=>o[I],enumerable:!(f=AU(o,I))||f.enumerable}));return qo.set(o,U),U};var $U=(o,U)=>{for(var f in U)j(o,f,{get:U[f],enumerable:!0,configurable:!0,set:(I)=>U[f]=()=>I})};var nU={};$U(nU,{UnionCard:()=>go,UILoading:()=>mo,UI:()=>K,SessionStorageCard:()=>oU,SequenceCard:()=>jo,PieCard:()=>G,OneOfCard:()=>ZU,IOEventsCard:()=>to,HiddenCard:()=>uo,HTMLEmbedCard:()=>io,DeviceStorageCard:()=>fU,BoxCard:()=>wU,AutoRedirectCard:()=>so,AjaxGroupCard:()=>TU});module.exports=BU(nU);var V=require("react");var d=require("react");var wo=globalThis,Q=(o,U)=>{let f=Symbol.for(o);if(!(f in wo))wo[f]=U();return wo[f]};var qU=Q("@swarm.ing/pieui:context:pieConfig",()=>d.createContext(null)),GU=()=>{let o=d.useContext(qU);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var x=()=>{let{enableRenderingLog:o}=GU();return o},Do=x;var Qo=require("react"),JU=require("centrifuge");var Uf=Q("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var FU=Q("@swarm.ing/pieui:context:centrifuge",()=>Qo.createContext(null)),Xo=FU;var DU=require("socket.io-client"),Yo=require("react");var Pf=Q("@swarm.ing/pieui:socket-cache",()=>new Map);var QU=Q("@swarm.ing/pieui:context:socket",()=>Yo.createContext(null)),Wo=QU;var XU=Fo(require("mitt")),c=require("react");var YU=Q("@swarm.ing/pieui:context:mitt",()=>c.createContext(null));var u=YU;function _o(o){return o.wasRecovering===!0&&o.recovered===!1}function Ko(o){return o.recoverable===!1}var p=require("react/jsx-runtime"),WU=({card:o,data:U,children:f,useSocketioSupport:I=!1,useCentrifugeSupport:P=!1,useMittSupport:T=!1,centrifugeChannel:w=void 0,methods:H=void 0,stored:O=void 0,onResync:L=void 0})=>{let $=Do(),Z=V.useRef(H);Z.current=H;let F=V.useRef(L);if(F.current=L,$)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:P,mitt:T,centrifugeChannel:w}),console.log("[PieCard] Methods:",H?Object.keys(H):"none"),console.log("[PieCard] Has children:",!!f);let B=V.useContext(Wo),z=V.useContext(Xo),X=V.useContext(u);if(V.useEffect(()=>{if(!B||!I||!Z.current||!U.name){if($&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:I,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let M=Object.keys(Z.current??{}).map((D)=>{let q=`pie${D}_${U.name}`;if($)console.log(`[PieCard] Socket.IO registering event: ${q}`);let A=(_)=>{Z.current?.[D]?.(_)};return B.on(q,A),[q,A]});return()=>{M.forEach(([D,q])=>{if($)console.log(`[PieCard] Socket.IO unregistering event: ${D}`);B.off(D,q)})}},[B,U.name,I]),V.useEffect(()=>{if(!z||!P||!w||!U.name){if($&&P)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!z,useCentrifugeSupport:P,hasCentrifugeChannel:!!w,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let M=Object.keys(Z.current??{}).map((D)=>{let q=`pie${D}_${U.name}_${w}`;if($)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let A=z.newSubscription(q,{recoverable:!0,positioned:!0});return A.on("publication",(_)=>{if($)console.log(`[PieCard] Centrifuge received data on ${q}:`,_.data);Z.current?.[D]?.(_.data)}),A.on("subscribed",(_)=>{if(Ko(_))console.warn(`[PieCard] Centrifuge channel ${q} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(_o(_)){if($)console.log(`[PieCard] Centrifuge recovery gap on ${q}; requesting resync`);F.current?.({channel:q,reason:"gap"})}}),A.subscribe(),A});return()=>{M.forEach((D)=>{if($)console.log("[PieCard] Centrifuge unsubscribing from channel");D.unsubscribe(),z.removeSubscription(D)})}},[z,w,U.name,P]),V.useEffect(()=>{if(!X||!T||!U.name){if($&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!X,useMittSupport:T,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let N=Object.keys(Z.current??{}),M={};return N.forEach((D)=>{let q=`pie${D}_${U.name}`,A=(_)=>{if($)console.log(`[PieCard] Mitt registering event: ${q}`);Z.current?.[D]?.(_)};M[q]=A,X.on(q,A)}),()=>{Object.entries(M).forEach(([D,q])=>{if($)console.log(`[PieCard] Mitt unregistering event: ${D}`);X.off(D,q)})}},[X,U.name,T]),$)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return p.jsxs(p.Fragment,{children:[p.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),f]});return f},G=WU;var Co=require("react"),S=new Map;function _U(o,U){return U.catch(()=>{if(S.get(o)===U)S.delete(o)}),S.set(o,U),U}function Vo(o,U){return Co.lazy(()=>{if(S.has(U))return S.get(U);return _U(U,o().then((f)=>f))})}var Mo=Q("@swarm.ing/pieui:component-registry",()=>new Map),KU=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let U={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=Vo(U.loader,o.name),U.isLazy=!0;return U};function J(o){let U=KU(o);return Mo.set(U.name,U),U.component}var h=(o)=>{return Mo.get(o)};var g=require("react");var Ro=require("react");var n=require("react/jsx-runtime"),CU=Q("@swarm.ing/pieui:context:fallback",()=>Ro.createContext(n.jsx(n.Fragment,{}))),R=CU;var Eo=require("react");var VU=Q("@swarm.ing/pieui:context:lazyError",()=>Eo.createContext(void 0)),s=VU;var a=require("react"),No=require("react/jsx-runtime"),MU=2,RU=400;class b extends a.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<MU){let U=RU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((f)=>({failed:!1,attempt:f.attempt+1}))},U)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return No.jsx(a.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var t=require("react/jsx-runtime");function EU({uiConfig:o,setUiAjaxConfiguration:U}){let f=g.useContext(R),I=g.useContext(s),P=x();if(P)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let T=h(o.card);if(!T?.component){if(P)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return f}if(P)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let w=T.component,H=t.jsx(w,{data:o.data,content:o.content,setUiAjaxConfiguration:U});if(T.isLazy){if(P)console.log("[UI] Rendering lazy component with Suspense:",T.name);return t.jsx(b,{name:T.name,fallback:T.fallback?t.jsx(T.fallback,{}):f,onError:I,children:H})}if(P)console.log("[UI] Rendering component directly:",T.name);return H}var K=g.memo(EU);var zo=require("react");var po=require("react");var NU=Q("@swarm.ing/pieui:context:uiRenderer",()=>po.createContext(null)),C=NU;var v=require("react/jsx-runtime");function bo({uiConfig:o,setUiAjaxConfiguration:U}){let f=zo.useContext(R),I=zo.useContext(s),P=x();if(P)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let T=h(o.card);if(!T?.component){if(P)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return f}if(P)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(P)console.log("[UILoading] Rendering fallback for:",T.name);let O=T.fallback;return v.jsx(O,{})}if(P)console.log("[UILoading] No fallback, rendering full component:",T.name);let w=T.component,H=v.jsx(C.Provider,{value:bo,children:v.jsx(w,{data:o.data,content:o.content,setUiAjaxConfiguration:U})});if(T.isLazy)return v.jsx(b,{name:T.name,fallback:f,onError:I,children:H});return H}var mo=bo;var yo=require("react");var e=require("react/jsx-runtime"),pU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,sx:P}=o,T=yo.useContext(C)??K;return e.jsx(G,{card:I,data:o,children:e.jsx("div",{style:P,id:I,children:U.map((w,H)=>{return e.jsx(T,{uiConfig:w,setUiAjaxConfiguration:f},`children-${H}`)})})})},ko=pU;var jo=J({name:"SequenceCard",component:ko,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var xo=require("react");var Ho=require("react/jsx-runtime"),bU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I}=o,P=xo.useContext(C)??K;return Ho.jsx(G,{card:I,data:o,children:U.map((T,w)=>{return Ho.jsx(P,{uiConfig:T,setUiAjaxConfiguration:f},`children-${w}`)})})},So=bU;var go=J({name:"UnionCard",component:So,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var oo=require("react"),vo=Fo(require("html-react-parser"));var W=require("react");function mU(){let o=new AudioContext,U=o.createOscillator(),f=U.connect(o.createMediaStreamDestination());U.start();let I=f.stream.getAudioTracks()[0];return I.enabled=!1,I}function Zo(o=null,U){let[f,I]=W.useState(!1),P=W.useRef(null),T=W.useRef(null),w=W.useRef(null),H=W.useCallback(async(Z,F=!0)=>{if(P.current)O();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))I(!1)},B.ontrack=(A)=>{if(o)o.srcObject=A.streams[0]},F){let A=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(A.getTracks()[0],A)}else{let A=mU();B.addTrack(A)}let z=B.createDataChannel("oai-events");T.current=z,w.current=new Promise((A)=>{z.addEventListener("open",()=>{A()})});let X=await B.createOffer();await B.setLocalDescription(X);let q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${Z}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:q}),P.current=B,await w.current},[o]),O=W.useCallback(()=>{let Z=T.current;if(Z)Z.close();P.current?.getSenders()?.forEach((F)=>F.track?.stop()),P.current?.close(),I(!1),P.current=null,T.current=null,w.current=null},[o]),L=W.useCallback((Z)=>{let F=T.current;if(!F){console.error("Data channel is not ready",Z);return}let B=new Date().toLocaleTimeString();if(Z.event_id=Z.event_id||crypto.randomUUID(),F.send(JSON.stringify(Z)),!Z.timestamp)Z.timestamp=B;U?.(Z)},[U,o]),$=W.useCallback((Z)=>{if(!T.current){console.error("Data channel is not ready");return}let B=()=>{L({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Z}]}}),L({type:"response.create"})};if(w.current)w.current.then(B);else B()},[U,o]);return W.useEffect(()=>{let Z=T.current;if(!Z)return;let F=(B)=>{let z=JSON.parse(B.data);if(!z.timestamp)z.timestamp=new Date().toLocaleTimeString();U?.(z)};return Z.addEventListener("message",F),()=>{Z.removeEventListener("message",F)}},[U,o]),{isSessionActive:f,startSession:H,stopSession:O,sendTextMessage:$}}var ro=require("react/jsx-runtime"),yU=({data:o})=>{let{html:U,useSocketioSupport:f,useCentrifugeSupport:I,useMittSupport:P,centrifugeChannel:T}=o,[w,H]=oo.useState(U),{isSessionActive:O,startSession:L,sendTextMessage:$}=Zo(null,(z)=>{if(console.log(z.type,z.type==="response.output_text.delta"&&z.delta),z.type==="response.output_text.delta"&&z.delta)H((X)=>X+z.delta)});return oo.useEffect(()=>{H(U)},[U]),ro.jsx(G,{card:"HTMLEmbedCard",data:o,methods:{update:(z)=>{H(z.value)},generateUsingAI:async(z)=>{try{if(!O&&z.token)await L(z.token,!1);$(z.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(z)=>{if(!O&&z.token)await L(z.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:f,useMittSupport:P,centrifugeChannel:T,children:vo.default(w)})},lo=yU;var io=J({name:"HTMLEmbedCard",component:lo,metadata:{author:"Swarm.ing"}});var Uo=require("react");var Oo=require("react/jsx-runtime"),kU=({data:o})=>{let{name:U,value:f,useSocketioSupport:I,useCentrifugeSupport:P,useMittSupport:T,centrifugeChannel:w}=o,[H,O]=Uo.useState(f);return Uo.useEffect(()=>{O(f)},[f]),Oo.jsx(G,{card:"HiddenCard",data:o,useSocketioSupport:I,useCentrifugeSupport:P,useMittSupport:T,centrifugeChannel:w,methods:{update:({value:L})=>{O(L)}},children:Oo.jsx("input",{type:"hidden",id:U,name:U,value:H})})},co=kU;var uo=J({name:"HiddenCard",component:co,metadata:{author:"Swarm.ing"}});var l=require("react");var ho=require("react");var jU=Q("@swarm.ing/pieui:context:navigate",()=>ho.createContext(void 0)),m=jU;var fo=require("react/jsx-runtime"),xU=({data:o})=>{let{url:U}=o,f=l.useContext(m),I=l.useContext(R);return l.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else f?.(U)},[U,f]),fo.jsx(fo.Fragment,{children:I})},no=xU;var so=J({name:"AutoRedirectCard",component:no,metadata:{author:"Swarm.ing"}});var E=require("react-toastify"),Io=require("react-toastify");var k=require("react");var y=require("react/jsx-runtime"),SU={bounce:E.Bounce,slide:E.Slide,zoom:E.Zoom,flip:E.Flip},gU=(o)=>{let U={...o,type:o.alertType,transition:o.transition?SU[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};Io.toast(o.message,U)},vU=(o)=>{console.log("Log event",o)},lU=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(I){console.error("[IOEventsCard] Failed to show notification",I)}},f=window.Notification.permission;if(f==="granted"){U();return}if(f==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")U()})},rU=({data:o})=>{let{useCentrifugeSupport:U,useSocketioSupport:f,useMittSupport:I,centrifugeChannel:P}=o,T=k.useContext(m),w=k.useRef(T);w.current=T;let H=k.useMemo(()=>({alert:gU,log:vU,push:lU,redirect:(O)=>{if(O.to){let L=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(L))window.location.href=L;else w.current?.(L)}else window.location.reload()},reload:(O)=>{if(O.to){let L=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(L))window.location.href=L;else w.current?.(L)}else window.location.reload()}}),[]);return y.jsx(y.Fragment,{children:y.jsx(G,{card:"IOEventsCard",data:o,useCentrifugeSupport:U,useSocketioSupport:f,useMittSupport:I,centrifugeChannel:P,methods:H,children:y.jsx(Io.ToastContainer,{})})})},ao=rU;var to=J({name:"IOEventsCard",component:ao,metadata:{author:"Swarm.ing"}});var r=require("react");var Lo=require("react/jsx-runtime"),iU=({data:o})=>{let{name:U,key:f,value:I,useSocketioSupport:P,useCentrifugeSupport:T,useMittSupport:w,centrifugeChannel:H}=o,[O,L]=r.useState(I);return r.useEffect(()=>{L(I)},[I]),r.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(f,O)},[f,O]),Lo.jsx(G,{card:"SessionStorageCard",data:o,useSocketioSupport:P,useCentrifugeSupport:T,useMittSupport:w,centrifugeChannel:H,methods:{update:({value:$})=>{L($)},remove:()=>{sessionStorage.removeItem(f),L("")}},children:Lo.jsx("input",{type:"hidden",id:U,name:U,value:O})})},eo=iU;var oU=J({name:"SessionStorageCard",component:eo,metadata:{author:"PieData"}});var i=require("react");var Ao=require("react/jsx-runtime"),dU=({data:o})=>{let{name:U,key:f,value:I,useSocketioSupport:P,useCentrifugeSupport:T,useMittSupport:w,centrifugeChannel:H}=o,[O,L]=i.useState(I);return i.useEffect(()=>{L(I)},[I]),i.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(f,O)},[f,O]),Ao.jsx(G,{card:"DeviceStorageCard",data:o,useSocketioSupport:P,useCentrifugeSupport:T,useMittSupport:w,centrifugeChannel:H,methods:{update:({value:$})=>{L($)},remove:()=>{localStorage.removeItem(f),L("")}},children:Ao.jsx("input",{type:"hidden",id:U,name:U,value:O})})},UU=dU;var fU=J({name:"DeviceStorageCard",component:UU,metadata:{author:"PieData"}});var Y=require("react");var Bo=require("react/jsx-runtime"),cU=({data:o,content:U})=>{let{useLoader:f,noReturn:I,returnType:P,useSocketioSupport:T,useCentrifugeSupport:w,useMittSupport:H,centrifugeChannel:O}=o,L=Y.useContext(R),$=Y.useContext(C)??K,[Z,F]=Y.useState(!1),[B,z]=Y.useState(null),X=Y.useRef(U),N=Y.useContext(u),M=Y.useCallback((A)=>{if(A===null)F(!0);else if(F(!1),!I)X.current=A;if(!I)z(A)},[I]),D=Y.useCallback((A)=>{X.current=A.content,z(A.content)},[]),q=Y.useCallback((A)=>{if(A===null)F(!0);else if(F(!1),!I)for(let _ of A)N?.emit(_.name,_.data)},[I,N]);if(Y.useEffect(()=>{z(U),F(!1)},[U]),!B&&f)return L;return Bo.jsx(G,{card:"AjaxGroupCard",data:o,methods:{changeContent:D},useSocketioSupport:T,useCentrifugeSupport:w,useMittSupport:H,centrifugeChannel:O,children:Bo.jsx($,{uiConfig:B??X.current,setUiAjaxConfiguration:P==="events"?q:M})})},IU=cU;var TU=J({name:"AjaxGroupCard",component:IU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var $o=require("react");var To=require("react/jsx-runtime"),uU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,url:P,sx:T}=o,w=$o.useContext(m),H=$o.useContext(C)??K;return To.jsx(G,{card:I,data:o,children:To.jsx("div",{style:T,id:I,onClick:(L)=>{if(P)if(L.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(P))window.location.href=P;else w?.(P)},children:To.jsx(H,{setUiAjaxConfiguration:f,uiConfig:U})})})},PU=uU;var wU=J({name:"BoxCard",component:PU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var zU=require("react");var Po=require("react/jsx-runtime"),hU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,sx:P}=o,T=zU.useContext(C)??K;return Po.jsx(G,{card:I,data:o,children:Po.jsx("div",{style:P,id:I,children:U.map((w,H)=>{return Po.jsx(T,{uiConfig:w,setUiAjaxConfiguration:f},`children-${H}`)})})})},HU=hU;var ZU=J({name:"OneOfCard",component:HU,metadata:{author:"Swarm.ing",description:"Different variants"}});
2
+ var $f=Object.create;var{getPrototypeOf:qf,defineProperty:b,getOwnPropertyNames:QU,getOwnPropertyDescriptor:Gf}=Object,XU=Object.prototype.hasOwnProperty;var wU=(U,f,o)=>{o=U!=null?$f(qf(U)):{};let I=f||!U||!U.__esModule?b(o,"default",{value:U,enumerable:!0}):o;for(let z of QU(U))if(!XU.call(I,z))b(I,z,{get:()=>U[z],enumerable:!0});return I},DU=new WeakMap,Jf=(U)=>{var f=DU.get(U),o;if(f)return f;if(f=b({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")QU(U).map((I)=>!XU.call(f,I)&&b(f,I,{get:()=>U[I],enumerable:!(o=Gf(U,I))||o.enumerable}));return DU.set(U,f),f};var Ff=(U,f)=>{for(var o in f)b(U,o,{get:f[o],enumerable:!0,configurable:!0,set:(I)=>f[o]=()=>I})};var ef={};Ff(ef,{UnionCard:()=>rU,UILoading:()=>bU,UI:()=>_,SessionStorageCard:()=>of,SequenceCard:()=>vU,PieCard:()=>F,OneOfCard:()=>Hf,IOEventsCard:()=>ff,HiddenCard:()=>sU,HTMLEmbedCard:()=>iU,DeviceStorageCard:()=>zf,BoxCard:()=>Pf,AutoRedirectCard:()=>eU,AjaxGroupCard:()=>Lf});module.exports=Jf(ef);var C=require("react");var c=require("react");var LU=globalThis,X=(U,f)=>{let o=Symbol.for(U);if(!(o in LU))LU[o]=f();return LU[o]};var Df=X("@swarm.ing/pieui:context:pieConfig",()=>c.createContext(null)),Qf=()=>{let U=c.useContext(Df);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U};var S=()=>{let{enableRenderingLog:U}=Qf();return U},YU=S;var WU=require("react"),Xf=require("centrifuge");var zI=X("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var wf=X("@swarm.ing/pieui:context:centrifuge",()=>WU.createContext(null)),_U=wf;var Yf=require("socket.io-client"),KU=require("react");var PI=X("@swarm.ing/pieui:socket-cache",()=>new Map);var Wf=X("@swarm.ing/pieui:context:socket",()=>KU.createContext(null)),CU=Wf;var _f=wU(require("mitt")),h=require("react");var Kf=X("@swarm.ing/pieui:context:mitt",()=>h.createContext(null));var i=Kf;function VU(U){return U.wasRecovering===!0&&U.recovered===!1}function MU(U){return U.recoverable===!1}function RU(U,f,o){let I=U.getSubscription(f);if(I)return{subscription:I,createdHere:!1};return{subscription:U.newSubscription(f,o),createdHere:!0}}var k=require("react/jsx-runtime"),Cf=({card:U,data:f,children:o,useSocketioSupport:I=!1,useCentrifugeSupport:z=!1,useMittSupport:T=!1,centrifugeChannel:Z=void 0,methods:O=void 0,stored:B=void 0,onResync:H=void 0})=>{let q=YU(),P=C.useRef(O);P.current=O;let Q=C.useRef(H);if(Q.current=H,q)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",f),console.log("[PieCard] Component name:",f?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:z,mitt:T,centrifugeChannel:Z}),console.log("[PieCard] Methods:",O?Object.keys(O):"none"),console.log("[PieCard] Has children:",!!o);let $=C.useContext(CU),L=C.useContext(_U),w=C.useContext(i);if(C.useEffect(()=>{if(!$||!I||!P.current||!f.name){if(q&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!$,useSocketioSupport:I,hasMethods:!!P.current,hasDataName:!!f?.name});return}let M=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}`;if(q)console.log(`[PieCard] Socket.IO registering event: ${G}`);let A=(V)=>{P.current?.[J]?.(V)};return $.on(G,A),[G,A]});return()=>{M.forEach(([J,G])=>{if(q)console.log(`[PieCard] Socket.IO unregistering event: ${J}`);$.off(J,G)})}},[$,f.name,I]),C.useEffect(()=>{if(!L||!z||!Z||!f.name){if(q&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!P.current,hasDataName:!!f?.name});return}let M=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}_${Z}`;if(q)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let{subscription:A,createdHere:V}=RU(L,G,{recoverable:!0,positioned:!0}),JU=(x)=>{if(q)console.log(`[PieCard] Centrifuge received data on ${G}:`,x.data);P.current?.[J]?.(x.data)},FU=(x)=>{if(MU(x))console.warn(`[PieCard] Centrifuge channel ${G} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(VU(x)){if(q)console.log(`[PieCard] Centrifuge recovery gap on ${G}; requesting resync`);Q.current?.({channel:G,reason:"gap"})}};return A.on("publication",JU),A.on("subscribed",FU),A.subscribe(),{subscription:A,createdHere:V,onPublication:JU,onSubscribed:FU}});return()=>{M.forEach(({subscription:J,createdHere:G,onPublication:A,onSubscribed:V})=>{if(q)console.log("[PieCard] Centrifuge unsubscribing from channel");if(J.off("publication",A),J.off("subscribed",V),G)J.unsubscribe(),L.removeSubscription(J)})}},[L,Z,f.name,z]),C.useEffect(()=>{if(!w||!T||!f.name){if(q&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:T,hasMethods:!!P.current,hasDataName:!!f?.name});return}let N=Object.keys(P.current??{}),M={};return N.forEach((J)=>{let G=`pie${J}_${f.name}`,A=(V)=>{if(q)console.log(`[PieCard] Mitt registering event: ${G}`);P.current?.[J]?.(V)};M[G]=A,w.on(G,A)}),()=>{Object.entries(M).forEach(([J,G])=>{if(q)console.log(`[PieCard] Mitt unregistering event: ${J}`);w.off(J,G)})}},[w,f.name,T]),q)console.log("[PieCard] Rendering complete, returning children");if(B!==void 0)return k.jsxs(k.Fragment,{children:[k.jsx("input",{type:"hidden",name:f.name,value:JSON.stringify(B)}),o]});return o},F=Cf;var EU=require("react"),g=new Map;function Vf(U,f){return f.catch(()=>{if(g.get(U)===f)g.delete(U)}),g.set(U,f),f}function NU(U,f){return EU.lazy(()=>{if(g.has(f))return g.get(f);return Vf(f,U().then((o)=>o))})}var kU=X("@swarm.ing/pieui:component-registry",()=>new Map),Mf=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let f={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!f.component&&f.loader)f.component=NU(f.loader,U.name),f.isLazy=!0;return f};function D(U){let f=Mf(U);return kU.set(f.name,f),f.component}var n=(U)=>{return kU.get(U)};var v=require("react");var yU=require("react");var s=require("react/jsx-runtime"),Rf=X("@swarm.ing/pieui:context:fallback",()=>yU.createContext(s.jsx(s.Fragment,{}))),R=Rf;var jU=require("react");var Ef=X("@swarm.ing/pieui:context:lazyError",()=>jU.createContext(void 0)),a=Ef;var t=require("react"),mU=require("react/jsx-runtime"),Nf=2,kf=400;class y extends t.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<Nf){let f=kf*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((o)=>({failed:!1,attempt:o.attempt+1}))},f)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return mU.jsx(t.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var e=require("react/jsx-runtime");function yf({uiConfig:U,setUiAjaxConfiguration:f}){let o=v.useContext(R),I=v.useContext(a),z=S();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!f);let T=n(U.card);if(!T?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return o}if(z)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let Z=T.component,O=e.jsx(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f});if(T.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",T.name);return e.jsx(y,{name:T.name,fallback:T.fallback?e.jsx(T.fallback,{}):o,onError:I,children:O})}if(z)console.log("[UI] Rendering component directly:",T.name);return O}var _=v.memo(yf);var OU=require("react");var pU=require("react");var jf=X("@swarm.ing/pieui:context:uiRenderer",()=>pU.createContext(null)),K=jf;var l=require("react/jsx-runtime");function xU({uiConfig:U,setUiAjaxConfiguration:f}){let o=OU.useContext(R),I=OU.useContext(a),z=S();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!f);let T=n(U.card);if(!T?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return o}if(z)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(z)console.log("[UILoading] Rendering fallback for:",T.name);let B=T.fallback;return l.jsx(B,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",T.name);let Z=T.component,O=l.jsx(K.Provider,{value:xU,children:l.jsx(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f})});if(T.isLazy)return l.jsx(y,{name:T.name,fallback:o,onError:I,children:O});return O}var bU=xU;var SU=require("react");var UU=require("react/jsx-runtime"),mf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I,sx:z}=U,T=SU.useContext(K)??_;return UU.jsx(F,{card:I,data:U,children:UU.jsx("div",{style:z,id:I,children:f.map((Z,O)=>{return UU.jsx(T,{uiConfig:Z,setUiAjaxConfiguration:o},`children-${O}`)})})})},gU=mf;var vU=D({name:"SequenceCard",component:gU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var lU=require("react");var PU=require("react/jsx-runtime"),pf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I}=U,z=lU.useContext(K)??_;return PU.jsx(F,{card:I,data:U,children:f.map((T,Z)=>{return PU.jsx(z,{uiConfig:T,setUiAjaxConfiguration:o},`children-${Z}`)})})},dU=pf;var rU=D({name:"UnionCard",component:dU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var fU=require("react"),uU=wU(require("html-react-parser"));var W=require("react");function xf(){let U=new AudioContext,f=U.createOscillator(),o=f.connect(U.createMediaStreamDestination());f.start();let I=o.stream.getAudioTracks()[0];return I.enabled=!1,I}function AU(U=null,f){let[o,I]=W.useState(!1),z=W.useRef(null),T=W.useRef(null),Z=W.useRef(null),O=W.useCallback(async(P,Q=!0)=>{if(z.current)B();let $=new RTCPeerConnection;if($.onconnectionstatechange=()=>{if($.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes($.connectionState))I(!1)},$.ontrack=(A)=>{if(U)U.srcObject=A.streams[0]},Q){let A=await navigator.mediaDevices.getUserMedia({audio:!0});$.addTrack(A.getTracks()[0],A)}else{let A=xf();$.addTrack(A)}let L=$.createDataChannel("oai-events");T.current=L,Z.current=new Promise((A)=>{L.addEventListener("open",()=>{A()})});let w=await $.createOffer();await $.setLocalDescription(w);let G=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:w.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await $.setRemoteDescription({type:"answer",sdp:G}),z.current=$,await Z.current},[U]),B=W.useCallback(()=>{let P=T.current;if(P)P.close();z.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),z.current?.close(),I(!1),z.current=null,T.current=null,Z.current=null},[U]),H=W.useCallback((P)=>{let Q=T.current;if(!Q){console.error("Data channel is not ready",P);return}let $=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),Q.send(JSON.stringify(P)),!P.timestamp)P.timestamp=$;f?.(P)},[f,U]),q=W.useCallback((P)=>{if(!T.current){console.error("Data channel is not ready");return}let $=()=>{H({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),H({type:"response.create"})};if(Z.current)Z.current.then($);else $()},[f,U]);return W.useEffect(()=>{let P=T.current;if(!P)return;let Q=($)=>{let L=JSON.parse($.data);if(!L.timestamp)L.timestamp=new Date().toLocaleTimeString();f?.(L)};return P.addEventListener("message",Q),()=>{P.removeEventListener("message",Q)}},[f,U]),{isSessionActive:o,startSession:O,stopSession:B,sendTextMessage:q}}var hU=require("react/jsx-runtime"),bf=({data:U})=>{let{html:f,useSocketioSupport:o,useCentrifugeSupport:I,useMittSupport:z,centrifugeChannel:T}=U,[Z,O]=fU.useState(f),{isSessionActive:B,startSession:H,sendTextMessage:q}=AU(null,(L)=>{if(console.log(L.type,L.type==="response.output_text.delta"&&L.delta),L.type==="response.output_text.delta"&&L.delta)O((w)=>w+L.delta)});return fU.useEffect(()=>{O(f)},[f]),hU.jsx(F,{card:"HTMLEmbedCard",data:U,methods:{update:(L)=>{O(L.value)},generateUsingAI:async(L)=>{try{if(!B&&L.token)await H(L.token,!1);q(L.prompt)}catch(w){console.error("Failed to generate using AI",w)}},initializeAI:async(L)=>{if(!B&&L.token)await H(L.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:o,useMittSupport:z,centrifugeChannel:T,children:uU.default(Z)})},cU=bf;var iU=D({name:"HTMLEmbedCard",component:cU,metadata:{author:"Swarm.ing"}});var IU=require("react");var BU=require("react/jsx-runtime"),Sf=({data:U})=>{let{name:f,value:o,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:Z}=U,[O,B]=IU.useState(o);return IU.useEffect(()=>{B(o)},[o]),BU.jsx(F,{card:"HiddenCard",data:U,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:Z,methods:{update:({value:H})=>{B(H)}},children:BU.jsx("input",{type:"hidden",id:f,name:f,value:O})})},nU=Sf;var sU=D({name:"HiddenCard",component:nU,metadata:{author:"Swarm.ing"}});var d=require("react");var aU=require("react");var gf=X("@swarm.ing/pieui:context:navigate",()=>aU.createContext(void 0)),j=gf;var oU=require("react/jsx-runtime"),vf=({data:U})=>{let{url:f}=U,o=d.useContext(j),I=d.useContext(R);return d.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(f))window.location.href=f;else o?.(f)},[f,o]),oU.jsx(oU.Fragment,{children:I})},tU=vf;var eU=D({name:"AutoRedirectCard",component:tU,metadata:{author:"Swarm.ing"}});var E=require("react-toastify"),TU=require("react-toastify");var p=require("react");var m=require("react/jsx-runtime"),lf={bounce:E.Bounce,slide:E.Slide,zoom:E.Zoom,flip:E.Flip},df=(U)=>{let f={...U,type:U.alertType,transition:U.transition?lf[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};TU.toast(U.message,f)},rf=(U)=>{console.log("Log event",U)},uf=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let f=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(I){console.error("[IOEventsCard] Failed to show notification",I)}},o=window.Notification.permission;if(o==="granted"){f();return}if(o==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")f()})},cf=({data:U})=>{let{useCentrifugeSupport:f,useSocketioSupport:o,useMittSupport:I,centrifugeChannel:z}=U,T=p.useContext(j),Z=p.useRef(T);Z.current=T;let O=p.useMemo(()=>({alert:df,log:rf,push:uf,redirect:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()},reload:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()}}),[]);return m.jsx(m.Fragment,{children:m.jsx(F,{card:"IOEventsCard",data:U,useCentrifugeSupport:f,useSocketioSupport:o,useMittSupport:I,centrifugeChannel:z,methods:O,children:m.jsx(TU.ToastContainer,{})})})},Uf=cf;var ff=D({name:"IOEventsCard",component:Uf,metadata:{author:"Swarm.ing"}});var r=require("react");var HU=require("react/jsx-runtime"),hf=({data:U})=>{let{name:f,key:o,value:I,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=r.useState(I);return r.useEffect(()=>{H(I)},[I]),r.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(o,B)},[o,B]),HU.jsx(F,{card:"SessionStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{sessionStorage.removeItem(o),H("")}},children:HU.jsx("input",{type:"hidden",id:f,name:f,value:B})})},If=hf;var of=D({name:"SessionStorageCard",component:If,metadata:{author:"PieData"}});var u=require("react");var $U=require("react/jsx-runtime"),nf=({data:U})=>{let{name:f,key:o,value:I,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=u.useState(I);return u.useEffect(()=>{H(I)},[I]),u.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(o,B)},[o,B]),$U.jsx(F,{card:"DeviceStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{localStorage.removeItem(o),H("")}},children:$U.jsx("input",{type:"hidden",id:f,name:f,value:B})})},Tf=nf;var zf=D({name:"DeviceStorageCard",component:Tf,metadata:{author:"PieData"}});var Y=require("react");var qU=require("react/jsx-runtime"),sf=({data:U,content:f})=>{let{useLoader:o,noReturn:I,returnType:z,useSocketioSupport:T,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B}=U,H=Y.useContext(R),q=Y.useContext(K)??_,[P,Q]=Y.useState(!1),[$,L]=Y.useState(null),w=Y.useRef(f),N=Y.useContext(i),M=Y.useCallback((A)=>{if(A===null)Q(!0);else if(Q(!1),!I)w.current=A;if(!I)L(A)},[I]),J=Y.useCallback((A)=>{w.current=A.content,L(A.content)},[]),G=Y.useCallback((A)=>{if(A===null)Q(!0);else if(Q(!1),!I)for(let V of A)N?.emit(V.name,V.data)},[I,N]);if(Y.useEffect(()=>{L(f),Q(!1)},[f]),!$&&o)return H;return qU.jsx(F,{card:"AjaxGroupCard",data:U,methods:{changeContent:J},useSocketioSupport:T,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B,children:qU.jsx(q,{uiConfig:$??w.current,setUiAjaxConfiguration:z==="events"?G:M})})},Zf=sf;var Lf=D({name:"AjaxGroupCard",component:Zf,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var GU=require("react");var zU=require("react/jsx-runtime"),af=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I,url:z,sx:T}=U,Z=GU.useContext(j),O=GU.useContext(K)??_;return zU.jsx(F,{card:I,data:U,children:zU.jsx("div",{style:T,id:I,onClick:(H)=>{if(z)if(H.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else Z?.(z)},children:zU.jsx(O,{setUiAjaxConfiguration:o,uiConfig:f})})})},Of=af;var Pf=D({name:"BoxCard",component:Of,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Af=require("react");var ZU=require("react/jsx-runtime"),tf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I,sx:z}=U,T=Af.useContext(K)??_;return ZU.jsx(F,{card:I,data:U,children:ZU.jsx("div",{style:z,id:I,children:f.map((Z,O)=>{return ZU.jsx(T,{uiConfig:Z,setUiAjaxConfiguration:o},`children-${O}`)})})})},Bf=tf;var Hf=D({name:"OneOfCard",component:Bf,metadata:{author:"Swarm.ing",description:"Different variants"}});
package/dist/index.esm.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{useContext as OU,useEffect as qU,useRef as bU}from"react";import{createContext as wZ,useContext as NZ}from"react";var YU=globalThis,P=(U,Z)=>{let H=Symbol.for(U);if(!(H in YU))YU[H]=Z();return YU[H]};var g=P("@swarm.ing/pieui:context:pieConfig",()=>wZ(null)),d=()=>{let U=NZ(g);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},o=()=>{let{apiServer:U}=d();return U},n=o,t=()=>{let{centrifugeServer:U}=d();return U};var k=()=>{let{enableRenderingLog:U}=d();return U},jU=k;var BU="__piedemo__";import{createContext as EZ}from"react";import{Centrifuge as fU}from"centrifuge";var CU=P("@swarm.ing/pieui:centrifuge-cache",()=>new Map),a=(U,Z)=>{if(!Z)return null;let H=`${U}::${Z}`,$=CU.get(H);if($)return $;async function T(){let J=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new fU.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let z=new fU(Z,{getToken:T});return CU.set(H,z),z},jZ=P("@swarm.ing/pieui:context:centrifuge",()=>EZ(null)),y=jZ;import{io as fZ}from"socket.io-client";import{createContext as CZ}from"react";var xU=P("@swarm.ing/pieui:socket-cache",()=>new Map),e=(U)=>{let Z=xU.get(U);if(Z)return Z;let H=fZ(U,{autoConnect:!1,transports:["websocket"]});return xU.set(U,H),H},xZ=P("@swarm.ing/pieui:context:socket",()=>CZ(null)),S=xZ;import kZ from"mitt";import{createContext as yZ,useCallback as SZ,useContext as bZ}from"react";function u(){return P("@swarm.ing/pieui:mitt-emitter",()=>kZ())}var kU=P("@swarm.ing/pieui:context:mitt",()=>yZ(null));function mZ(U){let Z=bZ(kU);return SZ((H,$)=>{(Z??u()).emit(`pie${H}_${U}`,$)},[U,Z])}var b=kU;function yU(U){return U.wasRecovering===!0&&U.recovered===!1}function SU(U){return U.recoverable===!1}import{jsx as hZ,jsxs as gZ,Fragment as pZ}from"react/jsx-runtime";var vZ=({card:U,data:Z,children:H,useSocketioSupport:$=!1,useCentrifugeSupport:T=!1,useMittSupport:z=!1,centrifugeChannel:J=void 0,methods:G=void 0,stored:I=void 0,onResync:X=void 0})=>{let W=jU(),q=bU(G);q.current=G;let V=bU(X);if(V.current=X,W)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:$,centrifuge:T,mitt:z,centrifugeChannel:J}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!H);let B=OU(S),O=OU(y),_=OU(b);if(qU(()=>{if(!B||!$||!q.current||!Z.name){if(W&&$)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:$,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let A=Object.keys(q.current??{}).map((D)=>{let Y=`pie${D}_${Z.name}`;if(W)console.log(`[PieCard] Socket.IO registering event: ${Y}`);let Q=(w)=>{q.current?.[D]?.(w)};return B.on(Y,Q),[Y,Q]});return()=>{A.forEach(([D,Y])=>{if(W)console.log(`[PieCard] Socket.IO unregistering event: ${D}`);B.off(D,Y)})}},[B,Z.name,$]),qU(()=>{if(!O||!T||!J||!Z.name){if(W&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let A=Object.keys(q.current??{}).map((D)=>{let Y=`pie${D}_${Z.name}_${J}`;if(W)console.log(`[PieCard] Centrifuge subscribing to channel: ${Y}`);let Q=O.newSubscription(Y,{recoverable:!0,positioned:!0});return Q.on("publication",(w)=>{if(W)console.log(`[PieCard] Centrifuge received data on ${Y}:`,w.data);q.current?.[D]?.(w.data)}),Q.on("subscribed",(w)=>{if(SU(w))console.warn(`[PieCard] Centrifuge channel ${Y} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(yU(w)){if(W)console.log(`[PieCard] Centrifuge recovery gap on ${Y}; requesting resync`);V.current?.({channel:Y,reason:"gap"})}}),Q.subscribe(),Q});return()=>{A.forEach((D)=>{if(W)console.log("[PieCard] Centrifuge unsubscribing from channel");D.unsubscribe(),O.removeSubscription(D)})}},[O,J,Z.name,T]),qU(()=>{if(!_||!z||!Z.name){if(W&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!_,useMittSupport:z,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let F=Object.keys(q.current??{}),A={};return F.forEach((D)=>{let Y=`pie${D}_${Z.name}`,Q=(w)=>{if(W)console.log(`[PieCard] Mitt registering event: ${Y}`);q.current?.[D]?.(w)};A[Y]=Q,_.on(Y,Q)}),()=>{Object.entries(A).forEach(([D,Y])=>{if(W)console.log(`[PieCard] Mitt unregistering event: ${D}`);_.off(D,Y)})}},[_,Z.name,z]),W)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return gZ(pZ,{children:[hZ("input",{type:"hidden",name:Z.name,value:JSON.stringify(I)}),H]});return H},M=vZ;import{lazy as uZ}from"react";var v=new Map;function mU(U,Z){return Z.catch(()=>{if(v.get(U)===Z)v.delete(U)}),v.set(U,Z),Z}function QU(U,Z){return uZ(()=>{if(v.has(Z))return v.get(Z);return mU(Z,U().then((H)=>H))})}var vU=async(U,Z)=>{if(!Z)return;if(v.has(U))return v.get(U);return mU(U,Z().then((H)=>H))};var C=P("@swarm.ing/pieui:component-registry",()=>new Map),cZ=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let Z={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!Z.component&&Z.loader)Z.component=QU(Z.loader,U.name),Z.isLazy=!0;return Z};function K(U){let Z=cZ(U);return C.set(Z.name,Z),Z.component}var dZ=(U)=>{U.forEach((Z)=>K(Z))},oZ=(U)=>{C.delete(U)},lZ=(U)=>{return C.has(U)},iZ=(U)=>{return C.get(U)?.metadata},l=(U)=>{return C.get(U)},sZ=()=>{return Array.from(C.keys())},rZ=()=>{return C.size},hU=()=>Array.from(C.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),gU=(U)=>{let Z=C.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return vU(U,Z.loader)},pU=!1,nZ=()=>{if(pU||typeof window>"u")return;pU=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=hU(),H="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),$=(T)=>{if(T>=Z.length)return;H(()=>{Promise.resolve().then(()=>gU(Z[T])).catch(()=>{}).finally(()=>$(T+1))})};$(0)};import{useContext as uU,memo as GH}from"react";import{createContext as tZ}from"react";import{jsx as UH,Fragment as eZ}from"react/jsx-runtime";var aZ=P("@swarm.ing/pieui:context:fallback",()=>tZ(UH(eZ,{}))),E=aZ;import{createContext as ZH}from"react";var HH=P("@swarm.ing/pieui:context:lazyError",()=>ZH(void 0)),m=HH;import{Component as $H,Suspense as zH}from"react";import{jsx as IH}from"react/jsx-runtime";var TH=2,JH=400;class c extends $H{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<TH){let Z=JH*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((H)=>({failed:!1,attempt:H.attempt+1}))},Z)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return IH(zH,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as WU}from"react/jsx-runtime";function XH({uiConfig:U,setUiAjaxConfiguration:Z}){let H=uU(E),$=uU(m),T=k();if(T)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!Z);let z=l(U.card);if(!z?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return H}if(T)console.log("[UI] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let J=z.component,G=WU(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(z.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",z.name);return WU(c,{name:z.name,fallback:z.fallback?WU(z.fallback,{}):H,onError:$,children:G})}if(T)console.log("[UI] Rendering component directly:",z.name);return G}var N=GH(XH);import{useContext as cU}from"react";import{createContext as YH}from"react";var BH=P("@swarm.ing/pieui:context:uiRenderer",()=>YH(null)),j=BH;import{jsx as UU}from"react/jsx-runtime";function dU({uiConfig:U,setUiAjaxConfiguration:Z}){let H=cU(E),$=cU(m),T=k();if(T)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!Z);let z=l(U.card);if(!z?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return H}if(T)console.log("[UILoading] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata,hasFallback:!!z.fallback});if(z.fallback){if(T)console.log("[UILoading] Rendering fallback for:",z.name);let I=z.fallback;return UU(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",z.name);let J=z.component,G=UU(j.Provider,{value:dU,children:UU(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(z.isLazy)return UU(c,{name:z.name,fallback:H,onError:$,children:G});return G}var DU=dU;import{useContext as OH}from"react";import{jsx as _U}from"react/jsx-runtime";var qH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:T}=U,z=OH(j)??N;return _U(M,{card:$,data:U,children:_U("div",{style:T,id:$,children:Z.map((J,G)=>{return _U(z,{uiConfig:J,setUiAjaxConfiguration:H},`children-${G}`)})})})},oU=qH;var QH=K({name:"SequenceCard",component:oU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as WH}from"react";import{jsx as lU}from"react/jsx-runtime";var DH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$}=U,T=WH(j)??N;return lU(M,{card:$,data:U,children:Z.map((z,J)=>{return lU(T,{uiConfig:z,setUiAjaxConfiguration:H},`children-${J}`)})})},iU=DH;var _H=K({name:"UnionCard",component:iU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as PH,useState as AH}from"react";import MH from"html-react-parser";import{useCallback as ZU,useEffect as VH,useRef as VU,useState as FH}from"react";function KH(){let U=new AudioContext,Z=U.createOscillator(),H=Z.connect(U.createMediaStreamDestination());Z.start();let $=H.stream.getAudioTracks()[0];return $.enabled=!1,$}function FU(U=null,Z){let[H,$]=FH(!1),T=VU(null),z=VU(null),J=VU(null),G=ZU(async(q,V=!0)=>{if(T.current)I();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")$(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))$(!1)},B.ontrack=(Q)=>{if(U)U.srcObject=Q.streams[0]},V){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(Q.getTracks()[0],Q)}else{let Q=KH();B.addTrack(Q)}let O=B.createDataChannel("oai-events");z.current=O,J.current=new Promise((Q)=>{O.addEventListener("open",()=>{Q()})});let _=await B.createOffer();await B.setLocalDescription(_);let Y=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:_.sdp,headers:{Authorization:`Bearer ${q}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:Y}),T.current=B,await J.current},[U]),I=ZU(()=>{let q=z.current;if(q)q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),$(!1),T.current=null,z.current=null,J.current=null},[U]),X=ZU((q)=>{let V=z.current;if(!V){console.error("Data channel is not ready",q);return}let B=new Date().toLocaleTimeString();if(q.event_id=q.event_id||crypto.randomUUID(),V.send(JSON.stringify(q)),!q.timestamp)q.timestamp=B;Z?.(q)},[Z,U]),W=ZU((q)=>{if(!z.current){console.error("Data channel is not ready");return}let B=()=>{X({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:q}]}}),X({type:"response.create"})};if(J.current)J.current.then(B);else B()},[Z,U]);return VH(()=>{let q=z.current;if(!q)return;let V=(B)=>{let O=JSON.parse(B.data);if(!O.timestamp)O.timestamp=new Date().toLocaleTimeString();Z?.(O)};return q.addEventListener("message",V),()=>{q.removeEventListener("message",V)}},[Z,U]),{isSessionActive:H,startSession:G,stopSession:I,sendTextMessage:W}}import{jsx as LH}from"react/jsx-runtime";var RH=({data:U})=>{let{html:Z,useSocketioSupport:H,useCentrifugeSupport:$,useMittSupport:T,centrifugeChannel:z}=U,[J,G]=AH(Z),{isSessionActive:I,startSession:X,sendTextMessage:W}=FU(null,(O)=>{if(console.log(O.type,O.type==="response.output_text.delta"&&O.delta),O.type==="response.output_text.delta"&&O.delta)G((_)=>_+O.delta)});return PH(()=>{G(Z)},[Z]),LH(M,{card:"HTMLEmbedCard",data:U,methods:{update:(O)=>{G(O.value)},generateUsingAI:async(O)=>{try{if(!I&&O.token)await X(O.token,!1);W(O.prompt)}catch(_){console.error("Failed to generate using AI",_)}},initializeAI:async(O)=>{if(!I&&O.token)await X(O.token,!1)}},useCentrifugeSupport:$,useSocketioSupport:H,useMittSupport:T,centrifugeChannel:z,children:MH(J)})},sU=RH;var wH=K({name:"HTMLEmbedCard",component:sU,metadata:{author:"Swarm.ing"}});import{useEffect as NH,useState as EH}from"react";import{jsx as rU}from"react/jsx-runtime";var jH=({data:U})=>{let{name:Z,value:H,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J}=U,[G,I]=EH(H);return NH(()=>{I(H)},[H]),rU(M,{card:"HiddenCard",data:U,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J,methods:{update:({value:X})=>{I(X)}},children:rU("input",{type:"hidden",id:Z,name:Z,value:G})})},nU=jH;var fH=K({name:"HiddenCard",component:nU,metadata:{author:"Swarm.ing"}});import{useContext as tU,useEffect as kH}from"react";import{createContext as CH}from"react";var xH=P("@swarm.ing/pieui:context:navigate",()=>CH(void 0)),x=xH;import{jsx as bH,Fragment as SH}from"react/jsx-runtime";var yH=({data:U})=>{let{url:Z}=U,H=tU(x),$=tU(E);return kH(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else H?.(Z)},[Z,H]),bH(SH,{children:$})},aU=yH;var mH=K({name:"AutoRedirectCard",component:aU,metadata:{author:"Swarm.ing"}});import{Bounce as vH,Slide as pH,Zoom as hH,Flip as gH}from"react-toastify";import{toast as uH,ToastContainer as cH}from"react-toastify";import{useContext as dH,useMemo as oH,useRef as lH}from"react";import{jsx as KU,Fragment as aH}from"react/jsx-runtime";var iH={bounce:vH,slide:pH,zoom:hH,flip:gH},sH=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?iH[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};uH(U.message,Z)},rH=(U)=>{console.log("Log event",U)},nH=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let Z=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch($){console.error("[IOEventsCard] Failed to show notification",$)}},H=window.Notification.permission;if(H==="granted"){Z();return}if(H==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then(($)=>{if($==="granted")Z()})},tH=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:T}=U,z=dH(x),J=lH(z);J.current=z;let G=oH(()=>({alert:sH,log:rH,push:nH,redirect:(I)=>{if(I.to){let X=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(X))window.location.href=X;else J.current?.(X)}else window.location.reload()},reload:(I)=>{if(I.to){let X=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(X))window.location.href=X;else J.current?.(X)}else window.location.reload()}}),[]);return KU(aH,{children:KU(M,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:T,methods:G,children:KU(cH,{})})})},eU=tH;var eH=K({name:"IOEventsCard",component:eU,metadata:{author:"Swarm.ing"}});import{useEffect as UZ,useState as U$}from"react";import{jsx as ZZ}from"react/jsx-runtime";var Z$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G}=U,[I,X]=U$($);return UZ(()=>{X($)},[$]),UZ(()=>{if(typeof window>"u")return;sessionStorage.setItem(H,I)},[H,I]),ZZ(M,{card:"SessionStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:W})=>{X(W)},remove:()=>{sessionStorage.removeItem(H),X("")}},children:ZZ("input",{type:"hidden",id:Z,name:Z,value:I})})},HZ=Z$;var H$=K({name:"SessionStorageCard",component:HZ,metadata:{author:"PieData"}});import{useEffect as $Z,useState as $$}from"react";import{jsx as zZ}from"react/jsx-runtime";var z$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G}=U,[I,X]=$$($);return $Z(()=>{X($)},[$]),$Z(()=>{if(typeof window>"u")return;localStorage.setItem(H,I)},[H,I]),zZ(M,{card:"DeviceStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:W})=>{X(W)},remove:()=>{localStorage.removeItem(H),X("")}},children:zZ("input",{type:"hidden",id:Z,name:Z,value:I})})},TZ=z$;var T$=K({name:"DeviceStorageCard",component:TZ,metadata:{author:"PieData"}});import{useCallback as PU,useContext as AU,useEffect as J$,useRef as I$,useState as JZ}from"react";import{jsx as IZ}from"react/jsx-runtime";var G$=({data:U,content:Z})=>{let{useLoader:H,noReturn:$,returnType:T,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I}=U,X=AU(E),W=AU(j)??N,[q,V]=JZ(!1),[B,O]=JZ(null),_=I$(Z),F=AU(b),A=PU((Q)=>{if(Q===null)V(!0);else if(V(!1),!$)_.current=Q;if(!$)O(Q)},[$]),D=PU((Q)=>{_.current=Q.content,O(Q.content)},[]),Y=PU((Q)=>{if(Q===null)V(!0);else if(V(!1),!$)for(let w of Q)F?.emit(w.name,w.data)},[$,F]);if(J$(()=>{O(Z),V(!1)},[Z]),!B&&H)return X;return IZ(M,{card:"AjaxGroupCard",data:U,methods:{changeContent:D},useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I,children:IZ(W,{uiConfig:B??_.current,setUiAjaxConfiguration:T==="events"?Y:A})})},GZ=G$;var X$=K({name:"AjaxGroupCard",component:GZ,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as XZ}from"react";import{jsx as MU}from"react/jsx-runtime";var Y$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,url:T,sx:z}=U,J=XZ(x),G=XZ(j)??N;return MU(M,{card:$,data:U,children:MU("div",{style:z,id:$,onClick:(X)=>{if(T)if(X.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:MU(G,{setUiAjaxConfiguration:H,uiConfig:Z})})})},YZ=Y$;var B$=K({name:"BoxCard",component:YZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as O$}from"react";import{jsx as RU}from"react/jsx-runtime";var q$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:T}=U,z=O$(j)??N;return RU(M,{card:$,data:U,children:RU("div",{style:T,id:$,children:Z.map((J,G)=>{return RU(z,{uiConfig:J,setUiAjaxConfiguration:H},`children-${G}`)})})})},BZ=q$;var Q$=K({name:"OneOfCard",component:BZ,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as s}from"react";import{QueryClient as f$,QueryClientProvider as C$,useQuery as x$}from"@tanstack/react-query";import{useContext as M$,useEffect as R$}from"react";import{useEffect as W$,useState as D$}from"react";var HU=new Map,$U=new Map;function zU(U,Z){let H=`${U}::${Z}`,$=U?HU.get(H):void 0,[T,z]=D$($??null);return W$(()=>{if(!U)return;if(HU.has(H)){z(HU.get(H));return}let J=$U.get(H);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return HU.set(H,I),$U.delete(H),I}).catch((I)=>{throw $U.delete(H),I}),$U.set(H,J);let G=!1;return J.then((I)=>{if(!G)z(I)}).catch(()=>{}),()=>{G=!0}},[U,Z,H]),T}var _$=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let H of Z){let $=H.indexOf("=");if(($===-1?H:H.slice(0,$)).trim()===U){let z=$===-1?"":H.slice($+1).trim();try{return decodeURIComponent(z)}catch{return z}}}return null},V$={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,Z){return(U==="local"?window.localStorage:window.sessionStorage).getItem(Z)},readCookie:_$,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let H=Z[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},OZ=V$;var F$={};function p(){return F$}var qZ=new Map;var QZ=(U)=>{return qZ.has(U)?qZ.get(U):null};var WZ,K$={isClient(){return!0},readSid(){return WZ},setSid(U){WZ=U},readWebStorage(U,Z){let H=p(),$=U==="local"?H.storage:H.sessionStorage;return $?$.getItem(Z):null},async readWebStorageAsync(U,Z){let H=p(),$=U==="local"?H.asyncStorage:H.asyncSessionStorage;if($)return $.getItem(Z);let T=U==="local"?H.storage:H.sessionStorage;return T?T.getItem(Z):null},readCookie(U){let Z=p();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=p();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=p();return Z.getInput?Z.getInput(U):QZ(U)},submitGlobalForm(){p().submitForm?.()}},DZ=K$;var P$=typeof navigator<"u"&&navigator.product==="ReactNative",A$=P$?DZ:OZ,R=A$;var i=P("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function _Z(){i.resolve?.()}function LU(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!i.promise)i.promise=new Promise((U)=>{i.resolve=()=>{U()}});return i.promise}var L$=({children:U})=>{let Z=M$(S),H=n(),$=zU(H,"socketIO"),T=(z)=>{if(R.isClient())R.setSid(z.sid),_Z(),console.log(`SocketIO initialized: ${R.readSid()}`)};return R$(()=>{if(!Z)return;let z=()=>{console.log("SocketIO connected")},J=(G)=>{console.log(`SocketIO disconnected: ${G}`),Z.connect()};if($)Z.on("pieinit",T),Z.on("connect",z),Z.on("disconnect",J),Z.connect();return()=>{if($)Z.off("pieinit",T),Z.off("connect",z),Z.off("disconnect",J),Z.disconnect()}},[Z,$]),U},TU=L$;import{useContext as w$,useEffect as N$}from"react";var E$=({children:U})=>{let Z=w$(y),H=n(),$=zU(H,"centrifuge");return N$(()=>{if(!Z)return;let T=()=>{console.log("Centrifuge connected")},z=(J)=>{console.log("Centrifuge disconnected:",J)};if($)Z.on("connected",T),Z.on("disconnected",z),Z.connect();return()=>{if($)Z.disconnect()}},[Z,$]),U},JU=E$;import{createAxiosDateTransformer as k$}from"axios-date-transformer";import{jsx as j$}from"react/jsx-runtime";function VZ(U,Z,H){if(!Z)return H;let $=U.replace(/^\//,""),T=Z[$];if(!T)return H;return j$(DU,{uiConfig:T})}import{jsx as L,Fragment as b$}from"react/jsx-runtime";var y$=({location:U,fallback:Z,piecache:H,onError:$,queryOptions:T,disableGlobalForm:z})=>{let J=o(),G=t(),I=k(),X=s(()=>k$({baseURL:J||""}),[J]),W=s(()=>u(),[]),q=s(()=>J?e(J):null,[J]),V=s(()=>J?a(J,G):null,[J,G]),{data:B,isLoading:O,error:_}=x$({queryKey:["uiConfig",U.pathname+U.search,J],enabled:!!J,queryFn:async()=>{let A=new URLSearchParams(U.search);A.set("__pieroot","web");let D="/api/content"+U.pathname+"?"+A.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",D);let Y=await X.get(D,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",Y.data);return Y.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(A)=>Math.min(1000*2**A,30000),...T}),F=VZ(U.pathname,H,Z);if(!J)return F??null;if(I)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!H);if(_){if(I)console.error("[PieRoot] Error fetching UI configuration:",_),console.error("[PieRoot] Error details:",{message:_.message,status:_.response?.status,data:_.response?.data});return $?.(_),F}if(O||!B){if(I)console.log("[PieRoot] Loading state:",{isLoading:O,hasUiConfiguration:!!B});return F}if(I)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L(b.Provider,{value:W,children:L(S.Provider,{value:q,children:L(y.Provider,{value:V,children:L(E.Provider,{value:Z??L(b$,{}),children:L(TU,{children:L(JU,{children:z?L(N,{uiConfig:B}):L("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:L(N,{uiConfig:B})})})})})})})})},S$=(U)=>{let Z=s(()=>new f$,[]),H=U.queryClient??Z;return L(x.Provider,{value:U.onNavigate,children:L(g.Provider,{value:U.config,children:L(m.Provider,{value:U.onError,children:L(C$,{client:H,children:L(y$,{...U})})})})})},wU=S$;import{useMemo as NU,useState as m$}from"react";import{QueryClient as v$,QueryClientProvider as p$}from"@tanstack/react-query";import{jsx as f,Fragment as u$}from"react/jsx-runtime";var h$=({location:U,fallback:Z,children:H,disableGlobalForm:$})=>{let T=o(),z=t(),J=k(),G=NU(()=>u(),[]),I=NU(()=>T?e(T):null,[T]),X=NU(()=>T?a(T,z):null,[T,z]);if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!Z);return f(b.Provider,{value:G,children:f(S.Provider,{value:I,children:f(y.Provider,{value:X,children:f(E.Provider,{value:Z??f(u$,{}),children:f(TU,{children:f(JU,{children:$?H:f("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:H})})})})})})})},g$=(U)=>{let[Z]=m$(()=>new v$),H=U.queryClient??Z;return f(x.Provider,{value:U.onNavigate,children:f(g.Provider,{value:U.config,children:f(m.Provider,{value:U.onError,children:f(p$,{client:H,children:f(h$,{...U})})})})})},c$=g$;import{useMemo as d$}from"react";import{jsx as FZ}from"react/jsx-runtime";var o$=FZ("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),l$=({apiServer:U,pathname:Z="/",search:H="",centrifugeServer:$,fallback:T,enableRenderingLog:z=!1})=>{let J=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",G=d$(()=>({apiServer:J,centrifugeServer:$,enableRenderingLog:z,pageProcessor:"web"}),[J,$,z]);return FZ(wU,{location:{pathname:Z,search:H},config:G,fallback:T??o$,onNavigate:(X)=>{if(typeof window<"u")window.history.pushState(null,"",X)}})},i$=l$;import{useMemo as s$}from"react";var r$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],n$=new Set(["telegram:cloud","telegram:secure"]),IU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of r$){let H=Z+":";if(U.startsWith(H))return{source:Z,key:U.slice(H.length)}}return{source:"dom",key:U}},KZ=(U,Z=!1)=>{let{source:H,key:$}=IU(U);if(H==="sid"){let z=R.readSid();if(!z)throw Error("SocketIO isn't initialized properly");return[z]}if(H==="localStorage"||H==="sessionStorage")try{let z=R.readWebStorage(H==="localStorage"?"local":"session",$);if(z===null){if(Z)console.warn(`No ${H} value found for key ${$}`);return[]}return[z]}catch(z){if(Z)console.warn(`Failed to read ${H} key ${$}:`,z);return[]}if(H==="cookie"){let z=R.readCookie($);if(z===null){if(Z)console.warn(`No cookie found for key ${$}`);return[]}return[z]}if(H==="url"){let z=R.readUrlParams($);if(!z.length&&Z)console.warn(`No URL query param found for key ${$}`);return z}if(n$.has(H)){if(Z)console.warn(`Source ${H} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=R.readDomInput($);if(T===null){if(Z)console.warn(`No input found with name ${$}`);return[]}return T},t$=(U,Z,H)=>{let $=window.Telegram?.WebApp,T=U==="telegram:cloud"?$?.CloudStorage:$?.SecureStorage,z=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if(H)console.warn(`${z} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(Z,(G,I)=>{if(G){if(H)console.warn(`Failed to read ${z} key ${Z}:`,G);J([]);return}if(I==null||I===""){if(H)console.warn(`No ${z} value found for key ${Z}`);J([]);return}J([I])})}catch(G){if(H)console.warn(`Failed to read ${z} key ${Z}:`,G);J([])}})},PZ=async(U,Z=!1)=>{let{source:H,key:$}=IU(U);if(H==="telegram:cloud"||H==="telegram:secure")return t$(H,$,Z);if((H==="localStorage"||H==="sessionStorage")&&R.readWebStorageAsync)try{let T=await R.readWebStorageAsync(H==="localStorage"?"local":"session",$);if(T===null){if(Z)console.warn(`No ${H} value found for key ${$}`);return[]}return[T]}catch(T){if(Z)console.warn(`Failed to read ${H} key ${$}:`,T);return[]}return KZ(U,Z)},a$=(U,Z={},H=[],$,T)=>{let z=T?.renderingLogEnabled??!1,J=T?.timeout,G=T?.retryPolicy,I=G?.maxRetries??0,X=G?.baseDelay??1000,W=G?.retryOn??[502,503,504];if(z)console.log("Registering AJAX: ",$,Z,H);return async(q={})=>{if(!R.isClient()){if(z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(z)console.warn("AJAX skipped: apiServer is missing");return}if(!$||!U){if(z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(H.includes("sid"))await LU();let B=new FormData;for(let[F,A]of Object.entries({...Z,...q}))B.append(F,A);for(let F of H){let{key:A}=IU(F);for(let D of await PZ(F,z))B.append(A,D)}let O=V+"api/ajax_content"+$;U(null);let _;for(let F=0;F<=I;F++){if(F>0){let Y=X*2**(F-1);if(z)console.log(`AJAX retry ${F}/${I} after ${Y}ms`);await new Promise((Q)=>setTimeout(Q,Y))}let A=J!=null?new AbortController:null,D=A&&setTimeout(()=>A.abort(),J);try{let Y=await fetch(O,{method:"POST",body:B,signal:A?.signal});if(D)clearTimeout(D);if(!Y.ok&&W.includes(Y.status)&&F<I){_=Error(`HTTP ${Y.status}`);continue}let w=(Y.headers.get("content-type")||"").includes("application/json");if(!!Y.body?.getReader&&!w){let r=Y.body.getReader(),AZ=new TextDecoder,h="";while(!0){let{done:GU,value:MZ}=await r.read();if(GU)break;h+=AZ.decode(MZ,{stream:!0});let EU=h.split(`
3
- `);h=EU.pop()??"";for(let RZ of EU){let XU=RZ.trim();if(!XU)continue;try{let LZ=JSON.parse(XU);U([LZ])}catch{if(z)console.warn("Failed to parse streamed line:",XU)}}}if(h.trim())try{let GU=JSON.parse(h);U([GU])}catch{if(z)console.warn("Failed to parse final streamed line:",h)}return{}}else{let r=await Y.json();return U(r),r}}catch(Y){if(D)clearTimeout(D);if(_=Y,F<I)continue;if(z)console.error("AJAX request failed:",Y);return U(null),Y}}if(z)console.error("AJAX request failed after retries:",_);return U(null),_}},e$=(U,Z={},H=[],$,T)=>{let{apiServer:z,enableRenderingLog:J}=d(),G=JSON.stringify(Z),I=JSON.stringify(H),X=JSON.stringify(T);return s$(()=>a$(U,Z,H,$,{apiServer:z,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[U,G,I,$,z,J,X])};import{clsx as Uz}from"clsx";import{twMerge as Zz}from"tailwind-merge";function Hz(...U){return Zz(Uz(U))}var $z=()=>{R.submitGlobalForm()};var zz=(U,Z)=>`${U}${BU}${Z}`;export{mZ as usePieEmit,e$ as useAjaxSubmit,oZ as unregisterComponent,QU as trackLazy,$z as submitGlobalForm,C as registry,K as registerPieComponent,dZ as registerMultipleComponents,PZ as readAjaxKeyAsync,KZ as readAjaxKey,gU as preloadComponent,nZ as prefetchLazyComponents,zz as pieName,IU as parseDepName,lZ as hasComponent,rZ as getRegistrySize,l as getRegistryEntry,hU as getLazyComponentNames,u as getEmitter,iZ as getComponentMeta,sZ as getAllRegisteredComponents,Hz as cn,_H as UnionCard,j as UIRendererContext,DU as UILoading,N as UI,S as SocketIOContext,H$ as SessionStorageCard,QH as SequenceCard,wU as PieRoot,i$ as PiePreviewRoot,g as PieConfigContext,M as PieCard,c$ as PieBaseRoot,BU as PIEBREAK,Q$ as OneOfCard,b as MittContext,eH as IOEventsCard,fH as HiddenCard,wH as HTMLEmbedCard,E as FallbackContext,T$ as DeviceStorageCard,y as CentrifugeIOContext,B$ as BoxCard,mH as AutoRedirectCard,X$ as AjaxGroupCard};
2
+ import{useContext as QU,useEffect as WU,useRef as pU}from"react";import{createContext as EZ,useContext as jZ}from"react";var qU=globalThis,A=(U,Z)=>{let $=Symbol.for(U);if(!($ in qU))qU[$]=Z();return qU[$]};var d=A("@swarm.ing/pieui:context:pieConfig",()=>EZ(null)),l=()=>{let U=jZ(d);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},i=()=>{let{apiServer:U}=l();return U},t=i,a=()=>{let{centrifugeServer:U}=l();return U};var k=()=>{let{enableRenderingLog:U}=l();return U},fU=k;var OU="__piedemo__";import{createContext as CZ}from"react";import{Centrifuge as xU}from"centrifuge";var kU=A("@swarm.ing/pieui:centrifuge-cache",()=>new Map),e=(U,Z)=>{if(!Z)return null;let $=`${U}::${Z}`,z=kU.get($);if(z)return z;async function T(){let J=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new xU.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let H=new xU(Z,{getToken:T});return kU.set($,H),H},fZ=A("@swarm.ing/pieui:context:centrifuge",()=>CZ(null)),y=fZ;import{io as xZ}from"socket.io-client";import{createContext as kZ}from"react";var yU=A("@swarm.ing/pieui:socket-cache",()=>new Map),UU=(U)=>{let Z=yU.get(U);if(Z)return Z;let $=xZ(U,{autoConnect:!1,transports:["websocket"]});return yU.set(U,$),$},yZ=A("@swarm.ing/pieui:context:socket",()=>kZ(null)),S=yZ;import SZ from"mitt";import{createContext as bZ,useCallback as vZ,useContext as mZ}from"react";function c(){return A("@swarm.ing/pieui:mitt-emitter",()=>SZ())}var SU=A("@swarm.ing/pieui:context:mitt",()=>bZ(null));function pZ(U){let Z=mZ(SU);return vZ(($,z)=>{(Z??c()).emit(`pie${$}_${U}`,z)},[U,Z])}var b=SU;function bU(U){return U.wasRecovering===!0&&U.recovered===!1}function vU(U){return U.recoverable===!1}function mU(U,Z,$){let z=U.getSubscription(Z);if(z)return{subscription:z,createdHere:!1};return{subscription:U.newSubscription(Z,$),createdHere:!0}}import{jsx as uZ,jsxs as dZ,Fragment as gZ}from"react/jsx-runtime";var hZ=({card:U,data:Z,children:$,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:H=!1,centrifugeChannel:J=void 0,methods:G=void 0,stored:I=void 0,onResync:Y=void 0})=>{let D=fU(),O=pU(G);O.current=G;let V=pU(Y);if(V.current=Y,D)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:T,mitt:H,centrifugeChannel:J}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!$);let B=QU(S),q=QU(y),_=QU(b);if(WU(()=>{if(!B||!z||!O.current||!Z.name){if(D&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:z,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let P=Object.keys(O.current??{}).map((W)=>{let X=`pie${W}_${Z.name}`;if(D)console.log(`[PieCard] Socket.IO registering event: ${X}`);let Q=(C)=>{O.current?.[W]?.(C)};return B.on(X,Q),[X,Q]});return()=>{P.forEach(([W,X])=>{if(D)console.log(`[PieCard] Socket.IO unregistering event: ${W}`);B.off(W,X)})}},[B,Z.name,z]),WU(()=>{if(!q||!T||!J||!Z.name){if(D&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!q,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let P=Object.keys(O.current??{}).map((W)=>{let X=`pie${W}_${Z.name}_${J}`;if(D)console.log(`[PieCard] Centrifuge subscribing to channel: ${X}`);let{subscription:Q,createdHere:C}=mU(q,X,{recoverable:!0,positioned:!0}),XU=(p)=>{if(D)console.log(`[PieCard] Centrifuge received data on ${X}:`,p.data);O.current?.[W]?.(p.data)},m=(p)=>{if(vU(p))console.warn(`[PieCard] Centrifuge channel ${X} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(bU(p)){if(D)console.log(`[PieCard] Centrifuge recovery gap on ${X}; requesting resync`);V.current?.({channel:X,reason:"gap"})}};return Q.on("publication",XU),Q.on("subscribed",m),Q.subscribe(),{subscription:Q,createdHere:C,onPublication:XU,onSubscribed:m}});return()=>{P.forEach(({subscription:W,createdHere:X,onPublication:Q,onSubscribed:C})=>{if(D)console.log("[PieCard] Centrifuge unsubscribing from channel");if(W.off("publication",Q),W.off("subscribed",C),X)W.unsubscribe(),q.removeSubscription(W)})}},[q,J,Z.name,T]),WU(()=>{if(!_||!H||!Z.name){if(D&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!_,useMittSupport:H,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let F=Object.keys(O.current??{}),P={};return F.forEach((W)=>{let X=`pie${W}_${Z.name}`,Q=(C)=>{if(D)console.log(`[PieCard] Mitt registering event: ${X}`);O.current?.[W]?.(C)};P[X]=Q,_.on(X,Q)}),()=>{Object.entries(P).forEach(([W,X])=>{if(D)console.log(`[PieCard] Mitt unregistering event: ${W}`);_.off(W,X)})}},[_,Z.name,H]),D)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return dZ(gZ,{children:[uZ("input",{type:"hidden",name:Z.name,value:JSON.stringify(I)}),$]});return $},M=hZ;import{lazy as cZ}from"react";var h=new Map;function hU(U,Z){return Z.catch(()=>{if(h.get(U)===Z)h.delete(U)}),h.set(U,Z),Z}function DU(U,Z){return cZ(()=>{if(h.has(Z))return h.get(Z);return hU(Z,U().then(($)=>$))})}var gU=async(U,Z)=>{if(!Z)return;if(h.has(U))return h.get(U);return hU(U,Z().then(($)=>$))};var f=A("@swarm.ing/pieui:component-registry",()=>new Map),oZ=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let Z={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!Z.component&&Z.loader)Z.component=DU(Z.loader,U.name),Z.isLazy=!0;return Z};function K(U){let Z=oZ(U);return f.set(Z.name,Z),Z.component}var lZ=(U)=>{U.forEach((Z)=>K(Z))},iZ=(U)=>{f.delete(U)},sZ=(U)=>{return f.has(U)},rZ=(U)=>{return f.get(U)?.metadata},s=(U)=>{return f.get(U)},nZ=()=>{return Array.from(f.keys())},tZ=()=>{return f.size},dU=()=>Array.from(f.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),cU=(U)=>{let Z=f.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return gU(U,Z.loader)},uU=!1,aZ=()=>{if(uU||typeof window>"u")return;uU=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=dU(),$="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=Z.length)return;$(()=>{Promise.resolve().then(()=>cU(Z[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};import{useContext as oU,memo as Y$}from"react";import{createContext as eZ}from"react";import{jsx as $$,Fragment as Z$}from"react/jsx-runtime";var U$=A("@swarm.ing/pieui:context:fallback",()=>eZ($$(Z$,{}))),N=U$;import{createContext as z$}from"react";var H$=A("@swarm.ing/pieui:context:lazyError",()=>z$(void 0)),v=H$;import{Component as T$,Suspense as J$}from"react";import{jsx as X$}from"react/jsx-runtime";var I$=2,G$=400;class o extends T${state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<I$){let Z=G$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},Z)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return X$(J$,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as _U}from"react/jsx-runtime";function B$({uiConfig:U,setUiAjaxConfiguration:Z}){let $=oU(N),z=oU(v),T=k();if(T)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!Z);let H=s(U.card);if(!H?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(T)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let J=H.component,G=_U(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(H.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",H.name);return _U(o,{name:H.name,fallback:H.fallback?_U(H.fallback,{}):$,onError:z,children:G})}if(T)console.log("[UI] Rendering component directly:",H.name);return G}var w=Y$(B$);import{useContext as lU}from"react";import{createContext as q$}from"react";var O$=A("@swarm.ing/pieui:context:uiRenderer",()=>q$(null)),E=O$;import{jsx as ZU}from"react/jsx-runtime";function iU({uiConfig:U,setUiAjaxConfiguration:Z}){let $=lU(N),z=lU(v),T=k();if(T)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!Z);let H=s(U.card);if(!H?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(T)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(T)console.log("[UILoading] Rendering fallback for:",H.name);let I=H.fallback;return ZU(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",H.name);let J=H.component,G=ZU(E.Provider,{value:iU,children:ZU(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(H.isLazy)return ZU(o,{name:H.name,fallback:$,onError:z,children:G});return G}var VU=iU;import{useContext as Q$}from"react";import{jsx as FU}from"react/jsx-runtime";var W$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=Q$(E)??w;return FU(M,{card:z,data:U,children:FU("div",{style:T,id:z,children:Z.map((J,G)=>{return FU(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${G}`)})})})},sU=W$;var D$=K({name:"SequenceCard",component:sU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as _$}from"react";import{jsx as rU}from"react/jsx-runtime";var V$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z}=U,T=_$(E)??w;return rU(M,{card:z,data:U,children:Z.map((H,J)=>{return rU(T,{uiConfig:H,setUiAjaxConfiguration:$},`children-${J}`)})})},nU=V$;var F$=K({name:"UnionCard",component:nU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as M$,useState as R$}from"react";import L$ from"html-react-parser";import{useCallback as $U,useEffect as K$,useRef as KU,useState as A$}from"react";function P$(){let U=new AudioContext,Z=U.createOscillator(),$=Z.connect(U.createMediaStreamDestination());Z.start();let z=$.stream.getAudioTracks()[0];return z.enabled=!1,z}function AU(U=null,Z){let[$,z]=A$(!1),T=KU(null),H=KU(null),J=KU(null),G=$U(async(O,V=!0)=>{if(T.current)I();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))z(!1)},B.ontrack=(Q)=>{if(U)U.srcObject=Q.streams[0]},V){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(Q.getTracks()[0],Q)}else{let Q=P$();B.addTrack(Q)}let q=B.createDataChannel("oai-events");H.current=q,J.current=new Promise((Q)=>{q.addEventListener("open",()=>{Q()})});let _=await B.createOffer();await B.setLocalDescription(_);let X=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:_.sdp,headers:{Authorization:`Bearer ${O}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:X}),T.current=B,await J.current},[U]),I=$U(()=>{let O=H.current;if(O)O.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,H.current=null,J.current=null},[U]),Y=$U((O)=>{let V=H.current;if(!V){console.error("Data channel is not ready",O);return}let B=new Date().toLocaleTimeString();if(O.event_id=O.event_id||crypto.randomUUID(),V.send(JSON.stringify(O)),!O.timestamp)O.timestamp=B;Z?.(O)},[Z,U]),D=$U((O)=>{if(!H.current){console.error("Data channel is not ready");return}let B=()=>{Y({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:O}]}}),Y({type:"response.create"})};if(J.current)J.current.then(B);else B()},[Z,U]);return K$(()=>{let O=H.current;if(!O)return;let V=(B)=>{let q=JSON.parse(B.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();Z?.(q)};return O.addEventListener("message",V),()=>{O.removeEventListener("message",V)}},[Z,U]),{isSessionActive:$,startSession:G,stopSession:I,sendTextMessage:D}}import{jsx as N$}from"react/jsx-runtime";var w$=({data:U})=>{let{html:Z,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:H}=U,[J,G]=R$(Z),{isSessionActive:I,startSession:Y,sendTextMessage:D}=AU(null,(q)=>{if(console.log(q.type,q.type==="response.output_text.delta"&&q.delta),q.type==="response.output_text.delta"&&q.delta)G((_)=>_+q.delta)});return M$(()=>{G(Z)},[Z]),N$(M,{card:"HTMLEmbedCard",data:U,methods:{update:(q)=>{G(q.value)},generateUsingAI:async(q)=>{try{if(!I&&q.token)await Y(q.token,!1);D(q.prompt)}catch(_){console.error("Failed to generate using AI",_)}},initializeAI:async(q)=>{if(!I&&q.token)await Y(q.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:$,useMittSupport:T,centrifugeChannel:H,children:L$(J)})},tU=w$;var E$=K({name:"HTMLEmbedCard",component:tU,metadata:{author:"Swarm.ing"}});import{useEffect as j$,useState as C$}from"react";import{jsx as aU}from"react/jsx-runtime";var f$=({data:U})=>{let{name:Z,value:$,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J}=U,[G,I]=C$($);return j$(()=>{I($)},[$]),aU(M,{card:"HiddenCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J,methods:{update:({value:Y})=>{I(Y)}},children:aU("input",{type:"hidden",id:Z,name:Z,value:G})})},eU=f$;var x$=K({name:"HiddenCard",component:eU,metadata:{author:"Swarm.ing"}});import{useContext as UZ,useEffect as S$}from"react";import{createContext as k$}from"react";var y$=A("@swarm.ing/pieui:context:navigate",()=>k$(void 0)),x=y$;import{jsx as m$,Fragment as v$}from"react/jsx-runtime";var b$=({data:U})=>{let{url:Z}=U,$=UZ(x),z=UZ(N);return S$(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else $?.(Z)},[Z,$]),m$(v$,{children:z})},ZZ=b$;var p$=K({name:"AutoRedirectCard",component:ZZ,metadata:{author:"Swarm.ing"}});import{Bounce as h$,Slide as g$,Zoom as u$,Flip as d$}from"react-toastify";import{toast as c$,ToastContainer as o$}from"react-toastify";import{useContext as l$,useMemo as i$,useRef as s$}from"react";import{jsx as PU,Fragment as Uz}from"react/jsx-runtime";var r$={bounce:h$,slide:g$,zoom:u$,flip:d$},n$=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?r$[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};c$(U.message,Z)},t$=(U)=>{console.log("Log event",U)},a$=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let Z=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},$=window.Notification.permission;if($==="granted"){Z();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")Z()})},e$=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T}=U,H=l$(x),J=s$(H);J.current=H;let G=i$(()=>({alert:n$,log:t$,push:a$,redirect:(I)=>{if(I.to){let Y=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()},reload:(I)=>{if(I.to){let Y=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()}}),[]);return PU(Uz,{children:PU(M,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T,methods:G,children:PU(o$,{})})})},$Z=e$;var Zz=K({name:"IOEventsCard",component:$Z,metadata:{author:"Swarm.ing"}});import{useEffect as zZ,useState as $z}from"react";import{jsx as HZ}from"react/jsx-runtime";var zz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G}=U,[I,Y]=$z(z);return zZ(()=>{Y(z)},[z]),zZ(()=>{if(typeof window>"u")return;sessionStorage.setItem($,I)},[$,I]),HZ(M,{card:"SessionStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:D})=>{Y(D)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:HZ("input",{type:"hidden",id:Z,name:Z,value:I})})},TZ=zz;var Hz=K({name:"SessionStorageCard",component:TZ,metadata:{author:"PieData"}});import{useEffect as JZ,useState as Tz}from"react";import{jsx as IZ}from"react/jsx-runtime";var Jz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G}=U,[I,Y]=Tz(z);return JZ(()=>{Y(z)},[z]),JZ(()=>{if(typeof window>"u")return;localStorage.setItem($,I)},[$,I]),IZ(M,{card:"DeviceStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:D})=>{Y(D)},remove:()=>{localStorage.removeItem($),Y("")}},children:IZ("input",{type:"hidden",id:Z,name:Z,value:I})})},GZ=Jz;var Iz=K({name:"DeviceStorageCard",component:GZ,metadata:{author:"PieData"}});import{useCallback as MU,useContext as RU,useEffect as Gz,useRef as Xz,useState as XZ}from"react";import{jsx as YZ}from"react/jsx-runtime";var Yz=({data:U,content:Z})=>{let{useLoader:$,noReturn:z,returnType:T,useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I}=U,Y=RU(N),D=RU(E)??w,[O,V]=XZ(!1),[B,q]=XZ(null),_=Xz(Z),F=RU(b),P=MU((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)_.current=Q;if(!z)q(Q)},[z]),W=MU((Q)=>{_.current=Q.content,q(Q.content)},[]),X=MU((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)for(let C of Q)F?.emit(C.name,C.data)},[z,F]);if(Gz(()=>{q(Z),V(!1)},[Z]),!B&&$)return Y;return YZ(M,{card:"AjaxGroupCard",data:U,methods:{changeContent:W},useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I,children:YZ(D,{uiConfig:B??_.current,setUiAjaxConfiguration:T==="events"?X:P})})},BZ=Yz;var Bz=K({name:"AjaxGroupCard",component:BZ,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as qZ}from"react";import{jsx as LU}from"react/jsx-runtime";var qz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,url:T,sx:H}=U,J=qZ(x),G=qZ(E)??w;return LU(M,{card:z,data:U,children:LU("div",{style:H,id:z,onClick:(Y)=>{if(T)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:LU(G,{setUiAjaxConfiguration:$,uiConfig:Z})})})},OZ=qz;var Oz=K({name:"BoxCard",component:OZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Qz}from"react";import{jsx as wU}from"react/jsx-runtime";var Wz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=Qz(E)??w;return wU(M,{card:z,data:U,children:wU("div",{style:T,id:z,children:Z.map((J,G)=>{return wU(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${G}`)})})})},QZ=Wz;var Dz=K({name:"OneOfCard",component:QZ,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as n}from"react";import{QueryClient as xz,QueryClientProvider as kz,useQuery as yz}from"@tanstack/react-query";import{useContext as Lz,useEffect as wz}from"react";import{useEffect as _z,useState as Vz}from"react";var zU=new Map,HU=new Map;function TU(U,Z){let $=`${U}::${Z}`,z=U?zU.get($):void 0,[T,H]=Vz(z??null);return _z(()=>{if(!U)return;if(zU.has($)){H(zU.get($));return}let J=HU.get($);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return zU.set($,I),HU.delete($),I}).catch((I)=>{throw HU.delete($),I}),HU.set($,J);let G=!1;return J.then((I)=>{if(!G)H(I)}).catch(()=>{}),()=>{G=!0}},[U,Z,$]),T}var Fz=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let $ of Z){let z=$.indexOf("=");if((z===-1?$:$.slice(0,z)).trim()===U){let H=z===-1?"":$.slice(z+1).trim();try{return decodeURIComponent(H)}catch{return H}}}return null},Kz={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,Z){return(U==="local"?window.localStorage:window.sessionStorage).getItem(Z)},readCookie:Fz,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let $=Z[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},WZ=Kz;var Az={};function g(){return Az}var DZ=new Map;var _Z=(U)=>{return DZ.has(U)?DZ.get(U):null};var VZ,Pz={isClient(){return!0},readSid(){return VZ},setSid(U){VZ=U},readWebStorage(U,Z){let $=g(),z=U==="local"?$.storage:$.sessionStorage;return z?z.getItem(Z):null},async readWebStorageAsync(U,Z){let $=g(),z=U==="local"?$.asyncStorage:$.asyncSessionStorage;if(z)return z.getItem(Z);let T=U==="local"?$.storage:$.sessionStorage;return T?T.getItem(Z):null},readCookie(U){let Z=g();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=g();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=g();return Z.getInput?Z.getInput(U):_Z(U)},submitGlobalForm(){g().submitForm?.()}},FZ=Pz;var Mz=typeof navigator<"u"&&navigator.product==="ReactNative",Rz=Mz?FZ:WZ,R=Rz;var r=A("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function KZ(){r.resolve?.()}function NU(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!r.promise)r.promise=new Promise((U)=>{r.resolve=()=>{U()}});return r.promise}var Nz=({children:U})=>{let Z=Lz(S),$=t(),z=TU($,"socketIO"),T=(H)=>{if(R.isClient())R.setSid(H.sid),KZ(),console.log(`SocketIO initialized: ${R.readSid()}`)};return wz(()=>{if(!Z)return;let H=()=>{console.log("SocketIO connected")},J=(G)=>{console.log(`SocketIO disconnected: ${G}`),Z.connect()};if(z)Z.on("pieinit",T),Z.on("connect",H),Z.on("disconnect",J),Z.connect();return()=>{if(z)Z.off("pieinit",T),Z.off("connect",H),Z.off("disconnect",J),Z.disconnect()}},[Z,z]),U},JU=Nz;import{useContext as Ez,useEffect as jz}from"react";var Cz=({children:U})=>{let Z=Ez(y),$=t(),z=TU($,"centrifuge");return jz(()=>{if(!Z)return;let T=()=>{console.log("Centrifuge connected")},H=(J)=>{console.log("Centrifuge disconnected:",J)};if(z)Z.on("connected",T),Z.on("disconnected",H),Z.connect();return()=>{if(z)Z.disconnect()}},[Z,z]),U},IU=Cz;import{createAxiosDateTransformer as Sz}from"axios-date-transformer";import{jsx as fz}from"react/jsx-runtime";function AZ(U,Z,$){if(!Z)return $;let z=U.replace(/^\//,""),T=Z[z];if(!T)return $;return fz(VU,{uiConfig:T})}import{jsx as L,Fragment as mz}from"react/jsx-runtime";var bz=({location:U,fallback:Z,piecache:$,onError:z,queryOptions:T,disableGlobalForm:H})=>{let J=i(),G=a(),I=k(),Y=n(()=>Sz({baseURL:J||""}),[J]),D=n(()=>c(),[]),O=n(()=>J?UU(J):null,[J]),V=n(()=>J?e(J,G):null,[J,G]),{data:B,isLoading:q,error:_}=yz({queryKey:["uiConfig",U.pathname+U.search,J],enabled:!!J,queryFn:async()=>{let P=new URLSearchParams(U.search);P.set("__pieroot","web");let W="/api/content"+U.pathname+"?"+P.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",W);let X=await Y.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",X.data);return X.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(P)=>Math.min(1000*2**P,30000),...T}),F=AZ(U.pathname,$,Z);if(!J)return F??null;if(I)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!$);if(_){if(I)console.error("[PieRoot] Error fetching UI configuration:",_),console.error("[PieRoot] Error details:",{message:_.message,status:_.response?.status,data:_.response?.data});return z?.(_),F}if(q||!B){if(I)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!B});return F}if(I)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L(b.Provider,{value:D,children:L(S.Provider,{value:O,children:L(y.Provider,{value:V,children:L(N.Provider,{value:Z??L(mz,{}),children:L(JU,{children:L(IU,{children:H?L(w,{uiConfig:B}):L("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:L(w,{uiConfig:B})})})})})})})})},vz=(U)=>{let Z=n(()=>new xz,[]),$=U.queryClient??Z;return L(x.Provider,{value:U.onNavigate,children:L(d.Provider,{value:U.config,children:L(v.Provider,{value:U.onError,children:L(kz,{client:$,children:L(bz,{...U})})})})})},EU=vz;import{useMemo as jU,useState as pz}from"react";import{QueryClient as hz,QueryClientProvider as gz}from"@tanstack/react-query";import{jsx as j,Fragment as cz}from"react/jsx-runtime";var uz=({location:U,fallback:Z,children:$,disableGlobalForm:z})=>{let T=i(),H=a(),J=k(),G=jU(()=>c(),[]),I=jU(()=>T?UU(T):null,[T]),Y=jU(()=>T?e(T,H):null,[T,H]);if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",H),console.log("[PieRoot] Fallback provided:",!!Z);return j(b.Provider,{value:G,children:j(S.Provider,{value:I,children:j(y.Provider,{value:Y,children:j(N.Provider,{value:Z??j(cz,{}),children:j(JU,{children:j(IU,{children:z?$:j("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},dz=(U)=>{let[Z]=pz(()=>new hz),$=U.queryClient??Z;return j(x.Provider,{value:U.onNavigate,children:j(d.Provider,{value:U.config,children:j(v.Provider,{value:U.onError,children:j(gz,{client:$,children:j(uz,{...U})})})})})},oz=dz;import{useMemo as lz}from"react";import{jsx as PZ}from"react/jsx-runtime";var iz=PZ("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),sz=({apiServer:U,pathname:Z="/",search:$="",centrifugeServer:z,fallback:T,enableRenderingLog:H=!1})=>{let J=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",G=lz(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:H,pageProcessor:"web"}),[J,z,H]);return PZ(EU,{location:{pathname:Z,search:$},config:G,fallback:T??iz,onNavigate:(Y)=>{if(typeof window<"u")window.history.pushState(null,"",Y)}})},rz=sz;import{useMemo as nz}from"react";var tz=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],az=new Set(["telegram:cloud","telegram:secure"]),GU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of tz){let $=Z+":";if(U.startsWith($))return{source:Z,key:U.slice($.length)}}return{source:"dom",key:U}},MZ=(U,Z=!1)=>{let{source:$,key:z}=GU(U);if($==="sid"){let H=R.readSid();if(!H)throw Error("SocketIO isn't initialized properly");return[H]}if($==="localStorage"||$==="sessionStorage")try{let H=R.readWebStorage($==="localStorage"?"local":"session",z);if(H===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[H]}catch(H){if(Z)console.warn(`Failed to read ${$} key ${z}:`,H);return[]}if($==="cookie"){let H=R.readCookie(z);if(H===null){if(Z)console.warn(`No cookie found for key ${z}`);return[]}return[H]}if($==="url"){let H=R.readUrlParams(z);if(!H.length&&Z)console.warn(`No URL query param found for key ${z}`);return H}if(az.has($)){if(Z)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=R.readDomInput(z);if(T===null){if(Z)console.warn(`No input found with name ${z}`);return[]}return T},ez=(U,Z,$)=>{let z=window.Telegram?.WebApp,T=U==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,H=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if($)console.warn(`${H} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(Z,(G,I)=>{if(G){if($)console.warn(`Failed to read ${H} key ${Z}:`,G);J([]);return}if(I==null||I===""){if($)console.warn(`No ${H} value found for key ${Z}`);J([]);return}J([I])})}catch(G){if($)console.warn(`Failed to read ${H} key ${Z}:`,G);J([])}})},RZ=async(U,Z=!1)=>{let{source:$,key:z}=GU(U);if($==="telegram:cloud"||$==="telegram:secure")return ez($,z,Z);if(($==="localStorage"||$==="sessionStorage")&&R.readWebStorageAsync)try{let T=await R.readWebStorageAsync($==="localStorage"?"local":"session",z);if(T===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[T]}catch(T){if(Z)console.warn(`Failed to read ${$} key ${z}:`,T);return[]}return MZ(U,Z)},UH=(U,Z={},$=[],z,T)=>{let H=T?.renderingLogEnabled??!1,J=T?.timeout,G=T?.retryPolicy,I=G?.maxRetries??0,Y=G?.baseDelay??1000,D=G?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",z,Z,$);return async(O={})=>{if(!R.isClient()){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!U){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await NU();let B=new FormData;for(let[F,P]of Object.entries({...Z,...O}))B.append(F,P);for(let F of $){let{key:P}=GU(F);for(let W of await RZ(F,H))B.append(P,W)}let q=V+"api/ajax_content"+z;U(null);let _;for(let F=0;F<=I;F++){if(F>0){let X=Y*2**(F-1);if(H)console.log(`AJAX retry ${F}/${I} after ${X}ms`);await new Promise((Q)=>setTimeout(Q,X))}let P=J!=null?new AbortController:null,W=P&&setTimeout(()=>P.abort(),J);try{let X=await fetch(q,{method:"POST",body:B,signal:P?.signal});if(W)clearTimeout(W);if(!X.ok&&D.includes(X.status)&&F<I){_=Error(`HTTP ${X.status}`);continue}let C=(X.headers.get("content-type")||"").includes("application/json");if(!!X.body?.getReader&&!C){let m=X.body.getReader(),p=new TextDecoder,u="";while(!0){let{done:YU,value:LZ}=await m.read();if(YU)break;u+=p.decode(LZ,{stream:!0});let CU=u.split(`
3
+ `);u=CU.pop()??"";for(let wZ of CU){let BU=wZ.trim();if(!BU)continue;try{let NZ=JSON.parse(BU);U([NZ])}catch{if(H)console.warn("Failed to parse streamed line:",BU)}}}if(u.trim())try{let YU=JSON.parse(u);U([YU])}catch{if(H)console.warn("Failed to parse final streamed line:",u)}return{}}else{let m=await X.json();return U(m),m}}catch(X){if(W)clearTimeout(W);if(_=X,F<I)continue;if(H)console.error("AJAX request failed:",X);return U(null),X}}if(H)console.error("AJAX request failed after retries:",_);return U(null),_}},ZH=(U,Z={},$=[],z,T)=>{let{apiServer:H,enableRenderingLog:J}=l(),G=JSON.stringify(Z),I=JSON.stringify($),Y=JSON.stringify(T);return nz(()=>UH(U,Z,$,z,{apiServer:H,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[U,G,I,z,H,J,Y])};import{clsx as $H}from"clsx";import{twMerge as zH}from"tailwind-merge";function HH(...U){return zH($H(U))}var TH=()=>{R.submitGlobalForm()};var JH=(U,Z)=>`${U}${OU}${Z}`;export{pZ as usePieEmit,ZH as useAjaxSubmit,iZ as unregisterComponent,DU as trackLazy,TH as submitGlobalForm,f as registry,K as registerPieComponent,lZ as registerMultipleComponents,RZ as readAjaxKeyAsync,MZ as readAjaxKey,cU as preloadComponent,aZ as prefetchLazyComponents,JH as pieName,GU as parseDepName,sZ as hasComponent,tZ as getRegistrySize,s as getRegistryEntry,dU as getLazyComponentNames,c as getEmitter,rZ as getComponentMeta,nZ as getAllRegisteredComponents,HH as cn,F$ as UnionCard,E as UIRendererContext,VU as UILoading,w as UI,S as SocketIOContext,Hz as SessionStorageCard,D$ as SequenceCard,EU as PieRoot,rz as PiePreviewRoot,d as PieConfigContext,M as PieCard,oz as PieBaseRoot,OU as PIEBREAK,Dz as OneOfCard,b as MittContext,Zz as IOEventsCard,x$ as HiddenCard,E$ as HTMLEmbedCard,N as FallbackContext,Iz as DeviceStorageCard,y as CentrifugeIOContext,Oz as BoxCard,p$ as AutoRedirectCard,Bz as AjaxGroupCard};
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- var yH=Object.create;var{getPrototypeOf:SH,defineProperty:HU,getOwnPropertyNames:IZ,getOwnPropertyDescriptor:bH}=Object,GZ=Object.prototype.hasOwnProperty;var XZ=(U,Z,H)=>{H=U!=null?yH(SH(U)):{};let $=Z||!U||!U.__esModule?HU(H,"default",{value:U,enumerable:!0}):H;for(let T of IZ(U))if(!GZ.call($,T))HU($,T,{get:()=>U[T],enumerable:!0});return $},JZ=new WeakMap,mH=(U)=>{var Z=JZ.get(U),H;if(Z)return Z;if(Z=HU({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")IZ(U).map(($)=>!GZ.call(Z,$)&&HU(Z,$,{get:()=>U[$],enumerable:!(H=bH(U,$))||H.enumerable}));return JZ.set(U,Z),Z};var vH=(U,Z)=>{for(var H in Z)HU(U,H,{get:Z[H],enumerable:!0,configurable:!0,set:($)=>Z[H]=()=>$})};var f$={};vH(f$,{usePieEmit:()=>VZ,useAjaxSubmit:()=>RH,unregisterComponent:()=>wZ,trackLazy:()=>FU,submitGlobalForm:()=>EH,registry:()=>y,registerPieComponent:()=>F,registerMultipleComponents:()=>LZ,readAjaxKeyAsync:()=>zZ,readAjaxKey:()=>$Z,preloadComponent:()=>lU,prefetchLazyComponents:()=>CZ,pieName:()=>jH,parseDepName:()=>BU,hasComponent:()=>NZ,getRegistrySize:()=>fZ,getRegistryEntry:()=>r,getLazyComponentNames:()=>oU,getEmitter:()=>c,getComponentMeta:()=>EZ,getAllRegisteredComponents:()=>jZ,cn:()=>NH,UnionCard:()=>uZ,UIRendererContext:()=>C,UILoading:()=>MU,UI:()=>N,SocketIOContext:()=>b,SessionStorageCard:()=>ZH,SequenceCard:()=>pZ,PieRoot:()=>pU,PiePreviewRoot:()=>AH,PieConfigContext:()=>u,PieCard:()=>M,PieBaseRoot:()=>KH,PIEBREAK:()=>DU,OneOfCard:()=>YH,MittContext:()=>m,IOEventsCard:()=>eZ,HiddenCard:()=>sZ,HTMLEmbedCard:()=>lZ,FallbackContext:()=>f,DeviceStorageCard:()=>$H,CentrifugeIOContext:()=>S,BoxCard:()=>IH,AutoRedirectCard:()=>tZ,AjaxGroupCard:()=>TH});module.exports=mH(f$);var k=require("react");var qU=require("react");var cU=globalThis,P=(U,Z)=>{let H=Symbol.for(U);if(!(H in cU))cU[H]=Z();return cU[H]};var u=P("@swarm.ing/pieui:context:pieConfig",()=>qU.createContext(null)),$U=()=>{let U=qU.useContext(u);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},zU=()=>{let{apiServer:U}=$U();return U},QU=zU,WU=()=>{let{centrifugeServer:U}=$U();return U};var p=()=>{let{enableRenderingLog:U}=$U();return U},YZ=p;var DU="__piedemo__";var OZ=require("react"),dU=require("centrifuge");var BZ=P("@swarm.ing/pieui:centrifuge-cache",()=>new Map),_U=(U,Z)=>{if(!Z)return null;let H=`${U}::${Z}`,$=BZ.get(H);if($)return $;async function T(){let J=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new dU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let z=new dU.Centrifuge(Z,{getToken:T});return BZ.set(H,z),z},pH=P("@swarm.ing/pieui:context:centrifuge",()=>OZ.createContext(null)),S=pH;var QZ=require("socket.io-client"),WZ=require("react");var qZ=P("@swarm.ing/pieui:socket-cache",()=>new Map),VU=(U)=>{let Z=qZ.get(U);if(Z)return Z;let H=QZ.io(U,{autoConnect:!1,transports:["websocket"]});return qZ.set(U,H),H},hH=P("@swarm.ing/pieui:context:socket",()=>WZ.createContext(null)),b=hH;var DZ=XZ(require("mitt")),i=require("react");function c(){return P("@swarm.ing/pieui:mitt-emitter",()=>DZ.default())}var _Z=P("@swarm.ing/pieui:context:mitt",()=>i.createContext(null));function VZ(U){let Z=i.useContext(_Z);return i.useCallback((H,$)=>{(Z??c()).emit(`pie${H}_${U}`,$)},[U,Z])}var m=_Z;function FZ(U){return U.wasRecovering===!0&&U.recovered===!1}function KZ(U){return U.recoverable===!1}var s=require("react/jsx-runtime"),gH=({card:U,data:Z,children:H,useSocketioSupport:$=!1,useCentrifugeSupport:T=!1,useMittSupport:z=!1,centrifugeChannel:J=void 0,methods:G=void 0,stored:I=void 0,onResync:X=void 0})=>{let W=YZ(),q=k.useRef(G);q.current=G;let V=k.useRef(X);if(V.current=X,W)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:$,centrifuge:T,mitt:z,centrifugeChannel:J}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!H);let B=k.useContext(b),O=k.useContext(S),_=k.useContext(m);if(k.useEffect(()=>{if(!B||!$||!q.current||!Z.name){if(W&&$)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:$,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let A=Object.keys(q.current??{}).map((D)=>{let Y=`pie${D}_${Z.name}`;if(W)console.log(`[PieCard] Socket.IO registering event: ${Y}`);let Q=(j)=>{q.current?.[D]?.(j)};return B.on(Y,Q),[Y,Q]});return()=>{A.forEach(([D,Y])=>{if(W)console.log(`[PieCard] Socket.IO unregistering event: ${D}`);B.off(D,Y)})}},[B,Z.name,$]),k.useEffect(()=>{if(!O||!T||!J||!Z.name){if(W&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let A=Object.keys(q.current??{}).map((D)=>{let Y=`pie${D}_${Z.name}_${J}`;if(W)console.log(`[PieCard] Centrifuge subscribing to channel: ${Y}`);let Q=O.newSubscription(Y,{recoverable:!0,positioned:!0});return Q.on("publication",(j)=>{if(W)console.log(`[PieCard] Centrifuge received data on ${Y}:`,j.data);q.current?.[D]?.(j.data)}),Q.on("subscribed",(j)=>{if(KZ(j))console.warn(`[PieCard] Centrifuge channel ${Y} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(FZ(j)){if(W)console.log(`[PieCard] Centrifuge recovery gap on ${Y}; requesting resync`);V.current?.({channel:Y,reason:"gap"})}}),Q.subscribe(),Q});return()=>{A.forEach((D)=>{if(W)console.log("[PieCard] Centrifuge unsubscribing from channel");D.unsubscribe(),O.removeSubscription(D)})}},[O,J,Z.name,T]),k.useEffect(()=>{if(!_||!z||!Z.name){if(W&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!_,useMittSupport:z,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let K=Object.keys(q.current??{}),A={};return K.forEach((D)=>{let Y=`pie${D}_${Z.name}`,Q=(j)=>{if(W)console.log(`[PieCard] Mitt registering event: ${Y}`);q.current?.[D]?.(j)};A[Y]=Q,_.on(Y,Q)}),()=>{Object.entries(A).forEach(([D,Y])=>{if(W)console.log(`[PieCard] Mitt unregistering event: ${D}`);_.off(D,Y)})}},[_,Z.name,z]),W)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return s.jsxs(s.Fragment,{children:[s.jsx("input",{type:"hidden",name:Z.name,value:JSON.stringify(I)}),H]});return H},M=gH;var PZ=require("react"),d=new Map;function AZ(U,Z){return Z.catch(()=>{if(d.get(U)===Z)d.delete(U)}),d.set(U,Z),Z}function FU(U,Z){return PZ.lazy(()=>{if(d.has(Z))return d.get(Z);return AZ(Z,U().then((H)=>H))})}var MZ=async(U,Z)=>{if(!Z)return;if(d.has(U))return d.get(U);return AZ(U,Z().then((H)=>H))};var y=P("@swarm.ing/pieui:component-registry",()=>new Map),uH=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let Z={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!Z.component&&Z.loader)Z.component=FU(Z.loader,U.name),Z.isLazy=!0;return Z};function F(U){let Z=uH(U);return y.set(Z.name,Z),Z.component}var LZ=(U)=>{U.forEach((Z)=>F(Z))},wZ=(U)=>{y.delete(U)},NZ=(U)=>{return y.has(U)},EZ=(U)=>{return y.get(U)?.metadata},r=(U)=>{return y.get(U)},jZ=()=>{return Array.from(y.keys())},fZ=()=>{return y.size},oU=()=>Array.from(y.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),lU=(U)=>{let Z=y.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return MZ(U,Z.loader)},RZ=!1,CZ=()=>{if(RZ||typeof window>"u")return;RZ=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=oU(),H="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),$=(T)=>{if(T>=Z.length)return;H(()=>{Promise.resolve().then(()=>lU(Z[T])).catch(()=>{}).finally(()=>$(T+1))})};$(0)};var TU=require("react");var xZ=require("react");var KU=require("react/jsx-runtime"),cH=P("@swarm.ing/pieui:context:fallback",()=>xZ.createContext(KU.jsx(KU.Fragment,{}))),f=cH;var kZ=require("react");var dH=P("@swarm.ing/pieui:context:lazyError",()=>kZ.createContext(void 0)),h=dH;var PU=require("react"),yZ=require("react/jsx-runtime"),oH=2,lH=400;class n extends PU.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<oH){let Z=lH*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((H)=>({failed:!1,attempt:H.attempt+1}))},Z)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return yZ.jsx(PU.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var AU=require("react/jsx-runtime");function iH({uiConfig:U,setUiAjaxConfiguration:Z}){let H=TU.useContext(f),$=TU.useContext(h),T=p();if(T)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!Z);let z=r(U.card);if(!z?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return H}if(T)console.log("[UI] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let J=z.component,G=AU.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(z.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",z.name);return AU.jsx(n,{name:z.name,fallback:z.fallback?AU.jsx(z.fallback,{}):H,onError:$,children:G})}if(T)console.log("[UI] Rendering component directly:",z.name);return G}var N=TU.memo(iH);var iU=require("react");var SZ=require("react");var sH=P("@swarm.ing/pieui:context:uiRenderer",()=>SZ.createContext(null)),C=sH;var JU=require("react/jsx-runtime");function bZ({uiConfig:U,setUiAjaxConfiguration:Z}){let H=iU.useContext(f),$=iU.useContext(h),T=p();if(T)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!Z);let z=r(U.card);if(!z?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return H}if(T)console.log("[UILoading] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata,hasFallback:!!z.fallback});if(z.fallback){if(T)console.log("[UILoading] Rendering fallback for:",z.name);let I=z.fallback;return JU.jsx(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",z.name);let J=z.component,G=JU.jsx(C.Provider,{value:bZ,children:JU.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(z.isLazy)return JU.jsx(n,{name:z.name,fallback:H,onError:$,children:G});return G}var MU=bZ;var mZ=require("react");var RU=require("react/jsx-runtime"),rH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:T}=U,z=mZ.useContext(C)??N;return RU.jsx(M,{card:$,data:U,children:RU.jsx("div",{style:T,id:$,children:Z.map((J,G)=>{return RU.jsx(z,{uiConfig:J,setUiAjaxConfiguration:H},`children-${G}`)})})})},vZ=rH;var pZ=F({name:"SequenceCard",component:vZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var hZ=require("react");var sU=require("react/jsx-runtime"),nH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$}=U,T=hZ.useContext(C)??N;return sU.jsx(M,{card:$,data:U,children:Z.map((z,J)=>{return sU.jsx(T,{uiConfig:z,setUiAjaxConfiguration:H},`children-${J}`)})})},gZ=nH;var uZ=F({name:"UnionCard",component:gZ,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var LU=require("react"),cZ=XZ(require("html-react-parser"));var x=require("react");function tH(){let U=new AudioContext,Z=U.createOscillator(),H=Z.connect(U.createMediaStreamDestination());Z.start();let $=H.stream.getAudioTracks()[0];return $.enabled=!1,$}function rU(U=null,Z){let[H,$]=x.useState(!1),T=x.useRef(null),z=x.useRef(null),J=x.useRef(null),G=x.useCallback(async(q,V=!0)=>{if(T.current)I();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")$(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))$(!1)},B.ontrack=(Q)=>{if(U)U.srcObject=Q.streams[0]},V){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(Q.getTracks()[0],Q)}else{let Q=tH();B.addTrack(Q)}let O=B.createDataChannel("oai-events");z.current=O,J.current=new Promise((Q)=>{O.addEventListener("open",()=>{Q()})});let _=await B.createOffer();await B.setLocalDescription(_);let Y=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:_.sdp,headers:{Authorization:`Bearer ${q}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:Y}),T.current=B,await J.current},[U]),I=x.useCallback(()=>{let q=z.current;if(q)q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),$(!1),T.current=null,z.current=null,J.current=null},[U]),X=x.useCallback((q)=>{let V=z.current;if(!V){console.error("Data channel is not ready",q);return}let B=new Date().toLocaleTimeString();if(q.event_id=q.event_id||crypto.randomUUID(),V.send(JSON.stringify(q)),!q.timestamp)q.timestamp=B;Z?.(q)},[Z,U]),W=x.useCallback((q)=>{if(!z.current){console.error("Data channel is not ready");return}let B=()=>{X({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:q}]}}),X({type:"response.create"})};if(J.current)J.current.then(B);else B()},[Z,U]);return x.useEffect(()=>{let q=z.current;if(!q)return;let V=(B)=>{let O=JSON.parse(B.data);if(!O.timestamp)O.timestamp=new Date().toLocaleTimeString();Z?.(O)};return q.addEventListener("message",V),()=>{q.removeEventListener("message",V)}},[Z,U]),{isSessionActive:H,startSession:G,stopSession:I,sendTextMessage:W}}var oZ=require("react/jsx-runtime"),aH=({data:U})=>{let{html:Z,useSocketioSupport:H,useCentrifugeSupport:$,useMittSupport:T,centrifugeChannel:z}=U,[J,G]=LU.useState(Z),{isSessionActive:I,startSession:X,sendTextMessage:W}=rU(null,(O)=>{if(console.log(O.type,O.type==="response.output_text.delta"&&O.delta),O.type==="response.output_text.delta"&&O.delta)G((_)=>_+O.delta)});return LU.useEffect(()=>{G(Z)},[Z]),oZ.jsx(M,{card:"HTMLEmbedCard",data:U,methods:{update:(O)=>{G(O.value)},generateUsingAI:async(O)=>{try{if(!I&&O.token)await X(O.token,!1);W(O.prompt)}catch(_){console.error("Failed to generate using AI",_)}},initializeAI:async(O)=>{if(!I&&O.token)await X(O.token,!1)}},useCentrifugeSupport:$,useSocketioSupport:H,useMittSupport:T,centrifugeChannel:z,children:cZ.default(J)})},dZ=aH;var lZ=F({name:"HTMLEmbedCard",component:dZ,metadata:{author:"Swarm.ing"}});var wU=require("react");var nU=require("react/jsx-runtime"),eH=({data:U})=>{let{name:Z,value:H,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J}=U,[G,I]=wU.useState(H);return wU.useEffect(()=>{I(H)},[H]),nU.jsx(M,{card:"HiddenCard",data:U,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J,methods:{update:({value:X})=>{I(X)}},children:nU.jsx("input",{type:"hidden",id:Z,name:Z,value:G})})},iZ=eH;var sZ=F({name:"HiddenCard",component:iZ,metadata:{author:"Swarm.ing"}});var IU=require("react");var rZ=require("react");var U$=P("@swarm.ing/pieui:context:navigate",()=>rZ.createContext(void 0)),v=U$;var NU=require("react/jsx-runtime"),Z$=({data:U})=>{let{url:Z}=U,H=IU.useContext(v),$=IU.useContext(f);return IU.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else H?.(Z)},[Z,H]),NU.jsx(NU.Fragment,{children:$})},nZ=Z$;var tZ=F({name:"AutoRedirectCard",component:nZ,metadata:{author:"Swarm.ing"}});var g=require("react-toastify"),EU=require("react-toastify");var a=require("react");var t=require("react/jsx-runtime"),H$={bounce:g.Bounce,slide:g.Slide,zoom:g.Zoom,flip:g.Flip},$$=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?H$[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};EU.toast(U.message,Z)},z$=(U)=>{console.log("Log event",U)},T$=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let Z=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch($){console.error("[IOEventsCard] Failed to show notification",$)}},H=window.Notification.permission;if(H==="granted"){Z();return}if(H==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then(($)=>{if($==="granted")Z()})},J$=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:T}=U,z=a.useContext(v),J=a.useRef(z);J.current=z;let G=a.useMemo(()=>({alert:$$,log:z$,push:T$,redirect:(I)=>{if(I.to){let X=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(X))window.location.href=X;else J.current?.(X)}else window.location.reload()},reload:(I)=>{if(I.to){let X=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(X))window.location.href=X;else J.current?.(X)}else window.location.reload()}}),[]);return t.jsx(t.Fragment,{children:t.jsx(M,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:T,methods:G,children:t.jsx(EU.ToastContainer,{})})})},aZ=J$;var eZ=F({name:"IOEventsCard",component:aZ,metadata:{author:"Swarm.ing"}});var GU=require("react");var tU=require("react/jsx-runtime"),I$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G}=U,[I,X]=GU.useState($);return GU.useEffect(()=>{X($)},[$]),GU.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(H,I)},[H,I]),tU.jsx(M,{card:"SessionStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:W})=>{X(W)},remove:()=>{sessionStorage.removeItem(H),X("")}},children:tU.jsx("input",{type:"hidden",id:Z,name:Z,value:I})})},UH=I$;var ZH=F({name:"SessionStorageCard",component:UH,metadata:{author:"PieData"}});var XU=require("react");var aU=require("react/jsx-runtime"),G$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G}=U,[I,X]=XU.useState($);return XU.useEffect(()=>{X($)},[$]),XU.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(H,I)},[H,I]),aU.jsx(M,{card:"DeviceStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:W})=>{X(W)},remove:()=>{localStorage.removeItem(H),X("")}},children:aU.jsx("input",{type:"hidden",id:Z,name:Z,value:I})})},HH=G$;var $H=F({name:"DeviceStorageCard",component:HH,metadata:{author:"PieData"}});var E=require("react");var eU=require("react/jsx-runtime"),X$=({data:U,content:Z})=>{let{useLoader:H,noReturn:$,returnType:T,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I}=U,X=E.useContext(f),W=E.useContext(C)??N,[q,V]=E.useState(!1),[B,O]=E.useState(null),_=E.useRef(Z),K=E.useContext(m),A=E.useCallback((Q)=>{if(Q===null)V(!0);else if(V(!1),!$)_.current=Q;if(!$)O(Q)},[$]),D=E.useCallback((Q)=>{_.current=Q.content,O(Q.content)},[]),Y=E.useCallback((Q)=>{if(Q===null)V(!0);else if(V(!1),!$)for(let j of Q)K?.emit(j.name,j.data)},[$,K]);if(E.useEffect(()=>{O(Z),V(!1)},[Z]),!B&&H)return X;return eU.jsx(M,{card:"AjaxGroupCard",data:U,methods:{changeContent:D},useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I,children:eU.jsx(W,{uiConfig:B??_.current,setUiAjaxConfiguration:T==="events"?Y:A})})},zH=X$;var TH=F({name:"AjaxGroupCard",component:zH,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var UZ=require("react");var jU=require("react/jsx-runtime"),Y$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,url:T,sx:z}=U,J=UZ.useContext(v),G=UZ.useContext(C)??N;return jU.jsx(M,{card:$,data:U,children:jU.jsx("div",{style:z,id:$,onClick:(X)=>{if(T)if(X.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:jU.jsx(G,{setUiAjaxConfiguration:H,uiConfig:Z})})})},JH=Y$;var IH=F({name:"BoxCard",component:JH,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var GH=require("react");var fU=require("react/jsx-runtime"),B$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:T}=U,z=GH.useContext(C)??N;return fU.jsx(M,{card:$,data:U,children:fU.jsx("div",{style:T,id:$,children:Z.map((J,G)=>{return fU.jsx(z,{uiConfig:J,setUiAjaxConfiguration:H},`children-${G}`)})})})},XH=B$;var YH=F({name:"OneOfCard",component:XH,metadata:{author:"Swarm.ing",description:"Different variants"}});var e=require("react"),UU=require("@tanstack/react-query");var SU=require("react");var kU=require("react"),CU=new Map,xU=new Map;function yU(U,Z){let H=`${U}::${Z}`,$=U?CU.get(H):void 0,[T,z]=kU.useState($??null);return kU.useEffect(()=>{if(!U)return;if(CU.has(H)){z(CU.get(H));return}let J=xU.get(H);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return CU.set(H,I),xU.delete(H),I}).catch((I)=>{throw xU.delete(H),I}),xU.set(H,J);let G=!1;return J.then((I)=>{if(!G)z(I)}).catch(()=>{}),()=>{G=!0}},[U,Z,H]),T}var O$=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let H of Z){let $=H.indexOf("=");if(($===-1?H:H.slice(0,$)).trim()===U){let z=$===-1?"":H.slice($+1).trim();try{return decodeURIComponent(z)}catch{return z}}}return null},q$={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,Z){return(U==="local"?window.localStorage:window.sessionStorage).getItem(Z)},readCookie:O$,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let H=Z[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},BH=q$;var Q$={};function o(){return Q$}var OH=new Map;var qH=(U)=>{return OH.has(U)?OH.get(U):null};var QH,W$={isClient(){return!0},readSid(){return QH},setSid(U){QH=U},readWebStorage(U,Z){let H=o(),$=U==="local"?H.storage:H.sessionStorage;return $?$.getItem(Z):null},async readWebStorageAsync(U,Z){let H=o(),$=U==="local"?H.asyncStorage:H.asyncSessionStorage;if($)return $.getItem(Z);let T=U==="local"?H.storage:H.sessionStorage;return T?T.getItem(Z):null},readCookie(U){let Z=o();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=o();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=o();return Z.getInput?Z.getInput(U):qH(U)},submitGlobalForm(){o().submitForm?.()}},WH=W$;var D$=typeof navigator<"u"&&navigator.product==="ReactNative",_$=D$?WH:BH,R=_$;var YU=P("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function DH(){YU.resolve?.()}function ZZ(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!YU.promise)YU.promise=new Promise((U)=>{YU.resolve=()=>{U()}});return YU.promise}var V$=({children:U})=>{let Z=SU.useContext(b),H=QU(),$=yU(H,"socketIO"),T=(z)=>{if(R.isClient())R.setSid(z.sid),DH(),console.log(`SocketIO initialized: ${R.readSid()}`)};return SU.useEffect(()=>{if(!Z)return;let z=()=>{console.log("SocketIO connected")},J=(G)=>{console.log(`SocketIO disconnected: ${G}`),Z.connect()};if($)Z.on("pieinit",T),Z.on("connect",z),Z.on("disconnect",J),Z.connect();return()=>{if($)Z.off("pieinit",T),Z.off("connect",z),Z.off("disconnect",J),Z.disconnect()}},[Z,$]),U},bU=V$;var mU=require("react");var F$=({children:U})=>{let Z=mU.useContext(S),H=QU(),$=yU(H,"centrifuge");return mU.useEffect(()=>{if(!Z)return;let T=()=>{console.log("Centrifuge connected")},z=(J)=>{console.log("Centrifuge disconnected:",J)};if($)Z.on("connected",T),Z.on("disconnected",z),Z.connect();return()=>{if($)Z.disconnect()}},[Z,$]),U},vU=F$;var FH=require("axios-date-transformer");var VH=require("react/jsx-runtime");function _H(U,Z,H){if(!Z)return H;let $=U.replace(/^\//,""),T=Z[$];if(!T)return H;return VH.jsx(MU,{uiConfig:T})}var L=require("react/jsx-runtime"),K$=({location:U,fallback:Z,piecache:H,onError:$,queryOptions:T,disableGlobalForm:z})=>{let J=zU(),G=WU(),I=p(),X=e.useMemo(()=>FH.createAxiosDateTransformer({baseURL:J||""}),[J]),W=e.useMemo(()=>c(),[]),q=e.useMemo(()=>J?VU(J):null,[J]),V=e.useMemo(()=>J?_U(J,G):null,[J,G]),{data:B,isLoading:O,error:_}=UU.useQuery({queryKey:["uiConfig",U.pathname+U.search,J],enabled:!!J,queryFn:async()=>{let A=new URLSearchParams(U.search);A.set("__pieroot","web");let D="/api/content"+U.pathname+"?"+A.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",D);let Y=await X.get(D,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",Y.data);return Y.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(A)=>Math.min(1000*2**A,30000),...T}),K=_H(U.pathname,H,Z);if(!J)return K??null;if(I)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!H);if(_){if(I)console.error("[PieRoot] Error fetching UI configuration:",_),console.error("[PieRoot] Error details:",{message:_.message,status:_.response?.status,data:_.response?.data});return $?.(_),K}if(O||!B){if(I)console.log("[PieRoot] Loading state:",{isLoading:O,hasUiConfiguration:!!B});return K}if(I)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L.jsx(m.Provider,{value:W,children:L.jsx(b.Provider,{value:q,children:L.jsx(S.Provider,{value:V,children:L.jsx(f.Provider,{value:Z??L.jsx(L.Fragment,{}),children:L.jsx(bU,{children:L.jsx(vU,{children:z?L.jsx(N,{uiConfig:B}):L.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:L.jsx(N,{uiConfig:B})})})})})})})})},P$=(U)=>{let Z=e.useMemo(()=>new UU.QueryClient,[]),H=U.queryClient??Z;return L.jsx(v.Provider,{value:U.onNavigate,children:L.jsx(u.Provider,{value:U.config,children:L.jsx(h.Provider,{value:U.onError,children:L.jsx(UU.QueryClientProvider,{client:H,children:L.jsx(K$,{...U})})})})})},pU=P$;var ZU=require("react"),hU=require("@tanstack/react-query");var w=require("react/jsx-runtime"),A$=({location:U,fallback:Z,children:H,disableGlobalForm:$})=>{let T=zU(),z=WU(),J=p(),G=ZU.useMemo(()=>c(),[]),I=ZU.useMemo(()=>T?VU(T):null,[T]),X=ZU.useMemo(()=>T?_U(T,z):null,[T,z]);if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!Z);return w.jsx(m.Provider,{value:G,children:w.jsx(b.Provider,{value:I,children:w.jsx(S.Provider,{value:X,children:w.jsx(f.Provider,{value:Z??w.jsx(w.Fragment,{}),children:w.jsx(bU,{children:w.jsx(vU,{children:$?H:w.jsx("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:H})})})})})})})},M$=(U)=>{let[Z]=ZU.useState(()=>new hU.QueryClient),H=U.queryClient??Z;return w.jsx(v.Provider,{value:U.onNavigate,children:w.jsx(u.Provider,{value:U.config,children:w.jsx(h.Provider,{value:U.onError,children:w.jsx(hU.QueryClientProvider,{client:H,children:w.jsx(A$,{...U})})})})})},KH=M$;var PH=require("react");var HZ=require("react/jsx-runtime"),R$=HZ.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),L$=({apiServer:U,pathname:Z="/",search:H="",centrifugeServer:$,fallback:T,enableRenderingLog:z=!1})=>{let J=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",G=PH.useMemo(()=>({apiServer:J,centrifugeServer:$,enableRenderingLog:z,pageProcessor:"web"}),[J,$,z]);return HZ.jsx(pU,{location:{pathname:Z,search:H},config:G,fallback:T??R$,onNavigate:(X)=>{if(typeof window<"u")window.history.pushState(null,"",X)}})},AH=L$;var MH=require("react");var w$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],N$=new Set(["telegram:cloud","telegram:secure"]),BU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of w$){let H=Z+":";if(U.startsWith(H))return{source:Z,key:U.slice(H.length)}}return{source:"dom",key:U}},$Z=(U,Z=!1)=>{let{source:H,key:$}=BU(U);if(H==="sid"){let z=R.readSid();if(!z)throw Error("SocketIO isn't initialized properly");return[z]}if(H==="localStorage"||H==="sessionStorage")try{let z=R.readWebStorage(H==="localStorage"?"local":"session",$);if(z===null){if(Z)console.warn(`No ${H} value found for key ${$}`);return[]}return[z]}catch(z){if(Z)console.warn(`Failed to read ${H} key ${$}:`,z);return[]}if(H==="cookie"){let z=R.readCookie($);if(z===null){if(Z)console.warn(`No cookie found for key ${$}`);return[]}return[z]}if(H==="url"){let z=R.readUrlParams($);if(!z.length&&Z)console.warn(`No URL query param found for key ${$}`);return z}if(N$.has(H)){if(Z)console.warn(`Source ${H} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=R.readDomInput($);if(T===null){if(Z)console.warn(`No input found with name ${$}`);return[]}return T},E$=(U,Z,H)=>{let $=window.Telegram?.WebApp,T=U==="telegram:cloud"?$?.CloudStorage:$?.SecureStorage,z=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if(H)console.warn(`${z} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(Z,(G,I)=>{if(G){if(H)console.warn(`Failed to read ${z} key ${Z}:`,G);J([]);return}if(I==null||I===""){if(H)console.warn(`No ${z} value found for key ${Z}`);J([]);return}J([I])})}catch(G){if(H)console.warn(`Failed to read ${z} key ${Z}:`,G);J([])}})},zZ=async(U,Z=!1)=>{let{source:H,key:$}=BU(U);if(H==="telegram:cloud"||H==="telegram:secure")return E$(H,$,Z);if((H==="localStorage"||H==="sessionStorage")&&R.readWebStorageAsync)try{let T=await R.readWebStorageAsync(H==="localStorage"?"local":"session",$);if(T===null){if(Z)console.warn(`No ${H} value found for key ${$}`);return[]}return[T]}catch(T){if(Z)console.warn(`Failed to read ${H} key ${$}:`,T);return[]}return $Z(U,Z)},j$=(U,Z={},H=[],$,T)=>{let z=T?.renderingLogEnabled??!1,J=T?.timeout,G=T?.retryPolicy,I=G?.maxRetries??0,X=G?.baseDelay??1000,W=G?.retryOn??[502,503,504];if(z)console.log("Registering AJAX: ",$,Z,H);return async(q={})=>{if(!R.isClient()){if(z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(z)console.warn("AJAX skipped: apiServer is missing");return}if(!$||!U){if(z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(H.includes("sid"))await ZZ();let B=new FormData;for(let[K,A]of Object.entries({...Z,...q}))B.append(K,A);for(let K of H){let{key:A}=BU(K);for(let D of await zZ(K,z))B.append(A,D)}let O=V+"api/ajax_content"+$;U(null);let _;for(let K=0;K<=I;K++){if(K>0){let Y=X*2**(K-1);if(z)console.log(`AJAX retry ${K}/${I} after ${Y}ms`);await new Promise((Q)=>setTimeout(Q,Y))}let A=J!=null?new AbortController:null,D=A&&setTimeout(()=>A.abort(),J);try{let Y=await fetch(O,{method:"POST",body:B,signal:A?.signal});if(D)clearTimeout(D);if(!Y.ok&&W.includes(Y.status)&&K<I){_=Error(`HTTP ${Y.status}`);continue}let j=(Y.headers.get("content-type")||"").includes("application/json");if(!!Y.body?.getReader&&!j){let OU=Y.body.getReader(),fH=new TextDecoder,l="";while(!0){let{done:gU,value:CH}=await OU.read();if(gU)break;l+=fH.decode(CH,{stream:!0});let TZ=l.split(`
3
- `);l=TZ.pop()??"";for(let xH of TZ){let uU=xH.trim();if(!uU)continue;try{let kH=JSON.parse(uU);U([kH])}catch{if(z)console.warn("Failed to parse streamed line:",uU)}}}if(l.trim())try{let gU=JSON.parse(l);U([gU])}catch{if(z)console.warn("Failed to parse final streamed line:",l)}return{}}else{let OU=await Y.json();return U(OU),OU}}catch(Y){if(D)clearTimeout(D);if(_=Y,K<I)continue;if(z)console.error("AJAX request failed:",Y);return U(null),Y}}if(z)console.error("AJAX request failed after retries:",_);return U(null),_}},RH=(U,Z={},H=[],$,T)=>{let{apiServer:z,enableRenderingLog:J}=$U(),G=JSON.stringify(Z),I=JSON.stringify(H),X=JSON.stringify(T);return MH.useMemo(()=>j$(U,Z,H,$,{apiServer:z,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[U,G,I,$,z,J,X])};var LH=require("clsx"),wH=require("tailwind-merge");function NH(...U){return wH.twMerge(LH.clsx(U))}var EH=()=>{R.submitGlobalForm()};var jH=(U,Z)=>`${U}${DU}${Z}`;
2
+ var b$=Object.create;var{getPrototypeOf:v$,defineProperty:HU,getOwnPropertyNames:XZ,getOwnPropertyDescriptor:m$}=Object,YZ=Object.prototype.hasOwnProperty;var BZ=(U,Z,$)=>{$=U!=null?b$(v$(U)):{};let z=Z||!U||!U.__esModule?HU($,"default",{value:U,enumerable:!0}):$;for(let T of XZ(U))if(!YZ.call(z,T))HU(z,T,{get:()=>U[T],enumerable:!0});return z},GZ=new WeakMap,p$=(U)=>{var Z=GZ.get(U),$;if(Z)return Z;if(Z=HU({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")XZ(U).map((z)=>!YZ.call(Z,z)&&HU(Z,z,{get:()=>U[z],enumerable:!($=m$(U,z))||$.enumerable}));return GZ.set(U,Z),Z};var h$=(U,Z)=>{for(var $ in Z)HU(U,$,{get:Z[$],enumerable:!0,configurable:!0,set:(z)=>Z[$]=()=>z})};var xz={};h$(xz,{usePieEmit:()=>KZ,useAjaxSubmit:()=>N$,unregisterComponent:()=>jZ,trackLazy:()=>KU,submitGlobalForm:()=>f$,registry:()=>y,registerPieComponent:()=>F,registerMultipleComponents:()=>EZ,readAjaxKeyAsync:()=>JZ,readAjaxKey:()=>TZ,preloadComponent:()=>sU,prefetchLazyComponents:()=>yZ,pieName:()=>x$,parseDepName:()=>OU,hasComponent:()=>CZ,getRegistrySize:()=>kZ,getRegistryEntry:()=>t,getLazyComponentNames:()=>iU,getEmitter:()=>o,getComponentMeta:()=>fZ,getAllRegisteredComponents:()=>xZ,cn:()=>C$,UnionCard:()=>oZ,UIRendererContext:()=>C,UILoading:()=>RU,UI:()=>N,SocketIOContext:()=>b,SessionStorageCard:()=>H$,SequenceCard:()=>uZ,PieRoot:()=>hU,PiePreviewRoot:()=>L$,PieConfigContext:()=>c,PieCard:()=>M,PieBaseRoot:()=>M$,PIEBREAK:()=>_U,OneOfCard:()=>O$,MittContext:()=>v,IOEventsCard:()=>$$,HiddenCard:()=>tZ,HTMLEmbedCard:()=>rZ,FallbackContext:()=>j,DeviceStorageCard:()=>J$,CentrifugeIOContext:()=>S,BoxCard:()=>Y$,AutoRedirectCard:()=>U$,AjaxGroupCard:()=>G$});module.exports=p$(xz);var k=require("react");var QU=require("react");var oU=globalThis,A=(U,Z)=>{let $=Symbol.for(U);if(!($ in oU))oU[$]=Z();return oU[$]};var c=A("@swarm.ing/pieui:context:pieConfig",()=>QU.createContext(null)),TU=()=>{let U=QU.useContext(c);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},JU=()=>{let{apiServer:U}=TU();return U},WU=JU,DU=()=>{let{centrifugeServer:U}=TU();return U};var p=()=>{let{enableRenderingLog:U}=TU();return U},qZ=p;var _U="__piedemo__";var QZ=require("react"),lU=require("centrifuge");var OZ=A("@swarm.ing/pieui:centrifuge-cache",()=>new Map),VU=(U,Z)=>{if(!Z)return null;let $=`${U}::${Z}`,z=OZ.get($);if(z)return z;async function T(){let J=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new lU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let H=new lU.Centrifuge(Z,{getToken:T});return OZ.set($,H),H},g$=A("@swarm.ing/pieui:context:centrifuge",()=>QZ.createContext(null)),S=g$;var DZ=require("socket.io-client"),_Z=require("react");var WZ=A("@swarm.ing/pieui:socket-cache",()=>new Map),FU=(U)=>{let Z=WZ.get(U);if(Z)return Z;let $=DZ.io(U,{autoConnect:!1,transports:["websocket"]});return WZ.set(U,$),$},u$=A("@swarm.ing/pieui:context:socket",()=>_Z.createContext(null)),b=u$;var VZ=BZ(require("mitt")),r=require("react");function o(){return A("@swarm.ing/pieui:mitt-emitter",()=>VZ.default())}var FZ=A("@swarm.ing/pieui:context:mitt",()=>r.createContext(null));function KZ(U){let Z=r.useContext(FZ);return r.useCallback(($,z)=>{(Z??o()).emit(`pie${$}_${U}`,z)},[U,Z])}var v=FZ;function AZ(U){return U.wasRecovering===!0&&U.recovered===!1}function PZ(U){return U.recoverable===!1}function MZ(U,Z,$){let z=U.getSubscription(Z);if(z)return{subscription:z,createdHere:!1};return{subscription:U.newSubscription(Z,$),createdHere:!0}}var n=require("react/jsx-runtime"),d$=({card:U,data:Z,children:$,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:H=!1,centrifugeChannel:J=void 0,methods:G=void 0,stored:I=void 0,onResync:Y=void 0})=>{let D=qZ(),O=k.useRef(G);O.current=G;let V=k.useRef(Y);if(V.current=Y,D)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:T,mitt:H,centrifugeChannel:J}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!$);let B=k.useContext(b),q=k.useContext(S),_=k.useContext(v);if(k.useEffect(()=>{if(!B||!z||!O.current||!Z.name){if(D&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:z,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let P=Object.keys(O.current??{}).map((W)=>{let X=`pie${W}_${Z.name}`;if(D)console.log(`[PieCard] Socket.IO registering event: ${X}`);let Q=(x)=>{O.current?.[W]?.(x)};return B.on(X,Q),[X,Q]});return()=>{P.forEach(([W,X])=>{if(D)console.log(`[PieCard] Socket.IO unregistering event: ${W}`);B.off(W,X)})}},[B,Z.name,z]),k.useEffect(()=>{if(!q||!T||!J||!Z.name){if(D&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!q,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let P=Object.keys(O.current??{}).map((W)=>{let X=`pie${W}_${Z.name}_${J}`;if(D)console.log(`[PieCard] Centrifuge subscribing to channel: ${X}`);let{subscription:Q,createdHere:x}=MZ(q,X,{recoverable:!0,positioned:!0}),uU=(d)=>{if(D)console.log(`[PieCard] Centrifuge received data on ${X}:`,d.data);O.current?.[W]?.(d.data)},u=(d)=>{if(PZ(d))console.warn(`[PieCard] Centrifuge channel ${X} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(AZ(d)){if(D)console.log(`[PieCard] Centrifuge recovery gap on ${X}; requesting resync`);V.current?.({channel:X,reason:"gap"})}};return Q.on("publication",uU),Q.on("subscribed",u),Q.subscribe(),{subscription:Q,createdHere:x,onPublication:uU,onSubscribed:u}});return()=>{P.forEach(({subscription:W,createdHere:X,onPublication:Q,onSubscribed:x})=>{if(D)console.log("[PieCard] Centrifuge unsubscribing from channel");if(W.off("publication",Q),W.off("subscribed",x),X)W.unsubscribe(),q.removeSubscription(W)})}},[q,J,Z.name,T]),k.useEffect(()=>{if(!_||!H||!Z.name){if(D&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!_,useMittSupport:H,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let K=Object.keys(O.current??{}),P={};return K.forEach((W)=>{let X=`pie${W}_${Z.name}`,Q=(x)=>{if(D)console.log(`[PieCard] Mitt registering event: ${X}`);O.current?.[W]?.(x)};P[X]=Q,_.on(X,Q)}),()=>{Object.entries(P).forEach(([W,X])=>{if(D)console.log(`[PieCard] Mitt unregistering event: ${W}`);_.off(W,X)})}},[_,Z.name,H]),D)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return n.jsxs(n.Fragment,{children:[n.jsx("input",{type:"hidden",name:Z.name,value:JSON.stringify(I)}),$]});return $},M=d$;var RZ=require("react"),l=new Map;function LZ(U,Z){return Z.catch(()=>{if(l.get(U)===Z)l.delete(U)}),l.set(U,Z),Z}function KU(U,Z){return RZ.lazy(()=>{if(l.has(Z))return l.get(Z);return LZ(Z,U().then(($)=>$))})}var wZ=async(U,Z)=>{if(!Z)return;if(l.has(U))return l.get(U);return LZ(U,Z().then(($)=>$))};var y=A("@swarm.ing/pieui:component-registry",()=>new Map),c$=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let Z={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!Z.component&&Z.loader)Z.component=KU(Z.loader,U.name),Z.isLazy=!0;return Z};function F(U){let Z=c$(U);return y.set(Z.name,Z),Z.component}var EZ=(U)=>{U.forEach((Z)=>F(Z))},jZ=(U)=>{y.delete(U)},CZ=(U)=>{return y.has(U)},fZ=(U)=>{return y.get(U)?.metadata},t=(U)=>{return y.get(U)},xZ=()=>{return Array.from(y.keys())},kZ=()=>{return y.size},iU=()=>Array.from(y.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),sU=(U)=>{let Z=y.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return wZ(U,Z.loader)},NZ=!1,yZ=()=>{if(NZ||typeof window>"u")return;NZ=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=iU(),$="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=Z.length)return;$(()=>{Promise.resolve().then(()=>sU(Z[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};var IU=require("react");var SZ=require("react");var AU=require("react/jsx-runtime"),o$=A("@swarm.ing/pieui:context:fallback",()=>SZ.createContext(AU.jsx(AU.Fragment,{}))),j=o$;var bZ=require("react");var l$=A("@swarm.ing/pieui:context:lazyError",()=>bZ.createContext(void 0)),h=l$;var PU=require("react"),vZ=require("react/jsx-runtime"),i$=2,s$=400;class a extends PU.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<i$){let Z=s$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},Z)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return vZ.jsx(PU.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var MU=require("react/jsx-runtime");function r$({uiConfig:U,setUiAjaxConfiguration:Z}){let $=IU.useContext(j),z=IU.useContext(h),T=p();if(T)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!Z);let H=t(U.card);if(!H?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(T)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let J=H.component,G=MU.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(H.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",H.name);return MU.jsx(a,{name:H.name,fallback:H.fallback?MU.jsx(H.fallback,{}):$,onError:z,children:G})}if(T)console.log("[UI] Rendering component directly:",H.name);return G}var N=IU.memo(r$);var rU=require("react");var mZ=require("react");var n$=A("@swarm.ing/pieui:context:uiRenderer",()=>mZ.createContext(null)),C=n$;var GU=require("react/jsx-runtime");function pZ({uiConfig:U,setUiAjaxConfiguration:Z}){let $=rU.useContext(j),z=rU.useContext(h),T=p();if(T)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!Z);let H=t(U.card);if(!H?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(T)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(T)console.log("[UILoading] Rendering fallback for:",H.name);let I=H.fallback;return GU.jsx(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",H.name);let J=H.component,G=GU.jsx(C.Provider,{value:pZ,children:GU.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(H.isLazy)return GU.jsx(a,{name:H.name,fallback:$,onError:z,children:G});return G}var RU=pZ;var hZ=require("react");var LU=require("react/jsx-runtime"),t$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=hZ.useContext(C)??N;return LU.jsx(M,{card:z,data:U,children:LU.jsx("div",{style:T,id:z,children:Z.map((J,G)=>{return LU.jsx(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${G}`)})})})},gZ=t$;var uZ=F({name:"SequenceCard",component:gZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var dZ=require("react");var nU=require("react/jsx-runtime"),a$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z}=U,T=dZ.useContext(C)??N;return nU.jsx(M,{card:z,data:U,children:Z.map((H,J)=>{return nU.jsx(T,{uiConfig:H,setUiAjaxConfiguration:$},`children-${J}`)})})},cZ=a$;var oZ=F({name:"UnionCard",component:cZ,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var wU=require("react"),lZ=BZ(require("html-react-parser"));var f=require("react");function e$(){let U=new AudioContext,Z=U.createOscillator(),$=Z.connect(U.createMediaStreamDestination());Z.start();let z=$.stream.getAudioTracks()[0];return z.enabled=!1,z}function tU(U=null,Z){let[$,z]=f.useState(!1),T=f.useRef(null),H=f.useRef(null),J=f.useRef(null),G=f.useCallback(async(O,V=!0)=>{if(T.current)I();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))z(!1)},B.ontrack=(Q)=>{if(U)U.srcObject=Q.streams[0]},V){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(Q.getTracks()[0],Q)}else{let Q=e$();B.addTrack(Q)}let q=B.createDataChannel("oai-events");H.current=q,J.current=new Promise((Q)=>{q.addEventListener("open",()=>{Q()})});let _=await B.createOffer();await B.setLocalDescription(_);let X=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:_.sdp,headers:{Authorization:`Bearer ${O}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:X}),T.current=B,await J.current},[U]),I=f.useCallback(()=>{let O=H.current;if(O)O.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,H.current=null,J.current=null},[U]),Y=f.useCallback((O)=>{let V=H.current;if(!V){console.error("Data channel is not ready",O);return}let B=new Date().toLocaleTimeString();if(O.event_id=O.event_id||crypto.randomUUID(),V.send(JSON.stringify(O)),!O.timestamp)O.timestamp=B;Z?.(O)},[Z,U]),D=f.useCallback((O)=>{if(!H.current){console.error("Data channel is not ready");return}let B=()=>{Y({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:O}]}}),Y({type:"response.create"})};if(J.current)J.current.then(B);else B()},[Z,U]);return f.useEffect(()=>{let O=H.current;if(!O)return;let V=(B)=>{let q=JSON.parse(B.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();Z?.(q)};return O.addEventListener("message",V),()=>{O.removeEventListener("message",V)}},[Z,U]),{isSessionActive:$,startSession:G,stopSession:I,sendTextMessage:D}}var sZ=require("react/jsx-runtime"),Uz=({data:U})=>{let{html:Z,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:H}=U,[J,G]=wU.useState(Z),{isSessionActive:I,startSession:Y,sendTextMessage:D}=tU(null,(q)=>{if(console.log(q.type,q.type==="response.output_text.delta"&&q.delta),q.type==="response.output_text.delta"&&q.delta)G((_)=>_+q.delta)});return wU.useEffect(()=>{G(Z)},[Z]),sZ.jsx(M,{card:"HTMLEmbedCard",data:U,methods:{update:(q)=>{G(q.value)},generateUsingAI:async(q)=>{try{if(!I&&q.token)await Y(q.token,!1);D(q.prompt)}catch(_){console.error("Failed to generate using AI",_)}},initializeAI:async(q)=>{if(!I&&q.token)await Y(q.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:$,useMittSupport:T,centrifugeChannel:H,children:lZ.default(J)})},iZ=Uz;var rZ=F({name:"HTMLEmbedCard",component:iZ,metadata:{author:"Swarm.ing"}});var NU=require("react");var aU=require("react/jsx-runtime"),Zz=({data:U})=>{let{name:Z,value:$,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J}=U,[G,I]=NU.useState($);return NU.useEffect(()=>{I($)},[$]),aU.jsx(M,{card:"HiddenCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J,methods:{update:({value:Y})=>{I(Y)}},children:aU.jsx("input",{type:"hidden",id:Z,name:Z,value:G})})},nZ=Zz;var tZ=F({name:"HiddenCard",component:nZ,metadata:{author:"Swarm.ing"}});var XU=require("react");var aZ=require("react");var $z=A("@swarm.ing/pieui:context:navigate",()=>aZ.createContext(void 0)),m=$z;var EU=require("react/jsx-runtime"),zz=({data:U})=>{let{url:Z}=U,$=XU.useContext(m),z=XU.useContext(j);return XU.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else $?.(Z)},[Z,$]),EU.jsx(EU.Fragment,{children:z})},eZ=zz;var U$=F({name:"AutoRedirectCard",component:eZ,metadata:{author:"Swarm.ing"}});var g=require("react-toastify"),jU=require("react-toastify");var UU=require("react");var e=require("react/jsx-runtime"),Hz={bounce:g.Bounce,slide:g.Slide,zoom:g.Zoom,flip:g.Flip},Tz=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?Hz[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};jU.toast(U.message,Z)},Jz=(U)=>{console.log("Log event",U)},Iz=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let Z=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},$=window.Notification.permission;if($==="granted"){Z();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")Z()})},Gz=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T}=U,H=UU.useContext(m),J=UU.useRef(H);J.current=H;let G=UU.useMemo(()=>({alert:Tz,log:Jz,push:Iz,redirect:(I)=>{if(I.to){let Y=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()},reload:(I)=>{if(I.to){let Y=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()}}),[]);return e.jsx(e.Fragment,{children:e.jsx(M,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T,methods:G,children:e.jsx(jU.ToastContainer,{})})})},Z$=Gz;var $$=F({name:"IOEventsCard",component:Z$,metadata:{author:"Swarm.ing"}});var YU=require("react");var eU=require("react/jsx-runtime"),Xz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G}=U,[I,Y]=YU.useState(z);return YU.useEffect(()=>{Y(z)},[z]),YU.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem($,I)},[$,I]),eU.jsx(M,{card:"SessionStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:D})=>{Y(D)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:eU.jsx("input",{type:"hidden",id:Z,name:Z,value:I})})},z$=Xz;var H$=F({name:"SessionStorageCard",component:z$,metadata:{author:"PieData"}});var BU=require("react");var UZ=require("react/jsx-runtime"),Yz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G}=U,[I,Y]=BU.useState(z);return BU.useEffect(()=>{Y(z)},[z]),BU.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem($,I)},[$,I]),UZ.jsx(M,{card:"DeviceStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:D})=>{Y(D)},remove:()=>{localStorage.removeItem($),Y("")}},children:UZ.jsx("input",{type:"hidden",id:Z,name:Z,value:I})})},T$=Yz;var J$=F({name:"DeviceStorageCard",component:T$,metadata:{author:"PieData"}});var E=require("react");var ZZ=require("react/jsx-runtime"),Bz=({data:U,content:Z})=>{let{useLoader:$,noReturn:z,returnType:T,useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I}=U,Y=E.useContext(j),D=E.useContext(C)??N,[O,V]=E.useState(!1),[B,q]=E.useState(null),_=E.useRef(Z),K=E.useContext(v),P=E.useCallback((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)_.current=Q;if(!z)q(Q)},[z]),W=E.useCallback((Q)=>{_.current=Q.content,q(Q.content)},[]),X=E.useCallback((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)for(let x of Q)K?.emit(x.name,x.data)},[z,K]);if(E.useEffect(()=>{q(Z),V(!1)},[Z]),!B&&$)return Y;return ZZ.jsx(M,{card:"AjaxGroupCard",data:U,methods:{changeContent:W},useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I,children:ZZ.jsx(D,{uiConfig:B??_.current,setUiAjaxConfiguration:T==="events"?X:P})})},I$=Bz;var G$=F({name:"AjaxGroupCard",component:I$,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var $Z=require("react");var CU=require("react/jsx-runtime"),qz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,url:T,sx:H}=U,J=$Z.useContext(m),G=$Z.useContext(C)??N;return CU.jsx(M,{card:z,data:U,children:CU.jsx("div",{style:H,id:z,onClick:(Y)=>{if(T)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:CU.jsx(G,{setUiAjaxConfiguration:$,uiConfig:Z})})})},X$=qz;var Y$=F({name:"BoxCard",component:X$,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var B$=require("react");var fU=require("react/jsx-runtime"),Oz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=B$.useContext(C)??N;return fU.jsx(M,{card:z,data:U,children:fU.jsx("div",{style:T,id:z,children:Z.map((J,G)=>{return fU.jsx(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${G}`)})})})},q$=Oz;var O$=F({name:"OneOfCard",component:q$,metadata:{author:"Swarm.ing",description:"Different variants"}});var ZU=require("react"),$U=require("@tanstack/react-query");var bU=require("react");var yU=require("react"),xU=new Map,kU=new Map;function SU(U,Z){let $=`${U}::${Z}`,z=U?xU.get($):void 0,[T,H]=yU.useState(z??null);return yU.useEffect(()=>{if(!U)return;if(xU.has($)){H(xU.get($));return}let J=kU.get($);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return xU.set($,I),kU.delete($),I}).catch((I)=>{throw kU.delete($),I}),kU.set($,J);let G=!1;return J.then((I)=>{if(!G)H(I)}).catch(()=>{}),()=>{G=!0}},[U,Z,$]),T}var Qz=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let $ of Z){let z=$.indexOf("=");if((z===-1?$:$.slice(0,z)).trim()===U){let H=z===-1?"":$.slice(z+1).trim();try{return decodeURIComponent(H)}catch{return H}}}return null},Wz={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,Z){return(U==="local"?window.localStorage:window.sessionStorage).getItem(Z)},readCookie:Qz,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let $=Z[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},Q$=Wz;var Dz={};function i(){return Dz}var W$=new Map;var D$=(U)=>{return W$.has(U)?W$.get(U):null};var _$,_z={isClient(){return!0},readSid(){return _$},setSid(U){_$=U},readWebStorage(U,Z){let $=i(),z=U==="local"?$.storage:$.sessionStorage;return z?z.getItem(Z):null},async readWebStorageAsync(U,Z){let $=i(),z=U==="local"?$.asyncStorage:$.asyncSessionStorage;if(z)return z.getItem(Z);let T=U==="local"?$.storage:$.sessionStorage;return T?T.getItem(Z):null},readCookie(U){let Z=i();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=i();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=i();return Z.getInput?Z.getInput(U):D$(U)},submitGlobalForm(){i().submitForm?.()}},V$=_z;var Vz=typeof navigator<"u"&&navigator.product==="ReactNative",Fz=Vz?V$:Q$,R=Fz;var qU=A("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function F$(){qU.resolve?.()}function zZ(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!qU.promise)qU.promise=new Promise((U)=>{qU.resolve=()=>{U()}});return qU.promise}var Kz=({children:U})=>{let Z=bU.useContext(b),$=WU(),z=SU($,"socketIO"),T=(H)=>{if(R.isClient())R.setSid(H.sid),F$(),console.log(`SocketIO initialized: ${R.readSid()}`)};return bU.useEffect(()=>{if(!Z)return;let H=()=>{console.log("SocketIO connected")},J=(G)=>{console.log(`SocketIO disconnected: ${G}`),Z.connect()};if(z)Z.on("pieinit",T),Z.on("connect",H),Z.on("disconnect",J),Z.connect();return()=>{if(z)Z.off("pieinit",T),Z.off("connect",H),Z.off("disconnect",J),Z.disconnect()}},[Z,z]),U},vU=Kz;var mU=require("react");var Az=({children:U})=>{let Z=mU.useContext(S),$=WU(),z=SU($,"centrifuge");return mU.useEffect(()=>{if(!Z)return;let T=()=>{console.log("Centrifuge connected")},H=(J)=>{console.log("Centrifuge disconnected:",J)};if(z)Z.on("connected",T),Z.on("disconnected",H),Z.connect();return()=>{if(z)Z.disconnect()}},[Z,z]),U},pU=Az;var P$=require("axios-date-transformer");var A$=require("react/jsx-runtime");function K$(U,Z,$){if(!Z)return $;let z=U.replace(/^\//,""),T=Z[z];if(!T)return $;return A$.jsx(RU,{uiConfig:T})}var L=require("react/jsx-runtime"),Pz=({location:U,fallback:Z,piecache:$,onError:z,queryOptions:T,disableGlobalForm:H})=>{let J=JU(),G=DU(),I=p(),Y=ZU.useMemo(()=>P$.createAxiosDateTransformer({baseURL:J||""}),[J]),D=ZU.useMemo(()=>o(),[]),O=ZU.useMemo(()=>J?FU(J):null,[J]),V=ZU.useMemo(()=>J?VU(J,G):null,[J,G]),{data:B,isLoading:q,error:_}=$U.useQuery({queryKey:["uiConfig",U.pathname+U.search,J],enabled:!!J,queryFn:async()=>{let P=new URLSearchParams(U.search);P.set("__pieroot","web");let W="/api/content"+U.pathname+"?"+P.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",W);let X=await Y.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",X.data);return X.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(P)=>Math.min(1000*2**P,30000),...T}),K=K$(U.pathname,$,Z);if(!J)return K??null;if(I)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!$);if(_){if(I)console.error("[PieRoot] Error fetching UI configuration:",_),console.error("[PieRoot] Error details:",{message:_.message,status:_.response?.status,data:_.response?.data});return z?.(_),K}if(q||!B){if(I)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!B});return K}if(I)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L.jsx(v.Provider,{value:D,children:L.jsx(b.Provider,{value:O,children:L.jsx(S.Provider,{value:V,children:L.jsx(j.Provider,{value:Z??L.jsx(L.Fragment,{}),children:L.jsx(vU,{children:L.jsx(pU,{children:H?L.jsx(N,{uiConfig:B}):L.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:L.jsx(N,{uiConfig:B})})})})})})})})},Mz=(U)=>{let Z=ZU.useMemo(()=>new $U.QueryClient,[]),$=U.queryClient??Z;return L.jsx(m.Provider,{value:U.onNavigate,children:L.jsx(c.Provider,{value:U.config,children:L.jsx(h.Provider,{value:U.onError,children:L.jsx($U.QueryClientProvider,{client:$,children:L.jsx(Pz,{...U})})})})})},hU=Mz;var zU=require("react"),gU=require("@tanstack/react-query");var w=require("react/jsx-runtime"),Rz=({location:U,fallback:Z,children:$,disableGlobalForm:z})=>{let T=JU(),H=DU(),J=p(),G=zU.useMemo(()=>o(),[]),I=zU.useMemo(()=>T?FU(T):null,[T]),Y=zU.useMemo(()=>T?VU(T,H):null,[T,H]);if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",H),console.log("[PieRoot] Fallback provided:",!!Z);return w.jsx(v.Provider,{value:G,children:w.jsx(b.Provider,{value:I,children:w.jsx(S.Provider,{value:Y,children:w.jsx(j.Provider,{value:Z??w.jsx(w.Fragment,{}),children:w.jsx(vU,{children:w.jsx(pU,{children:z?$:w.jsx("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},Lz=(U)=>{let[Z]=zU.useState(()=>new gU.QueryClient),$=U.queryClient??Z;return w.jsx(m.Provider,{value:U.onNavigate,children:w.jsx(c.Provider,{value:U.config,children:w.jsx(h.Provider,{value:U.onError,children:w.jsx(gU.QueryClientProvider,{client:$,children:w.jsx(Rz,{...U})})})})})},M$=Lz;var R$=require("react");var HZ=require("react/jsx-runtime"),wz=HZ.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),Nz=({apiServer:U,pathname:Z="/",search:$="",centrifugeServer:z,fallback:T,enableRenderingLog:H=!1})=>{let J=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",G=R$.useMemo(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:H,pageProcessor:"web"}),[J,z,H]);return HZ.jsx(hU,{location:{pathname:Z,search:$},config:G,fallback:T??wz,onNavigate:(Y)=>{if(typeof window<"u")window.history.pushState(null,"",Y)}})},L$=Nz;var w$=require("react");var Ez=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],jz=new Set(["telegram:cloud","telegram:secure"]),OU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of Ez){let $=Z+":";if(U.startsWith($))return{source:Z,key:U.slice($.length)}}return{source:"dom",key:U}},TZ=(U,Z=!1)=>{let{source:$,key:z}=OU(U);if($==="sid"){let H=R.readSid();if(!H)throw Error("SocketIO isn't initialized properly");return[H]}if($==="localStorage"||$==="sessionStorage")try{let H=R.readWebStorage($==="localStorage"?"local":"session",z);if(H===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[H]}catch(H){if(Z)console.warn(`Failed to read ${$} key ${z}:`,H);return[]}if($==="cookie"){let H=R.readCookie(z);if(H===null){if(Z)console.warn(`No cookie found for key ${z}`);return[]}return[H]}if($==="url"){let H=R.readUrlParams(z);if(!H.length&&Z)console.warn(`No URL query param found for key ${z}`);return H}if(jz.has($)){if(Z)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=R.readDomInput(z);if(T===null){if(Z)console.warn(`No input found with name ${z}`);return[]}return T},Cz=(U,Z,$)=>{let z=window.Telegram?.WebApp,T=U==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,H=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if($)console.warn(`${H} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(Z,(G,I)=>{if(G){if($)console.warn(`Failed to read ${H} key ${Z}:`,G);J([]);return}if(I==null||I===""){if($)console.warn(`No ${H} value found for key ${Z}`);J([]);return}J([I])})}catch(G){if($)console.warn(`Failed to read ${H} key ${Z}:`,G);J([])}})},JZ=async(U,Z=!1)=>{let{source:$,key:z}=OU(U);if($==="telegram:cloud"||$==="telegram:secure")return Cz($,z,Z);if(($==="localStorage"||$==="sessionStorage")&&R.readWebStorageAsync)try{let T=await R.readWebStorageAsync($==="localStorage"?"local":"session",z);if(T===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[T]}catch(T){if(Z)console.warn(`Failed to read ${$} key ${z}:`,T);return[]}return TZ(U,Z)},fz=(U,Z={},$=[],z,T)=>{let H=T?.renderingLogEnabled??!1,J=T?.timeout,G=T?.retryPolicy,I=G?.maxRetries??0,Y=G?.baseDelay??1000,D=G?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",z,Z,$);return async(O={})=>{if(!R.isClient()){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!U){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await zZ();let B=new FormData;for(let[K,P]of Object.entries({...Z,...O}))B.append(K,P);for(let K of $){let{key:P}=OU(K);for(let W of await JZ(K,H))B.append(P,W)}let q=V+"api/ajax_content"+z;U(null);let _;for(let K=0;K<=I;K++){if(K>0){let X=Y*2**(K-1);if(H)console.log(`AJAX retry ${K}/${I} after ${X}ms`);await new Promise((Q)=>setTimeout(Q,X))}let P=J!=null?new AbortController:null,W=P&&setTimeout(()=>P.abort(),J);try{let X=await fetch(q,{method:"POST",body:B,signal:P?.signal});if(W)clearTimeout(W);if(!X.ok&&D.includes(X.status)&&K<I){_=Error(`HTTP ${X.status}`);continue}let x=(X.headers.get("content-type")||"").includes("application/json");if(!!X.body?.getReader&&!x){let u=X.body.getReader(),d=new TextDecoder,s="";while(!0){let{done:dU,value:k$}=await u.read();if(dU)break;s+=d.decode(k$,{stream:!0});let IZ=s.split(`
3
+ `);s=IZ.pop()??"";for(let y$ of IZ){let cU=y$.trim();if(!cU)continue;try{let S$=JSON.parse(cU);U([S$])}catch{if(H)console.warn("Failed to parse streamed line:",cU)}}}if(s.trim())try{let dU=JSON.parse(s);U([dU])}catch{if(H)console.warn("Failed to parse final streamed line:",s)}return{}}else{let u=await X.json();return U(u),u}}catch(X){if(W)clearTimeout(W);if(_=X,K<I)continue;if(H)console.error("AJAX request failed:",X);return U(null),X}}if(H)console.error("AJAX request failed after retries:",_);return U(null),_}},N$=(U,Z={},$=[],z,T)=>{let{apiServer:H,enableRenderingLog:J}=TU(),G=JSON.stringify(Z),I=JSON.stringify($),Y=JSON.stringify(T);return w$.useMemo(()=>fz(U,Z,$,z,{apiServer:H,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[U,G,I,z,H,J,Y])};var E$=require("clsx"),j$=require("tailwind-merge");function C$(...U){return j$.twMerge(E$.clsx(U))}var f$=()=>{R.submitGlobalForm()};var x$=(U,Z)=>`${U}${_U}${Z}`;