@swarm.ing/pieui 2.0.34 → 2.1.0

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