@swarm.ing/pieui 2.1.1 → 2.1.3

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 (61) hide show
  1. package/README.md +52 -0
  2. package/dist/agent/index.esm.js +1 -1
  3. package/dist/agent/index.js +1 -1
  4. package/dist/components/Common/DeviceStorageCard/ui/DeviceStorageCard.d.ts +15 -0
  5. package/dist/components/Common/DeviceStorageCard/ui/DeviceStorageCard.d.ts.map +1 -1
  6. package/dist/components/Common/SessionStorageCard/ui/SessionStorageCard.d.ts +15 -0
  7. package/dist/components/Common/SessionStorageCard/ui/SessionStorageCard.d.ts.map +1 -1
  8. package/dist/components/index.d.ts +0 -2
  9. package/dist/components/index.d.ts.map +1 -1
  10. package/dist/components/index.esm.js +1 -1
  11. package/dist/components/index.js +1 -1
  12. package/dist/index.d.ts +2 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.esm.js +2 -2
  15. package/dist/index.js +2 -2
  16. package/dist/max/index.esm.js +1 -1
  17. package/dist/max/index.js +1 -1
  18. package/dist/pieui.components.json +62 -62
  19. package/dist/storybook/addon/manager.esm.js +2 -0
  20. package/dist/storybook/addon/manager.js +2 -0
  21. package/dist/telegram/components/CloudStorageCard/index.d.ts.map +1 -0
  22. package/dist/telegram/components/CloudStorageCard/types/index.d.ts.map +1 -0
  23. package/dist/telegram/components/CloudStorageCard/ui/CloudStorageCard.d.ts +15 -0
  24. package/dist/telegram/components/CloudStorageCard/ui/CloudStorageCard.d.ts.map +1 -0
  25. package/dist/telegram/components/SecureStorageCard/index.d.ts.map +1 -0
  26. package/dist/telegram/components/SecureStorageCard/types/index.d.ts.map +1 -0
  27. package/dist/telegram/components/SecureStorageCard/ui/SecureStorageCard.d.ts +15 -0
  28. package/dist/telegram/components/SecureStorageCard/ui/SecureStorageCard.d.ts.map +1 -0
  29. package/dist/telegram/index.d.ts +4 -0
  30. package/dist/telegram/index.d.ts.map +1 -1
  31. package/dist/telegram/index.esm.js +1 -1
  32. package/dist/telegram/index.js +1 -1
  33. package/dist/util/ajaxCommonUtils.d.ts +60 -13
  34. package/dist/util/ajaxCommonUtils.d.ts.map +1 -1
  35. package/dist/util/centrifuge.d.ts.map +1 -1
  36. package/dist/util/fallback.d.ts.map +1 -1
  37. package/dist/util/globalSingleton.d.ts +2 -0
  38. package/dist/util/globalSingleton.d.ts.map +1 -0
  39. package/dist/util/lazyError.d.ts.map +1 -1
  40. package/dist/util/mitt.d.ts +3 -0
  41. package/dist/util/mitt.d.ts.map +1 -1
  42. package/dist/util/navigate.d.ts.map +1 -1
  43. package/dist/util/pieConfig.d.ts.map +1 -1
  44. package/dist/util/registry.d.ts +16 -0
  45. package/dist/util/registry.d.ts.map +1 -1
  46. package/dist/util/socket.d.ts.map +1 -1
  47. package/dist/util/uiRenderer.d.ts.map +1 -1
  48. package/dist/util/waitForSidAvailable.d.ts.map +1 -1
  49. package/package.json +2 -2
  50. package/dist/components/Common/CloudStorageCard/index.d.ts.map +0 -1
  51. package/dist/components/Common/CloudStorageCard/types/index.d.ts.map +0 -1
  52. package/dist/components/Common/CloudStorageCard/ui/CloudStorageCard.d.ts +0 -4
  53. package/dist/components/Common/CloudStorageCard/ui/CloudStorageCard.d.ts.map +0 -1
  54. package/dist/components/Common/SecureStorageCard/index.d.ts.map +0 -1
  55. package/dist/components/Common/SecureStorageCard/types/index.d.ts.map +0 -1
  56. package/dist/components/Common/SecureStorageCard/ui/SecureStorageCard.d.ts +0 -4
  57. package/dist/components/Common/SecureStorageCard/ui/SecureStorageCard.d.ts.map +0 -1
  58. /package/dist/{components/Common → telegram/components}/CloudStorageCard/index.d.ts +0 -0
  59. /package/dist/{components/Common → telegram/components}/CloudStorageCard/types/index.d.ts +0 -0
  60. /package/dist/{components/Common → telegram/components}/SecureStorageCard/index.d.ts +0 -0
  61. /package/dist/{components/Common → telegram/components}/SecureStorageCard/types/index.d.ts +0 -0
package/README.md CHANGED
@@ -167,3 +167,55 @@ Add optional realtime and AJAX fields to the generated `types/index.ts`:
167
167
  ```sh
168
168
  bunx pieui card add simple LiveCard --io --ajax
169
169
  ```
170
+
171
+ ## AJAX `depsNames` sources
172
+
173
+ An Ajax card (`AjaxGroupCard`, `AjaxButtonCard`, …) submits to
174
+ `api/ajax_content{pathname}` via `useAjaxSubmit`. The request body is built from
175
+ three places:
176
+
177
+ 1. `kwargs` — static key/value pairs from the card config.
178
+ 2. `extraKwargs` — values passed at call time.
179
+ 3. `depsNames` — names whose **current client-side value** is read and appended
180
+ at submit time.
181
+
182
+ Each entry in `depsNames` is a "magic name": an optional source prefix plus a
183
+ key. The value is always submitted under the **bare key** (the part after the
184
+ prefix), so `localStorage:token` is sent as the field `token`.
185
+
186
+ | `depsNames` entry | Read from |
187
+ | ------------------------- | ------------------------------------------------------------- |
188
+ | `email` _(no prefix)_ | DOM input named `email` (`document.getElementsByName`) |
189
+ | `sid` | `window.sid` — SocketIO session id (awaits the socket) |
190
+ | `localStorage:<key>` | `localStorage.getItem(key)` |
191
+ | `sessionStorage:<key>` | `sessionStorage.getItem(key)` |
192
+ | `cookie:<name>` | matching cookie from `document.cookie` (URL-decoded) |
193
+ | `url:<param>` | `?<param>` query params (repeated params → multiple values) |
194
+ | `telegram:cloud:<key>` | `Telegram.WebApp.CloudStorage.getItem` _(async)_ |
195
+ | `telegram:secure:<key>` | `Telegram.WebApp.SecureStorage.getItem` _(async)_ |
196
+
197
+ Notes:
198
+
199
+ - A **missing value contributes nothing** — same as an absent DOM input. The
200
+ field is simply omitted from the request.
201
+ - A single entry can yield **multiple values** (a multi-file `<input>`, repeated
202
+ `url:` params); each is appended under the same bare key.
203
+ - `telegram:cloud:` / `telegram:secure:` are **asynchronous**. The submit flow
204
+ awaits them automatically; the sync `readAjaxKey` returns `[]` for them, so use
205
+ `readAjaxKeyAsync` if reading directly.
206
+ - The storage prefixes mirror the storage cards: `localStorage:` ↔
207
+ `DeviceStorageCard`, `sessionStorage:` ↔ `SessionStorageCard`,
208
+ `telegram:cloud:` ↔ `CloudStorageCard`, `telegram:secure:` ↔
209
+ `SecureStorageCard`. The Telegram cards live under the
210
+ `@swarm.ing/pieui/telegram` entry.
211
+
212
+ Example — submit a DOM field, a localStorage token, a URL param and the socket
213
+ id together:
214
+
215
+ ```ts
216
+ depsNames: ['email', 'localStorage:token', 'url:ref', 'sid']
217
+ // POST body fields: email, token, ref, sid
218
+ ```
219
+
220
+ `depsNames` is normally supplied by the backend `UIConfig` at runtime — for the
221
+ Python card field that produces it, see the `pie` repo (`deps_names`).
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{tool as x}from"@openai/agents";import{useContext as b,useMemo as k}from"react";import M from"mitt";import{createContext as w,useCallback as c,useContext as d}from"react";var P=null;function F(){if(!P)P=M();return P}var T=w(null);var O=T;var I=/^pie(.+?)_(.+)$/;function A(G=F(),H={}){let Z=[],L=new Set;for(let J of G.all.keys()){if(typeof J!=="string")continue;let Q=J.match(I);if(!Q)continue;let[,X,q]=Q,$={methodName:X,cardName:q,eventName:J};if(H.filter&&!H.filter($))continue;let W=H.nameFor?.($)??`${q}_${X}`;if(L.has(W))continue;L.add(W);let D=H.describe?.($)??`Invokes the "${X}" method on the PieCard "${q}" by emitting the in-process mitt event "${J}". The optional "payload" argument is forwarded verbatim to the card's handler.`;Z.push(x({name:W,description:D,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(j)=>{let Y=j?.payload;return G.emit(J,Y),`Emitted "${J}"`}}))}return Z}function N(G={}){let Z=b(O)??F(),L=[];for(let $ of Z.all.keys())if(typeof $==="string"&&I.test($))L.push($);L.sort();let J=L.join("|"),{filter:Q,describe:X,nameFor:q}=G;return k(()=>A(Z,{filter:Q,describe:X,nameFor:q}),[Z,J,Q,X,q])}import{useCallback as V,useEffect as y,useRef as _,useState as f}from"react";function v(){let G=new AudioContext,H=G.createOscillator(),Z=H.connect(G.createMediaStreamDestination());H.start();let L=Z.stream.getAudioTracks()[0];return L.enabled=!1,L}function R(G=null,H){let[Z,L]=f(!1),J=_(null),Q=_(null),X=_(null),q=V(async(j,Y=!0)=>{if(J.current)$();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")L(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))L(!1)},B.ontrack=(z)=>{if(G)G.srcObject=z.streams[0]},Y){let z=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(z.getTracks()[0],z)}else{let z=v();B.addTrack(z)}let U=B.createDataChannel("oai-events");Q.current=U,X.current=new Promise((z)=>{U.addEventListener("open",()=>{z()})});let K=await B.createOffer();await B.setLocalDescription(K);let S=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:K.sdp,headers:{Authorization:`Bearer ${j}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:S}),J.current=B,await X.current},[G]),$=V(()=>{let j=Q.current;if(j)j.close();J.current?.getSenders()?.forEach((Y)=>Y.track?.stop()),J.current?.close(),L(!1),J.current=null,Q.current=null,X.current=null},[G]),W=V((j)=>{let Y=Q.current;if(!Y){console.error("Data channel is not ready",j);return}let B=new Date().toLocaleTimeString();if(j.event_id=j.event_id||crypto.randomUUID(),Y.send(JSON.stringify(j)),!j.timestamp)j.timestamp=B;H?.(j)},[H,G]),D=V((j)=>{if(!Q.current){console.error("Data channel is not ready");return}let B=()=>{W({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:j}]}}),W({type:"response.create"})};if(X.current)X.current.then(B);else B()},[H,G]);return y(()=>{let j=Q.current;if(!j)return;let Y=(B)=>{let U=JSON.parse(B.data);if(!U.timestamp)U.timestamp=new Date().toLocaleTimeString();H?.(U)};return j.addEventListener("message",Y),()=>{j.removeEventListener("message",Y)}},[H,G]),{isSessionActive:Z,startSession:q,stopSession:$,sendTextMessage:D}}export{N as usePieMittAgentTools,R as useOpenAIWebRTC,A as getMittAgentTools};
2
+ import{tool as k}from"@openai/agents";import{useContext as x,useMemo as y}from"react";import K from"mitt";import{createContext as O,useCallback as l,useContext as p}from"react";var b=globalThis,w=(B,G)=>{let H=Symbol.for(B);if(!(H in b))b[H]=G();return b[H]};function _(){return w("@swarm.ing/pieui:mitt-emitter",()=>K())}var R=w("@swarm.ing/pieui:context:mitt",()=>O(null));var T=R;var f=/^pie(.+?)_(.+)$/;function S(B=_(),G={}){let H=[],P=new Set;for(let L of B.all.keys()){if(typeof L!=="string")continue;let Q=L.match(f);if(!Q)continue;let[,U,Z]=Q,Y={methodName:U,cardName:Z,eventName:L};if(G.filter&&!G.filter(Y))continue;let z=G.nameFor?.(Y)??`${Z}_${U}`;if(P.has(z))continue;P.add(z);let V=G.describe?.(Y)??`Invokes the "${U}" method on the PieCard "${Z}" by emitting the in-process mitt event "${L}". The optional "payload" argument is forwarded verbatim to the card's handler.`;H.push(k({name:z,description:V,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(J)=>{let X=J?.payload;return B.emit(L,X),`Emitted "${L}"`}}))}return H}function M(B={}){let H=x(T)??_(),P=[];for(let Y of H.all.keys())if(typeof Y==="string"&&f.test(Y))P.push(Y);P.sort();let L=P.join("|"),{filter:Q,describe:U,nameFor:Z}=B;return y(()=>S(H,{filter:Q,describe:U,nameFor:Z}),[H,L,Q,U,Z])}import{useCallback as W,useEffect as N,useRef as D,useState as g}from"react";function v(){let B=new AudioContext,G=B.createOscillator(),H=G.connect(B.createMediaStreamDestination());G.start();let P=H.stream.getAudioTracks()[0];return P.enabled=!1,P}function A(B=null,G){let[H,P]=g(!1),L=D(null),Q=D(null),U=D(null),Z=W(async(J,X=!0)=>{if(L.current)Y();let j=new RTCPeerConnection;if(j.onconnectionstatechange=()=>{if(j.connectionState==="connected")P(!0);else if(["disconnected","failed","closed"].includes(j.connectionState))P(!1)},j.ontrack=($)=>{if(B)B.srcObject=$.streams[0]},X){let $=await navigator.mediaDevices.getUserMedia({audio:!0});j.addTrack($.getTracks()[0],$)}else{let $=v();j.addTrack($)}let q=j.createDataChannel("oai-events");Q.current=q,U.current=new Promise(($)=>{q.addEventListener("open",()=>{$()})});let F=await j.createOffer();await j.setLocalDescription(F);let I=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:F.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await j.setRemoteDescription({type:"answer",sdp:I}),L.current=j,await U.current},[B]),Y=W(()=>{let J=Q.current;if(J)J.close();L.current?.getSenders()?.forEach((X)=>X.track?.stop()),L.current?.close(),P(!1),L.current=null,Q.current=null,U.current=null},[B]),z=W((J)=>{let X=Q.current;if(!X){console.error("Data channel is not ready",J);return}let j=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),X.send(JSON.stringify(J)),!J.timestamp)J.timestamp=j;G?.(J)},[G,B]),V=W((J)=>{if(!Q.current){console.error("Data channel is not ready");return}let j=()=>{z({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),z({type:"response.create"})};if(U.current)U.current.then(j);else j()},[G,B]);return N(()=>{let J=Q.current;if(!J)return;let X=(j)=>{let q=JSON.parse(j.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();G?.(q)};return J.addEventListener("message",X),()=>{J.removeEventListener("message",X)}},[G,B]),{isSessionActive:H,startSession:Z,stopSession:Y,sendTextMessage:V}}export{M as usePieMittAgentTools,A as useOpenAIWebRTC,S as getMittAgentTools};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var f=Object.create;var{getPrototypeOf:v,defineProperty:D,getOwnPropertyNames:M,getOwnPropertyDescriptor:C}=Object,w=Object.prototype.hasOwnProperty;var E=(j,B,H)=>{H=j!=null?f(v(j)):{};let G=B||!j||!j.__esModule?D(H,"default",{value:j,enumerable:!0}):H;for(let L of M(j))if(!w.call(G,L))D(G,L,{get:()=>j[L],enumerable:!0});return G},S=new WeakMap,g=(j)=>{var B=S.get(j),H;if(B)return B;if(B=D({},"__esModule",{value:!0}),j&&typeof j==="object"||typeof j==="function")M(j).map((G)=>!w.call(B,G)&&D(B,G,{get:()=>j[G],enumerable:!(H=C(j,G))||H.enumerable}));return S.set(j,B),B};var u=(j,B)=>{for(var H in B)D(j,H,{get:B[H],enumerable:!0,configurable:!0,set:(G)=>B[H]=()=>G})};var c={};u(c,{usePieMittAgentTools:()=>N,useOpenAIWebRTC:()=>A,getMittAgentTools:()=>I});module.exports=g(c);var b=require("@openai/agents"),F=require("react");var T=E(require("mitt")),P=require("react"),K=null;function O(){if(!K)K=T.default();return K}var h=P.createContext(null);var x=h;var k=/^pie(.+?)_(.+)$/;function I(j=O(),B={}){let H=[],G=new Set;for(let L of j.all.keys()){if(typeof L!=="string")continue;let Y=L.match(k);if(!Y)continue;let[,Z,z]=Y,q={methodName:Z,cardName:z,eventName:L};if(B.filter&&!B.filter(q))continue;let V=B.nameFor?.(q)??`${z}_${Z}`;if(G.has(V))continue;G.add(V);let _=B.describe?.(q)??`Invokes the "${Z}" method on the PieCard "${z}" by emitting the in-process mitt event "${L}". The optional "payload" argument is forwarded verbatim to the card's handler.`;H.push(b.tool({name:V,description:_,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(J)=>{let $=J?.payload;return j.emit(L,$),`Emitted "${L}"`}}))}return H}function N(j={}){let H=F.useContext(x)??O(),G=[];for(let q of H.all.keys())if(typeof q==="string"&&k.test(q))G.push(q);G.sort();let L=G.join("|"),{filter:Y,describe:Z,nameFor:z}=j;return F.useMemo(()=>I(H,{filter:Y,describe:Z,nameFor:z}),[H,L,Y,Z,z])}var X=require("react");function p(){let j=new AudioContext,B=j.createOscillator(),H=B.connect(j.createMediaStreamDestination());B.start();let G=H.stream.getAudioTracks()[0];return G.enabled=!1,G}function A(j=null,B){let[H,G]=X.useState(!1),L=X.useRef(null),Y=X.useRef(null),Z=X.useRef(null),z=X.useCallback(async(J,$=!0)=>{if(L.current)q();let Q=new RTCPeerConnection;if(Q.onconnectionstatechange=()=>{if(Q.connectionState==="connected")G(!0);else if(["disconnected","failed","closed"].includes(Q.connectionState))G(!1)},Q.ontrack=(U)=>{if(j)j.srcObject=U.streams[0]},$){let U=await navigator.mediaDevices.getUserMedia({audio:!0});Q.addTrack(U.getTracks()[0],U)}else{let U=p();Q.addTrack(U)}let W=Q.createDataChannel("oai-events");Y.current=W,Z.current=new Promise((U)=>{W.addEventListener("open",()=>{U()})});let R=await Q.createOffer();await Q.setLocalDescription(R);let y=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:R.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await Q.setRemoteDescription({type:"answer",sdp:y}),L.current=Q,await Z.current},[j]),q=X.useCallback(()=>{let J=Y.current;if(J)J.close();L.current?.getSenders()?.forEach(($)=>$.track?.stop()),L.current?.close(),G(!1),L.current=null,Y.current=null,Z.current=null},[j]),V=X.useCallback((J)=>{let $=Y.current;if(!$){console.error("Data channel is not ready",J);return}let Q=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),$.send(JSON.stringify(J)),!J.timestamp)J.timestamp=Q;B?.(J)},[B,j]),_=X.useCallback((J)=>{if(!Y.current){console.error("Data channel is not ready");return}let Q=()=>{V({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),V({type:"response.create"})};if(Z.current)Z.current.then(Q);else Q()},[B,j]);return X.useEffect(()=>{let J=Y.current;if(!J)return;let $=(Q)=>{let W=JSON.parse(Q.data);if(!W.timestamp)W.timestamp=new Date().toLocaleTimeString();B?.(W)};return J.addEventListener("message",$),()=>{J.removeEventListener("message",$)}},[B,j]),{isSessionActive:H,startSession:z,stopSession:q,sendTextMessage:_}}
2
+ var g=Object.create;var{getPrototypeOf:v,defineProperty:V,getOwnPropertyNames:K,getOwnPropertyDescriptor:C}=Object,O=Object.prototype.hasOwnProperty;var u=(J,j,B)=>{B=J!=null?g(v(J)):{};let G=j||!J||!J.__esModule?V(B,"default",{value:J,enumerable:!0}):B;for(let L of K(J))if(!O.call(G,L))V(G,L,{get:()=>J[L],enumerable:!0});return G},I=new WeakMap,E=(J)=>{var j=I.get(J),B;if(j)return j;if(j=V({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")K(J).map((G)=>!O.call(j,G)&&V(j,G,{get:()=>J[G],enumerable:!(B=C(J,G))||B.enumerable}));return I.set(J,j),j};var h=(J,j)=>{for(var B in j)V(J,B,{get:j[B],enumerable:!0,configurable:!0,set:(G)=>j[B]=()=>G})};var d={};h(d,{usePieMittAgentTools:()=>M,useOpenAIWebRTC:()=>S,getMittAgentTools:()=>f});module.exports=E(d);var x=require("@openai/agents"),w=require("react");var R=u(require("mitt")),b=require("react");var D=globalThis,F=(J,j)=>{let B=Symbol.for(J);if(!(B in D))D[B]=j();return D[B]};function T(){return F("@swarm.ing/pieui:mitt-emitter",()=>R.default())}var r=F("@swarm.ing/pieui:context:mitt",()=>b.createContext(null));var k=r;var y=/^pie(.+?)_(.+)$/;function f(J=T(),j={}){let B=[],G=new Set;for(let L of J.all.keys()){if(typeof L!=="string")continue;let U=L.match(y);if(!U)continue;let[,X,$]=U,Z={methodName:X,cardName:$,eventName:L};if(j.filter&&!j.filter(Z))continue;let W=j.nameFor?.(Z)??`${$}_${X}`;if(G.has(W))continue;G.add(W);let _=j.describe?.(Z)??`Invokes the "${X}" method on the PieCard "${$}" by emitting the in-process mitt event "${L}". The optional "payload" argument is forwarded verbatim to the card's handler.`;B.push(x.tool({name:W,description:_,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(H)=>{let Y=H?.payload;return J.emit(L,Y),`Emitted "${L}"`}}))}return B}function M(J={}){let B=w.useContext(k)??T(),G=[];for(let Z of B.all.keys())if(typeof Z==="string"&&y.test(Z))G.push(Z);G.sort();let L=G.join("|"),{filter:U,describe:X,nameFor:$}=J;return w.useMemo(()=>f(B,{filter:U,describe:X,nameFor:$}),[B,L,U,X,$])}var Q=require("react");function c(){let J=new AudioContext,j=J.createOscillator(),B=j.connect(J.createMediaStreamDestination());j.start();let G=B.stream.getAudioTracks()[0];return G.enabled=!1,G}function S(J=null,j){let[B,G]=Q.useState(!1),L=Q.useRef(null),U=Q.useRef(null),X=Q.useRef(null),$=Q.useCallback(async(H,Y=!0)=>{if(L.current)Z();let P=new RTCPeerConnection;if(P.onconnectionstatechange=()=>{if(P.connectionState==="connected")G(!0);else if(["disconnected","failed","closed"].includes(P.connectionState))G(!1)},P.ontrack=(q)=>{if(J)J.srcObject=q.streams[0]},Y){let q=await navigator.mediaDevices.getUserMedia({audio:!0});P.addTrack(q.getTracks()[0],q)}else{let q=c();P.addTrack(q)}let z=P.createDataChannel("oai-events");U.current=z,X.current=new Promise((q)=>{z.addEventListener("open",()=>{q()})});let A=await P.createOffer();await P.setLocalDescription(A);let N=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:A.sdp,headers:{Authorization:`Bearer ${H}`,"Content-Type":"application/sdp"}})).text();await P.setRemoteDescription({type:"answer",sdp:N}),L.current=P,await X.current},[J]),Z=Q.useCallback(()=>{let H=U.current;if(H)H.close();L.current?.getSenders()?.forEach((Y)=>Y.track?.stop()),L.current?.close(),G(!1),L.current=null,U.current=null,X.current=null},[J]),W=Q.useCallback((H)=>{let Y=U.current;if(!Y){console.error("Data channel is not ready",H);return}let P=new Date().toLocaleTimeString();if(H.event_id=H.event_id||crypto.randomUUID(),Y.send(JSON.stringify(H)),!H.timestamp)H.timestamp=P;j?.(H)},[j,J]),_=Q.useCallback((H)=>{if(!U.current){console.error("Data channel is not ready");return}let P=()=>{W({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:H}]}}),W({type:"response.create"})};if(X.current)X.current.then(P);else P()},[j,J]);return Q.useEffect(()=>{let H=U.current;if(!H)return;let Y=(P)=>{let z=JSON.parse(P.data);if(!z.timestamp)z.timestamp=new Date().toLocaleTimeString();j?.(z)};return H.addEventListener("message",Y),()=>{H.removeEventListener("message",Y)}},[j,J]),{isSessionActive:B,startSession:$,stopSession:Z,sendTextMessage:_}}
@@ -1,4 +1,19 @@
1
1
  import { DeviceStorageCardProps } from '../types';
2
+ /**
3
+ * Persists `data.value` to `localStorage` under `data.key` and mirrors it into
4
+ * a hidden input named `data.name` so the value participates in form / Ajax
5
+ * submissions.
6
+ *
7
+ * Sending the value with an Ajax submit — two options:
8
+ * - **Direct (preferred):** add `'localStorage:<key>'` to the Ajax card's
9
+ * `depsNames`. `readAjaxKey` reads `localStorage.getItem(key)` straight from
10
+ * storage and submits it under the bare `<key>`. No `name` wiring needed.
11
+ * - **Via the hidden input:** add this card's `data.name` to `depsNames`; the
12
+ * value is read from the rendered hidden input by name (the original path).
13
+ *
14
+ * The hidden input is still rendered for the second option and for plain
15
+ * (non-Ajax) form submission via the global form.
16
+ */
2
17
  declare const DeviceStorageCard: ({ data }: DeviceStorageCardProps) => import("react").JSX.Element;
3
18
  export default DeviceStorageCard;
4
19
  //# sourceMappingURL=DeviceStorageCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceStorageCard.d.ts","sourceRoot":"","sources":["../../../../../src/components/Common/DeviceStorageCard/ui/DeviceStorageCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAGjD,QAAA,MAAM,iBAAiB,GAAI,UAAU,sBAAsB,gCA0C1D,CAAA;AAED,eAAe,iBAAiB,CAAA"}
1
+ {"version":3,"file":"DeviceStorageCard.d.ts","sourceRoot":"","sources":["../../../../../src/components/Common/DeviceStorageCard/ui/DeviceStorageCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAGjD;;;;;;;;;;;;;;GAcG;AACH,QAAA,MAAM,iBAAiB,GAAI,UAAU,sBAAsB,gCA0C1D,CAAA;AAED,eAAe,iBAAiB,CAAA"}
@@ -1,4 +1,19 @@
1
1
  import { SessionStorageCardProps } from '../types';
2
+ /**
3
+ * Persists `data.value` to `sessionStorage` under `data.key` and mirrors it
4
+ * into a hidden input named `data.name` so the value participates in form /
5
+ * Ajax submissions.
6
+ *
7
+ * Sending the value with an Ajax submit — two options:
8
+ * - **Direct (preferred):** add `'sessionStorage:<key>'` to the Ajax card's
9
+ * `depsNames`. `readAjaxKey` reads `sessionStorage.getItem(key)` straight from
10
+ * storage and submits it under the bare `<key>`. No `name` wiring needed.
11
+ * - **Via the hidden input:** add this card's `data.name` to `depsNames`; the
12
+ * value is read from the rendered hidden input by name (the original path).
13
+ *
14
+ * The hidden input is still rendered for the second option and for plain
15
+ * (non-Ajax) form submission via the global form.
16
+ */
2
17
  declare const SessionStorageCard: ({ data }: SessionStorageCardProps) => import("react").JSX.Element;
3
18
  export default SessionStorageCard;
4
19
  //# sourceMappingURL=SessionStorageCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionStorageCard.d.ts","sourceRoot":"","sources":["../../../../../src/components/Common/SessionStorageCard/ui/SessionStorageCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAGlD,QAAA,MAAM,kBAAkB,GAAI,UAAU,uBAAuB,gCA0C5D,CAAA;AAED,eAAe,kBAAkB,CAAA"}
1
+ {"version":3,"file":"SessionStorageCard.d.ts","sourceRoot":"","sources":["../../../../../src/components/Common/SessionStorageCard/ui/SessionStorageCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAGlD;;;;;;;;;;;;;;GAcG;AACH,QAAA,MAAM,kBAAkB,GAAI,UAAU,uBAAuB,gCA0C5D,CAAA;AAED,eAAe,kBAAkB,CAAA"}
@@ -9,8 +9,6 @@ export { default as AutoRedirectCard } from './Common/AutoRedirectCard';
9
9
  export { default as IOEventsCard } from './Common/IOEventsCard';
10
10
  export { default as SessionStorageCard } from './Common/SessionStorageCard';
11
11
  export { default as DeviceStorageCard } from './Common/DeviceStorageCard';
12
- export { default as CloudStorageCard } from './Common/CloudStorageCard';
13
- export { default as SecureStorageCard } from './Common/SecureStorageCard';
14
12
  export { default as AjaxGroupCard } from './Containers/AjaxGroupCard';
15
13
  export { default as BoxCard } from './Containers/BoxCard';
16
14
  export { default as OneOfCard } from './Containers/OneOfCard';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACzE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACzE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAIzE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA"}
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{useContext as M,useEffect as K,useRef as Eo}from"react";import{createContext as Qo,useContext as Wo}from"react";var Xo=Qo(null),Yo=()=>{let o=Wo(Xo);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var G=()=>{let{enableRenderingLog:o}=Yo();return o},a=G;import{createContext as Mo}from"react";import{Centrifuge as qf}from"centrifuge";var Ko=Mo(null),v=Ko;import{io as Gf}from"socket.io-client";import{createContext as Ro}from"react";var _o=Ro(null),c=_o;import Xf from"mitt";import{createContext as xo,useCallback as Kf,useContext as Rf}from"react";var yo=xo(null);var J=yo;import{jsx as No,jsxs as jo,Fragment as bo}from"react/jsx-runtime";var ko=({card:o,data:r,children:C,useSocketioSupport:p=!1,useCentrifugeSupport:U=!1,useMittSupport:f=!1,centrifugeChannel:m=void 0,methods:S=void 0,stored:d=void 0})=>{let u=a(),I=Eo(S);if(I.current=S,u)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:p,centrifuge:U,mitt:f,centrifugeChannel:m}),console.log("[PieCard] Methods:",S?Object.keys(S):"none"),console.log("[PieCard] Has children:",!!C);let w=M(c),H=M(v),A=M(J);if(K(()=>{if(!w||!p||!I.current||!r.name){if(u&&p)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!w,useSocketioSupport:p,hasMethods:!!I.current,hasDataName:!!r?.name});return}let z=Object.keys(I.current??{}).map((O)=>{let L=`pie${O}_${r.name}`;if(u)console.log(`[PieCard] Socket.IO registering event: ${L}`);let Z=(g)=>{I.current?.[O]?.(g)};return w.on(L,Z),[L,Z]});return()=>{z.forEach(([O,L])=>{if(u)console.log(`[PieCard] Socket.IO unregistering event: ${O}`);w.off(O,L)})}},[w,r.name,p]),K(()=>{if(!H||!U||!m||!r.name){if(u&&U)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!H,useCentrifugeSupport:U,hasCentrifugeChannel:!!m,hasMethods:!!I.current,hasDataName:!!r?.name});return}let z=Object.keys(I.current??{}).map((O)=>{let L=`pie${O}_${r.name}_${m}`;if(u)console.log(`[PieCard] Centrifuge subscribing to channel: ${L}`);let Z=H.newSubscription(L);return Z.on("publication",(g)=>{if(u)console.log(`[PieCard] Centrifuge received data on ${L}:`,g.data);I.current?.[O]?.(g.data)}),Z.subscribe(),Z});return()=>{z.forEach((O)=>{if(u)console.log("[PieCard] Centrifuge unsubscribing from channel");O.unsubscribe(),H.removeSubscription(O)})}},[H,m,r.name,U]),K(()=>{if(!A||!f||!r.name){if(u&&f)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!A,useMittSupport:f,hasMethods:!!I.current,hasDataName:!!r?.name});return}let P=Object.keys(I.current??{}),z={};return P.forEach((O)=>{let L=`pie${O}_${r.name}`,Z=(g)=>{if(u)console.log(`[PieCard] Mitt registering event: ${L}`);I.current?.[O]?.(g)};z[L]=Z,A.on(L,Z)}),()=>{Object.entries(z).forEach(([O,L])=>{if(u)console.log(`[PieCard] Mitt unregistering event: ${O}`);A.off(O,L)})}},[A,r.name,f]),u)console.log("[PieCard] Rendering complete, returning children");if(d!==void 0)return jo(bo,{children:[No("input",{type:"hidden",name:r.name,value:JSON.stringify(d)}),C]});return C},T=ko;import{lazy as no}from"react";var F=new Map;function ao(o,r){return r.catch(()=>{if(F.get(o)===r)F.delete(o)}),F.set(o,r),r}function t(o,r){return no(()=>{if(F.has(r))return F.get(r);return ao(r,o().then((C)=>C))})}var h=Symbol.for("@swarm.ing/pieui:component-registry"),s=globalThis,e=s[h]??(s[h]=new Map),vo=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=t(r.loader,o.name),r.isLazy=!0;return r};function i(o){let r=vo(o);return e.set(r.name,r),r.component}var Q=(o)=>{return e.get(o)};import{useContext as oo,memo as ur}from"react";import{createContext as co}from"react";import{jsx as so,Fragment as ho}from"react/jsx-runtime";var to=co(so(ho,{})),q=to;import{createContext as eo}from"react";var or=eo(void 0),W=or;import{Component as rr,Suspense as fr}from"react";import{jsx as Ur}from"react/jsx-runtime";var pr=2,Cr=400;class $ extends rr{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<pr){let r=Cr*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((C)=>({failed:!1,attempt:C.attempt+1}))},r)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return Ur(fr,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as R}from"react/jsx-runtime";function mr({uiConfig:o,setUiAjaxConfiguration:r}){let C=oo(q),p=oo(W),U=G();if(U)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let f=Q(o.card);if(!f?.component){if(U)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return C}if(U)console.log("[UI] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata});let m=f.component,S=R(m,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(f.isLazy){if(U)console.log("[UI] Rendering lazy component with Suspense:",f.name);return R($,{name:f.name,fallback:f.fallback?R(f.fallback,{}):C,onError:p,children:S})}if(U)console.log("[UI] Rendering component directly:",f.name);return S}var V=ur(mr);import{useContext as ro}from"react";import{createContext as Ir}from"react";var dr=Ir(null),B=dr;import{jsx as X}from"react/jsx-runtime";function fo({uiConfig:o,setUiAjaxConfiguration:r}){let C=ro(q),p=ro(W),U=G();if(U)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let f=Q(o.card);if(!f?.component){if(U)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return C}if(U)console.log("[UILoading] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata,hasFallback:!!f.fallback});if(f.fallback){if(U)console.log("[UILoading] Rendering fallback for:",f.name);let d=f.fallback;return X(d,{})}if(U)console.log("[UILoading] No fallback, rendering full component:",f.name);let m=f.component,S=X(B.Provider,{value:fo,children:X(m,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(f.isLazy)return X($,{name:f.name,fallback:C,onError:p,children:S});return S}var Sr=fo;import{useContext as Pr}from"react";import{jsx as _}from"react/jsx-runtime";var Ar=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:p,sx:U}=o,f=Pr(B)??V;return _(T,{card:p,data:o,children:_("div",{style:U,id:p,children:r.map((m,S)=>{return _(f,{uiConfig:m,setUiAjaxConfiguration:C},`children-${S}`)})})})},po=Ar;var wr=i({name:"SequenceCard",component:po,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as ir}from"react";import{jsx as Co}from"react/jsx-runtime";var Tr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:p}=o,U=ir(B)??V;return Co(T,{card:p,data:o,children:r.map((f,m)=>{return Co(U,{uiConfig:f,setUiAjaxConfiguration:C},`children-${m}`)})})},Uo=Tr;var Hr=i({name:"UnionCard",component:Uo,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as zr,useState as Zr}from"react";import Br from"html-react-parser";import{useCallback as Y,useEffect as Or,useRef as x,useState as Lr}from"react";function Dr(){let o=new AudioContext,r=o.createOscillator(),C=r.connect(o.createMediaStreamDestination());r.start();let p=C.stream.getAudioTracks()[0];return p.enabled=!1,p}function y(o=null,r){let[C,p]=Lr(!1),U=x(null),f=x(null),m=x(null),S=Y(async(w,H=!0)=>{if(U.current)d();let A=new RTCPeerConnection;if(A.onconnectionstatechange=()=>{if(A.connectionState==="connected")p(!0);else if(["disconnected","failed","closed"].includes(A.connectionState))p(!1)},A.ontrack=(D)=>{if(o)o.srcObject=D.streams[0]},H){let D=await navigator.mediaDevices.getUserMedia({audio:!0});A.addTrack(D.getTracks()[0],D)}else{let D=Dr();A.addTrack(D)}let P=A.createDataChannel("oai-events");f.current=P,m.current=new Promise((D)=>{P.addEventListener("open",()=>{D()})});let z=await A.createOffer();await A.setLocalDescription(z);let g=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:z.sdp,headers:{Authorization:`Bearer ${w}`,"Content-Type":"application/sdp"}})).text();await A.setRemoteDescription({type:"answer",sdp:g}),U.current=A,await m.current},[o]),d=Y(()=>{let w=f.current;if(w)w.close();U.current?.getSenders()?.forEach((H)=>H.track?.stop()),U.current?.close(),p(!1),U.current=null,f.current=null,m.current=null},[o]),u=Y((w)=>{let H=f.current;if(!H){console.error("Data channel is not ready",w);return}let A=new Date().toLocaleTimeString();if(w.event_id=w.event_id||crypto.randomUUID(),H.send(JSON.stringify(w)),!w.timestamp)w.timestamp=A;r?.(w)},[r,o]),I=Y((w)=>{if(!f.current){console.error("Data channel is not ready");return}let A=()=>{u({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:w}]}}),u({type:"response.create"})};if(m.current)m.current.then(A);else A()},[r,o]);return Or(()=>{let w=f.current;if(!w)return;let H=(A)=>{let P=JSON.parse(A.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();r?.(P)};return w.addEventListener("message",H),()=>{w.removeEventListener("message",H)}},[r,o]),{isSessionActive:C,startSession:S,stopSession:d,sendTextMessage:I}}import{jsx as gr}from"react/jsx-runtime";var Vr=({data:o})=>{let{html:r,useSocketioSupport:C,useCentrifugeSupport:p,useMittSupport:U,centrifugeChannel:f}=o,[m,S]=Zr(r),{isSessionActive:d,startSession:u,sendTextMessage:I}=y(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)S((z)=>z+P.delta)});return zr(()=>{S(r)},[r]),gr(T,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{S(P.value)},generateUsingAI:async(P)=>{try{if(!d&&P.token)await u(P.token,!1);I(P.prompt)}catch(z){console.error("Failed to generate using AI",z)}},initializeAI:async(P)=>{if(!d&&P.token)await u(P.token,!1)}},useCentrifugeSupport:p,useSocketioSupport:C,useMittSupport:U,centrifugeChannel:f,children:Br(m)})},uo=Vr;var qr=i({name:"HTMLEmbedCard",component:uo,metadata:{author:"Swarm.ing"}});import{useEffect as $r,useState as lr}from"react";import{jsx as mo}from"react/jsx-runtime";var Gr=({data:o})=>{let{name:r,value:C,useSocketioSupport:p,useCentrifugeSupport:U,useMittSupport:f,centrifugeChannel:m}=o,[S,d]=lr(C);return $r(()=>{d(C)},[C]),mo(T,{card:"HiddenCard",data:o,useSocketioSupport:p,useCentrifugeSupport:U,useMittSupport:f,centrifugeChannel:m,methods:{update:({value:u})=>{d(u)}},children:mo("input",{type:"hidden",id:r,name:r,value:S})})},Io=Gr;var Fr=i({name:"HiddenCard",component:Io,metadata:{author:"Swarm.ing"}});import{useContext as So,useEffect as Wr}from"react";import{createContext as Jr}from"react";var Qr=Jr(void 0),l=Qr;import{jsx as Mr,Fragment as Yr}from"react/jsx-runtime";var Xr=({data:o})=>{let{url:r}=o,C=So(l),p=So(q);return Wr(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else C?.(r)},[r,C]),Mr(Yr,{children:p})},Po=Xr;var Kr=i({name:"AutoRedirectCard",component:Po,metadata:{author:"Swarm.ing"}});import{Bounce as Rr,Slide as _r,Zoom as xr,Flip as yr}from"react-toastify";import{toast as Er,ToastContainer as kr}from"react-toastify";import{useContext as br,useMemo as Nr,useRef as jr}from"react";import{jsx as E,Fragment as hr}from"react/jsx-runtime";var nr={bounce:Rr,slide:_r,zoom:xr,flip:yr},ar=(o)=>{let r={...o,type:o.alertType,transition:o.transition?nr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};Er(o.message,r)},vr=(o)=>{console.log("Log event",o)},cr=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(p){console.error("[IOEventsCard] Failed to show notification",p)}},C=window.Notification.permission;if(C==="granted"){r();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((p)=>{if(p==="granted")r()})},tr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:U}=o,f=br(l),m=jr(f);m.current=f;let S=Nr(()=>({alert:ar,log:vr,push:cr,redirect:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else m.current?.(u)}else window.location.reload()},reload:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else m.current?.(u)}else window.location.reload()}}),[]);return E(hr,{children:E(T,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:U,methods:S,children:E(kr,{})})})},Ao=tr;var sr=i({name:"IOEventsCard",component:Ao,metadata:{author:"Swarm.ing"}});import{useEffect as wo,useState as er}from"react";import{jsx as io}from"react/jsx-runtime";var of=({data:o})=>{let{name:r,key:C,value:p,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=er(p);return wo(()=>{u(p)},[p]),wo(()=>{if(typeof window>"u")return;sessionStorage.setItem(C,d)},[C,d]),io(T,{card:"SessionStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{sessionStorage.removeItem(C),u("")}},children:io("input",{type:"hidden",id:r,name:r,value:d})})},To=of;var rf=i({name:"SessionStorageCard",component:To,metadata:{author:"PieData"}});import{useEffect as Ho,useState as ff}from"react";import{jsx as Oo}from"react/jsx-runtime";var pf=({data:o})=>{let{name:r,key:C,value:p,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=ff(p);return Ho(()=>{u(p)},[p]),Ho(()=>{if(typeof window>"u")return;localStorage.setItem(C,d)},[C,d]),Oo(T,{card:"DeviceStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{localStorage.removeItem(C),u("")}},children:Oo("input",{type:"hidden",id:r,name:r,value:d})})},Lo=pf;var Cf=i({name:"DeviceStorageCard",component:Lo,metadata:{author:"PieData"}});import{useEffect as Do,useState as Uf}from"react";import{jsx as zo}from"react/jsx-runtime";var uf=({data:o})=>{let{name:r,key:C,value:p,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=Uf(p);return Do(()=>{u(p)},[p]),Do(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp?.CloudStorage;if(!I)return;I.setItem(C,d)},[C,d]),zo(T,{card:"CloudStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{let I=window.Telegram?.WebApp?.CloudStorage;if(I)I.removeItem(C);u("")}},children:zo("input",{type:"hidden",id:r,name:r,value:d})})},Zo=uf;var mf=i({name:"CloudStorageCard",component:Zo,metadata:{author:"PieData"}});import{useEffect as Bo,useState as If}from"react";import{jsx as Vo}from"react/jsx-runtime";var df=({data:o})=>{let{name:r,key:C,value:p,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=If(p);return Bo(()=>{u(p)},[p]),Bo(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp?.SecureStorage;if(!I)return;I.setItem(C,d)},[C,d]),Vo(T,{card:"SecureStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{let I=window.Telegram?.WebApp?.SecureStorage;if(I)I.removeItem(C);u("")}},children:Vo("input",{type:"hidden",id:r,name:r,value:d})})},go=df;var Sf=i({name:"SecureStorageCard",component:go,metadata:{author:"PieData"}});import{useCallback as k,useContext as b,useEffect as Pf,useRef as Af,useState as qo}from"react";import{jsx as $o}from"react/jsx-runtime";var wf=({data:o,content:r})=>{let{useLoader:C,noReturn:p,returnType:U,useSocketioSupport:f,useCentrifugeSupport:m,useMittSupport:S,centrifugeChannel:d}=o,u=b(q),I=b(B)??V,[w,H]=qo(!1),[A,P]=qo(null),z=Af(r),O=b(J),L=k((D)=>{if(D===null)H(!0);else if(H(!1),!p)z.current=D;if(!p)P(D)},[p]),Z=k((D)=>{z.current=D.content,P(D.content)},[]),g=k((D)=>{if(D===null)H(!0);else if(H(!1),!p)for(let n of D)O?.emit(n.name,n.data)},[p,O]);if(Pf(()=>{P(r),H(!1)},[r]),!A&&C)return u;return $o(T,{card:"AjaxGroupCard",data:o,methods:{changeContent:Z},useSocketioSupport:f,useCentrifugeSupport:m,useMittSupport:S,centrifugeChannel:d,children:$o(I,{uiConfig:A??z.current,setUiAjaxConfiguration:U==="events"?g:L})})},lo=wf;var Tf=i({name:"AjaxGroupCard",component:lo,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as Go}from"react";import{jsx as N}from"react/jsx-runtime";var Hf=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:p,url:U,sx:f}=o,m=Go(l),S=Go(B)??V;return N(T,{card:p,data:o,children:N("div",{style:f,id:p,onClick:(u)=>{if(U)if(u.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else m?.(U)},children:N(S,{setUiAjaxConfiguration:C,uiConfig:r})})})},Fo=Hf;var Of=i({name:"BoxCard",component:Fo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Lf}from"react";import{jsx as j}from"react/jsx-runtime";var Df=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:p,sx:U}=o,f=Lf(B)??V;return j(T,{card:p,data:o,children:j("div",{style:U,id:p,children:r.map((m,S)=>{return j(f,{uiConfig:m,setUiAjaxConfiguration:C},`children-${S}`)})})})},Jo=Df;var zf=i({name:"OneOfCard",component:Jo,metadata:{author:"Swarm.ing",description:"Different variants"}});export{Hr as UnionCard,Sr as UILoading,V as UI,rf as SessionStorageCard,wr as SequenceCard,Sf as SecureStorageCard,T as PieCard,zf as OneOfCard,sr as IOEventsCard,Fr as HiddenCard,qr as HTMLEmbedCard,Cf as DeviceStorageCard,mf as CloudStorageCard,Of as BoxCard,Kr as AutoRedirectCard,Tf as AjaxGroupCard};
2
+ import{useContext as p,useEffect as m,useRef as ko}from"react";import{createContext as Ro,useContext as _o}from"react";var j=globalThis,F=(o,U)=>{let I=Symbol.for(o);if(!(I in j))j[I]=U();return j[I]};var Ko=F("@swarm.ing/pieui:context:pieConfig",()=>Ro(null)),Vo=()=>{let o=_o(Ko);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var M=()=>{let{enableRenderingLog:o}=Vo();return o},n=M;import{createContext as Co}from"react";import{Centrifuge as $f}from"centrifuge";var Gf=F("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var Mo=F("@swarm.ing/pieui:context:centrifuge",()=>Co(null)),s=Mo;import{io as Df}from"socket.io-client";import{createContext as Eo}from"react";var Wf=F("@swarm.ing/pieui:socket-cache",()=>new Map);var No=F("@swarm.ing/pieui:context:socket",()=>Eo(null)),a=No;import Kf from"mitt";import{createContext as yo,useCallback as Mf,useContext as Ef}from"react";var xo=F("@swarm.ing/pieui:context:mitt",()=>yo(null));var N=xo;import{jsx as po,jsxs as mo,Fragment as jo}from"react/jsx-runtime";var bo=({card:o,data:U,children:I,useSocketioSupport:T=!1,useCentrifugeSupport:z=!1,useMittSupport:f=!1,centrifugeChannel:Z=void 0,methods:L=void 0,stored:O=void 0})=>{let H=n(),B=ko(L);if(B.current=L,H)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:z,mitt:f,centrifugeChannel:Z}),console.log("[PieCard] Methods:",L?Object.keys(L):"none"),console.log("[PieCard] Has children:",!!I);let A=p(a),$=p(s),w=p(N);if(m(()=>{if(!A||!T||!B.current||!U.name){if(H&&T)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!A,useSocketioSupport:T,hasMethods:!!B.current,hasDataName:!!U?.name});return}let X=Object.keys(B.current??{}).map((G)=>{let D=`pie${G}_${U.name}`;if(H)console.log(`[PieCard] Socket.IO registering event: ${D}`);let Y=(_)=>{B.current?.[G]?.(_)};return A.on(D,Y),[D,Y]});return()=>{X.forEach(([G,D])=>{if(H)console.log(`[PieCard] Socket.IO unregistering event: ${G}`);A.off(G,D)})}},[A,U.name,T]),m(()=>{if(!$||!z||!Z||!U.name){if(H&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!$,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!B.current,hasDataName:!!U?.name});return}let X=Object.keys(B.current??{}).map((G)=>{let D=`pie${G}_${U.name}_${Z}`;if(H)console.log(`[PieCard] Centrifuge subscribing to channel: ${D}`);let Y=$.newSubscription(D);return Y.on("publication",(_)=>{if(H)console.log(`[PieCard] Centrifuge received data on ${D}:`,_.data);B.current?.[G]?.(_.data)}),Y.subscribe(),Y});return()=>{X.forEach((G)=>{if(H)console.log("[PieCard] Centrifuge unsubscribing from channel");G.unsubscribe(),$.removeSubscription(G)})}},[$,Z,U.name,z]),m(()=>{if(!w||!f||!U.name){if(H&&f)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:f,hasMethods:!!B.current,hasDataName:!!U?.name});return}let P=Object.keys(B.current??{}),X={};return P.forEach((G)=>{let D=`pie${G}_${U.name}`,Y=(_)=>{if(H)console.log(`[PieCard] Mitt registering event: ${D}`);B.current?.[G]?.(_)};X[D]=Y,w.on(D,Y)}),()=>{Object.entries(X).forEach(([G,D])=>{if(H)console.log(`[PieCard] Mitt unregistering event: ${G}`);w.off(G,D)})}},[w,U.name,f]),H)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return mo(jo,{children:[po("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),I]});return I},J=bo;import{lazy as So}from"react";var E=new Map;function go(o,U){return U.catch(()=>{if(E.get(o)===U)E.delete(o)}),E.set(o,U),U}function t(o,U){return So(()=>{if(E.has(U))return E.get(U);return go(U,o().then((I)=>I))})}var e=F("@swarm.ing/pieui:component-registry",()=>new Map),vo=(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=t(U.loader,o.name),U.isLazy=!0;return U};function q(o){let U=vo(o);return e.set(U.name,U),U.component}var y=(o)=>{return e.get(o)};import{useContext as oo,memo as oU}from"react";import{createContext as lo}from"react";import{jsx as io,Fragment as ro}from"react/jsx-runtime";var co=F("@swarm.ing/pieui:context:fallback",()=>lo(io(ro,{}))),K=co;import{createContext as uo}from"react";var ho=F("@swarm.ing/pieui:context:lazyError",()=>uo(void 0)),x=ho;import{Component as no,Suspense as so}from"react";import{jsx as eo}from"react/jsx-runtime";var ao=2,to=400;class V extends no{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<ao){let U=to*(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 eo(so,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as S}from"react/jsx-runtime";function UU({uiConfig:o,setUiAjaxConfiguration:U}){let I=oo(K),T=oo(x),z=M();if(z)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=y(o.card);if(!f?.component){if(z)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return I}if(z)console.log("[UI] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata});let Z=f.component,L=S(Z,{data:o.data,content:o.content,setUiAjaxConfiguration:U});if(f.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",f.name);return S(V,{name:f.name,fallback:f.fallback?S(f.fallback,{}):I,onError:T,children:L})}if(z)console.log("[UI] Rendering component directly:",f.name);return L}var R=oU(UU);import{useContext as Uo}from"react";import{createContext as fU}from"react";var IU=F("@swarm.ing/pieui:context:uiRenderer",()=>fU(null)),W=IU;import{jsx as k}from"react/jsx-runtime";function fo({uiConfig:o,setUiAjaxConfiguration:U}){let I=Uo(K),T=Uo(x),z=M();if(z)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=y(o.card);if(!f?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return I}if(z)console.log("[UILoading] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata,hasFallback:!!f.fallback});if(f.fallback){if(z)console.log("[UILoading] Rendering fallback for:",f.name);let O=f.fallback;return k(O,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",f.name);let Z=f.component,L=k(W.Provider,{value:fo,children:k(Z,{data:o.data,content:o.content,setUiAjaxConfiguration:U})});if(f.isLazy)return k(V,{name:f.name,fallback:I,onError:T,children:L});return L}var TU=fo;import{useContext as zU}from"react";import{jsx as g}from"react/jsx-runtime";var HU=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,sx:z}=o,f=zU(W)??R;return g(J,{card:T,data:o,children:g("div",{style:z,id:T,children:U.map((Z,L)=>{return g(f,{uiConfig:Z,setUiAjaxConfiguration:I},`children-${L}`)})})})},Io=HU;var ZU=q({name:"SequenceCard",component:Io,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as LU}from"react";import{jsx as To}from"react/jsx-runtime";var PU=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T}=o,z=LU(W)??R;return To(J,{card:T,data:o,children:U.map((f,Z)=>{return To(z,{uiConfig:f,setUiAjaxConfiguration:I},`children-${Z}`)})})},zo=PU;var OU=q({name:"UnionCard",component:zo,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as $U,useState as qU}from"react";import GU from"html-react-parser";import{useCallback as b,useEffect as wU,useRef as v,useState as AU}from"react";function BU(){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 l(o=null,U){let[I,T]=AU(!1),z=v(null),f=v(null),Z=v(null),L=b(async(A,$=!0)=>{if(z.current)O();let w=new RTCPeerConnection;if(w.onconnectionstatechange=()=>{if(w.connectionState==="connected")T(!0);else if(["disconnected","failed","closed"].includes(w.connectionState))T(!1)},w.ontrack=(Q)=>{if(o)o.srcObject=Q.streams[0]},$){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});w.addTrack(Q.getTracks()[0],Q)}else{let Q=BU();w.addTrack(Q)}let P=w.createDataChannel("oai-events");f.current=P,Z.current=new Promise((Q)=>{P.addEventListener("open",()=>{Q()})});let X=await w.createOffer();await w.setLocalDescription(X);let _=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${A}`,"Content-Type":"application/sdp"}})).text();await w.setRemoteDescription({type:"answer",sdp:_}),z.current=w,await Z.current},[o]),O=b(()=>{let A=f.current;if(A)A.close();z.current?.getSenders()?.forEach(($)=>$.track?.stop()),z.current?.close(),T(!1),z.current=null,f.current=null,Z.current=null},[o]),H=b((A)=>{let $=f.current;if(!$){console.error("Data channel is not ready",A);return}let w=new Date().toLocaleTimeString();if(A.event_id=A.event_id||crypto.randomUUID(),$.send(JSON.stringify(A)),!A.timestamp)A.timestamp=w;U?.(A)},[U,o]),B=b((A)=>{if(!f.current){console.error("Data channel is not ready");return}let w=()=>{H({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:A}]}}),H({type:"response.create"})};if(Z.current)Z.current.then(w);else w()},[U,o]);return wU(()=>{let A=f.current;if(!A)return;let $=(w)=>{let P=JSON.parse(w.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();U?.(P)};return A.addEventListener("message",$),()=>{A.removeEventListener("message",$)}},[U,o]),{isSessionActive:I,startSession:L,stopSession:O,sendTextMessage:B}}import{jsx as FU}from"react/jsx-runtime";var JU=({data:o})=>{let{html:U,useSocketioSupport:I,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:f}=o,[Z,L]=qU(U),{isSessionActive:O,startSession:H,sendTextMessage:B}=l(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)L((X)=>X+P.delta)});return $U(()=>{L(U)},[U]),FU(J,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{L(P.value)},generateUsingAI:async(P)=>{try{if(!O&&P.token)await H(P.token,!1);B(P.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(P)=>{if(!O&&P.token)await H(P.token,!1)}},useCentrifugeSupport:T,useSocketioSupport:I,useMittSupport:z,centrifugeChannel:f,children:GU(Z)})},Ho=JU;var DU=q({name:"HTMLEmbedCard",component:Ho,metadata:{author:"Swarm.ing"}});import{useEffect as QU,useState as XU}from"react";import{jsx as Zo}from"react/jsx-runtime";var YU=({data:o})=>{let{name:U,value:I,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:f,centrifugeChannel:Z}=o,[L,O]=XU(I);return QU(()=>{O(I)},[I]),Zo(J,{card:"HiddenCard",data:o,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:f,centrifugeChannel:Z,methods:{update:({value:H})=>{O(H)}},children:Zo("input",{type:"hidden",id:U,name:U,value:L})})},Lo=YU;var WU=q({name:"HiddenCard",component:Lo,metadata:{author:"Swarm.ing"}});import{useContext as Po,useEffect as KU}from"react";import{createContext as RU}from"react";var _U=F("@swarm.ing/pieui:context:navigate",()=>RU(void 0)),C=_U;import{jsx as MU,Fragment as CU}from"react/jsx-runtime";var VU=({data:o})=>{let{url:U}=o,I=Po(C),T=Po(K);return KU(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else I?.(U)},[U,I]),MU(CU,{children:T})},Oo=VU;var EU=q({name:"AutoRedirectCard",component:Oo,metadata:{author:"Swarm.ing"}});import{Bounce as NU,Slide as yU,Zoom as xU,Flip as kU}from"react-toastify";import{toast as bU,ToastContainer as jU}from"react-toastify";import{useContext as pU,useMemo as mU,useRef as SU}from"react";import{jsx as c,Fragment as dU}from"react/jsx-runtime";var gU={bounce:NU,slide:yU,zoom:xU,flip:kU},vU=(o)=>{let U={...o,type:o.alertType,transition:o.transition?gU[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};bU(o.message,U)},lU=(o)=>{console.log("Log event",o)},cU=(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()})},rU=({data:o})=>{let{useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:T,centrifugeChannel:z}=o,f=pU(C),Z=SU(f);Z.current=f;let L=mU(()=>({alert:vU,log:lU,push:cU,redirect:(O)=>{if(O.to){let H=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()},reload:(O)=>{if(O.to){let H=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()}}),[]);return c(dU,{children:c(J,{card:"IOEventsCard",data:o,useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:T,centrifugeChannel:z,methods:L,children:c(jU,{})})})},wo=rU;var iU=q({name:"IOEventsCard",component:wo,metadata:{author:"Swarm.ing"}});import{useEffect as Ao,useState as uU}from"react";import{jsx as Bo}from"react/jsx-runtime";var hU=({data:o})=>{let{name:U,key:I,value:T,useSocketioSupport:z,useCentrifugeSupport:f,useMittSupport:Z,centrifugeChannel:L}=o,[O,H]=uU(T);return Ao(()=>{H(T)},[T]),Ao(()=>{if(typeof window>"u")return;sessionStorage.setItem(I,O)},[I,O]),Bo(J,{card:"SessionStorageCard",data:o,useSocketioSupport:z,useCentrifugeSupport:f,useMittSupport:Z,centrifugeChannel:L,methods:{update:({value:B})=>{H(B)},remove:()=>{sessionStorage.removeItem(I),H("")}},children:Bo("input",{type:"hidden",id:U,name:U,value:O})})},$o=hU;var nU=q({name:"SessionStorageCard",component:$o,metadata:{author:"PieData"}});import{useEffect as qo,useState as sU}from"react";import{jsx as Go}from"react/jsx-runtime";var aU=({data:o})=>{let{name:U,key:I,value:T,useSocketioSupport:z,useCentrifugeSupport:f,useMittSupport:Z,centrifugeChannel:L}=o,[O,H]=sU(T);return qo(()=>{H(T)},[T]),qo(()=>{if(typeof window>"u")return;localStorage.setItem(I,O)},[I,O]),Go(J,{card:"DeviceStorageCard",data:o,useSocketioSupport:z,useCentrifugeSupport:f,useMittSupport:Z,centrifugeChannel:L,methods:{update:({value:B})=>{H(B)},remove:()=>{localStorage.removeItem(I),H("")}},children:Go("input",{type:"hidden",id:U,name:U,value:O})})},Jo=aU;var tU=q({name:"DeviceStorageCard",component:Jo,metadata:{author:"PieData"}});import{useCallback as r,useContext as d,useEffect as eU,useRef as of,useState as Fo}from"react";import{jsx as Do}from"react/jsx-runtime";var Uf=({data:o,content:U})=>{let{useLoader:I,noReturn:T,returnType:z,useSocketioSupport:f,useCentrifugeSupport:Z,useMittSupport:L,centrifugeChannel:O}=o,H=d(K),B=d(W)??R,[A,$]=Fo(!1),[w,P]=Fo(null),X=of(U),G=d(N),D=r((Q)=>{if(Q===null)$(!0);else if($(!1),!T)X.current=Q;if(!T)P(Q)},[T]),Y=r((Q)=>{X.current=Q.content,P(Q.content)},[]),_=r((Q)=>{if(Q===null)$(!0);else if($(!1),!T)for(let h of Q)G?.emit(h.name,h.data)},[T,G]);if(eU(()=>{P(U),$(!1)},[U]),!w&&I)return H;return Do(J,{card:"AjaxGroupCard",data:o,methods:{changeContent:Y},useSocketioSupport:f,useCentrifugeSupport:Z,useMittSupport:L,centrifugeChannel:O,children:Do(B,{uiConfig:w??X.current,setUiAjaxConfiguration:z==="events"?_:D})})},Qo=Uf;var ff=q({name:"AjaxGroupCard",component:Qo,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as Xo}from"react";import{jsx as i}from"react/jsx-runtime";var If=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,url:z,sx:f}=o,Z=Xo(C),L=Xo(W)??R;return i(J,{card:T,data:o,children:i("div",{style:f,id:T,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(L,{setUiAjaxConfiguration:I,uiConfig:U})})})},Yo=If;var Tf=q({name:"BoxCard",component:Yo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as zf}from"react";import{jsx as u}from"react/jsx-runtime";var Hf=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,sx:z}=o,f=zf(W)??R;return u(J,{card:T,data:o,children:u("div",{style:z,id:T,children:U.map((Z,L)=>{return u(f,{uiConfig:Z,setUiAjaxConfiguration:I},`children-${L}`)})})})},Wo=Hf;var Zf=q({name:"OneOfCard",component:Wo,metadata:{author:"Swarm.ing",description:"Different variants"}});export{OU as UnionCard,TU as UILoading,R as UI,nU as SessionStorageCard,ZU as SequenceCard,J as PieCard,Zf as OneOfCard,iU as IOEventsCard,WU as HiddenCard,DU as HTMLEmbedCard,tU as DeviceStorageCard,Tf as BoxCard,EU as AutoRedirectCard,ff as AjaxGroupCard};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var Hr=Object.create;var{getPrototypeOf:Or,defineProperty:M,getOwnPropertyNames:Do,getOwnPropertyDescriptor:Lr}=Object,zo=Object.prototype.hasOwnProperty;var Zo=(o,r,p)=>{p=o!=null?Hr(Or(o)):{};let f=r||!o||!o.__esModule?M(p,"default",{value:o,enumerable:!0}):p;for(let U of Do(o))if(!zo.call(f,U))M(f,U,{get:()=>o[U],enumerable:!0});return f},Lo=new WeakMap,Dr=(o)=>{var r=Lo.get(o),p;if(r)return r;if(r=M({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")Do(o).map((f)=>!zo.call(r,f)&&M(r,f,{get:()=>o[f],enumerable:!(p=Lr(o,f))||p.enumerable}));return Lo.set(o,r),r};var zr=(o,r)=>{for(var p in r)M(o,p,{get:r[p],enumerable:!0,configurable:!0,set:(f)=>r[p]=()=>f})};var pf={};zr(pf,{UnionCard:()=>bo,UILoading:()=>Ro,UI:()=>g,SessionStorageCard:()=>fr,SequenceCard:()=>yo,SecureStorageCard:()=>Ir,PieCard:()=>i,OneOfCard:()=>Tr,IOEventsCard:()=>or,HiddenCard:()=>co,HTMLEmbedCard:()=>ao,DeviceStorageCard:()=>Cr,CloudStorageCard:()=>ur,BoxCard:()=>Ar,AutoRedirectCard:()=>so,AjaxGroupCard:()=>Sr});module.exports=Dr(pf);var l=require("react");var j=require("react"),Zr=j.createContext(null),Br=()=>{let o=j.useContext(Zr);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var K=()=>{let{enableRenderingLog:o}=Br();return o},Bo=K;var Vo=require("react"),Vr=require("centrifuge");var gr=Vo.createContext(null),go=gr;var qr=require("socket.io-client"),qo=require("react");var $r=qo.createContext(null),$o=$r;var lr=Zo(require("mitt")),n=require("react");var Gr=n.createContext(null);var a=Gr;var J=require("react/jsx-runtime"),Fr=({card:o,data:r,children:p,useSocketioSupport:f=!1,useCentrifugeSupport:U=!1,useMittSupport:C=!1,centrifugeChannel:m=void 0,methods:S=void 0,stored:d=void 0})=>{let u=Bo(),I=l.useRef(S);if(I.current=S,u)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:f,centrifuge:U,mitt:C,centrifugeChannel:m}),console.log("[PieCard] Methods:",S?Object.keys(S):"none"),console.log("[PieCard] Has children:",!!p);let w=l.useContext($o),H=l.useContext(go),A=l.useContext(a);if(l.useEffect(()=>{if(!w||!f||!I.current||!r.name){if(u&&f)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!w,useSocketioSupport:f,hasMethods:!!I.current,hasDataName:!!r?.name});return}let z=Object.keys(I.current??{}).map((O)=>{let L=`pie${O}_${r.name}`;if(u)console.log(`[PieCard] Socket.IO registering event: ${L}`);let V=($)=>{I.current?.[O]?.($)};return w.on(L,V),[L,V]});return()=>{z.forEach(([O,L])=>{if(u)console.log(`[PieCard] Socket.IO unregistering event: ${O}`);w.off(O,L)})}},[w,r.name,f]),l.useEffect(()=>{if(!H||!U||!m||!r.name){if(u&&U)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!H,useCentrifugeSupport:U,hasCentrifugeChannel:!!m,hasMethods:!!I.current,hasDataName:!!r?.name});return}let z=Object.keys(I.current??{}).map((O)=>{let L=`pie${O}_${r.name}_${m}`;if(u)console.log(`[PieCard] Centrifuge subscribing to channel: ${L}`);let V=H.newSubscription(L);return V.on("publication",($)=>{if(u)console.log(`[PieCard] Centrifuge received data on ${L}:`,$.data);I.current?.[O]?.($.data)}),V.subscribe(),V});return()=>{z.forEach((O)=>{if(u)console.log("[PieCard] Centrifuge unsubscribing from channel");O.unsubscribe(),H.removeSubscription(O)})}},[H,m,r.name,U]),l.useEffect(()=>{if(!A||!C||!r.name){if(u&&C)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!A,useMittSupport:C,hasMethods:!!I.current,hasDataName:!!r?.name});return}let P=Object.keys(I.current??{}),z={};return P.forEach((O)=>{let L=`pie${O}_${r.name}`,V=($)=>{if(u)console.log(`[PieCard] Mitt registering event: ${L}`);I.current?.[O]?.($)};z[L]=V,A.on(L,V)}),()=>{Object.entries(z).forEach(([O,L])=>{if(u)console.log(`[PieCard] Mitt unregistering event: ${O}`);A.off(O,L)})}},[A,r.name,C]),u)console.log("[PieCard] Rendering complete, returning children");if(d!==void 0)return J.jsxs(J.Fragment,{children:[J.jsx("input",{type:"hidden",name:r.name,value:JSON.stringify(d)}),p]});return p},i=Fr;var lo=require("react"),R=new Map;function Jr(o,r){return r.catch(()=>{if(R.get(o)===r)R.delete(o)}),R.set(o,r),r}function Go(o,r){return lo.lazy(()=>{if(R.has(r))return R.get(r);return Jr(r,o().then((p)=>p))})}var Fo=Symbol.for("@swarm.ing/pieui:component-registry"),Jo=globalThis,Qo=Jo[Fo]??(Jo[Fo]=new Map),Qr=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=Go(r.loader,o.name),r.isLazy=!0;return r};function T(o){let r=Qr(o);return Qo.set(r.name,r),r.component}var v=(o)=>{return Qo.get(o)};var _=require("react");var Wo=require("react"),c=require("react/jsx-runtime"),Wr=Wo.createContext(c.jsx(c.Fragment,{})),G=Wr;var Xo=require("react"),Xr=Xo.createContext(void 0),t=Xr;var h=require("react"),Yo=require("react/jsx-runtime"),Yr=2,Mr=400;class Q extends h.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<Yr){let r=Mr*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((p)=>({failed:!1,attempt:p.attempt+1}))},r)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return Yo.jsx(h.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var s=require("react/jsx-runtime");function Kr({uiConfig:o,setUiAjaxConfiguration:r}){let p=_.useContext(G),f=_.useContext(t),U=K();if(U)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let C=v(o.card);if(!C?.component){if(U)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return p}if(U)console.log("[UI] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata});let m=C.component,S=s.jsx(m,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(C.isLazy){if(U)console.log("[UI] Rendering lazy component with Suspense:",C.name);return s.jsx(Q,{name:C.name,fallback:C.fallback?s.jsx(C.fallback,{}):p,onError:f,children:S})}if(U)console.log("[UI] Rendering component directly:",C.name);return S}var g=_.memo(Kr);var uo=require("react");var Mo=require("react"),Rr=Mo.createContext(null),q=Rr;var x=require("react/jsx-runtime");function Ko({uiConfig:o,setUiAjaxConfiguration:r}){let p=uo.useContext(G),f=uo.useContext(t),U=K();if(U)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let C=v(o.card);if(!C?.component){if(U)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return p}if(U)console.log("[UILoading] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata,hasFallback:!!C.fallback});if(C.fallback){if(U)console.log("[UILoading] Rendering fallback for:",C.name);let d=C.fallback;return x.jsx(d,{})}if(U)console.log("[UILoading] No fallback, rendering full component:",C.name);let m=C.component,S=x.jsx(q.Provider,{value:Ko,children:x.jsx(m,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(C.isLazy)return x.jsx(Q,{name:C.name,fallback:p,onError:f,children:S});return S}var Ro=Ko;var _o=require("react");var e=require("react/jsx-runtime"),_r=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f,sx:U}=o,C=_o.useContext(q)??g;return e.jsx(i,{card:f,data:o,children:e.jsx("div",{style:U,id:f,children:r.map((m,S)=>{return e.jsx(C,{uiConfig:m,setUiAjaxConfiguration:p},`children-${S}`)})})})},xo=_r;var yo=T({name:"SequenceCard",component:xo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Eo=require("react");var mo=require("react/jsx-runtime"),xr=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f}=o,U=Eo.useContext(q)??g;return mo.jsx(i,{card:f,data:o,children:r.map((C,m)=>{return mo.jsx(U,{uiConfig:C,setUiAjaxConfiguration:p},`children-${m}`)})})},ko=xr;var bo=T({name:"UnionCard",component:ko,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var oo=require("react"),No=Zo(require("html-react-parser"));var B=require("react");function yr(){let o=new AudioContext,r=o.createOscillator(),p=r.connect(o.createMediaStreamDestination());r.start();let f=p.stream.getAudioTracks()[0];return f.enabled=!1,f}function Io(o=null,r){let[p,f]=B.useState(!1),U=B.useRef(null),C=B.useRef(null),m=B.useRef(null),S=B.useCallback(async(w,H=!0)=>{if(U.current)d();let A=new RTCPeerConnection;if(A.onconnectionstatechange=()=>{if(A.connectionState==="connected")f(!0);else if(["disconnected","failed","closed"].includes(A.connectionState))f(!1)},A.ontrack=(D)=>{if(o)o.srcObject=D.streams[0]},H){let D=await navigator.mediaDevices.getUserMedia({audio:!0});A.addTrack(D.getTracks()[0],D)}else{let D=yr();A.addTrack(D)}let P=A.createDataChannel("oai-events");C.current=P,m.current=new Promise((D)=>{P.addEventListener("open",()=>{D()})});let z=await A.createOffer();await A.setLocalDescription(z);let $=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:z.sdp,headers:{Authorization:`Bearer ${w}`,"Content-Type":"application/sdp"}})).text();await A.setRemoteDescription({type:"answer",sdp:$}),U.current=A,await m.current},[o]),d=B.useCallback(()=>{let w=C.current;if(w)w.close();U.current?.getSenders()?.forEach((H)=>H.track?.stop()),U.current?.close(),f(!1),U.current=null,C.current=null,m.current=null},[o]),u=B.useCallback((w)=>{let H=C.current;if(!H){console.error("Data channel is not ready",w);return}let A=new Date().toLocaleTimeString();if(w.event_id=w.event_id||crypto.randomUUID(),H.send(JSON.stringify(w)),!w.timestamp)w.timestamp=A;r?.(w)},[r,o]),I=B.useCallback((w)=>{if(!C.current){console.error("Data channel is not ready");return}let A=()=>{u({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:w}]}}),u({type:"response.create"})};if(m.current)m.current.then(A);else A()},[r,o]);return B.useEffect(()=>{let w=C.current;if(!w)return;let H=(A)=>{let P=JSON.parse(A.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();r?.(P)};return w.addEventListener("message",H),()=>{w.removeEventListener("message",H)}},[r,o]),{isSessionActive:p,startSession:S,stopSession:d,sendTextMessage:I}}var no=require("react/jsx-runtime"),Er=({data:o})=>{let{html:r,useSocketioSupport:p,useCentrifugeSupport:f,useMittSupport:U,centrifugeChannel:C}=o,[m,S]=oo.useState(r),{isSessionActive:d,startSession:u,sendTextMessage:I}=Io(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)S((z)=>z+P.delta)});return oo.useEffect(()=>{S(r)},[r]),no.jsx(i,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{S(P.value)},generateUsingAI:async(P)=>{try{if(!d&&P.token)await u(P.token,!1);I(P.prompt)}catch(z){console.error("Failed to generate using AI",z)}},initializeAI:async(P)=>{if(!d&&P.token)await u(P.token,!1)}},useCentrifugeSupport:f,useSocketioSupport:p,useMittSupport:U,centrifugeChannel:C,children:No.default(m)})},jo=Er;var ao=T({name:"HTMLEmbedCard",component:jo,metadata:{author:"Swarm.ing"}});var ro=require("react");var So=require("react/jsx-runtime"),kr=({data:o})=>{let{name:r,value:p,useSocketioSupport:f,useCentrifugeSupport:U,useMittSupport:C,centrifugeChannel:m}=o,[S,d]=ro.useState(p);return ro.useEffect(()=>{d(p)},[p]),So.jsx(i,{card:"HiddenCard",data:o,useSocketioSupport:f,useCentrifugeSupport:U,useMittSupport:C,centrifugeChannel:m,methods:{update:({value:u})=>{d(u)}},children:So.jsx("input",{type:"hidden",id:r,name:r,value:S})})},vo=kr;var co=T({name:"HiddenCard",component:vo,metadata:{author:"Swarm.ing"}});var y=require("react");var to=require("react"),br=to.createContext(void 0),W=br;var fo=require("react/jsx-runtime"),Nr=({data:o})=>{let{url:r}=o,p=y.useContext(W),f=y.useContext(G);return y.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else p?.(r)},[r,p]),fo.jsx(fo.Fragment,{children:f})},ho=Nr;var so=T({name:"AutoRedirectCard",component:ho,metadata:{author:"Swarm.ing"}});var F=require("react-toastify"),po=require("react-toastify");var Y=require("react");var X=require("react/jsx-runtime"),jr={bounce:F.Bounce,slide:F.Slide,zoom:F.Zoom,flip:F.Flip},nr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?jr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};po.toast(o.message,r)},ar=(o)=>{console.log("Log event",o)},vr=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(f){console.error("[IOEventsCard] Failed to show notification",f)}},p=window.Notification.permission;if(p==="granted"){r();return}if(p==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((f)=>{if(f==="granted")r()})},cr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:p,useMittSupport:f,centrifugeChannel:U}=o,C=Y.useContext(W),m=Y.useRef(C);m.current=C;let S=Y.useMemo(()=>({alert:nr,log:ar,push:vr,redirect:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else m.current?.(u)}else window.location.reload()},reload:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else m.current?.(u)}else window.location.reload()}}),[]);return X.jsx(X.Fragment,{children:X.jsx(i,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:p,useMittSupport:f,centrifugeChannel:U,methods:S,children:X.jsx(po.ToastContainer,{})})})},eo=cr;var or=T({name:"IOEventsCard",component:eo,metadata:{author:"Swarm.ing"}});var E=require("react");var Po=require("react/jsx-runtime"),tr=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=E.useState(f);return E.useEffect(()=>{u(f)},[f]),E.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(p,d)},[p,d]),Po.jsx(i,{card:"SessionStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{sessionStorage.removeItem(p),u("")}},children:Po.jsx("input",{type:"hidden",id:r,name:r,value:d})})},rr=tr;var fr=T({name:"SessionStorageCard",component:rr,metadata:{author:"PieData"}});var k=require("react");var Ao=require("react/jsx-runtime"),hr=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=k.useState(f);return k.useEffect(()=>{u(f)},[f]),k.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(p,d)},[p,d]),Ao.jsx(i,{card:"DeviceStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{localStorage.removeItem(p),u("")}},children:Ao.jsx("input",{type:"hidden",id:r,name:r,value:d})})},pr=hr;var Cr=T({name:"DeviceStorageCard",component:pr,metadata:{author:"PieData"}});var b=require("react");var wo=require("react/jsx-runtime"),sr=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=b.useState(f);return b.useEffect(()=>{u(f)},[f]),b.useEffect(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp?.CloudStorage;if(!I)return;I.setItem(p,d)},[p,d]),wo.jsx(i,{card:"CloudStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{let I=window.Telegram?.WebApp?.CloudStorage;if(I)I.removeItem(p);u("")}},children:wo.jsx("input",{type:"hidden",id:r,name:r,value:d})})},Ur=sr;var ur=T({name:"CloudStorageCard",component:Ur,metadata:{author:"PieData"}});var N=require("react");var io=require("react/jsx-runtime"),er=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=N.useState(f);return N.useEffect(()=>{u(f)},[f]),N.useEffect(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp?.SecureStorage;if(!I)return;I.setItem(p,d)},[p,d]),io.jsx(i,{card:"SecureStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{let I=window.Telegram?.WebApp?.SecureStorage;if(I)I.removeItem(p);u("")}},children:io.jsx("input",{type:"hidden",id:r,name:r,value:d})})},mr=er;var Ir=T({name:"SecureStorageCard",component:mr,metadata:{author:"PieData"}});var Z=require("react");var To=require("react/jsx-runtime"),of=({data:o,content:r})=>{let{useLoader:p,noReturn:f,returnType:U,useSocketioSupport:C,useCentrifugeSupport:m,useMittSupport:S,centrifugeChannel:d}=o,u=Z.useContext(G),I=Z.useContext(q)??g,[w,H]=Z.useState(!1),[A,P]=Z.useState(null),z=Z.useRef(r),O=Z.useContext(a),L=Z.useCallback((D)=>{if(D===null)H(!0);else if(H(!1),!f)z.current=D;if(!f)P(D)},[f]),V=Z.useCallback((D)=>{z.current=D.content,P(D.content)},[]),$=Z.useCallback((D)=>{if(D===null)H(!0);else if(H(!1),!f)for(let Oo of D)O?.emit(Oo.name,Oo.data)},[f,O]);if(Z.useEffect(()=>{P(r),H(!1)},[r]),!A&&p)return u;return To.jsx(i,{card:"AjaxGroupCard",data:o,methods:{changeContent:V},useSocketioSupport:C,useCentrifugeSupport:m,useMittSupport:S,centrifugeChannel:d,children:To.jsx(I,{uiConfig:A??z.current,setUiAjaxConfiguration:U==="events"?$:L})})},dr=of;var Sr=T({name:"AjaxGroupCard",component:dr,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var Ho=require("react");var Co=require("react/jsx-runtime"),rf=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f,url:U,sx:C}=o,m=Ho.useContext(W),S=Ho.useContext(q)??g;return Co.jsx(i,{card:f,data:o,children:Co.jsx("div",{style:C,id:f,onClick:(u)=>{if(U)if(u.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else m?.(U)},children:Co.jsx(S,{setUiAjaxConfiguration:p,uiConfig:r})})})},Pr=rf;var Ar=T({name:"BoxCard",component:Pr,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var wr=require("react");var Uo=require("react/jsx-runtime"),ff=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f,sx:U}=o,C=wr.useContext(q)??g;return Uo.jsx(i,{card:f,data:o,children:Uo.jsx("div",{style:U,id:f,children:r.map((m,S)=>{return Uo.jsx(C,{uiConfig:m,setUiAjaxConfiguration:p},`children-${S}`)})})})},ir=ff;var Tr=T({name:"OneOfCard",component:ir,metadata:{author:"Swarm.ing",description:"Different variants"}});
2
+ var LU=Object.create;var{getPrototypeOf:PU,defineProperty:j,getOwnPropertyNames:Go,getOwnPropertyDescriptor:OU}=Object,Jo=Object.prototype.hasOwnProperty;var Fo=(o,U,f)=>{f=o!=null?LU(PU(o)):{};let I=U||!o||!o.__esModule?j(f,"default",{value:o,enumerable:!0}):f;for(let z of Go(o))if(!Jo.call(I,z))j(I,z,{get:()=>o[z],enumerable:!0});return I},qo=new WeakMap,wU=(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=OU(o,I))||f.enumerable}));return qo.set(o,U),U};var AU=(o,U)=>{for(var f in U)j(o,f,{get:U[f],enumerable:!0,configurable:!0,set:(I)=>U[f]=()=>I})};var uU={};AU(uU,{UnionCard:()=>mo,UILoading:()=>yo,UI:()=>_,SessionStorageCard:()=>to,SequenceCard:()=>bo,PieCard:()=>q,OneOfCard:()=>ZU,IOEventsCard:()=>so,HiddenCard:()=>ro,HTMLEmbedCard:()=>lo,DeviceStorageCard:()=>oU,BoxCard:()=>TU,AutoRedirectCard:()=>ho,AjaxGroupCard:()=>fU});module.exports=wU(uU);var C=require("react");var r=require("react");var zo=globalThis,F=(o,U)=>{let f=Symbol.for(o);if(!(f in zo))zo[f]=U();return zo[f]};var BU=F("@swarm.ing/pieui:context:pieConfig",()=>r.createContext(null)),$U=()=>{let o=r.useContext(BU);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var p=()=>{let{enableRenderingLog:o}=$U();return o},Do=p;var Qo=require("react"),qU=require("centrifuge");var eU=F("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var GU=F("@swarm.ing/pieui:context:centrifuge",()=>Qo.createContext(null)),Xo=GU;var JU=require("socket.io-client"),Yo=require("react");var If=F("@swarm.ing/pieui:socket-cache",()=>new Map);var FU=F("@swarm.ing/pieui:context:socket",()=>Yo.createContext(null)),Wo=FU;var DU=Fo(require("mitt")),d=require("react");var QU=F("@swarm.ing/pieui:context:mitt",()=>d.createContext(null));var i=QU;var N=require("react/jsx-runtime"),XU=({card:o,data:U,children:f,useSocketioSupport:I=!1,useCentrifugeSupport:z=!1,useMittSupport:T=!1,centrifugeChannel:Z=void 0,methods:L=void 0,stored:O=void 0})=>{let H=Do(),B=C.useRef(L);if(B.current=L,H)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:z,mitt:T,centrifugeChannel:Z}),console.log("[PieCard] Methods:",L?Object.keys(L):"none"),console.log("[PieCard] Has children:",!!f);let A=C.useContext(Wo),$=C.useContext(Xo),w=C.useContext(i);if(C.useEffect(()=>{if(!A||!I||!B.current||!U.name){if(H&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!A,useSocketioSupport:I,hasMethods:!!B.current,hasDataName:!!U?.name});return}let X=Object.keys(B.current??{}).map((J)=>{let D=`pie${J}_${U.name}`;if(H)console.log(`[PieCard] Socket.IO registering event: ${D}`);let R=(V)=>{B.current?.[J]?.(V)};return A.on(D,R),[D,R]});return()=>{X.forEach(([J,D])=>{if(H)console.log(`[PieCard] Socket.IO unregistering event: ${J}`);A.off(J,D)})}},[A,U.name,I]),C.useEffect(()=>{if(!$||!z||!Z||!U.name){if(H&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!$,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!B.current,hasDataName:!!U?.name});return}let X=Object.keys(B.current??{}).map((J)=>{let D=`pie${J}_${U.name}_${Z}`;if(H)console.log(`[PieCard] Centrifuge subscribing to channel: ${D}`);let R=$.newSubscription(D);return R.on("publication",(V)=>{if(H)console.log(`[PieCard] Centrifuge received data on ${D}:`,V.data);B.current?.[J]?.(V.data)}),R.subscribe(),R});return()=>{X.forEach((J)=>{if(H)console.log("[PieCard] Centrifuge unsubscribing from channel");J.unsubscribe(),$.removeSubscription(J)})}},[$,Z,U.name,z]),C.useEffect(()=>{if(!w||!T||!U.name){if(H&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:T,hasMethods:!!B.current,hasDataName:!!U?.name});return}let P=Object.keys(B.current??{}),X={};return P.forEach((J)=>{let D=`pie${J}_${U.name}`,R=(V)=>{if(H)console.log(`[PieCard] Mitt registering event: ${D}`);B.current?.[J]?.(V)};X[D]=R,w.on(D,R)}),()=>{Object.entries(X).forEach(([J,D])=>{if(H)console.log(`[PieCard] Mitt unregistering event: ${J}`);w.off(J,D)})}},[w,U.name,T]),H)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return N.jsxs(N.Fragment,{children:[N.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),f]});return f},q=XU;var Ro=require("react"),m=new Map;function YU(o,U){return U.catch(()=>{if(m.get(o)===U)m.delete(o)}),m.set(o,U),U}function _o(o,U){return Ro.lazy(()=>{if(m.has(U))return m.get(U);return YU(U,o().then((f)=>f))})}var Ko=F("@swarm.ing/pieui:component-registry",()=>new Map),WU=(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=_o(U.loader,o.name),U.isLazy=!0;return U};function G(o){let U=WU(o);return Ko.set(U.name,U),U.component}var u=(o)=>{return Ko.get(o)};var S=require("react");var Vo=require("react");var h=require("react/jsx-runtime"),RU=F("@swarm.ing/pieui:context:fallback",()=>Vo.createContext(h.jsx(h.Fragment,{}))),M=RU;var Co=require("react");var _U=F("@swarm.ing/pieui:context:lazyError",()=>Co.createContext(void 0)),n=_U;var s=require("react"),Mo=require("react/jsx-runtime"),KU=2,VU=400;class y extends s.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<KU){let U=VU*(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 Mo.jsx(s.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var a=require("react/jsx-runtime");function CU({uiConfig:o,setUiAjaxConfiguration:U}){let f=S.useContext(M),I=S.useContext(n),z=p();if(z)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=u(o.card);if(!T?.component){if(z)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return f}if(z)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let Z=T.component,L=a.jsx(Z,{data:o.data,content:o.content,setUiAjaxConfiguration:U});if(T.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",T.name);return a.jsx(y,{name:T.name,fallback:T.fallback?a.jsx(T.fallback,{}):f,onError:I,children:L})}if(z)console.log("[UI] Rendering component directly:",T.name);return L}var _=S.memo(CU);var Ho=require("react");var Eo=require("react");var MU=F("@swarm.ing/pieui:context:uiRenderer",()=>Eo.createContext(null)),K=MU;var g=require("react/jsx-runtime");function No({uiConfig:o,setUiAjaxConfiguration:U}){let f=Ho.useContext(M),I=Ho.useContext(n),z=p();if(z)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=u(o.card);if(!T?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return f}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 O=T.fallback;return g.jsx(O,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",T.name);let Z=T.component,L=g.jsx(K.Provider,{value:No,children:g.jsx(Z,{data:o.data,content:o.content,setUiAjaxConfiguration:U})});if(T.isLazy)return g.jsx(y,{name:T.name,fallback:f,onError:I,children:L});return L}var yo=No;var xo=require("react");var t=require("react/jsx-runtime"),EU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,sx:z}=o,T=xo.useContext(K)??_;return t.jsx(q,{card:I,data:o,children:t.jsx("div",{style:z,id:I,children:U.map((Z,L)=>{return t.jsx(T,{uiConfig:Z,setUiAjaxConfiguration:f},`children-${L}`)})})})},ko=EU;var bo=G({name:"SequenceCard",component:ko,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var jo=require("react");var Zo=require("react/jsx-runtime"),NU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I}=o,z=jo.useContext(K)??_;return Zo.jsx(q,{card:I,data:o,children:U.map((T,Z)=>{return Zo.jsx(z,{uiConfig:T,setUiAjaxConfiguration:f},`children-${Z}`)})})},po=NU;var mo=G({name:"UnionCard",component:po,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var e=require("react"),So=Fo(require("html-react-parser"));var W=require("react");function yU(){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 Lo(o=null,U){let[f,I]=W.useState(!1),z=W.useRef(null),T=W.useRef(null),Z=W.useRef(null),L=W.useCallback(async(A,$=!0)=>{if(z.current)O();let w=new RTCPeerConnection;if(w.onconnectionstatechange=()=>{if(w.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes(w.connectionState))I(!1)},w.ontrack=(Q)=>{if(o)o.srcObject=Q.streams[0]},$){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});w.addTrack(Q.getTracks()[0],Q)}else{let Q=yU();w.addTrack(Q)}let P=w.createDataChannel("oai-events");T.current=P,Z.current=new Promise((Q)=>{P.addEventListener("open",()=>{Q()})});let X=await w.createOffer();await w.setLocalDescription(X);let V=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${A}`,"Content-Type":"application/sdp"}})).text();await w.setRemoteDescription({type:"answer",sdp:V}),z.current=w,await Z.current},[o]),O=W.useCallback(()=>{let A=T.current;if(A)A.close();z.current?.getSenders()?.forEach(($)=>$.track?.stop()),z.current?.close(),I(!1),z.current=null,T.current=null,Z.current=null},[o]),H=W.useCallback((A)=>{let $=T.current;if(!$){console.error("Data channel is not ready",A);return}let w=new Date().toLocaleTimeString();if(A.event_id=A.event_id||crypto.randomUUID(),$.send(JSON.stringify(A)),!A.timestamp)A.timestamp=w;U?.(A)},[U,o]),B=W.useCallback((A)=>{if(!T.current){console.error("Data channel is not ready");return}let w=()=>{H({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:A}]}}),H({type:"response.create"})};if(Z.current)Z.current.then(w);else w()},[U,o]);return W.useEffect(()=>{let A=T.current;if(!A)return;let $=(w)=>{let P=JSON.parse(w.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();U?.(P)};return A.addEventListener("message",$),()=>{A.removeEventListener("message",$)}},[U,o]),{isSessionActive:f,startSession:L,stopSession:O,sendTextMessage:B}}var vo=require("react/jsx-runtime"),xU=({data:o})=>{let{html:U,useSocketioSupport:f,useCentrifugeSupport:I,useMittSupport:z,centrifugeChannel:T}=o,[Z,L]=e.useState(U),{isSessionActive:O,startSession:H,sendTextMessage:B}=Lo(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)L((X)=>X+P.delta)});return e.useEffect(()=>{L(U)},[U]),vo.jsx(q,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{L(P.value)},generateUsingAI:async(P)=>{try{if(!O&&P.token)await H(P.token,!1);B(P.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(P)=>{if(!O&&P.token)await H(P.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:f,useMittSupport:z,centrifugeChannel:T,children:So.default(Z)})},go=xU;var lo=G({name:"HTMLEmbedCard",component:go,metadata:{author:"Swarm.ing"}});var oo=require("react");var Po=require("react/jsx-runtime"),kU=({data:o})=>{let{name:U,value:f,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:Z}=o,[L,O]=oo.useState(f);return oo.useEffect(()=>{O(f)},[f]),Po.jsx(q,{card:"HiddenCard",data:o,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:Z,methods:{update:({value:H})=>{O(H)}},children:Po.jsx("input",{type:"hidden",id:U,name:U,value:L})})},co=kU;var ro=G({name:"HiddenCard",component:co,metadata:{author:"Swarm.ing"}});var v=require("react");var io=require("react");var bU=F("@swarm.ing/pieui:context:navigate",()=>io.createContext(void 0)),x=bU;var Uo=require("react/jsx-runtime"),jU=({data:o})=>{let{url:U}=o,f=v.useContext(x),I=v.useContext(M);return v.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else f?.(U)},[U,f]),Uo.jsx(Uo.Fragment,{children:I})},uo=jU;var ho=G({name:"AutoRedirectCard",component:uo,metadata:{author:"Swarm.ing"}});var E=require("react-toastify"),fo=require("react-toastify");var b=require("react");var k=require("react/jsx-runtime"),pU={bounce:E.Bounce,slide:E.Slide,zoom:E.Zoom,flip:E.Flip},mU=(o)=>{let U={...o,type:o.alertType,transition:o.transition?pU[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};fo.toast(o.message,U)},SU=(o)=>{console.log("Log event",o)},gU=(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()})},vU=({data:o})=>{let{useCentrifugeSupport:U,useSocketioSupport:f,useMittSupport:I,centrifugeChannel:z}=o,T=b.useContext(x),Z=b.useRef(T);Z.current=T;let L=b.useMemo(()=>({alert:mU,log:SU,push:gU,redirect:(O)=>{if(O.to){let H=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()},reload:(O)=>{if(O.to){let H=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()}}),[]);return k.jsx(k.Fragment,{children:k.jsx(q,{card:"IOEventsCard",data:o,useCentrifugeSupport:U,useSocketioSupport:f,useMittSupport:I,centrifugeChannel:z,methods:L,children:k.jsx(fo.ToastContainer,{})})})},no=vU;var so=G({name:"IOEventsCard",component:no,metadata:{author:"Swarm.ing"}});var l=require("react");var Oo=require("react/jsx-runtime"),lU=({data:o})=>{let{name:U,key:f,value:I,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:L}=o,[O,H]=l.useState(I);return l.useEffect(()=>{H(I)},[I]),l.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(f,O)},[f,O]),Oo.jsx(q,{card:"SessionStorageCard",data:o,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:L,methods:{update:({value:B})=>{H(B)},remove:()=>{sessionStorage.removeItem(f),H("")}},children:Oo.jsx("input",{type:"hidden",id:U,name:U,value:O})})},ao=lU;var to=G({name:"SessionStorageCard",component:ao,metadata:{author:"PieData"}});var c=require("react");var wo=require("react/jsx-runtime"),cU=({data:o})=>{let{name:U,key:f,value:I,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:L}=o,[O,H]=c.useState(I);return c.useEffect(()=>{H(I)},[I]),c.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(f,O)},[f,O]),wo.jsx(q,{card:"DeviceStorageCard",data:o,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:L,methods:{update:({value:B})=>{H(B)},remove:()=>{localStorage.removeItem(f),H("")}},children:wo.jsx("input",{type:"hidden",id:U,name:U,value:O})})},eo=cU;var oU=G({name:"DeviceStorageCard",component:eo,metadata:{author:"PieData"}});var Y=require("react");var Ao=require("react/jsx-runtime"),rU=({data:o,content:U})=>{let{useLoader:f,noReturn:I,returnType:z,useSocketioSupport:T,useCentrifugeSupport:Z,useMittSupport:L,centrifugeChannel:O}=o,H=Y.useContext(M),B=Y.useContext(K)??_,[A,$]=Y.useState(!1),[w,P]=Y.useState(null),X=Y.useRef(U),J=Y.useContext(i),D=Y.useCallback((Q)=>{if(Q===null)$(!0);else if($(!1),!I)X.current=Q;if(!I)P(Q)},[I]),R=Y.useCallback((Q)=>{X.current=Q.content,P(Q.content)},[]),V=Y.useCallback((Q)=>{if(Q===null)$(!0);else if($(!1),!I)for(let $o of Q)J?.emit($o.name,$o.data)},[I,J]);if(Y.useEffect(()=>{P(U),$(!1)},[U]),!w&&f)return H;return Ao.jsx(q,{card:"AjaxGroupCard",data:o,methods:{changeContent:R},useSocketioSupport:T,useCentrifugeSupport:Z,useMittSupport:L,centrifugeChannel:O,children:Ao.jsx(B,{uiConfig:w??X.current,setUiAjaxConfiguration:z==="events"?V:D})})},UU=rU;var fU=G({name:"AjaxGroupCard",component:UU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var Bo=require("react");var Io=require("react/jsx-runtime"),dU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,url:z,sx:T}=o,Z=Bo.useContext(x),L=Bo.useContext(K)??_;return Io.jsx(q,{card:I,data:o,children:Io.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:Io.jsx(L,{setUiAjaxConfiguration:f,uiConfig:U})})})},IU=dU;var TU=G({name:"BoxCard",component:IU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var zU=require("react");var To=require("react/jsx-runtime"),iU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,sx:z}=o,T=zU.useContext(K)??_;return To.jsx(q,{card:I,data:o,children:To.jsx("div",{style:z,id:I,children:U.map((Z,L)=>{return To.jsx(T,{uiConfig:Z,setUiAjaxConfiguration:f},`children-${L}`)})})})},HU=iU;var ZU=G({name:"OneOfCard",component:HU,metadata:{author:"Swarm.ing",description:"Different variants"}});
package/dist/index.d.ts CHANGED
@@ -11,8 +11,8 @@ export { registerPieComponent, getAllRegisteredComponents, getRegistrySize, regi
11
11
  export { trackLazy } from './util/lazy';
12
12
  export type { PieComponentProps, PieSimpleComponentProps, PieComplexComponentProps, PieContainerComponentProps, PieComplexContainerComponentProps, InputPieSimpleComponentProps, InputPieComplexComponentProps, InputPieContainerComponentProps, InputPieComplexContainerComponentProps, PieConfig, UIConfigType, SetUiAjaxConfigurationType, } from './types';
13
13
  export type { PieQueryOptions } from './components/PieRoot/types';
14
- export { useAjaxSubmit, readAjaxKey } from './util/ajaxCommonUtils';
15
- export type { RetryPolicy } from './util/ajaxCommonUtils';
14
+ export { useAjaxSubmit, readAjaxKey, readAjaxKeyAsync, parseDepName, } from './util/ajaxCommonUtils';
15
+ export type { RetryPolicy, DepSource } from './util/ajaxCommonUtils';
16
16
  export { usePieEmit } from './util/mitt';
17
17
  export { default as MittContext, getEmitter } from './util/mitt';
18
18
  export { default as SocketIOContext } from './util/socket';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACH,OAAO,IAAI,iBAAiB,EAC5B,KAAK,eAAe,GACvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAMtE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EACH,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,GACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EACR,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,sCAAsC,EACtC,SAAS,EACT,YAAY,EACZ,0BAA0B,GAC7B,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACnE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAMnD,OAAO,EAAE,EAAE,EAAE,MAAM,4BAA4B,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACH,OAAO,IAAI,iBAAiB,EAC5B,KAAK,eAAe,GACvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAMtE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EACH,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,GACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EACR,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,sCAAsC,EACtC,SAAS,EACT,YAAY,EACZ,0BAA0B,GAC7B,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EACH,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,YAAY,GACf,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAMnD,OAAO,EAAE,EAAE,EAAE,MAAM,4BAA4B,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA"}
package/dist/index.esm.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{useContext as Of,useEffect as Vf,useRef as jU}from"react";import{createContext as KU,useContext as SU}from"react";var m=KU(null),d=()=>{let f=SU(m);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},v=()=>{let{apiServer:f}=d();return f},h=v,r=()=>{let{centrifugeServer:f}=d();return f};var R=()=>{let{enableRenderingLog:f}=d();return f},_f=R;var Df="__piedemo__";import{createContext as _U}from"react";import{Centrifuge as wf}from"centrifuge";var Mf=new Map,n=(f,U)=>{if(!U)return null;let C=`${f}::${U}`,H=Mf.get(C);if(H)return H;async function D(){let Z=await fetch(f+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new wf.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let I=new wf(U,{getToken:D});return Mf.set(C,I),I},wU=_U(null),N=wU;import{io as MU}from"socket.io-client";import{createContext as LU}from"react";var Lf=new Map,i=(f)=>{let U=Lf.get(f);if(U)return U;let C=MU(f,{autoConnect:!1,transports:["websocket"]});return Lf.set(f,C),C},oU=LU(null),E=oU;import RU from"mitt";import{createContext as NU,useCallback as EU,useContext as yU}from"react";var Zf=null;function u(){if(!Zf)Zf=RU();return Zf}var of=NU(null);function kU(f){let U=yU(of);return EU((C,H)=>{(U??u()).emit(`pie${C}_${f}`,H)},[f,U])}var y=of;import{jsx as uU,jsxs as bU,Fragment as mU}from"react/jsx-runtime";var xU=({card:f,data:U,children:C,useSocketioSupport:H=!1,useCentrifugeSupport:D=!1,useMittSupport:I=!1,centrifugeChannel:Z=void 0,methods:$=void 0,stored:O=void 0})=>{let V=_f(),z=jU($);if(z.current=$,V)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:H,centrifuge:D,mitt:I,centrifugeChannel:Z}),console.log("[PieCard] Methods:",$?Object.keys($):"none"),console.log("[PieCard] Has children:",!!C);let X=Of(E),W=Of(N),T=Of(y);if(Vf(()=>{if(!X||!H||!z.current||!U.name){if(V&&H)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!X,useSocketioSupport:H,hasMethods:!!z.current,hasDataName:!!U?.name});return}let G=Object.keys(z.current??{}).map((q)=>{let J=`pie${q}_${U.name}`;if(V)console.log(`[PieCard] Socket.IO registering event: ${J}`);let F=(Q)=>{z.current?.[q]?.(Q)};return X.on(J,F),[J,F]});return()=>{G.forEach(([q,J])=>{if(V)console.log(`[PieCard] Socket.IO unregistering event: ${q}`);X.off(q,J)})}},[X,U.name,H]),Vf(()=>{if(!W||!D||!Z||!U.name){if(V&&D)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!W,useCentrifugeSupport:D,hasCentrifugeChannel:!!Z,hasMethods:!!z.current,hasDataName:!!U?.name});return}let G=Object.keys(z.current??{}).map((q)=>{let J=`pie${q}_${U.name}_${Z}`;if(V)console.log(`[PieCard] Centrifuge subscribing to channel: ${J}`);let F=W.newSubscription(J);return F.on("publication",(Q)=>{if(V)console.log(`[PieCard] Centrifuge received data on ${J}:`,Q.data);z.current?.[q]?.(Q.data)}),F.subscribe(),F});return()=>{G.forEach((q)=>{if(V)console.log("[PieCard] Centrifuge unsubscribing from channel");q.unsubscribe(),W.removeSubscription(q)})}},[W,Z,U.name,D]),Vf(()=>{if(!T||!I||!U.name){if(V&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!T,useMittSupport:I,hasMethods:!!z.current,hasDataName:!!U?.name});return}let B=Object.keys(z.current??{}),G={};return B.forEach((q)=>{let J=`pie${q}_${U.name}`,F=(Q)=>{if(V)console.log(`[PieCard] Mitt registering event: ${J}`);z.current?.[q]?.(Q)};G[J]=F,T.on(J,F)}),()=>{Object.entries(G).forEach(([q,J])=>{if(V)console.log(`[PieCard] Mitt unregistering event: ${q}`);T.off(q,J)})}},[T,U.name,I]),V)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return bU(mU,{children:[uU("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),C]});return C},A=xU;import{lazy as dU}from"react";var j=new Map;function Rf(f,U){return U.catch(()=>{if(j.get(f)===U)j.delete(f)}),j.set(f,U),U}function $f(f,U){return dU(()=>{if(j.has(U))return j.get(U);return Rf(U,f().then((C)=>C))})}var Nf=async(f,U)=>{if(!U)return;if(j.has(f))return j.get(f);return Rf(f,U().then((C)=>C))};var Ef=Symbol.for("@swarm.ing/pieui:component-registry"),yf=globalThis,L=yf[Ef]??(yf[Ef]=new Map),vU=(f)=>{if(!f.name)throw Error("Component registration requires a name");if(!f.component&&!f.loader)throw Error(`Component "${f.name}" requires component or loader`);let U={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=$f(U.loader,f.name),U.isLazy=!0;return U};function Y(f){let U=vU(f);return L.set(U.name,U),U.component}var pU=(f)=>{f.forEach((U)=>Y(U))},gU=(f)=>{L.delete(f)},cU=(f)=>{return L.has(f)},lU=(f)=>{return L.get(f)?.metadata},p=(f)=>{return L.get(f)},hU=()=>{return Array.from(L.keys())},rU=()=>{return L.size},jf=()=>Array.from(L.values()).filter((f)=>f.isLazy&&typeof f.loader==="function").map((f)=>f.name),xf=(f)=>{let U=L.get(f);if(!U?.isLazy||typeof U.loader!=="function")return;return Nf(f,U.loader)},kf=!1,nU=()=>{if(kf||typeof window>"u")return;kf=!0;let f=navigator.connection;if(f?.saveData)return;if(f?.effectiveType&&["slow-2g","2g"].includes(f.effectiveType))return;let U=jf(),C="requestIdleCallback"in window?(D)=>window.requestIdleCallback(D,{timeout:2000}):(D)=>window.setTimeout(D,300),H=(D)=>{if(D>=U.length)return;C(()=>{Promise.resolve().then(()=>xf(U[D])).catch(()=>{}).finally(()=>H(D+1))})};H(0)};import{useContext as mf,memo as ZC}from"react";import{createContext as iU}from"react";import{jsx as aU,Fragment as tU}from"react/jsx-runtime";var sU=iU(aU(tU,{})),_=sU;import{createContext as eU}from"react";var fC=eU(void 0),k=fC;import{Component as UC,Suspense as CC}from"react";import{jsx as DC}from"react/jsx-runtime";var HC=2,IC=400;class b extends UC{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(f){if(this.props.onError?.(f),this.state.attempt<HC){let U=IC*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((C)=>({failed:!1,attempt:C.attempt+1}))},U)}}componentDidUpdate(f){if(f.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return DC(CC,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as zf}from"react/jsx-runtime";function OC({uiConfig:f,setUiAjaxConfiguration:U}){let C=mf(_),H=mf(k),D=R();if(D)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let I=p(f.card);if(!I?.component){if(D)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return C}if(D)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let Z=I.component,$=zf(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(I.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",I.name);return zf(b,{name:I.name,fallback:I.fallback?zf(I.fallback,{}):C,onError:H,children:$})}if(D)console.log("[UI] Rendering component directly:",I.name);return $}var S=ZC(OC);import{useContext as uf}from"react";import{createContext as VC}from"react";var $C=VC(null),w=$C;import{jsx as s}from"react/jsx-runtime";function bf({uiConfig:f,setUiAjaxConfiguration:U}){let C=uf(_),H=uf(k),D=R();if(D)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let I=p(f.card);if(!I?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return C}if(D)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(D)console.log("[UILoading] Rendering fallback for:",I.name);let O=I.fallback;return s(O,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",I.name);let Z=I.component,$=s(w.Provider,{value:bf,children:s(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(I.isLazy)return s(b,{name:I.name,fallback:C,onError:H,children:$});return $}var Tf=bf;import{useContext as zC}from"react";import{jsx as qf}from"react/jsx-runtime";var TC=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:H,sx:D}=f,I=zC(w)??S;return qf(A,{card:H,data:f,children:qf("div",{style:D,id:H,children:U.map((Z,$)=>{return qf(I,{uiConfig:Z,setUiAjaxConfiguration:C},`children-${$}`)})})})},df=TC;var qC=Y({name:"SequenceCard",component:df,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as BC}from"react";import{jsx as vf}from"react/jsx-runtime";var JC=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:H}=f,D=BC(w)??S;return vf(A,{card:H,data:f,children:U.map((I,Z)=>{return vf(D,{uiConfig:I,setUiAjaxConfiguration:C},`children-${Z}`)})})},pf=JC;var XC=Y({name:"UnionCard",component:pf,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as YC,useState as AC}from"react";import PC from"html-react-parser";import{useCallback as t,useEffect as GC,useRef as Bf,useState as WC}from"react";function QC(){let f=new AudioContext,U=f.createOscillator(),C=U.connect(f.createMediaStreamDestination());U.start();let H=C.stream.getAudioTracks()[0];return H.enabled=!1,H}function Jf(f=null,U){let[C,H]=WC(!1),D=Bf(null),I=Bf(null),Z=Bf(null),$=t(async(X,W=!0)=>{if(D.current)O();let T=new RTCPeerConnection;if(T.onconnectionstatechange=()=>{if(T.connectionState==="connected")H(!0);else if(["disconnected","failed","closed"].includes(T.connectionState))H(!1)},T.ontrack=(P)=>{if(f)f.srcObject=P.streams[0]},W){let P=await navigator.mediaDevices.getUserMedia({audio:!0});T.addTrack(P.getTracks()[0],P)}else{let P=QC();T.addTrack(P)}let B=T.createDataChannel("oai-events");I.current=B,Z.current=new Promise((P)=>{B.addEventListener("open",()=>{P()})});let G=await T.createOffer();await T.setLocalDescription(G);let Q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:G.sdp,headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/sdp"}})).text();await T.setRemoteDescription({type:"answer",sdp:Q}),D.current=T,await Z.current},[f]),O=t(()=>{let X=I.current;if(X)X.close();D.current?.getSenders()?.forEach((W)=>W.track?.stop()),D.current?.close(),H(!1),D.current=null,I.current=null,Z.current=null},[f]),V=t((X)=>{let W=I.current;if(!W){console.error("Data channel is not ready",X);return}let T=new Date().toLocaleTimeString();if(X.event_id=X.event_id||crypto.randomUUID(),W.send(JSON.stringify(X)),!X.timestamp)X.timestamp=T;U?.(X)},[U,f]),z=t((X)=>{if(!I.current){console.error("Data channel is not ready");return}let T=()=>{V({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:X}]}}),V({type:"response.create"})};if(Z.current)Z.current.then(T);else T()},[U,f]);return GC(()=>{let X=I.current;if(!X)return;let W=(T)=>{let B=JSON.parse(T.data);if(!B.timestamp)B.timestamp=new Date().toLocaleTimeString();U?.(B)};return X.addEventListener("message",W),()=>{X.removeEventListener("message",W)}},[U,f]),{isSessionActive:C,startSession:$,stopSession:O,sendTextMessage:z}}import{jsx as KC}from"react/jsx-runtime";var FC=({data:f})=>{let{html:U,useSocketioSupport:C,useCentrifugeSupport:H,useMittSupport:D,centrifugeChannel:I}=f,[Z,$]=AC(U),{isSessionActive:O,startSession:V,sendTextMessage:z}=Jf(null,(B)=>{if(console.log(B.type,B.type==="response.output_text.delta"&&B.delta),B.type==="response.output_text.delta"&&B.delta)$((G)=>G+B.delta)});return YC(()=>{$(U)},[U]),KC(A,{card:"HTMLEmbedCard",data:f,methods:{update:(B)=>{$(B.value)},generateUsingAI:async(B)=>{try{if(!O&&B.token)await V(B.token,!1);z(B.prompt)}catch(G){console.error("Failed to generate using AI",G)}},initializeAI:async(B)=>{if(!O&&B.token)await V(B.token,!1)}},useCentrifugeSupport:H,useSocketioSupport:C,useMittSupport:D,centrifugeChannel:I,children:PC(Z)})},gf=FC;var SC=Y({name:"HTMLEmbedCard",component:gf,metadata:{author:"Swarm.ing"}});import{useEffect as _C,useState as wC}from"react";import{jsx as cf}from"react/jsx-runtime";var MC=({data:f})=>{let{name:U,value:C,useSocketioSupport:H,useCentrifugeSupport:D,useMittSupport:I,centrifugeChannel:Z}=f,[$,O]=wC(C);return _C(()=>{O(C)},[C]),cf(A,{card:"HiddenCard",data:f,useSocketioSupport:H,useCentrifugeSupport:D,useMittSupport:I,centrifugeChannel:Z,methods:{update:({value:V})=>{O(V)}},children:cf("input",{type:"hidden",id:U,name:U,value:$})})},lf=MC;var LC=Y({name:"HiddenCard",component:lf,metadata:{author:"Swarm.ing"}});import{useContext as hf,useEffect as NC}from"react";import{createContext as oC}from"react";var RC=oC(void 0),o=RC;import{jsx as kC,Fragment as yC}from"react/jsx-runtime";var EC=({data:f})=>{let{url:U}=f,C=hf(o),H=hf(_);return NC(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else C?.(U)},[U,C]),kC(yC,{children:H})},rf=EC;var jC=Y({name:"AutoRedirectCard",component:rf,metadata:{author:"Swarm.ing"}});import{Bounce as xC,Slide as mC,Zoom as uC,Flip as bC}from"react-toastify";import{toast as dC,ToastContainer as vC}from"react-toastify";import{useContext as pC,useMemo as gC,useRef as cC}from"react";import{jsx as Xf,Fragment as sC}from"react/jsx-runtime";var lC={bounce:xC,slide:mC,zoom:uC,flip:bC},hC=(f)=>{let U={...f,type:f.alertType,transition:f.transition?lC[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};dC(f.message,U)},rC=(f)=>{console.log("Log event",f)},nC=(f)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(H){console.error("[IOEventsCard] Failed to show notification",H)}},C=window.Notification.permission;if(C==="granted"){U();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((H)=>{if(H==="granted")U()})},iC=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:C,useMittSupport:H,centrifugeChannel:D}=f,I=pC(o),Z=cC(I);Z.current=I;let $=gC(()=>({alert:hC,log:rC,push:nC,redirect:(O)=>{if(O.to){let V=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(V))window.location.href=V;else Z.current?.(V)}else window.location.reload()},reload:(O)=>{if(O.to){let V=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(V))window.location.href=V;else Z.current?.(V)}else window.location.reload()}}),[]);return Xf(sC,{children:Xf(A,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:C,useMittSupport:H,centrifugeChannel:D,methods:$,children:Xf(vC,{})})})},nf=iC;var tC=Y({name:"IOEventsCard",component:nf,metadata:{author:"Swarm.ing"}});import{useEffect as sf,useState as aC}from"react";import{jsx as tf}from"react/jsx-runtime";var eC=({data:f})=>{let{name:U,key:C,value:H,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$}=f,[O,V]=aC(H);return sf(()=>{V(H)},[H]),sf(()=>{if(typeof window>"u")return;sessionStorage.setItem(C,O)},[C,O]),tf(A,{card:"SessionStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$,methods:{update:({value:z})=>{V(z)},remove:()=>{sessionStorage.removeItem(C),V("")}},children:tf("input",{type:"hidden",id:U,name:U,value:O})})},af=eC;var fH=Y({name:"SessionStorageCard",component:af,metadata:{author:"PieData"}});import{useEffect as ef,useState as UH}from"react";import{jsx as fU}from"react/jsx-runtime";var CH=({data:f})=>{let{name:U,key:C,value:H,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$}=f,[O,V]=UH(H);return ef(()=>{V(H)},[H]),ef(()=>{if(typeof window>"u")return;localStorage.setItem(C,O)},[C,O]),fU(A,{card:"DeviceStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$,methods:{update:({value:z})=>{V(z)},remove:()=>{localStorage.removeItem(C),V("")}},children:fU("input",{type:"hidden",id:U,name:U,value:O})})},UU=CH;var HH=Y({name:"DeviceStorageCard",component:UU,metadata:{author:"PieData"}});import{useEffect as CU,useState as IH}from"react";import{jsx as HU}from"react/jsx-runtime";var DH=({data:f})=>{let{name:U,key:C,value:H,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$}=f,[O,V]=IH(H);return CU(()=>{V(H)},[H]),CU(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp?.CloudStorage;if(!z)return;z.setItem(C,O)},[C,O]),HU(A,{card:"CloudStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$,methods:{update:({value:z})=>{V(z)},remove:()=>{let z=window.Telegram?.WebApp?.CloudStorage;if(z)z.removeItem(C);V("")}},children:HU("input",{type:"hidden",id:U,name:U,value:O})})},IU=DH;var ZH=Y({name:"CloudStorageCard",component:IU,metadata:{author:"PieData"}});import{useEffect as DU,useState as OH}from"react";import{jsx as ZU}from"react/jsx-runtime";var VH=({data:f})=>{let{name:U,key:C,value:H,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$}=f,[O,V]=OH(H);return DU(()=>{V(H)},[H]),DU(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp?.SecureStorage;if(!z)return;z.setItem(C,O)},[C,O]),ZU(A,{card:"SecureStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$,methods:{update:({value:z})=>{V(z)},remove:()=>{let z=window.Telegram?.WebApp?.SecureStorage;if(z)z.removeItem(C);V("")}},children:ZU("input",{type:"hidden",id:U,name:U,value:O})})},OU=VH;var $H=Y({name:"SecureStorageCard",component:OU,metadata:{author:"PieData"}});import{useCallback as Gf,useContext as Wf,useEffect as zH,useRef as TH,useState as VU}from"react";import{jsx as $U}from"react/jsx-runtime";var qH=({data:f,content:U})=>{let{useLoader:C,noReturn:H,returnType:D,useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:$,centrifugeChannel:O}=f,V=Wf(_),z=Wf(w)??S,[X,W]=VU(!1),[T,B]=VU(null),G=TH(U),q=Wf(y),J=Gf((P)=>{if(P===null)W(!0);else if(W(!1),!H)G.current=P;if(!H)B(P)},[H]),F=Gf((P)=>{G.current=P.content,B(P.content)},[]),Q=Gf((P)=>{if(P===null)W(!0);else if(W(!1),!H)for(let c of P)q?.emit(c.name,c.data)},[H,q]);if(zH(()=>{B(U),W(!1)},[U]),!T&&C)return V;return $U(A,{card:"AjaxGroupCard",data:f,methods:{changeContent:F},useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:$,centrifugeChannel:O,children:$U(z,{uiConfig:T??G.current,setUiAjaxConfiguration:D==="events"?Q:J})})},zU=qH;var BH=Y({name:"AjaxGroupCard",component:zU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as TU}from"react";import{jsx as Qf}from"react/jsx-runtime";var JH=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:H,url:D,sx:I}=f,Z=TU(o),$=TU(w)??S;return Qf(A,{card:H,data:f,children:Qf("div",{style:I,id:H,onClick:(V)=>{if(D)if(V.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(D))window.location.href=D;else Z?.(D)},children:Qf($,{setUiAjaxConfiguration:C,uiConfig:U})})})},qU=JH;var XH=Y({name:"BoxCard",component:qU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as GH}from"react";import{jsx as Yf}from"react/jsx-runtime";var WH=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:H,sx:D}=f,I=GH(w)??S;return Yf(A,{card:H,data:f,children:Yf("div",{style:D,id:H,children:U.map((Z,$)=>{return Yf(I,{uiConfig:Z,setUiAjaxConfiguration:C},`children-${$}`)})})})},BU=WH;var QH=Y({name:"OneOfCard",component:BU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as g}from"react";import{QueryClient as LH,QueryClientProvider as oH,useQuery as RH}from"@tanstack/react-query";import{useContext as PH,useEffect as FH}from"react";import{useEffect as YH,useState as AH}from"react";var a=new Map,e=new Map;function ff(f,U){let C=`${f}::${U}`,H=f?a.get(C):void 0,[D,I]=AH(H??null);return YH(()=>{if(!f)return;if(a.has(C)){I(a.get(C));return}let Z=e.get(C);if(!Z)Z=fetch(f+`api/support/${U}`,{method:"GET"}).then((O)=>O.json()).then((O)=>{return a.set(C,O),e.delete(C),O}).catch((O)=>{throw e.delete(C),O}),e.set(C,Z);let $=!1;return Z.then((O)=>{if(!$)I(O)}).catch(()=>{}),()=>{$=!0}},[f,U,C]),D}var Af=null,JU=null;function XU(){JU?.()}function Pf(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!Af)Af=new Promise((f)=>{JU=()=>{f()}});return Af}var KH=({children:f})=>{let U=PH(E),C=h(),H=ff(C,"socketIO"),D=(I)=>{if(typeof window<"u")window.sid=I.sid,XU(),console.log(`SocketIO initialized: ${window.sid}`)};return FH(()=>{if(!U)return;let I=()=>{console.log("SocketIO connected")},Z=($)=>{console.log(`SocketIO disconnected: ${$}`),U.connect()};if(H)U.on("pieinit",D),U.on("connect",I),U.on("disconnect",Z),U.connect();return()=>{if(H)U.off("pieinit",D),U.off("connect",I),U.off("disconnect",Z),U.disconnect()}},[U,H]),f},Uf=KH;import{useContext as SH,useEffect as _H}from"react";var wH=({children:f})=>{let U=SH(N),C=h(),H=ff(C,"centrifuge");return _H(()=>{if(!U)return;let D=()=>{console.log("Centrifuge connected")},I=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(H)U.on("connected",D),U.on("disconnected",I),U.connect();return()=>{if(H)U.disconnect()}},[U,H]),f},Cf=wH;import{createAxiosDateTransformer as NH}from"axios-date-transformer";import{jsx as MH}from"react/jsx-runtime";function GU(f,U,C){if(!U)return C;let H=f.replace(/^\//,""),D=U[H];if(!D)return C;return MH(Tf,{uiConfig:D})}import{jsx as K,Fragment as kH}from"react/jsx-runtime";var EH=({location:f,fallback:U,piecache:C,onError:H,queryOptions:D,disableGlobalForm:I})=>{let Z=v(),$=r(),O=R(),V=g(()=>NH({baseURL:Z||""}),[Z]),z=g(()=>u(),[]),X=g(()=>Z?i(Z):null,[Z]),W=g(()=>Z?n(Z,$):null,[Z,$]),{data:T,isLoading:B,error:G}=RH({queryKey:["uiConfig",f.pathname+f.search,Z],enabled:!!Z,queryFn:async()=>{let J=new URLSearchParams(f.search);J.set("__pieroot","web");let F="/api/content"+f.pathname+"?"+J.toString();if(O)console.log("[PieRoot] Fetching UI configuration from:",F);let Q=await V.get(F,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(O)console.log("[PieRoot] Received UI configuration:",Q.data);return Q.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(J)=>Math.min(1000*2**J,30000),...D}),q=GU(f.pathname,C,U);if(!Z)return q??null;if(O)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",$),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!C);if(G){if(O)console.error("[PieRoot] Error fetching UI configuration:",G),console.error("[PieRoot] Error details:",{message:G.message,status:G.response?.status,data:G.response?.data});return H?.(G),q}if(B||!T){if(O)console.log("[PieRoot] Loading state:",{isLoading:B,hasUiConfiguration:!!T});return q}if(O)console.log("[PieRoot] UI configuration loaded successfully:",T),console.log("[PieRoot] Rendering UI with configuration");return K(y.Provider,{value:z,children:K(E.Provider,{value:X,children:K(N.Provider,{value:W,children:K(_.Provider,{value:U??K(kH,{}),children:K(Uf,{children:K(Cf,{children:I?K(S,{uiConfig:T}):K("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:K(S,{uiConfig:T})})})})})})})})},yH=(f)=>{let U=g(()=>new LH,[]),C=f.queryClient??U;return K(o.Provider,{value:f.onNavigate,children:K(m.Provider,{value:f.config,children:K(k.Provider,{value:f.onError,children:K(oH,{client:C,children:K(EH,{...f})})})})})},Ff=yH;import{useMemo as Kf,useState as jH}from"react";import{QueryClient as xH,QueryClientProvider as mH}from"@tanstack/react-query";import{jsx as M,Fragment as dH}from"react/jsx-runtime";var uH=({location:f,fallback:U,children:C,disableGlobalForm:H})=>{let D=v(),I=r(),Z=R(),$=Kf(()=>u(),[]),O=Kf(()=>D?i(D):null,[D]),V=Kf(()=>D?n(D,I):null,[D,I]);if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",I),console.log("[PieRoot] Fallback provided:",!!U);return M(y.Provider,{value:$,children:M(E.Provider,{value:O,children:M(N.Provider,{value:V,children:M(_.Provider,{value:U??M(dH,{}),children:M(Uf,{children:M(Cf,{children:H?C:M("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:C})})})})})})})},bH=(f)=>{let[U]=jH(()=>new xH),C=f.queryClient??U;return M(o.Provider,{value:f.onNavigate,children:M(m.Provider,{value:f.config,children:M(k.Provider,{value:f.onError,children:M(mH,{client:C,children:M(uH,{...f})})})})})},vH=bH;import{useMemo as pH}from"react";import{jsx as WU}from"react/jsx-runtime";var gH=WU("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),cH=({apiServer:f,pathname:U="/",search:C="",centrifugeServer:H,fallback:D,enableRenderingLog:I=!1})=>{let Z=f??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",$=pH(()=>({apiServer:Z,centrifugeServer:H,enableRenderingLog:I,pageProcessor:"web"}),[Z,H,I]);return WU(Ff,{location:{pathname:U,search:C},config:$,fallback:D??gH,onNavigate:(V)=>{if(typeof window<"u")window.history.pushState(null,"",V)}})},lH=cH;import{useMemo as hH}from"react";var QU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let C=document.getElementsByName(f);if(!C.length){if(U)console.warn(`No input found with name ${f}`);return[]}let H=C[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[]},rH=(f,U={},C=[],H,D)=>{let I=D?.renderingLogEnabled??!1,Z=D?.timeout,$=D?.retryPolicy,O=$?.maxRetries??0,V=$?.baseDelay??1000,z=$?.retryOn??[502,503,504];if(I)console.log("Registering AJAX: ",H,U,C);return async(X={})=>{if(typeof window>"u"||typeof document>"u"){if(I)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let W=D?.apiServer;if(!W){if(I)console.warn("AJAX skipped: apiServer is missing");return}if(!H||!f){if(I)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(C.includes("sid"))await Pf();let T=new FormData;for(let[q,J]of Object.entries({...U,...X}))T.append(q,J);for(let q of C)for(let J of QU(q,I))T.append(q,J);let B=W+"api/ajax_content"+H;f(null);let G;for(let q=0;q<=O;q++){if(q>0){let Q=V*2**(q-1);if(I)console.log(`AJAX retry ${q}/${O} after ${Q}ms`);await new Promise((P)=>setTimeout(P,Q))}let J=Z!=null?new AbortController:null,F=J&&setTimeout(()=>J.abort(),Z);try{let Q=await fetch(B,{method:"POST",body:T,signal:J?.signal});if(F)clearTimeout(F);if(!Q.ok&&z.includes(Q.status)&&q<O){G=Error(`HTTP ${Q.status}`);continue}let c=(Q.headers.get("content-type")||"").includes("application/json");if(!!Q.body?.getReader&&!c){let l=Q.body.getReader(),YU=new TextDecoder,x="";while(!0){let{done:Hf,value:AU}=await l.read();if(Hf)break;x+=YU.decode(AU,{stream:!0});let Sf=x.split(`
3
- `);x=Sf.pop()??"";for(let PU of Sf){let If=PU.trim();if(!If)continue;try{let FU=JSON.parse(If);f([FU])}catch{if(I)console.warn("Failed to parse streamed line:",If)}}}if(x.trim())try{let Hf=JSON.parse(x);f([Hf])}catch{if(I)console.warn("Failed to parse final streamed line:",x)}return{}}else{let l=await Q.json();return f(l),l}}catch(Q){if(F)clearTimeout(F);if(G=Q,q<O)continue;if(I)console.error("AJAX request failed:",Q);return f(null),Q}}if(I)console.error("AJAX request failed after retries:",G);return f(null),G}},nH=(f,U={},C=[],H,D)=>{let{apiServer:I,enableRenderingLog:Z}=d(),$=JSON.stringify(U),O=JSON.stringify(C),V=JSON.stringify(D);return hH(()=>rH(f,U,C,H,{apiServer:I,renderingLogEnabled:Z,timeout:D?.timeout,retryPolicy:D?.retryPolicy}),[f,$,O,H,I,Z,V])};import{clsx as iH}from"clsx";import{twMerge as sH}from"tailwind-merge";function tH(...f){return sH(iH(f))}var aH=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var eH=(f,U)=>`${f}${Df}${U}`;export{kU as usePieEmit,nH as useAjaxSubmit,gU as unregisterComponent,$f as trackLazy,aH as submitGlobalForm,L as registry,Y as registerPieComponent,pU as registerMultipleComponents,QU as readAjaxKey,xf as preloadComponent,nU as prefetchLazyComponents,eH as pieName,cU as hasComponent,rU as getRegistrySize,p as getRegistryEntry,jf as getLazyComponentNames,u as getEmitter,lU as getComponentMeta,hU as getAllRegisteredComponents,tH as cn,XC as UnionCard,w as UIRendererContext,Tf as UILoading,S as UI,E as SocketIOContext,fH as SessionStorageCard,qC as SequenceCard,$H as SecureStorageCard,Ff as PieRoot,lH as PiePreviewRoot,m as PieConfigContext,A as PieCard,vH as PieBaseRoot,Df as PIEBREAK,QH as OneOfCard,y as MittContext,tC as IOEventsCard,LC as HiddenCard,SC as HTMLEmbedCard,_ as FallbackContext,HH as DeviceStorageCard,ZH as CloudStorageCard,N as CentrifugeIOContext,XH as BoxCard,jC as AutoRedirectCard,BH as AjaxGroupCard};
2
+ import{useContext as GH,useEffect as XH,useRef as fU}from"react";import{createContext as DU,useContext as VU}from"react";var IH=globalThis,K=(H,U)=>{let Z=Symbol.for(H);if(!(Z in IH))IH[Z]=U();return IH[Z]};var m=K("@swarm.ing/pieui:context:pieConfig",()=>DU(null)),p=()=>{let H=VU(m);if(!H)throw Error("usePieConfig must be used within PieConfigProvider");return H},g=()=>{let{apiServer:H}=p();return H},s=g,n=()=>{let{centrifugeServer:H}=p();return H};var j=()=>{let{enableRenderingLog:H}=p();return H},NH=j;var OH="__piedemo__";import{createContext as FU}from"react";import{Centrifuge as fH}from"centrifuge";var EH=K("@swarm.ing/pieui:centrifuge-cache",()=>new Map),r=(H,U)=>{if(!U)return null;let Z=`${H}::${U}`,z=EH.get(Z);if(z)return z;async function T(){let J=await fetch(H+"api/centrifuge/gen_token");if(!J.ok){if(J.status===403)throw new fH.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let $=new fH(U,{getToken:T});return EH.set(Z,$),$},_U=K("@swarm.ing/pieui:context:centrifuge",()=>FU(null)),y=_U;import{io as KU}from"socket.io-client";import{createContext as MU}from"react";var CH=K("@swarm.ing/pieui:socket-cache",()=>new Map),t=(H)=>{let U=CH.get(H);if(U)return U;let Z=KU(H,{autoConnect:!1,transports:["websocket"]});return CH.set(H,Z),Z},AU=K("@swarm.ing/pieui:context:socket",()=>MU(null)),k=AU;import PU from"mitt";import{createContext as RU,useCallback as wU,useContext as LU}from"react";function c(){return K("@swarm.ing/pieui:mitt-emitter",()=>PU())}var jH=K("@swarm.ing/pieui:context:mitt",()=>RU(null));function NU(H){let U=LU(jH);return wU((Z,z)=>{(U??c()).emit(`pie${Z}_${H}`,z)},[H,U])}var x=jH;import{jsx as jU,jsxs as yU,Fragment as CU}from"react/jsx-runtime";var EU=({card:H,data:U,children:Z,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:$=!1,centrifugeChannel:J=void 0,methods:B=void 0,stored:I=void 0})=>{let O=NH(),D=fU(B);if(D.current=B,O)console.log("[PieCard] Rendering card:",H),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:T,mitt:$,centrifugeChannel:J}),console.log("[PieCard] Methods:",B?Object.keys(B):"none"),console.log("[PieCard] Has children:",!!Z);let Q=GH(k),V=GH(y),G=GH(x);if(XH(()=>{if(!Q||!z||!D.current||!U.name){if(O&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!Q,useSocketioSupport:z,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}`;if(O)console.log(`[PieCard] Socket.IO registering event: ${q}`);let M=(F)=>{D.current?.[X]?.(F)};return Q.on(q,M),[q,M]});return()=>{W.forEach(([X,q])=>{if(O)console.log(`[PieCard] Socket.IO unregistering event: ${X}`);Q.off(X,q)})}},[Q,U.name,z]),XH(()=>{if(!V||!T||!J||!U.name){if(O&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}_${J}`;if(O)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let M=V.newSubscription(q);return M.on("publication",(F)=>{if(O)console.log(`[PieCard] Centrifuge received data on ${q}:`,F.data);D.current?.[X]?.(F.data)}),M.subscribe(),M});return()=>{W.forEach((X)=>{if(O)console.log("[PieCard] Centrifuge unsubscribing from channel");X.unsubscribe(),V.removeSubscription(X)})}},[V,J,U.name,T]),XH(()=>{if(!G||!$||!U.name){if(O&&$)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!G,useMittSupport:$,hasMethods:!!D.current,hasDataName:!!U?.name});return}let Y=Object.keys(D.current??{}),W={};return Y.forEach((X)=>{let q=`pie${X}_${U.name}`,M=(F)=>{if(O)console.log(`[PieCard] Mitt registering event: ${q}`);D.current?.[X]?.(F)};W[q]=M,G.on(q,M)}),()=>{Object.entries(W).forEach(([X,q])=>{if(O)console.log(`[PieCard] Mitt unregistering event: ${X}`);G.off(X,q)})}},[G,U.name,$]),O)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return yU(CU,{children:[jU("input",{type:"hidden",name:U.name,value:JSON.stringify(I)}),Z]});return Z},P=EU;import{lazy as kU}from"react";var b=new Map;function yH(H,U){return U.catch(()=>{if(b.get(H)===U)b.delete(H)}),b.set(H,U),U}function YH(H,U){return kU(()=>{if(b.has(U))return b.get(U);return yH(U,H().then((Z)=>Z))})}var kH=async(H,U)=>{if(!U)return;if(b.has(H))return b.get(H);return yH(H,U().then((Z)=>Z))};var E=K("@swarm.ing/pieui:component-registry",()=>new Map),xU=(H)=>{if(!H.name)throw Error("Component registration requires a name");if(!H.component&&!H.loader)throw Error(`Component "${H.name}" requires component or loader`);let U={name:H.name,component:H.component,loader:H.loader,metadata:H.metadata,fallback:H.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=YH(U.loader,H.name),U.isLazy=!0;return U};function _(H){let U=xU(H);return E.set(U.name,U),U.component}var SU=(H)=>{H.forEach((U)=>_(U))},bU=(H)=>{E.delete(H)},vU=(H)=>{return E.has(H)},mU=(H)=>{return E.get(H)?.metadata},u=(H)=>{return E.get(H)},cU=()=>{return Array.from(E.keys())},hU=()=>{return E.size},SH=()=>Array.from(E.values()).filter((H)=>H.isLazy&&typeof H.loader==="function").map((H)=>H.name),bH=(H)=>{let U=E.get(H);if(!U?.isLazy||typeof U.loader!=="function")return;return kH(H,U.loader)},xH=!1,pU=()=>{if(xH||typeof window>"u")return;xH=!0;let H=navigator.connection;if(H?.saveData)return;if(H?.effectiveType&&["slow-2g","2g"].includes(H.effectiveType))return;let U=SH(),Z="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=U.length)return;Z(()=>{Promise.resolve().then(()=>bH(U[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};import{useContext as vH,memo as eU}from"react";import{createContext as gU}from"react";import{jsx as oU,Fragment as dU}from"react/jsx-runtime";var uU=K("@swarm.ing/pieui:context:fallback",()=>gU(oU(dU,{}))),L=uU;import{createContext as lU}from"react";var iU=K("@swarm.ing/pieui:context:lazyError",()=>lU(void 0)),S=iU;import{Component as sU,Suspense as nU}from"react";import{jsx as aU}from"react/jsx-runtime";var rU=2,tU=400;class h extends sU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(H){if(this.props.onError?.(H),this.state.attempt<rU){let U=tU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},U)}}componentDidUpdate(H){if(H.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return aU(nU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as qH}from"react/jsx-runtime";function HZ({uiConfig:H,setUiAjaxConfiguration:U}){let Z=vH(L),z=vH(S),T=j();if(T)console.log("[UI] Rendering component:",H.card),console.log("[UI] Component data:",H.data),console.log("[UI] Component content:",H.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let $=u(H.card);if(!$?.component){if(T)console.warn(`[UI] Component not found in registry: ${H.card}`),console.log("[UI] Returning fallback component");return Z}if(T)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let J=$.component,B=qH(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U});if($.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",$.name);return qH(h,{name:$.name,fallback:$.fallback?qH($.fallback,{}):Z,onError:z,children:B})}if(T)console.log("[UI] Rendering component directly:",$.name);return B}var w=eU(HZ);import{useContext as mH}from"react";import{createContext as UZ}from"react";var ZZ=K("@swarm.ing/pieui:context:uiRenderer",()=>UZ(null)),N=ZZ;import{jsx as a}from"react/jsx-runtime";function cH({uiConfig:H,setUiAjaxConfiguration:U}){let Z=mH(L),z=mH(S),T=j();if(T)console.log("[UILoading] Rendering fallback for:",H.card),console.log("[UILoading] Component data:",H.data),console.log("[UILoading] Component content:",H.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let $=u(H.card);if(!$?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${H.card}`),console.log("[UILoading] Returning fallback component");return Z}if(T)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(T)console.log("[UILoading] Rendering fallback for:",$.name);let I=$.fallback;return a(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",$.name);let J=$.component,B=a(N.Provider,{value:cH,children:a(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U})});if($.isLazy)return a(h,{name:$.name,fallback:Z,onError:z,children:B});return B}var QH=cH;import{useContext as $Z}from"react";import{jsx as WH}from"react/jsx-runtime";var zZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:T}=H,$=$Z(N)??w;return WH(P,{card:z,data:H,children:WH("div",{style:T,id:z,children:U.map((J,B)=>{return WH($,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},hH=zZ;var TZ=_({name:"SequenceCard",component:hH,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as JZ}from"react";import{jsx as pH}from"react/jsx-runtime";var BZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z}=H,T=JZ(N)??w;return pH(P,{card:z,data:H,children:U.map(($,J)=>{return pH(T,{uiConfig:$,setUiAjaxConfiguration:Z},`children-${J}`)})})},gH=BZ;var IZ=_({name:"UnionCard",component:gH,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as YZ,useState as qZ}from"react";import QZ from"html-react-parser";import{useCallback as e,useEffect as OZ,useRef as DH,useState as GZ}from"react";function XZ(){let H=new AudioContext,U=H.createOscillator(),Z=U.connect(H.createMediaStreamDestination());U.start();let z=Z.stream.getAudioTracks()[0];return z.enabled=!1,z}function VH(H=null,U){let[Z,z]=GZ(!1),T=DH(null),$=DH(null),J=DH(null),B=e(async(Q,V=!0)=>{if(T.current)I();let G=new RTCPeerConnection;if(G.onconnectionstatechange=()=>{if(G.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(G.connectionState))z(!1)},G.ontrack=(A)=>{if(H)H.srcObject=A.streams[0]},V){let A=await navigator.mediaDevices.getUserMedia({audio:!0});G.addTrack(A.getTracks()[0],A)}else{let A=XZ();G.addTrack(A)}let Y=G.createDataChannel("oai-events");$.current=Y,J.current=new Promise((A)=>{Y.addEventListener("open",()=>{A()})});let W=await G.createOffer();await G.setLocalDescription(W);let F=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:W.sdp,headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/sdp"}})).text();await G.setRemoteDescription({type:"answer",sdp:F}),T.current=G,await J.current},[H]),I=e(()=>{let Q=$.current;if(Q)Q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,$.current=null,J.current=null},[H]),O=e((Q)=>{let V=$.current;if(!V){console.error("Data channel is not ready",Q);return}let G=new Date().toLocaleTimeString();if(Q.event_id=Q.event_id||crypto.randomUUID(),V.send(JSON.stringify(Q)),!Q.timestamp)Q.timestamp=G;U?.(Q)},[U,H]),D=e((Q)=>{if(!$.current){console.error("Data channel is not ready");return}let G=()=>{O({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Q}]}}),O({type:"response.create"})};if(J.current)J.current.then(G);else G()},[U,H]);return OZ(()=>{let Q=$.current;if(!Q)return;let V=(G)=>{let Y=JSON.parse(G.data);if(!Y.timestamp)Y.timestamp=new Date().toLocaleTimeString();U?.(Y)};return Q.addEventListener("message",V),()=>{Q.removeEventListener("message",V)}},[U,H]),{isSessionActive:Z,startSession:B,stopSession:I,sendTextMessage:D}}import{jsx as DZ}from"react/jsx-runtime";var WZ=({data:H})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:$}=H,[J,B]=qZ(U),{isSessionActive:I,startSession:O,sendTextMessage:D}=VH(null,(Y)=>{if(console.log(Y.type,Y.type==="response.output_text.delta"&&Y.delta),Y.type==="response.output_text.delta"&&Y.delta)B((W)=>W+Y.delta)});return YZ(()=>{B(U)},[U]),DZ(P,{card:"HTMLEmbedCard",data:H,methods:{update:(Y)=>{B(Y.value)},generateUsingAI:async(Y)=>{try{if(!I&&Y.token)await O(Y.token,!1);D(Y.prompt)}catch(W){console.error("Failed to generate using AI",W)}},initializeAI:async(Y)=>{if(!I&&Y.token)await O(Y.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:Z,useMittSupport:T,centrifugeChannel:$,children:QZ(J)})},uH=WZ;var VZ=_({name:"HTMLEmbedCard",component:uH,metadata:{author:"Swarm.ing"}});import{useEffect as FZ,useState as _Z}from"react";import{jsx as dH}from"react/jsx-runtime";var KZ=({data:H})=>{let{name:U,value:Z,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:J}=H,[B,I]=_Z(Z);return FZ(()=>{I(Z)},[Z]),dH(P,{card:"HiddenCard",data:H,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:J,methods:{update:({value:O})=>{I(O)}},children:dH("input",{type:"hidden",id:U,name:U,value:B})})},oH=KZ;var MZ=_({name:"HiddenCard",component:oH,metadata:{author:"Swarm.ing"}});import{useContext as lH,useEffect as RZ}from"react";import{createContext as AZ}from"react";var PZ=K("@swarm.ing/pieui:context:navigate",()=>AZ(void 0)),C=PZ;import{jsx as NZ,Fragment as LZ}from"react/jsx-runtime";var wZ=({data:H})=>{let{url:U}=H,Z=lH(C),z=lH(L);return RZ(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),NZ(LZ,{children:z})},iH=wZ;var fZ=_({name:"AutoRedirectCard",component:iH,metadata:{author:"Swarm.ing"}});import{Bounce as EZ,Slide as CZ,Zoom as jZ,Flip as yZ}from"react-toastify";import{toast as kZ,ToastContainer as xZ}from"react-toastify";import{useContext as SZ,useMemo as bZ,useRef as vZ}from"react";import{jsx as FH,Fragment as uZ}from"react/jsx-runtime";var mZ={bounce:EZ,slide:CZ,zoom:jZ,flip:yZ},cZ=(H)=>{let U={...H,type:H.alertType,transition:H.transition?mZ[H.transition]:void 0,position:H.position??"bottom-right",autoClose:H.autoClose??3000,style:{backgroundColor:"black",...H.sx}};kZ(H.message,U)},hZ=(H)=>{console.log("Log event",H)},pZ=(H)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(H.title,{body:H.message??H.subtitle,icon:H.icon,silent:H.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")U()})},gZ=({data:H})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:T}=H,$=SZ(C),J=vZ($);J.current=$;let B=bZ(()=>({alert:cZ,log:hZ,push:pZ,redirect:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()},reload:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()}}),[]);return FH(uZ,{children:FH(P,{card:"IOEventsCard",data:H,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:T,methods:B,children:FH(xZ,{})})})},sH=gZ;var dZ=_({name:"IOEventsCard",component:sH,metadata:{author:"Swarm.ing"}});import{useEffect as nH,useState as oZ}from"react";import{jsx as rH}from"react/jsx-runtime";var lZ=({data:H})=>{let{name:U,key:Z,value:z,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=oZ(z);return nH(()=>{O(z)},[z]),nH(()=>{if(typeof window>"u")return;sessionStorage.setItem(Z,I)},[Z,I]),rH(P,{card:"SessionStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{sessionStorage.removeItem(Z),O("")}},children:rH("input",{type:"hidden",id:U,name:U,value:I})})},tH=lZ;var iZ=_({name:"SessionStorageCard",component:tH,metadata:{author:"PieData"}});import{useEffect as aH,useState as sZ}from"react";import{jsx as eH}from"react/jsx-runtime";var nZ=({data:H})=>{let{name:U,key:Z,value:z,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=sZ(z);return aH(()=>{O(z)},[z]),aH(()=>{if(typeof window>"u")return;localStorage.setItem(Z,I)},[Z,I]),eH(P,{card:"DeviceStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{localStorage.removeItem(Z),O("")}},children:eH("input",{type:"hidden",id:U,name:U,value:I})})},HU=nZ;var rZ=_({name:"DeviceStorageCard",component:HU,metadata:{author:"PieData"}});import{useCallback as _H,useContext as KH,useEffect as tZ,useRef as aZ,useState as UU}from"react";import{jsx as ZU}from"react/jsx-runtime";var eZ=({data:H,content:U})=>{let{useLoader:Z,noReturn:z,returnType:T,useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I}=H,O=KH(L),D=KH(N)??w,[Q,V]=UU(!1),[G,Y]=UU(null),W=aZ(U),X=KH(x),q=_H((A)=>{if(A===null)V(!0);else if(V(!1),!z)W.current=A;if(!z)Y(A)},[z]),M=_H((A)=>{W.current=A.content,Y(A.content)},[]),F=_H((A)=>{if(A===null)V(!0);else if(V(!1),!z)for(let l of A)X?.emit(l.name,l.data)},[z,X]);if(tZ(()=>{Y(U),V(!1)},[U]),!G&&Z)return O;return ZU(P,{card:"AjaxGroupCard",data:H,methods:{changeContent:M},useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I,children:ZU(D,{uiConfig:G??W.current,setUiAjaxConfiguration:T==="events"?F:q})})},$U=eZ;var H$=_({name:"AjaxGroupCard",component:$U,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as zU}from"react";import{jsx as MH}from"react/jsx-runtime";var U$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,url:T,sx:$}=H,J=zU(C),B=zU(N)??w;return MH(P,{card:z,data:H,children:MH("div",{style:$,id:z,onClick:(O)=>{if(T)if(O.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:MH(B,{setUiAjaxConfiguration:Z,uiConfig:U})})})},TU=U$;var Z$=_({name:"BoxCard",component:TU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as $$}from"react";import{jsx as AH}from"react/jsx-runtime";var z$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:T}=H,$=$$(N)??w;return AH(P,{card:z,data:H,children:AH("div",{style:T,id:z,children:U.map((J,B)=>{return AH($,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},JU=z$;var T$=_({name:"OneOfCard",component:JU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as o}from"react";import{QueryClient as W$,QueryClientProvider as D$,useQuery as V$}from"@tanstack/react-query";import{useContext as I$,useEffect as O$}from"react";import{useEffect as J$,useState as B$}from"react";var HH=new Map,UH=new Map;function ZH(H,U){let Z=`${H}::${U}`,z=H?HH.get(Z):void 0,[T,$]=B$(z??null);return J$(()=>{if(!H)return;if(HH.has(Z)){$(HH.get(Z));return}let J=UH.get(Z);if(!J)J=fetch(H+`api/support/${U}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return HH.set(Z,I),UH.delete(Z),I}).catch((I)=>{throw UH.delete(Z),I}),UH.set(Z,J);let B=!1;return J.then((I)=>{if(!B)$(I)}).catch(()=>{}),()=>{B=!0}},[H,U,Z]),T}var d=K("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function BU(){d.resolve?.()}function PH(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!d.promise)d.promise=new Promise((H)=>{d.resolve=()=>{H()}});return d.promise}var G$=({children:H})=>{let U=I$(k),Z=s(),z=ZH(Z,"socketIO"),T=($)=>{if(typeof window<"u")window.sid=$.sid,BU(),console.log(`SocketIO initialized: ${window.sid}`)};return O$(()=>{if(!U)return;let $=()=>{console.log("SocketIO connected")},J=(B)=>{console.log(`SocketIO disconnected: ${B}`),U.connect()};if(z)U.on("pieinit",T),U.on("connect",$),U.on("disconnect",J),U.connect();return()=>{if(z)U.off("pieinit",T),U.off("connect",$),U.off("disconnect",J),U.disconnect()}},[U,z]),H},$H=G$;import{useContext as X$,useEffect as Y$}from"react";var q$=({children:H})=>{let U=X$(y),Z=s(),z=ZH(Z,"centrifuge");return Y$(()=>{if(!U)return;let T=()=>{console.log("Centrifuge connected")},$=(J)=>{console.log("Centrifuge disconnected:",J)};if(z)U.on("connected",T),U.on("disconnected",$),U.connect();return()=>{if(z)U.disconnect()}},[U,z]),H},zH=q$;import{createAxiosDateTransformer as F$}from"axios-date-transformer";import{jsx as Q$}from"react/jsx-runtime";function IU(H,U,Z){if(!U)return Z;let z=H.replace(/^\//,""),T=U[z];if(!T)return Z;return Q$(QH,{uiConfig:T})}import{jsx as R,Fragment as M$}from"react/jsx-runtime";var _$=({location:H,fallback:U,piecache:Z,onError:z,queryOptions:T,disableGlobalForm:$})=>{let J=g(),B=n(),I=j(),O=o(()=>F$({baseURL:J||""}),[J]),D=o(()=>c(),[]),Q=o(()=>J?t(J):null,[J]),V=o(()=>J?r(J,B):null,[J,B]),{data:G,isLoading:Y,error:W}=V$({queryKey:["uiConfig",H.pathname+H.search,J],enabled:!!J,queryFn:async()=>{let q=new URLSearchParams(H.search);q.set("__pieroot","web");let M="/api/content"+H.pathname+"?"+q.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",M);let F=await O.get(M,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",F.data);return F.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...T}),X=IU(H.pathname,Z,U);if(!J)return X??null;if(I)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",B),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!Z);if(W){if(I)console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data});return z?.(W),X}if(Y||!G){if(I)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!G});return X}if(I)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return R(x.Provider,{value:D,children:R(k.Provider,{value:Q,children:R(y.Provider,{value:V,children:R(L.Provider,{value:U??R(M$,{}),children:R($H,{children:R(zH,{children:$?R(w,{uiConfig:G}):R("form",{id:"piedata_global_form",action:J+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:R(w,{uiConfig:G})})})})})})})})},K$=(H)=>{let U=o(()=>new W$,[]),Z=H.queryClient??U;return R(C.Provider,{value:H.onNavigate,children:R(m.Provider,{value:H.config,children:R(S.Provider,{value:H.onError,children:R(D$,{client:Z,children:R(_$,{...H})})})})})},RH=K$;import{useMemo as wH,useState as A$}from"react";import{QueryClient as P$,QueryClientProvider as R$}from"@tanstack/react-query";import{jsx as f,Fragment as N$}from"react/jsx-runtime";var w$=({location:H,fallback:U,children:Z,disableGlobalForm:z})=>{let T=g(),$=n(),J=j(),B=wH(()=>c(),[]),I=wH(()=>T?t(T):null,[T]),O=wH(()=>T?r(T,$):null,[T,$]);if(J)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",$),console.log("[PieRoot] Fallback provided:",!!U);return f(x.Provider,{value:B,children:f(k.Provider,{value:I,children:f(y.Provider,{value:O,children:f(L.Provider,{value:U??f(N$,{}),children:f($H,{children:f(zH,{children:z?Z:f("form",{id:"piedata_global_form",action:T+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},L$=(H)=>{let[U]=A$(()=>new P$),Z=H.queryClient??U;return f(C.Provider,{value:H.onNavigate,children:f(m.Provider,{value:H.config,children:f(S.Provider,{value:H.onError,children:f(R$,{client:Z,children:f(w$,{...H})})})})})},f$=L$;import{useMemo as E$}from"react";import{jsx as OU}from"react/jsx-runtime";var C$=OU("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),j$=({apiServer:H,pathname:U="/",search:Z="",centrifugeServer:z,fallback:T,enableRenderingLog:$=!1})=>{let J=H??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",B=E$(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:$,pageProcessor:"web"}),[J,z,$]);return OU(RH,{location:{pathname:U,search:Z},config:B,fallback:T??C$,onNavigate:(O)=>{if(typeof window<"u")window.history.pushState(null,"",O)}})},y$=j$;import{useMemo as k$}from"react";var x$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],S$=new Set(["telegram:cloud","telegram:secure"]),TH=(H)=>{if(H==="sid")return{source:"sid",key:"sid"};for(let U of x$){let Z=U+":";if(H.startsWith(Z))return{source:U,key:H.slice(Z.length)}}return{source:"dom",key:H}},GU=(H,U=!1)=>{let{source:Z,key:z}=TH(H);if(Z==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}if(Z==="localStorage"||Z==="sessionStorage")try{let B=(Z==="localStorage"?window.localStorage:window.sessionStorage).getItem(z);if(B===null){if(U)console.warn(`No ${Z} value found for key ${z}`);return[]}return[B]}catch(J){if(U)console.warn(`Failed to read ${Z} key ${z}:`,J);return[]}if(Z==="cookie"){let J=b$(z);if(J===null){if(U)console.warn(`No cookie found for key ${z}`);return[]}return[J]}if(Z==="url"){let J=new URLSearchParams(window.location.search).getAll(z);if(!J.length&&U)console.warn(`No URL query param found for key ${z}`);return J}if(S$.has(Z)){if(U)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=document.getElementsByName(z);if(!T.length){if(U)console.warn(`No input found with name ${z}`);return[]}let $=T[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},b$=(H)=>{let U=document.cookie?document.cookie.split(";"):[];for(let Z of U){let z=Z.indexOf("=");if((z===-1?Z:Z.slice(0,z)).trim()===H){let $=z===-1?"":Z.slice(z+1).trim();try{return decodeURIComponent($)}catch{return $}}}return null},v$=(H,U,Z)=>{let z=window.Telegram?.WebApp,T=H==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,$=H==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if(Z)console.warn(`${$} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(U,(B,I)=>{if(B){if(Z)console.warn(`Failed to read ${$} key ${U}:`,B);J([]);return}if(I==null||I===""){if(Z)console.warn(`No ${$} value found for key ${U}`);J([]);return}J([I])})}catch(B){if(Z)console.warn(`Failed to read ${$} key ${U}:`,B);J([])}})},XU=async(H,U=!1)=>{let{source:Z,key:z}=TH(H);if(Z==="telegram:cloud"||Z==="telegram:secure")return v$(Z,z,U);return GU(H,U)},m$=(H,U={},Z=[],z,T)=>{let $=T?.renderingLogEnabled??!1,J=T?.timeout,B=T?.retryPolicy,I=B?.maxRetries??0,O=B?.baseDelay??1000,D=B?.retryOn??[502,503,504];if($)console.log("Registering AJAX: ",z,U,Z);return async(Q={})=>{if(typeof window>"u"||typeof document>"u"){if($)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if($)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!H){if($)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await PH();let G=new FormData;for(let[X,q]of Object.entries({...U,...Q}))G.append(X,q);for(let X of Z){let{key:q}=TH(X);for(let M of await XU(X,$))G.append(q,M)}let Y=V+"api/ajax_content"+z;H(null);let W;for(let X=0;X<=I;X++){if(X>0){let F=O*2**(X-1);if($)console.log(`AJAX retry ${X}/${I} after ${F}ms`);await new Promise((A)=>setTimeout(A,F))}let q=J!=null?new AbortController:null,M=q&&setTimeout(()=>q.abort(),J);try{let F=await fetch(Y,{method:"POST",body:G,signal:q?.signal});if(M)clearTimeout(M);if(!F.ok&&D.includes(F.status)&&X<I){W=Error(`HTTP ${F.status}`);continue}let l=(F.headers.get("content-type")||"").includes("application/json");if(!!F.body?.getReader&&!l){let i=F.body.getReader(),YU=new TextDecoder,v="";while(!0){let{done:JH,value:qU}=await i.read();if(JH)break;v+=YU.decode(qU,{stream:!0});let LH=v.split(`
3
+ `);v=LH.pop()??"";for(let QU of LH){let BH=QU.trim();if(!BH)continue;try{let WU=JSON.parse(BH);H([WU])}catch{if($)console.warn("Failed to parse streamed line:",BH)}}}if(v.trim())try{let JH=JSON.parse(v);H([JH])}catch{if($)console.warn("Failed to parse final streamed line:",v)}return{}}else{let i=await F.json();return H(i),i}}catch(F){if(M)clearTimeout(M);if(W=F,X<I)continue;if($)console.error("AJAX request failed:",F);return H(null),F}}if($)console.error("AJAX request failed after retries:",W);return H(null),W}},c$=(H,U={},Z=[],z,T)=>{let{apiServer:$,enableRenderingLog:J}=p(),B=JSON.stringify(U),I=JSON.stringify(Z),O=JSON.stringify(T);return k$(()=>m$(H,U,Z,z,{apiServer:$,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[H,B,I,z,$,J,O])};import{clsx as h$}from"clsx";import{twMerge as p$}from"tailwind-merge";function g$(...H){return p$(h$(H))}var u$=()=>{if(typeof document>"u")return;let H=document.getElementById("piedata_global_form");H&&H.submit()};var d$=(H,U)=>`${H}${OH}${U}`;export{NU as usePieEmit,c$ as useAjaxSubmit,bU as unregisterComponent,YH as trackLazy,u$ as submitGlobalForm,E as registry,_ as registerPieComponent,SU as registerMultipleComponents,XU as readAjaxKeyAsync,GU as readAjaxKey,bH as preloadComponent,pU as prefetchLazyComponents,d$ as pieName,TH as parseDepName,vU as hasComponent,hU as getRegistrySize,u as getRegistryEntry,SH as getLazyComponentNames,c as getEmitter,mU as getComponentMeta,cU as getAllRegisteredComponents,g$ as cn,IZ as UnionCard,N as UIRendererContext,QH as UILoading,w as UI,k as SocketIOContext,iZ as SessionStorageCard,TZ as SequenceCard,RH as PieRoot,y$ as PiePreviewRoot,m as PieConfigContext,P as PieCard,f$ as PieBaseRoot,OH as PIEBREAK,T$ as OneOfCard,x as MittContext,dZ as IOEventsCard,MZ as HiddenCard,VZ as HTMLEmbedCard,L as FallbackContext,rZ as DeviceStorageCard,y as CentrifugeIOContext,Z$ as BoxCard,fZ as AutoRedirectCard,H$ as AjaxGroupCard};