@swarm.ing/pieui 2.0.34 → 2.1.1

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 (44) hide show
  1. package/dist/agent/index.d.ts +1 -0
  2. package/dist/agent/index.d.ts.map +1 -1
  3. package/dist/agent/index.esm.js +1 -1
  4. package/dist/agent/index.js +1 -1
  5. package/dist/cli.js +273 -43
  6. package/dist/code/args.d.ts +1 -1
  7. package/dist/code/args.d.ts.map +1 -1
  8. package/dist/code/commands/createPieApp.d.ts.map +1 -1
  9. package/dist/code/commands/registry.d.ts +8 -0
  10. package/dist/code/commands/registry.d.ts.map +1 -0
  11. package/dist/code/types.d.ts +5 -0
  12. package/dist/code/types.d.ts.map +1 -1
  13. package/dist/components/LazyBoundary/index.d.ts +43 -0
  14. package/dist/components/LazyBoundary/index.d.ts.map +1 -0
  15. package/dist/components/PieBaseRoot/index.d.ts.map +1 -1
  16. package/dist/components/PieMaxRoot/index.d.ts.map +1 -1
  17. package/dist/components/PiePreviewRoot/index.d.ts +37 -0
  18. package/dist/components/PiePreviewRoot/index.d.ts.map +1 -0
  19. package/dist/components/PieRoot/index.d.ts.map +1 -1
  20. package/dist/components/PieRoot/types/index.d.ts +19 -3
  21. package/dist/components/PieRoot/types/index.d.ts.map +1 -1
  22. package/dist/components/PieTelegramRoot/index.d.ts.map +1 -1
  23. package/dist/components/UI/index.d.ts.map +1 -1
  24. package/dist/components/UILoading/index.d.ts.map +1 -1
  25. package/dist/components/index.esm.js +1 -1
  26. package/dist/components/index.js +1 -1
  27. package/dist/index.d.ts +4 -6
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.esm.js +2 -2
  30. package/dist/index.js +2 -2
  31. package/dist/max/index.d.ts +12 -0
  32. package/dist/max/index.d.ts.map +1 -0
  33. package/dist/max/index.esm.js +2 -0
  34. package/dist/max/index.js +2 -0
  35. package/dist/telegram/index.d.ts +12 -0
  36. package/dist/telegram/index.d.ts.map +1 -0
  37. package/dist/telegram/index.esm.js +2 -0
  38. package/dist/telegram/index.js +2 -0
  39. package/dist/util/lazy.d.ts.map +1 -1
  40. package/dist/util/lazyError.d.ts +9 -0
  41. package/dist/util/lazyError.d.ts.map +1 -0
  42. package/dist/util/registry.d.ts +31 -7
  43. package/dist/util/registry.d.ts.map +1 -1
  44. package/package.json +26 -11
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieBaseRoot/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AA6D1C;;;;;;;;;;GAUG;AACH,QAAA,MAAM,WAAW,GAAI,OAAO,gBAAgB,gCAY3C,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieBaseRoot/index.tsx"],"names":[],"mappings":"AAoBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AA6D1C;;;;;;;;;;GAUG;AACH,QAAA,MAAM,WAAW,GAAI,OAAO,gBAAgB,gCAe3C,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieMaxRoot/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAOtC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAmL/C;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAYtC,CAAA;AAED,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieMaxRoot/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAOtC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAoL/C;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAetC,CAAA;AAED,eAAe,UAAU,CAAA"}
@@ -0,0 +1,37 @@
1
+ import { type ReactNode } from 'react';
2
+ /**
3
+ * Props for {@link PiePreviewRoot}.
4
+ */
5
+ export interface PiePreviewRootProps {
6
+ /**
7
+ * Base URL of the PieUI backend (must end with `/`). Defaults to
8
+ * `process.env.PIE_API_SERVER`. When used with `pie card show` /
9
+ * `pieui card show`, the dev server is launched with this pointed at the
10
+ * ephemeral preview backend.
11
+ */
12
+ apiServer?: string;
13
+ /** Route fetched from the backend. The preview backend serves at `/`. */
14
+ pathname?: string;
15
+ /** Query string for the fetch / react-query key. */
16
+ search?: string;
17
+ /** Optional Centrifuge URL (preview works without real-time). */
18
+ centrifugeServer?: string;
19
+ /** Node shown while the card config loads or on fetch error. */
20
+ fallback?: ReactNode;
21
+ /** Enable PieUI's verbose `[PieRoot]` console logging. */
22
+ enableRenderingLog?: boolean;
23
+ }
24
+ /**
25
+ * Ungated, host-chrome-free root for previewing a single card.
26
+ *
27
+ * Wraps {@link PieRoot} (the plain web root — `pageProcessor: "web"`, no
28
+ * Telegram/MAX host integration) with preview-friendly defaults: it fetches
29
+ * the card config from `{apiServer}api/content{pathname}` and renders it with
30
+ * none of an application's auth/lock/boot providers. Drop it into a dedicated
31
+ * route (e.g. `app/__pieshow__/page.tsx`) — after importing the app's card
32
+ * registry — so `pie card show` / `pieui card show` can render an arbitrary
33
+ * card without the app's gating screens taking over.
34
+ */
35
+ declare const PiePreviewRoot: ({ apiServer, pathname, search, centrifugeServer, fallback, enableRenderingLog, }: PiePreviewRootProps) => import("react").JSX.Element;
36
+ export default PiePreviewRoot;
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PiePreviewRoot/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAK/C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAcD;;;;;;;;;;GAUG;AACH,QAAA,MAAM,cAAc,GAAI,kFAOrB,mBAAmB,gCAgCrB,CAAA;AAED,eAAe,cAAc,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieRoot/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAmLtC;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,OAAO,GAAI,OAAO,YAAY,gCAYnC,CAAA;AAED,eAAe,OAAO,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieRoot/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAoLtC;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,OAAO,GAAI,OAAO,YAAY,gCAmBnC,CAAA;AAED,eAAe,OAAO,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { PieConfig, UIConfigType } from '../../../types';
3
- import { UseQueryOptions } from '@tanstack/react-query';
3
+ import { QueryClient, UseQueryOptions } from '@tanstack/react-query';
4
4
  import { AxiosError } from 'axios';
5
5
  /**
6
6
  * Extra options merged into the internal `useQuery` call that fetches the
@@ -33,8 +33,16 @@ export interface PieRootProps {
33
33
  * via `UILoading` instead of the plain `fallback`.
34
34
  */
35
35
  piecache?: Record<string, UIConfigType>;
36
- /** Invoked when the UI configuration request throws. */
37
- onError?: () => void;
36
+ /**
37
+ * Invoked on a render-blocking error: either the UI-configuration request
38
+ * throws, or a lazy (code-split) card's chunk fails to load after the
39
+ * internal boundary's retries. The triggering error is passed when
40
+ * available. Use it to recover from a stale deploy — e.g. reload the page
41
+ * once so the fresh asset manifest is fetched. Without it, a fetch failure
42
+ * shows the `fallback` and a permanently-failing chunk shows the card's
43
+ * skeleton.
44
+ */
45
+ onError?: (error?: unknown) => void;
38
46
  /**
39
47
  * Navigation handler forwarded through `NavigateContext` so PieUI
40
48
  * components can route via the host application (Next.js router,
@@ -45,6 +53,14 @@ export interface PieRootProps {
45
53
  config: PieConfig;
46
54
  /** Optional react-query overrides; see {@link PieQueryOptions}. */
47
55
  queryOptions?: PieQueryOptions;
56
+ /**
57
+ * Optional host-supplied react-query `QueryClient`. Pass a stable
58
+ * (module-singleton) client so the fetched UI-config cache survives a
59
+ * remount of the root — otherwise a fresh client is created per mount and
60
+ * every cached page config is discarded (causing a refetch/flash). When
61
+ * omitted, a per-mount client is used (previous behaviour).
62
+ */
63
+ queryClient?: QueryClient;
48
64
  /**
49
65
  * When `true`, the implicit `<form id="piedata_global_form">` wrapper is
50
66
  * not rendered. Use this when the host application owns its own form
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/PieRoot/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,IAAI,CAC9B,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,EACzC,UAAU,GAAG,SAAS,GAAG,SAAS,CACrC,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB;;;;;OAKG;IACH,QAAQ,EAAE;QACN,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;KACjB,CAAA;IACD;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACvC,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,oEAAoE;IACpE,MAAM,EAAE,SAAS,CAAA;IACjB,mEAAmE;IACnE,YAAY,CAAC,EAAE,eAAe,CAAA;IAC9B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC9B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/PieRoot/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,IAAI,CAC9B,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,EACzC,UAAU,GAAG,SAAS,GAAG,SAAS,CACrC,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB;;;;;OAKG;IACH,QAAQ,EAAE;QACN,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;KACjB,CAAA;IACD;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACvC;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IACnC;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,oEAAoE;IACpE,MAAM,EAAE,SAAS,CAAA;IACjB,mEAAmE;IACnE,YAAY,CAAC,EAAE,eAAe,CAAA;IAC9B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieTelegramRoot/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAOtC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAqL/C;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAY3C,CAAA;AAED,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieTelegramRoot/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAOtC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAsL/C;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAiB3C,CAAA;AAED,eAAe,eAAe,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/UI/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAEtE,OAAO,EAAwB,SAAS,EAAQ,MAAM,OAAO,CAAA;AAI7D,iBAAS,EAAE,CAAC,EACR,QAAQ,EACR,sBAAsB,GACzB,EAAE;IACC,QAAQ,EAAE,YAAY,CAAA;IACtB,sBAAsB,CAAC,EAAE,0BAA0B,CAAA;CACtD,+TAiEA;;AAED,wBAAuB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/UI/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAEtE,OAAO,EAAc,SAAS,EAAQ,MAAM,OAAO,CAAA;AAMnD,iBAAS,EAAE,CAAC,EACR,QAAQ,EACR,sBAAsB,GACzB,EAAE;IACC,QAAQ,EAAE,YAAY,CAAA;IACtB,sBAAsB,CAAC,EAAE,0BAA0B,CAAA;CACtD,+TAmEA;;AAED,wBAAuB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/UILoading/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAEtE,OAAO,EAAwB,SAAS,EAAE,MAAM,OAAO,CAAA;AAKvD,iBAAS,SAAS,CAAC,EACf,QAAQ,EACR,sBAAsB,GACzB,EAAE;IACC,QAAQ,EAAE,YAAY,CAAA;IACtB,sBAAsB,CAAC,EAAE,0BAA0B,CAAA;CACtD,+TAsEA;AAED,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/UILoading/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAEtE,OAAO,EAAc,SAAS,EAAE,MAAM,OAAO,CAAA;AAO7C,iBAAS,SAAS,CAAC,EACf,QAAQ,EACR,sBAAsB,GACzB,EAAE;IACC,QAAQ,EAAE,YAAY,CAAA;IACtB,sBAAsB,CAAC,EAAE,0BAA0B,CAAA;CACtD,+TA2EA;AAED,eAAe,SAAS,CAAA"}
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{useContext as J,useEffect as X,useRef as Wo}from"react";import{createContext as Bo,useContext as Vo}from"react";var $o=Bo(null),ao=()=>{let o=Vo($o);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var $=()=>{let{enableRenderingLog:o}=ao();return o},E=$;import{createContext as qo}from"react";import{Centrifuge as Af}from"centrifuge";var Go=qo(null),b=Go;import{io as Tf}from"socket.io-client";import{createContext as Fo}from"react";var Jo=Fo(null),N=Jo;import Lf from"mitt";import{createContext as Xo,useCallback as Vf,useContext as $f}from"react";var Qo=Xo(null);var a=Qo;import{jsx as Mo,jsxs as Ro,Fragment as yo}from"react/jsx-runtime";var Yo=({card:o,data:r,children:C,useSocketioSupport:f=!1,useCentrifugeSupport:p=!1,useMittSupport:i=!1,centrifugeChannel:d=void 0,methods:S=void 0,stored:U=void 0})=>{let m=E(),u=Wo(S);if(u.current=S,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:f,centrifuge:p,mitt:i,centrifugeChannel:d}),console.log("[PieCard] Methods:",S?Object.keys(S):"none"),console.log("[PieCard] Has children:",!!C);let P=J(N),n=J(b),l=J(a);if(X(()=>{if(!P||!f||!u.current||!r.name){if(m&&f)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!P,useSocketioSupport:f,hasMethods:!!u.current,hasDataName:!!r?.name});return}let O=Object.keys(u.current??{}).map((g)=>{let T=`pie${g}_${r.name}`;if(m)console.log(`[PieCard] Socket.IO registering event: ${T}`);let D=(z)=>{u.current?.[g]?.(z)};return P.on(T,D),[T,D]});return()=>{O.forEach(([g,T])=>{if(m)console.log(`[PieCard] Socket.IO unregistering event: ${g}`);P.off(g,T)})}},[P,r.name,f]),X(()=>{if(!n||!p||!d||!r.name){if(m&&p)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!n,useCentrifugeSupport:p,hasCentrifugeChannel:!!d,hasMethods:!!u.current,hasDataName:!!r?.name});return}let O=Object.keys(u.current??{}).map((g)=>{let T=`pie${g}_${r.name}_${d}`;if(m)console.log(`[PieCard] Centrifuge subscribing to channel: ${T}`);let D=n.newSubscription(T);return D.on("publication",(z)=>{if(m)console.log(`[PieCard] Centrifuge received data on ${T}:`,z.data);u.current?.[g]?.(z.data)}),D.subscribe(),D});return()=>{O.forEach((g)=>{if(m)console.log("[PieCard] Centrifuge unsubscribing from channel");g.unsubscribe(),n.removeSubscription(g)})}},[n,d,r.name,p]),X(()=>{if(!l||!i||!r.name){if(m&&i)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!l,useMittSupport:i,hasMethods:!!u.current,hasDataName:!!r?.name});return}let I=Object.keys(u.current??{}),O={};return I.forEach((g)=>{let T=`pie${g}_${r.name}`,D=(z)=>{if(m)console.log(`[PieCard] Mitt registering event: ${T}`);u.current?.[g]?.(z)};O[T]=D,l.on(T,D)}),()=>{Object.entries(O).forEach(([g,T])=>{if(m)console.log(`[PieCard] Mitt unregistering event: ${g}`);l.off(g,T)})}},[l,r.name,i]),m)console.log("[PieCard] Rendering complete, returning children");if(U!==void 0)return Ro(yo,{children:[Mo("input",{type:"hidden",name:r.name,value:JSON.stringify(U)}),C]});return C},A=Yo;import{lazy as Ko}from"react";var Q=new Map;function c(o,r){return Ko(()=>{if(Q.has(r))return Q.get(r);let C=o().then((f)=>f);return Q.set(r,C),C})}var j=new Map,_o=(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=c(r.loader,o.name),r.loader=void 0,r.isLazy=!0;return r};function w(o){let r=_o(o);return j.set(r.name,r),r.component}var q=(o)=>{return j.get(o)};import{Suspense as bo,useContext as No,memo as co}from"react";import{createContext as ko}from"react";import{jsx as Eo,Fragment as xo}from"react/jsx-runtime";var to=ko(Eo(xo,{})),B=to;import{jsx as W}from"react/jsx-runtime";function jo({uiConfig:o,setUiAjaxConfiguration:r}){let C=No(B),f=$();if(f)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 p=q(o.card);if(!p?.component){if(f)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return C}if(f)console.log("[UI] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata});let i=p.component,d=W(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(p.isLazy){if(f)console.log("[UI] Rendering lazy component with Suspense:",p.name);return W(bo,{fallback:p.fallback?W(p.fallback,{}):C,children:d},`${p.name}`)}if(f)console.log("[UI] Rendering component directly:",p.name);return d}var L=co(jo);import{Suspense as ho,useContext as eo}from"react";import{createContext as vo}from"react";var so=vo(null),Z=so;import{jsx as G}from"react/jsx-runtime";function v({uiConfig:o,setUiAjaxConfiguration:r}){let C=eo(B),f=$();if(f)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 p=q(o.card);if(!p?.component){if(f)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return C}if(f)console.log("[UILoading] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata,hasFallback:!!p.fallback});if(p.fallback){if(f)console.log("[UILoading] Rendering fallback for:",p.name);let S=p.fallback;return G(S,{})}if(f)console.log("[UILoading] No fallback, rendering full component:",p.name);let i=p.component,d=G(Z.Provider,{value:v,children:G(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(p.isLazy)return G(ho,{fallback:C,children:d},`${p.name}`);return d}var or=v;import{useContext as rr}from"react";import{jsx as Y}from"react/jsx-runtime";var fr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,sx:p}=o,i=rr(Z)??L;return Y(A,{card:f,data:o,children:Y("div",{style:p,id:f,children:r.map((d,S)=>{return Y(i,{uiConfig:d,setUiAjaxConfiguration:C},`children-${S}`)})})})},s=fr;var pr=w({name:"SequenceCard",component:s,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Cr}from"react";import{jsx as h}from"react/jsx-runtime";var mr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f}=o,p=Cr(Z)??L;return h(A,{card:f,data:o,children:r.map((i,d)=>{return h(p,{uiConfig:i,setUiAjaxConfiguration:C},`children-${d}`)})})},e=mr;var dr=w({name:"UnionCard",component:e,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as Sr,useState as Ir}from"react";import lr from"html-react-parser";import{useCallback as F,useEffect as ir,useRef as y,useState as ur}from"react";function Ur(){let o=new AudioContext,r=o.createOscillator(),C=r.connect(o.createMediaStreamDestination());r.start();let f=C.stream.getAudioTracks()[0];return f.enabled=!1,f}function M(o=null,r){let[C,f]=ur(!1),p=y(null),i=y(null),d=y(null),S=F(async(P,n=!0)=>{if(p.current)U();let l=new RTCPeerConnection;if(l.onconnectionstatechange=()=>{if(l.connectionState==="connected")f(!0);else if(["disconnected","failed","closed"].includes(l.connectionState))f(!1)},l.ontrack=(H)=>{if(o)o.srcObject=H.streams[0]},n){let H=await navigator.mediaDevices.getUserMedia({audio:!0});l.addTrack(H.getTracks()[0],H)}else{let H=Ur();l.addTrack(H)}let I=l.createDataChannel("oai-events");i.current=I,d.current=new Promise((H)=>{I.addEventListener("open",()=>{H()})});let O=await l.createOffer();await l.setLocalDescription(O);let z=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:O.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await l.setRemoteDescription({type:"answer",sdp:z}),p.current=l,await d.current},[o]),U=F(()=>{let P=i.current;if(P)P.close();p.current?.getSenders()?.forEach((n)=>n.track?.stop()),p.current?.close(),f(!1),p.current=null,i.current=null,d.current=null},[o]),m=F((P)=>{let n=i.current;if(!n){console.error("Data channel is not ready",P);return}let l=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),n.send(JSON.stringify(P)),!P.timestamp)P.timestamp=l;r?.(P)},[r,o]),u=F((P)=>{if(!i.current){console.error("Data channel is not ready");return}let l=()=>{m({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),m({type:"response.create"})};if(d.current)d.current.then(l);else l()},[r,o]);return ir(()=>{let P=i.current;if(!P)return;let n=(l)=>{let I=JSON.parse(l.data);if(!I.timestamp)I.timestamp=new Date().toLocaleTimeString();r?.(I)};return P.addEventListener("message",n),()=>{P.removeEventListener("message",n)}},[r,o]),{isSessionActive:C,startSession:S,stopSession:U,sendTextMessage:u}}import{jsx as wr}from"react/jsx-runtime";var Pr=({data:o})=>{let{html:r,useSocketioSupport:C,useCentrifugeSupport:f,useMittSupport:p,centrifugeChannel:i}=o,[d,S]=Ir(r),{isSessionActive:U,startSession:m,sendTextMessage:u}=M(null,(I)=>{if(console.log(I.type,I.type==="response.output_text.delta"&&I.delta),I.type==="response.output_text.delta"&&I.delta)S((O)=>O+I.delta)});return Sr(()=>{S(r)},[r]),wr(A,{card:"HTMLEmbedCard",data:o,methods:{update:(I)=>{S(I.value)},generateUsingAI:async(I)=>{try{if(!U&&I.token)await m(I.token,!1);u(I.prompt)}catch(O){console.error("Failed to generate using AI",O)}},initializeAI:async(I)=>{if(!U&&I.token)await m(I.token,!1)}},useCentrifugeSupport:f,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:i,children:lr(d)})},oo=Pr;var Ar=w({name:"HTMLEmbedCard",component:oo,metadata:{author:"Swarm.ing"}});import{useEffect as nr,useState as gr}from"react";import{jsx as ro}from"react/jsx-runtime";var Tr=({data:o})=>{let{name:r,value:C,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:d}=o,[S,U]=gr(C);return nr(()=>{U(C)},[C]),ro(A,{card:"HiddenCard",data:o,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:d,methods:{update:({value:m})=>{U(m)}},children:ro("input",{type:"hidden",id:r,name:r,value:S})})},fo=Tr;var Hr=w({name:"HiddenCard",component:fo,metadata:{author:"Swarm.ing"}});import{useContext as po,useEffect as Zr}from"react";import{createContext as Or}from"react";var Dr=Or(void 0),V=Dr;import{jsx as Br,Fragment as zr}from"react/jsx-runtime";var Lr=({data:o})=>{let{url:r}=o,C=po(V),f=po(B);return Zr(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else C?.(r)},[r,C]),Br(zr,{children:f})},Co=Lr;var Vr=w({name:"AutoRedirectCard",component:Co,metadata:{author:"Swarm.ing"}});import{Bounce as $r,Slide as ar,Zoom as qr,Flip as Gr}from"react-toastify";import{toast as Fr,ToastContainer as Jr}from"react-toastify";import{useContext as Xr,useMemo as Qr,useRef as Wr}from"react";import{jsx as R,Fragment as _r}from"react/jsx-runtime";var Yr={bounce:$r,slide:ar,zoom:qr,flip:Gr},yr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?Yr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};Fr(o.message,r)},Mr=(o)=>{console.log("Log event",o)},Rr=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(f){console.error("[IOEventsCard] Failed to show notification",f)}},C=window.Notification.permission;if(C==="granted"){r();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((f)=>{if(f==="granted")r()})},Kr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p}=o,i=Xr(V),d=Wr(i);d.current=i;let S=Qr(()=>({alert:yr,log:Mr,push:Rr,redirect:(U)=>{if(U.to){let m=U.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()},reload:(U)=>{if(U.to){let m=U.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()}}),[]);return R(_r,{children:R(A,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p,methods:S,children:R(Jr,{})})})},mo=Kr;var kr=w({name:"IOEventsCard",component:mo,metadata:{author:"Swarm.ing"}});import{useEffect as io,useState as tr}from"react";import{jsx as uo}from"react/jsx-runtime";var xr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=tr(f);return io(()=>{m(f)},[f]),io(()=>{if(typeof window>"u")return;sessionStorage.setItem(C,U)},[C,U]),uo(A,{card:"SessionStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{sessionStorage.removeItem(C),m("")}},children:uo("input",{type:"hidden",id:r,name:r,value:U})})},Uo=xr;var Er=w({name:"SessionStorageCard",component:Uo,metadata:{author:"PieData"}});import{useEffect as So,useState as br}from"react";import{jsx as Io}from"react/jsx-runtime";var Nr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=br(f);return So(()=>{m(f)},[f]),So(()=>{if(typeof window>"u")return;localStorage.setItem(C,U)},[C,U]),Io(A,{card:"DeviceStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{localStorage.removeItem(C),m("")}},children:Io("input",{type:"hidden",id:r,name:r,value:U})})},lo=Nr;var cr=w({name:"DeviceStorageCard",component:lo,metadata:{author:"PieData"}});import{useEffect as Po,useState as jr}from"react";import{jsx as wo}from"react/jsx-runtime";var vr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=jr(f);return Po(()=>{m(f)},[f]),Po(()=>{if(typeof window>"u")return;let u=window.Telegram?.WebApp?.CloudStorage;if(!u)return;u.setItem(C,U)},[C,U]),wo(A,{card:"CloudStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{let u=window.Telegram?.WebApp?.CloudStorage;if(u)u.removeItem(C);m("")}},children:wo("input",{type:"hidden",id:r,name:r,value:U})})},Ao=vr;var sr=w({name:"CloudStorageCard",component:Ao,metadata:{author:"PieData"}});import{useEffect as no,useState as hr}from"react";import{jsx as go}from"react/jsx-runtime";var er=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=hr(f);return no(()=>{m(f)},[f]),no(()=>{if(typeof window>"u")return;let u=window.Telegram?.WebApp?.SecureStorage;if(!u)return;u.setItem(C,U)},[C,U]),go(A,{card:"SecureStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{let u=window.Telegram?.WebApp?.SecureStorage;if(u)u.removeItem(C);m("")}},children:go("input",{type:"hidden",id:r,name:r,value:U})})},To=er;var of=w({name:"SecureStorageCard",component:To,metadata:{author:"PieData"}});import{useCallback as K,useContext as _,useEffect as rf,useRef as ff,useState as Ho}from"react";import{jsx as Oo}from"react/jsx-runtime";var pf=({data:o,content:r})=>{let{useLoader:C,noReturn:f,returnType:p,useSocketioSupport:i,useCentrifugeSupport:d,useMittSupport:S,centrifugeChannel:U}=o,m=_(B),u=_(Z)??L,[P,n]=Ho(!1),[l,I]=Ho(null),O=ff(r),g=_(a),T=K((H)=>{if(H===null)n(!0);else if(n(!1),!f)O.current=H;if(!f)I(H)},[f]),D=K((H)=>{O.current=H.content,I(H.content)},[]),z=K((H)=>{if(H===null)n(!0);else if(n(!1),!f)for(let x of H)g?.emit(x.name,x.data)},[f,g]);if(rf(()=>{I(r),n(!1)},[r]),!l&&C)return m;return Oo(A,{card:"AjaxGroupCard",data:o,methods:{changeContent:D},useSocketioSupport:i,useCentrifugeSupport:d,useMittSupport:S,centrifugeChannel:U,children:Oo(u,{uiConfig:l??O.current,setUiAjaxConfiguration:p==="events"?z:T})})},Do=pf;var Cf=w({name:"AjaxGroupCard",component:Do,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as Zo}from"react";import{jsx as k}from"react/jsx-runtime";var mf=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,url:p,sx:i}=o,d=Zo(V),S=Zo(Z)??L;return k(A,{card:f,data:o,children:k("div",{style:i,id:f,onClick:(m)=>{if(p)if(m.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(p))window.location.href=p;else d?.(p)},children:k(S,{setUiAjaxConfiguration:C,uiConfig:r})})})},Lo=mf;var df=w({name:"BoxCard",component:Lo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as uf}from"react";import{jsx as t}from"react/jsx-runtime";var Uf=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,sx:p}=o,i=uf(Z)??L;return t(A,{card:f,data:o,children:t("div",{style:p,id:f,children:r.map((d,S)=>{return t(i,{uiConfig:d,setUiAjaxConfiguration:C},`children-${S}`)})})})},zo=Uf;var Sf=w({name:"OneOfCard",component:zo,metadata:{author:"Swarm.ing",description:"Different variants"}});export{dr as UnionCard,or as UILoading,L as UI,Er as SessionStorageCard,pr as SequenceCard,of as SecureStorageCard,A as PieCard,Sf as OneOfCard,kr as IOEventsCard,Hr as HiddenCard,Ar as HTMLEmbedCard,cr as DeviceStorageCard,sr as CloudStorageCard,df as BoxCard,Vr as AutoRedirectCard,Cf as AjaxGroupCard};
2
+ import{useContext as M,useEffect as K,useRef as Eo}from"react";import{createContext as Qo,useContext as Wo}from"react";var Xo=Qo(null),Yo=()=>{let o=Wo(Xo);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var G=()=>{let{enableRenderingLog:o}=Yo();return o},a=G;import{createContext as Mo}from"react";import{Centrifuge as qf}from"centrifuge";var Ko=Mo(null),v=Ko;import{io as Gf}from"socket.io-client";import{createContext as Ro}from"react";var _o=Ro(null),c=_o;import Xf from"mitt";import{createContext as xo,useCallback as Kf,useContext as Rf}from"react";var yo=xo(null);var J=yo;import{jsx as No,jsxs as jo,Fragment as bo}from"react/jsx-runtime";var ko=({card:o,data:r,children:C,useSocketioSupport:p=!1,useCentrifugeSupport:U=!1,useMittSupport:f=!1,centrifugeChannel:m=void 0,methods:S=void 0,stored:d=void 0})=>{let u=a(),I=Eo(S);if(I.current=S,u)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:p,centrifuge:U,mitt:f,centrifugeChannel:m}),console.log("[PieCard] Methods:",S?Object.keys(S):"none"),console.log("[PieCard] Has children:",!!C);let w=M(c),H=M(v),A=M(J);if(K(()=>{if(!w||!p||!I.current||!r.name){if(u&&p)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!w,useSocketioSupport:p,hasMethods:!!I.current,hasDataName:!!r?.name});return}let z=Object.keys(I.current??{}).map((O)=>{let L=`pie${O}_${r.name}`;if(u)console.log(`[PieCard] Socket.IO registering event: ${L}`);let Z=(g)=>{I.current?.[O]?.(g)};return w.on(L,Z),[L,Z]});return()=>{z.forEach(([O,L])=>{if(u)console.log(`[PieCard] Socket.IO unregistering event: ${O}`);w.off(O,L)})}},[w,r.name,p]),K(()=>{if(!H||!U||!m||!r.name){if(u&&U)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!H,useCentrifugeSupport:U,hasCentrifugeChannel:!!m,hasMethods:!!I.current,hasDataName:!!r?.name});return}let z=Object.keys(I.current??{}).map((O)=>{let L=`pie${O}_${r.name}_${m}`;if(u)console.log(`[PieCard] Centrifuge subscribing to channel: ${L}`);let Z=H.newSubscription(L);return Z.on("publication",(g)=>{if(u)console.log(`[PieCard] Centrifuge received data on ${L}:`,g.data);I.current?.[O]?.(g.data)}),Z.subscribe(),Z});return()=>{z.forEach((O)=>{if(u)console.log("[PieCard] Centrifuge unsubscribing from channel");O.unsubscribe(),H.removeSubscription(O)})}},[H,m,r.name,U]),K(()=>{if(!A||!f||!r.name){if(u&&f)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!A,useMittSupport:f,hasMethods:!!I.current,hasDataName:!!r?.name});return}let P=Object.keys(I.current??{}),z={};return P.forEach((O)=>{let L=`pie${O}_${r.name}`,Z=(g)=>{if(u)console.log(`[PieCard] Mitt registering event: ${L}`);I.current?.[O]?.(g)};z[L]=Z,A.on(L,Z)}),()=>{Object.entries(z).forEach(([O,L])=>{if(u)console.log(`[PieCard] Mitt unregistering event: ${O}`);A.off(O,L)})}},[A,r.name,f]),u)console.log("[PieCard] Rendering complete, returning children");if(d!==void 0)return jo(bo,{children:[No("input",{type:"hidden",name:r.name,value:JSON.stringify(d)}),C]});return C},T=ko;import{lazy as no}from"react";var F=new Map;function ao(o,r){return r.catch(()=>{if(F.get(o)===r)F.delete(o)}),F.set(o,r),r}function t(o,r){return no(()=>{if(F.has(r))return F.get(r);return ao(r,o().then((C)=>C))})}var h=Symbol.for("@swarm.ing/pieui:component-registry"),s=globalThis,e=s[h]??(s[h]=new Map),vo=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=t(r.loader,o.name),r.isLazy=!0;return r};function i(o){let r=vo(o);return e.set(r.name,r),r.component}var Q=(o)=>{return e.get(o)};import{useContext as oo,memo as ur}from"react";import{createContext as co}from"react";import{jsx as so,Fragment as ho}from"react/jsx-runtime";var to=co(so(ho,{})),q=to;import{createContext as eo}from"react";var or=eo(void 0),W=or;import{Component as rr,Suspense as fr}from"react";import{jsx as Ur}from"react/jsx-runtime";var pr=2,Cr=400;class $ extends rr{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<pr){let r=Cr*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((C)=>({failed:!1,attempt:C.attempt+1}))},r)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return Ur(fr,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as R}from"react/jsx-runtime";function mr({uiConfig:o,setUiAjaxConfiguration:r}){let C=oo(q),p=oo(W),U=G();if(U)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let f=Q(o.card);if(!f?.component){if(U)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return C}if(U)console.log("[UI] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata});let m=f.component,S=R(m,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(f.isLazy){if(U)console.log("[UI] Rendering lazy component with Suspense:",f.name);return R($,{name:f.name,fallback:f.fallback?R(f.fallback,{}):C,onError:p,children:S})}if(U)console.log("[UI] Rendering component directly:",f.name);return S}var V=ur(mr);import{useContext as ro}from"react";import{createContext as Ir}from"react";var dr=Ir(null),B=dr;import{jsx as X}from"react/jsx-runtime";function fo({uiConfig:o,setUiAjaxConfiguration:r}){let C=ro(q),p=ro(W),U=G();if(U)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let f=Q(o.card);if(!f?.component){if(U)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return C}if(U)console.log("[UILoading] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata,hasFallback:!!f.fallback});if(f.fallback){if(U)console.log("[UILoading] Rendering fallback for:",f.name);let d=f.fallback;return X(d,{})}if(U)console.log("[UILoading] No fallback, rendering full component:",f.name);let m=f.component,S=X(B.Provider,{value:fo,children:X(m,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(f.isLazy)return X($,{name:f.name,fallback:C,onError:p,children:S});return S}var Sr=fo;import{useContext as Pr}from"react";import{jsx as _}from"react/jsx-runtime";var Ar=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:p,sx:U}=o,f=Pr(B)??V;return _(T,{card:p,data:o,children:_("div",{style:U,id:p,children:r.map((m,S)=>{return _(f,{uiConfig:m,setUiAjaxConfiguration:C},`children-${S}`)})})})},po=Ar;var wr=i({name:"SequenceCard",component:po,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as ir}from"react";import{jsx as Co}from"react/jsx-runtime";var Tr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:p}=o,U=ir(B)??V;return Co(T,{card:p,data:o,children:r.map((f,m)=>{return Co(U,{uiConfig:f,setUiAjaxConfiguration:C},`children-${m}`)})})},Uo=Tr;var Hr=i({name:"UnionCard",component:Uo,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as zr,useState as Zr}from"react";import Br from"html-react-parser";import{useCallback as Y,useEffect as Or,useRef as x,useState as Lr}from"react";function Dr(){let o=new AudioContext,r=o.createOscillator(),C=r.connect(o.createMediaStreamDestination());r.start();let p=C.stream.getAudioTracks()[0];return p.enabled=!1,p}function y(o=null,r){let[C,p]=Lr(!1),U=x(null),f=x(null),m=x(null),S=Y(async(w,H=!0)=>{if(U.current)d();let A=new RTCPeerConnection;if(A.onconnectionstatechange=()=>{if(A.connectionState==="connected")p(!0);else if(["disconnected","failed","closed"].includes(A.connectionState))p(!1)},A.ontrack=(D)=>{if(o)o.srcObject=D.streams[0]},H){let D=await navigator.mediaDevices.getUserMedia({audio:!0});A.addTrack(D.getTracks()[0],D)}else{let D=Dr();A.addTrack(D)}let P=A.createDataChannel("oai-events");f.current=P,m.current=new Promise((D)=>{P.addEventListener("open",()=>{D()})});let z=await A.createOffer();await A.setLocalDescription(z);let g=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:z.sdp,headers:{Authorization:`Bearer ${w}`,"Content-Type":"application/sdp"}})).text();await A.setRemoteDescription({type:"answer",sdp:g}),U.current=A,await m.current},[o]),d=Y(()=>{let w=f.current;if(w)w.close();U.current?.getSenders()?.forEach((H)=>H.track?.stop()),U.current?.close(),p(!1),U.current=null,f.current=null,m.current=null},[o]),u=Y((w)=>{let H=f.current;if(!H){console.error("Data channel is not ready",w);return}let A=new Date().toLocaleTimeString();if(w.event_id=w.event_id||crypto.randomUUID(),H.send(JSON.stringify(w)),!w.timestamp)w.timestamp=A;r?.(w)},[r,o]),I=Y((w)=>{if(!f.current){console.error("Data channel is not ready");return}let A=()=>{u({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:w}]}}),u({type:"response.create"})};if(m.current)m.current.then(A);else A()},[r,o]);return Or(()=>{let w=f.current;if(!w)return;let H=(A)=>{let P=JSON.parse(A.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();r?.(P)};return w.addEventListener("message",H),()=>{w.removeEventListener("message",H)}},[r,o]),{isSessionActive:C,startSession:S,stopSession:d,sendTextMessage:I}}import{jsx as gr}from"react/jsx-runtime";var Vr=({data:o})=>{let{html:r,useSocketioSupport:C,useCentrifugeSupport:p,useMittSupport:U,centrifugeChannel:f}=o,[m,S]=Zr(r),{isSessionActive:d,startSession:u,sendTextMessage:I}=y(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)S((z)=>z+P.delta)});return zr(()=>{S(r)},[r]),gr(T,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{S(P.value)},generateUsingAI:async(P)=>{try{if(!d&&P.token)await u(P.token,!1);I(P.prompt)}catch(z){console.error("Failed to generate using AI",z)}},initializeAI:async(P)=>{if(!d&&P.token)await u(P.token,!1)}},useCentrifugeSupport:p,useSocketioSupport:C,useMittSupport:U,centrifugeChannel:f,children:Br(m)})},uo=Vr;var qr=i({name:"HTMLEmbedCard",component:uo,metadata:{author:"Swarm.ing"}});import{useEffect as $r,useState as lr}from"react";import{jsx as mo}from"react/jsx-runtime";var Gr=({data:o})=>{let{name:r,value:C,useSocketioSupport:p,useCentrifugeSupport:U,useMittSupport:f,centrifugeChannel:m}=o,[S,d]=lr(C);return $r(()=>{d(C)},[C]),mo(T,{card:"HiddenCard",data:o,useSocketioSupport:p,useCentrifugeSupport:U,useMittSupport:f,centrifugeChannel:m,methods:{update:({value:u})=>{d(u)}},children:mo("input",{type:"hidden",id:r,name:r,value:S})})},Io=Gr;var Fr=i({name:"HiddenCard",component:Io,metadata:{author:"Swarm.ing"}});import{useContext as So,useEffect as Wr}from"react";import{createContext as Jr}from"react";var Qr=Jr(void 0),l=Qr;import{jsx as Mr,Fragment as Yr}from"react/jsx-runtime";var Xr=({data:o})=>{let{url:r}=o,C=So(l),p=So(q);return Wr(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else C?.(r)},[r,C]),Mr(Yr,{children:p})},Po=Xr;var Kr=i({name:"AutoRedirectCard",component:Po,metadata:{author:"Swarm.ing"}});import{Bounce as Rr,Slide as _r,Zoom as xr,Flip as yr}from"react-toastify";import{toast as Er,ToastContainer as kr}from"react-toastify";import{useContext as br,useMemo as Nr,useRef as jr}from"react";import{jsx as E,Fragment as hr}from"react/jsx-runtime";var nr={bounce:Rr,slide:_r,zoom:xr,flip:yr},ar=(o)=>{let r={...o,type:o.alertType,transition:o.transition?nr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};Er(o.message,r)},vr=(o)=>{console.log("Log event",o)},cr=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(p){console.error("[IOEventsCard] Failed to show notification",p)}},C=window.Notification.permission;if(C==="granted"){r();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((p)=>{if(p==="granted")r()})},tr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:U}=o,f=br(l),m=jr(f);m.current=f;let S=Nr(()=>({alert:ar,log:vr,push:cr,redirect:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else m.current?.(u)}else window.location.reload()},reload:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else m.current?.(u)}else window.location.reload()}}),[]);return E(hr,{children:E(T,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:U,methods:S,children:E(kr,{})})})},Ao=tr;var sr=i({name:"IOEventsCard",component:Ao,metadata:{author:"Swarm.ing"}});import{useEffect as wo,useState as er}from"react";import{jsx as io}from"react/jsx-runtime";var of=({data:o})=>{let{name:r,key:C,value:p,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=er(p);return wo(()=>{u(p)},[p]),wo(()=>{if(typeof window>"u")return;sessionStorage.setItem(C,d)},[C,d]),io(T,{card:"SessionStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{sessionStorage.removeItem(C),u("")}},children:io("input",{type:"hidden",id:r,name:r,value:d})})},To=of;var rf=i({name:"SessionStorageCard",component:To,metadata:{author:"PieData"}});import{useEffect as Ho,useState as ff}from"react";import{jsx as Oo}from"react/jsx-runtime";var pf=({data:o})=>{let{name:r,key:C,value:p,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=ff(p);return Ho(()=>{u(p)},[p]),Ho(()=>{if(typeof window>"u")return;localStorage.setItem(C,d)},[C,d]),Oo(T,{card:"DeviceStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{localStorage.removeItem(C),u("")}},children:Oo("input",{type:"hidden",id:r,name:r,value:d})})},Lo=pf;var Cf=i({name:"DeviceStorageCard",component:Lo,metadata:{author:"PieData"}});import{useEffect as Do,useState as Uf}from"react";import{jsx as zo}from"react/jsx-runtime";var uf=({data:o})=>{let{name:r,key:C,value:p,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=Uf(p);return Do(()=>{u(p)},[p]),Do(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp?.CloudStorage;if(!I)return;I.setItem(C,d)},[C,d]),zo(T,{card:"CloudStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{let I=window.Telegram?.WebApp?.CloudStorage;if(I)I.removeItem(C);u("")}},children:zo("input",{type:"hidden",id:r,name:r,value:d})})},Zo=uf;var mf=i({name:"CloudStorageCard",component:Zo,metadata:{author:"PieData"}});import{useEffect as Bo,useState as If}from"react";import{jsx as Vo}from"react/jsx-runtime";var df=({data:o})=>{let{name:r,key:C,value:p,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=If(p);return Bo(()=>{u(p)},[p]),Bo(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp?.SecureStorage;if(!I)return;I.setItem(C,d)},[C,d]),Vo(T,{card:"SecureStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:f,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{let I=window.Telegram?.WebApp?.SecureStorage;if(I)I.removeItem(C);u("")}},children:Vo("input",{type:"hidden",id:r,name:r,value:d})})},go=df;var Sf=i({name:"SecureStorageCard",component:go,metadata:{author:"PieData"}});import{useCallback as k,useContext as b,useEffect as Pf,useRef as Af,useState as qo}from"react";import{jsx as $o}from"react/jsx-runtime";var wf=({data:o,content:r})=>{let{useLoader:C,noReturn:p,returnType:U,useSocketioSupport:f,useCentrifugeSupport:m,useMittSupport:S,centrifugeChannel:d}=o,u=b(q),I=b(B)??V,[w,H]=qo(!1),[A,P]=qo(null),z=Af(r),O=b(J),L=k((D)=>{if(D===null)H(!0);else if(H(!1),!p)z.current=D;if(!p)P(D)},[p]),Z=k((D)=>{z.current=D.content,P(D.content)},[]),g=k((D)=>{if(D===null)H(!0);else if(H(!1),!p)for(let n of D)O?.emit(n.name,n.data)},[p,O]);if(Pf(()=>{P(r),H(!1)},[r]),!A&&C)return u;return $o(T,{card:"AjaxGroupCard",data:o,methods:{changeContent:Z},useSocketioSupport:f,useCentrifugeSupport:m,useMittSupport:S,centrifugeChannel:d,children:$o(I,{uiConfig:A??z.current,setUiAjaxConfiguration:U==="events"?g:L})})},lo=wf;var Tf=i({name:"AjaxGroupCard",component:lo,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as Go}from"react";import{jsx as N}from"react/jsx-runtime";var Hf=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:p,url:U,sx:f}=o,m=Go(l),S=Go(B)??V;return N(T,{card:p,data:o,children:N("div",{style:f,id:p,onClick:(u)=>{if(U)if(u.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else m?.(U)},children:N(S,{setUiAjaxConfiguration:C,uiConfig:r})})})},Fo=Hf;var Of=i({name:"BoxCard",component:Fo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Lf}from"react";import{jsx as j}from"react/jsx-runtime";var Df=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:p,sx:U}=o,f=Lf(B)??V;return j(T,{card:p,data:o,children:j("div",{style:U,id:p,children:r.map((m,S)=>{return j(f,{uiConfig:m,setUiAjaxConfiguration:C},`children-${S}`)})})})},Jo=Df;var zf=i({name:"OneOfCard",component:Jo,metadata:{author:"Swarm.ing",description:"Different variants"}});export{Hr as UnionCard,Sr as UILoading,V as UI,rf as SessionStorageCard,wr as SequenceCard,Sf as SecureStorageCard,T as PieCard,zf as OneOfCard,sr as IOEventsCard,Fr as HiddenCard,qr as HTMLEmbedCard,Cf as DeviceStorageCard,mf as CloudStorageCard,Of as BoxCard,Kr as AutoRedirectCard,Tf as AjaxGroupCard};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var Ur=Object.create;var{getPrototypeOf:Sr,defineProperty:W,getOwnPropertyNames:no,getOwnPropertyDescriptor:Ir}=Object,go=Object.prototype.hasOwnProperty;var To=(o,r,C)=>{C=o!=null?Ur(Sr(o)):{};let f=r||!o||!o.__esModule?W(C,"default",{value:o,enumerable:!0}):C;for(let p of no(o))if(!go.call(f,p))W(f,p,{get:()=>o[p],enumerable:!0});return f},Ao=new WeakMap,lr=(o)=>{var r=Ao.get(o),C;if(r)return r;if(r=W({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")no(o).map((f)=>!go.call(r,f)&&W(r,f,{get:()=>o[f],enumerable:!(C=Ir(o,f))||C.enumerable}));return Ao.set(o,r),r};var Pr=(o,r)=>{for(var C in r)W(o,C,{get:r[C],enumerable:!0,configurable:!0,set:(f)=>r[C]=()=>f})};var br={};Pr(br,{UnionCard:()=>Yo,UILoading:()=>Go,UI:()=>z,SessionStorageCard:()=>jo,SequenceCard:()=>Xo,SecureStorageCard:()=>rr,PieCard:()=>w,OneOfCard:()=>ur,IOEventsCard:()=>No,HiddenCard:()=>ko,HTMLEmbedCard:()=>Ko,DeviceStorageCard:()=>so,CloudStorageCard:()=>eo,BoxCard:()=>mr,AutoRedirectCard:()=>Eo,AjaxGroupCard:()=>pr});module.exports=lr(br);var $=require("react");var t=require("react"),wr=t.createContext(null),Ar=()=>{let o=t.useContext(wr);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var Y=()=>{let{enableRenderingLog:o}=Ar();return o},Ho=Y;var Oo=require("react"),nr=require("centrifuge");var gr=Oo.createContext(null),Do=gr;var Tr=require("socket.io-client"),Zo=require("react");var Hr=Zo.createContext(null),Lo=Hr;var Or=To(require("mitt")),x=require("react");var Dr=x.createContext(null);var E=Dr;var G=require("react/jsx-runtime"),Zr=({card:o,data:r,children:C,useSocketioSupport:f=!1,useCentrifugeSupport:p=!1,useMittSupport:i=!1,centrifugeChannel:d=void 0,methods:S=void 0,stored:U=void 0})=>{let m=Ho(),u=$.useRef(S);if(u.current=S,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:f,centrifuge:p,mitt:i,centrifugeChannel:d}),console.log("[PieCard] Methods:",S?Object.keys(S):"none"),console.log("[PieCard] Has children:",!!C);let P=$.useContext(Lo),n=$.useContext(Do),l=$.useContext(E);if($.useEffect(()=>{if(!P||!f||!u.current||!r.name){if(m&&f)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!P,useSocketioSupport:f,hasMethods:!!u.current,hasDataName:!!r?.name});return}let O=Object.keys(u.current??{}).map((g)=>{let T=`pie${g}_${r.name}`;if(m)console.log(`[PieCard] Socket.IO registering event: ${T}`);let L=(V)=>{u.current?.[g]?.(V)};return P.on(T,L),[T,L]});return()=>{O.forEach(([g,T])=>{if(m)console.log(`[PieCard] Socket.IO unregistering event: ${g}`);P.off(g,T)})}},[P,r.name,f]),$.useEffect(()=>{if(!n||!p||!d||!r.name){if(m&&p)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!n,useCentrifugeSupport:p,hasCentrifugeChannel:!!d,hasMethods:!!u.current,hasDataName:!!r?.name});return}let O=Object.keys(u.current??{}).map((g)=>{let T=`pie${g}_${r.name}_${d}`;if(m)console.log(`[PieCard] Centrifuge subscribing to channel: ${T}`);let L=n.newSubscription(T);return L.on("publication",(V)=>{if(m)console.log(`[PieCard] Centrifuge received data on ${T}:`,V.data);u.current?.[g]?.(V.data)}),L.subscribe(),L});return()=>{O.forEach((g)=>{if(m)console.log("[PieCard] Centrifuge unsubscribing from channel");g.unsubscribe(),n.removeSubscription(g)})}},[n,d,r.name,p]),$.useEffect(()=>{if(!l||!i||!r.name){if(m&&i)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!l,useMittSupport:i,hasMethods:!!u.current,hasDataName:!!r?.name});return}let I=Object.keys(u.current??{}),O={};return I.forEach((g)=>{let T=`pie${g}_${r.name}`,L=(V)=>{if(m)console.log(`[PieCard] Mitt registering event: ${T}`);u.current?.[g]?.(V)};O[T]=L,l.on(T,L)}),()=>{Object.entries(O).forEach(([g,T])=>{if(m)console.log(`[PieCard] Mitt unregistering event: ${g}`);l.off(g,T)})}},[l,r.name,i]),m)console.log("[PieCard] Rendering complete, returning children");if(U!==void 0)return G.jsxs(G.Fragment,{children:[G.jsx("input",{type:"hidden",name:r.name,value:JSON.stringify(U)}),C]});return C},w=Zr;var zo=require("react"),po=new Map;function Bo(o,r){return zo.lazy(()=>{if(po.has(r))return po.get(r);let C=o().then((f)=>f);return po.set(r,C),C})}var Vo=new Map,Lr=(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=Bo(r.loader,o.name),r.loader=void 0,r.isLazy=!0;return r};function A(o){let r=Lr(o);return Vo.set(r.name,r),r.component}var b=(o)=>{return Vo.get(o)};var F=require("react");var $o=require("react"),N=require("react/jsx-runtime"),zr=$o.createContext(N.jsx(N.Fragment,{})),a=zr;var c=require("react/jsx-runtime");function Br({uiConfig:o,setUiAjaxConfiguration:r}){let C=F.useContext(a),f=Y();if(f)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 p=b(o.card);if(!p?.component){if(f)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return C}if(f)console.log("[UI] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata});let i=p.component,d=c.jsx(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(p.isLazy){if(f)console.log("[UI] Rendering lazy component with Suspense:",p.name);return c.jsx(F.Suspense,{fallback:p.fallback?c.jsx(p.fallback,{}):C,children:d},`${p.name}`)}if(f)console.log("[UI] Rendering component directly:",p.name);return d}var z=F.memo(Br);var j=require("react");var ao=require("react"),Vr=ao.createContext(null),B=Vr;var y=require("react/jsx-runtime");function qo({uiConfig:o,setUiAjaxConfiguration:r}){let C=j.useContext(a),f=Y();if(f)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 p=b(o.card);if(!p?.component){if(f)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return C}if(f)console.log("[UILoading] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata,hasFallback:!!p.fallback});if(p.fallback){if(f)console.log("[UILoading] Rendering fallback for:",p.name);let S=p.fallback;return y.jsx(S,{})}if(f)console.log("[UILoading] No fallback, rendering full component:",p.name);let i=p.component,d=y.jsx(B.Provider,{value:qo,children:y.jsx(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(p.isLazy)return y.jsx(j.Suspense,{fallback:C,children:d},`${p.name}`);return d}var Go=qo;var Fo=require("react");var v=require("react/jsx-runtime"),$r=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,sx:p}=o,i=Fo.useContext(B)??z;return v.jsx(w,{card:f,data:o,children:v.jsx("div",{style:p,id:f,children:r.map((d,S)=>{return v.jsx(i,{uiConfig:d,setUiAjaxConfiguration:C},`children-${S}`)})})})},Jo=$r;var Xo=A({name:"SequenceCard",component:Jo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Qo=require("react");var Co=require("react/jsx-runtime"),ar=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f}=o,p=Qo.useContext(B)??z;return Co.jsx(w,{card:f,data:o,children:r.map((i,d)=>{return Co.jsx(p,{uiConfig:i,setUiAjaxConfiguration:C},`children-${d}`)})})},Wo=ar;var Yo=A({name:"UnionCard",component:Wo,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var s=require("react"),yo=To(require("html-react-parser"));var Z=require("react");function qr(){let o=new AudioContext,r=o.createOscillator(),C=r.connect(o.createMediaStreamDestination());r.start();let f=C.stream.getAudioTracks()[0];return f.enabled=!1,f}function mo(o=null,r){let[C,f]=Z.useState(!1),p=Z.useRef(null),i=Z.useRef(null),d=Z.useRef(null),S=Z.useCallback(async(P,n=!0)=>{if(p.current)U();let l=new RTCPeerConnection;if(l.onconnectionstatechange=()=>{if(l.connectionState==="connected")f(!0);else if(["disconnected","failed","closed"].includes(l.connectionState))f(!1)},l.ontrack=(H)=>{if(o)o.srcObject=H.streams[0]},n){let H=await navigator.mediaDevices.getUserMedia({audio:!0});l.addTrack(H.getTracks()[0],H)}else{let H=qr();l.addTrack(H)}let I=l.createDataChannel("oai-events");i.current=I,d.current=new Promise((H)=>{I.addEventListener("open",()=>{H()})});let O=await l.createOffer();await l.setLocalDescription(O);let V=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:O.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await l.setRemoteDescription({type:"answer",sdp:V}),p.current=l,await d.current},[o]),U=Z.useCallback(()=>{let P=i.current;if(P)P.close();p.current?.getSenders()?.forEach((n)=>n.track?.stop()),p.current?.close(),f(!1),p.current=null,i.current=null,d.current=null},[o]),m=Z.useCallback((P)=>{let n=i.current;if(!n){console.error("Data channel is not ready",P);return}let l=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),n.send(JSON.stringify(P)),!P.timestamp)P.timestamp=l;r?.(P)},[r,o]),u=Z.useCallback((P)=>{if(!i.current){console.error("Data channel is not ready");return}let l=()=>{m({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),m({type:"response.create"})};if(d.current)d.current.then(l);else l()},[r,o]);return Z.useEffect(()=>{let P=i.current;if(!P)return;let n=(l)=>{let I=JSON.parse(l.data);if(!I.timestamp)I.timestamp=new Date().toLocaleTimeString();r?.(I)};return P.addEventListener("message",n),()=>{P.removeEventListener("message",n)}},[r,o]),{isSessionActive:C,startSession:S,stopSession:U,sendTextMessage:u}}var Ro=require("react/jsx-runtime"),Gr=({data:o})=>{let{html:r,useSocketioSupport:C,useCentrifugeSupport:f,useMittSupport:p,centrifugeChannel:i}=o,[d,S]=s.useState(r),{isSessionActive:U,startSession:m,sendTextMessage:u}=mo(null,(I)=>{if(console.log(I.type,I.type==="response.output_text.delta"&&I.delta),I.type==="response.output_text.delta"&&I.delta)S((O)=>O+I.delta)});return s.useEffect(()=>{S(r)},[r]),Ro.jsx(w,{card:"HTMLEmbedCard",data:o,methods:{update:(I)=>{S(I.value)},generateUsingAI:async(I)=>{try{if(!U&&I.token)await m(I.token,!1);u(I.prompt)}catch(O){console.error("Failed to generate using AI",O)}},initializeAI:async(I)=>{if(!U&&I.token)await m(I.token,!1)}},useCentrifugeSupport:f,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:i,children:yo.default(d)})},Mo=Gr;var Ko=A({name:"HTMLEmbedCard",component:Mo,metadata:{author:"Swarm.ing"}});var h=require("react");var io=require("react/jsx-runtime"),Fr=({data:o})=>{let{name:r,value:C,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:d}=o,[S,U]=h.useState(C);return h.useEffect(()=>{U(C)},[C]),io.jsx(w,{card:"HiddenCard",data:o,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:d,methods:{update:({value:m})=>{U(m)}},children:io.jsx("input",{type:"hidden",id:r,name:r,value:S})})},_o=Fr;var ko=A({name:"HiddenCard",component:_o,metadata:{author:"Swarm.ing"}});var M=require("react");var to=require("react"),Jr=to.createContext(void 0),J=Jr;var e=require("react/jsx-runtime"),Xr=({data:o})=>{let{url:r}=o,C=M.useContext(J),f=M.useContext(a);return M.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else C?.(r)},[r,C]),e.jsx(e.Fragment,{children:f})},xo=Xr;var Eo=A({name:"AutoRedirectCard",component:xo,metadata:{author:"Swarm.ing"}});var q=require("react-toastify"),oo=require("react-toastify");var Q=require("react");var X=require("react/jsx-runtime"),Qr={bounce:q.Bounce,slide:q.Slide,zoom:q.Zoom,flip:q.Flip},Wr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?Qr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};oo.toast(o.message,r)},Yr=(o)=>{console.log("Log event",o)},yr=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(f){console.error("[IOEventsCard] Failed to show notification",f)}},C=window.Notification.permission;if(C==="granted"){r();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((f)=>{if(f==="granted")r()})},Mr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p}=o,i=Q.useContext(J),d=Q.useRef(i);d.current=i;let S=Q.useMemo(()=>({alert:Wr,log:Yr,push:yr,redirect:(U)=>{if(U.to){let m=U.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()},reload:(U)=>{if(U.to){let m=U.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()}}),[]);return X.jsx(X.Fragment,{children:X.jsx(w,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p,methods:S,children:X.jsx(oo.ToastContainer,{})})})},bo=Mr;var No=A({name:"IOEventsCard",component:bo,metadata:{author:"Swarm.ing"}});var R=require("react");var uo=require("react/jsx-runtime"),Rr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=R.useState(f);return R.useEffect(()=>{m(f)},[f]),R.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(C,U)},[C,U]),uo.jsx(w,{card:"SessionStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{sessionStorage.removeItem(C),m("")}},children:uo.jsx("input",{type:"hidden",id:r,name:r,value:U})})},co=Rr;var jo=A({name:"SessionStorageCard",component:co,metadata:{author:"PieData"}});var K=require("react");var Uo=require("react/jsx-runtime"),Kr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=K.useState(f);return K.useEffect(()=>{m(f)},[f]),K.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(C,U)},[C,U]),Uo.jsx(w,{card:"DeviceStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{localStorage.removeItem(C),m("")}},children:Uo.jsx("input",{type:"hidden",id:r,name:r,value:U})})},vo=Kr;var so=A({name:"DeviceStorageCard",component:vo,metadata:{author:"PieData"}});var _=require("react");var So=require("react/jsx-runtime"),_r=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=_.useState(f);return _.useEffect(()=>{m(f)},[f]),_.useEffect(()=>{if(typeof window>"u")return;let u=window.Telegram?.WebApp?.CloudStorage;if(!u)return;u.setItem(C,U)},[C,U]),So.jsx(w,{card:"CloudStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{let u=window.Telegram?.WebApp?.CloudStorage;if(u)u.removeItem(C);m("")}},children:So.jsx("input",{type:"hidden",id:r,name:r,value:U})})},ho=_r;var eo=A({name:"CloudStorageCard",component:ho,metadata:{author:"PieData"}});var k=require("react");var Io=require("react/jsx-runtime"),kr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=k.useState(f);return k.useEffect(()=>{m(f)},[f]),k.useEffect(()=>{if(typeof window>"u")return;let u=window.Telegram?.WebApp?.SecureStorage;if(!u)return;u.setItem(C,U)},[C,U]),Io.jsx(w,{card:"SecureStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{let u=window.Telegram?.WebApp?.SecureStorage;if(u)u.removeItem(C);m("")}},children:Io.jsx("input",{type:"hidden",id:r,name:r,value:U})})},or=kr;var rr=A({name:"SecureStorageCard",component:or,metadata:{author:"PieData"}});var D=require("react");var lo=require("react/jsx-runtime"),tr=({data:o,content:r})=>{let{useLoader:C,noReturn:f,returnType:p,useSocketioSupport:i,useCentrifugeSupport:d,useMittSupport:S,centrifugeChannel:U}=o,m=D.useContext(a),u=D.useContext(B)??z,[P,n]=D.useState(!1),[l,I]=D.useState(null),O=D.useRef(r),g=D.useContext(E),T=D.useCallback((H)=>{if(H===null)n(!0);else if(n(!1),!f)O.current=H;if(!f)I(H)},[f]),L=D.useCallback((H)=>{O.current=H.content,I(H.content)},[]),V=D.useCallback((H)=>{if(H===null)n(!0);else if(n(!1),!f)for(let wo of H)g?.emit(wo.name,wo.data)},[f,g]);if(D.useEffect(()=>{I(r),n(!1)},[r]),!l&&C)return m;return lo.jsx(w,{card:"AjaxGroupCard",data:o,methods:{changeContent:L},useSocketioSupport:i,useCentrifugeSupport:d,useMittSupport:S,centrifugeChannel:U,children:lo.jsx(u,{uiConfig:l??O.current,setUiAjaxConfiguration:p==="events"?V:T})})},fr=tr;var pr=A({name:"AjaxGroupCard",component:fr,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var Po=require("react");var ro=require("react/jsx-runtime"),xr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,url:p,sx:i}=o,d=Po.useContext(J),S=Po.useContext(B)??z;return ro.jsx(w,{card:f,data:o,children:ro.jsx("div",{style:i,id:f,onClick:(m)=>{if(p)if(m.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(p))window.location.href=p;else d?.(p)},children:ro.jsx(S,{setUiAjaxConfiguration:C,uiConfig:r})})})},Cr=xr;var mr=A({name:"BoxCard",component:Cr,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var dr=require("react");var fo=require("react/jsx-runtime"),Er=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,sx:p}=o,i=dr.useContext(B)??z;return fo.jsx(w,{card:f,data:o,children:fo.jsx("div",{style:p,id:f,children:r.map((d,S)=>{return fo.jsx(i,{uiConfig:d,setUiAjaxConfiguration:C},`children-${S}`)})})})},ir=Er;var ur=A({name:"OneOfCard",component:ir,metadata:{author:"Swarm.ing",description:"Different variants"}});
2
+ var Hr=Object.create;var{getPrototypeOf:Or,defineProperty:M,getOwnPropertyNames:Do,getOwnPropertyDescriptor:Lr}=Object,zo=Object.prototype.hasOwnProperty;var Zo=(o,r,p)=>{p=o!=null?Hr(Or(o)):{};let f=r||!o||!o.__esModule?M(p,"default",{value:o,enumerable:!0}):p;for(let U of Do(o))if(!zo.call(f,U))M(f,U,{get:()=>o[U],enumerable:!0});return f},Lo=new WeakMap,Dr=(o)=>{var r=Lo.get(o),p;if(r)return r;if(r=M({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")Do(o).map((f)=>!zo.call(r,f)&&M(r,f,{get:()=>o[f],enumerable:!(p=Lr(o,f))||p.enumerable}));return Lo.set(o,r),r};var zr=(o,r)=>{for(var p in r)M(o,p,{get:r[p],enumerable:!0,configurable:!0,set:(f)=>r[p]=()=>f})};var pf={};zr(pf,{UnionCard:()=>bo,UILoading:()=>Ro,UI:()=>g,SessionStorageCard:()=>fr,SequenceCard:()=>yo,SecureStorageCard:()=>Ir,PieCard:()=>i,OneOfCard:()=>Tr,IOEventsCard:()=>or,HiddenCard:()=>co,HTMLEmbedCard:()=>ao,DeviceStorageCard:()=>Cr,CloudStorageCard:()=>ur,BoxCard:()=>Ar,AutoRedirectCard:()=>so,AjaxGroupCard:()=>Sr});module.exports=Dr(pf);var l=require("react");var j=require("react"),Zr=j.createContext(null),Br=()=>{let o=j.useContext(Zr);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var K=()=>{let{enableRenderingLog:o}=Br();return o},Bo=K;var Vo=require("react"),Vr=require("centrifuge");var gr=Vo.createContext(null),go=gr;var qr=require("socket.io-client"),qo=require("react");var $r=qo.createContext(null),$o=$r;var lr=Zo(require("mitt")),n=require("react");var Gr=n.createContext(null);var a=Gr;var J=require("react/jsx-runtime"),Fr=({card:o,data:r,children:p,useSocketioSupport:f=!1,useCentrifugeSupport:U=!1,useMittSupport:C=!1,centrifugeChannel:m=void 0,methods:S=void 0,stored:d=void 0})=>{let u=Bo(),I=l.useRef(S);if(I.current=S,u)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:f,centrifuge:U,mitt:C,centrifugeChannel:m}),console.log("[PieCard] Methods:",S?Object.keys(S):"none"),console.log("[PieCard] Has children:",!!p);let w=l.useContext($o),H=l.useContext(go),A=l.useContext(a);if(l.useEffect(()=>{if(!w||!f||!I.current||!r.name){if(u&&f)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!w,useSocketioSupport:f,hasMethods:!!I.current,hasDataName:!!r?.name});return}let z=Object.keys(I.current??{}).map((O)=>{let L=`pie${O}_${r.name}`;if(u)console.log(`[PieCard] Socket.IO registering event: ${L}`);let V=($)=>{I.current?.[O]?.($)};return w.on(L,V),[L,V]});return()=>{z.forEach(([O,L])=>{if(u)console.log(`[PieCard] Socket.IO unregistering event: ${O}`);w.off(O,L)})}},[w,r.name,f]),l.useEffect(()=>{if(!H||!U||!m||!r.name){if(u&&U)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!H,useCentrifugeSupport:U,hasCentrifugeChannel:!!m,hasMethods:!!I.current,hasDataName:!!r?.name});return}let z=Object.keys(I.current??{}).map((O)=>{let L=`pie${O}_${r.name}_${m}`;if(u)console.log(`[PieCard] Centrifuge subscribing to channel: ${L}`);let V=H.newSubscription(L);return V.on("publication",($)=>{if(u)console.log(`[PieCard] Centrifuge received data on ${L}:`,$.data);I.current?.[O]?.($.data)}),V.subscribe(),V});return()=>{z.forEach((O)=>{if(u)console.log("[PieCard] Centrifuge unsubscribing from channel");O.unsubscribe(),H.removeSubscription(O)})}},[H,m,r.name,U]),l.useEffect(()=>{if(!A||!C||!r.name){if(u&&C)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!A,useMittSupport:C,hasMethods:!!I.current,hasDataName:!!r?.name});return}let P=Object.keys(I.current??{}),z={};return P.forEach((O)=>{let L=`pie${O}_${r.name}`,V=($)=>{if(u)console.log(`[PieCard] Mitt registering event: ${L}`);I.current?.[O]?.($)};z[L]=V,A.on(L,V)}),()=>{Object.entries(z).forEach(([O,L])=>{if(u)console.log(`[PieCard] Mitt unregistering event: ${O}`);A.off(O,L)})}},[A,r.name,C]),u)console.log("[PieCard] Rendering complete, returning children");if(d!==void 0)return J.jsxs(J.Fragment,{children:[J.jsx("input",{type:"hidden",name:r.name,value:JSON.stringify(d)}),p]});return p},i=Fr;var lo=require("react"),R=new Map;function Jr(o,r){return r.catch(()=>{if(R.get(o)===r)R.delete(o)}),R.set(o,r),r}function Go(o,r){return lo.lazy(()=>{if(R.has(r))return R.get(r);return Jr(r,o().then((p)=>p))})}var Fo=Symbol.for("@swarm.ing/pieui:component-registry"),Jo=globalThis,Qo=Jo[Fo]??(Jo[Fo]=new Map),Qr=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=Go(r.loader,o.name),r.isLazy=!0;return r};function T(o){let r=Qr(o);return Qo.set(r.name,r),r.component}var v=(o)=>{return Qo.get(o)};var _=require("react");var Wo=require("react"),c=require("react/jsx-runtime"),Wr=Wo.createContext(c.jsx(c.Fragment,{})),G=Wr;var Xo=require("react"),Xr=Xo.createContext(void 0),t=Xr;var h=require("react"),Yo=require("react/jsx-runtime"),Yr=2,Mr=400;class Q extends h.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<Yr){let r=Mr*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((p)=>({failed:!1,attempt:p.attempt+1}))},r)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return Yo.jsx(h.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var s=require("react/jsx-runtime");function Kr({uiConfig:o,setUiAjaxConfiguration:r}){let p=_.useContext(G),f=_.useContext(t),U=K();if(U)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let C=v(o.card);if(!C?.component){if(U)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return p}if(U)console.log("[UI] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata});let m=C.component,S=s.jsx(m,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(C.isLazy){if(U)console.log("[UI] Rendering lazy component with Suspense:",C.name);return s.jsx(Q,{name:C.name,fallback:C.fallback?s.jsx(C.fallback,{}):p,onError:f,children:S})}if(U)console.log("[UI] Rendering component directly:",C.name);return S}var g=_.memo(Kr);var uo=require("react");var Mo=require("react"),Rr=Mo.createContext(null),q=Rr;var x=require("react/jsx-runtime");function Ko({uiConfig:o,setUiAjaxConfiguration:r}){let p=uo.useContext(G),f=uo.useContext(t),U=K();if(U)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let C=v(o.card);if(!C?.component){if(U)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return p}if(U)console.log("[UILoading] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata,hasFallback:!!C.fallback});if(C.fallback){if(U)console.log("[UILoading] Rendering fallback for:",C.name);let d=C.fallback;return x.jsx(d,{})}if(U)console.log("[UILoading] No fallback, rendering full component:",C.name);let m=C.component,S=x.jsx(q.Provider,{value:Ko,children:x.jsx(m,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(C.isLazy)return x.jsx(Q,{name:C.name,fallback:p,onError:f,children:S});return S}var Ro=Ko;var _o=require("react");var e=require("react/jsx-runtime"),_r=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f,sx:U}=o,C=_o.useContext(q)??g;return e.jsx(i,{card:f,data:o,children:e.jsx("div",{style:U,id:f,children:r.map((m,S)=>{return e.jsx(C,{uiConfig:m,setUiAjaxConfiguration:p},`children-${S}`)})})})},xo=_r;var yo=T({name:"SequenceCard",component:xo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Eo=require("react");var mo=require("react/jsx-runtime"),xr=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f}=o,U=Eo.useContext(q)??g;return mo.jsx(i,{card:f,data:o,children:r.map((C,m)=>{return mo.jsx(U,{uiConfig:C,setUiAjaxConfiguration:p},`children-${m}`)})})},ko=xr;var bo=T({name:"UnionCard",component:ko,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var oo=require("react"),No=Zo(require("html-react-parser"));var B=require("react");function yr(){let o=new AudioContext,r=o.createOscillator(),p=r.connect(o.createMediaStreamDestination());r.start();let f=p.stream.getAudioTracks()[0];return f.enabled=!1,f}function Io(o=null,r){let[p,f]=B.useState(!1),U=B.useRef(null),C=B.useRef(null),m=B.useRef(null),S=B.useCallback(async(w,H=!0)=>{if(U.current)d();let A=new RTCPeerConnection;if(A.onconnectionstatechange=()=>{if(A.connectionState==="connected")f(!0);else if(["disconnected","failed","closed"].includes(A.connectionState))f(!1)},A.ontrack=(D)=>{if(o)o.srcObject=D.streams[0]},H){let D=await navigator.mediaDevices.getUserMedia({audio:!0});A.addTrack(D.getTracks()[0],D)}else{let D=yr();A.addTrack(D)}let P=A.createDataChannel("oai-events");C.current=P,m.current=new Promise((D)=>{P.addEventListener("open",()=>{D()})});let z=await A.createOffer();await A.setLocalDescription(z);let $=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:z.sdp,headers:{Authorization:`Bearer ${w}`,"Content-Type":"application/sdp"}})).text();await A.setRemoteDescription({type:"answer",sdp:$}),U.current=A,await m.current},[o]),d=B.useCallback(()=>{let w=C.current;if(w)w.close();U.current?.getSenders()?.forEach((H)=>H.track?.stop()),U.current?.close(),f(!1),U.current=null,C.current=null,m.current=null},[o]),u=B.useCallback((w)=>{let H=C.current;if(!H){console.error("Data channel is not ready",w);return}let A=new Date().toLocaleTimeString();if(w.event_id=w.event_id||crypto.randomUUID(),H.send(JSON.stringify(w)),!w.timestamp)w.timestamp=A;r?.(w)},[r,o]),I=B.useCallback((w)=>{if(!C.current){console.error("Data channel is not ready");return}let A=()=>{u({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:w}]}}),u({type:"response.create"})};if(m.current)m.current.then(A);else A()},[r,o]);return B.useEffect(()=>{let w=C.current;if(!w)return;let H=(A)=>{let P=JSON.parse(A.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();r?.(P)};return w.addEventListener("message",H),()=>{w.removeEventListener("message",H)}},[r,o]),{isSessionActive:p,startSession:S,stopSession:d,sendTextMessage:I}}var no=require("react/jsx-runtime"),Er=({data:o})=>{let{html:r,useSocketioSupport:p,useCentrifugeSupport:f,useMittSupport:U,centrifugeChannel:C}=o,[m,S]=oo.useState(r),{isSessionActive:d,startSession:u,sendTextMessage:I}=Io(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)S((z)=>z+P.delta)});return oo.useEffect(()=>{S(r)},[r]),no.jsx(i,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{S(P.value)},generateUsingAI:async(P)=>{try{if(!d&&P.token)await u(P.token,!1);I(P.prompt)}catch(z){console.error("Failed to generate using AI",z)}},initializeAI:async(P)=>{if(!d&&P.token)await u(P.token,!1)}},useCentrifugeSupport:f,useSocketioSupport:p,useMittSupport:U,centrifugeChannel:C,children:No.default(m)})},jo=Er;var ao=T({name:"HTMLEmbedCard",component:jo,metadata:{author:"Swarm.ing"}});var ro=require("react");var So=require("react/jsx-runtime"),kr=({data:o})=>{let{name:r,value:p,useSocketioSupport:f,useCentrifugeSupport:U,useMittSupport:C,centrifugeChannel:m}=o,[S,d]=ro.useState(p);return ro.useEffect(()=>{d(p)},[p]),So.jsx(i,{card:"HiddenCard",data:o,useSocketioSupport:f,useCentrifugeSupport:U,useMittSupport:C,centrifugeChannel:m,methods:{update:({value:u})=>{d(u)}},children:So.jsx("input",{type:"hidden",id:r,name:r,value:S})})},vo=kr;var co=T({name:"HiddenCard",component:vo,metadata:{author:"Swarm.ing"}});var y=require("react");var to=require("react"),br=to.createContext(void 0),W=br;var fo=require("react/jsx-runtime"),Nr=({data:o})=>{let{url:r}=o,p=y.useContext(W),f=y.useContext(G);return y.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else p?.(r)},[r,p]),fo.jsx(fo.Fragment,{children:f})},ho=Nr;var so=T({name:"AutoRedirectCard",component:ho,metadata:{author:"Swarm.ing"}});var F=require("react-toastify"),po=require("react-toastify");var Y=require("react");var X=require("react/jsx-runtime"),jr={bounce:F.Bounce,slide:F.Slide,zoom:F.Zoom,flip:F.Flip},nr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?jr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};po.toast(o.message,r)},ar=(o)=>{console.log("Log event",o)},vr=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(f){console.error("[IOEventsCard] Failed to show notification",f)}},p=window.Notification.permission;if(p==="granted"){r();return}if(p==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((f)=>{if(f==="granted")r()})},cr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:p,useMittSupport:f,centrifugeChannel:U}=o,C=Y.useContext(W),m=Y.useRef(C);m.current=C;let S=Y.useMemo(()=>({alert:nr,log:ar,push:vr,redirect:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else m.current?.(u)}else window.location.reload()},reload:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else m.current?.(u)}else window.location.reload()}}),[]);return X.jsx(X.Fragment,{children:X.jsx(i,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:p,useMittSupport:f,centrifugeChannel:U,methods:S,children:X.jsx(po.ToastContainer,{})})})},eo=cr;var or=T({name:"IOEventsCard",component:eo,metadata:{author:"Swarm.ing"}});var E=require("react");var Po=require("react/jsx-runtime"),tr=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=E.useState(f);return E.useEffect(()=>{u(f)},[f]),E.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(p,d)},[p,d]),Po.jsx(i,{card:"SessionStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{sessionStorage.removeItem(p),u("")}},children:Po.jsx("input",{type:"hidden",id:r,name:r,value:d})})},rr=tr;var fr=T({name:"SessionStorageCard",component:rr,metadata:{author:"PieData"}});var k=require("react");var Ao=require("react/jsx-runtime"),hr=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=k.useState(f);return k.useEffect(()=>{u(f)},[f]),k.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(p,d)},[p,d]),Ao.jsx(i,{card:"DeviceStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{localStorage.removeItem(p),u("")}},children:Ao.jsx("input",{type:"hidden",id:r,name:r,value:d})})},pr=hr;var Cr=T({name:"DeviceStorageCard",component:pr,metadata:{author:"PieData"}});var b=require("react");var wo=require("react/jsx-runtime"),sr=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=b.useState(f);return b.useEffect(()=>{u(f)},[f]),b.useEffect(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp?.CloudStorage;if(!I)return;I.setItem(p,d)},[p,d]),wo.jsx(i,{card:"CloudStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{let I=window.Telegram?.WebApp?.CloudStorage;if(I)I.removeItem(p);u("")}},children:wo.jsx("input",{type:"hidden",id:r,name:r,value:d})})},Ur=sr;var ur=T({name:"CloudStorageCard",component:Ur,metadata:{author:"PieData"}});var N=require("react");var io=require("react/jsx-runtime"),er=({data:o})=>{let{name:r,key:p,value:f,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S}=o,[d,u]=N.useState(f);return N.useEffect(()=>{u(f)},[f]),N.useEffect(()=>{if(typeof window>"u")return;let I=window.Telegram?.WebApp?.SecureStorage;if(!I)return;I.setItem(p,d)},[p,d]),io.jsx(i,{card:"SecureStorageCard",data:o,useSocketioSupport:U,useCentrifugeSupport:C,useMittSupport:m,centrifugeChannel:S,methods:{update:({value:I})=>{u(I)},remove:()=>{let I=window.Telegram?.WebApp?.SecureStorage;if(I)I.removeItem(p);u("")}},children:io.jsx("input",{type:"hidden",id:r,name:r,value:d})})},mr=er;var Ir=T({name:"SecureStorageCard",component:mr,metadata:{author:"PieData"}});var Z=require("react");var To=require("react/jsx-runtime"),of=({data:o,content:r})=>{let{useLoader:p,noReturn:f,returnType:U,useSocketioSupport:C,useCentrifugeSupport:m,useMittSupport:S,centrifugeChannel:d}=o,u=Z.useContext(G),I=Z.useContext(q)??g,[w,H]=Z.useState(!1),[A,P]=Z.useState(null),z=Z.useRef(r),O=Z.useContext(a),L=Z.useCallback((D)=>{if(D===null)H(!0);else if(H(!1),!f)z.current=D;if(!f)P(D)},[f]),V=Z.useCallback((D)=>{z.current=D.content,P(D.content)},[]),$=Z.useCallback((D)=>{if(D===null)H(!0);else if(H(!1),!f)for(let Oo of D)O?.emit(Oo.name,Oo.data)},[f,O]);if(Z.useEffect(()=>{P(r),H(!1)},[r]),!A&&p)return u;return To.jsx(i,{card:"AjaxGroupCard",data:o,methods:{changeContent:V},useSocketioSupport:C,useCentrifugeSupport:m,useMittSupport:S,centrifugeChannel:d,children:To.jsx(I,{uiConfig:A??z.current,setUiAjaxConfiguration:U==="events"?$:L})})},dr=of;var Sr=T({name:"AjaxGroupCard",component:dr,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var Ho=require("react");var Co=require("react/jsx-runtime"),rf=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f,url:U,sx:C}=o,m=Ho.useContext(W),S=Ho.useContext(q)??g;return Co.jsx(i,{card:f,data:o,children:Co.jsx("div",{style:C,id:f,onClick:(u)=>{if(U)if(u.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else m?.(U)},children:Co.jsx(S,{setUiAjaxConfiguration:p,uiConfig:r})})})},Pr=rf;var Ar=T({name:"BoxCard",component:Pr,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var wr=require("react");var Uo=require("react/jsx-runtime"),ff=({data:o,content:r,setUiAjaxConfiguration:p})=>{let{name:f,sx:U}=o,C=wr.useContext(q)??g;return Uo.jsx(i,{card:f,data:o,children:Uo.jsx("div",{style:U,id:f,children:r.map((m,S)=>{return Uo.jsx(C,{uiConfig:m,setUiAjaxConfiguration:p},`children-${S}`)})})})},ir=ff;var Tr=T({name:"OneOfCard",component:ir,metadata:{author:"Swarm.ing",description:"Different variants"}});
package/dist/index.d.ts CHANGED
@@ -3,11 +3,12 @@ export { default as UI } from './components/UI';
3
3
  export { default as UILoading } from './components/UILoading';
4
4
  export { default as UIRendererContext, type UIRendererProps, } from './util/uiRenderer';
5
5
  export { default as PieRoot } from './components/PieRoot';
6
- export { default as PieTelegramRoot } from './components/PieTelegramRoot';
7
6
  export { default as PieBaseRoot } from './components/PieBaseRoot';
8
- export { default as PieMaxRoot } from './components/PieMaxRoot';
7
+ export { default as PiePreviewRoot } from './components/PiePreviewRoot';
8
+ export type { PiePreviewRootProps } from './components/PiePreviewRoot';
9
9
  export { default as PieCard } from './components/PieCard';
10
- export { registerPieComponent, getAllRegisteredComponents, getRegistrySize, registry, hasComponent, getRegistryEntry, getComponentMeta, registerMultipleComponents, unregisterComponent, } from './util/registry';
10
+ export { registerPieComponent, getAllRegisteredComponents, getRegistrySize, registry, hasComponent, getRegistryEntry, getComponentMeta, registerMultipleComponents, unregisterComponent, getLazyComponentNames, preloadComponent, prefetchLazyComponents, } from './util/registry';
11
+ export { trackLazy } from './util/lazy';
11
12
  export type { PieComponentProps, PieSimpleComponentProps, PieComplexComponentProps, PieContainerComponentProps, PieComplexContainerComponentProps, InputPieSimpleComponentProps, InputPieComplexComponentProps, InputPieContainerComponentProps, InputPieComplexContainerComponentProps, PieConfig, UIConfigType, SetUiAjaxConfigurationType, } from './types';
12
13
  export type { PieQueryOptions } from './components/PieRoot/types';
13
14
  export { useAjaxSubmit, readAjaxKey } from './util/ajaxCommonUtils';
@@ -18,11 +19,8 @@ export { default as SocketIOContext } from './util/socket';
18
19
  export { default as CentrifugeIOContext } from './util/centrifuge';
19
20
  export { default as FallbackContext } from './util/fallback';
20
21
  export { PieConfigContext } from './util/pieConfig';
21
- export { default as useOpenAIWebRTC, type OpenAIEvent, type UseOpenAIWebRTCReturn, } from './util/useOpenAIWebRTC';
22
22
  export { cn } from './util/tailwindCommonUtils';
23
23
  export { PIEBREAK } from './util/pieConfig';
24
24
  export { submitGlobalForm } from './util/globalForm.ts';
25
25
  export { pieName } from './util/pieName';
26
- export { useWebApp } from './util/useWebApp';
27
- export { useMaxWebApp } from './util/useMaxWebApp';
28
26
  //# sourceMappingURL=index.d.ts.map
@@ -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,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAC/D,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,GACtB,MAAM,iBAAiB,CAAA;AAExB,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;AAKnD,OAAO,EACH,OAAO,IAAI,eAAe,EAC1B,KAAK,WAAW,EAChB,KAAK,qBAAqB,GAC7B,MAAM,wBAAwB,CAAA;AAC/B,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;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,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,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"}
package/dist/index.esm.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{useContext as Yf,useEffect as Xf,useRef as NH}from"react";import{createContext as _H,useContext as QH}from"react";var j=_H(null),p=()=>{let f=QH(j);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},x=()=>{let{apiServer:f}=p();return f},e=x,o=()=>{let{centrifugeServer:f}=p();return f};var N=()=>{let{enableRenderingLog:f}=p();return f},Mf=N,Nf=()=>{let{pageProcessor:f}=p();return f};var Tf="__piedemo__";import{createContext as KH}from"react";import{Centrifuge as Af}from"centrifuge";var yf=new Map,b=(f,H)=>{if(!H)return null;let Z=`${f}::${H}`,U=yf.get(Z);if(U)return U;async function $(){let D=await fetch(f+"api/centrifuge/gen_token");if(!D.ok){if(D.status===403)throw new Af.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${D.status}`)}return(await D.json()).token}let z=new Af(H,{getToken:$});return yf.set(Z,z),z},WH=KH(null),A=WH;import{io as PH}from"socket.io-client";import{createContext as wH}from"react";var Ef=new Map,u=(f)=>{let H=Ef.get(f);if(H)return H;let Z=PH(f,{autoConnect:!1,transports:["websocket"]});return Ef.set(f,Z),Z},CH=wH(null),y=CH;import FH from"mitt";import{createContext as RH,useCallback as SH,useContext as LH}from"react";var Jf=null;function d(){if(!Jf)Jf=FH();return Jf}var kf=RH(null);function MH(f){let H=LH(kf);return SH((Z,U)=>{(H??d()).emit(`pie${Z}_${f}`,U)},[f,H])}var E=kf;import{jsx as EH,jsxs as kH,Fragment as yH}from"react/jsx-runtime";var AH=({card:f,data:H,children:Z,useSocketioSupport:U=!1,useCentrifugeSupport:$=!1,useMittSupport:z=!1,centrifugeChannel:D=void 0,methods:J=void 0,stored:V=void 0})=>{let T=Mf(),X=NH(J);if(X.current=J,T)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",H),console.log("[PieCard] Component name:",H?.name),console.log("[PieCard] Real-time support:",{socketio:U,centrifuge:$,mitt:z,centrifugeChannel:D}),console.log("[PieCard] Methods:",J?Object.keys(J):"none"),console.log("[PieCard] Has children:",!!Z);let B=Yf(y),Q=Yf(A),q=Yf(E);if(Xf(()=>{if(!B||!U||!X.current||!H.name){if(T&&U)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:U,hasMethods:!!X.current,hasDataName:!!H?.name});return}let I=Object.keys(X.current??{}).map((Y)=>{let O=`pie${Y}_${H.name}`;if(T)console.log(`[PieCard] Socket.IO registering event: ${O}`);let K=(_)=>{X.current?.[Y]?.(_)};return B.on(O,K),[O,K]});return()=>{I.forEach(([Y,O])=>{if(T)console.log(`[PieCard] Socket.IO unregistering event: ${Y}`);B.off(Y,O)})}},[B,H.name,U]),Xf(()=>{if(!Q||!$||!D||!H.name){if(T&&$)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!Q,useCentrifugeSupport:$,hasCentrifugeChannel:!!D,hasMethods:!!X.current,hasDataName:!!H?.name});return}let I=Object.keys(X.current??{}).map((Y)=>{let O=`pie${Y}_${H.name}_${D}`;if(T)console.log(`[PieCard] Centrifuge subscribing to channel: ${O}`);let K=Q.newSubscription(O);return K.on("publication",(_)=>{if(T)console.log(`[PieCard] Centrifuge received data on ${O}:`,_.data);X.current?.[Y]?.(_.data)}),K.subscribe(),K});return()=>{I.forEach((Y)=>{if(T)console.log("[PieCard] Centrifuge unsubscribing from channel");Y.unsubscribe(),Q.removeSubscription(Y)})}},[Q,D,H.name,$]),Xf(()=>{if(!q||!z||!H.name){if(T&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!q,useMittSupport:z,hasMethods:!!X.current,hasDataName:!!H?.name});return}let G=Object.keys(X.current??{}),I={};return G.forEach((Y)=>{let O=`pie${Y}_${H.name}`,K=(_)=>{if(T)console.log(`[PieCard] Mitt registering event: ${O}`);X.current?.[Y]?.(_)};I[O]=K,q.on(O,K)}),()=>{Object.entries(I).forEach(([Y,O])=>{if(T)console.log(`[PieCard] Mitt unregistering event: ${Y}`);q.off(Y,O)})}},[q,H.name,z]),T)console.log("[PieCard] Rendering complete, returning children");if(V!==void 0)return kH(yH,{children:[EH("input",{type:"hidden",name:H.name,value:JSON.stringify(V)}),Z]});return Z},w=AH;import{lazy as mH}from"react";var qf=new Map;function mf(f,H){return mH(()=>{if(qf.has(H))return qf.get(H);let Z=f().then((U)=>U);return qf.set(H,Z),Z})}var v=new Map,jH=(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 H={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!H.component&&H.loader)H.component=mf(H.loader,f.name),H.loader=void 0,H.isLazy=!0;return H};function W(f){let H=jH(f);return v.set(H.name,H),H.component}var dH=(f)=>{f.forEach((H)=>W(H))},xH=(f)=>{v.delete(f)},oH=(f)=>{return v.has(f)},bH=(f)=>{return v.get(f)?.metadata},r=(f)=>{return v.get(f)},uH=()=>{return Array.from(v.keys())},vH=()=>{return v.size};import{Suspense as lH,useContext as rH,memo as nH}from"react";import{createContext as gH}from"react";import{jsx as pH,Fragment as hH}from"react/jsx-runtime";var cH=gH(pH(hH,{})),F=cH;import{jsx as Gf}from"react/jsx-runtime";function sH({uiConfig:f,setUiAjaxConfiguration:H}){let Z=rH(F),U=N();if(U)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:",!!H);let $=r(f.card);if(!$?.component){if(U)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return Z}if(U)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let z=$.component,D=Gf(z,{data:f.data,content:f.content,setUiAjaxConfiguration:H});if($.isLazy){if(U)console.log("[UI] Rendering lazy component with Suspense:",$.name);return Gf(lH,{fallback:$.fallback?Gf($.fallback,{}):Z,children:D},`${$.name}`)}if(U)console.log("[UI] Rendering component directly:",$.name);return D}var C=nH(sH);import{Suspense as aH,useContext as eH}from"react";import{createContext as iH}from"react";var tH=iH(null),k=tH;import{jsx as ff}from"react/jsx-runtime";function jf({uiConfig:f,setUiAjaxConfiguration:H}){let Z=eH(F),U=N();if(U)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:",!!H);let $=r(f.card);if(!$?.component){if(U)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return Z}if(U)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(U)console.log("[UILoading] Rendering fallback for:",$.name);let J=$.fallback;return ff(J,{})}if(U)console.log("[UILoading] No fallback, rendering full component:",$.name);let z=$.component,D=ff(k.Provider,{value:jf,children:ff(z,{data:f.data,content:f.content,setUiAjaxConfiguration:H})});if($.isLazy)return ff(aH,{fallback:Z,children:D},`${$.name}`);return D}var Of=jf;import{useContext as fU}from"react";import{jsx as Bf}from"react/jsx-runtime";var HU=({data:f,content:H,setUiAjaxConfiguration:Z})=>{let{name:U,sx:$}=f,z=fU(k)??C;return Bf(w,{card:U,data:f,children:Bf("div",{style:$,id:U,children:H.map((D,J)=>{return Bf(z,{uiConfig:D,setUiAjaxConfiguration:Z},`children-${J}`)})})})},df=HU;var UU=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 xf}from"react/jsx-runtime";var $U=({data:f,content:H,setUiAjaxConfiguration:Z})=>{let{name:U}=f,$=ZU(k)??C;return xf(w,{card:U,data:f,children:H.map((z,D)=>{return xf($,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${D}`)})})},of=$U;var DU=W({name:"UnionCard",component:of,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as JU,useState as YU}from"react";import XU from"html-react-parser";import{useCallback as Hf,useEffect as zU,useRef as If,useState as VU}from"react";function TU(){let f=new AudioContext,H=f.createOscillator(),Z=H.connect(f.createMediaStreamDestination());H.start();let U=Z.stream.getAudioTracks()[0];return U.enabled=!1,U}function Uf(f=null,H){let[Z,U]=VU(!1),$=If(null),z=If(null),D=If(null),J=Hf(async(B,Q=!0)=>{if($.current)V();let q=new RTCPeerConnection;if(q.onconnectionstatechange=()=>{if(q.connectionState==="connected")U(!0);else if(["disconnected","failed","closed"].includes(q.connectionState))U(!1)},q.ontrack=(P)=>{if(f)f.srcObject=P.streams[0]},Q){let P=await navigator.mediaDevices.getUserMedia({audio:!0});q.addTrack(P.getTracks()[0],P)}else{let P=TU();q.addTrack(P)}let G=q.createDataChannel("oai-events");z.current=G,D.current=new Promise((P)=>{G.addEventListener("open",()=>{P()})});let I=await q.createOffer();await q.setLocalDescription(I);let _=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:I.sdp,headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/sdp"}})).text();await q.setRemoteDescription({type:"answer",sdp:_}),$.current=q,await D.current},[f]),V=Hf(()=>{let B=z.current;if(B)B.close();$.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),$.current?.close(),U(!1),$.current=null,z.current=null,D.current=null},[f]),T=Hf((B)=>{let Q=z.current;if(!Q){console.error("Data channel is not ready",B);return}let q=new Date().toLocaleTimeString();if(B.event_id=B.event_id||crypto.randomUUID(),Q.send(JSON.stringify(B)),!B.timestamp)B.timestamp=q;H?.(B)},[H,f]),X=Hf((B)=>{if(!z.current){console.error("Data channel is not ready");return}let q=()=>{T({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:B}]}}),T({type:"response.create"})};if(D.current)D.current.then(q);else q()},[H,f]);return zU(()=>{let B=z.current;if(!B)return;let Q=(q)=>{let G=JSON.parse(q.data);if(!G.timestamp)G.timestamp=new Date().toLocaleTimeString();H?.(G)};return B.addEventListener("message",Q),()=>{B.removeEventListener("message",Q)}},[H,f]),{isSessionActive:Z,startSession:J,stopSession:V,sendTextMessage:X}}import{jsx as GU}from"react/jsx-runtime";var qU=({data:f})=>{let{html:H,useSocketioSupport:Z,useCentrifugeSupport:U,useMittSupport:$,centrifugeChannel:z}=f,[D,J]=YU(H),{isSessionActive:V,startSession:T,sendTextMessage:X}=Uf(null,(G)=>{if(console.log(G.type,G.type==="response.output_text.delta"&&G.delta),G.type==="response.output_text.delta"&&G.delta)J((I)=>I+G.delta)});return JU(()=>{J(H)},[H]),GU(w,{card:"HTMLEmbedCard",data:f,methods:{update:(G)=>{J(G.value)},generateUsingAI:async(G)=>{try{if(!V&&G.token)await T(G.token,!1);X(G.prompt)}catch(I){console.error("Failed to generate using AI",I)}},initializeAI:async(G)=>{if(!V&&G.token)await T(G.token,!1)}},useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:$,centrifugeChannel:z,children:XU(D)})},bf=qU;var OU=W({name:"HTMLEmbedCard",component:bf,metadata:{author:"Swarm.ing"}});import{useEffect as BU,useState as IU}from"react";import{jsx as uf}from"react/jsx-runtime";var _U=({data:f})=>{let{name:H,value:Z,useSocketioSupport:U,useCentrifugeSupport:$,useMittSupport:z,centrifugeChannel:D}=f,[J,V]=IU(Z);return BU(()=>{V(Z)},[Z]),uf(w,{card:"HiddenCard",data:f,useSocketioSupport:U,useCentrifugeSupport:$,useMittSupport:z,centrifugeChannel:D,methods:{update:({value:T})=>{V(T)}},children:uf("input",{type:"hidden",id:H,name:H,value:J})})},vf=_U;var QU=W({name:"HiddenCard",component:vf,metadata:{author:"Swarm.ing"}});import{useContext as gf,useEffect as PU}from"react";import{createContext as KU}from"react";var WU=KU(void 0),R=WU;import{jsx as FU,Fragment as CU}from"react/jsx-runtime";var wU=({data:f})=>{let{url:H}=f,Z=gf(R),U=gf(F);return PU(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z?.(H)},[H,Z]),FU(CU,{children:U})},cf=wU;var RU=W({name:"AutoRedirectCard",component:cf,metadata:{author:"Swarm.ing"}});import{Bounce as SU,Slide as LU,Zoom as MU,Flip as NU}from"react-toastify";import{toast as AU,ToastContainer as yU}from"react-toastify";import{useContext as EU,useMemo as kU,useRef as mU}from"react";import{jsx as _f,Fragment as uU}from"react/jsx-runtime";var jU={bounce:SU,slide:LU,zoom:MU,flip:NU},dU=(f)=>{let H={...f,type:f.alertType,transition:f.transition?jU[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};AU(f.message,H)},xU=(f)=>{console.log("Log event",f)},oU=(f)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let H=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(U){console.error("[IOEventsCard] Failed to show notification",U)}},Z=window.Notification.permission;if(Z==="granted"){H();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((U)=>{if(U==="granted")H()})},bU=({data:f})=>{let{useCentrifugeSupport:H,useSocketioSupport:Z,useMittSupport:U,centrifugeChannel:$}=f,z=EU(R),D=mU(z);D.current=z;let J=kU(()=>({alert:dU,log:xU,push:oU,redirect:(V)=>{if(V.to){let T=V.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else D.current?.(T)}else window.location.reload()},reload:(V)=>{if(V.to){let T=V.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else D.current?.(T)}else window.location.reload()}}),[]);return _f(uU,{children:_f(w,{card:"IOEventsCard",data:f,useCentrifugeSupport:H,useSocketioSupport:Z,useMittSupport:U,centrifugeChannel:$,methods:J,children:_f(yU,{})})})},hf=bU;var vU=W({name:"IOEventsCard",component:hf,metadata:{author:"Swarm.ing"}});import{useEffect as pf,useState as gU}from"react";import{jsx as lf}from"react/jsx-runtime";var cU=({data:f})=>{let{name:H,key:Z,value:U,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J}=f,[V,T]=gU(U);return pf(()=>{T(U)},[U]),pf(()=>{if(typeof window>"u")return;sessionStorage.setItem(Z,V)},[Z,V]),lf(w,{card:"SessionStorageCard",data:f,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J,methods:{update:({value:X})=>{T(X)},remove:()=>{sessionStorage.removeItem(Z),T("")}},children:lf("input",{type:"hidden",id:H,name:H,value:V})})},rf=cU;var hU=W({name:"SessionStorageCard",component:rf,metadata:{author:"PieData"}});import{useEffect as nf,useState as pU}from"react";import{jsx as sf}from"react/jsx-runtime";var lU=({data:f})=>{let{name:H,key:Z,value:U,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J}=f,[V,T]=pU(U);return nf(()=>{T(U)},[U]),nf(()=>{if(typeof window>"u")return;localStorage.setItem(Z,V)},[Z,V]),sf(w,{card:"DeviceStorageCard",data:f,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J,methods:{update:({value:X})=>{T(X)},remove:()=>{localStorage.removeItem(Z),T("")}},children:sf("input",{type:"hidden",id:H,name:H,value:V})})},tf=lU;var rU=W({name:"DeviceStorageCard",component:tf,metadata:{author:"PieData"}});import{useEffect as af,useState as nU}from"react";import{jsx as ef}from"react/jsx-runtime";var sU=({data:f})=>{let{name:H,key:Z,value:U,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J}=f,[V,T]=nU(U);return af(()=>{T(U)},[U]),af(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.CloudStorage;if(!X)return;X.setItem(Z,V)},[Z,V]),ef(w,{card:"CloudStorageCard",data:f,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J,methods:{update:({value:X})=>{T(X)},remove:()=>{let X=window.Telegram?.WebApp?.CloudStorage;if(X)X.removeItem(Z);T("")}},children:ef("input",{type:"hidden",id:H,name:H,value:V})})},fH=sU;var iU=W({name:"CloudStorageCard",component:fH,metadata:{author:"PieData"}});import{useEffect as HH,useState as tU}from"react";import{jsx as UH}from"react/jsx-runtime";var aU=({data:f})=>{let{name:H,key:Z,value:U,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J}=f,[V,T]=tU(U);return HH(()=>{T(U)},[U]),HH(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.SecureStorage;if(!X)return;X.setItem(Z,V)},[Z,V]),UH(w,{card:"SecureStorageCard",data:f,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:D,centrifugeChannel:J,methods:{update:({value:X})=>{T(X)},remove:()=>{let X=window.Telegram?.WebApp?.SecureStorage;if(X)X.removeItem(Z);T("")}},children:UH("input",{type:"hidden",id:H,name:H,value:V})})},ZH=aU;var eU=W({name:"SecureStorageCard",component:ZH,metadata:{author:"PieData"}});import{useCallback as Qf,useContext as Kf,useEffect as fZ,useRef as HZ,useState as $H}from"react";import{jsx as DH}from"react/jsx-runtime";var UZ=({data:f,content:H})=>{let{useLoader:Z,noReturn:U,returnType:$,useSocketioSupport:z,useCentrifugeSupport:D,useMittSupport:J,centrifugeChannel:V}=f,T=Kf(F),X=Kf(k)??C,[B,Q]=$H(!1),[q,G]=$H(null),I=HZ(H),Y=Kf(E),O=Qf((P)=>{if(P===null)Q(!0);else if(Q(!1),!U)I.current=P;if(!U)G(P)},[U]),K=Qf((P)=>{I.current=P.content,G(P.content)},[]),_=Qf((P)=>{if(P===null)Q(!0);else if(Q(!1),!U)for(let t of P)Y?.emit(t.name,t.data)},[U,Y]);if(fZ(()=>{G(H),Q(!1)},[H]),!q&&Z)return T;return DH(w,{card:"AjaxGroupCard",data:f,methods:{changeContent:K},useSocketioSupport:z,useCentrifugeSupport:D,useMittSupport:J,centrifugeChannel:V,children:DH(X,{uiConfig:q??I.current,setUiAjaxConfiguration:$==="events"?_:O})})},zH=UZ;var ZZ=W({name:"AjaxGroupCard",component:zH,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as VH}from"react";import{jsx as Wf}from"react/jsx-runtime";var $Z=({data:f,content:H,setUiAjaxConfiguration:Z})=>{let{name:U,url:$,sx:z}=f,D=VH(R),J=VH(k)??C;return Wf(w,{card:U,data:f,children:Wf("div",{style:z,id:U,onClick:(T)=>{if($)if(T.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($))window.location.href=$;else D?.($)},children:Wf(J,{setUiAjaxConfiguration:Z,uiConfig:H})})})},TH=$Z;var DZ=W({name:"BoxCard",component:TH,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as zZ}from"react";import{jsx as Pf}from"react/jsx-runtime";var VZ=({data:f,content:H,setUiAjaxConfiguration:Z})=>{let{name:U,sx:$}=f,z=zZ(k)??C;return Pf(w,{card:U,data:f,children:Pf("div",{style:$,id:U,children:H.map((D,J)=>{return Pf(z,{uiConfig:D,setUiAjaxConfiguration:Z},`children-${J}`)})})})},JH=VZ;var TZ=W({name:"OneOfCard",component:JH,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as n}from"react";import{QueryClient as QZ,QueryClientProvider as KZ,useQuery as WZ}from"@tanstack/react-query";import{useContext as XZ,useEffect as qZ}from"react";import{useEffect as JZ,useState as YZ}from"react";var Zf=new Map,$f=new Map;function Df(f,H){let Z=`${f}::${H}`,U=f?Zf.get(Z):void 0,[$,z]=YZ(U??null);return JZ(()=>{if(!f)return;if(Zf.has(Z)){z(Zf.get(Z));return}let D=$f.get(Z);if(!D)D=fetch(f+`api/support/${H}`,{method:"GET"}).then((V)=>V.json()).then((V)=>{return Zf.set(Z,V),$f.delete(Z),V}).catch((V)=>{throw $f.delete(Z),V}),$f.set(Z,D);let J=!1;return D.then((V)=>{if(!J)z(V)}).catch(()=>{}),()=>{J=!0}},[f,H,Z]),$}var wf=null,YH=null;function XH(){YH?.()}function Cf(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!wf)wf=new Promise((f)=>{YH=()=>{f()}});return wf}var GZ=({children:f})=>{let H=XZ(y),Z=e(),U=Df(Z,"socketIO"),$=(z)=>{if(typeof window<"u")window.sid=z.sid,XH(),console.log(`SocketIO initialized: ${window.sid}`)};return qZ(()=>{if(!H)return;let z=()=>{console.log("SocketIO connected")},D=(J)=>{console.log(`SocketIO disconnected: ${J}`),H.connect()};if(U)H.on("pieinit",$),H.on("connect",z),H.on("disconnect",D),H.connect();return()=>{if(U)H.off("pieinit",$),H.off("connect",z),H.off("disconnect",D),H.disconnect()}},[H,U]),f},g=GZ;import{useContext as OZ,useEffect as BZ}from"react";var IZ=({children:f})=>{let H=OZ(A),Z=e(),U=Df(Z,"centrifuge");return BZ(()=>{if(!H)return;let $=()=>{console.log("Centrifuge connected")},z=(D)=>{console.log("Centrifuge disconnected:",D)};if(U)H.on("connected",$),H.on("disconnected",z),H.connect();return()=>{if(U)H.disconnect()}},[H,U]),f},c=IZ;import{createAxiosDateTransformer as PZ}from"axios-date-transformer";import{jsx as _Z}from"react/jsx-runtime";function l(f,H,Z){if(!H)return Z;let U=f.replace(/^\//,""),$=H[U];if(!$)return Z;return _Z(Of,{uiConfig:$})}import{jsx as S,Fragment as FZ}from"react/jsx-runtime";var wZ=({location:f,fallback:H,piecache:Z,onError:U,queryOptions:$,disableGlobalForm:z})=>{let D=x(),J=o(),V=N(),T=n(()=>PZ({baseURL:D||""}),[D]),X=n(()=>d(),[]),B=n(()=>D?u(D):null,[D]),Q=n(()=>D?b(D,J):null,[D,J]),{data:q,isLoading:G,error:I}=WZ({queryKey:["uiConfig",f.pathname+f.search,D],enabled:!!D,queryFn:async()=>{let O=new URLSearchParams(f.search);O.set("__pieroot","web");let K="/api/content"+f.pathname+"?"+O.toString();if(V)console.log("[PieRoot] Fetching UI configuration from:",K);let _=await T.get(K,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(V)console.log("[PieRoot] Received UI configuration:",_.data);return _.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(O)=>Math.min(1000*2**O,30000),...$}),Y=l(f.pathname,Z,H);if(!D)return Y??null;if(V)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",J),console.log("[PieRoot] Fallback provided:",!!H),console.log("[PieRoot] Piecache provided:",!!Z);if(I){if(V)console.error("[PieRoot] Error fetching UI configuration:",I),console.error("[PieRoot] Error details:",{message:I.message,status:I.response?.status,data:I.response?.data});return U?.(),Y}if(G||!q){if(V)console.log("[PieRoot] Loading state:",{isLoading:G,hasUiConfiguration:!!q});return Y}if(V)console.log("[PieRoot] UI configuration loaded successfully:",q),console.log("[PieRoot] Rendering UI with configuration");return S(E.Provider,{value:X,children:S(y.Provider,{value:B,children:S(A.Provider,{value:Q,children:S(F.Provider,{value:H??S(FZ,{}),children:S(g,{children:S(c,{children:z?S(C,{uiConfig:q}):S("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:S(C,{uiConfig:q})})})})})})})})},CZ=(f)=>{let H=n(()=>new QZ,[]);return S(R.Provider,{value:f.onNavigate,children:S(j.Provider,{value:f.config,children:S(KZ,{client:H,children:S(wZ,{...f})})})})},RZ=CZ;import{useMemo as s}from"react";import{QueryClient as MZ,QueryClientProvider as NZ,useQuery as AZ}from"@tanstack/react-query";import{createAxiosDateTransformer as yZ}from"axios-date-transformer";import{useEffect as SZ,useState as LZ}from"react";var Ff=({onError:f}={})=>{let[H,Z]=LZ(null),U=Nf();return SZ(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp;if(!$)return;try{$.ready?.()}catch(z){f?.()}if(U==="telegram_expanded"&&($.platform==="ios"||$.platform==="android"))$.expand();Z($)},[]),H};import{jsx as L,Fragment as mZ}from"react/jsx-runtime";var EZ=({location:f,fallback:H,piecache:Z,onError:U,queryOptions:$,disableGlobalForm:z})=>{let D=x(),J=o(),V=N(),T=s(()=>yZ({baseURL:D}),[D]),X=s(()=>d(),[]),B=s(()=>D?u(D):null,[D]),Q=s(()=>D?b(D,J):null,[D,J]),q=Ff({onError:U}),{data:G,isLoading:I,error:Y}=AZ({queryKey:["uiConfig",f.pathname+f.search,q?.initData],enabled:!!q?.initData,queryFn:async()=>{let K=new URLSearchParams(f.search);if(K.set("__pieroot","telegram"),q?.initData)K.set("initData",q.initData);let _="/api/content"+f.pathname+"?"+K.toString();if(V)console.log("[PieRoot] Fetching UI configuration from:",_);let P=await T.get(_,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(V)console.log("[PieRoot] Received UI configuration:",P.data);return P.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(K)=>Math.min(1000*2**K,30000),...$}),O=l(f.pathname,Z,H);if(!D)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(Y&&V)return console.error("[PieRoot] Error fetching UI configuration:",Y),console.error("[PieRoot] Error details:",{message:Y.message,status:Y.response?.status,data:Y.response?.data}),U?.(),O;if(I||!G){if(V)console.log("[PieRoot] Loading state:",{isLoading:I,hasUiConfiguration:!!G});return O}if(V)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return L(E.Provider,{value:X,children:L(y.Provider,{value:B,children:L(A.Provider,{value:Q,children:L(F.Provider,{value:H??L(mZ,{}),children:L(g,{children:L(c,{children:z?L(C,{uiConfig:G}):L("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:L(C,{uiConfig:G})})})})})})})})},kZ=(f)=>{let H=s(()=>new MZ,[]);return L(R.Provider,{value:f.onNavigate,children:L(j.Provider,{value:f.config,children:L(NZ,{client:H,children:L(EZ,{...f})})})})},jZ=kZ;import{useMemo as Rf,useState as dZ}from"react";import{QueryClient as xZ,QueryClientProvider as oZ}from"@tanstack/react-query";import{jsx as m,Fragment as vZ}from"react/jsx-runtime";var bZ=({location:f,fallback:H,children:Z,disableGlobalForm:U})=>{let $=x(),z=o(),D=N(),J=Rf(()=>d(),[]),V=Rf(()=>$?u($):null,[$]),T=Rf(()=>$?b($,z):null,[$,z]);if(D)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",$),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!H);return m(E.Provider,{value:J,children:m(y.Provider,{value:V,children:m(A.Provider,{value:T,children:m(F.Provider,{value:H??m(vZ,{}),children:m(g,{children:m(c,{children:U?Z:m("form",{id:"piedata_global_form",action:$+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},uZ=(f)=>{let[H]=dZ(()=>new xZ);return m(R.Provider,{value:f.onNavigate,children:m(j.Provider,{value:f.config,children:m(oZ,{client:H,children:m(bZ,{...f})})})})},gZ=uZ;import{useMemo as i}from"react";import{QueryClient as pZ,QueryClientProvider as lZ,useQuery as rZ}from"@tanstack/react-query";import{createAxiosDateTransformer as nZ}from"axios-date-transformer";import{useEffect as cZ,useState as hZ}from"react";var Sf=()=>{let[f,H]=hZ(null);return cZ(()=>{if(typeof window>"u")return;let Z=window.WebApp;if(!Z)return;Z.ready(),H(Z)},[]),f};import{jsx as M,Fragment as tZ}from"react/jsx-runtime";var sZ=({location:f,fallback:H,piecache:Z,onError:U,queryOptions:$,disableGlobalForm:z})=>{let D=x(),J=o(),V=N(),T=i(()=>nZ({baseURL:D}),[D]),X=i(()=>d(),[]),B=i(()=>D?u(D):null,[D]),Q=i(()=>D?b(D,J):null,[D,J]),q=Sf(),{data:G,isLoading:I,error:Y}=rZ({queryKey:["uiConfig",f.pathname+f.search,q?.initData],queryFn:async()=>{let K=new URLSearchParams(f.search);if(K.set("__pieroot","max"),q?.initData)K.set("initData",q.initData);let _="/api/content"+f.pathname+"?"+K.toString();if(V)console.log("[PieRoot] Fetching UI configuration from:",_);let P=await T.get(_,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(V)console.log("[PieRoot] Received UI configuration:",P.data);return P.data},enabled:!!q?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(K)=>Math.min(1000*2**K,30000),...$}),O=l(f.pathname,Z,H);if(!D)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(Y&&V)return console.error("[PieRoot] Error fetching UI configuration:",Y),console.error("[PieRoot] Error details:",{message:Y.message,status:Y.response?.status,data:Y.response?.data}),U?.(),O;if(I||!G){if(V)console.log("[PieRoot] Loading state:",{isLoading:I,hasUiConfiguration:!!G});return O}if(V)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return M(E.Provider,{value:X,children:M(y.Provider,{value:B,children:M(A.Provider,{value:Q,children:M(F.Provider,{value:H??M(tZ,{}),children:M(g,{children:M(c,{children:z?M(C,{uiConfig:G}):M("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:M(C,{uiConfig:G})})})})})})})})},iZ=(f)=>{let H=i(()=>new pZ,[]);return M(R.Provider,{value:f.onNavigate,children:M(j.Provider,{value:f.config,children:M(lZ,{client:H,children:M(sZ,{...f})})})})},aZ=iZ;import{useMemo as eZ}from"react";var qH=(f,H=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let Z=document.getElementsByName(f);if(!Z.length){if(H)console.warn(`No input found with name ${f}`);return[]}let U=Z[0];if(U instanceof HTMLInputElement){if(U.type==="file"&&U.files)return Array.from(U.files);return[U.value]}if(U instanceof HTMLTextAreaElement)return[U.value];return[]},f$=(f,H={},Z=[],U,$)=>{let z=$?.renderingLogEnabled??!1,D=$?.timeout,J=$?.retryPolicy,V=J?.maxRetries??0,T=J?.baseDelay??1000,X=J?.retryOn??[502,503,504];if(z)console.log("Registering AJAX: ",U,H,Z);return async(B={})=>{if(typeof window>"u"||typeof document>"u"){if(z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let Q=$?.apiServer;if(!Q){if(z)console.warn("AJAX skipped: apiServer is missing");return}if(!U||!f){if(z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await Cf();let q=new FormData;for(let[Y,O]of Object.entries({...H,...B}))q.append(Y,O);for(let Y of Z)for(let O of qH(Y,z))q.append(Y,O);let G=Q+"api/ajax_content"+U;f(null);let I;for(let Y=0;Y<=V;Y++){if(Y>0){let _=T*2**(Y-1);if(z)console.log(`AJAX retry ${Y}/${V} after ${_}ms`);await new Promise((P)=>setTimeout(P,_))}let O=D!=null?new AbortController:null,K=O&&setTimeout(()=>O.abort(),D);try{let _=await fetch(G,{method:"POST",body:q,signal:O?.signal});if(K)clearTimeout(K);if(!_.ok&&X.includes(_.status)&&Y<V){I=Error(`HTTP ${_.status}`);continue}let t=(_.headers.get("content-type")||"").includes("application/json");if(!!_.body?.getReader&&!t){let a=_.body.getReader(),GH=new TextDecoder,h="";while(!0){let{done:zf,value:OH}=await a.read();if(zf)break;h+=GH.decode(OH,{stream:!0});let Lf=h.split(`
3
- `);h=Lf.pop()??"";for(let BH of Lf){let Vf=BH.trim();if(!Vf)continue;try{let IH=JSON.parse(Vf);f([IH])}catch{if(z)console.warn("Failed to parse streamed line:",Vf)}}}if(h.trim())try{let zf=JSON.parse(h);f([zf])}catch{if(z)console.warn("Failed to parse final streamed line:",h)}return{}}else{let a=await _.json();return f(a),a}}catch(_){if(K)clearTimeout(K);if(I=_,Y<V)continue;if(z)console.error("AJAX request failed:",_);return f(null),_}}if(z)console.error("AJAX request failed after retries:",I);return f(null),I}},H$=(f,H={},Z=[],U,$)=>{let{apiServer:z,enableRenderingLog:D}=p(),J=JSON.stringify(H),V=JSON.stringify(Z),T=JSON.stringify($);return eZ(()=>f$(f,H,Z,U,{apiServer:z,renderingLogEnabled:D,timeout:$?.timeout,retryPolicy:$?.retryPolicy}),[f,J,V,U,z,D,T])};import{clsx as U$}from"clsx";import{twMerge as Z$}from"tailwind-merge";function $$(...f){return Z$(U$(f))}var D$=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var z$=(f,H)=>`${f}${Tf}${H}`;export{Ff as useWebApp,MH as usePieEmit,Uf as useOpenAIWebRTC,Sf as useMaxWebApp,H$ as useAjaxSubmit,xH as unregisterComponent,D$ as submitGlobalForm,v as registry,W as registerPieComponent,dH as registerMultipleComponents,qH as readAjaxKey,z$ as pieName,oH as hasComponent,vH as getRegistrySize,r as getRegistryEntry,d as getEmitter,bH as getComponentMeta,uH as getAllRegisteredComponents,$$ as cn,DU as UnionCard,k as UIRendererContext,Of as UILoading,C as UI,y as SocketIOContext,hU as SessionStorageCard,UU as SequenceCard,eU as SecureStorageCard,jZ as PieTelegramRoot,RZ as PieRoot,aZ as PieMaxRoot,j as PieConfigContext,w as PieCard,gZ as PieBaseRoot,Tf as PIEBREAK,TZ as OneOfCard,E as MittContext,vU as IOEventsCard,QU as HiddenCard,OU as HTMLEmbedCard,F as FallbackContext,rU as DeviceStorageCard,iU as CloudStorageCard,A as CentrifugeIOContext,DZ as BoxCard,RU as AutoRedirectCard,ZZ as AjaxGroupCard};
2
+ import{useContext as Of,useEffect as Vf,useRef as jU}from"react";import{createContext as KU,useContext as SU}from"react";var m=KU(null),d=()=>{let f=SU(m);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},v=()=>{let{apiServer:f}=d();return f},h=v,r=()=>{let{centrifugeServer:f}=d();return f};var R=()=>{let{enableRenderingLog:f}=d();return f},_f=R;var Df="__piedemo__";import{createContext as _U}from"react";import{Centrifuge as wf}from"centrifuge";var Mf=new Map,n=(f,U)=>{if(!U)return null;let C=`${f}::${U}`,H=Mf.get(C);if(H)return H;async function D(){let Z=await fetch(f+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new wf.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let I=new wf(U,{getToken:D});return Mf.set(C,I),I},wU=_U(null),N=wU;import{io as MU}from"socket.io-client";import{createContext as LU}from"react";var Lf=new Map,i=(f)=>{let U=Lf.get(f);if(U)return U;let C=MU(f,{autoConnect:!1,transports:["websocket"]});return Lf.set(f,C),C},oU=LU(null),E=oU;import RU from"mitt";import{createContext as NU,useCallback as EU,useContext as yU}from"react";var Zf=null;function u(){if(!Zf)Zf=RU();return Zf}var of=NU(null);function kU(f){let U=yU(of);return EU((C,H)=>{(U??u()).emit(`pie${C}_${f}`,H)},[f,U])}var y=of;import{jsx as uU,jsxs as bU,Fragment as mU}from"react/jsx-runtime";var xU=({card:f,data:U,children:C,useSocketioSupport:H=!1,useCentrifugeSupport:D=!1,useMittSupport:I=!1,centrifugeChannel:Z=void 0,methods:$=void 0,stored:O=void 0})=>{let V=_f(),z=jU($);if(z.current=$,V)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:H,centrifuge:D,mitt:I,centrifugeChannel:Z}),console.log("[PieCard] Methods:",$?Object.keys($):"none"),console.log("[PieCard] Has children:",!!C);let X=Of(E),W=Of(N),T=Of(y);if(Vf(()=>{if(!X||!H||!z.current||!U.name){if(V&&H)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!X,useSocketioSupport:H,hasMethods:!!z.current,hasDataName:!!U?.name});return}let G=Object.keys(z.current??{}).map((q)=>{let J=`pie${q}_${U.name}`;if(V)console.log(`[PieCard] Socket.IO registering event: ${J}`);let F=(Q)=>{z.current?.[q]?.(Q)};return X.on(J,F),[J,F]});return()=>{G.forEach(([q,J])=>{if(V)console.log(`[PieCard] Socket.IO unregistering event: ${q}`);X.off(q,J)})}},[X,U.name,H]),Vf(()=>{if(!W||!D||!Z||!U.name){if(V&&D)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!W,useCentrifugeSupport:D,hasCentrifugeChannel:!!Z,hasMethods:!!z.current,hasDataName:!!U?.name});return}let G=Object.keys(z.current??{}).map((q)=>{let J=`pie${q}_${U.name}_${Z}`;if(V)console.log(`[PieCard] Centrifuge subscribing to channel: ${J}`);let F=W.newSubscription(J);return F.on("publication",(Q)=>{if(V)console.log(`[PieCard] Centrifuge received data on ${J}:`,Q.data);z.current?.[q]?.(Q.data)}),F.subscribe(),F});return()=>{G.forEach((q)=>{if(V)console.log("[PieCard] Centrifuge unsubscribing from channel");q.unsubscribe(),W.removeSubscription(q)})}},[W,Z,U.name,D]),Vf(()=>{if(!T||!I||!U.name){if(V&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!T,useMittSupport:I,hasMethods:!!z.current,hasDataName:!!U?.name});return}let B=Object.keys(z.current??{}),G={};return B.forEach((q)=>{let J=`pie${q}_${U.name}`,F=(Q)=>{if(V)console.log(`[PieCard] Mitt registering event: ${J}`);z.current?.[q]?.(Q)};G[J]=F,T.on(J,F)}),()=>{Object.entries(G).forEach(([q,J])=>{if(V)console.log(`[PieCard] Mitt unregistering event: ${q}`);T.off(q,J)})}},[T,U.name,I]),V)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return bU(mU,{children:[uU("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),C]});return C},A=xU;import{lazy as dU}from"react";var j=new Map;function Rf(f,U){return U.catch(()=>{if(j.get(f)===U)j.delete(f)}),j.set(f,U),U}function $f(f,U){return dU(()=>{if(j.has(U))return j.get(U);return Rf(U,f().then((C)=>C))})}var Nf=async(f,U)=>{if(!U)return;if(j.has(f))return j.get(f);return Rf(f,U().then((C)=>C))};var Ef=Symbol.for("@swarm.ing/pieui:component-registry"),yf=globalThis,L=yf[Ef]??(yf[Ef]=new Map),vU=(f)=>{if(!f.name)throw Error("Component registration requires a name");if(!f.component&&!f.loader)throw Error(`Component "${f.name}" requires component or loader`);let U={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=$f(U.loader,f.name),U.isLazy=!0;return U};function Y(f){let U=vU(f);return L.set(U.name,U),U.component}var pU=(f)=>{f.forEach((U)=>Y(U))},gU=(f)=>{L.delete(f)},cU=(f)=>{return L.has(f)},lU=(f)=>{return L.get(f)?.metadata},p=(f)=>{return L.get(f)},hU=()=>{return Array.from(L.keys())},rU=()=>{return L.size},jf=()=>Array.from(L.values()).filter((f)=>f.isLazy&&typeof f.loader==="function").map((f)=>f.name),xf=(f)=>{let U=L.get(f);if(!U?.isLazy||typeof U.loader!=="function")return;return Nf(f,U.loader)},kf=!1,nU=()=>{if(kf||typeof window>"u")return;kf=!0;let f=navigator.connection;if(f?.saveData)return;if(f?.effectiveType&&["slow-2g","2g"].includes(f.effectiveType))return;let U=jf(),C="requestIdleCallback"in window?(D)=>window.requestIdleCallback(D,{timeout:2000}):(D)=>window.setTimeout(D,300),H=(D)=>{if(D>=U.length)return;C(()=>{Promise.resolve().then(()=>xf(U[D])).catch(()=>{}).finally(()=>H(D+1))})};H(0)};import{useContext as mf,memo as ZC}from"react";import{createContext as iU}from"react";import{jsx as aU,Fragment as tU}from"react/jsx-runtime";var sU=iU(aU(tU,{})),_=sU;import{createContext as eU}from"react";var fC=eU(void 0),k=fC;import{Component as UC,Suspense as CC}from"react";import{jsx as DC}from"react/jsx-runtime";var HC=2,IC=400;class b extends UC{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(f){if(this.props.onError?.(f),this.state.attempt<HC){let U=IC*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((C)=>({failed:!1,attempt:C.attempt+1}))},U)}}componentDidUpdate(f){if(f.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return DC(CC,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as zf}from"react/jsx-runtime";function OC({uiConfig:f,setUiAjaxConfiguration:U}){let C=mf(_),H=mf(k),D=R();if(D)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let I=p(f.card);if(!I?.component){if(D)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return C}if(D)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let Z=I.component,$=zf(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(I.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",I.name);return zf(b,{name:I.name,fallback:I.fallback?zf(I.fallback,{}):C,onError:H,children:$})}if(D)console.log("[UI] Rendering component directly:",I.name);return $}var S=ZC(OC);import{useContext as uf}from"react";import{createContext as VC}from"react";var $C=VC(null),w=$C;import{jsx as s}from"react/jsx-runtime";function bf({uiConfig:f,setUiAjaxConfiguration:U}){let C=uf(_),H=uf(k),D=R();if(D)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let I=p(f.card);if(!I?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return C}if(D)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(D)console.log("[UILoading] Rendering fallback for:",I.name);let O=I.fallback;return s(O,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",I.name);let Z=I.component,$=s(w.Provider,{value:bf,children:s(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(I.isLazy)return s(b,{name:I.name,fallback:C,onError:H,children:$});return $}var Tf=bf;import{useContext as zC}from"react";import{jsx as qf}from"react/jsx-runtime";var TC=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:H,sx:D}=f,I=zC(w)??S;return qf(A,{card:H,data:f,children:qf("div",{style:D,id:H,children:U.map((Z,$)=>{return qf(I,{uiConfig:Z,setUiAjaxConfiguration:C},`children-${$}`)})})})},df=TC;var qC=Y({name:"SequenceCard",component:df,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as BC}from"react";import{jsx as vf}from"react/jsx-runtime";var JC=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:H}=f,D=BC(w)??S;return vf(A,{card:H,data:f,children:U.map((I,Z)=>{return vf(D,{uiConfig:I,setUiAjaxConfiguration:C},`children-${Z}`)})})},pf=JC;var XC=Y({name:"UnionCard",component:pf,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as YC,useState as AC}from"react";import PC from"html-react-parser";import{useCallback as t,useEffect as GC,useRef as Bf,useState as WC}from"react";function QC(){let f=new AudioContext,U=f.createOscillator(),C=U.connect(f.createMediaStreamDestination());U.start();let H=C.stream.getAudioTracks()[0];return H.enabled=!1,H}function Jf(f=null,U){let[C,H]=WC(!1),D=Bf(null),I=Bf(null),Z=Bf(null),$=t(async(X,W=!0)=>{if(D.current)O();let T=new RTCPeerConnection;if(T.onconnectionstatechange=()=>{if(T.connectionState==="connected")H(!0);else if(["disconnected","failed","closed"].includes(T.connectionState))H(!1)},T.ontrack=(P)=>{if(f)f.srcObject=P.streams[0]},W){let P=await navigator.mediaDevices.getUserMedia({audio:!0});T.addTrack(P.getTracks()[0],P)}else{let P=QC();T.addTrack(P)}let B=T.createDataChannel("oai-events");I.current=B,Z.current=new Promise((P)=>{B.addEventListener("open",()=>{P()})});let G=await T.createOffer();await T.setLocalDescription(G);let Q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:G.sdp,headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/sdp"}})).text();await T.setRemoteDescription({type:"answer",sdp:Q}),D.current=T,await Z.current},[f]),O=t(()=>{let X=I.current;if(X)X.close();D.current?.getSenders()?.forEach((W)=>W.track?.stop()),D.current?.close(),H(!1),D.current=null,I.current=null,Z.current=null},[f]),V=t((X)=>{let W=I.current;if(!W){console.error("Data channel is not ready",X);return}let T=new Date().toLocaleTimeString();if(X.event_id=X.event_id||crypto.randomUUID(),W.send(JSON.stringify(X)),!X.timestamp)X.timestamp=T;U?.(X)},[U,f]),z=t((X)=>{if(!I.current){console.error("Data channel is not ready");return}let T=()=>{V({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:X}]}}),V({type:"response.create"})};if(Z.current)Z.current.then(T);else T()},[U,f]);return GC(()=>{let X=I.current;if(!X)return;let W=(T)=>{let B=JSON.parse(T.data);if(!B.timestamp)B.timestamp=new Date().toLocaleTimeString();U?.(B)};return X.addEventListener("message",W),()=>{X.removeEventListener("message",W)}},[U,f]),{isSessionActive:C,startSession:$,stopSession:O,sendTextMessage:z}}import{jsx as KC}from"react/jsx-runtime";var FC=({data:f})=>{let{html:U,useSocketioSupport:C,useCentrifugeSupport:H,useMittSupport:D,centrifugeChannel:I}=f,[Z,$]=AC(U),{isSessionActive:O,startSession:V,sendTextMessage:z}=Jf(null,(B)=>{if(console.log(B.type,B.type==="response.output_text.delta"&&B.delta),B.type==="response.output_text.delta"&&B.delta)$((G)=>G+B.delta)});return YC(()=>{$(U)},[U]),KC(A,{card:"HTMLEmbedCard",data:f,methods:{update:(B)=>{$(B.value)},generateUsingAI:async(B)=>{try{if(!O&&B.token)await V(B.token,!1);z(B.prompt)}catch(G){console.error("Failed to generate using AI",G)}},initializeAI:async(B)=>{if(!O&&B.token)await V(B.token,!1)}},useCentrifugeSupport:H,useSocketioSupport:C,useMittSupport:D,centrifugeChannel:I,children:PC(Z)})},gf=FC;var SC=Y({name:"HTMLEmbedCard",component:gf,metadata:{author:"Swarm.ing"}});import{useEffect as _C,useState as wC}from"react";import{jsx as cf}from"react/jsx-runtime";var MC=({data:f})=>{let{name:U,value:C,useSocketioSupport:H,useCentrifugeSupport:D,useMittSupport:I,centrifugeChannel:Z}=f,[$,O]=wC(C);return _C(()=>{O(C)},[C]),cf(A,{card:"HiddenCard",data:f,useSocketioSupport:H,useCentrifugeSupport:D,useMittSupport:I,centrifugeChannel:Z,methods:{update:({value:V})=>{O(V)}},children:cf("input",{type:"hidden",id:U,name:U,value:$})})},lf=MC;var LC=Y({name:"HiddenCard",component:lf,metadata:{author:"Swarm.ing"}});import{useContext as hf,useEffect as NC}from"react";import{createContext as oC}from"react";var RC=oC(void 0),o=RC;import{jsx as kC,Fragment as yC}from"react/jsx-runtime";var EC=({data:f})=>{let{url:U}=f,C=hf(o),H=hf(_);return NC(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else C?.(U)},[U,C]),kC(yC,{children:H})},rf=EC;var jC=Y({name:"AutoRedirectCard",component:rf,metadata:{author:"Swarm.ing"}});import{Bounce as xC,Slide as mC,Zoom as uC,Flip as bC}from"react-toastify";import{toast as dC,ToastContainer as vC}from"react-toastify";import{useContext as pC,useMemo as gC,useRef as cC}from"react";import{jsx as Xf,Fragment as sC}from"react/jsx-runtime";var lC={bounce:xC,slide:mC,zoom:uC,flip:bC},hC=(f)=>{let U={...f,type:f.alertType,transition:f.transition?lC[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};dC(f.message,U)},rC=(f)=>{console.log("Log event",f)},nC=(f)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(H){console.error("[IOEventsCard] Failed to show notification",H)}},C=window.Notification.permission;if(C==="granted"){U();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((H)=>{if(H==="granted")U()})},iC=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:C,useMittSupport:H,centrifugeChannel:D}=f,I=pC(o),Z=cC(I);Z.current=I;let $=gC(()=>({alert:hC,log:rC,push:nC,redirect:(O)=>{if(O.to){let V=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(V))window.location.href=V;else Z.current?.(V)}else window.location.reload()},reload:(O)=>{if(O.to){let V=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(V))window.location.href=V;else Z.current?.(V)}else window.location.reload()}}),[]);return Xf(sC,{children:Xf(A,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:C,useMittSupport:H,centrifugeChannel:D,methods:$,children:Xf(vC,{})})})},nf=iC;var tC=Y({name:"IOEventsCard",component:nf,metadata:{author:"Swarm.ing"}});import{useEffect as sf,useState as aC}from"react";import{jsx as tf}from"react/jsx-runtime";var eC=({data:f})=>{let{name:U,key:C,value:H,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$}=f,[O,V]=aC(H);return sf(()=>{V(H)},[H]),sf(()=>{if(typeof window>"u")return;sessionStorage.setItem(C,O)},[C,O]),tf(A,{card:"SessionStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$,methods:{update:({value:z})=>{V(z)},remove:()=>{sessionStorage.removeItem(C),V("")}},children:tf("input",{type:"hidden",id:U,name:U,value:O})})},af=eC;var fH=Y({name:"SessionStorageCard",component:af,metadata:{author:"PieData"}});import{useEffect as ef,useState as UH}from"react";import{jsx as fU}from"react/jsx-runtime";var CH=({data:f})=>{let{name:U,key:C,value:H,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$}=f,[O,V]=UH(H);return ef(()=>{V(H)},[H]),ef(()=>{if(typeof window>"u")return;localStorage.setItem(C,O)},[C,O]),fU(A,{card:"DeviceStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$,methods:{update:({value:z})=>{V(z)},remove:()=>{localStorage.removeItem(C),V("")}},children:fU("input",{type:"hidden",id:U,name:U,value:O})})},UU=CH;var HH=Y({name:"DeviceStorageCard",component:UU,metadata:{author:"PieData"}});import{useEffect as CU,useState as IH}from"react";import{jsx as HU}from"react/jsx-runtime";var DH=({data:f})=>{let{name:U,key:C,value:H,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$}=f,[O,V]=IH(H);return CU(()=>{V(H)},[H]),CU(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp?.CloudStorage;if(!z)return;z.setItem(C,O)},[C,O]),HU(A,{card:"CloudStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$,methods:{update:({value:z})=>{V(z)},remove:()=>{let z=window.Telegram?.WebApp?.CloudStorage;if(z)z.removeItem(C);V("")}},children:HU("input",{type:"hidden",id:U,name:U,value:O})})},IU=DH;var ZH=Y({name:"CloudStorageCard",component:IU,metadata:{author:"PieData"}});import{useEffect as DU,useState as OH}from"react";import{jsx as ZU}from"react/jsx-runtime";var VH=({data:f})=>{let{name:U,key:C,value:H,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$}=f,[O,V]=OH(H);return DU(()=>{V(H)},[H]),DU(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp?.SecureStorage;if(!z)return;z.setItem(C,O)},[C,O]),ZU(A,{card:"SecureStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:$,methods:{update:({value:z})=>{V(z)},remove:()=>{let z=window.Telegram?.WebApp?.SecureStorage;if(z)z.removeItem(C);V("")}},children:ZU("input",{type:"hidden",id:U,name:U,value:O})})},OU=VH;var $H=Y({name:"SecureStorageCard",component:OU,metadata:{author:"PieData"}});import{useCallback as Gf,useContext as Wf,useEffect as zH,useRef as TH,useState as VU}from"react";import{jsx as $U}from"react/jsx-runtime";var qH=({data:f,content:U})=>{let{useLoader:C,noReturn:H,returnType:D,useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:$,centrifugeChannel:O}=f,V=Wf(_),z=Wf(w)??S,[X,W]=VU(!1),[T,B]=VU(null),G=TH(U),q=Wf(y),J=Gf((P)=>{if(P===null)W(!0);else if(W(!1),!H)G.current=P;if(!H)B(P)},[H]),F=Gf((P)=>{G.current=P.content,B(P.content)},[]),Q=Gf((P)=>{if(P===null)W(!0);else if(W(!1),!H)for(let c of P)q?.emit(c.name,c.data)},[H,q]);if(zH(()=>{B(U),W(!1)},[U]),!T&&C)return V;return $U(A,{card:"AjaxGroupCard",data:f,methods:{changeContent:F},useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:$,centrifugeChannel:O,children:$U(z,{uiConfig:T??G.current,setUiAjaxConfiguration:D==="events"?Q:J})})},zU=qH;var BH=Y({name:"AjaxGroupCard",component:zU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as TU}from"react";import{jsx as Qf}from"react/jsx-runtime";var JH=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:H,url:D,sx:I}=f,Z=TU(o),$=TU(w)??S;return Qf(A,{card:H,data:f,children:Qf("div",{style:I,id:H,onClick:(V)=>{if(D)if(V.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(D))window.location.href=D;else Z?.(D)},children:Qf($,{setUiAjaxConfiguration:C,uiConfig:U})})})},qU=JH;var XH=Y({name:"BoxCard",component:qU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as GH}from"react";import{jsx as Yf}from"react/jsx-runtime";var WH=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:H,sx:D}=f,I=GH(w)??S;return Yf(A,{card:H,data:f,children:Yf("div",{style:D,id:H,children:U.map((Z,$)=>{return Yf(I,{uiConfig:Z,setUiAjaxConfiguration:C},`children-${$}`)})})})},BU=WH;var QH=Y({name:"OneOfCard",component:BU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as g}from"react";import{QueryClient as LH,QueryClientProvider as oH,useQuery as RH}from"@tanstack/react-query";import{useContext as PH,useEffect as FH}from"react";import{useEffect as YH,useState as AH}from"react";var a=new Map,e=new Map;function ff(f,U){let C=`${f}::${U}`,H=f?a.get(C):void 0,[D,I]=AH(H??null);return YH(()=>{if(!f)return;if(a.has(C)){I(a.get(C));return}let Z=e.get(C);if(!Z)Z=fetch(f+`api/support/${U}`,{method:"GET"}).then((O)=>O.json()).then((O)=>{return a.set(C,O),e.delete(C),O}).catch((O)=>{throw e.delete(C),O}),e.set(C,Z);let $=!1;return Z.then((O)=>{if(!$)I(O)}).catch(()=>{}),()=>{$=!0}},[f,U,C]),D}var Af=null,JU=null;function XU(){JU?.()}function Pf(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!Af)Af=new Promise((f)=>{JU=()=>{f()}});return Af}var KH=({children:f})=>{let U=PH(E),C=h(),H=ff(C,"socketIO"),D=(I)=>{if(typeof window<"u")window.sid=I.sid,XU(),console.log(`SocketIO initialized: ${window.sid}`)};return FH(()=>{if(!U)return;let I=()=>{console.log("SocketIO connected")},Z=($)=>{console.log(`SocketIO disconnected: ${$}`),U.connect()};if(H)U.on("pieinit",D),U.on("connect",I),U.on("disconnect",Z),U.connect();return()=>{if(H)U.off("pieinit",D),U.off("connect",I),U.off("disconnect",Z),U.disconnect()}},[U,H]),f},Uf=KH;import{useContext as SH,useEffect as _H}from"react";var wH=({children:f})=>{let U=SH(N),C=h(),H=ff(C,"centrifuge");return _H(()=>{if(!U)return;let D=()=>{console.log("Centrifuge connected")},I=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(H)U.on("connected",D),U.on("disconnected",I),U.connect();return()=>{if(H)U.disconnect()}},[U,H]),f},Cf=wH;import{createAxiosDateTransformer as NH}from"axios-date-transformer";import{jsx as MH}from"react/jsx-runtime";function GU(f,U,C){if(!U)return C;let H=f.replace(/^\//,""),D=U[H];if(!D)return C;return MH(Tf,{uiConfig:D})}import{jsx as K,Fragment as kH}from"react/jsx-runtime";var EH=({location:f,fallback:U,piecache:C,onError:H,queryOptions:D,disableGlobalForm:I})=>{let Z=v(),$=r(),O=R(),V=g(()=>NH({baseURL:Z||""}),[Z]),z=g(()=>u(),[]),X=g(()=>Z?i(Z):null,[Z]),W=g(()=>Z?n(Z,$):null,[Z,$]),{data:T,isLoading:B,error:G}=RH({queryKey:["uiConfig",f.pathname+f.search,Z],enabled:!!Z,queryFn:async()=>{let J=new URLSearchParams(f.search);J.set("__pieroot","web");let F="/api/content"+f.pathname+"?"+J.toString();if(O)console.log("[PieRoot] Fetching UI configuration from:",F);let Q=await V.get(F,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(O)console.log("[PieRoot] Received UI configuration:",Q.data);return Q.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(J)=>Math.min(1000*2**J,30000),...D}),q=GU(f.pathname,C,U);if(!Z)return q??null;if(O)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",$),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!C);if(G){if(O)console.error("[PieRoot] Error fetching UI configuration:",G),console.error("[PieRoot] Error details:",{message:G.message,status:G.response?.status,data:G.response?.data});return H?.(G),q}if(B||!T){if(O)console.log("[PieRoot] Loading state:",{isLoading:B,hasUiConfiguration:!!T});return q}if(O)console.log("[PieRoot] UI configuration loaded successfully:",T),console.log("[PieRoot] Rendering UI with configuration");return K(y.Provider,{value:z,children:K(E.Provider,{value:X,children:K(N.Provider,{value:W,children:K(_.Provider,{value:U??K(kH,{}),children:K(Uf,{children:K(Cf,{children:I?K(S,{uiConfig:T}):K("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:K(S,{uiConfig:T})})})})})})})})},yH=(f)=>{let U=g(()=>new LH,[]),C=f.queryClient??U;return K(o.Provider,{value:f.onNavigate,children:K(m.Provider,{value:f.config,children:K(k.Provider,{value:f.onError,children:K(oH,{client:C,children:K(EH,{...f})})})})})},Ff=yH;import{useMemo as Kf,useState as jH}from"react";import{QueryClient as xH,QueryClientProvider as mH}from"@tanstack/react-query";import{jsx as M,Fragment as dH}from"react/jsx-runtime";var uH=({location:f,fallback:U,children:C,disableGlobalForm:H})=>{let D=v(),I=r(),Z=R(),$=Kf(()=>u(),[]),O=Kf(()=>D?i(D):null,[D]),V=Kf(()=>D?n(D,I):null,[D,I]);if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",I),console.log("[PieRoot] Fallback provided:",!!U);return M(y.Provider,{value:$,children:M(E.Provider,{value:O,children:M(N.Provider,{value:V,children:M(_.Provider,{value:U??M(dH,{}),children:M(Uf,{children:M(Cf,{children:H?C:M("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:C})})})})})})})},bH=(f)=>{let[U]=jH(()=>new xH),C=f.queryClient??U;return M(o.Provider,{value:f.onNavigate,children:M(m.Provider,{value:f.config,children:M(k.Provider,{value:f.onError,children:M(mH,{client:C,children:M(uH,{...f})})})})})},vH=bH;import{useMemo as pH}from"react";import{jsx as WU}from"react/jsx-runtime";var gH=WU("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),cH=({apiServer:f,pathname:U="/",search:C="",centrifugeServer:H,fallback:D,enableRenderingLog:I=!1})=>{let Z=f??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",$=pH(()=>({apiServer:Z,centrifugeServer:H,enableRenderingLog:I,pageProcessor:"web"}),[Z,H,I]);return WU(Ff,{location:{pathname:U,search:C},config:$,fallback:D??gH,onNavigate:(V)=>{if(typeof window<"u")window.history.pushState(null,"",V)}})},lH=cH;import{useMemo as hH}from"react";var QU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let C=document.getElementsByName(f);if(!C.length){if(U)console.warn(`No input found with name ${f}`);return[]}let H=C[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},rH=(f,U={},C=[],H,D)=>{let I=D?.renderingLogEnabled??!1,Z=D?.timeout,$=D?.retryPolicy,O=$?.maxRetries??0,V=$?.baseDelay??1000,z=$?.retryOn??[502,503,504];if(I)console.log("Registering AJAX: ",H,U,C);return async(X={})=>{if(typeof window>"u"||typeof document>"u"){if(I)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let W=D?.apiServer;if(!W){if(I)console.warn("AJAX skipped: apiServer is missing");return}if(!H||!f){if(I)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(C.includes("sid"))await Pf();let T=new FormData;for(let[q,J]of Object.entries({...U,...X}))T.append(q,J);for(let q of C)for(let J of QU(q,I))T.append(q,J);let B=W+"api/ajax_content"+H;f(null);let G;for(let q=0;q<=O;q++){if(q>0){let Q=V*2**(q-1);if(I)console.log(`AJAX retry ${q}/${O} after ${Q}ms`);await new Promise((P)=>setTimeout(P,Q))}let J=Z!=null?new AbortController:null,F=J&&setTimeout(()=>J.abort(),Z);try{let Q=await fetch(B,{method:"POST",body:T,signal:J?.signal});if(F)clearTimeout(F);if(!Q.ok&&z.includes(Q.status)&&q<O){G=Error(`HTTP ${Q.status}`);continue}let c=(Q.headers.get("content-type")||"").includes("application/json");if(!!Q.body?.getReader&&!c){let l=Q.body.getReader(),YU=new TextDecoder,x="";while(!0){let{done:Hf,value:AU}=await l.read();if(Hf)break;x+=YU.decode(AU,{stream:!0});let Sf=x.split(`
3
+ `);x=Sf.pop()??"";for(let PU of Sf){let If=PU.trim();if(!If)continue;try{let FU=JSON.parse(If);f([FU])}catch{if(I)console.warn("Failed to parse streamed line:",If)}}}if(x.trim())try{let Hf=JSON.parse(x);f([Hf])}catch{if(I)console.warn("Failed to parse final streamed line:",x)}return{}}else{let l=await Q.json();return f(l),l}}catch(Q){if(F)clearTimeout(F);if(G=Q,q<O)continue;if(I)console.error("AJAX request failed:",Q);return f(null),Q}}if(I)console.error("AJAX request failed after retries:",G);return f(null),G}},nH=(f,U={},C=[],H,D)=>{let{apiServer:I,enableRenderingLog:Z}=d(),$=JSON.stringify(U),O=JSON.stringify(C),V=JSON.stringify(D);return hH(()=>rH(f,U,C,H,{apiServer:I,renderingLogEnabled:Z,timeout:D?.timeout,retryPolicy:D?.retryPolicy}),[f,$,O,H,I,Z,V])};import{clsx as iH}from"clsx";import{twMerge as sH}from"tailwind-merge";function tH(...f){return sH(iH(f))}var aH=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var eH=(f,U)=>`${f}${Df}${U}`;export{kU as usePieEmit,nH as useAjaxSubmit,gU as unregisterComponent,$f as trackLazy,aH as submitGlobalForm,L as registry,Y as registerPieComponent,pU as registerMultipleComponents,QU as readAjaxKey,xf as preloadComponent,nU as prefetchLazyComponents,eH as pieName,cU as hasComponent,rU as getRegistrySize,p as getRegistryEntry,jf as getLazyComponentNames,u as getEmitter,lU as getComponentMeta,hU as getAllRegisteredComponents,tH as cn,XC as UnionCard,w as UIRendererContext,Tf as UILoading,S as UI,E as SocketIOContext,fH as SessionStorageCard,qC as SequenceCard,$H as SecureStorageCard,Ff as PieRoot,lH as PiePreviewRoot,m as PieConfigContext,A as PieCard,vH as PieBaseRoot,Df as PIEBREAK,QH as OneOfCard,y as MittContext,tC as IOEventsCard,LC as HiddenCard,SC as HTMLEmbedCard,_ as FallbackContext,HH as DeviceStorageCard,ZH as CloudStorageCard,N as CentrifugeIOContext,XH as BoxCard,jC as AutoRedirectCard,BH as AjaxGroupCard};