@swarm.ing/pieui 2.1.4 → 2.1.6
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.
- package/README.md +595 -124
- package/dist/cli.js +2208 -14
- package/dist/code/commands/listEvents.d.ts.map +1 -1
- package/dist/code/commands/registry.d.ts.map +1 -1
- package/dist/components/PieCard/index.d.ts +1 -1
- package/dist/components/PieCard/index.d.ts.map +1 -1
- package/dist/components/PieCard/types/index.d.ts +11 -0
- package/dist/components/PieCard/types/index.d.ts.map +1 -1
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/index.esm.js +2 -2
- package/dist/index.js +2 -2
- package/dist/max/index.esm.js +1 -1
- package/dist/max/index.js +1 -1
- package/dist/native/PieNativeRoot.d.ts +15 -0
- package/dist/native/PieNativeRoot.d.ts.map +1 -0
- package/dist/native/components/AutoRedirectCard.d.ts +10 -0
- package/dist/native/components/AutoRedirectCard.d.ts.map +1 -0
- package/dist/native/components/BoxCard.d.ts +13 -0
- package/dist/native/components/BoxCard.d.ts.map +1 -0
- package/dist/native/components/DeviceStorageCard.d.ts +12 -0
- package/dist/native/components/DeviceStorageCard.d.ts.map +1 -0
- package/dist/native/components/HTMLEmbedCard.d.ts +11 -0
- package/dist/native/components/HTMLEmbedCard.d.ts.map +1 -0
- package/dist/native/components/HiddenCard.d.ts +11 -0
- package/dist/native/components/HiddenCard.d.ts.map +1 -0
- package/dist/native/components/IOEventsCard.d.ts +11 -0
- package/dist/native/components/IOEventsCard.d.ts.map +1 -0
- package/dist/native/components/OneOfCard.d.ts +12 -0
- package/dist/native/components/OneOfCard.d.ts.map +1 -0
- package/dist/native/components/SequenceCard.d.ts +12 -0
- package/dist/native/components/SequenceCard.d.ts.map +1 -0
- package/dist/native/components/SessionStorageCard.d.ts +9 -0
- package/dist/native/components/SessionStorageCard.d.ts.map +1 -0
- package/dist/native/components/index.d.ts +13 -0
- package/dist/native/components/index.d.ts.map +1 -0
- package/dist/native/index.d.ts +41 -0
- package/dist/native/index.d.ts.map +1 -0
- package/dist/native/index.esm.js +3 -0
- package/dist/native/index.js +3 -0
- package/dist/platform/clientSources.d.ts +4 -0
- package/dist/platform/clientSources.d.ts.map +1 -0
- package/dist/platform/clientSources.native.d.ts +4 -0
- package/dist/platform/clientSources.native.d.ts.map +1 -0
- package/dist/platform/clientSources.web.d.ts +10 -0
- package/dist/platform/clientSources.web.d.ts.map +1 -0
- package/dist/platform/nativeConfig.d.ts +63 -0
- package/dist/platform/nativeConfig.d.ts.map +1 -0
- package/dist/platform/nativeFormStore.d.ts +12 -0
- package/dist/platform/nativeFormStore.d.ts.map +1 -0
- package/dist/platform/types.d.ts +39 -0
- package/dist/platform/types.d.ts.map +1 -0
- package/dist/providers/SocketIOInitProvider.d.ts.map +1 -1
- package/dist/telegram/index.esm.js +1 -1
- package/dist/telegram/index.js +1 -1
- package/dist/tests/centrifugeRecovery.test.d.ts +2 -0
- package/dist/tests/centrifugeRecovery.test.d.ts.map +1 -0
- package/dist/tests/clientSources.test.d.ts +2 -0
- package/dist/tests/clientSources.test.d.ts.map +1 -0
- package/dist/tests/clientSourcesNative.test.d.ts +12 -0
- package/dist/tests/clientSourcesNative.test.d.ts.map +1 -0
- package/dist/tests/piecardRecovery.test.d.ts +2 -0
- package/dist/tests/piecardRecovery.test.d.ts.map +1 -0
- package/dist/util/ajaxCommonUtils.d.ts.map +1 -1
- package/dist/util/centrifuge.d.ts +5 -0
- package/dist/util/centrifuge.d.ts.map +1 -1
- package/dist/util/centrifugeRecovery.d.ts +26 -0
- package/dist/util/centrifugeRecovery.d.ts.map +1 -0
- package/dist/util/globalForm.d.ts +4 -5
- package/dist/util/globalForm.d.ts.map +1 -1
- package/dist/util/waitForSidAvailable.d.ts.map +1 -1
- package/package.json +17 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listEvents.d.ts","sourceRoot":"","sources":["../../../src/code/commands/listEvents.ts"],"names":[],"mappings":"AAiLA,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,eAAe,MAAM,
|
|
1
|
+
{"version":3,"file":"listEvents.d.ts","sourceRoot":"","sources":["../../../src/code/commands/listEvents.ts"],"names":[],"mappings":"AAiLA,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,eAAe,MAAM,SA4KtE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/code/commands/registry.ts"],"names":[],"mappings":"AAyBA,KAAK,eAAe,GAAG;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/code/commands/registry.ts"],"names":[],"mappings":"AAyBA,KAAK,eAAe,GAAG;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAsMD,eAAO,MAAM,eAAe,GACxB,QAAQ,KAAK,GAAG,OAAO,EACvB,OAAM,eAAoB,KAC3B,IAiDF,CAAA"}
|
|
@@ -17,6 +17,6 @@ import { PieCardProps } from './types';
|
|
|
17
17
|
* Cleanup runs automatically on unmount or when `data.name`/the support
|
|
18
18
|
* flags change.
|
|
19
19
|
*/
|
|
20
|
-
declare const PieCard: <TStored = unknown>({ card, data, children, useSocketioSupport, useCentrifugeSupport, useMittSupport, centrifugeChannel, methods, stored, }: PieCardProps<TStored>) => string | number | bigint | boolean | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<import("react").ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
|
|
20
|
+
declare const PieCard: <TStored = unknown>({ card, data, children, useSocketioSupport, useCentrifugeSupport, useMittSupport, centrifugeChannel, methods, stored, onResync, }: PieCardProps<TStored>) => string | number | bigint | boolean | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<import("react").ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
|
|
21
21
|
export default PieCard;
|
|
22
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieCard/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieCard/index.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC;;;;;;;;;;;;;;;;;GAiBG;AACH,QAAA,MAAM,OAAO,GAAI,OAAO,GAAG,OAAO,EAAG,mIAWlC,YAAY,CAAC,OAAO,CAAC,gWAgOvB,CAAA;AAED,eAAe,OAAO,CAAA"}
|
|
@@ -63,5 +63,16 @@ export interface PieCardProps<TStored = unknown> {
|
|
|
63
63
|
* can be submitted as part of a surrounding form.
|
|
64
64
|
*/
|
|
65
65
|
stored?: TStored;
|
|
66
|
+
/**
|
|
67
|
+
* Invoked when a Centrifuge subscription reconnects but cannot recover
|
|
68
|
+
* the full stream of missed publications (the disconnect outlived the
|
|
69
|
+
* server history buffer, or the channel has no history). The card should
|
|
70
|
+
* respond by refetching its current state so the UI does not stay stale.
|
|
71
|
+
* `reason` is `'gap'` for a failed recovery. No-op by default.
|
|
72
|
+
*/
|
|
73
|
+
onResync?: (info: {
|
|
74
|
+
channel: string;
|
|
75
|
+
reason: 'gap';
|
|
76
|
+
}) => void;
|
|
66
77
|
}
|
|
67
78
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/PieCard/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IACxB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,sCAAsC;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY,CAAC,OAAO,GAAG,OAAO;IAC3C,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAA;IACZ,+DAA+D;IAC/D,IAAI,EAAE,WAAW,CAAA;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,CAAA;IAC7C;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/PieCard/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IACxB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,sCAAsC;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY,CAAC,OAAO,GAAG,OAAO;IAC3C,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAA;IACZ,+DAA+D;IAC/D,IAAI,EAAE,WAAW,CAAA;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,CAAA;IAC7C;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAA;CAChE"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useContext as p,useEffect as m,useRef as ko}from"react";import{createContext as Ro,useContext as _o}from"react";var j=globalThis,F=(o,U)=>{let I=Symbol.for(o);if(!(I in j))j[I]=U();return j[I]};var Ko=F("@swarm.ing/pieui:context:pieConfig",()=>Ro(null)),Vo=()=>{let o=_o(Ko);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var M=()=>{let{enableRenderingLog:o}=Vo();return o},n=M;import{createContext as Co}from"react";import{Centrifuge as $f}from"centrifuge";var Gf=F("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var Mo=F("@swarm.ing/pieui:context:centrifuge",()=>Co(null)),s=Mo;import{io as Df}from"socket.io-client";import{createContext as Eo}from"react";var Wf=F("@swarm.ing/pieui:socket-cache",()=>new Map);var No=F("@swarm.ing/pieui:context:socket",()=>Eo(null)),a=No;import Kf from"mitt";import{createContext as yo,useCallback as Mf,useContext as Ef}from"react";var xo=F("@swarm.ing/pieui:context:mitt",()=>yo(null));var N=xo;import{jsx as po,jsxs as mo,Fragment as jo}from"react/jsx-runtime";var bo=({card:o,data:U,children:I,useSocketioSupport:T=!1,useCentrifugeSupport:z=!1,useMittSupport:f=!1,centrifugeChannel:Z=void 0,methods:L=void 0,stored:O=void 0})=>{let H=n(),B=ko(L);if(B.current=L,H)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:T,centrifuge:z,mitt:f,centrifugeChannel:Z}),console.log("[PieCard] Methods:",L?Object.keys(L):"none"),console.log("[PieCard] Has children:",!!I);let A=p(a),$=p(s),w=p(N);if(m(()=>{if(!A||!T||!B.current||!U.name){if(H&&T)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!A,useSocketioSupport:T,hasMethods:!!B.current,hasDataName:!!U?.name});return}let X=Object.keys(B.current??{}).map((G)=>{let D=`pie${G}_${U.name}`;if(H)console.log(`[PieCard] Socket.IO registering event: ${D}`);let Y=(_)=>{B.current?.[G]?.(_)};return A.on(D,Y),[D,Y]});return()=>{X.forEach(([G,D])=>{if(H)console.log(`[PieCard] Socket.IO unregistering event: ${G}`);A.off(G,D)})}},[A,U.name,T]),m(()=>{if(!$||!z||!Z||!U.name){if(H&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!$,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!B.current,hasDataName:!!U?.name});return}let X=Object.keys(B.current??{}).map((G)=>{let D=`pie${G}_${U.name}_${Z}`;if(H)console.log(`[PieCard] Centrifuge subscribing to channel: ${D}`);let Y=$.newSubscription(D);return Y.on("publication",(_)=>{if(H)console.log(`[PieCard] Centrifuge received data on ${D}:`,_.data);B.current?.[G]?.(_.data)}),Y.subscribe(),Y});return()=>{X.forEach((G)=>{if(H)console.log("[PieCard] Centrifuge unsubscribing from channel");G.unsubscribe(),$.removeSubscription(G)})}},[$,Z,U.name,z]),m(()=>{if(!w||!f||!U.name){if(H&&f)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:f,hasMethods:!!B.current,hasDataName:!!U?.name});return}let P=Object.keys(B.current??{}),X={};return P.forEach((G)=>{let D=`pie${G}_${U.name}`,Y=(_)=>{if(H)console.log(`[PieCard] Mitt registering event: ${D}`);B.current?.[G]?.(_)};X[D]=Y,w.on(D,Y)}),()=>{Object.entries(X).forEach(([G,D])=>{if(H)console.log(`[PieCard] Mitt unregistering event: ${G}`);w.off(G,D)})}},[w,U.name,f]),H)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return mo(jo,{children:[po("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),I]});return I},J=bo;import{lazy as So}from"react";var E=new Map;function go(o,U){return U.catch(()=>{if(E.get(o)===U)E.delete(o)}),E.set(o,U),U}function t(o,U){return So(()=>{if(E.has(U))return E.get(U);return go(U,o().then((I)=>I))})}var e=F("@swarm.ing/pieui:component-registry",()=>new Map),vo=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let U={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=t(U.loader,o.name),U.isLazy=!0;return U};function q(o){let U=vo(o);return e.set(U.name,U),U.component}var y=(o)=>{return e.get(o)};import{useContext as oo,memo as oU}from"react";import{createContext as lo}from"react";import{jsx as io,Fragment as ro}from"react/jsx-runtime";var co=F("@swarm.ing/pieui:context:fallback",()=>lo(io(ro,{}))),K=co;import{createContext as uo}from"react";var ho=F("@swarm.ing/pieui:context:lazyError",()=>uo(void 0)),x=ho;import{Component as no,Suspense as so}from"react";import{jsx as eo}from"react/jsx-runtime";var ao=2,to=400;class V extends no{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<ao){let U=to*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},U)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return eo(so,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as S}from"react/jsx-runtime";function UU({uiConfig:o,setUiAjaxConfiguration:U}){let I=oo(K),T=oo(x),z=M();if(z)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let f=y(o.card);if(!f?.component){if(z)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return I}if(z)console.log("[UI] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata});let Z=f.component,L=S(Z,{data:o.data,content:o.content,setUiAjaxConfiguration:U});if(f.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",f.name);return S(V,{name:f.name,fallback:f.fallback?S(f.fallback,{}):I,onError:T,children:L})}if(z)console.log("[UI] Rendering component directly:",f.name);return L}var R=oU(UU);import{useContext as Uo}from"react";import{createContext as fU}from"react";var IU=F("@swarm.ing/pieui:context:uiRenderer",()=>fU(null)),W=IU;import{jsx as k}from"react/jsx-runtime";function fo({uiConfig:o,setUiAjaxConfiguration:U}){let I=Uo(K),T=Uo(x),z=M();if(z)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let f=y(o.card);if(!f?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return I}if(z)console.log("[UILoading] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata,hasFallback:!!f.fallback});if(f.fallback){if(z)console.log("[UILoading] Rendering fallback for:",f.name);let O=f.fallback;return k(O,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",f.name);let Z=f.component,L=k(W.Provider,{value:fo,children:k(Z,{data:o.data,content:o.content,setUiAjaxConfiguration:U})});if(f.isLazy)return k(V,{name:f.name,fallback:I,onError:T,children:L});return L}var TU=fo;import{useContext as zU}from"react";import{jsx as g}from"react/jsx-runtime";var HU=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,sx:z}=o,f=zU(W)??R;return g(J,{card:T,data:o,children:g("div",{style:z,id:T,children:U.map((Z,L)=>{return g(f,{uiConfig:Z,setUiAjaxConfiguration:I},`children-${L}`)})})})},Io=HU;var ZU=q({name:"SequenceCard",component:Io,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as LU}from"react";import{jsx as To}from"react/jsx-runtime";var PU=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T}=o,z=LU(W)??R;return To(J,{card:T,data:o,children:U.map((f,Z)=>{return To(z,{uiConfig:f,setUiAjaxConfiguration:I},`children-${Z}`)})})},zo=PU;var OU=q({name:"UnionCard",component:zo,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as $U,useState as qU}from"react";import GU from"html-react-parser";import{useCallback as b,useEffect as wU,useRef as v,useState as AU}from"react";function BU(){let o=new AudioContext,U=o.createOscillator(),I=U.connect(o.createMediaStreamDestination());U.start();let T=I.stream.getAudioTracks()[0];return T.enabled=!1,T}function l(o=null,U){let[I,T]=AU(!1),z=v(null),f=v(null),Z=v(null),L=b(async(A,$=!0)=>{if(z.current)O();let w=new RTCPeerConnection;if(w.onconnectionstatechange=()=>{if(w.connectionState==="connected")T(!0);else if(["disconnected","failed","closed"].includes(w.connectionState))T(!1)},w.ontrack=(Q)=>{if(o)o.srcObject=Q.streams[0]},$){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});w.addTrack(Q.getTracks()[0],Q)}else{let Q=BU();w.addTrack(Q)}let P=w.createDataChannel("oai-events");f.current=P,Z.current=new Promise((Q)=>{P.addEventListener("open",()=>{Q()})});let X=await w.createOffer();await w.setLocalDescription(X);let _=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${A}`,"Content-Type":"application/sdp"}})).text();await w.setRemoteDescription({type:"answer",sdp:_}),z.current=w,await Z.current},[o]),O=b(()=>{let A=f.current;if(A)A.close();z.current?.getSenders()?.forEach(($)=>$.track?.stop()),z.current?.close(),T(!1),z.current=null,f.current=null,Z.current=null},[o]),H=b((A)=>{let $=f.current;if(!$){console.error("Data channel is not ready",A);return}let w=new Date().toLocaleTimeString();if(A.event_id=A.event_id||crypto.randomUUID(),$.send(JSON.stringify(A)),!A.timestamp)A.timestamp=w;U?.(A)},[U,o]),B=b((A)=>{if(!f.current){console.error("Data channel is not ready");return}let w=()=>{H({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:A}]}}),H({type:"response.create"})};if(Z.current)Z.current.then(w);else w()},[U,o]);return wU(()=>{let A=f.current;if(!A)return;let $=(w)=>{let P=JSON.parse(w.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();U?.(P)};return A.addEventListener("message",$),()=>{A.removeEventListener("message",$)}},[U,o]),{isSessionActive:I,startSession:L,stopSession:O,sendTextMessage:B}}import{jsx as FU}from"react/jsx-runtime";var JU=({data:o})=>{let{html:U,useSocketioSupport:I,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:f}=o,[Z,L]=qU(U),{isSessionActive:O,startSession:H,sendTextMessage:B}=l(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)L((X)=>X+P.delta)});return $U(()=>{L(U)},[U]),FU(J,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{L(P.value)},generateUsingAI:async(P)=>{try{if(!O&&P.token)await H(P.token,!1);B(P.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(P)=>{if(!O&&P.token)await H(P.token,!1)}},useCentrifugeSupport:T,useSocketioSupport:I,useMittSupport:z,centrifugeChannel:f,children:GU(Z)})},Ho=JU;var DU=q({name:"HTMLEmbedCard",component:Ho,metadata:{author:"Swarm.ing"}});import{useEffect as QU,useState as XU}from"react";import{jsx as Zo}from"react/jsx-runtime";var YU=({data:o})=>{let{name:U,value:I,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:f,centrifugeChannel:Z}=o,[L,O]=XU(I);return QU(()=>{O(I)},[I]),Zo(J,{card:"HiddenCard",data:o,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:f,centrifugeChannel:Z,methods:{update:({value:H})=>{O(H)}},children:Zo("input",{type:"hidden",id:U,name:U,value:L})})},Lo=YU;var WU=q({name:"HiddenCard",component:Lo,metadata:{author:"Swarm.ing"}});import{useContext as Po,useEffect as KU}from"react";import{createContext as RU}from"react";var _U=F("@swarm.ing/pieui:context:navigate",()=>RU(void 0)),C=_U;import{jsx as MU,Fragment as CU}from"react/jsx-runtime";var VU=({data:o})=>{let{url:U}=o,I=Po(C),T=Po(K);return KU(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else I?.(U)},[U,I]),MU(CU,{children:T})},Oo=VU;var EU=q({name:"AutoRedirectCard",component:Oo,metadata:{author:"Swarm.ing"}});import{Bounce as NU,Slide as yU,Zoom as xU,Flip as kU}from"react-toastify";import{toast as bU,ToastContainer as jU}from"react-toastify";import{useContext as pU,useMemo as mU,useRef as SU}from"react";import{jsx as c,Fragment as dU}from"react/jsx-runtime";var gU={bounce:NU,slide:yU,zoom:xU,flip:kU},vU=(o)=>{let U={...o,type:o.alertType,transition:o.transition?gU[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};bU(o.message,U)},lU=(o)=>{console.log("Log event",o)},cU=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(T){console.error("[IOEventsCard] Failed to show notification",T)}},I=window.Notification.permission;if(I==="granted"){U();return}if(I==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((T)=>{if(T==="granted")U()})},rU=({data:o})=>{let{useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:T,centrifugeChannel:z}=o,f=pU(C),Z=SU(f);Z.current=f;let L=mU(()=>({alert:vU,log:lU,push:cU,redirect:(O)=>{if(O.to){let H=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()},reload:(O)=>{if(O.to){let H=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()}}),[]);return c(dU,{children:c(J,{card:"IOEventsCard",data:o,useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:T,centrifugeChannel:z,methods:L,children:c(jU,{})})})},wo=rU;var iU=q({name:"IOEventsCard",component:wo,metadata:{author:"Swarm.ing"}});import{useEffect as Ao,useState as uU}from"react";import{jsx as Bo}from"react/jsx-runtime";var hU=({data:o})=>{let{name:U,key:I,value:T,useSocketioSupport:z,useCentrifugeSupport:f,useMittSupport:Z,centrifugeChannel:L}=o,[O,H]=uU(T);return Ao(()=>{H(T)},[T]),Ao(()=>{if(typeof window>"u")return;sessionStorage.setItem(I,O)},[I,O]),Bo(J,{card:"SessionStorageCard",data:o,useSocketioSupport:z,useCentrifugeSupport:f,useMittSupport:Z,centrifugeChannel:L,methods:{update:({value:B})=>{H(B)},remove:()=>{sessionStorage.removeItem(I),H("")}},children:Bo("input",{type:"hidden",id:U,name:U,value:O})})},$o=hU;var nU=q({name:"SessionStorageCard",component:$o,metadata:{author:"PieData"}});import{useEffect as qo,useState as sU}from"react";import{jsx as Go}from"react/jsx-runtime";var aU=({data:o})=>{let{name:U,key:I,value:T,useSocketioSupport:z,useCentrifugeSupport:f,useMittSupport:Z,centrifugeChannel:L}=o,[O,H]=sU(T);return qo(()=>{H(T)},[T]),qo(()=>{if(typeof window>"u")return;localStorage.setItem(I,O)},[I,O]),Go(J,{card:"DeviceStorageCard",data:o,useSocketioSupport:z,useCentrifugeSupport:f,useMittSupport:Z,centrifugeChannel:L,methods:{update:({value:B})=>{H(B)},remove:()=>{localStorage.removeItem(I),H("")}},children:Go("input",{type:"hidden",id:U,name:U,value:O})})},Jo=aU;var tU=q({name:"DeviceStorageCard",component:Jo,metadata:{author:"PieData"}});import{useCallback as r,useContext as d,useEffect as eU,useRef as of,useState as Fo}from"react";import{jsx as Do}from"react/jsx-runtime";var Uf=({data:o,content:U})=>{let{useLoader:I,noReturn:T,returnType:z,useSocketioSupport:f,useCentrifugeSupport:Z,useMittSupport:L,centrifugeChannel:O}=o,H=d(K),B=d(W)??R,[A,$]=Fo(!1),[w,P]=Fo(null),X=of(U),G=d(N),D=r((Q)=>{if(Q===null)$(!0);else if($(!1),!T)X.current=Q;if(!T)P(Q)},[T]),Y=r((Q)=>{X.current=Q.content,P(Q.content)},[]),_=r((Q)=>{if(Q===null)$(!0);else if($(!1),!T)for(let h of Q)G?.emit(h.name,h.data)},[T,G]);if(eU(()=>{P(U),$(!1)},[U]),!w&&I)return H;return Do(J,{card:"AjaxGroupCard",data:o,methods:{changeContent:Y},useSocketioSupport:f,useCentrifugeSupport:Z,useMittSupport:L,centrifugeChannel:O,children:Do(B,{uiConfig:w??X.current,setUiAjaxConfiguration:z==="events"?_:D})})},Qo=Uf;var ff=q({name:"AjaxGroupCard",component:Qo,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as Xo}from"react";import{jsx as i}from"react/jsx-runtime";var If=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,url:z,sx:f}=o,Z=Xo(C),L=Xo(W)??R;return i(J,{card:T,data:o,children:i("div",{style:f,id:T,onClick:(H)=>{if(z)if(H.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else Z?.(z)},children:i(L,{setUiAjaxConfiguration:I,uiConfig:U})})})},Yo=If;var Tf=q({name:"BoxCard",component:Yo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as zf}from"react";import{jsx as u}from"react/jsx-runtime";var Hf=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,sx:z}=o,f=zf(W)??R;return u(J,{card:T,data:o,children:u("div",{style:z,id:T,children:U.map((Z,L)=>{return u(f,{uiConfig:Z,setUiAjaxConfiguration:I},`children-${L}`)})})})},Wo=Hf;var Zf=q({name:"OneOfCard",component:Wo,metadata:{author:"Swarm.ing",description:"Different variants"}});export{OU as UnionCard,TU as UILoading,R as UI,nU as SessionStorageCard,ZU as SequenceCard,J as PieCard,Zf as OneOfCard,iU as IOEventsCard,WU as HiddenCard,DU as HTMLEmbedCard,tU as DeviceStorageCard,Tf as BoxCard,EU as AutoRedirectCard,ff as AjaxGroupCard};
|
|
2
|
+
import{useContext as x,useEffect as S,useRef as oo}from"react";import{createContext as Vo,useContext as Mo}from"react";var j=globalThis,Q=(o,U)=>{let I=Symbol.for(o);if(!(I in j))j[I]=U();return j[I]};var Ro=Q("@swarm.ing/pieui:context:pieConfig",()=>Vo(null)),Eo=()=>{let o=Mo(Ro);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var E=()=>{let{enableRenderingLog:o}=Eo();return o},n=E;import{createContext as No}from"react";import{Centrifuge as Gf}from"centrifuge";var Ff=Q("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var po=Q("@swarm.ing/pieui:context:centrifuge",()=>No(null)),s=po;import{io as Xf}from"socket.io-client";import{createContext as bo}from"react";var Kf=Q("@swarm.ing/pieui:socket-cache",()=>new Map);var mo=Q("@swarm.ing/pieui:context:socket",()=>bo(null)),a=mo;import Mf from"mitt";import{createContext as yo,useCallback as Nf,useContext as pf}from"react";var ko=Q("@swarm.ing/pieui:context:mitt",()=>yo(null));var p=ko;function t(o){return o.wasRecovering===!0&&o.recovered===!1}function e(o){return o.recoverable===!1}import{jsx as So,jsxs as go,Fragment as xo}from"react/jsx-runtime";var jo=({card:o,data:U,children:I,useSocketioSupport:T=!1,useCentrifugeSupport:P=!1,useMittSupport:f=!1,centrifugeChannel:w=void 0,methods:H=void 0,stored:O=void 0,onResync:L=void 0})=>{let $=n(),Z=oo(H);Z.current=H;let F=oo(L);if(F.current=L,$)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:T,centrifuge:P,mitt:f,centrifugeChannel:w}),console.log("[PieCard] Methods:",H?Object.keys(H):"none"),console.log("[PieCard] Has children:",!!I);let B=x(a),z=x(s),X=x(p);if(S(()=>{if(!B||!T||!Z.current||!U.name){if($&&T)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:T,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let K=Object.keys(Z.current??{}).map((D)=>{let q=`pie${D}_${U.name}`;if($)console.log(`[PieCard] Socket.IO registering event: ${q}`);let A=(Y)=>{Z.current?.[D]?.(Y)};return B.on(q,A),[q,A]});return()=>{K.forEach(([D,q])=>{if($)console.log(`[PieCard] Socket.IO unregistering event: ${D}`);B.off(D,q)})}},[B,U.name,T]),S(()=>{if(!z||!P||!w||!U.name){if($&&P)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!z,useCentrifugeSupport:P,hasCentrifugeChannel:!!w,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let K=Object.keys(Z.current??{}).map((D)=>{let q=`pie${D}_${U.name}_${w}`;if($)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let A=z.newSubscription(q,{recoverable:!0,positioned:!0});return A.on("publication",(Y)=>{if($)console.log(`[PieCard] Centrifuge received data on ${q}:`,Y.data);Z.current?.[D]?.(Y.data)}),A.on("subscribed",(Y)=>{if(e(Y))console.warn(`[PieCard] Centrifuge channel ${q} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(t(Y)){if($)console.log(`[PieCard] Centrifuge recovery gap on ${q}; requesting resync`);F.current?.({channel:q,reason:"gap"})}}),A.subscribe(),A});return()=>{K.forEach((D)=>{if($)console.log("[PieCard] Centrifuge unsubscribing from channel");D.unsubscribe(),z.removeSubscription(D)})}},[z,w,U.name,P]),S(()=>{if(!X||!f||!U.name){if($&&f)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!X,useMittSupport:f,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let V=Object.keys(Z.current??{}),K={};return V.forEach((D)=>{let q=`pie${D}_${U.name}`,A=(Y)=>{if($)console.log(`[PieCard] Mitt registering event: ${q}`);Z.current?.[D]?.(Y)};K[q]=A,X.on(q,A)}),()=>{Object.entries(K).forEach(([D,q])=>{if($)console.log(`[PieCard] Mitt unregistering event: ${D}`);X.off(D,q)})}},[X,U.name,f]),$)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return go(xo,{children:[So("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),I]});return I},J=jo;import{lazy as vo}from"react";var N=new Map;function lo(o,U){return U.catch(()=>{if(N.get(o)===U)N.delete(o)}),N.set(o,U),U}function Uo(o,U){return vo(()=>{if(N.has(U))return N.get(U);return lo(U,o().then((I)=>I))})}var fo=Q("@swarm.ing/pieui:component-registry",()=>new Map),ro=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let U={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=Uo(U.loader,o.name),U.isLazy=!0;return U};function G(o){let U=ro(o);return fo.set(U.name,U),U.component}var b=(o)=>{return fo.get(o)};import{useContext as Io,memo as fU}from"react";import{createContext as io}from"react";import{jsx as ho,Fragment as uo}from"react/jsx-runtime";var co=Q("@swarm.ing/pieui:context:fallback",()=>io(ho(uo,{}))),C=co;import{createContext as no}from"react";var so=Q("@swarm.ing/pieui:context:lazyError",()=>no(void 0)),m=so;import{Component as ao,Suspense as to}from"react";import{jsx as UU}from"react/jsx-runtime";var eo=2,oU=400;class M extends ao{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<eo){let U=oU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},U)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return UU(to,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as g}from"react/jsx-runtime";function IU({uiConfig:o,setUiAjaxConfiguration:U}){let I=Io(C),T=Io(m),P=E();if(P)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let f=b(o.card);if(!f?.component){if(P)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return I}if(P)console.log("[UI] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata});let w=f.component,H=g(w,{data:o.data,content:o.content,setUiAjaxConfiguration:U});if(f.isLazy){if(P)console.log("[UI] Rendering lazy component with Suspense:",f.name);return g(M,{name:f.name,fallback:f.fallback?g(f.fallback,{}):I,onError:T,children:H})}if(P)console.log("[UI] Rendering component directly:",f.name);return H}var _=fU(IU);import{useContext as To}from"react";import{createContext as TU}from"react";var PU=Q("@swarm.ing/pieui:context:uiRenderer",()=>TU(null)),W=PU;import{jsx as y}from"react/jsx-runtime";function Po({uiConfig:o,setUiAjaxConfiguration:U}){let I=To(C),T=To(m),P=E();if(P)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let f=b(o.card);if(!f?.component){if(P)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return I}if(P)console.log("[UILoading] Found component in registry:",{name:f.name,isLazy:f.isLazy,hasMetadata:!!f.metadata,hasFallback:!!f.fallback});if(f.fallback){if(P)console.log("[UILoading] Rendering fallback for:",f.name);let O=f.fallback;return y(O,{})}if(P)console.log("[UILoading] No fallback, rendering full component:",f.name);let w=f.component,H=y(W.Provider,{value:Po,children:y(w,{data:o.data,content:o.content,setUiAjaxConfiguration:U})});if(f.isLazy)return y(M,{name:f.name,fallback:I,onError:T,children:H});return H}var wU=Po;import{useContext as zU}from"react";import{jsx as v}from"react/jsx-runtime";var HU=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,sx:P}=o,f=zU(W)??_;return v(J,{card:T,data:o,children:v("div",{style:P,id:T,children:U.map((w,H)=>{return v(f,{uiConfig:w,setUiAjaxConfiguration:I},`children-${H}`)})})})},wo=HU;var ZU=G({name:"SequenceCard",component:wo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as OU}from"react";import{jsx as zo}from"react/jsx-runtime";var LU=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T}=o,P=OU(W)??_;return zo(J,{card:T,data:o,children:U.map((f,w)=>{return zo(P,{uiConfig:f,setUiAjaxConfiguration:I},`children-${w}`)})})},Ho=LU;var AU=G({name:"UnionCard",component:Ho,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as GU,useState as JU}from"react";import FU from"html-react-parser";import{useCallback as k,useEffect as BU,useRef as l,useState as $U}from"react";function qU(){let o=new AudioContext,U=o.createOscillator(),I=U.connect(o.createMediaStreamDestination());U.start();let T=I.stream.getAudioTracks()[0];return T.enabled=!1,T}function r(o=null,U){let[I,T]=$U(!1),P=l(null),f=l(null),w=l(null),H=k(async(Z,F=!0)=>{if(P.current)O();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")T(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))T(!1)},B.ontrack=(A)=>{if(o)o.srcObject=A.streams[0]},F){let A=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(A.getTracks()[0],A)}else{let A=qU();B.addTrack(A)}let z=B.createDataChannel("oai-events");f.current=z,w.current=new Promise((A)=>{z.addEventListener("open",()=>{A()})});let X=await B.createOffer();await B.setLocalDescription(X);let q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${Z}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:q}),P.current=B,await w.current},[o]),O=k(()=>{let Z=f.current;if(Z)Z.close();P.current?.getSenders()?.forEach((F)=>F.track?.stop()),P.current?.close(),T(!1),P.current=null,f.current=null,w.current=null},[o]),L=k((Z)=>{let F=f.current;if(!F){console.error("Data channel is not ready",Z);return}let B=new Date().toLocaleTimeString();if(Z.event_id=Z.event_id||crypto.randomUUID(),F.send(JSON.stringify(Z)),!Z.timestamp)Z.timestamp=B;U?.(Z)},[U,o]),$=k((Z)=>{if(!f.current){console.error("Data channel is not ready");return}let B=()=>{L({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Z}]}}),L({type:"response.create"})};if(w.current)w.current.then(B);else B()},[U,o]);return BU(()=>{let Z=f.current;if(!Z)return;let F=(B)=>{let z=JSON.parse(B.data);if(!z.timestamp)z.timestamp=new Date().toLocaleTimeString();U?.(z)};return Z.addEventListener("message",F),()=>{Z.removeEventListener("message",F)}},[U,o]),{isSessionActive:I,startSession:H,stopSession:O,sendTextMessage:$}}import{jsx as QU}from"react/jsx-runtime";var DU=({data:o})=>{let{html:U,useSocketioSupport:I,useCentrifugeSupport:T,useMittSupport:P,centrifugeChannel:f}=o,[w,H]=JU(U),{isSessionActive:O,startSession:L,sendTextMessage:$}=r(null,(z)=>{if(console.log(z.type,z.type==="response.output_text.delta"&&z.delta),z.type==="response.output_text.delta"&&z.delta)H((X)=>X+z.delta)});return GU(()=>{H(U)},[U]),QU(J,{card:"HTMLEmbedCard",data:o,methods:{update:(z)=>{H(z.value)},generateUsingAI:async(z)=>{try{if(!O&&z.token)await L(z.token,!1);$(z.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(z)=>{if(!O&&z.token)await L(z.token,!1)}},useCentrifugeSupport:T,useSocketioSupport:I,useMittSupport:P,centrifugeChannel:f,children:FU(w)})},Zo=DU;var XU=G({name:"HTMLEmbedCard",component:Zo,metadata:{author:"Swarm.ing"}});import{useEffect as YU,useState as WU}from"react";import{jsx as Oo}from"react/jsx-runtime";var _U=({data:o})=>{let{name:U,value:I,useSocketioSupport:T,useCentrifugeSupport:P,useMittSupport:f,centrifugeChannel:w}=o,[H,O]=WU(I);return YU(()=>{O(I)},[I]),Oo(J,{card:"HiddenCard",data:o,useSocketioSupport:T,useCentrifugeSupport:P,useMittSupport:f,centrifugeChannel:w,methods:{update:({value:L})=>{O(L)}},children:Oo("input",{type:"hidden",id:U,name:U,value:H})})},Lo=_U;var KU=G({name:"HiddenCard",component:Lo,metadata:{author:"Swarm.ing"}});import{useContext as Ao,useEffect as MU}from"react";import{createContext as CU}from"react";var VU=Q("@swarm.ing/pieui:context:navigate",()=>CU(void 0)),R=VU;import{jsx as NU,Fragment as EU}from"react/jsx-runtime";var RU=({data:o})=>{let{url:U}=o,I=Ao(R),T=Ao(C);return MU(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else I?.(U)},[U,I]),NU(EU,{children:T})},Bo=RU;var pU=G({name:"AutoRedirectCard",component:Bo,metadata:{author:"Swarm.ing"}});import{Bounce as bU,Slide as mU,Zoom as yU,Flip as kU}from"react-toastify";import{toast as jU,ToastContainer as xU}from"react-toastify";import{useContext as SU,useMemo as gU,useRef as vU}from"react";import{jsx as i,Fragment as uU}from"react/jsx-runtime";var lU={bounce:bU,slide:mU,zoom:yU,flip:kU},rU=(o)=>{let U={...o,type:o.alertType,transition:o.transition?lU[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};jU(o.message,U)},iU=(o)=>{console.log("Log event",o)},dU=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(T){console.error("[IOEventsCard] Failed to show notification",T)}},I=window.Notification.permission;if(I==="granted"){U();return}if(I==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((T)=>{if(T==="granted")U()})},cU=({data:o})=>{let{useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:T,centrifugeChannel:P}=o,f=SU(R),w=vU(f);w.current=f;let H=gU(()=>({alert:rU,log:iU,push:dU,redirect:(O)=>{if(O.to){let L=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(L))window.location.href=L;else w.current?.(L)}else window.location.reload()},reload:(O)=>{if(O.to){let L=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(L))window.location.href=L;else w.current?.(L)}else window.location.reload()}}),[]);return i(uU,{children:i(J,{card:"IOEventsCard",data:o,useCentrifugeSupport:U,useSocketioSupport:I,useMittSupport:T,centrifugeChannel:P,methods:H,children:i(xU,{})})})},$o=cU;var hU=G({name:"IOEventsCard",component:$o,metadata:{author:"Swarm.ing"}});import{useEffect as qo,useState as nU}from"react";import{jsx as Go}from"react/jsx-runtime";var sU=({data:o})=>{let{name:U,key:I,value:T,useSocketioSupport:P,useCentrifugeSupport:f,useMittSupport:w,centrifugeChannel:H}=o,[O,L]=nU(T);return qo(()=>{L(T)},[T]),qo(()=>{if(typeof window>"u")return;sessionStorage.setItem(I,O)},[I,O]),Go(J,{card:"SessionStorageCard",data:o,useSocketioSupport:P,useCentrifugeSupport:f,useMittSupport:w,centrifugeChannel:H,methods:{update:({value:$})=>{L($)},remove:()=>{sessionStorage.removeItem(I),L("")}},children:Go("input",{type:"hidden",id:U,name:U,value:O})})},Jo=sU;var aU=G({name:"SessionStorageCard",component:Jo,metadata:{author:"PieData"}});import{useEffect as Fo,useState as tU}from"react";import{jsx as Do}from"react/jsx-runtime";var eU=({data:o})=>{let{name:U,key:I,value:T,useSocketioSupport:P,useCentrifugeSupport:f,useMittSupport:w,centrifugeChannel:H}=o,[O,L]=tU(T);return Fo(()=>{L(T)},[T]),Fo(()=>{if(typeof window>"u")return;localStorage.setItem(I,O)},[I,O]),Do(J,{card:"DeviceStorageCard",data:o,useSocketioSupport:P,useCentrifugeSupport:f,useMittSupport:w,centrifugeChannel:H,methods:{update:({value:$})=>{L($)},remove:()=>{localStorage.removeItem(I),L("")}},children:Do("input",{type:"hidden",id:U,name:U,value:O})})},Qo=eU;var of=G({name:"DeviceStorageCard",component:Qo,metadata:{author:"PieData"}});import{useCallback as d,useContext as c,useEffect as Uf,useRef as ff,useState as Xo}from"react";import{jsx as Yo}from"react/jsx-runtime";var If=({data:o,content:U})=>{let{useLoader:I,noReturn:T,returnType:P,useSocketioSupport:f,useCentrifugeSupport:w,useMittSupport:H,centrifugeChannel:O}=o,L=c(C),$=c(W)??_,[Z,F]=Xo(!1),[B,z]=Xo(null),X=ff(U),V=c(p),K=d((A)=>{if(A===null)F(!0);else if(F(!1),!T)X.current=A;if(!T)z(A)},[T]),D=d((A)=>{X.current=A.content,z(A.content)},[]),q=d((A)=>{if(A===null)F(!0);else if(F(!1),!T)for(let Y of A)V?.emit(Y.name,Y.data)},[T,V]);if(Uf(()=>{z(U),F(!1)},[U]),!B&&I)return L;return Yo(J,{card:"AjaxGroupCard",data:o,methods:{changeContent:D},useSocketioSupport:f,useCentrifugeSupport:w,useMittSupport:H,centrifugeChannel:O,children:Yo($,{uiConfig:B??X.current,setUiAjaxConfiguration:P==="events"?q:K})})},Wo=If;var Tf=G({name:"AjaxGroupCard",component:Wo,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as _o}from"react";import{jsx as u}from"react/jsx-runtime";var Pf=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,url:P,sx:f}=o,w=_o(R),H=_o(W)??_;return u(J,{card:T,data:o,children:u("div",{style:f,id:T,onClick:(L)=>{if(P)if(L.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(P))window.location.href=P;else w?.(P)},children:u(H,{setUiAjaxConfiguration:I,uiConfig:U})})})},Ko=Pf;var wf=G({name:"BoxCard",component:Ko,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as zf}from"react";import{jsx as h}from"react/jsx-runtime";var Hf=({data:o,content:U,setUiAjaxConfiguration:I})=>{let{name:T,sx:P}=o,f=zf(W)??_;return h(J,{card:T,data:o,children:h("div",{style:P,id:T,children:U.map((w,H)=>{return h(f,{uiConfig:w,setUiAjaxConfiguration:I},`children-${H}`)})})})},Co=Hf;var Zf=G({name:"OneOfCard",component:Co,metadata:{author:"Swarm.ing",description:"Different variants"}});export{AU as UnionCard,wU as UILoading,_ as UI,aU as SessionStorageCard,ZU as SequenceCard,J as PieCard,Zf as OneOfCard,hU as IOEventsCard,KU as HiddenCard,XU as HTMLEmbedCard,of as DeviceStorageCard,wf as BoxCard,pU as AutoRedirectCard,Tf as AjaxGroupCard};
|
package/dist/components/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var LU=Object.create;var{getPrototypeOf:PU,defineProperty:j,getOwnPropertyNames:Go,getOwnPropertyDescriptor:OU}=Object,Jo=Object.prototype.hasOwnProperty;var Fo=(o,U,f)=>{f=o!=null?LU(PU(o)):{};let I=U||!o||!o.__esModule?j(f,"default",{value:o,enumerable:!0}):f;for(let z of Go(o))if(!Jo.call(I,z))j(I,z,{get:()=>o[z],enumerable:!0});return I},qo=new WeakMap,wU=(o)=>{var U=qo.get(o),f;if(U)return U;if(U=j({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")Go(o).map((I)=>!Jo.call(U,I)&&j(U,I,{get:()=>o[I],enumerable:!(f=OU(o,I))||f.enumerable}));return qo.set(o,U),U};var AU=(o,U)=>{for(var f in U)j(o,f,{get:U[f],enumerable:!0,configurable:!0,set:(I)=>U[f]=()=>I})};var uU={};AU(uU,{UnionCard:()=>mo,UILoading:()=>yo,UI:()=>_,SessionStorageCard:()=>to,SequenceCard:()=>bo,PieCard:()=>q,OneOfCard:()=>ZU,IOEventsCard:()=>so,HiddenCard:()=>ro,HTMLEmbedCard:()=>lo,DeviceStorageCard:()=>oU,BoxCard:()=>TU,AutoRedirectCard:()=>ho,AjaxGroupCard:()=>fU});module.exports=wU(uU);var C=require("react");var r=require("react");var zo=globalThis,F=(o,U)=>{let f=Symbol.for(o);if(!(f in zo))zo[f]=U();return zo[f]};var BU=F("@swarm.ing/pieui:context:pieConfig",()=>r.createContext(null)),$U=()=>{let o=r.useContext(BU);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var p=()=>{let{enableRenderingLog:o}=$U();return o},Do=p;var Qo=require("react"),qU=require("centrifuge");var eU=F("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var GU=F("@swarm.ing/pieui:context:centrifuge",()=>Qo.createContext(null)),Xo=GU;var JU=require("socket.io-client"),Yo=require("react");var If=F("@swarm.ing/pieui:socket-cache",()=>new Map);var FU=F("@swarm.ing/pieui:context:socket",()=>Yo.createContext(null)),Wo=FU;var DU=Fo(require("mitt")),d=require("react");var QU=F("@swarm.ing/pieui:context:mitt",()=>d.createContext(null));var i=QU;var N=require("react/jsx-runtime"),XU=({card:o,data:U,children:f,useSocketioSupport:I=!1,useCentrifugeSupport:z=!1,useMittSupport:T=!1,centrifugeChannel:Z=void 0,methods:L=void 0,stored:O=void 0})=>{let H=Do(),B=C.useRef(L);if(B.current=L,H)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:z,mitt:T,centrifugeChannel:Z}),console.log("[PieCard] Methods:",L?Object.keys(L):"none"),console.log("[PieCard] Has children:",!!f);let A=C.useContext(Wo),$=C.useContext(Xo),w=C.useContext(i);if(C.useEffect(()=>{if(!A||!I||!B.current||!U.name){if(H&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!A,useSocketioSupport:I,hasMethods:!!B.current,hasDataName:!!U?.name});return}let X=Object.keys(B.current??{}).map((J)=>{let D=`pie${J}_${U.name}`;if(H)console.log(`[PieCard] Socket.IO registering event: ${D}`);let R=(V)=>{B.current?.[J]?.(V)};return A.on(D,R),[D,R]});return()=>{X.forEach(([J,D])=>{if(H)console.log(`[PieCard] Socket.IO unregistering event: ${J}`);A.off(J,D)})}},[A,U.name,I]),C.useEffect(()=>{if(!$||!z||!Z||!U.name){if(H&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!$,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!B.current,hasDataName:!!U?.name});return}let X=Object.keys(B.current??{}).map((J)=>{let D=`pie${J}_${U.name}_${Z}`;if(H)console.log(`[PieCard] Centrifuge subscribing to channel: ${D}`);let R=$.newSubscription(D);return R.on("publication",(V)=>{if(H)console.log(`[PieCard] Centrifuge received data on ${D}:`,V.data);B.current?.[J]?.(V.data)}),R.subscribe(),R});return()=>{X.forEach((J)=>{if(H)console.log("[PieCard] Centrifuge unsubscribing from channel");J.unsubscribe(),$.removeSubscription(J)})}},[$,Z,U.name,z]),C.useEffect(()=>{if(!w||!T||!U.name){if(H&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:T,hasMethods:!!B.current,hasDataName:!!U?.name});return}let P=Object.keys(B.current??{}),X={};return P.forEach((J)=>{let D=`pie${J}_${U.name}`,R=(V)=>{if(H)console.log(`[PieCard] Mitt registering event: ${D}`);B.current?.[J]?.(V)};X[D]=R,w.on(D,R)}),()=>{Object.entries(X).forEach(([J,D])=>{if(H)console.log(`[PieCard] Mitt unregistering event: ${J}`);w.off(J,D)})}},[w,U.name,T]),H)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return N.jsxs(N.Fragment,{children:[N.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),f]});return f},q=XU;var Ro=require("react"),m=new Map;function YU(o,U){return U.catch(()=>{if(m.get(o)===U)m.delete(o)}),m.set(o,U),U}function _o(o,U){return Ro.lazy(()=>{if(m.has(U))return m.get(U);return YU(U,o().then((f)=>f))})}var Ko=F("@swarm.ing/pieui:component-registry",()=>new Map),WU=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let U={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=_o(U.loader,o.name),U.isLazy=!0;return U};function G(o){let U=WU(o);return Ko.set(U.name,U),U.component}var u=(o)=>{return Ko.get(o)};var S=require("react");var Vo=require("react");var h=require("react/jsx-runtime"),RU=F("@swarm.ing/pieui:context:fallback",()=>Vo.createContext(h.jsx(h.Fragment,{}))),M=RU;var Co=require("react");var _U=F("@swarm.ing/pieui:context:lazyError",()=>Co.createContext(void 0)),n=_U;var s=require("react"),Mo=require("react/jsx-runtime"),KU=2,VU=400;class y extends s.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<KU){let U=VU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((f)=>({failed:!1,attempt:f.attempt+1}))},U)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return Mo.jsx(s.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var a=require("react/jsx-runtime");function CU({uiConfig:o,setUiAjaxConfiguration:U}){let f=S.useContext(M),I=S.useContext(n),z=p();if(z)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let T=u(o.card);if(!T?.component){if(z)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return f}if(z)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let Z=T.component,L=a.jsx(Z,{data:o.data,content:o.content,setUiAjaxConfiguration:U});if(T.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",T.name);return a.jsx(y,{name:T.name,fallback:T.fallback?a.jsx(T.fallback,{}):f,onError:I,children:L})}if(z)console.log("[UI] Rendering component directly:",T.name);return L}var _=S.memo(CU);var Ho=require("react");var Eo=require("react");var MU=F("@swarm.ing/pieui:context:uiRenderer",()=>Eo.createContext(null)),K=MU;var g=require("react/jsx-runtime");function No({uiConfig:o,setUiAjaxConfiguration:U}){let f=Ho.useContext(M),I=Ho.useContext(n),z=p();if(z)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let T=u(o.card);if(!T?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return f}if(z)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(z)console.log("[UILoading] Rendering fallback for:",T.name);let O=T.fallback;return g.jsx(O,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",T.name);let Z=T.component,L=g.jsx(K.Provider,{value:No,children:g.jsx(Z,{data:o.data,content:o.content,setUiAjaxConfiguration:U})});if(T.isLazy)return g.jsx(y,{name:T.name,fallback:f,onError:I,children:L});return L}var yo=No;var xo=require("react");var t=require("react/jsx-runtime"),EU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,sx:z}=o,T=xo.useContext(K)??_;return t.jsx(q,{card:I,data:o,children:t.jsx("div",{style:z,id:I,children:U.map((Z,L)=>{return t.jsx(T,{uiConfig:Z,setUiAjaxConfiguration:f},`children-${L}`)})})})},ko=EU;var bo=G({name:"SequenceCard",component:ko,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var jo=require("react");var Zo=require("react/jsx-runtime"),NU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I}=o,z=jo.useContext(K)??_;return Zo.jsx(q,{card:I,data:o,children:U.map((T,Z)=>{return Zo.jsx(z,{uiConfig:T,setUiAjaxConfiguration:f},`children-${Z}`)})})},po=NU;var mo=G({name:"UnionCard",component:po,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var e=require("react"),So=Fo(require("html-react-parser"));var W=require("react");function yU(){let o=new AudioContext,U=o.createOscillator(),f=U.connect(o.createMediaStreamDestination());U.start();let I=f.stream.getAudioTracks()[0];return I.enabled=!1,I}function Lo(o=null,U){let[f,I]=W.useState(!1),z=W.useRef(null),T=W.useRef(null),Z=W.useRef(null),L=W.useCallback(async(A,$=!0)=>{if(z.current)O();let w=new RTCPeerConnection;if(w.onconnectionstatechange=()=>{if(w.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes(w.connectionState))I(!1)},w.ontrack=(Q)=>{if(o)o.srcObject=Q.streams[0]},$){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});w.addTrack(Q.getTracks()[0],Q)}else{let Q=yU();w.addTrack(Q)}let P=w.createDataChannel("oai-events");T.current=P,Z.current=new Promise((Q)=>{P.addEventListener("open",()=>{Q()})});let X=await w.createOffer();await w.setLocalDescription(X);let V=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${A}`,"Content-Type":"application/sdp"}})).text();await w.setRemoteDescription({type:"answer",sdp:V}),z.current=w,await Z.current},[o]),O=W.useCallback(()=>{let A=T.current;if(A)A.close();z.current?.getSenders()?.forEach(($)=>$.track?.stop()),z.current?.close(),I(!1),z.current=null,T.current=null,Z.current=null},[o]),H=W.useCallback((A)=>{let $=T.current;if(!$){console.error("Data channel is not ready",A);return}let w=new Date().toLocaleTimeString();if(A.event_id=A.event_id||crypto.randomUUID(),$.send(JSON.stringify(A)),!A.timestamp)A.timestamp=w;U?.(A)},[U,o]),B=W.useCallback((A)=>{if(!T.current){console.error("Data channel is not ready");return}let w=()=>{H({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:A}]}}),H({type:"response.create"})};if(Z.current)Z.current.then(w);else w()},[U,o]);return W.useEffect(()=>{let A=T.current;if(!A)return;let $=(w)=>{let P=JSON.parse(w.data);if(!P.timestamp)P.timestamp=new Date().toLocaleTimeString();U?.(P)};return A.addEventListener("message",$),()=>{A.removeEventListener("message",$)}},[U,o]),{isSessionActive:f,startSession:L,stopSession:O,sendTextMessage:B}}var vo=require("react/jsx-runtime"),xU=({data:o})=>{let{html:U,useSocketioSupport:f,useCentrifugeSupport:I,useMittSupport:z,centrifugeChannel:T}=o,[Z,L]=e.useState(U),{isSessionActive:O,startSession:H,sendTextMessage:B}=Lo(null,(P)=>{if(console.log(P.type,P.type==="response.output_text.delta"&&P.delta),P.type==="response.output_text.delta"&&P.delta)L((X)=>X+P.delta)});return e.useEffect(()=>{L(U)},[U]),vo.jsx(q,{card:"HTMLEmbedCard",data:o,methods:{update:(P)=>{L(P.value)},generateUsingAI:async(P)=>{try{if(!O&&P.token)await H(P.token,!1);B(P.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(P)=>{if(!O&&P.token)await H(P.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:f,useMittSupport:z,centrifugeChannel:T,children:So.default(Z)})},go=xU;var lo=G({name:"HTMLEmbedCard",component:go,metadata:{author:"Swarm.ing"}});var oo=require("react");var Po=require("react/jsx-runtime"),kU=({data:o})=>{let{name:U,value:f,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:Z}=o,[L,O]=oo.useState(f);return oo.useEffect(()=>{O(f)},[f]),Po.jsx(q,{card:"HiddenCard",data:o,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:Z,methods:{update:({value:H})=>{O(H)}},children:Po.jsx("input",{type:"hidden",id:U,name:U,value:L})})},co=kU;var ro=G({name:"HiddenCard",component:co,metadata:{author:"Swarm.ing"}});var v=require("react");var io=require("react");var bU=F("@swarm.ing/pieui:context:navigate",()=>io.createContext(void 0)),x=bU;var Uo=require("react/jsx-runtime"),jU=({data:o})=>{let{url:U}=o,f=v.useContext(x),I=v.useContext(M);return v.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else f?.(U)},[U,f]),Uo.jsx(Uo.Fragment,{children:I})},uo=jU;var ho=G({name:"AutoRedirectCard",component:uo,metadata:{author:"Swarm.ing"}});var E=require("react-toastify"),fo=require("react-toastify");var b=require("react");var k=require("react/jsx-runtime"),pU={bounce:E.Bounce,slide:E.Slide,zoom:E.Zoom,flip:E.Flip},mU=(o)=>{let U={...o,type:o.alertType,transition:o.transition?pU[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};fo.toast(o.message,U)},SU=(o)=>{console.log("Log event",o)},gU=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(I){console.error("[IOEventsCard] Failed to show notification",I)}},f=window.Notification.permission;if(f==="granted"){U();return}if(f==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")U()})},vU=({data:o})=>{let{useCentrifugeSupport:U,useSocketioSupport:f,useMittSupport:I,centrifugeChannel:z}=o,T=b.useContext(x),Z=b.useRef(T);Z.current=T;let L=b.useMemo(()=>({alert:mU,log:SU,push:gU,redirect:(O)=>{if(O.to){let H=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()},reload:(O)=>{if(O.to){let H=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()}}),[]);return k.jsx(k.Fragment,{children:k.jsx(q,{card:"IOEventsCard",data:o,useCentrifugeSupport:U,useSocketioSupport:f,useMittSupport:I,centrifugeChannel:z,methods:L,children:k.jsx(fo.ToastContainer,{})})})},no=vU;var so=G({name:"IOEventsCard",component:no,metadata:{author:"Swarm.ing"}});var l=require("react");var Oo=require("react/jsx-runtime"),lU=({data:o})=>{let{name:U,key:f,value:I,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:L}=o,[O,H]=l.useState(I);return l.useEffect(()=>{H(I)},[I]),l.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(f,O)},[f,O]),Oo.jsx(q,{card:"SessionStorageCard",data:o,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:L,methods:{update:({value:B})=>{H(B)},remove:()=>{sessionStorage.removeItem(f),H("")}},children:Oo.jsx("input",{type:"hidden",id:U,name:U,value:O})})},ao=lU;var to=G({name:"SessionStorageCard",component:ao,metadata:{author:"PieData"}});var c=require("react");var wo=require("react/jsx-runtime"),cU=({data:o})=>{let{name:U,key:f,value:I,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:L}=o,[O,H]=c.useState(I);return c.useEffect(()=>{H(I)},[I]),c.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(f,O)},[f,O]),wo.jsx(q,{card:"DeviceStorageCard",data:o,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:L,methods:{update:({value:B})=>{H(B)},remove:()=>{localStorage.removeItem(f),H("")}},children:wo.jsx("input",{type:"hidden",id:U,name:U,value:O})})},eo=cU;var oU=G({name:"DeviceStorageCard",component:eo,metadata:{author:"PieData"}});var Y=require("react");var Ao=require("react/jsx-runtime"),rU=({data:o,content:U})=>{let{useLoader:f,noReturn:I,returnType:z,useSocketioSupport:T,useCentrifugeSupport:Z,useMittSupport:L,centrifugeChannel:O}=o,H=Y.useContext(M),B=Y.useContext(K)??_,[A,$]=Y.useState(!1),[w,P]=Y.useState(null),X=Y.useRef(U),J=Y.useContext(i),D=Y.useCallback((Q)=>{if(Q===null)$(!0);else if($(!1),!I)X.current=Q;if(!I)P(Q)},[I]),R=Y.useCallback((Q)=>{X.current=Q.content,P(Q.content)},[]),V=Y.useCallback((Q)=>{if(Q===null)$(!0);else if($(!1),!I)for(let $o of Q)J?.emit($o.name,$o.data)},[I,J]);if(Y.useEffect(()=>{P(U),$(!1)},[U]),!w&&f)return H;return Ao.jsx(q,{card:"AjaxGroupCard",data:o,methods:{changeContent:R},useSocketioSupport:T,useCentrifugeSupport:Z,useMittSupport:L,centrifugeChannel:O,children:Ao.jsx(B,{uiConfig:w??X.current,setUiAjaxConfiguration:z==="events"?V:D})})},UU=rU;var fU=G({name:"AjaxGroupCard",component:UU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var Bo=require("react");var Io=require("react/jsx-runtime"),dU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,url:z,sx:T}=o,Z=Bo.useContext(x),L=Bo.useContext(K)??_;return Io.jsx(q,{card:I,data:o,children:Io.jsx("div",{style:T,id:I,onClick:(H)=>{if(z)if(H.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else Z?.(z)},children:Io.jsx(L,{setUiAjaxConfiguration:f,uiConfig:U})})})},IU=dU;var TU=G({name:"BoxCard",component:IU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var zU=require("react");var To=require("react/jsx-runtime"),iU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,sx:z}=o,T=zU.useContext(K)??_;return To.jsx(q,{card:I,data:o,children:To.jsx("div",{style:z,id:I,children:U.map((Z,L)=>{return To.jsx(T,{uiConfig:Z,setUiAjaxConfiguration:f},`children-${L}`)})})})},HU=iU;var ZU=G({name:"OneOfCard",component:HU,metadata:{author:"Swarm.ing",description:"Different variants"}});
|
|
2
|
+
var OU=Object.create;var{getPrototypeOf:LU,defineProperty:j,getOwnPropertyNames:Go,getOwnPropertyDescriptor:AU}=Object,Jo=Object.prototype.hasOwnProperty;var Fo=(o,U,f)=>{f=o!=null?OU(LU(o)):{};let I=U||!o||!o.__esModule?j(f,"default",{value:o,enumerable:!0}):f;for(let P of Go(o))if(!Jo.call(I,P))j(I,P,{get:()=>o[P],enumerable:!0});return I},qo=new WeakMap,BU=(o)=>{var U=qo.get(o),f;if(U)return U;if(U=j({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")Go(o).map((I)=>!Jo.call(U,I)&&j(U,I,{get:()=>o[I],enumerable:!(f=AU(o,I))||f.enumerable}));return qo.set(o,U),U};var $U=(o,U)=>{for(var f in U)j(o,f,{get:U[f],enumerable:!0,configurable:!0,set:(I)=>U[f]=()=>I})};var nU={};$U(nU,{UnionCard:()=>go,UILoading:()=>mo,UI:()=>K,SessionStorageCard:()=>oU,SequenceCard:()=>jo,PieCard:()=>G,OneOfCard:()=>ZU,IOEventsCard:()=>to,HiddenCard:()=>uo,HTMLEmbedCard:()=>io,DeviceStorageCard:()=>fU,BoxCard:()=>wU,AutoRedirectCard:()=>so,AjaxGroupCard:()=>TU});module.exports=BU(nU);var V=require("react");var d=require("react");var wo=globalThis,Q=(o,U)=>{let f=Symbol.for(o);if(!(f in wo))wo[f]=U();return wo[f]};var qU=Q("@swarm.ing/pieui:context:pieConfig",()=>d.createContext(null)),GU=()=>{let o=d.useContext(qU);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var x=()=>{let{enableRenderingLog:o}=GU();return o},Do=x;var Qo=require("react"),JU=require("centrifuge");var Uf=Q("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var FU=Q("@swarm.ing/pieui:context:centrifuge",()=>Qo.createContext(null)),Xo=FU;var DU=require("socket.io-client"),Yo=require("react");var Pf=Q("@swarm.ing/pieui:socket-cache",()=>new Map);var QU=Q("@swarm.ing/pieui:context:socket",()=>Yo.createContext(null)),Wo=QU;var XU=Fo(require("mitt")),c=require("react");var YU=Q("@swarm.ing/pieui:context:mitt",()=>c.createContext(null));var u=YU;function _o(o){return o.wasRecovering===!0&&o.recovered===!1}function Ko(o){return o.recoverable===!1}var p=require("react/jsx-runtime"),WU=({card:o,data:U,children:f,useSocketioSupport:I=!1,useCentrifugeSupport:P=!1,useMittSupport:T=!1,centrifugeChannel:w=void 0,methods:H=void 0,stored:O=void 0,onResync:L=void 0})=>{let $=Do(),Z=V.useRef(H);Z.current=H;let F=V.useRef(L);if(F.current=L,$)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:P,mitt:T,centrifugeChannel:w}),console.log("[PieCard] Methods:",H?Object.keys(H):"none"),console.log("[PieCard] Has children:",!!f);let B=V.useContext(Wo),z=V.useContext(Xo),X=V.useContext(u);if(V.useEffect(()=>{if(!B||!I||!Z.current||!U.name){if($&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:I,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let M=Object.keys(Z.current??{}).map((D)=>{let q=`pie${D}_${U.name}`;if($)console.log(`[PieCard] Socket.IO registering event: ${q}`);let A=(_)=>{Z.current?.[D]?.(_)};return B.on(q,A),[q,A]});return()=>{M.forEach(([D,q])=>{if($)console.log(`[PieCard] Socket.IO unregistering event: ${D}`);B.off(D,q)})}},[B,U.name,I]),V.useEffect(()=>{if(!z||!P||!w||!U.name){if($&&P)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!z,useCentrifugeSupport:P,hasCentrifugeChannel:!!w,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let M=Object.keys(Z.current??{}).map((D)=>{let q=`pie${D}_${U.name}_${w}`;if($)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let A=z.newSubscription(q,{recoverable:!0,positioned:!0});return A.on("publication",(_)=>{if($)console.log(`[PieCard] Centrifuge received data on ${q}:`,_.data);Z.current?.[D]?.(_.data)}),A.on("subscribed",(_)=>{if(Ko(_))console.warn(`[PieCard] Centrifuge channel ${q} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(_o(_)){if($)console.log(`[PieCard] Centrifuge recovery gap on ${q}; requesting resync`);F.current?.({channel:q,reason:"gap"})}}),A.subscribe(),A});return()=>{M.forEach((D)=>{if($)console.log("[PieCard] Centrifuge unsubscribing from channel");D.unsubscribe(),z.removeSubscription(D)})}},[z,w,U.name,P]),V.useEffect(()=>{if(!X||!T||!U.name){if($&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!X,useMittSupport:T,hasMethods:!!Z.current,hasDataName:!!U?.name});return}let N=Object.keys(Z.current??{}),M={};return N.forEach((D)=>{let q=`pie${D}_${U.name}`,A=(_)=>{if($)console.log(`[PieCard] Mitt registering event: ${q}`);Z.current?.[D]?.(_)};M[q]=A,X.on(q,A)}),()=>{Object.entries(M).forEach(([D,q])=>{if($)console.log(`[PieCard] Mitt unregistering event: ${D}`);X.off(D,q)})}},[X,U.name,T]),$)console.log("[PieCard] Rendering complete, returning children");if(O!==void 0)return p.jsxs(p.Fragment,{children:[p.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(O)}),f]});return f},G=WU;var Co=require("react"),S=new Map;function _U(o,U){return U.catch(()=>{if(S.get(o)===U)S.delete(o)}),S.set(o,U),U}function Vo(o,U){return Co.lazy(()=>{if(S.has(U))return S.get(U);return _U(U,o().then((f)=>f))})}var Mo=Q("@swarm.ing/pieui:component-registry",()=>new Map),KU=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let U={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=Vo(U.loader,o.name),U.isLazy=!0;return U};function J(o){let U=KU(o);return Mo.set(U.name,U),U.component}var h=(o)=>{return Mo.get(o)};var g=require("react");var Ro=require("react");var n=require("react/jsx-runtime"),CU=Q("@swarm.ing/pieui:context:fallback",()=>Ro.createContext(n.jsx(n.Fragment,{}))),R=CU;var Eo=require("react");var VU=Q("@swarm.ing/pieui:context:lazyError",()=>Eo.createContext(void 0)),s=VU;var a=require("react"),No=require("react/jsx-runtime"),MU=2,RU=400;class b extends a.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(o){if(this.props.onError?.(o),this.state.attempt<MU){let U=RU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((f)=>({failed:!1,attempt:f.attempt+1}))},U)}}componentDidUpdate(o){if(o.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return No.jsx(a.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var t=require("react/jsx-runtime");function EU({uiConfig:o,setUiAjaxConfiguration:U}){let f=g.useContext(R),I=g.useContext(s),P=x();if(P)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let T=h(o.card);if(!T?.component){if(P)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return f}if(P)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let w=T.component,H=t.jsx(w,{data:o.data,content:o.content,setUiAjaxConfiguration:U});if(T.isLazy){if(P)console.log("[UI] Rendering lazy component with Suspense:",T.name);return t.jsx(b,{name:T.name,fallback:T.fallback?t.jsx(T.fallback,{}):f,onError:I,children:H})}if(P)console.log("[UI] Rendering component directly:",T.name);return H}var K=g.memo(EU);var zo=require("react");var po=require("react");var NU=Q("@swarm.ing/pieui:context:uiRenderer",()=>po.createContext(null)),C=NU;var v=require("react/jsx-runtime");function bo({uiConfig:o,setUiAjaxConfiguration:U}){let f=zo.useContext(R),I=zo.useContext(s),P=x();if(P)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let T=h(o.card);if(!T?.component){if(P)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return f}if(P)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(P)console.log("[UILoading] Rendering fallback for:",T.name);let O=T.fallback;return v.jsx(O,{})}if(P)console.log("[UILoading] No fallback, rendering full component:",T.name);let w=T.component,H=v.jsx(C.Provider,{value:bo,children:v.jsx(w,{data:o.data,content:o.content,setUiAjaxConfiguration:U})});if(T.isLazy)return v.jsx(b,{name:T.name,fallback:f,onError:I,children:H});return H}var mo=bo;var yo=require("react");var e=require("react/jsx-runtime"),pU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,sx:P}=o,T=yo.useContext(C)??K;return e.jsx(G,{card:I,data:o,children:e.jsx("div",{style:P,id:I,children:U.map((w,H)=>{return e.jsx(T,{uiConfig:w,setUiAjaxConfiguration:f},`children-${H}`)})})})},ko=pU;var jo=J({name:"SequenceCard",component:ko,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var xo=require("react");var Ho=require("react/jsx-runtime"),bU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I}=o,P=xo.useContext(C)??K;return Ho.jsx(G,{card:I,data:o,children:U.map((T,w)=>{return Ho.jsx(P,{uiConfig:T,setUiAjaxConfiguration:f},`children-${w}`)})})},So=bU;var go=J({name:"UnionCard",component:So,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var oo=require("react"),vo=Fo(require("html-react-parser"));var W=require("react");function mU(){let o=new AudioContext,U=o.createOscillator(),f=U.connect(o.createMediaStreamDestination());U.start();let I=f.stream.getAudioTracks()[0];return I.enabled=!1,I}function Zo(o=null,U){let[f,I]=W.useState(!1),P=W.useRef(null),T=W.useRef(null),w=W.useRef(null),H=W.useCallback(async(Z,F=!0)=>{if(P.current)O();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))I(!1)},B.ontrack=(A)=>{if(o)o.srcObject=A.streams[0]},F){let A=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(A.getTracks()[0],A)}else{let A=mU();B.addTrack(A)}let z=B.createDataChannel("oai-events");T.current=z,w.current=new Promise((A)=>{z.addEventListener("open",()=>{A()})});let X=await B.createOffer();await B.setLocalDescription(X);let q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:X.sdp,headers:{Authorization:`Bearer ${Z}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:q}),P.current=B,await w.current},[o]),O=W.useCallback(()=>{let Z=T.current;if(Z)Z.close();P.current?.getSenders()?.forEach((F)=>F.track?.stop()),P.current?.close(),I(!1),P.current=null,T.current=null,w.current=null},[o]),L=W.useCallback((Z)=>{let F=T.current;if(!F){console.error("Data channel is not ready",Z);return}let B=new Date().toLocaleTimeString();if(Z.event_id=Z.event_id||crypto.randomUUID(),F.send(JSON.stringify(Z)),!Z.timestamp)Z.timestamp=B;U?.(Z)},[U,o]),$=W.useCallback((Z)=>{if(!T.current){console.error("Data channel is not ready");return}let B=()=>{L({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Z}]}}),L({type:"response.create"})};if(w.current)w.current.then(B);else B()},[U,o]);return W.useEffect(()=>{let Z=T.current;if(!Z)return;let F=(B)=>{let z=JSON.parse(B.data);if(!z.timestamp)z.timestamp=new Date().toLocaleTimeString();U?.(z)};return Z.addEventListener("message",F),()=>{Z.removeEventListener("message",F)}},[U,o]),{isSessionActive:f,startSession:H,stopSession:O,sendTextMessage:$}}var ro=require("react/jsx-runtime"),yU=({data:o})=>{let{html:U,useSocketioSupport:f,useCentrifugeSupport:I,useMittSupport:P,centrifugeChannel:T}=o,[w,H]=oo.useState(U),{isSessionActive:O,startSession:L,sendTextMessage:$}=Zo(null,(z)=>{if(console.log(z.type,z.type==="response.output_text.delta"&&z.delta),z.type==="response.output_text.delta"&&z.delta)H((X)=>X+z.delta)});return oo.useEffect(()=>{H(U)},[U]),ro.jsx(G,{card:"HTMLEmbedCard",data:o,methods:{update:(z)=>{H(z.value)},generateUsingAI:async(z)=>{try{if(!O&&z.token)await L(z.token,!1);$(z.prompt)}catch(X){console.error("Failed to generate using AI",X)}},initializeAI:async(z)=>{if(!O&&z.token)await L(z.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:f,useMittSupport:P,centrifugeChannel:T,children:vo.default(w)})},lo=yU;var io=J({name:"HTMLEmbedCard",component:lo,metadata:{author:"Swarm.ing"}});var Uo=require("react");var Oo=require("react/jsx-runtime"),kU=({data:o})=>{let{name:U,value:f,useSocketioSupport:I,useCentrifugeSupport:P,useMittSupport:T,centrifugeChannel:w}=o,[H,O]=Uo.useState(f);return Uo.useEffect(()=>{O(f)},[f]),Oo.jsx(G,{card:"HiddenCard",data:o,useSocketioSupport:I,useCentrifugeSupport:P,useMittSupport:T,centrifugeChannel:w,methods:{update:({value:L})=>{O(L)}},children:Oo.jsx("input",{type:"hidden",id:U,name:U,value:H})})},co=kU;var uo=J({name:"HiddenCard",component:co,metadata:{author:"Swarm.ing"}});var l=require("react");var ho=require("react");var jU=Q("@swarm.ing/pieui:context:navigate",()=>ho.createContext(void 0)),m=jU;var fo=require("react/jsx-runtime"),xU=({data:o})=>{let{url:U}=o,f=l.useContext(m),I=l.useContext(R);return l.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else f?.(U)},[U,f]),fo.jsx(fo.Fragment,{children:I})},no=xU;var so=J({name:"AutoRedirectCard",component:no,metadata:{author:"Swarm.ing"}});var E=require("react-toastify"),Io=require("react-toastify");var k=require("react");var y=require("react/jsx-runtime"),SU={bounce:E.Bounce,slide:E.Slide,zoom:E.Zoom,flip:E.Flip},gU=(o)=>{let U={...o,type:o.alertType,transition:o.transition?SU[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};Io.toast(o.message,U)},vU=(o)=>{console.log("Log event",o)},lU=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(I){console.error("[IOEventsCard] Failed to show notification",I)}},f=window.Notification.permission;if(f==="granted"){U();return}if(f==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")U()})},rU=({data:o})=>{let{useCentrifugeSupport:U,useSocketioSupport:f,useMittSupport:I,centrifugeChannel:P}=o,T=k.useContext(m),w=k.useRef(T);w.current=T;let H=k.useMemo(()=>({alert:gU,log:vU,push:lU,redirect:(O)=>{if(O.to){let L=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(L))window.location.href=L;else w.current?.(L)}else window.location.reload()},reload:(O)=>{if(O.to){let L=O.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(L))window.location.href=L;else w.current?.(L)}else window.location.reload()}}),[]);return y.jsx(y.Fragment,{children:y.jsx(G,{card:"IOEventsCard",data:o,useCentrifugeSupport:U,useSocketioSupport:f,useMittSupport:I,centrifugeChannel:P,methods:H,children:y.jsx(Io.ToastContainer,{})})})},ao=rU;var to=J({name:"IOEventsCard",component:ao,metadata:{author:"Swarm.ing"}});var r=require("react");var Lo=require("react/jsx-runtime"),iU=({data:o})=>{let{name:U,key:f,value:I,useSocketioSupport:P,useCentrifugeSupport:T,useMittSupport:w,centrifugeChannel:H}=o,[O,L]=r.useState(I);return r.useEffect(()=>{L(I)},[I]),r.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(f,O)},[f,O]),Lo.jsx(G,{card:"SessionStorageCard",data:o,useSocketioSupport:P,useCentrifugeSupport:T,useMittSupport:w,centrifugeChannel:H,methods:{update:({value:$})=>{L($)},remove:()=>{sessionStorage.removeItem(f),L("")}},children:Lo.jsx("input",{type:"hidden",id:U,name:U,value:O})})},eo=iU;var oU=J({name:"SessionStorageCard",component:eo,metadata:{author:"PieData"}});var i=require("react");var Ao=require("react/jsx-runtime"),dU=({data:o})=>{let{name:U,key:f,value:I,useSocketioSupport:P,useCentrifugeSupport:T,useMittSupport:w,centrifugeChannel:H}=o,[O,L]=i.useState(I);return i.useEffect(()=>{L(I)},[I]),i.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(f,O)},[f,O]),Ao.jsx(G,{card:"DeviceStorageCard",data:o,useSocketioSupport:P,useCentrifugeSupport:T,useMittSupport:w,centrifugeChannel:H,methods:{update:({value:$})=>{L($)},remove:()=>{localStorage.removeItem(f),L("")}},children:Ao.jsx("input",{type:"hidden",id:U,name:U,value:O})})},UU=dU;var fU=J({name:"DeviceStorageCard",component:UU,metadata:{author:"PieData"}});var Y=require("react");var Bo=require("react/jsx-runtime"),cU=({data:o,content:U})=>{let{useLoader:f,noReturn:I,returnType:P,useSocketioSupport:T,useCentrifugeSupport:w,useMittSupport:H,centrifugeChannel:O}=o,L=Y.useContext(R),$=Y.useContext(C)??K,[Z,F]=Y.useState(!1),[B,z]=Y.useState(null),X=Y.useRef(U),N=Y.useContext(u),M=Y.useCallback((A)=>{if(A===null)F(!0);else if(F(!1),!I)X.current=A;if(!I)z(A)},[I]),D=Y.useCallback((A)=>{X.current=A.content,z(A.content)},[]),q=Y.useCallback((A)=>{if(A===null)F(!0);else if(F(!1),!I)for(let _ of A)N?.emit(_.name,_.data)},[I,N]);if(Y.useEffect(()=>{z(U),F(!1)},[U]),!B&&f)return L;return Bo.jsx(G,{card:"AjaxGroupCard",data:o,methods:{changeContent:D},useSocketioSupport:T,useCentrifugeSupport:w,useMittSupport:H,centrifugeChannel:O,children:Bo.jsx($,{uiConfig:B??X.current,setUiAjaxConfiguration:P==="events"?q:M})})},IU=cU;var TU=J({name:"AjaxGroupCard",component:IU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var $o=require("react");var To=require("react/jsx-runtime"),uU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,url:P,sx:T}=o,w=$o.useContext(m),H=$o.useContext(C)??K;return To.jsx(G,{card:I,data:o,children:To.jsx("div",{style:T,id:I,onClick:(L)=>{if(P)if(L.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(P))window.location.href=P;else w?.(P)},children:To.jsx(H,{setUiAjaxConfiguration:f,uiConfig:U})})})},PU=uU;var wU=J({name:"BoxCard",component:PU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var zU=require("react");var Po=require("react/jsx-runtime"),hU=({data:o,content:U,setUiAjaxConfiguration:f})=>{let{name:I,sx:P}=o,T=zU.useContext(C)??K;return Po.jsx(G,{card:I,data:o,children:Po.jsx("div",{style:P,id:I,children:U.map((w,H)=>{return Po.jsx(T,{uiConfig:w,setUiAjaxConfiguration:f},`children-${H}`)})})})},HU=hU;var ZU=J({name:"OneOfCard",component:HU,metadata:{author:"Swarm.ing",description:"Different variants"}});
|
package/dist/index.esm.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useContext as GH,useEffect as XH,useRef as fU}from"react";import{createContext as DU,useContext as VU}from"react";var IH=globalThis,K=(H,U)=>{let Z=Symbol.for(H);if(!(Z in IH))IH[Z]=U();return IH[Z]};var m=K("@swarm.ing/pieui:context:pieConfig",()=>DU(null)),p=()=>{let H=VU(m);if(!H)throw Error("usePieConfig must be used within PieConfigProvider");return H},g=()=>{let{apiServer:H}=p();return H},s=g,n=()=>{let{centrifugeServer:H}=p();return H};var j=()=>{let{enableRenderingLog:H}=p();return H},NH=j;var OH="__piedemo__";import{createContext as FU}from"react";import{Centrifuge as fH}from"centrifuge";var EH=K("@swarm.ing/pieui:centrifuge-cache",()=>new Map),r=(H,U)=>{if(!U)return null;let Z=`${H}::${U}`,z=EH.get(Z);if(z)return z;async function T(){let J=await fetch(H+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new fH.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let $=new fH(U,{getToken:T});return EH.set(Z,$),$},_U=K("@swarm.ing/pieui:context:centrifuge",()=>FU(null)),y=_U;import{io as KU}from"socket.io-client";import{createContext as MU}from"react";var CH=K("@swarm.ing/pieui:socket-cache",()=>new Map),t=(H)=>{let U=CH.get(H);if(U)return U;let Z=KU(H,{autoConnect:!1,transports:["websocket"]});return CH.set(H,Z),Z},AU=K("@swarm.ing/pieui:context:socket",()=>MU(null)),k=AU;import PU from"mitt";import{createContext as RU,useCallback as wU,useContext as LU}from"react";function c(){return K("@swarm.ing/pieui:mitt-emitter",()=>PU())}var jH=K("@swarm.ing/pieui:context:mitt",()=>RU(null));function NU(H){let U=LU(jH);return wU((Z,z)=>{(U??c()).emit(`pie${Z}_${H}`,z)},[H,U])}var x=jH;import{jsx as jU,jsxs as yU,Fragment as CU}from"react/jsx-runtime";var EU=({card:H,data:U,children:Z,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:$=!1,centrifugeChannel:J=void 0,methods:B=void 0,stored:I=void 0})=>{let O=NH(),D=fU(B);if(D.current=B,O)console.log("[PieCard] Rendering card:",H),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:T,mitt:$,centrifugeChannel:J}),console.log("[PieCard] Methods:",B?Object.keys(B):"none"),console.log("[PieCard] Has children:",!!Z);let Q=GH(k),V=GH(y),G=GH(x);if(XH(()=>{if(!Q||!z||!D.current||!U.name){if(O&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!Q,useSocketioSupport:z,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}`;if(O)console.log(`[PieCard] Socket.IO registering event: ${q}`);let M=(F)=>{D.current?.[X]?.(F)};return Q.on(q,M),[q,M]});return()=>{W.forEach(([X,q])=>{if(O)console.log(`[PieCard] Socket.IO unregistering event: ${X}`);Q.off(X,q)})}},[Q,U.name,z]),XH(()=>{if(!V||!T||!J||!U.name){if(O&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}_${J}`;if(O)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let M=V.newSubscription(q);return M.on("publication",(F)=>{if(O)console.log(`[PieCard] Centrifuge received data on ${q}:`,F.data);D.current?.[X]?.(F.data)}),M.subscribe(),M});return()=>{W.forEach((X)=>{if(O)console.log("[PieCard] Centrifuge unsubscribing from channel");X.unsubscribe(),V.removeSubscription(X)})}},[V,J,U.name,T]),XH(()=>{if(!G||!$||!U.name){if(O&&$)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!G,useMittSupport:$,hasMethods:!!D.current,hasDataName:!!U?.name});return}let Y=Object.keys(D.current??{}),W={};return Y.forEach((X)=>{let q=`pie${X}_${U.name}`,M=(F)=>{if(O)console.log(`[PieCard] Mitt registering event: ${q}`);D.current?.[X]?.(F)};W[q]=M,G.on(q,M)}),()=>{Object.entries(W).forEach(([X,q])=>{if(O)console.log(`[PieCard] Mitt unregistering event: ${X}`);G.off(X,q)})}},[G,U.name,$]),O)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return yU(CU,{children:[jU("input",{type:"hidden",name:U.name,value:JSON.stringify(I)}),Z]});return Z},P=EU;import{lazy as kU}from"react";var b=new Map;function yH(H,U){return U.catch(()=>{if(b.get(H)===U)b.delete(H)}),b.set(H,U),U}function YH(H,U){return kU(()=>{if(b.has(U))return b.get(U);return yH(U,H().then((Z)=>Z))})}var kH=async(H,U)=>{if(!U)return;if(b.has(H))return b.get(H);return yH(H,U().then((Z)=>Z))};var E=K("@swarm.ing/pieui:component-registry",()=>new Map),xU=(H)=>{if(!H.name)throw Error("Component registration requires a name");if(!H.component&&!H.loader)throw Error(`Component "${H.name}" requires component or loader`);let U={name:H.name,component:H.component,loader:H.loader,metadata:H.metadata,fallback:H.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=YH(U.loader,H.name),U.isLazy=!0;return U};function _(H){let U=xU(H);return E.set(U.name,U),U.component}var SU=(H)=>{H.forEach((U)=>_(U))},bU=(H)=>{E.delete(H)},vU=(H)=>{return E.has(H)},mU=(H)=>{return E.get(H)?.metadata},u=(H)=>{return E.get(H)},cU=()=>{return Array.from(E.keys())},hU=()=>{return E.size},SH=()=>Array.from(E.values()).filter((H)=>H.isLazy&&typeof H.loader==="function").map((H)=>H.name),bH=(H)=>{let U=E.get(H);if(!U?.isLazy||typeof U.loader!=="function")return;return kH(H,U.loader)},xH=!1,pU=()=>{if(xH||typeof window>"u")return;xH=!0;let H=navigator.connection;if(H?.saveData)return;if(H?.effectiveType&&["slow-2g","2g"].includes(H.effectiveType))return;let U=SH(),Z="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=U.length)return;Z(()=>{Promise.resolve().then(()=>bH(U[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};import{useContext as vH,memo as eU}from"react";import{createContext as gU}from"react";import{jsx as oU,Fragment as dU}from"react/jsx-runtime";var uU=K("@swarm.ing/pieui:context:fallback",()=>gU(oU(dU,{}))),L=uU;import{createContext as lU}from"react";var iU=K("@swarm.ing/pieui:context:lazyError",()=>lU(void 0)),S=iU;import{Component as sU,Suspense as nU}from"react";import{jsx as aU}from"react/jsx-runtime";var rU=2,tU=400;class h extends sU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(H){if(this.props.onError?.(H),this.state.attempt<rU){let U=tU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},U)}}componentDidUpdate(H){if(H.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return aU(nU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as qH}from"react/jsx-runtime";function HZ({uiConfig:H,setUiAjaxConfiguration:U}){let Z=vH(L),z=vH(S),T=j();if(T)console.log("[UI] Rendering component:",H.card),console.log("[UI] Component data:",H.data),console.log("[UI] Component content:",H.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let $=u(H.card);if(!$?.component){if(T)console.warn(`[UI] Component not found in registry: ${H.card}`),console.log("[UI] Returning fallback component");return Z}if(T)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let J=$.component,B=qH(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U});if($.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",$.name);return qH(h,{name:$.name,fallback:$.fallback?qH($.fallback,{}):Z,onError:z,children:B})}if(T)console.log("[UI] Rendering component directly:",$.name);return B}var w=eU(HZ);import{useContext as mH}from"react";import{createContext as UZ}from"react";var ZZ=K("@swarm.ing/pieui:context:uiRenderer",()=>UZ(null)),N=ZZ;import{jsx as a}from"react/jsx-runtime";function cH({uiConfig:H,setUiAjaxConfiguration:U}){let Z=mH(L),z=mH(S),T=j();if(T)console.log("[UILoading] Rendering fallback for:",H.card),console.log("[UILoading] Component data:",H.data),console.log("[UILoading] Component content:",H.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let $=u(H.card);if(!$?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${H.card}`),console.log("[UILoading] Returning fallback component");return Z}if(T)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(T)console.log("[UILoading] Rendering fallback for:",$.name);let I=$.fallback;return a(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",$.name);let J=$.component,B=a(N.Provider,{value:cH,children:a(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U})});if($.isLazy)return a(h,{name:$.name,fallback:Z,onError:z,children:B});return B}var QH=cH;import{useContext as $Z}from"react";import{jsx as WH}from"react/jsx-runtime";var zZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:T}=H,$=$Z(N)??w;return WH(P,{card:z,data:H,children:WH("div",{style:T,id:z,children:U.map((J,B)=>{return WH($,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},hH=zZ;var TZ=_({name:"SequenceCard",component:hH,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as JZ}from"react";import{jsx as pH}from"react/jsx-runtime";var BZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z}=H,T=JZ(N)??w;return pH(P,{card:z,data:H,children:U.map(($,J)=>{return pH(T,{uiConfig:$,setUiAjaxConfiguration:Z},`children-${J}`)})})},gH=BZ;var IZ=_({name:"UnionCard",component:gH,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as YZ,useState as qZ}from"react";import QZ from"html-react-parser";import{useCallback as e,useEffect as OZ,useRef as DH,useState as GZ}from"react";function XZ(){let H=new AudioContext,U=H.createOscillator(),Z=U.connect(H.createMediaStreamDestination());U.start();let z=Z.stream.getAudioTracks()[0];return z.enabled=!1,z}function VH(H=null,U){let[Z,z]=GZ(!1),T=DH(null),$=DH(null),J=DH(null),B=e(async(Q,V=!0)=>{if(T.current)I();let G=new RTCPeerConnection;if(G.onconnectionstatechange=()=>{if(G.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(G.connectionState))z(!1)},G.ontrack=(A)=>{if(H)H.srcObject=A.streams[0]},V){let A=await navigator.mediaDevices.getUserMedia({audio:!0});G.addTrack(A.getTracks()[0],A)}else{let A=XZ();G.addTrack(A)}let Y=G.createDataChannel("oai-events");$.current=Y,J.current=new Promise((A)=>{Y.addEventListener("open",()=>{A()})});let W=await G.createOffer();await G.setLocalDescription(W);let F=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:W.sdp,headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/sdp"}})).text();await G.setRemoteDescription({type:"answer",sdp:F}),T.current=G,await J.current},[H]),I=e(()=>{let Q=$.current;if(Q)Q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,$.current=null,J.current=null},[H]),O=e((Q)=>{let V=$.current;if(!V){console.error("Data channel is not ready",Q);return}let G=new Date().toLocaleTimeString();if(Q.event_id=Q.event_id||crypto.randomUUID(),V.send(JSON.stringify(Q)),!Q.timestamp)Q.timestamp=G;U?.(Q)},[U,H]),D=e((Q)=>{if(!$.current){console.error("Data channel is not ready");return}let G=()=>{O({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Q}]}}),O({type:"response.create"})};if(J.current)J.current.then(G);else G()},[U,H]);return OZ(()=>{let Q=$.current;if(!Q)return;let V=(G)=>{let Y=JSON.parse(G.data);if(!Y.timestamp)Y.timestamp=new Date().toLocaleTimeString();U?.(Y)};return Q.addEventListener("message",V),()=>{Q.removeEventListener("message",V)}},[U,H]),{isSessionActive:Z,startSession:B,stopSession:I,sendTextMessage:D}}import{jsx as DZ}from"react/jsx-runtime";var WZ=({data:H})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:$}=H,[J,B]=qZ(U),{isSessionActive:I,startSession:O,sendTextMessage:D}=VH(null,(Y)=>{if(console.log(Y.type,Y.type==="response.output_text.delta"&&Y.delta),Y.type==="response.output_text.delta"&&Y.delta)B((W)=>W+Y.delta)});return YZ(()=>{B(U)},[U]),DZ(P,{card:"HTMLEmbedCard",data:H,methods:{update:(Y)=>{B(Y.value)},generateUsingAI:async(Y)=>{try{if(!I&&Y.token)await O(Y.token,!1);D(Y.prompt)}catch(W){console.error("Failed to generate using AI",W)}},initializeAI:async(Y)=>{if(!I&&Y.token)await O(Y.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:Z,useMittSupport:T,centrifugeChannel:$,children:QZ(J)})},uH=WZ;var VZ=_({name:"HTMLEmbedCard",component:uH,metadata:{author:"Swarm.ing"}});import{useEffect as FZ,useState as _Z}from"react";import{jsx as dH}from"react/jsx-runtime";var KZ=({data:H})=>{let{name:U,value:Z,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:J}=H,[B,I]=_Z(Z);return FZ(()=>{I(Z)},[Z]),dH(P,{card:"HiddenCard",data:H,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:J,methods:{update:({value:O})=>{I(O)}},children:dH("input",{type:"hidden",id:U,name:U,value:B})})},oH=KZ;var MZ=_({name:"HiddenCard",component:oH,metadata:{author:"Swarm.ing"}});import{useContext as lH,useEffect as RZ}from"react";import{createContext as AZ}from"react";var PZ=K("@swarm.ing/pieui:context:navigate",()=>AZ(void 0)),C=PZ;import{jsx as NZ,Fragment as LZ}from"react/jsx-runtime";var wZ=({data:H})=>{let{url:U}=H,Z=lH(C),z=lH(L);return RZ(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),NZ(LZ,{children:z})},iH=wZ;var fZ=_({name:"AutoRedirectCard",component:iH,metadata:{author:"Swarm.ing"}});import{Bounce as EZ,Slide as CZ,Zoom as jZ,Flip as yZ}from"react-toastify";import{toast as kZ,ToastContainer as xZ}from"react-toastify";import{useContext as SZ,useMemo as bZ,useRef as vZ}from"react";import{jsx as FH,Fragment as uZ}from"react/jsx-runtime";var mZ={bounce:EZ,slide:CZ,zoom:jZ,flip:yZ},cZ=(H)=>{let U={...H,type:H.alertType,transition:H.transition?mZ[H.transition]:void 0,position:H.position??"bottom-right",autoClose:H.autoClose??3000,style:{backgroundColor:"black",...H.sx}};kZ(H.message,U)},hZ=(H)=>{console.log("Log event",H)},pZ=(H)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(H.title,{body:H.message??H.subtitle,icon:H.icon,silent:H.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")U()})},gZ=({data:H})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:T}=H,$=SZ(C),J=vZ($);J.current=$;let B=bZ(()=>({alert:cZ,log:hZ,push:pZ,redirect:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()},reload:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()}}),[]);return FH(uZ,{children:FH(P,{card:"IOEventsCard",data:H,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:T,methods:B,children:FH(xZ,{})})})},sH=gZ;var dZ=_({name:"IOEventsCard",component:sH,metadata:{author:"Swarm.ing"}});import{useEffect as nH,useState as oZ}from"react";import{jsx as rH}from"react/jsx-runtime";var lZ=({data:H})=>{let{name:U,key:Z,value:z,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=oZ(z);return nH(()=>{O(z)},[z]),nH(()=>{if(typeof window>"u")return;sessionStorage.setItem(Z,I)},[Z,I]),rH(P,{card:"SessionStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{sessionStorage.removeItem(Z),O("")}},children:rH("input",{type:"hidden",id:U,name:U,value:I})})},tH=lZ;var iZ=_({name:"SessionStorageCard",component:tH,metadata:{author:"PieData"}});import{useEffect as aH,useState as sZ}from"react";import{jsx as eH}from"react/jsx-runtime";var nZ=({data:H})=>{let{name:U,key:Z,value:z,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=sZ(z);return aH(()=>{O(z)},[z]),aH(()=>{if(typeof window>"u")return;localStorage.setItem(Z,I)},[Z,I]),eH(P,{card:"DeviceStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{localStorage.removeItem(Z),O("")}},children:eH("input",{type:"hidden",id:U,name:U,value:I})})},HU=nZ;var rZ=_({name:"DeviceStorageCard",component:HU,metadata:{author:"PieData"}});import{useCallback as _H,useContext as KH,useEffect as tZ,useRef as aZ,useState as UU}from"react";import{jsx as ZU}from"react/jsx-runtime";var eZ=({data:H,content:U})=>{let{useLoader:Z,noReturn:z,returnType:T,useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I}=H,O=KH(L),D=KH(N)??w,[Q,V]=UU(!1),[G,Y]=UU(null),W=aZ(U),X=KH(x),q=_H((A)=>{if(A===null)V(!0);else if(V(!1),!z)W.current=A;if(!z)Y(A)},[z]),M=_H((A)=>{W.current=A.content,Y(A.content)},[]),F=_H((A)=>{if(A===null)V(!0);else if(V(!1),!z)for(let l of A)X?.emit(l.name,l.data)},[z,X]);if(tZ(()=>{Y(U),V(!1)},[U]),!G&&Z)return O;return ZU(P,{card:"AjaxGroupCard",data:H,methods:{changeContent:M},useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I,children:ZU(D,{uiConfig:G??W.current,setUiAjaxConfiguration:T==="events"?F:q})})},$U=eZ;var H$=_({name:"AjaxGroupCard",component:$U,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as zU}from"react";import{jsx as MH}from"react/jsx-runtime";var U$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,url:T,sx:$}=H,J=zU(C),B=zU(N)??w;return MH(P,{card:z,data:H,children:MH("div",{style:$,id:z,onClick:(O)=>{if(T)if(O.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:MH(B,{setUiAjaxConfiguration:Z,uiConfig:U})})})},TU=U$;var Z$=_({name:"BoxCard",component:TU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as $$}from"react";import{jsx as AH}from"react/jsx-runtime";var z$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:T}=H,$=$$(N)??w;return AH(P,{card:z,data:H,children:AH("div",{style:T,id:z,children:U.map((J,B)=>{return AH($,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},JU=z$;var T$=_({name:"OneOfCard",component:JU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as o}from"react";import{QueryClient as W$,QueryClientProvider as D$,useQuery as V$}from"@tanstack/react-query";import{useContext as I$,useEffect as O$}from"react";import{useEffect as J$,useState as B$}from"react";var HH=new Map,UH=new Map;function ZH(H,U){let Z=`${H}::${U}`,z=H?HH.get(Z):void 0,[T,$]=B$(z??null);return J$(()=>{if(!H)return;if(HH.has(Z)){$(HH.get(Z));return}let J=UH.get(Z);if(!J)J=fetch(H+`api/support/${U}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return HH.set(Z,I),UH.delete(Z),I}).catch((I)=>{throw UH.delete(Z),I}),UH.set(Z,J);let B=!1;return J.then((I)=>{if(!B)$(I)}).catch(()=>{}),()=>{B=!0}},[H,U,Z]),T}var d=K("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function BU(){d.resolve?.()}function PH(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!d.promise)d.promise=new Promise((H)=>{d.resolve=()=>{H()}});return d.promise}var G$=({children:H})=>{let U=I$(k),Z=s(),z=ZH(Z,"socketIO"),T=($)=>{if(typeof window<"u")window.sid=$.sid,BU(),console.log(`SocketIO initialized: ${window.sid}`)};return O$(()=>{if(!U)return;let $=()=>{console.log("SocketIO connected")},J=(B)=>{console.log(`SocketIO disconnected: ${B}`),U.connect()};if(z)U.on("pieinit",T),U.on("connect",$),U.on("disconnect",J),U.connect();return()=>{if(z)U.off("pieinit",T),U.off("connect",$),U.off("disconnect",J),U.disconnect()}},[U,z]),H},$H=G$;import{useContext as X$,useEffect as Y$}from"react";var q$=({children:H})=>{let U=X$(y),Z=s(),z=ZH(Z,"centrifuge");return Y$(()=>{if(!U)return;let T=()=>{console.log("Centrifuge connected")},$=(J)=>{console.log("Centrifuge disconnected:",J)};if(z)U.on("connected",T),U.on("disconnected",$),U.connect();return()=>{if(z)U.disconnect()}},[U,z]),H},zH=q$;import{createAxiosDateTransformer as F$}from"axios-date-transformer";import{jsx as Q$}from"react/jsx-runtime";function IU(H,U,Z){if(!U)return Z;let z=H.replace(/^\//,""),T=U[z];if(!T)return Z;return Q$(QH,{uiConfig:T})}import{jsx as R,Fragment as M$}from"react/jsx-runtime";var _$=({location:H,fallback:U,piecache:Z,onError:z,queryOptions:T,disableGlobalForm:$})=>{let J=g(),B=n(),I=j(),O=o(()=>F$({baseURL:J||""}),[J]),D=o(()=>c(),[]),Q=o(()=>J?t(J):null,[J]),V=o(()=>J?r(J,B):null,[J,B]),{data:G,isLoading:Y,error:W}=V$({queryKey:["uiConfig",H.pathname+H.search,J],enabled:!!J,queryFn:async()=>{let q=new URLSearchParams(H.search);q.set("__pieroot","web");let M="/api/content"+H.pathname+"?"+q.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",M);let F=await O.get(M,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",F.data);return F.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...T}),X=IU(H.pathname,Z,U);if(!J)return X??null;if(I)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",B),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!Z);if(W){if(I)console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data});return z?.(W),X}if(Y||!G){if(I)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!G});return X}if(I)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return R(x.Provider,{value:D,children:R(k.Provider,{value:Q,children:R(y.Provider,{value:V,children:R(L.Provider,{value:U??R(M$,{}),children:R($H,{children:R(zH,{children:$?R(w,{uiConfig:G}):R("form",{id:"piedata_global_form",action:J+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:R(w,{uiConfig:G})})})})})})})})},K$=(H)=>{let U=o(()=>new W$,[]),Z=H.queryClient??U;return R(C.Provider,{value:H.onNavigate,children:R(m.Provider,{value:H.config,children:R(S.Provider,{value:H.onError,children:R(D$,{client:Z,children:R(_$,{...H})})})})})},RH=K$;import{useMemo as wH,useState as A$}from"react";import{QueryClient as P$,QueryClientProvider as R$}from"@tanstack/react-query";import{jsx as f,Fragment as N$}from"react/jsx-runtime";var w$=({location:H,fallback:U,children:Z,disableGlobalForm:z})=>{let T=g(),$=n(),J=j(),B=wH(()=>c(),[]),I=wH(()=>T?t(T):null,[T]),O=wH(()=>T?r(T,$):null,[T,$]);if(J)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",$),console.log("[PieRoot] Fallback provided:",!!U);return f(x.Provider,{value:B,children:f(k.Provider,{value:I,children:f(y.Provider,{value:O,children:f(L.Provider,{value:U??f(N$,{}),children:f($H,{children:f(zH,{children:z?Z:f("form",{id:"piedata_global_form",action:T+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},L$=(H)=>{let[U]=A$(()=>new P$),Z=H.queryClient??U;return f(C.Provider,{value:H.onNavigate,children:f(m.Provider,{value:H.config,children:f(S.Provider,{value:H.onError,children:f(R$,{client:Z,children:f(w$,{...H})})})})})},f$=L$;import{useMemo as E$}from"react";import{jsx as OU}from"react/jsx-runtime";var C$=OU("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),j$=({apiServer:H,pathname:U="/",search:Z="",centrifugeServer:z,fallback:T,enableRenderingLog:$=!1})=>{let J=H??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",B=E$(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:$,pageProcessor:"web"}),[J,z,$]);return OU(RH,{location:{pathname:U,search:Z},config:B,fallback:T??C$,onNavigate:(O)=>{if(typeof window<"u")window.history.pushState(null,"",O)}})},y$=j$;import{useMemo as k$}from"react";var x$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],S$=new Set(["telegram:cloud","telegram:secure"]),TH=(H)=>{if(H==="sid")return{source:"sid",key:"sid"};for(let U of x$){let Z=U+":";if(H.startsWith(Z))return{source:U,key:H.slice(Z.length)}}return{source:"dom",key:H}},GU=(H,U=!1)=>{let{source:Z,key:z}=TH(H);if(Z==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}if(Z==="localStorage"||Z==="sessionStorage")try{let B=(Z==="localStorage"?window.localStorage:window.sessionStorage).getItem(z);if(B===null){if(U)console.warn(`No ${Z} value found for key ${z}`);return[]}return[B]}catch(J){if(U)console.warn(`Failed to read ${Z} key ${z}:`,J);return[]}if(Z==="cookie"){let J=b$(z);if(J===null){if(U)console.warn(`No cookie found for key ${z}`);return[]}return[J]}if(Z==="url"){let J=new URLSearchParams(window.location.search).getAll(z);if(!J.length&&U)console.warn(`No URL query param found for key ${z}`);return J}if(S$.has(Z)){if(U)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=document.getElementsByName(z);if(!T.length){if(U)console.warn(`No input found with name ${z}`);return[]}let $=T[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},b$=(H)=>{let U=document.cookie?document.cookie.split(";"):[];for(let Z of U){let z=Z.indexOf("=");if((z===-1?Z:Z.slice(0,z)).trim()===H){let $=z===-1?"":Z.slice(z+1).trim();try{return decodeURIComponent($)}catch{return $}}}return null},v$=(H,U,Z)=>{let z=window.Telegram?.WebApp,T=H==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,$=H==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if(Z)console.warn(`${$} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(U,(B,I)=>{if(B){if(Z)console.warn(`Failed to read ${$} key ${U}:`,B);J([]);return}if(I==null||I===""){if(Z)console.warn(`No ${$} value found for key ${U}`);J([]);return}J([I])})}catch(B){if(Z)console.warn(`Failed to read ${$} key ${U}:`,B);J([])}})},XU=async(H,U=!1)=>{let{source:Z,key:z}=TH(H);if(Z==="telegram:cloud"||Z==="telegram:secure")return v$(Z,z,U);return GU(H,U)},m$=(H,U={},Z=[],z,T)=>{let $=T?.renderingLogEnabled??!1,J=T?.timeout,B=T?.retryPolicy,I=B?.maxRetries??0,O=B?.baseDelay??1000,D=B?.retryOn??[502,503,504];if($)console.log("Registering AJAX: ",z,U,Z);return async(Q={})=>{if(typeof window>"u"||typeof document>"u"){if($)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if($)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!H){if($)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await PH();let G=new FormData;for(let[X,q]of Object.entries({...U,...Q}))G.append(X,q);for(let X of Z){let{key:q}=TH(X);for(let M of await XU(X,$))G.append(q,M)}let Y=V+"api/ajax_content"+z;H(null);let W;for(let X=0;X<=I;X++){if(X>0){let F=O*2**(X-1);if($)console.log(`AJAX retry ${X}/${I} after ${F}ms`);await new Promise((A)=>setTimeout(A,F))}let q=J!=null?new AbortController:null,M=q&&setTimeout(()=>q.abort(),J);try{let F=await fetch(Y,{method:"POST",body:G,signal:q?.signal});if(M)clearTimeout(M);if(!F.ok&&D.includes(F.status)&&X<I){W=Error(`HTTP ${F.status}`);continue}let l=(F.headers.get("content-type")||"").includes("application/json");if(!!F.body?.getReader&&!l){let i=F.body.getReader(),YU=new TextDecoder,v="";while(!0){let{done:JH,value:qU}=await i.read();if(JH)break;v+=YU.decode(qU,{stream:!0});let LH=v.split(`
|
|
3
|
-
`);
|
|
2
|
+
import{useContext as OU,useEffect as qU,useRef as bU}from"react";import{createContext as wZ,useContext as NZ}from"react";var YU=globalThis,P=(U,Z)=>{let H=Symbol.for(U);if(!(H in YU))YU[H]=Z();return YU[H]};var g=P("@swarm.ing/pieui:context:pieConfig",()=>wZ(null)),d=()=>{let U=NZ(g);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},o=()=>{let{apiServer:U}=d();return U},n=o,t=()=>{let{centrifugeServer:U}=d();return U};var k=()=>{let{enableRenderingLog:U}=d();return U},jU=k;var BU="__piedemo__";import{createContext as EZ}from"react";import{Centrifuge as fU}from"centrifuge";var CU=P("@swarm.ing/pieui:centrifuge-cache",()=>new Map),a=(U,Z)=>{if(!Z)return null;let H=`${U}::${Z}`,$=CU.get(H);if($)return $;async function T(){let J=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new fU.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let z=new fU(Z,{getToken:T});return CU.set(H,z),z},jZ=P("@swarm.ing/pieui:context:centrifuge",()=>EZ(null)),y=jZ;import{io as fZ}from"socket.io-client";import{createContext as CZ}from"react";var xU=P("@swarm.ing/pieui:socket-cache",()=>new Map),e=(U)=>{let Z=xU.get(U);if(Z)return Z;let H=fZ(U,{autoConnect:!1,transports:["websocket"]});return xU.set(U,H),H},xZ=P("@swarm.ing/pieui:context:socket",()=>CZ(null)),S=xZ;import kZ from"mitt";import{createContext as yZ,useCallback as SZ,useContext as bZ}from"react";function u(){return P("@swarm.ing/pieui:mitt-emitter",()=>kZ())}var kU=P("@swarm.ing/pieui:context:mitt",()=>yZ(null));function mZ(U){let Z=bZ(kU);return SZ((H,$)=>{(Z??u()).emit(`pie${H}_${U}`,$)},[U,Z])}var b=kU;function yU(U){return U.wasRecovering===!0&&U.recovered===!1}function SU(U){return U.recoverable===!1}import{jsx as hZ,jsxs as gZ,Fragment as pZ}from"react/jsx-runtime";var vZ=({card:U,data:Z,children:H,useSocketioSupport:$=!1,useCentrifugeSupport:T=!1,useMittSupport:z=!1,centrifugeChannel:J=void 0,methods:G=void 0,stored:I=void 0,onResync:X=void 0})=>{let W=jU(),q=bU(G);q.current=G;let V=bU(X);if(V.current=X,W)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:$,centrifuge:T,mitt:z,centrifugeChannel:J}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!H);let B=OU(S),O=OU(y),_=OU(b);if(qU(()=>{if(!B||!$||!q.current||!Z.name){if(W&&$)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:$,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let A=Object.keys(q.current??{}).map((D)=>{let Y=`pie${D}_${Z.name}`;if(W)console.log(`[PieCard] Socket.IO registering event: ${Y}`);let Q=(w)=>{q.current?.[D]?.(w)};return B.on(Y,Q),[Y,Q]});return()=>{A.forEach(([D,Y])=>{if(W)console.log(`[PieCard] Socket.IO unregistering event: ${D}`);B.off(D,Y)})}},[B,Z.name,$]),qU(()=>{if(!O||!T||!J||!Z.name){if(W&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let A=Object.keys(q.current??{}).map((D)=>{let Y=`pie${D}_${Z.name}_${J}`;if(W)console.log(`[PieCard] Centrifuge subscribing to channel: ${Y}`);let Q=O.newSubscription(Y,{recoverable:!0,positioned:!0});return Q.on("publication",(w)=>{if(W)console.log(`[PieCard] Centrifuge received data on ${Y}:`,w.data);q.current?.[D]?.(w.data)}),Q.on("subscribed",(w)=>{if(SU(w))console.warn(`[PieCard] Centrifuge channel ${Y} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(yU(w)){if(W)console.log(`[PieCard] Centrifuge recovery gap on ${Y}; requesting resync`);V.current?.({channel:Y,reason:"gap"})}}),Q.subscribe(),Q});return()=>{A.forEach((D)=>{if(W)console.log("[PieCard] Centrifuge unsubscribing from channel");D.unsubscribe(),O.removeSubscription(D)})}},[O,J,Z.name,T]),qU(()=>{if(!_||!z||!Z.name){if(W&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!_,useMittSupport:z,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let F=Object.keys(q.current??{}),A={};return F.forEach((D)=>{let Y=`pie${D}_${Z.name}`,Q=(w)=>{if(W)console.log(`[PieCard] Mitt registering event: ${Y}`);q.current?.[D]?.(w)};A[Y]=Q,_.on(Y,Q)}),()=>{Object.entries(A).forEach(([D,Y])=>{if(W)console.log(`[PieCard] Mitt unregistering event: ${D}`);_.off(D,Y)})}},[_,Z.name,z]),W)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return gZ(pZ,{children:[hZ("input",{type:"hidden",name:Z.name,value:JSON.stringify(I)}),H]});return H},M=vZ;import{lazy as uZ}from"react";var v=new Map;function mU(U,Z){return Z.catch(()=>{if(v.get(U)===Z)v.delete(U)}),v.set(U,Z),Z}function QU(U,Z){return uZ(()=>{if(v.has(Z))return v.get(Z);return mU(Z,U().then((H)=>H))})}var vU=async(U,Z)=>{if(!Z)return;if(v.has(U))return v.get(U);return mU(U,Z().then((H)=>H))};var C=P("@swarm.ing/pieui:component-registry",()=>new Map),cZ=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let Z={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!Z.component&&Z.loader)Z.component=QU(Z.loader,U.name),Z.isLazy=!0;return Z};function K(U){let Z=cZ(U);return C.set(Z.name,Z),Z.component}var dZ=(U)=>{U.forEach((Z)=>K(Z))},oZ=(U)=>{C.delete(U)},lZ=(U)=>{return C.has(U)},iZ=(U)=>{return C.get(U)?.metadata},l=(U)=>{return C.get(U)},sZ=()=>{return Array.from(C.keys())},rZ=()=>{return C.size},hU=()=>Array.from(C.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),gU=(U)=>{let Z=C.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return vU(U,Z.loader)},pU=!1,nZ=()=>{if(pU||typeof window>"u")return;pU=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=hU(),H="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),$=(T)=>{if(T>=Z.length)return;H(()=>{Promise.resolve().then(()=>gU(Z[T])).catch(()=>{}).finally(()=>$(T+1))})};$(0)};import{useContext as uU,memo as GH}from"react";import{createContext as tZ}from"react";import{jsx as UH,Fragment as eZ}from"react/jsx-runtime";var aZ=P("@swarm.ing/pieui:context:fallback",()=>tZ(UH(eZ,{}))),E=aZ;import{createContext as ZH}from"react";var HH=P("@swarm.ing/pieui:context:lazyError",()=>ZH(void 0)),m=HH;import{Component as $H,Suspense as zH}from"react";import{jsx as IH}from"react/jsx-runtime";var TH=2,JH=400;class c extends $H{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<TH){let Z=JH*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((H)=>({failed:!1,attempt:H.attempt+1}))},Z)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return IH(zH,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as WU}from"react/jsx-runtime";function XH({uiConfig:U,setUiAjaxConfiguration:Z}){let H=uU(E),$=uU(m),T=k();if(T)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!Z);let z=l(U.card);if(!z?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return H}if(T)console.log("[UI] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let J=z.component,G=WU(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(z.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",z.name);return WU(c,{name:z.name,fallback:z.fallback?WU(z.fallback,{}):H,onError:$,children:G})}if(T)console.log("[UI] Rendering component directly:",z.name);return G}var N=GH(XH);import{useContext as cU}from"react";import{createContext as YH}from"react";var BH=P("@swarm.ing/pieui:context:uiRenderer",()=>YH(null)),j=BH;import{jsx as UU}from"react/jsx-runtime";function dU({uiConfig:U,setUiAjaxConfiguration:Z}){let H=cU(E),$=cU(m),T=k();if(T)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!Z);let z=l(U.card);if(!z?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return H}if(T)console.log("[UILoading] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata,hasFallback:!!z.fallback});if(z.fallback){if(T)console.log("[UILoading] Rendering fallback for:",z.name);let I=z.fallback;return UU(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",z.name);let J=z.component,G=UU(j.Provider,{value:dU,children:UU(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(z.isLazy)return UU(c,{name:z.name,fallback:H,onError:$,children:G});return G}var DU=dU;import{useContext as OH}from"react";import{jsx as _U}from"react/jsx-runtime";var qH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:T}=U,z=OH(j)??N;return _U(M,{card:$,data:U,children:_U("div",{style:T,id:$,children:Z.map((J,G)=>{return _U(z,{uiConfig:J,setUiAjaxConfiguration:H},`children-${G}`)})})})},oU=qH;var QH=K({name:"SequenceCard",component:oU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as WH}from"react";import{jsx as lU}from"react/jsx-runtime";var DH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$}=U,T=WH(j)??N;return lU(M,{card:$,data:U,children:Z.map((z,J)=>{return lU(T,{uiConfig:z,setUiAjaxConfiguration:H},`children-${J}`)})})},iU=DH;var _H=K({name:"UnionCard",component:iU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as PH,useState as AH}from"react";import MH from"html-react-parser";import{useCallback as ZU,useEffect as VH,useRef as VU,useState as FH}from"react";function KH(){let U=new AudioContext,Z=U.createOscillator(),H=Z.connect(U.createMediaStreamDestination());Z.start();let $=H.stream.getAudioTracks()[0];return $.enabled=!1,$}function FU(U=null,Z){let[H,$]=FH(!1),T=VU(null),z=VU(null),J=VU(null),G=ZU(async(q,V=!0)=>{if(T.current)I();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")$(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))$(!1)},B.ontrack=(Q)=>{if(U)U.srcObject=Q.streams[0]},V){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(Q.getTracks()[0],Q)}else{let Q=KH();B.addTrack(Q)}let O=B.createDataChannel("oai-events");z.current=O,J.current=new Promise((Q)=>{O.addEventListener("open",()=>{Q()})});let _=await B.createOffer();await B.setLocalDescription(_);let Y=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:_.sdp,headers:{Authorization:`Bearer ${q}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:Y}),T.current=B,await J.current},[U]),I=ZU(()=>{let q=z.current;if(q)q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),$(!1),T.current=null,z.current=null,J.current=null},[U]),X=ZU((q)=>{let V=z.current;if(!V){console.error("Data channel is not ready",q);return}let B=new Date().toLocaleTimeString();if(q.event_id=q.event_id||crypto.randomUUID(),V.send(JSON.stringify(q)),!q.timestamp)q.timestamp=B;Z?.(q)},[Z,U]),W=ZU((q)=>{if(!z.current){console.error("Data channel is not ready");return}let B=()=>{X({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:q}]}}),X({type:"response.create"})};if(J.current)J.current.then(B);else B()},[Z,U]);return VH(()=>{let q=z.current;if(!q)return;let V=(B)=>{let O=JSON.parse(B.data);if(!O.timestamp)O.timestamp=new Date().toLocaleTimeString();Z?.(O)};return q.addEventListener("message",V),()=>{q.removeEventListener("message",V)}},[Z,U]),{isSessionActive:H,startSession:G,stopSession:I,sendTextMessage:W}}import{jsx as LH}from"react/jsx-runtime";var RH=({data:U})=>{let{html:Z,useSocketioSupport:H,useCentrifugeSupport:$,useMittSupport:T,centrifugeChannel:z}=U,[J,G]=AH(Z),{isSessionActive:I,startSession:X,sendTextMessage:W}=FU(null,(O)=>{if(console.log(O.type,O.type==="response.output_text.delta"&&O.delta),O.type==="response.output_text.delta"&&O.delta)G((_)=>_+O.delta)});return PH(()=>{G(Z)},[Z]),LH(M,{card:"HTMLEmbedCard",data:U,methods:{update:(O)=>{G(O.value)},generateUsingAI:async(O)=>{try{if(!I&&O.token)await X(O.token,!1);W(O.prompt)}catch(_){console.error("Failed to generate using AI",_)}},initializeAI:async(O)=>{if(!I&&O.token)await X(O.token,!1)}},useCentrifugeSupport:$,useSocketioSupport:H,useMittSupport:T,centrifugeChannel:z,children:MH(J)})},sU=RH;var wH=K({name:"HTMLEmbedCard",component:sU,metadata:{author:"Swarm.ing"}});import{useEffect as NH,useState as EH}from"react";import{jsx as rU}from"react/jsx-runtime";var jH=({data:U})=>{let{name:Z,value:H,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J}=U,[G,I]=EH(H);return NH(()=>{I(H)},[H]),rU(M,{card:"HiddenCard",data:U,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J,methods:{update:({value:X})=>{I(X)}},children:rU("input",{type:"hidden",id:Z,name:Z,value:G})})},nU=jH;var fH=K({name:"HiddenCard",component:nU,metadata:{author:"Swarm.ing"}});import{useContext as tU,useEffect as kH}from"react";import{createContext as CH}from"react";var xH=P("@swarm.ing/pieui:context:navigate",()=>CH(void 0)),x=xH;import{jsx as bH,Fragment as SH}from"react/jsx-runtime";var yH=({data:U})=>{let{url:Z}=U,H=tU(x),$=tU(E);return kH(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else H?.(Z)},[Z,H]),bH(SH,{children:$})},aU=yH;var mH=K({name:"AutoRedirectCard",component:aU,metadata:{author:"Swarm.ing"}});import{Bounce as vH,Slide as pH,Zoom as hH,Flip as gH}from"react-toastify";import{toast as uH,ToastContainer as cH}from"react-toastify";import{useContext as dH,useMemo as oH,useRef as lH}from"react";import{jsx as KU,Fragment as aH}from"react/jsx-runtime";var iH={bounce:vH,slide:pH,zoom:hH,flip:gH},sH=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?iH[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};uH(U.message,Z)},rH=(U)=>{console.log("Log event",U)},nH=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let Z=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch($){console.error("[IOEventsCard] Failed to show notification",$)}},H=window.Notification.permission;if(H==="granted"){Z();return}if(H==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then(($)=>{if($==="granted")Z()})},tH=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:T}=U,z=dH(x),J=lH(z);J.current=z;let G=oH(()=>({alert:sH,log:rH,push:nH,redirect:(I)=>{if(I.to){let X=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(X))window.location.href=X;else J.current?.(X)}else window.location.reload()},reload:(I)=>{if(I.to){let X=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(X))window.location.href=X;else J.current?.(X)}else window.location.reload()}}),[]);return KU(aH,{children:KU(M,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:T,methods:G,children:KU(cH,{})})})},eU=tH;var eH=K({name:"IOEventsCard",component:eU,metadata:{author:"Swarm.ing"}});import{useEffect as UZ,useState as U$}from"react";import{jsx as ZZ}from"react/jsx-runtime";var Z$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G}=U,[I,X]=U$($);return UZ(()=>{X($)},[$]),UZ(()=>{if(typeof window>"u")return;sessionStorage.setItem(H,I)},[H,I]),ZZ(M,{card:"SessionStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:W})=>{X(W)},remove:()=>{sessionStorage.removeItem(H),X("")}},children:ZZ("input",{type:"hidden",id:Z,name:Z,value:I})})},HZ=Z$;var H$=K({name:"SessionStorageCard",component:HZ,metadata:{author:"PieData"}});import{useEffect as $Z,useState as $$}from"react";import{jsx as zZ}from"react/jsx-runtime";var z$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G}=U,[I,X]=$$($);return $Z(()=>{X($)},[$]),$Z(()=>{if(typeof window>"u")return;localStorage.setItem(H,I)},[H,I]),zZ(M,{card:"DeviceStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:W})=>{X(W)},remove:()=>{localStorage.removeItem(H),X("")}},children:zZ("input",{type:"hidden",id:Z,name:Z,value:I})})},TZ=z$;var T$=K({name:"DeviceStorageCard",component:TZ,metadata:{author:"PieData"}});import{useCallback as PU,useContext as AU,useEffect as J$,useRef as I$,useState as JZ}from"react";import{jsx as IZ}from"react/jsx-runtime";var G$=({data:U,content:Z})=>{let{useLoader:H,noReturn:$,returnType:T,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I}=U,X=AU(E),W=AU(j)??N,[q,V]=JZ(!1),[B,O]=JZ(null),_=I$(Z),F=AU(b),A=PU((Q)=>{if(Q===null)V(!0);else if(V(!1),!$)_.current=Q;if(!$)O(Q)},[$]),D=PU((Q)=>{_.current=Q.content,O(Q.content)},[]),Y=PU((Q)=>{if(Q===null)V(!0);else if(V(!1),!$)for(let w of Q)F?.emit(w.name,w.data)},[$,F]);if(J$(()=>{O(Z),V(!1)},[Z]),!B&&H)return X;return IZ(M,{card:"AjaxGroupCard",data:U,methods:{changeContent:D},useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I,children:IZ(W,{uiConfig:B??_.current,setUiAjaxConfiguration:T==="events"?Y:A})})},GZ=G$;var X$=K({name:"AjaxGroupCard",component:GZ,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as XZ}from"react";import{jsx as MU}from"react/jsx-runtime";var Y$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,url:T,sx:z}=U,J=XZ(x),G=XZ(j)??N;return MU(M,{card:$,data:U,children:MU("div",{style:z,id:$,onClick:(X)=>{if(T)if(X.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:MU(G,{setUiAjaxConfiguration:H,uiConfig:Z})})})},YZ=Y$;var B$=K({name:"BoxCard",component:YZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as O$}from"react";import{jsx as RU}from"react/jsx-runtime";var q$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:T}=U,z=O$(j)??N;return RU(M,{card:$,data:U,children:RU("div",{style:T,id:$,children:Z.map((J,G)=>{return RU(z,{uiConfig:J,setUiAjaxConfiguration:H},`children-${G}`)})})})},BZ=q$;var Q$=K({name:"OneOfCard",component:BZ,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as s}from"react";import{QueryClient as f$,QueryClientProvider as C$,useQuery as x$}from"@tanstack/react-query";import{useContext as M$,useEffect as R$}from"react";import{useEffect as W$,useState as D$}from"react";var HU=new Map,$U=new Map;function zU(U,Z){let H=`${U}::${Z}`,$=U?HU.get(H):void 0,[T,z]=D$($??null);return W$(()=>{if(!U)return;if(HU.has(H)){z(HU.get(H));return}let J=$U.get(H);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return HU.set(H,I),$U.delete(H),I}).catch((I)=>{throw $U.delete(H),I}),$U.set(H,J);let G=!1;return J.then((I)=>{if(!G)z(I)}).catch(()=>{}),()=>{G=!0}},[U,Z,H]),T}var _$=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let H of Z){let $=H.indexOf("=");if(($===-1?H:H.slice(0,$)).trim()===U){let z=$===-1?"":H.slice($+1).trim();try{return decodeURIComponent(z)}catch{return z}}}return null},V$={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,Z){return(U==="local"?window.localStorage:window.sessionStorage).getItem(Z)},readCookie:_$,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let H=Z[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},OZ=V$;var F$={};function p(){return F$}var qZ=new Map;var QZ=(U)=>{return qZ.has(U)?qZ.get(U):null};var WZ,K$={isClient(){return!0},readSid(){return WZ},setSid(U){WZ=U},readWebStorage(U,Z){let H=p(),$=U==="local"?H.storage:H.sessionStorage;return $?$.getItem(Z):null},async readWebStorageAsync(U,Z){let H=p(),$=U==="local"?H.asyncStorage:H.asyncSessionStorage;if($)return $.getItem(Z);let T=U==="local"?H.storage:H.sessionStorage;return T?T.getItem(Z):null},readCookie(U){let Z=p();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=p();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=p();return Z.getInput?Z.getInput(U):QZ(U)},submitGlobalForm(){p().submitForm?.()}},DZ=K$;var P$=typeof navigator<"u"&&navigator.product==="ReactNative",A$=P$?DZ:OZ,R=A$;var i=P("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function _Z(){i.resolve?.()}function LU(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!i.promise)i.promise=new Promise((U)=>{i.resolve=()=>{U()}});return i.promise}var L$=({children:U})=>{let Z=M$(S),H=n(),$=zU(H,"socketIO"),T=(z)=>{if(R.isClient())R.setSid(z.sid),_Z(),console.log(`SocketIO initialized: ${R.readSid()}`)};return R$(()=>{if(!Z)return;let z=()=>{console.log("SocketIO connected")},J=(G)=>{console.log(`SocketIO disconnected: ${G}`),Z.connect()};if($)Z.on("pieinit",T),Z.on("connect",z),Z.on("disconnect",J),Z.connect();return()=>{if($)Z.off("pieinit",T),Z.off("connect",z),Z.off("disconnect",J),Z.disconnect()}},[Z,$]),U},TU=L$;import{useContext as w$,useEffect as N$}from"react";var E$=({children:U})=>{let Z=w$(y),H=n(),$=zU(H,"centrifuge");return N$(()=>{if(!Z)return;let T=()=>{console.log("Centrifuge connected")},z=(J)=>{console.log("Centrifuge disconnected:",J)};if($)Z.on("connected",T),Z.on("disconnected",z),Z.connect();return()=>{if($)Z.disconnect()}},[Z,$]),U},JU=E$;import{createAxiosDateTransformer as k$}from"axios-date-transformer";import{jsx as j$}from"react/jsx-runtime";function VZ(U,Z,H){if(!Z)return H;let $=U.replace(/^\//,""),T=Z[$];if(!T)return H;return j$(DU,{uiConfig:T})}import{jsx as L,Fragment as b$}from"react/jsx-runtime";var y$=({location:U,fallback:Z,piecache:H,onError:$,queryOptions:T,disableGlobalForm:z})=>{let J=o(),G=t(),I=k(),X=s(()=>k$({baseURL:J||""}),[J]),W=s(()=>u(),[]),q=s(()=>J?e(J):null,[J]),V=s(()=>J?a(J,G):null,[J,G]),{data:B,isLoading:O,error:_}=x$({queryKey:["uiConfig",U.pathname+U.search,J],enabled:!!J,queryFn:async()=>{let A=new URLSearchParams(U.search);A.set("__pieroot","web");let D="/api/content"+U.pathname+"?"+A.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",D);let Y=await X.get(D,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",Y.data);return Y.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(A)=>Math.min(1000*2**A,30000),...T}),F=VZ(U.pathname,H,Z);if(!J)return F??null;if(I)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!H);if(_){if(I)console.error("[PieRoot] Error fetching UI configuration:",_),console.error("[PieRoot] Error details:",{message:_.message,status:_.response?.status,data:_.response?.data});return $?.(_),F}if(O||!B){if(I)console.log("[PieRoot] Loading state:",{isLoading:O,hasUiConfiguration:!!B});return F}if(I)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L(b.Provider,{value:W,children:L(S.Provider,{value:q,children:L(y.Provider,{value:V,children:L(E.Provider,{value:Z??L(b$,{}),children:L(TU,{children:L(JU,{children:z?L(N,{uiConfig:B}):L("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:L(N,{uiConfig:B})})})})})})})})},S$=(U)=>{let Z=s(()=>new f$,[]),H=U.queryClient??Z;return L(x.Provider,{value:U.onNavigate,children:L(g.Provider,{value:U.config,children:L(m.Provider,{value:U.onError,children:L(C$,{client:H,children:L(y$,{...U})})})})})},wU=S$;import{useMemo as NU,useState as m$}from"react";import{QueryClient as v$,QueryClientProvider as p$}from"@tanstack/react-query";import{jsx as f,Fragment as u$}from"react/jsx-runtime";var h$=({location:U,fallback:Z,children:H,disableGlobalForm:$})=>{let T=o(),z=t(),J=k(),G=NU(()=>u(),[]),I=NU(()=>T?e(T):null,[T]),X=NU(()=>T?a(T,z):null,[T,z]);if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!Z);return f(b.Provider,{value:G,children:f(S.Provider,{value:I,children:f(y.Provider,{value:X,children:f(E.Provider,{value:Z??f(u$,{}),children:f(TU,{children:f(JU,{children:$?H:f("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:H})})})})})})})},g$=(U)=>{let[Z]=m$(()=>new v$),H=U.queryClient??Z;return f(x.Provider,{value:U.onNavigate,children:f(g.Provider,{value:U.config,children:f(m.Provider,{value:U.onError,children:f(p$,{client:H,children:f(h$,{...U})})})})})},c$=g$;import{useMemo as d$}from"react";import{jsx as FZ}from"react/jsx-runtime";var o$=FZ("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),l$=({apiServer:U,pathname:Z="/",search:H="",centrifugeServer:$,fallback:T,enableRenderingLog:z=!1})=>{let J=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",G=d$(()=>({apiServer:J,centrifugeServer:$,enableRenderingLog:z,pageProcessor:"web"}),[J,$,z]);return FZ(wU,{location:{pathname:Z,search:H},config:G,fallback:T??o$,onNavigate:(X)=>{if(typeof window<"u")window.history.pushState(null,"",X)}})},i$=l$;import{useMemo as s$}from"react";var r$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],n$=new Set(["telegram:cloud","telegram:secure"]),IU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of r$){let H=Z+":";if(U.startsWith(H))return{source:Z,key:U.slice(H.length)}}return{source:"dom",key:U}},KZ=(U,Z=!1)=>{let{source:H,key:$}=IU(U);if(H==="sid"){let z=R.readSid();if(!z)throw Error("SocketIO isn't initialized properly");return[z]}if(H==="localStorage"||H==="sessionStorage")try{let z=R.readWebStorage(H==="localStorage"?"local":"session",$);if(z===null){if(Z)console.warn(`No ${H} value found for key ${$}`);return[]}return[z]}catch(z){if(Z)console.warn(`Failed to read ${H} key ${$}:`,z);return[]}if(H==="cookie"){let z=R.readCookie($);if(z===null){if(Z)console.warn(`No cookie found for key ${$}`);return[]}return[z]}if(H==="url"){let z=R.readUrlParams($);if(!z.length&&Z)console.warn(`No URL query param found for key ${$}`);return z}if(n$.has(H)){if(Z)console.warn(`Source ${H} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=R.readDomInput($);if(T===null){if(Z)console.warn(`No input found with name ${$}`);return[]}return T},t$=(U,Z,H)=>{let $=window.Telegram?.WebApp,T=U==="telegram:cloud"?$?.CloudStorage:$?.SecureStorage,z=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if(H)console.warn(`${z} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(Z,(G,I)=>{if(G){if(H)console.warn(`Failed to read ${z} key ${Z}:`,G);J([]);return}if(I==null||I===""){if(H)console.warn(`No ${z} value found for key ${Z}`);J([]);return}J([I])})}catch(G){if(H)console.warn(`Failed to read ${z} key ${Z}:`,G);J([])}})},PZ=async(U,Z=!1)=>{let{source:H,key:$}=IU(U);if(H==="telegram:cloud"||H==="telegram:secure")return t$(H,$,Z);if((H==="localStorage"||H==="sessionStorage")&&R.readWebStorageAsync)try{let T=await R.readWebStorageAsync(H==="localStorage"?"local":"session",$);if(T===null){if(Z)console.warn(`No ${H} value found for key ${$}`);return[]}return[T]}catch(T){if(Z)console.warn(`Failed to read ${H} key ${$}:`,T);return[]}return KZ(U,Z)},a$=(U,Z={},H=[],$,T)=>{let z=T?.renderingLogEnabled??!1,J=T?.timeout,G=T?.retryPolicy,I=G?.maxRetries??0,X=G?.baseDelay??1000,W=G?.retryOn??[502,503,504];if(z)console.log("Registering AJAX: ",$,Z,H);return async(q={})=>{if(!R.isClient()){if(z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(z)console.warn("AJAX skipped: apiServer is missing");return}if(!$||!U){if(z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(H.includes("sid"))await LU();let B=new FormData;for(let[F,A]of Object.entries({...Z,...q}))B.append(F,A);for(let F of H){let{key:A}=IU(F);for(let D of await PZ(F,z))B.append(A,D)}let O=V+"api/ajax_content"+$;U(null);let _;for(let F=0;F<=I;F++){if(F>0){let Y=X*2**(F-1);if(z)console.log(`AJAX retry ${F}/${I} after ${Y}ms`);await new Promise((Q)=>setTimeout(Q,Y))}let A=J!=null?new AbortController:null,D=A&&setTimeout(()=>A.abort(),J);try{let Y=await fetch(O,{method:"POST",body:B,signal:A?.signal});if(D)clearTimeout(D);if(!Y.ok&&W.includes(Y.status)&&F<I){_=Error(`HTTP ${Y.status}`);continue}let w=(Y.headers.get("content-type")||"").includes("application/json");if(!!Y.body?.getReader&&!w){let r=Y.body.getReader(),AZ=new TextDecoder,h="";while(!0){let{done:GU,value:MZ}=await r.read();if(GU)break;h+=AZ.decode(MZ,{stream:!0});let EU=h.split(`
|
|
3
|
+
`);h=EU.pop()??"";for(let RZ of EU){let XU=RZ.trim();if(!XU)continue;try{let LZ=JSON.parse(XU);U([LZ])}catch{if(z)console.warn("Failed to parse streamed line:",XU)}}}if(h.trim())try{let GU=JSON.parse(h);U([GU])}catch{if(z)console.warn("Failed to parse final streamed line:",h)}return{}}else{let r=await Y.json();return U(r),r}}catch(Y){if(D)clearTimeout(D);if(_=Y,F<I)continue;if(z)console.error("AJAX request failed:",Y);return U(null),Y}}if(z)console.error("AJAX request failed after retries:",_);return U(null),_}},e$=(U,Z={},H=[],$,T)=>{let{apiServer:z,enableRenderingLog:J}=d(),G=JSON.stringify(Z),I=JSON.stringify(H),X=JSON.stringify(T);return s$(()=>a$(U,Z,H,$,{apiServer:z,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[U,G,I,$,z,J,X])};import{clsx as Uz}from"clsx";import{twMerge as Zz}from"tailwind-merge";function Hz(...U){return Zz(Uz(U))}var $z=()=>{R.submitGlobalForm()};var zz=(U,Z)=>`${U}${BU}${Z}`;export{mZ as usePieEmit,e$ as useAjaxSubmit,oZ as unregisterComponent,QU as trackLazy,$z as submitGlobalForm,C as registry,K as registerPieComponent,dZ as registerMultipleComponents,PZ as readAjaxKeyAsync,KZ as readAjaxKey,gU as preloadComponent,nZ as prefetchLazyComponents,zz as pieName,IU as parseDepName,lZ as hasComponent,rZ as getRegistrySize,l as getRegistryEntry,hU as getLazyComponentNames,u as getEmitter,iZ as getComponentMeta,sZ as getAllRegisteredComponents,Hz as cn,_H as UnionCard,j as UIRendererContext,DU as UILoading,N as UI,S as SocketIOContext,H$ as SessionStorageCard,QH as SequenceCard,wU as PieRoot,i$ as PiePreviewRoot,g as PieConfigContext,M as PieCard,c$ as PieBaseRoot,BU as PIEBREAK,Q$ as OneOfCard,b as MittContext,eH as IOEventsCard,fH as HiddenCard,wH as HTMLEmbedCard,E as FallbackContext,T$ as DeviceStorageCard,y as CentrifugeIOContext,B$ as BoxCard,mH as AutoRedirectCard,X$ as AjaxGroupCard};
|