@swarm.ing/pieui 2.1.2 → 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 (43) hide show
  1. package/README.md +52 -0
  2. package/dist/components/Common/DeviceStorageCard/ui/DeviceStorageCard.d.ts +15 -0
  3. package/dist/components/Common/DeviceStorageCard/ui/DeviceStorageCard.d.ts.map +1 -1
  4. package/dist/components/Common/SessionStorageCard/ui/SessionStorageCard.d.ts +15 -0
  5. package/dist/components/Common/SessionStorageCard/ui/SessionStorageCard.d.ts.map +1 -1
  6. package/dist/components/index.d.ts +0 -2
  7. package/dist/components/index.d.ts.map +1 -1
  8. package/dist/components/index.esm.js +1 -1
  9. package/dist/components/index.js +1 -1
  10. package/dist/index.d.ts +2 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.esm.js +2 -2
  13. package/dist/index.js +2 -2
  14. package/dist/pieui.components.json +62 -62
  15. package/dist/storybook/addon/manager.esm.js +2 -0
  16. package/dist/storybook/addon/manager.js +2 -0
  17. package/dist/telegram/components/CloudStorageCard/index.d.ts.map +1 -0
  18. package/dist/telegram/components/CloudStorageCard/types/index.d.ts.map +1 -0
  19. package/dist/telegram/components/CloudStorageCard/ui/CloudStorageCard.d.ts +15 -0
  20. package/dist/telegram/components/CloudStorageCard/ui/CloudStorageCard.d.ts.map +1 -0
  21. package/dist/telegram/components/SecureStorageCard/index.d.ts.map +1 -0
  22. package/dist/telegram/components/SecureStorageCard/types/index.d.ts.map +1 -0
  23. package/dist/telegram/components/SecureStorageCard/ui/SecureStorageCard.d.ts +15 -0
  24. package/dist/telegram/components/SecureStorageCard/ui/SecureStorageCard.d.ts.map +1 -0
  25. package/dist/telegram/index.d.ts +4 -0
  26. package/dist/telegram/index.d.ts.map +1 -1
  27. package/dist/telegram/index.esm.js +1 -1
  28. package/dist/telegram/index.js +1 -1
  29. package/dist/util/ajaxCommonUtils.d.ts +60 -13
  30. package/dist/util/ajaxCommonUtils.d.ts.map +1 -1
  31. package/package.json +2 -2
  32. package/dist/components/Common/CloudStorageCard/index.d.ts.map +0 -1
  33. package/dist/components/Common/CloudStorageCard/types/index.d.ts.map +0 -1
  34. package/dist/components/Common/CloudStorageCard/ui/CloudStorageCard.d.ts +0 -4
  35. package/dist/components/Common/CloudStorageCard/ui/CloudStorageCard.d.ts.map +0 -1
  36. package/dist/components/Common/SecureStorageCard/index.d.ts.map +0 -1
  37. package/dist/components/Common/SecureStorageCard/types/index.d.ts.map +0 -1
  38. package/dist/components/Common/SecureStorageCard/ui/SecureStorageCard.d.ts +0 -4
  39. package/dist/components/Common/SecureStorageCard/ui/SecureStorageCard.d.ts.map +0 -1
  40. /package/dist/{components/Common → telegram/components}/CloudStorageCard/index.d.ts +0 -0
  41. /package/dist/{components/Common → telegram/components}/CloudStorageCard/types/index.d.ts +0 -0
  42. /package/dist/{components/Common → telegram/components}/SecureStorageCard/index.d.ts +0 -0
  43. /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,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 _,useEffect as g,useRef as ko}from"react";import{createContext as Xo,useContext as yo}from"react";var K=globalThis,L=(o,r)=>{let p=Symbol.for(o);if(!(p in K))K[p]=r();return K[p]};var Yo=L("@swarm.ing/pieui:context:pieConfig",()=>Xo(null)),Mo=()=>{let o=yo(Yo);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var Q=()=>{let{enableRenderingLog:o}=Mo();return o},c=Q;import{createContext as Ro}from"react";import{Centrifuge as Jf}from"centrifuge";var Qf=L("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var Ko=L("@swarm.ing/pieui:context:centrifuge",()=>Ro(null)),v=Ko;import{io as yf}from"socket.io-client";import{createContext as _o}from"react";var Kf=L("@swarm.ing/pieui:socket-cache",()=>new Map);var go=L("@swarm.ing/pieui:context:socket",()=>_o(null)),s=go;import xf from"mitt";import{createContext as xo,useCallback as lf,useContext as nf}from"react";var Eo=L("@swarm.ing/pieui:context:mitt",()=>xo(null));var X=Eo;import{jsx as No,jsxs as bo,Fragment as no}from"react/jsx-runtime";var lo=({card:o,data:r,children:p,useSocketioSupport:C=!1,useCentrifugeSupport:u=!1,useMittSupport:f=!1,centrifugeChannel:d=void 0,methods:I=void 0,stored:i=void 0})=>{let m=c(),U=ko(I);if(U.current=I,m)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:C,centrifuge:u,mitt:f,centrifugeChannel:d}),console.log("[PieCard] Methods:",I?Object.keys(I):"none"),console.log("[PieCard] Has children:",!!p);let S=_(s),H=_(v),w=_(X);if(g(()=>{if(!S||!C||!U.current||!r.name){if(m&&C)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!S,useSocketioSupport:C,hasMethods:!!U.current,hasDataName:!!r?.name});return}let Z=Object.keys(U.current??{}).map((O)=>{let D=`pie${O}_${r.name}`;if(m)console.log(`[PieCard] Socket.IO registering event: ${D}`);let B=($)=>{U.current?.[O]?.($)};return S.on(D,B),[D,B]});return()=>{Z.forEach(([O,D])=>{if(m)console.log(`[PieCard] Socket.IO unregistering event: ${O}`);S.off(O,D)})}},[S,r.name,C]),g(()=>{if(!H||!u||!d||!r.name){if(m&&u)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!H,useCentrifugeSupport:u,hasCentrifugeChannel:!!d,hasMethods:!!U.current,hasDataName:!!r?.name});return}let Z=Object.keys(U.current??{}).map((O)=>{let D=`pie${O}_${r.name}_${d}`;if(m)console.log(`[PieCard] Centrifuge subscribing to channel: ${D}`);let B=H.newSubscription(D);return B.on("publication",($)=>{if(m)console.log(`[PieCard] Centrifuge received data on ${D}:`,$.data);U.current?.[O]?.($.data)}),B.subscribe(),B});return()=>{Z.forEach((O)=>{if(m)console.log("[PieCard] Centrifuge unsubscribing from channel");O.unsubscribe(),H.removeSubscription(O)})}},[H,d,r.name,u]),g(()=>{if(!w||!f||!r.name){if(m&&f)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:f,hasMethods:!!U.current,hasDataName:!!r?.name});return}let P=Object.keys(U.current??{}),Z={};return P.forEach((O)=>{let D=`pie${O}_${r.name}`,B=($)=>{if(m)console.log(`[PieCard] Mitt registering event: ${D}`);U.current?.[O]?.($)};Z[D]=B,w.on(D,B)}),()=>{Object.entries(Z).forEach(([O,D])=>{if(m)console.log(`[PieCard] Mitt unregistering event: ${O}`);w.off(O,D)})}},[w,r.name,f]),m)console.log("[PieCard] Rendering complete, returning children");if(i!==void 0)return bo(no,{children:[No("input",{type:"hidden",name:r.name,value:JSON.stringify(i)}),p]});return p},T=lo;import{lazy as jo}from"react";var W=new Map;function to(o,r){return r.catch(()=>{if(W.get(o)===r)W.delete(o)}),W.set(o,r),r}function h(o,r){return jo(()=>{if(W.has(r))return W.get(r);return to(r,o().then((p)=>p))})}var e=L("@swarm.ing/pieui:component-registry",()=>new Map),ao=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=h(r.loader,o.name),r.isLazy=!0;return r};function A(o){let r=ao(o);return e.set(r.name,r),r.component}var y=(o)=>{return e.get(o)};import{useContext as oo,memo as mr}from"react";import{createContext as co}from"react";import{jsx as ho,Fragment as so}from"react/jsx-runtime";var vo=L("@swarm.ing/pieui:context:fallback",()=>co(ho(so,{}))),G=vo;import{createContext as eo}from"react";var or=L("@swarm.ing/pieui:context:lazyError",()=>eo(void 0)),Y=or;import{Component as rr,Suspense as fr}from"react";import{jsx as ur}from"react/jsx-runtime";var pr=2,Cr=400;class J extends rr{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<pr){let r=Cr*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((p)=>({failed:!1,attempt:p.attempt+1}))},r)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return ur(fr,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as x}from"react/jsx-runtime";function dr({uiConfig:o,setUiAjaxConfiguration:r}){let p=oo(G),C=oo(Y),u=Q();if(u)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let f=y(o.card);if(!f?.component){if(u)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return p}if(u)console.log("[UI] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata});let d=f.component,I=x(d,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(f.isLazy){if(u)console.log("[UI] Rendering lazy component with Suspense:",f.name);return x(J,{name:f.name,fallback:f.fallback?x(f.fallback,{}):p,onError:C,children:I})}if(u)console.log("[UI] Rendering component directly:",f.name);return I}var q=mr(dr);import{useContext as ro}from"react";import{createContext as Ur}from"react";var ir=L("@swarm.ing/pieui:context:uiRenderer",()=>Ur(null)),V=ir;import{jsx as M}from"react/jsx-runtime";function fo({uiConfig:o,setUiAjaxConfiguration:r}){let p=ro(G),C=ro(Y),u=Q();if(u)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let f=y(o.card);if(!f?.component){if(u)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return p}if(u)console.log("[UILoading] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata,hasFallback:!!f.fallback});if(f.fallback){if(u)console.log("[UILoading] Rendering fallback for:",f.name);let i=f.fallback;return M(i,{})}if(u)console.log("[UILoading] No fallback, rendering full component:",f.name);let d=f.component,I=M(V.Provider,{value:fo,children:M(d,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(f.isLazy)return M(J,{name:f.name,fallback:p,onError:C,children:I});return I}var Ir=fo;import{useContext as Pr}from"react";import{jsx as E}from"react/jsx-runtime";var wr=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:C,sx:u}=o,f=Pr(V)??q;return E(T,{card:C,data:o,children:E("div",{style:u,id:C,children:r.map((d,I)=>{return E(f,{uiConfig:d,setUiAjaxConfiguration:p},`children-${I}`)})})})},po=wr;var Sr=A({name:"SequenceCard",component:po,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Ar}from"react";import{jsx as Co}from"react/jsx-runtime";var Tr=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:C}=o,u=Ar(V)??q;return Co(T,{card:C,data:o,children:r.map((f,d)=>{return Co(u,{uiConfig:f,setUiAjaxConfiguration:p},`children-${d}`)})})},uo=Tr;var Hr=A({name:"UnionCard",component:uo,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as zr,useState as Zr}from"react";import Br from"html-react-parser";import{useCallback as R,useEffect as Or,useRef as k,useState as Lr}from"react";function Dr(){let o=new AudioContext,r=o.createOscillator(),p=r.connect(o.createMediaStreamDestination());r.start();let C=p.stream.getAudioTracks()[0];return C.enabled=!1,C}function l(o=null,r){let[p,C]=Lr(!1),u=k(null),f=k(null),d=k(null),I=R(async(S,H=!0)=>{if(u.current)i();let w=new RTCPeerConnection;if(w.onconnectionstatechange=()=>{if(w.connectionState==="connected")C(!0);else if(["disconnected","failed","closed"].includes(w.connectionState))C(!1)},w.ontrack=(z)=>{if(o)o.srcObject=z.streams[0]},H){let z=await navigator.mediaDevices.getUserMedia({audio:!0});w.addTrack(z.getTracks()[0],z)}else{let z=Dr();w.addTrack(z)}let P=w.createDataChannel("oai-events");f.current=P,d.current=new Promise((z)=>{P.addEventListener("open",()=>{z()})});let Z=await w.createOffer();await w.setLocalDescription(Z);let $=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:Z.sdp,headers:{Authorization:`Bearer ${S}`,"Content-Type":"application/sdp"}})).text();await w.setRemoteDescription({type:"answer",sdp:$}),u.current=w,await d.current},[o]),i=R(()=>{let S=f.current;if(S)S.close();u.current?.getSenders()?.forEach((H)=>H.track?.stop()),u.current?.close(),C(!1),u.current=null,f.current=null,d.current=null},[o]),m=R((S)=>{let H=f.current;if(!H){console.error("Data channel is not ready",S);return}let w=new Date().toLocaleTimeString();if(S.event_id=S.event_id||crypto.randomUUID(),H.send(JSON.stringify(S)),!S.timestamp)S.timestamp=w;r?.(S)},[r,o]),U=R((S)=>{if(!f.current){console.error("Data channel is not ready");return}let w=()=>{m({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:S}]}}),m({type:"response.create"})};if(d.current)d.current.then(w);else w()},[r,o]);return Or(()=>{let S=f.current;if(!S)return;let H=(w)=>{let P=JSON.parse(w.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();r?.(P)};return S.addEventListener("message",H),()=>{S.removeEventListener("message",H)}},[r,o]),{isSessionActive:p,startSession:I,stopSession:i,sendTextMessage:U}}import{jsx as qr}from"react/jsx-runtime";var Vr=({data:o})=>{let{html:r,useSocketioSupport:p,useCentrifugeSupport:C,useMittSupport:u,centrifugeChannel:f}=o,[d,I]=Zr(r),{isSessionActive:i,startSession:m,sendTextMessage:U}=l(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)I((Z)=>Z+P.delta)});return zr(()=>{I(r)},[r]),qr(T,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{I(P.value)},generateUsingAI:async(P)=>{try{if(!i&&P.token)await m(P.token,!1);U(P.prompt)}catch(Z){console.error("Failed to generate using AI",Z)}},initializeAI:async(P)=>{if(!i&&P.token)await m(P.token,!1)}},useCentrifugeSupport:C,useSocketioSupport:p,useMittSupport:u,centrifugeChannel:f,children:Br(d)})},mo=Vr;var $r=A({name:"HTMLEmbedCard",component:mo,metadata:{author:"Swarm.ing"}});import{useEffect as Gr,useState as Jr}from"react";import{jsx as Uo}from"react/jsx-runtime";var Fr=({data:o})=>{let{name:r,value:p,useSocketioSupport:C,useCentrifugeSupport:u,useMittSupport:f,centrifugeChannel:d}=o,[I,i]=Jr(p);return Gr(()=>{i(p)},[p]),Uo(T,{card:"HiddenCard",data:o,useSocketioSupport:C,useCentrifugeSupport:u,useMittSupport:f,centrifugeChannel:d,methods:{update:({value:m})=>{i(m)}},children:Uo("input",{type:"hidden",id:r,name:r,value:I})})},io=Fr;var Qr=A({name:"HiddenCard",component:io,metadata:{author:"Swarm.ing"}});import{useContext as Io,useEffect as yr}from"react";import{createContext as Wr}from"react";var Xr=L("@swarm.ing/pieui:context:navigate",()=>Wr(void 0)),F=Xr;import{jsx as Rr,Fragment as Mr}from"react/jsx-runtime";var Yr=({data:o})=>{let{url:r}=o,p=Io(F),C=Io(G);return yr(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else p?.(r)},[r,p]),Rr(Mr,{children:C})},Po=Yr;var Kr=A({name:"AutoRedirectCard",component:Po,metadata:{author:"Swarm.ing"}});import{Bounce as _r,Slide as gr,Zoom as xr,Flip as Er}from"react-toastify";import{toast as kr,ToastContainer as lr}from"react-toastify";import{useContext as nr,useMemo as Nr,useRef as br}from"react";import{jsx as n,Fragment as sr}from"react/jsx-runtime";var jr={bounce:_r,slide:gr,zoom:xr,flip:Er},tr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?jr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};kr(o.message,r)},ar=(o)=>{console.log("Log event",o)},cr=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(C){console.error("[IOEventsCard] Failed to show notification",C)}},p=window.Notification.permission;if(p==="granted"){r();return}if(p==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((C)=>{if(C==="granted")r()})},vr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:p,useMittSupport:C,centrifugeChannel:u}=o,f=nr(F),d=br(f);d.current=f;let I=Nr(()=>({alert:tr,log:ar,push:cr,redirect:(i)=>{if(i.to){let m=i.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()},reload:(i)=>{if(i.to){let m=i.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()}}),[]);return n(sr,{children:n(T,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:p,useMittSupport:C,centrifugeChannel:u,methods:I,children:n(lr,{})})})},wo=vr;var hr=A({name:"IOEventsCard",component:wo,metadata:{author:"Swarm.ing"}});import{useEffect as So,useState as er}from"react";import{jsx as Ao}from"react/jsx-runtime";var of=({data:o})=>{let{name:r,key:p,value:C,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=er(C);return So(()=>{m(C)},[C]),So(()=>{if(typeof window>"u")return;sessionStorage.setItem(p,i)},[p,i]),Ao(T,{card:"SessionStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{sessionStorage.removeItem(p),m("")}},children:Ao("input",{type:"hidden",id:r,name:r,value:i})})},To=of;var rf=A({name:"SessionStorageCard",component:To,metadata:{author:"PieData"}});import{useEffect as Ho,useState as ff}from"react";import{jsx as Oo}from"react/jsx-runtime";var pf=({data:o})=>{let{name:r,key:p,value:C,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=ff(C);return Ho(()=>{m(C)},[C]),Ho(()=>{if(typeof window>"u")return;localStorage.setItem(p,i)},[p,i]),Oo(T,{card:"DeviceStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{localStorage.removeItem(p),m("")}},children:Oo("input",{type:"hidden",id:r,name:r,value:i})})},Lo=pf;var Cf=A({name:"DeviceStorageCard",component:Lo,metadata:{author:"PieData"}});import{useEffect as Do,useState as uf}from"react";import{jsx as zo}from"react/jsx-runtime";var mf=({data:o})=>{let{name:r,key:p,value:C,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=uf(C);return Do(()=>{m(C)},[C]),Do(()=>{if(typeof window>"u")return;let U=window.Telegram?.WebApp?.CloudStorage;if(!U)return;U.setItem(p,i)},[p,i]),zo(T,{card:"CloudStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{let U=window.Telegram?.WebApp?.CloudStorage;if(U)U.removeItem(p);m("")}},children:zo("input",{type:"hidden",id:r,name:r,value:i})})},Zo=mf;var df=A({name:"CloudStorageCard",component:Zo,metadata:{author:"PieData"}});import{useEffect as Bo,useState as Uf}from"react";import{jsx as Vo}from"react/jsx-runtime";var If=({data:o})=>{let{name:r,key:p,value:C,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=Uf(C);return Bo(()=>{m(C)},[C]),Bo(()=>{if(typeof window>"u")return;let U=window.Telegram?.WebApp?.SecureStorage;if(!U)return;U.setItem(p,i)},[p,i]),Vo(T,{card:"SecureStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:f,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{let U=window.Telegram?.WebApp?.SecureStorage;if(U)U.removeItem(p);m("")}},children:Vo("input",{type:"hidden",id:r,name:r,value:i})})},qo=If;var Pf=A({name:"SecureStorageCard",component:qo,metadata:{author:"PieData"}});import{useCallback as N,useContext as b,useEffect as wf,useRef as Sf,useState as $o}from"react";import{jsx as Go}from"react/jsx-runtime";var Af=({data:o,content:r})=>{let{useLoader:p,noReturn:C,returnType:u,useSocketioSupport:f,useCentrifugeSupport:d,useMittSupport:I,centrifugeChannel:i}=o,m=b(G),U=b(V)??q,[S,H]=$o(!1),[w,P]=$o(null),Z=Sf(r),O=b(X),D=N((z)=>{if(z===null)H(!0);else if(H(!1),!C)Z.current=z;if(!C)P(z)},[C]),B=N((z)=>{Z.current=z.content,P(z.content)},[]),$=N((z)=>{if(z===null)H(!0);else if(H(!1),!C)for(let a of z)O?.emit(a.name,a.data)},[C,O]);if(wf(()=>{P(r),H(!1)},[r]),!w&&p)return m;return Go(T,{card:"AjaxGroupCard",data:o,methods:{changeContent:B},useSocketioSupport:f,useCentrifugeSupport:d,useMittSupport:I,centrifugeChannel:i,children:Go(U,{uiConfig:w??Z.current,setUiAjaxConfiguration:u==="events"?$:D})})},Jo=Af;var Tf=A({name:"AjaxGroupCard",component:Jo,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as Fo}from"react";import{jsx as j}from"react/jsx-runtime";var Hf=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:C,url:u,sx:f}=o,d=Fo(F),I=Fo(V)??q;return j(T,{card:C,data:o,children:j("div",{style:f,id:C,onClick:(m)=>{if(u)if(m.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else d?.(u)},children:j(I,{setUiAjaxConfiguration:p,uiConfig:r})})})},Qo=Hf;var Of=A({name:"BoxCard",component:Qo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Lf}from"react";import{jsx as t}from"react/jsx-runtime";var Df=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:C,sx:u}=o,f=Lf(V)??q;return t(T,{card:C,data:o,children:t("div",{style:u,id:C,children:r.map((d,I)=>{return t(f,{uiConfig:d,setUiAjaxConfiguration:p},`children-${I}`)})})})},Wo=Df;var zf=A({name:"OneOfCard",component:Wo,metadata:{author:"Swarm.ing",description:"Different variants"}});export{Hr as UnionCard,Ir as UILoading,q as UI,rf as SessionStorageCard,Sr as SequenceCard,Pf as SecureStorageCard,T as PieCard,zf as OneOfCard,hr as IOEventsCard,Qr as HiddenCard,$r as HTMLEmbedCard,Cf as DeviceStorageCard,df as CloudStorageCard,Of as BoxCard,Kr as AutoRedirectCard,Tf as AjaxGroupCard};
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:K,getOwnPropertyNames:Zo,getOwnPropertyDescriptor:Lr}=Object,Bo=Object.prototype.hasOwnProperty;var Vo=(o,r,f)=>{f=o!=null?Hr(Or(o)):{};let p=r||!o||!o.__esModule?K(f,"default",{value:o,enumerable:!0}):f;for(let u of Zo(o))if(!Bo.call(p,u))K(p,u,{get:()=>o[u],enumerable:!0});return p},zo=new WeakMap,Dr=(o)=>{var r=zo.get(o),f;if(r)return r;if(r=K({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")Zo(o).map((p)=>!Bo.call(r,p)&&K(r,p,{get:()=>o[p],enumerable:!(f=Lr(o,p))||f.enumerable}));return zo.set(o,r),r};var zr=(o,r)=>{for(var f in r)K(o,f,{get:r[f],enumerable:!0,configurable:!0,set:(p)=>r[f]=()=>p})};var pf={};zr(pf,{UnionCard:()=>no,UILoading:()=>_o,UI:()=>$,SessionStorageCard:()=>fr,SequenceCard:()=>Eo,SecureStorageCard:()=>Ur,PieCard:()=>A,OneOfCard:()=>Tr,IOEventsCard:()=>or,HiddenCard:()=>co,HTMLEmbedCard:()=>to,DeviceStorageCard:()=>Cr,CloudStorageCard:()=>mr,BoxCard:()=>wr,AutoRedirectCard:()=>ho,AjaxGroupCard:()=>Ir});module.exports=Dr(pf);var F=require("react");var j=require("react");var Uo=globalThis,L=(o,r)=>{let f=Symbol.for(o);if(!(f in Uo))Uo[f]=r();return Uo[f]};var Zr=L("@swarm.ing/pieui:context:pieConfig",()=>j.createContext(null)),Br=()=>{let o=j.useContext(Zr);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var _=()=>{let{enableRenderingLog:o}=Br();return o},qo=_;var $o=require("react"),Vr=require("centrifuge");var If=L("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var qr=L("@swarm.ing/pieui:context:centrifuge",()=>$o.createContext(null)),Go=qr;var $r=require("socket.io-client"),Jo=require("react");var Af=L("@swarm.ing/pieui:socket-cache",()=>new Map);var Gr=L("@swarm.ing/pieui:context:socket",()=>Jo.createContext(null)),Fo=Gr;var Jr=Vo(require("mitt")),t=require("react");var Fr=L("@swarm.ing/pieui:context:mitt",()=>t.createContext(null));var a=Fr;var X=require("react/jsx-runtime"),Qr=({card:o,data:r,children:f,useSocketioSupport:p=!1,useCentrifugeSupport:u=!1,useMittSupport:C=!1,centrifugeChannel:d=void 0,methods:I=void 0,stored:i=void 0})=>{let m=qo(),U=F.useRef(I);if(U.current=I,m)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:p,centrifuge:u,mitt:C,centrifugeChannel:d}),console.log("[PieCard] Methods:",I?Object.keys(I):"none"),console.log("[PieCard] Has children:",!!f);let S=F.useContext(Fo),H=F.useContext(Go),w=F.useContext(a);if(F.useEffect(()=>{if(!S||!p||!U.current||!r.name){if(m&&p)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!S,useSocketioSupport:p,hasMethods:!!U.current,hasDataName:!!r?.name});return}let Z=Object.keys(U.current??{}).map((O)=>{let D=`pie${O}_${r.name}`;if(m)console.log(`[PieCard] Socket.IO registering event: ${D}`);let q=(J)=>{U.current?.[O]?.(J)};return S.on(D,q),[D,q]});return()=>{Z.forEach(([O,D])=>{if(m)console.log(`[PieCard] Socket.IO unregistering event: ${O}`);S.off(O,D)})}},[S,r.name,p]),F.useEffect(()=>{if(!H||!u||!d||!r.name){if(m&&u)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!H,useCentrifugeSupport:u,hasCentrifugeChannel:!!d,hasMethods:!!U.current,hasDataName:!!r?.name});return}let Z=Object.keys(U.current??{}).map((O)=>{let D=`pie${O}_${r.name}_${d}`;if(m)console.log(`[PieCard] Centrifuge subscribing to channel: ${D}`);let q=H.newSubscription(D);return q.on("publication",(J)=>{if(m)console.log(`[PieCard] Centrifuge received data on ${D}:`,J.data);U.current?.[O]?.(J.data)}),q.subscribe(),q});return()=>{Z.forEach((O)=>{if(m)console.log("[PieCard] Centrifuge unsubscribing from channel");O.unsubscribe(),H.removeSubscription(O)})}},[H,d,r.name,u]),F.useEffect(()=>{if(!w||!C||!r.name){if(m&&C)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:C,hasMethods:!!U.current,hasDataName:!!r?.name});return}let P=Object.keys(U.current??{}),Z={};return P.forEach((O)=>{let D=`pie${O}_${r.name}`,q=(J)=>{if(m)console.log(`[PieCard] Mitt registering event: ${D}`);U.current?.[O]?.(J)};Z[D]=q,w.on(D,q)}),()=>{Object.entries(Z).forEach(([O,D])=>{if(m)console.log(`[PieCard] Mitt unregistering event: ${O}`);w.off(O,D)})}},[w,r.name,C]),m)console.log("[PieCard] Rendering complete, returning children");if(i!==void 0)return X.jsxs(X.Fragment,{children:[X.jsx("input",{type:"hidden",name:r.name,value:JSON.stringify(i)}),f]});return f},A=Qr;var Qo=require("react"),g=new Map;function Wr(o,r){return r.catch(()=>{if(g.get(o)===r)g.delete(o)}),g.set(o,r),r}function Wo(o,r){return Qo.lazy(()=>{if(g.has(r))return g.get(r);return Wr(r,o().then((f)=>f))})}var Xo=L("@swarm.ing/pieui:component-registry",()=>new Map),Xr=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=Wo(r.loader,o.name),r.isLazy=!0;return r};function T(o){let r=Xr(o);return Xo.set(r.name,r),r.component}var c=(o)=>{return Xo.get(o)};var x=require("react");var yo=require("react");var v=require("react/jsx-runtime"),yr=L("@swarm.ing/pieui:context:fallback",()=>yo.createContext(v.jsx(v.Fragment,{}))),Q=yr;var Yo=require("react");var Yr=L("@swarm.ing/pieui:context:lazyError",()=>Yo.createContext(void 0)),s=Yr;var h=require("react"),Mo=require("react/jsx-runtime"),Mr=2,Rr=400;class y extends h.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<Mr){let r=Rr*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((f)=>({failed:!1,attempt:f.attempt+1}))},r)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return Mo.jsx(h.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var e=require("react/jsx-runtime");function Kr({uiConfig:o,setUiAjaxConfiguration:r}){let f=x.useContext(Q),p=x.useContext(s),u=_();if(u)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let C=c(o.card);if(!C?.component){if(u)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return f}if(u)console.log("[UI] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata});let d=C.component,I=e.jsx(d,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(C.isLazy){if(u)console.log("[UI] Rendering lazy component with Suspense:",C.name);return e.jsx(y,{name:C.name,fallback:C.fallback?e.jsx(C.fallback,{}):f,onError:p,children:I})}if(u)console.log("[UI] Rendering component directly:",C.name);return I}var $=x.memo(Kr);var io=require("react");var Ro=require("react");var _r=L("@swarm.ing/pieui:context:uiRenderer",()=>Ro.createContext(null)),G=_r;var E=require("react/jsx-runtime");function Ko({uiConfig:o,setUiAjaxConfiguration:r}){let f=io.useContext(Q),p=io.useContext(s),u=_();if(u)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let C=c(o.card);if(!C?.component){if(u)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return f}if(u)console.log("[UILoading] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata,hasFallback:!!C.fallback});if(C.fallback){if(u)console.log("[UILoading] Rendering fallback for:",C.name);let i=C.fallback;return E.jsx(i,{})}if(u)console.log("[UILoading] No fallback, rendering full component:",C.name);let d=C.component,I=E.jsx(G.Provider,{value:Ko,children:E.jsx(d,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(C.isLazy)return E.jsx(y,{name:C.name,fallback:f,onError:p,children:I});return I}var _o=Ko;var go=require("react");var oo=require("react/jsx-runtime"),gr=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p,sx:u}=o,C=go.useContext(G)??$;return oo.jsx(A,{card:p,data:o,children:oo.jsx("div",{style:u,id:p,children:r.map((d,I)=>{return oo.jsx(C,{uiConfig:d,setUiAjaxConfiguration:f},`children-${I}`)})})})},xo=gr;var Eo=T({name:"SequenceCard",component:xo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var ko=require("react");var Io=require("react/jsx-runtime"),xr=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p}=o,u=ko.useContext(G)??$;return Io.jsx(A,{card:p,data:o,children:r.map((C,d)=>{return Io.jsx(u,{uiConfig:C,setUiAjaxConfiguration:f},`children-${d}`)})})},lo=xr;var no=T({name:"UnionCard",component:lo,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var ro=require("react"),No=Vo(require("html-react-parser"));var V=require("react");function Er(){let o=new AudioContext,r=o.createOscillator(),f=r.connect(o.createMediaStreamDestination());r.start();let p=f.stream.getAudioTracks()[0];return p.enabled=!1,p}function Po(o=null,r){let[f,p]=V.useState(!1),u=V.useRef(null),C=V.useRef(null),d=V.useRef(null),I=V.useCallback(async(S,H=!0)=>{if(u.current)i();let w=new RTCPeerConnection;if(w.onconnectionstatechange=()=>{if(w.connectionState==="connected")p(!0);else if(["disconnected","failed","closed"].includes(w.connectionState))p(!1)},w.ontrack=(z)=>{if(o)o.srcObject=z.streams[0]},H){let z=await navigator.mediaDevices.getUserMedia({audio:!0});w.addTrack(z.getTracks()[0],z)}else{let z=Er();w.addTrack(z)}let P=w.createDataChannel("oai-events");C.current=P,d.current=new Promise((z)=>{P.addEventListener("open",()=>{z()})});let Z=await w.createOffer();await w.setLocalDescription(Z);let J=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:Z.sdp,headers:{Authorization:`Bearer ${S}`,"Content-Type":"application/sdp"}})).text();await w.setRemoteDescription({type:"answer",sdp:J}),u.current=w,await d.current},[o]),i=V.useCallback(()=>{let S=C.current;if(S)S.close();u.current?.getSenders()?.forEach((H)=>H.track?.stop()),u.current?.close(),p(!1),u.current=null,C.current=null,d.current=null},[o]),m=V.useCallback((S)=>{let H=C.current;if(!H){console.error("Data channel is not ready",S);return}let w=new Date().toLocaleTimeString();if(S.event_id=S.event_id||crypto.randomUUID(),H.send(JSON.stringify(S)),!S.timestamp)S.timestamp=w;r?.(S)},[r,o]),U=V.useCallback((S)=>{if(!C.current){console.error("Data channel is not ready");return}let w=()=>{m({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:S}]}}),m({type:"response.create"})};if(d.current)d.current.then(w);else w()},[r,o]);return V.useEffect(()=>{let S=C.current;if(!S)return;let H=(w)=>{let P=JSON.parse(w.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();r?.(P)};return S.addEventListener("message",H),()=>{S.removeEventListener("message",H)}},[r,o]),{isSessionActive:f,startSession:I,stopSession:i,sendTextMessage:U}}var jo=require("react/jsx-runtime"),kr=({data:o})=>{let{html:r,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:u,centrifugeChannel:C}=o,[d,I]=ro.useState(r),{isSessionActive:i,startSession:m,sendTextMessage:U}=Po(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)I((Z)=>Z+P.delta)});return ro.useEffect(()=>{I(r)},[r]),jo.jsx(A,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{I(P.value)},generateUsingAI:async(P)=>{try{if(!i&&P.token)await m(P.token,!1);U(P.prompt)}catch(Z){console.error("Failed to generate using AI",Z)}},initializeAI:async(P)=>{if(!i&&P.token)await m(P.token,!1)}},useCentrifugeSupport:p,useSocketioSupport:f,useMittSupport:u,centrifugeChannel:C,children:No.default(d)})},bo=kr;var to=T({name:"HTMLEmbedCard",component:bo,metadata:{author:"Swarm.ing"}});var fo=require("react");var wo=require("react/jsx-runtime"),lr=({data:o})=>{let{name:r,value:f,useSocketioSupport:p,useCentrifugeSupport:u,useMittSupport:C,centrifugeChannel:d}=o,[I,i]=fo.useState(f);return fo.useEffect(()=>{i(f)},[f]),wo.jsx(A,{card:"HiddenCard",data:o,useSocketioSupport:p,useCentrifugeSupport:u,useMittSupport:C,centrifugeChannel:d,methods:{update:({value:m})=>{i(m)}},children:wo.jsx("input",{type:"hidden",id:r,name:r,value:I})})},ao=lr;var co=T({name:"HiddenCard",component:ao,metadata:{author:"Swarm.ing"}});var k=require("react");var vo=require("react");var nr=L("@swarm.ing/pieui:context:navigate",()=>vo.createContext(void 0)),Y=nr;var po=require("react/jsx-runtime"),Nr=({data:o})=>{let{url:r}=o,f=k.useContext(Y),p=k.useContext(Q);return k.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else f?.(r)},[r,f]),po.jsx(po.Fragment,{children:p})},so=Nr;var ho=T({name:"AutoRedirectCard",component:so,metadata:{author:"Swarm.ing"}});var W=require("react-toastify"),Co=require("react-toastify");var R=require("react");var M=require("react/jsx-runtime"),br={bounce:W.Bounce,slide:W.Slide,zoom:W.Zoom,flip:W.Flip},jr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?br[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};Co.toast(o.message,r)},tr=(o)=>{console.log("Log event",o)},ar=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(p){console.error("[IOEventsCard] Failed to show notification",p)}},f=window.Notification.permission;if(f==="granted"){r();return}if(f==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((p)=>{if(p==="granted")r()})},cr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:f,useMittSupport:p,centrifugeChannel:u}=o,C=R.useContext(Y),d=R.useRef(C);d.current=C;let I=R.useMemo(()=>({alert:jr,log:tr,push:ar,redirect:(i)=>{if(i.to){let m=i.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()},reload:(i)=>{if(i.to){let m=i.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()}}),[]);return M.jsx(M.Fragment,{children:M.jsx(A,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:f,useMittSupport:p,centrifugeChannel:u,methods:I,children:M.jsx(Co.ToastContainer,{})})})},eo=cr;var or=T({name:"IOEventsCard",component:eo,metadata:{author:"Swarm.ing"}});var l=require("react");var So=require("react/jsx-runtime"),vr=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=l.useState(p);return l.useEffect(()=>{m(p)},[p]),l.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(f,i)},[f,i]),So.jsx(A,{card:"SessionStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{sessionStorage.removeItem(f),m("")}},children:So.jsx("input",{type:"hidden",id:r,name:r,value:i})})},rr=vr;var fr=T({name:"SessionStorageCard",component:rr,metadata:{author:"PieData"}});var n=require("react");var Ao=require("react/jsx-runtime"),sr=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=n.useState(p);return n.useEffect(()=>{m(p)},[p]),n.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(f,i)},[f,i]),Ao.jsx(A,{card:"DeviceStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{localStorage.removeItem(f),m("")}},children:Ao.jsx("input",{type:"hidden",id:r,name:r,value:i})})},pr=sr;var Cr=T({name:"DeviceStorageCard",component:pr,metadata:{author:"PieData"}});var N=require("react");var To=require("react/jsx-runtime"),hr=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=N.useState(p);return N.useEffect(()=>{m(p)},[p]),N.useEffect(()=>{if(typeof window>"u")return;let U=window.Telegram?.WebApp?.CloudStorage;if(!U)return;U.setItem(f,i)},[f,i]),To.jsx(A,{card:"CloudStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{let U=window.Telegram?.WebApp?.CloudStorage;if(U)U.removeItem(f);m("")}},children:To.jsx("input",{type:"hidden",id:r,name:r,value:i})})},ur=hr;var mr=T({name:"CloudStorageCard",component:ur,metadata:{author:"PieData"}});var b=require("react");var Ho=require("react/jsx-runtime"),er=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I}=o,[i,m]=b.useState(p);return b.useEffect(()=>{m(p)},[p]),b.useEffect(()=>{if(typeof window>"u")return;let U=window.Telegram?.WebApp?.SecureStorage;if(!U)return;U.setItem(f,i)},[f,i]),Ho.jsx(A,{card:"SecureStorageCard",data:o,useSocketioSupport:u,useCentrifugeSupport:C,useMittSupport:d,centrifugeChannel:I,methods:{update:({value:U})=>{m(U)},remove:()=>{let U=window.Telegram?.WebApp?.SecureStorage;if(U)U.removeItem(f);m("")}},children:Ho.jsx("input",{type:"hidden",id:r,name:r,value:i})})},dr=er;var Ur=T({name:"SecureStorageCard",component:dr,metadata:{author:"PieData"}});var B=require("react");var Oo=require("react/jsx-runtime"),of=({data:o,content:r})=>{let{useLoader:f,noReturn:p,returnType:u,useSocketioSupport:C,useCentrifugeSupport:d,useMittSupport:I,centrifugeChannel:i}=o,m=B.useContext(Q),U=B.useContext(G)??$,[S,H]=B.useState(!1),[w,P]=B.useState(null),Z=B.useRef(r),O=B.useContext(a),D=B.useCallback((z)=>{if(z===null)H(!0);else if(H(!1),!p)Z.current=z;if(!p)P(z)},[p]),q=B.useCallback((z)=>{Z.current=z.content,P(z.content)},[]),J=B.useCallback((z)=>{if(z===null)H(!0);else if(H(!1),!p)for(let Do of z)O?.emit(Do.name,Do.data)},[p,O]);if(B.useEffect(()=>{P(r),H(!1)},[r]),!w&&f)return m;return Oo.jsx(A,{card:"AjaxGroupCard",data:o,methods:{changeContent:q},useSocketioSupport:C,useCentrifugeSupport:d,useMittSupport:I,centrifugeChannel:i,children:Oo.jsx(U,{uiConfig:w??Z.current,setUiAjaxConfiguration:u==="events"?J:D})})},ir=of;var Ir=T({name:"AjaxGroupCard",component:ir,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var Lo=require("react");var uo=require("react/jsx-runtime"),rf=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p,url:u,sx:C}=o,d=Lo.useContext(Y),I=Lo.useContext(G)??$;return uo.jsx(A,{card:p,data:o,children:uo.jsx("div",{style:C,id:p,onClick:(m)=>{if(u)if(m.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else d?.(u)},children:uo.jsx(I,{setUiAjaxConfiguration:f,uiConfig:r})})})},Pr=rf;var wr=T({name:"BoxCard",component:Pr,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Sr=require("react");var mo=require("react/jsx-runtime"),ff=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p,sx:u}=o,C=Sr.useContext(G)??$;return mo.jsx(A,{card:p,data:o,children:mo.jsx("div",{style:u,id:p,children:r.map((d,I)=>{return mo.jsx(C,{uiConfig:d,setUiAjaxConfiguration:f},`children-${I}`)})})})},Ar=ff;var Tr=T({name:"OneOfCard",component:Ar,metadata:{author:"Swarm.ing",description:"Different variants"}});
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 Vf,useEffect as $f,useRef as yC}from"react";import{createContext as QC,useContext as wC}from"react";var Zf=globalThis,Q=(f,C)=>{let U=Symbol.for(f);if(!(U in Zf))Zf[U]=C();return Zf[U]};var j=Q("@swarm.ing/pieui:context:pieConfig",()=>QC(null)),p=()=>{let f=wC(j);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},v=()=>{let{apiServer:f}=p();return f},n=v,i=()=>{let{centrifugeServer:f}=p();return f};var N=()=>{let{enableRenderingLog:f}=p();return f},Kf=N;var Of="__piedemo__";import{createContext as AC}from"react";import{Centrifuge as Mf}from"centrifuge";var Lf=Q("@swarm.ing/pieui:centrifuge-cache",()=>new Map),s=(f,C)=>{if(!C)return null;let U=`${f}::${C}`,I=Lf.get(U);if(I)return I;async function H(){let D=await fetch(f+"api/centrifuge/gen_token");if(!D.ok){if(D.status===403)throw new Mf.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${D.status}`)}return(await D.json()).token}let T=new Mf(C,{getToken:H});return Lf.set(U,T),T},_C=Q("@swarm.ing/pieui:context:centrifuge",()=>AC(null)),E=_C;import{io as FC}from"socket.io-client";import{createContext as KC}from"react";var Rf=Q("@swarm.ing/pieui:socket-cache",()=>new Map),t=(f)=>{let C=Rf.get(f);if(C)return C;let U=FC(f,{autoConnect:!1,transports:["websocket"]});return Rf.set(f,U),U},MC=Q("@swarm.ing/pieui:context:socket",()=>KC(null)),y=MC;import LC from"mitt";import{createContext as RC,useCallback as SC,useContext as NC}from"react";function d(){return Q("@swarm.ing/pieui:mitt-emitter",()=>LC())}var Sf=Q("@swarm.ing/pieui:context:mitt",()=>RC(null));function EC(f){let C=NC(Sf);return SC((U,I)=>{(C??d()).emit(`pie${U}_${f}`,I)},[f,C])}var m=Sf;import{jsx as uC,jsxs as xC,Fragment as kC}from"react/jsx-runtime";var mC=({card:f,data:C,children:U,useSocketioSupport:I=!1,useCentrifugeSupport:H=!1,useMittSupport:T=!1,centrifugeChannel:D=void 0,methods:V=void 0,stored:Z=void 0})=>{let O=Kf(),$=yC(V);if($.current=V,O)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",C),console.log("[PieCard] Component name:",C?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:H,mitt:T,centrifugeChannel:D}),console.log("[PieCard] Methods:",V?Object.keys(V):"none"),console.log("[PieCard] Has children:",!!U);let J=Vf(y),X=Vf(E),z=Vf(m);if($f(()=>{if(!J||!I||!$.current||!C.name){if(O&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!J,useSocketioSupport:I,hasMethods:!!$.current,hasDataName:!!C?.name});return}let G=Object.keys($.current??{}).map((o)=>{let B=`pie${o}_${C.name}`;if(O)console.log(`[PieCard] Socket.IO registering event: ${B}`);let A=(Y)=>{$.current?.[o]?.(Y)};return J.on(B,A),[B,A]});return()=>{G.forEach(([o,B])=>{if(O)console.log(`[PieCard] Socket.IO unregistering event: ${o}`);J.off(o,B)})}},[J,C.name,I]),$f(()=>{if(!X||!H||!D||!C.name){if(O&&H)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!X,useCentrifugeSupport:H,hasCentrifugeChannel:!!D,hasMethods:!!$.current,hasDataName:!!C?.name});return}let G=Object.keys($.current??{}).map((o)=>{let B=`pie${o}_${C.name}_${D}`;if(O)console.log(`[PieCard] Centrifuge subscribing to channel: ${B}`);let A=X.newSubscription(B);return A.on("publication",(Y)=>{if(O)console.log(`[PieCard] Centrifuge received data on ${B}:`,Y.data);$.current?.[o]?.(Y.data)}),A.subscribe(),A});return()=>{G.forEach((o)=>{if(O)console.log("[PieCard] Centrifuge unsubscribing from channel");o.unsubscribe(),X.removeSubscription(o)})}},[X,D,C.name,H]),$f(()=>{if(!z||!T||!C.name){if(O&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!z,useMittSupport:T,hasMethods:!!$.current,hasDataName:!!C?.name});return}let q=Object.keys($.current??{}),G={};return q.forEach((o)=>{let B=`pie${o}_${C.name}`,A=(Y)=>{if(O)console.log(`[PieCard] Mitt registering event: ${B}`);$.current?.[o]?.(Y)};G[B]=A,z.on(B,A)}),()=>{Object.entries(G).forEach(([o,B])=>{if(O)console.log(`[PieCard] Mitt unregistering event: ${o}`);z.off(o,B)})}},[z,C.name,T]),O)console.log("[PieCard] Rendering complete, returning children");if(Z!==void 0)return xC(kC,{children:[uC("input",{type:"hidden",name:C.name,value:JSON.stringify(Z)}),U]});return U},P=mC;import{lazy as jC}from"react";var u=new Map;function Nf(f,C){return C.catch(()=>{if(u.get(f)===C)u.delete(f)}),u.set(f,C),C}function zf(f,C){return jC(()=>{if(u.has(C))return u.get(C);return Nf(C,f().then((U)=>U))})}var Ef=async(f,C)=>{if(!C)return;if(u.has(f))return u.get(f);return Nf(f,C().then((U)=>U))};var R=Q("@swarm.ing/pieui:component-registry",()=>new Map),dC=(f)=>{if(!f.name)throw Error("Component registration requires a name");if(!f.component&&!f.loader)throw Error(`Component "${f.name}" requires component or loader`);let C={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!C.component&&C.loader)C.component=zf(C.loader,f.name),C.isLazy=!0;return C};function W(f){let C=dC(f);return R.set(C.name,C),C.component}var bC=(f)=>{f.forEach((C)=>W(C))},pC=(f)=>{R.delete(f)},vC=(f)=>{return R.has(f)},cC=(f)=>{return R.get(f)?.metadata},c=(f)=>{return R.get(f)},gC=()=>{return Array.from(R.keys())},hC=()=>{return R.size},mf=()=>Array.from(R.values()).filter((f)=>f.isLazy&&typeof f.loader==="function").map((f)=>f.name),kf=(f)=>{let C=R.get(f);if(!C?.isLazy||typeof C.loader!=="function")return;return Ef(f,C.loader)},yf=!1,rC=()=>{if(yf||typeof window>"u")return;yf=!0;let f=navigator.connection;if(f?.saveData)return;if(f?.effectiveType&&["slow-2g","2g"].includes(f.effectiveType))return;let C=mf(),U="requestIdleCallback"in window?(H)=>window.requestIdleCallback(H,{timeout:2000}):(H)=>window.setTimeout(H,300),I=(H)=>{if(H>=C.length)return;U(()=>{Promise.resolve().then(()=>kf(C[H])).catch(()=>{}).finally(()=>I(H+1))})};I(0)};import{useContext as uf,memo as TU}from"react";import{createContext as lC}from"react";import{jsx as sC,Fragment as iC}from"react/jsx-runtime";var nC=Q("@swarm.ing/pieui:context:fallback",()=>lC(sC(iC,{}))),K=nC;import{createContext as tC}from"react";var aC=Q("@swarm.ing/pieui:context:lazyError",()=>tC(void 0)),k=aC;import{Component as eC,Suspense as fU}from"react";import{jsx as IU}from"react/jsx-runtime";var CU=2,UU=400;class b extends eC{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(f){if(this.props.onError?.(f),this.state.attempt<CU){let C=UU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((U)=>({failed:!1,attempt:U.attempt+1}))},C)}}componentDidUpdate(f){if(f.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return IU(fU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as of}from"react/jsx-runtime";function HU({uiConfig:f,setUiAjaxConfiguration:C}){let U=uf(K),I=uf(k),H=N();if(H)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!C);let T=c(f.card);if(!T?.component){if(H)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return U}if(H)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let D=T.component,V=of(D,{data:f.data,content:f.content,setUiAjaxConfiguration:C});if(T.isLazy){if(H)console.log("[UI] Rendering lazy component with Suspense:",T.name);return of(b,{name:T.name,fallback:T.fallback?of(T.fallback,{}):U,onError:I,children:V})}if(H)console.log("[UI] Rendering component directly:",T.name);return V}var F=TU(HU);import{useContext as xf}from"react";import{createContext as DU}from"react";var ZU=Q("@swarm.ing/pieui:context:uiRenderer",()=>DU(null)),M=ZU;import{jsx as a}from"react/jsx-runtime";function jf({uiConfig:f,setUiAjaxConfiguration:C}){let U=xf(K),I=xf(k),H=N();if(H)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!C);let T=c(f.card);if(!T?.component){if(H)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return U}if(H)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(H)console.log("[UILoading] Rendering fallback for:",T.name);let Z=T.fallback;return a(Z,{})}if(H)console.log("[UILoading] No fallback, rendering full component:",T.name);let D=T.component,V=a(M.Provider,{value:jf,children:a(D,{data:f.data,content:f.content,setUiAjaxConfiguration:C})});if(T.isLazy)return a(b,{name:T.name,fallback:U,onError:I,children:V});return V}var qf=jf;import{useContext as OU}from"react";import{jsx as Bf}from"react/jsx-runtime";var VU=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I,sx:H}=f,T=OU(M)??F;return Bf(P,{card:I,data:f,children:Bf("div",{style:H,id:I,children:C.map((D,V)=>{return Bf(T,{uiConfig:D,setUiAjaxConfiguration:U},`children-${V}`)})})})},df=VU;var $U=W({name:"SequenceCard",component:df,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as zU}from"react";import{jsx as bf}from"react/jsx-runtime";var oU=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I}=f,H=zU(M)??F;return bf(P,{card:I,data:f,children:C.map((T,D)=>{return bf(H,{uiConfig:T,setUiAjaxConfiguration:U},`children-${D}`)})})},pf=oU;var qU=W({name:"UnionCard",component:pf,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as XU,useState as YU}from"react";import WU from"html-react-parser";import{useCallback as e,useEffect as BU,useRef as Jf,useState as JU}from"react";function GU(){let f=new AudioContext,C=f.createOscillator(),U=C.connect(f.createMediaStreamDestination());C.start();let I=U.stream.getAudioTracks()[0];return I.enabled=!1,I}function Gf(f=null,C){let[U,I]=JU(!1),H=Jf(null),T=Jf(null),D=Jf(null),V=e(async(J,X=!0)=>{if(H.current)Z();let z=new RTCPeerConnection;if(z.onconnectionstatechange=()=>{if(z.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes(z.connectionState))I(!1)},z.ontrack=(w)=>{if(f)f.srcObject=w.streams[0]},X){let w=await navigator.mediaDevices.getUserMedia({audio:!0});z.addTrack(w.getTracks()[0],w)}else{let w=GU();z.addTrack(w)}let q=z.createDataChannel("oai-events");T.current=q,D.current=new Promise((w)=>{q.addEventListener("open",()=>{w()})});let G=await z.createOffer();await z.setLocalDescription(G);let Y=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:G.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await z.setRemoteDescription({type:"answer",sdp:Y}),H.current=z,await D.current},[f]),Z=e(()=>{let J=T.current;if(J)J.close();H.current?.getSenders()?.forEach((X)=>X.track?.stop()),H.current?.close(),I(!1),H.current=null,T.current=null,D.current=null},[f]),O=e((J)=>{let X=T.current;if(!X){console.error("Data channel is not ready",J);return}let z=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),X.send(JSON.stringify(J)),!J.timestamp)J.timestamp=z;C?.(J)},[C,f]),$=e((J)=>{if(!T.current){console.error("Data channel is not ready");return}let z=()=>{O({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),O({type:"response.create"})};if(D.current)D.current.then(z);else z()},[C,f]);return BU(()=>{let J=T.current;if(!J)return;let X=(z)=>{let q=JSON.parse(z.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();C?.(q)};return J.addEventListener("message",X),()=>{J.removeEventListener("message",X)}},[C,f]),{isSessionActive:U,startSession:V,stopSession:Z,sendTextMessage:$}}import{jsx as QU}from"react/jsx-runtime";var PU=({data:f})=>{let{html:C,useSocketioSupport:U,useCentrifugeSupport:I,useMittSupport:H,centrifugeChannel:T}=f,[D,V]=YU(C),{isSessionActive:Z,startSession:O,sendTextMessage:$}=Gf(null,(q)=>{if(console.log(q.type,q.type==="response.output_text.delta"&&q.delta),q.type==="response.output_text.delta"&&q.delta)V((G)=>G+q.delta)});return XU(()=>{V(C)},[C]),QU(P,{card:"HTMLEmbedCard",data:f,methods:{update:(q)=>{V(q.value)},generateUsingAI:async(q)=>{try{if(!Z&&q.token)await O(q.token,!1);$(q.prompt)}catch(G){console.error("Failed to generate using AI",G)}},initializeAI:async(q)=>{if(!Z&&q.token)await O(q.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:U,useMittSupport:H,centrifugeChannel:T,children:WU(D)})},vf=PU;var wU=W({name:"HTMLEmbedCard",component:vf,metadata:{author:"Swarm.ing"}});import{useEffect as AU,useState as _U}from"react";import{jsx as cf}from"react/jsx-runtime";var FU=({data:f})=>{let{name:C,value:U,useSocketioSupport:I,useCentrifugeSupport:H,useMittSupport:T,centrifugeChannel:D}=f,[V,Z]=_U(U);return AU(()=>{Z(U)},[U]),cf(P,{card:"HiddenCard",data:f,useSocketioSupport:I,useCentrifugeSupport:H,useMittSupport:T,centrifugeChannel:D,methods:{update:({value:O})=>{Z(O)}},children:cf("input",{type:"hidden",id:C,name:C,value:V})})},gf=FU;var KU=W({name:"HiddenCard",component:gf,metadata:{author:"Swarm.ing"}});import{useContext as hf,useEffect as RU}from"react";import{createContext as MU}from"react";var LU=Q("@swarm.ing/pieui:context:navigate",()=>MU(void 0)),S=LU;import{jsx as EU,Fragment as NU}from"react/jsx-runtime";var SU=({data:f})=>{let{url:C}=f,U=hf(S),I=hf(K);return RU(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(C))window.location.href=C;else U?.(C)},[C,U]),EU(NU,{children:I})},rf=SU;var yU=W({name:"AutoRedirectCard",component:rf,metadata:{author:"Swarm.ing"}});import{Bounce as mU,Slide as kU,Zoom as uU,Flip as xU}from"react-toastify";import{toast as jU,ToastContainer as dU}from"react-toastify";import{useContext as bU,useMemo as pU,useRef as vU}from"react";import{jsx as Xf,Fragment as nU}from"react/jsx-runtime";var cU={bounce:mU,slide:kU,zoom:uU,flip:xU},gU=(f)=>{let C={...f,type:f.alertType,transition:f.transition?cU[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};jU(f.message,C)},hU=(f)=>{console.log("Log event",f)},rU=(f)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let C=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(I){console.error("[IOEventsCard] Failed to show notification",I)}},U=window.Notification.permission;if(U==="granted"){C();return}if(U==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")C()})},lU=({data:f})=>{let{useCentrifugeSupport:C,useSocketioSupport:U,useMittSupport:I,centrifugeChannel:H}=f,T=bU(S),D=vU(T);D.current=T;let V=pU(()=>({alert:gU,log:hU,push:rU,redirect:(Z)=>{if(Z.to){let O=Z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else D.current?.(O)}else window.location.reload()},reload:(Z)=>{if(Z.to){let O=Z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else D.current?.(O)}else window.location.reload()}}),[]);return Xf(nU,{children:Xf(P,{card:"IOEventsCard",data:f,useCentrifugeSupport:C,useSocketioSupport:U,useMittSupport:I,centrifugeChannel:H,methods:V,children:Xf(dU,{})})})},lf=lU;var iU=W({name:"IOEventsCard",component:lf,metadata:{author:"Swarm.ing"}});import{useEffect as nf,useState as sU}from"react";import{jsx as sf}from"react/jsx-runtime";var tU=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=sU(I);return nf(()=>{O(I)},[I]),nf(()=>{if(typeof window>"u")return;sessionStorage.setItem(U,Z)},[U,Z]),sf(P,{card:"SessionStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{sessionStorage.removeItem(U),O("")}},children:sf("input",{type:"hidden",id:C,name:C,value:Z})})},tf=tU;var aU=W({name:"SessionStorageCard",component:tf,metadata:{author:"PieData"}});import{useEffect as af,useState as eU}from"react";import{jsx as ef}from"react/jsx-runtime";var fI=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=eU(I);return af(()=>{O(I)},[I]),af(()=>{if(typeof window>"u")return;localStorage.setItem(U,Z)},[U,Z]),ef(P,{card:"DeviceStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{localStorage.removeItem(U),O("")}},children:ef("input",{type:"hidden",id:C,name:C,value:Z})})},fC=fI;var CI=W({name:"DeviceStorageCard",component:fC,metadata:{author:"PieData"}});import{useEffect as CC,useState as UI}from"react";import{jsx as UC}from"react/jsx-runtime";var II=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=UI(I);return CC(()=>{O(I)},[I]),CC(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.CloudStorage;if(!$)return;$.setItem(U,Z)},[U,Z]),UC(P,{card:"CloudStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{let $=window.Telegram?.WebApp?.CloudStorage;if($)$.removeItem(U);O("")}},children:UC("input",{type:"hidden",id:C,name:C,value:Z})})},IC=II;var TI=W({name:"CloudStorageCard",component:IC,metadata:{author:"PieData"}});import{useEffect as TC,useState as HI}from"react";import{jsx as HC}from"react/jsx-runtime";var DI=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=HI(I);return TC(()=>{O(I)},[I]),TC(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.SecureStorage;if(!$)return;$.setItem(U,Z)},[U,Z]),HC(P,{card:"SecureStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{let $=window.Telegram?.WebApp?.SecureStorage;if($)$.removeItem(U);O("")}},children:HC("input",{type:"hidden",id:C,name:C,value:Z})})},DC=DI;var ZI=W({name:"SecureStorageCard",component:DC,metadata:{author:"PieData"}});import{useCallback as Yf,useContext as Wf,useEffect as OI,useRef as VI,useState as ZC}from"react";import{jsx as OC}from"react/jsx-runtime";var $I=({data:f,content:C})=>{let{useLoader:U,noReturn:I,returnType:H,useSocketioSupport:T,useCentrifugeSupport:D,useMittSupport:V,centrifugeChannel:Z}=f,O=Wf(K),$=Wf(M)??F,[J,X]=ZC(!1),[z,q]=ZC(null),G=VI(C),o=Wf(m),B=Yf((w)=>{if(w===null)X(!0);else if(X(!1),!I)G.current=w;if(!I)q(w)},[I]),A=Yf((w)=>{G.current=w.content,q(w.content)},[]),Y=Yf((w)=>{if(w===null)X(!0);else if(X(!1),!I)for(let r of w)o?.emit(r.name,r.data)},[I,o]);if(OI(()=>{q(C),X(!1)},[C]),!z&&U)return O;return OC(P,{card:"AjaxGroupCard",data:f,methods:{changeContent:A},useSocketioSupport:T,useCentrifugeSupport:D,useMittSupport:V,centrifugeChannel:Z,children:OC($,{uiConfig:z??G.current,setUiAjaxConfiguration:H==="events"?Y:B})})},VC=$I;var zI=W({name:"AjaxGroupCard",component:VC,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as $C}from"react";import{jsx as Pf}from"react/jsx-runtime";var oI=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I,url:H,sx:T}=f,D=$C(S),V=$C(M)??F;return Pf(P,{card:I,data:f,children:Pf("div",{style:T,id:I,onClick:(O)=>{if(H)if(O.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else D?.(H)},children:Pf(V,{setUiAjaxConfiguration:U,uiConfig:C})})})},zC=oI;var qI=W({name:"BoxCard",component:zC,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as BI}from"react";import{jsx as Qf}from"react/jsx-runtime";var JI=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I,sx:H}=f,T=BI(M)??F;return Qf(P,{card:I,data:f,children:Qf("div",{style:H,id:I,children:C.map((D,V)=>{return Qf(T,{uiConfig:D,setUiAjaxConfiguration:U},`children-${V}`)})})})},oC=JI;var GI=W({name:"OneOfCard",component:oC,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as h}from"react";import{QueryClient as KI,QueryClientProvider as MI,useQuery as LI}from"@tanstack/react-query";import{useContext as WI,useEffect as PI}from"react";import{useEffect as XI,useState as YI}from"react";var ff=new Map,Cf=new Map;function Uf(f,C){let U=`${f}::${C}`,I=f?ff.get(U):void 0,[H,T]=YI(I??null);return XI(()=>{if(!f)return;if(ff.has(U)){T(ff.get(U));return}let D=Cf.get(U);if(!D)D=fetch(f+`api/support/${C}`,{method:"GET"}).then((Z)=>Z.json()).then((Z)=>{return ff.set(U,Z),Cf.delete(U),Z}).catch((Z)=>{throw Cf.delete(U),Z}),Cf.set(U,D);let V=!1;return D.then((Z)=>{if(!V)T(Z)}).catch(()=>{}),()=>{V=!0}},[f,C,U]),H}var g=Q("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function qC(){g.resolve?.()}function wf(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!g.promise)g.promise=new Promise((f)=>{g.resolve=()=>{f()}});return g.promise}var QI=({children:f})=>{let C=WI(y),U=n(),I=Uf(U,"socketIO"),H=(T)=>{if(typeof window<"u")window.sid=T.sid,qC(),console.log(`SocketIO initialized: ${window.sid}`)};return PI(()=>{if(!C)return;let T=()=>{console.log("SocketIO connected")},D=(V)=>{console.log(`SocketIO disconnected: ${V}`),C.connect()};if(I)C.on("pieinit",H),C.on("connect",T),C.on("disconnect",D),C.connect();return()=>{if(I)C.off("pieinit",H),C.off("connect",T),C.off("disconnect",D),C.disconnect()}},[C,I]),f},If=QI;import{useContext as wI,useEffect as AI}from"react";var _I=({children:f})=>{let C=wI(E),U=n(),I=Uf(U,"centrifuge");return AI(()=>{if(!C)return;let H=()=>{console.log("Centrifuge connected")},T=(D)=>{console.log("Centrifuge disconnected:",D)};if(I)C.on("connected",H),C.on("disconnected",T),C.connect();return()=>{if(I)C.disconnect()}},[C,I]),f},Tf=_I;import{createAxiosDateTransformer as RI}from"axios-date-transformer";import{jsx as FI}from"react/jsx-runtime";function BC(f,C,U){if(!C)return U;let I=f.replace(/^\//,""),H=C[I];if(!H)return U;return FI(qf,{uiConfig:H})}import{jsx as _,Fragment as EI}from"react/jsx-runtime";var SI=({location:f,fallback:C,piecache:U,onError:I,queryOptions:H,disableGlobalForm:T})=>{let D=v(),V=i(),Z=N(),O=h(()=>RI({baseURL:D||""}),[D]),$=h(()=>d(),[]),J=h(()=>D?t(D):null,[D]),X=h(()=>D?s(D,V):null,[D,V]),{data:z,isLoading:q,error:G}=LI({queryKey:["uiConfig",f.pathname+f.search,D],enabled:!!D,queryFn:async()=>{let B=new URLSearchParams(f.search);B.set("__pieroot","web");let A="/api/content"+f.pathname+"?"+B.toString();if(Z)console.log("[PieRoot] Fetching UI configuration from:",A);let Y=await O.get(A,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(Z)console.log("[PieRoot] Received UI configuration:",Y.data);return Y.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(B)=>Math.min(1000*2**B,30000),...H}),o=BC(f.pathname,U,C);if(!D)return o??null;if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",V),console.log("[PieRoot] Fallback provided:",!!C),console.log("[PieRoot] Piecache provided:",!!U);if(G){if(Z)console.error("[PieRoot] Error fetching UI configuration:",G),console.error("[PieRoot] Error details:",{message:G.message,status:G.response?.status,data:G.response?.data});return I?.(G),o}if(q||!z){if(Z)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!z});return o}if(Z)console.log("[PieRoot] UI configuration loaded successfully:",z),console.log("[PieRoot] Rendering UI with configuration");return _(m.Provider,{value:$,children:_(y.Provider,{value:J,children:_(E.Provider,{value:X,children:_(K.Provider,{value:C??_(EI,{}),children:_(If,{children:_(Tf,{children:T?_(F,{uiConfig:z}):_("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:_(F,{uiConfig:z})})})})})})})})},NI=(f)=>{let C=h(()=>new KI,[]),U=f.queryClient??C;return _(S.Provider,{value:f.onNavigate,children:_(j.Provider,{value:f.config,children:_(k.Provider,{value:f.onError,children:_(MI,{client:U,children:_(SI,{...f})})})})})},Af=NI;import{useMemo as _f,useState as yI}from"react";import{QueryClient as mI,QueryClientProvider as kI}from"@tanstack/react-query";import{jsx as L,Fragment as jI}from"react/jsx-runtime";var uI=({location:f,fallback:C,children:U,disableGlobalForm:I})=>{let H=v(),T=i(),D=N(),V=_f(()=>d(),[]),Z=_f(()=>H?t(H):null,[H]),O=_f(()=>H?s(H,T):null,[H,T]);if(D)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",H),console.log("[PieRoot] CENTRIFUGE_SERVER:",T),console.log("[PieRoot] Fallback provided:",!!C);return L(m.Provider,{value:V,children:L(y.Provider,{value:Z,children:L(E.Provider,{value:O,children:L(K.Provider,{value:C??L(jI,{}),children:L(If,{children:L(Tf,{children:I?U:L("form",{id:"piedata_global_form",action:H+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:U})})})})})})})},xI=(f)=>{let[C]=yI(()=>new mI),U=f.queryClient??C;return L(S.Provider,{value:f.onNavigate,children:L(j.Provider,{value:f.config,children:L(k.Provider,{value:f.onError,children:L(kI,{client:U,children:L(uI,{...f})})})})})},dI=xI;import{useMemo as bI}from"react";import{jsx as JC}from"react/jsx-runtime";var pI=JC("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),vI=({apiServer:f,pathname:C="/",search:U="",centrifugeServer:I,fallback:H,enableRenderingLog:T=!1})=>{let D=f??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",V=bI(()=>({apiServer:D,centrifugeServer:I,enableRenderingLog:T,pageProcessor:"web"}),[D,I,T]);return JC(Af,{location:{pathname:C,search:U},config:V,fallback:H??pI,onNavigate:(O)=>{if(typeof window<"u")window.history.pushState(null,"",O)}})},cI=vI;import{useMemo as gI}from"react";var GC=(f,C=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let U=document.getElementsByName(f);if(!U.length){if(C)console.warn(`No input found with name ${f}`);return[]}let I=U[0];if(I instanceof HTMLInputElement){if(I.type==="file"&&I.files)return Array.from(I.files);return[I.value]}if(I instanceof HTMLTextAreaElement)return[I.value];return[]},hI=(f,C={},U=[],I,H)=>{let T=H?.renderingLogEnabled??!1,D=H?.timeout,V=H?.retryPolicy,Z=V?.maxRetries??0,O=V?.baseDelay??1000,$=V?.retryOn??[502,503,504];if(T)console.log("Registering AJAX: ",I,C,U);return async(J={})=>{if(typeof window>"u"||typeof document>"u"){if(T)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let X=H?.apiServer;if(!X){if(T)console.warn("AJAX skipped: apiServer is missing");return}if(!I||!f){if(T)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(U.includes("sid"))await wf();let z=new FormData;for(let[o,B]of Object.entries({...C,...J}))z.append(o,B);for(let o of U)for(let B of GC(o,T))z.append(o,B);let q=X+"api/ajax_content"+I;f(null);let G;for(let o=0;o<=Z;o++){if(o>0){let Y=O*2**(o-1);if(T)console.log(`AJAX retry ${o}/${Z} after ${Y}ms`);await new Promise((w)=>setTimeout(w,Y))}let B=D!=null?new AbortController:null,A=B&&setTimeout(()=>B.abort(),D);try{let Y=await fetch(q,{method:"POST",body:z,signal:B?.signal});if(A)clearTimeout(A);if(!Y.ok&&$.includes(Y.status)&&o<Z){G=Error(`HTTP ${Y.status}`);continue}let r=(Y.headers.get("content-type")||"").includes("application/json");if(!!Y.body?.getReader&&!r){let l=Y.body.getReader(),XC=new TextDecoder,x="";while(!0){let{done:Hf,value:YC}=await l.read();if(Hf)break;x+=XC.decode(YC,{stream:!0});let Ff=x.split(`
3
- `);x=Ff.pop()??"";for(let WC of Ff){let Df=WC.trim();if(!Df)continue;try{let PC=JSON.parse(Df);f([PC])}catch{if(T)console.warn("Failed to parse streamed line:",Df)}}}if(x.trim())try{let Hf=JSON.parse(x);f([Hf])}catch{if(T)console.warn("Failed to parse final streamed line:",x)}return{}}else{let l=await Y.json();return f(l),l}}catch(Y){if(A)clearTimeout(A);if(G=Y,o<Z)continue;if(T)console.error("AJAX request failed:",Y);return f(null),Y}}if(T)console.error("AJAX request failed after retries:",G);return f(null),G}},rI=(f,C={},U=[],I,H)=>{let{apiServer:T,enableRenderingLog:D}=p(),V=JSON.stringify(C),Z=JSON.stringify(U),O=JSON.stringify(H);return gI(()=>hI(f,C,U,I,{apiServer:T,renderingLogEnabled:D,timeout:H?.timeout,retryPolicy:H?.retryPolicy}),[f,V,Z,I,T,D,O])};import{clsx as lI}from"clsx";import{twMerge as nI}from"tailwind-merge";function iI(...f){return nI(lI(f))}var sI=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var tI=(f,C)=>`${f}${Of}${C}`;export{EC as usePieEmit,rI as useAjaxSubmit,pC as unregisterComponent,zf as trackLazy,sI as submitGlobalForm,R as registry,W as registerPieComponent,bC as registerMultipleComponents,GC as readAjaxKey,kf as preloadComponent,rC as prefetchLazyComponents,tI as pieName,vC as hasComponent,hC as getRegistrySize,c as getRegistryEntry,mf as getLazyComponentNames,d as getEmitter,cC as getComponentMeta,gC as getAllRegisteredComponents,iI as cn,qU as UnionCard,M as UIRendererContext,qf as UILoading,F as UI,y as SocketIOContext,aU as SessionStorageCard,$U as SequenceCard,ZI as SecureStorageCard,Af as PieRoot,cI as PiePreviewRoot,j as PieConfigContext,P as PieCard,dI as PieBaseRoot,Of as PIEBREAK,GI as OneOfCard,m as MittContext,iU as IOEventsCard,KU as HiddenCard,wU as HTMLEmbedCard,K as FallbackContext,CI as DeviceStorageCard,TI as CloudStorageCard,E as CentrifugeIOContext,qI as BoxCard,yU as AutoRedirectCard,zI as AjaxGroupCard};
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};