@swarm.ing/pieui 3.0.4 → 3.0.5
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/dist/cli.js
CHANGED
|
@@ -199751,8 +199751,8 @@ export default function Page() {
|
|
|
199751
199751
|
const providersImport = hasProviders ? `import PreviewProviders from '@/${registryName}/preview-providers'
|
|
199752
199752
|
` : "";
|
|
199753
199753
|
const previewTree = hasProviders ? `<PreviewProviders>
|
|
199754
|
-
<PiePreviewRoot apiServer={apiServer} pathname="/" />
|
|
199755
|
-
</PreviewProviders>` : `<PiePreviewRoot apiServer={apiServer} pathname="/" />`;
|
|
199754
|
+
<PiePreviewRoot apiServer={apiServer} pathname="/" previewEvents />
|
|
199755
|
+
</PreviewProviders>` : `<PiePreviewRoot apiServer={apiServer} pathname="/" previewEvents />`;
|
|
199756
199756
|
writeIfChanged(import_node_path21.default.join(dir, "app", "preview-client.tsx"), `'use client'
|
|
199757
199757
|
|
|
199758
199758
|
import React from 'react'
|
|
@@ -16,6 +16,14 @@ export interface PiePreviewRootProps {
|
|
|
16
16
|
search?: string;
|
|
17
17
|
/** Optional Centrifuge URL (preview works without real-time). */
|
|
18
18
|
centrifugeServer?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Bridge the show backend's SSE event stream (`{apiServer}api/preview/events`)
|
|
21
|
+
* onto the Mitt bus, so `render_card` siblings like the show-mcp `emit_event`
|
|
22
|
+
* tool can drive a card's realtime method handlers (addMessage, setOptions,
|
|
23
|
+
* clear, …) live — no Centrifuge/Socket.IO server needed. Requires the card
|
|
24
|
+
* rendered with `useMittSupport`. Defaults to off.
|
|
25
|
+
*/
|
|
26
|
+
previewEvents?: boolean;
|
|
19
27
|
/** Node shown while the card config loads or on fetch error. */
|
|
20
28
|
fallback?: ReactNode;
|
|
21
29
|
/** Enable PieUI's verbose `[PieRoot]` console logging. */
|
|
@@ -32,6 +40,6 @@ export interface PiePreviewRootProps {
|
|
|
32
40
|
* registry — so `pie card show` / `pieui card show` can render an arbitrary
|
|
33
41
|
* card without the app's gating screens taking over.
|
|
34
42
|
*/
|
|
35
|
-
declare const PiePreviewRoot: ({ apiServer, pathname, search, centrifugeServer, fallback, enableRenderingLog, }: PiePreviewRootProps) => import("react").JSX.Element;
|
|
43
|
+
declare const PiePreviewRoot: ({ apiServer, pathname, search, centrifugeServer, previewEvents, fallback, enableRenderingLog, }: PiePreviewRootProps) => import("react").JSX.Element;
|
|
36
44
|
export default PiePreviewRoot;
|
|
37
45
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PiePreviewRoot/index.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PiePreviewRoot/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAM1D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAcD;;;;;;;;;;GAUG;AACH,QAAA,MAAM,cAAc,oGAQjB,mBAAmB,gCA+DrB,CAAA;eAEc,cAAc"}
|
package/dist/index.esm.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useContext as IZ,useEffect as
|
|
3
|
-
`);k=mZ.pop()??"";for(let vU of mZ){let DZ=vU.trim();if(!DZ)continue;try{let hU=JSON.parse(DZ);Z([hU])}catch{if(J)console.warn("Failed to parse streamed line:",DZ)}}}if(k.trim())try{let S=JSON.parse(k);Z([S])}catch{if(J)console.warn("Failed to parse final streamed line:",k)}return{}}else{let x=await K.json();return Z(x),x}}catch(K){if(w)clearTimeout(w);if(D=K,O<G)continue;if(J)console.error("AJAX request failed:",K);return Z(null),K}}if(J)console.error("AJAX request failed after retries:",D);return Z(null),D}},G$=(Z,U={},$=[],H,z)=>{let{apiServer:J,enableRenderingLog:T}=g(),X=JSON.stringify(U),G=JSON.stringify($),Y=JSON.stringify(z);return tZ(()=>zU(Z,U,$,H,{apiServer:J,renderingLogEnabled:T,timeout:z?.timeout,retryPolicy:z?.retryPolicy}),[Z,X,G,H,J,T,Y])},JU=(Z={})=>{let U=[];for(let $ of Object.keys(Z??{})){let H=null;if($==="pathname")H="default";else if($.endsWith("Pathname"))H=$.slice(0,-8);if(H===null)continue;let z=H==="default"?"":H;U.push({key:H,pathname:Z[$],depsNames:Z[z?`${z}DepsNames`:"depsNames"]??[],kwargs:Z[z?`${z}Kwargs`:"kwargs"]??{}})}return U},X$=(Z={},U,$)=>{let{apiServer:H,enableRenderingLog:z}=g(),J=JSON.stringify(Z??{}),T=JSON.stringify($);return tZ(()=>{let X={};for(let G of JU(Z??{}))X[G.key]=zU(U,G.kwargs,G.depsNames,G.pathname,{apiServer:H,renderingLogEnabled:z,timeout:$?.timeout,retryPolicy:$?.retryPolicy});return X},[J,U,H,z,T])};import{jsx as B$,jsxs as Q$,Fragment as q$}from"react/jsx-runtime";var Y$=({card:Z,data:U,children:$,useSocketioSupport:H=!1,useCentrifugeSupport:z=!1,useMittSupport:J=!1,centrifugeChannel:T=void 0,methods:X=void 0,stored:G=void 0,onResync:Y=void 0})=>{let _=vZ(),B=MZ(X);B.current=X;let V=MZ(Y);V.current=Y;let q=MZ(G);q.current=G;let W=typeof G==="function";if(XZ(()=>{if(!W)return;let w=U.name;return eZ(w,()=>[JSON.stringify(q.current())]),()=>ZU(w)},[W,U.name]),_)console.log("[PieCard] Rendering card:",Z),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:H,centrifuge:z,mitt:J,centrifugeChannel:T}),console.log("[PieCard] Methods:",X?Object.keys(X):"none"),console.log("[PieCard] Has children:",!!$);let D=IZ(h),O=IZ(v),P=IZ(p);if(XZ(()=>{if(!D||!H||!B.current||!U.name){if(_&&H)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!D,useSocketioSupport:H,hasMethods:!!B.current,hasDataName:!!U?.name});return}let K=Object.keys(B.current??{}).map((Q)=>{let F=`pie${Q}_${U.name}`;if(_)console.log(`[PieCard] Socket.IO registering event: ${F}`);let j=(x)=>{B.current?.[Q]?.(x)};return D.on(F,j),[F,j]});return()=>{K.forEach(([Q,F])=>{if(_)console.log(`[PieCard] Socket.IO unregistering event: ${Q}`);D.off(Q,F)})}},[D,U.name,H]),XZ(()=>{if(!O||!z||!T||!U.name){if(_&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:z,hasCentrifugeChannel:!!T,hasMethods:!!B.current,hasDataName:!!U?.name});return}let K=Object.keys(B.current??{}).map((Q)=>{let F=`pie${Q}_${U.name}_${T}`;if(_)console.log(`[PieCard] Centrifuge subscribing to channel: ${F}`);let{subscription:j,createdHere:x}=lZ(O,F,{recoverable:!0,positioned:!0}),$Z=(S)=>{if(_)console.log(`[PieCard] Centrifuge received data on ${F}:`,S.data);B.current?.[Q]?.(S.data)},k=(S)=>{if(cZ(S))console.warn(`[PieCard] Centrifuge channel ${F} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(dZ(S)){if(_)console.log(`[PieCard] Centrifuge recovery gap on ${F}; requesting resync`);V.current?.({channel:F,reason:"gap"})}};return j.on("publication",$Z),j.on("subscribed",k),j.subscribe(),{subscription:j,createdHere:x,onPublication:$Z,onSubscribed:k}});return()=>{K.forEach(({subscription:Q,createdHere:F,onPublication:j,onSubscribed:x})=>{if(_)console.log("[PieCard] Centrifuge unsubscribing from channel");if(Q.off("publication",j),Q.off("subscribed",x),F)Q.unsubscribe(),O.removeSubscription(Q)})}},[O,T,U.name,z]),XZ(()=>{if(!P||!J||!U.name){if(_&&J)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!P,useMittSupport:J,hasMethods:!!B.current,hasDataName:!!U?.name});return}let w=Object.keys(B.current??{}),K={};return w.forEach((Q)=>{let F=`pie${Q}_${U.name}`,j=(x)=>{if(_)console.log(`[PieCard] Mitt registering event: ${F}`);B.current?.[Q]?.(x)};K[F]=j,P.on(F,j)}),()=>{Object.entries(K).forEach(([Q,F])=>{if(_)console.log(`[PieCard] Mitt unregistering event: ${Q}`);P.off(Q,F)})}},[P,U.name,J]),_)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0&&!W)return Q$(q$,{children:[B$("input",{type:"hidden",name:U.name,value:JSON.stringify(G)}),$]});return $},A=Y$;import{lazy as W$}from"react";var c=new Map;function TU(Z,U){return U.catch(()=>{if(c.get(Z)===U)c.delete(Z)}),c.set(Z,U),U}function PZ(Z,U){return W$(()=>{if(c.has(U))return c.get(U);return TU(U,Z().then(($)=>$))})}var GU=async(Z,U)=>{if(!U)return;if(c.has(Z))return c.get(Z);return TU(Z,U().then(($)=>$))};var f=M("@swarm.ing/pieui:component-registry",()=>new Map),_$=(Z)=>{if(!Z.name)throw Error("Component registration requires a name");if(!Z.component&&!Z.loader)throw Error(`Component "${Z.name}" requires component or loader`);let U={name:Z.name,component:Z.component,loader:Z.loader,metadata:Z.metadata,fallback:Z.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=PZ(U.loader,Z.name),U.isLazy=!0;return U};function I(Z){let U=_$(Z);return f.set(U.name,U),U.component}var V$=(Z)=>{Z.forEach((U)=>I(U))},D$=(Z)=>{f.delete(Z)},K$=(Z)=>{return f.has(Z)},O$=(Z)=>{return f.get(Z)?.metadata},ZZ=(Z)=>{return f.get(Z)},F$=()=>{return Array.from(f.keys())},I$=()=>{return f.size},YU=()=>Array.from(f.values()).filter((Z)=>Z.isLazy&&typeof Z.loader==="function").map((Z)=>Z.name),qU=(Z)=>{let U=f.get(Z);if(!U?.isLazy||typeof U.loader!=="function")return;return GU(Z,U.loader)},XU=!1,M$=()=>{if(XU||typeof window>"u")return;XU=!0;let Z=navigator.connection;if(Z?.saveData)return;if(Z?.effectiveType&&["slow-2g","2g"].includes(Z.effectiveType))return;let U=YU(),$="requestIdleCallback"in window?(z)=>window.requestIdleCallback(z,{timeout:2000}):(z)=>window.setTimeout(z,300),H=(z)=>{if(z>=U.length)return;$(()=>{Promise.resolve().then(()=>qU(U[z])).catch(()=>{}).finally(()=>H(z+1))})};H(0)};import{useContext as BU,memo as f$}from"react";import{createContext as P$}from"react";import{jsx as N$,Fragment as w$}from"react/jsx-runtime";var A$=M("@swarm.ing/pieui:context:fallback",()=>P$(N$(w$,{}))),E=A$;import{createContext as L$}from"react";var R$=M("@swarm.ing/pieui:context:lazyError",()=>L$(void 0)),u=R$;import{Component as j$,Suspense as E$}from"react";import{jsx as x$}from"react/jsx-runtime";var C$=2,y$=400;class s extends j${state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(Z){if(this.props.onError?.(Z),this.state.attempt<C$){let U=y$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},U)}}componentDidUpdate(Z){if(Z.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 x$(E$,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as AZ}from"react/jsx-runtime";function b$({uiConfig:Z,setUiAjaxConfiguration:U}){let $=BU(E),H=BU(u),z=m();if(z)console.log("[UI] Rendering component:",Z.card),console.log("[UI] Component data:",Z.data),console.log("[UI] Component content:",Z.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let J=ZZ(Z.card);if(!J?.component){if(z)console.warn(`[UI] Component not found in registry: ${Z.card}`),console.log("[UI] Returning fallback component");return $}if(z)console.log("[UI] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata});let T=J.component,X=AZ(T,{data:Z.data,content:Z.content,setUiAjaxConfiguration:U});if(J.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",J.name);return AZ(s,{name:J.name,fallback:J.fallback?AZ(J.fallback,{}):$,onError:H,children:X})}if(z)console.log("[UI] Rendering component directly:",J.name);return X}var R=f$(b$);import{useContext as QU}from"react";import{createContext as k$}from"react";var S$=M("@swarm.ing/pieui:context:uiRenderer",()=>k$(null)),C=S$;import{jsx as YZ}from"react/jsx-runtime";function WU({uiConfig:Z,setUiAjaxConfiguration:U}){let $=QU(E),H=QU(u),z=m();if(z)console.log("[UILoading] Rendering fallback for:",Z.card),console.log("[UILoading] Component data:",Z.data),console.log("[UILoading] Component content:",Z.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let J=ZZ(Z.card);if(!J?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${Z.card}`),console.log("[UILoading] Returning fallback component");return $}if(z)console.log("[UILoading] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata,hasFallback:!!J.fallback});if(J.fallback){if(z)console.log("[UILoading] Rendering fallback for:",J.name);let G=J.fallback;return YZ(G,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",J.name);let T=J.component,X=YZ(C.Provider,{value:WU,children:YZ(T,{data:Z.data,content:Z.content,setUiAjaxConfiguration:U})});if(J.isLazy)return YZ(s,{name:J.name,fallback:$,onError:H,children:X});return X}var wZ=WU;import{useContext as m$}from"react";import{jsx as NZ}from"react/jsx-runtime";var v$=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,sx:z}=Z,J=m$(C)??R;return NZ(A,{card:H,data:Z,children:NZ("div",{style:z,id:H,children:U.map((T,X)=>{return NZ(J,{uiConfig:T,setUiAjaxConfiguration:$},`children-${X}`)})})})},_U=v$;var h$=I({name:"SequenceCard",component:_U,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as p$}from"react";import{jsx as VU}from"react/jsx-runtime";var g$=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H}=Z,z=p$(C)??R;return VU(A,{card:H,data:Z,children:U.map((J,T)=>{return VU(z,{uiConfig:J,setUiAjaxConfiguration:$},`children-${T}`)})})},DU=g$;var u$=I({name:"UnionCard",component:DU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as o$,useState as s$}from"react";import i$ from"html-react-parser";import{useCallback as qZ,useEffect as d$,useRef as LZ,useState as c$}from"react";function l$(){let Z=new AudioContext,U=Z.createOscillator(),$=U.connect(Z.createMediaStreamDestination());U.start();let H=$.stream.getAudioTracks()[0];return H.enabled=!1,H}function RZ(Z=null,U){let[$,H]=c$(!1),z=LZ(null),J=LZ(null),T=LZ(null),X=qZ(async(B,V=!0)=>{if(z.current)G();let q=new RTCPeerConnection;if(q.onconnectionstatechange=()=>{if(q.connectionState==="connected")H(!0);else if(["disconnected","failed","closed"].includes(q.connectionState))H(!1)},q.ontrack=(Q)=>{if(Z)Z.srcObject=Q.streams[0]},V){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});q.addTrack(Q.getTracks()[0],Q)}else{let Q=l$();q.addTrack(Q)}let W=q.createDataChannel("oai-events");J.current=W,T.current=new Promise((Q)=>{W.addEventListener("open",()=>{Q()})});let D=await q.createOffer();await q.setLocalDescription(D);let K=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:D.sdp,headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/sdp"}})).text();await q.setRemoteDescription({type:"answer",sdp:K}),z.current=q,await T.current},[Z]),G=qZ(()=>{let B=J.current;if(B)B.close();z.current?.getSenders()?.forEach((V)=>V.track?.stop()),z.current?.close(),H(!1),z.current=null,J.current=null,T.current=null},[Z]),Y=qZ((B)=>{let V=J.current;if(!V){console.error("Data channel is not ready",B);return}let q=new Date().toLocaleTimeString();if(B.event_id=B.event_id||crypto.randomUUID(),V.send(JSON.stringify(B)),!B.timestamp)B.timestamp=q;U?.(B)},[U,Z]),_=qZ((B)=>{if(!J.current){console.error("Data channel is not ready");return}let q=()=>{Y({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:B}]}}),Y({type:"response.create"})};if(T.current)T.current.then(q);else q()},[U,Z]);return d$(()=>{let B=J.current;if(!B)return;let V=(q)=>{let W=JSON.parse(q.data);if(!W.timestamp)W.timestamp=new Date().toLocaleTimeString();U?.(W)};return B.addEventListener("message",V),()=>{B.removeEventListener("message",V)}},[U,Z]),{isSessionActive:$,startSession:X,stopSession:G,sendTextMessage:_}}import{jsx as a$}from"react/jsx-runtime";var r$=({data:Z})=>{let{html:U,useSocketioSupport:$,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:J}=Z,[T,X]=s$(U),{isSessionActive:G,startSession:Y,sendTextMessage:_}=RZ(null,(W)=>{if(console.log(W.type,W.type==="response.output_text.delta"&&W.delta),W.type==="response.output_text.delta"&&W.delta)X((D)=>D+W.delta)});return o$(()=>{X(U)},[U]),a$(A,{card:"HTMLEmbedCard",data:Z,methods:{update:(W)=>{X(W.value)},generateUsingAI:async(W)=>{try{if(!G&&W.token)await Y(W.token,!1);_(W.prompt)}catch(D){console.error("Failed to generate using AI",D)}},initializeAI:async(W)=>{if(!G&&W.token)await Y(W.token,!1)}},useCentrifugeSupport:H,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:J,children:i$(T)})},KU=r$;var n$=I({name:"HTMLEmbedCard",component:KU,metadata:{author:"Swarm.ing"}});import{useEffect as t$,useState as e$}from"react";import{jsx as OU}from"react/jsx-runtime";var ZH=({data:Z})=>{let{name:U,value:$,useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:T}=Z,[X,G]=e$($);return t$(()=>{G($)},[$]),OU(A,{card:"HiddenCard",data:Z,useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:T,methods:{update:({value:Y})=>{G(Y)}},children:OU("input",{type:"hidden",id:U,name:U,value:X})})},FU=ZH;var UH=I({name:"HiddenCard",component:FU,metadata:{author:"Swarm.ing"}});import{useContext as IU,useEffect as zH}from"react";import{createContext as $H}from"react";var HH=M("@swarm.ing/pieui:context:navigate",()=>$H(void 0)),b=HH;import{jsx as GH,Fragment as TH}from"react/jsx-runtime";var JH=({data:Z})=>{let{url:U}=Z,$=IU(b),H=IU(E);return zH(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else $?.(U)},[U,$]),GH(TH,{children:H})},MU=JH;var XH=I({name:"AutoRedirectCard",component:MU,metadata:{author:"Swarm.ing"}});import{Bounce as YH,Slide as qH,Zoom as BH,Flip as QH}from"react-toastify";import{toast as WH,ToastContainer as _H}from"react-toastify";import{useContext as VH,useMemo as DH,useRef as KH}from"react";import{jsx as jZ,Fragment as AH}from"react/jsx-runtime";var OH={bounce:YH,slide:qH,zoom:BH,flip:QH},FH=(Z)=>{let U={...Z,type:Z.alertType,transition:Z.transition?OH[Z.transition]:void 0,position:Z.position??"bottom-right",autoClose:Z.autoClose??3000,style:{backgroundColor:"black",...Z.sx}};WH(Z.message,U)},IH=(Z)=>{console.log("Log event",Z)},MH=(Z)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(Z.title,{body:Z.message??Z.subtitle,icon:Z.icon,silent:Z.silent})}catch(H){console.error("[IOEventsCard] Failed to show notification",H)}},$=window.Notification.permission;if($==="granted"){U();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((H)=>{if(H==="granted")U()})},PH=({data:Z})=>{let{useCentrifugeSupport:U,useSocketioSupport:$,useMittSupport:H,centrifugeChannel:z}=Z,J=VH(b),T=KH(J);T.current=J;let X=DH(()=>({alert:FH,log:IH,push:MH,redirect:(G)=>{if(G.to){let Y=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else T.current?.(Y)}else window.location.reload()},reload:(G)=>{if(G.to){let Y=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else T.current?.(Y)}else window.location.reload()}}),[]);return jZ(AH,{children:jZ(A,{card:"IOEventsCard",data:Z,useCentrifugeSupport:U,useSocketioSupport:$,useMittSupport:H,centrifugeChannel:z,methods:X,children:jZ(_H,{})})})},PU=PH;var wH=I({name:"IOEventsCard",component:PU,metadata:{author:"Swarm.ing"}});import{useEffect as AU,useState as NH}from"react";import{jsx as wU}from"react/jsx-runtime";var LH=({data:Z})=>{let{name:U,key:$,value:H,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:X}=Z,[G,Y]=NH(H);return AU(()=>{Y(H)},[H]),AU(()=>{if(typeof window>"u")return;sessionStorage.setItem($,G)},[$,G]),wU(A,{card:"SessionStorageCard",data:Z,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:X,methods:{update:({value:_})=>{Y(_)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:wU("input",{type:"hidden",id:U,name:U,value:G})})},NU=LH;var RH=I({name:"SessionStorageCard",component:NU,metadata:{author:"PieData"}});import{useEffect as LU,useState as jH}from"react";import{jsx as RU}from"react/jsx-runtime";var EH=({data:Z})=>{let{name:U,key:$,value:H,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:X}=Z,[G,Y]=jH(H);return LU(()=>{Y(H)},[H]),LU(()=>{if(typeof window>"u")return;localStorage.setItem($,G)},[$,G]),RU(A,{card:"DeviceStorageCard",data:Z,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:X,methods:{update:({value:_})=>{Y(_)},remove:()=>{localStorage.removeItem($),Y("")}},children:RU("input",{type:"hidden",id:U,name:U,value:G})})},jU=EH;var CH=I({name:"DeviceStorageCard",component:jU,metadata:{author:"PieData"}});import{useCallback as EZ,useContext as CZ,useEffect as yH,useRef as xH,useState as EU}from"react";import{jsx as CU}from"react/jsx-runtime";var fH=({data:Z,content:U})=>{let{useLoader:$,noReturn:H,returnType:z,useSocketioSupport:J,useCentrifugeSupport:T,useMittSupport:X,centrifugeChannel:G}=Z,Y=CZ(E),_=CZ(C)??R,[B,V]=EU(!1),[q,W]=EU(null),D=xH(U),O=CZ(p),P=EZ((Q)=>{if(Q===null)V(!0);else if(V(!1),!H)D.current=Q;if(!H)W(Q)},[H]),w=EZ((Q)=>{D.current=Q.content,W(Q.content)},[]),K=EZ((Q)=>{if(Q===null)V(!0);else if(V(!1),!H)for(let F of Q)O?.emit(F.name,F.data)},[H,O]);if(yH(()=>{W(U),V(!1)},[U]),!q&&$)return Y;return CU(A,{card:"AjaxGroupCard",data:Z,methods:{changeContent:w},useSocketioSupport:J,useCentrifugeSupport:T,useMittSupport:X,centrifugeChannel:G,children:CU(_,{uiConfig:q??D.current,setUiAjaxConfiguration:z==="events"?K:P})})},yU=fH;var bH=I({name:"AjaxGroupCard",component:yU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as xU}from"react";import{jsx as yZ}from"react/jsx-runtime";var kH=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,url:z,sx:J}=Z,T=xU(b),X=xU(C)??R;return yZ(A,{card:H,data:Z,children:yZ("div",{style:J,id:H,onClick:(Y)=>{if(z)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else T?.(z)},children:yZ(X,{setUiAjaxConfiguration:$,uiConfig:U})})})},fU=kH;var SH=I({name:"BoxCard",component:fU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as mH}from"react";import{jsx as xZ}from"react/jsx-runtime";var vH=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,sx:z}=Z,J=mH(C)??R;return xZ(A,{card:H,data:Z,children:xZ("div",{style:z,id:H,children:U.map((T,X)=>{return xZ(J,{uiConfig:T,setUiAjaxConfiguration:$},`children-${X}`)})})})},bU=vH;var hH=I({name:"OneOfCard",component:bU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as UZ}from"react";import{QueryClient as rH,QueryClientProvider as aH,useQuery as nH}from"@tanstack/react-query";import{useContext as uH,useEffect as dH,useRef as fZ}from"react";import{useEffect as pH,useState as gH}from"react";var BZ=new Map,QZ=new Map;function WZ(Z,U){let $=`${Z}::${U}`,H=Z?BZ.get($):void 0,[z,J]=gH(H??null);return pH(()=>{if(!Z)return;if(BZ.has($)){J(BZ.get($));return}let T=QZ.get($);if(!T)T=fetch(Z+`api/support/${U}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return BZ.set($,G),QZ.delete($),G}).catch((G)=>{throw QZ.delete($),G}),QZ.set($,T);let X=!1;return T.then((G)=>{if(!X)J(G)}).catch(()=>{}),()=>{X=!0}},[Z,U,$]),z}function i(Z,U){if(U==="up")return{state:"up",signal:Z==="down"?"restored":null};return{state:"down",signal:Z==="up"?"lost":null}}var cH=({children:Z})=>{let U=uH(h),$=HZ(),H=WZ($,"socketIO"),z=a(),J=n(),T=fZ(z);T.current=z;let X=fZ(J);X.current=J;let G=fZ("initial"),Y=(_)=>{if(N.isClient())N.setSid(_.sid),nZ(),console.log(`SocketIO initialized: ${N.readSid()}`)};return dH(()=>{if(!U||!H)return;let _=()=>{let{state:V,signal:q}=i(G.current,"up");if(G.current=V,q==="restored")X.current?.("socketio");console.log("SocketIO connected")},B=(V)=>{if(console.log(`SocketIO disconnected: ${V}`),U.connect(),V==="io client disconnect")return;let{state:q,signal:W}=i(G.current,"down");if(G.current=q,W==="lost")T.current?.("socketio",V)};return U.on("pieinit",Y),U.on("connect",_),U.on("disconnect",B),U.connect(),()=>{U.off("pieinit",Y),U.off("connect",_),U.off("disconnect",B),U.disconnect()}},[U,H]),Z},_Z=cH;import{useContext as lH,useEffect as oH,useRef as bZ}from"react";var sH=({children:Z})=>{let U=lH(v),$=HZ(),H=WZ($,"centrifuge"),z=a(),J=n(),T=bZ(z);T.current=z;let X=bZ(J);X.current=J;let G=bZ("initial");return oH(()=>{if(!U||!H)return;let Y=(V)=>{let{state:q,signal:W}=i(G.current,"down");if(G.current=q,W==="lost")T.current?.("centrifuge",V)},_=()=>{let{state:V,signal:q}=i(G.current,"up");if(G.current=V,q==="restored")X.current?.("centrifuge");console.log("Centrifuge connected")},B=(V)=>{console.log("Centrifuge disconnected:",V),Y(V)};return U.on("connecting",Y),U.on("connected",_),U.on("disconnected",B),U.connect(),()=>{U.off("connecting",Y),U.off("connected",_),U.off("disconnected",B),U.disconnect()}},[U,H]),Z},VZ=sH;import{createAxiosDateTransformer as tH}from"axios-date-transformer";import{jsx as iH}from"react/jsx-runtime";function kU(Z,U,$){if(!U)return $;let H=Z.replace(/^\//,""),z=U[H];if(!z)return $;return iH(wZ,{uiConfig:z})}import{jsx as L,Fragment as Uz}from"react/jsx-runtime";var eH=({location:Z,fallback:U,piecache:$,onError:H,queryOptions:z,disableGlobalForm:J})=>{let T=r(),X=zZ(),G=m(),Y=UZ(()=>tH({baseURL:T||""}),[T]),_=UZ(()=>o(),[]),B=UZ(()=>T?TZ(T):null,[T]),V=UZ(()=>T?JZ(T,X):null,[T,X]),{data:q,isLoading:W,error:D}=nH({queryKey:["uiConfig",Z.pathname+Z.search,T],enabled:!!T,queryFn:async()=>{let P=new URLSearchParams(Z.search);P.set("__pieroot","web");let w="/api/content"+Z.pathname+"?"+P.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",w);let K=await Y.get(w,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",K.data);return K.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(P)=>Math.min(1000*2**P,30000),...z}),O=kU(Z.pathname,$,U);if(!T)return O??null;if(G)console.log("[PieRoot] Rendering with location:",Z),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",X),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!$);if(D){if(G)console.error("[PieRoot] Error fetching UI configuration:",D),console.error("[PieRoot] Error details:",{message:D.message,status:D.response?.status,data:D.response?.data});return H?.(D),O}if(W||!q){if(G)console.log("[PieRoot] Loading state:",{isLoading:W,hasUiConfiguration:!!q});return O}if(G)console.log("[PieRoot] UI configuration loaded successfully:",q),console.log("[PieRoot] Rendering UI with configuration");return L(p.Provider,{value:_,children:L(h.Provider,{value:B,children:L(v.Provider,{value:V,children:L(E.Provider,{value:U??L(Uz,{}),children:L(_Z,{children:L(VZ,{children:J?L(R,{uiConfig:q}):L("form",{id:"piedata_global_form",action:T+"api/process"+Z.pathname,method:"post",encType:"multipart/form-data",children:L(R,{uiConfig:q})})})})})})})})},Zz=(Z)=>{let U=UZ(()=>new rH,[]),$=Z.queryClient??U;return L(b.Provider,{value:Z.onNavigate,children:L(l.Provider,{value:Z.config,children:L(u.Provider,{value:Z.onError,children:L(aH,{client:$,children:L(eH,{...Z})})})})})},kZ=Zz;import{useMemo as SZ,useState as $z}from"react";import{QueryClient as Hz,QueryClientProvider as zz}from"@tanstack/react-query";import{jsx as y,Fragment as Gz}from"react/jsx-runtime";var Jz=({location:Z,fallback:U,children:$,disableGlobalForm:H})=>{let z=r(),J=zZ(),T=m(),X=SZ(()=>o(),[]),G=SZ(()=>z?TZ(z):null,[z]),Y=SZ(()=>z?JZ(z,J):null,[z,J]);if(T)console.log("[PieRoot] Rendering with location:",Z),console.log("[PieRoot] API_SERVER:",z),console.log("[PieRoot] CENTRIFUGE_SERVER:",J),console.log("[PieRoot] Fallback provided:",!!U);return y(p.Provider,{value:X,children:y(h.Provider,{value:G,children:y(v.Provider,{value:Y,children:y(E.Provider,{value:U??y(Gz,{}),children:y(_Z,{children:y(VZ,{children:H?$:y("form",{id:"piedata_global_form",action:z+"api/process"+Z.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},Tz=(Z)=>{let[U]=$z(()=>new Hz),$=Z.queryClient??U;return y(b.Provider,{value:Z.onNavigate,children:y(l.Provider,{value:Z.config,children:y(u.Provider,{value:Z.onError,children:y(zz,{client:$,children:y(Jz,{...Z})})})})})},Xz=Tz;import{useMemo as Yz}from"react";import{jsx as SU}from"react/jsx-runtime";var qz=SU("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),Bz=({apiServer:Z,pathname:U="/",search:$="",centrifugeServer:H,fallback:z,enableRenderingLog:J=!1})=>{let T=Z??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",X=Yz(()=>({apiServer:T,centrifugeServer:H,enableRenderingLog:J,pageProcessor:"web"}),[T,H,J]);return SU(kZ,{location:{pathname:U,search:$},config:X,fallback:z??qz,onNavigate:(Y)=>{if(typeof window<"u")window.history.pushState(null,"",Y)}})},Qz=Bz;import{clsx as Wz}from"clsx";import{twMerge as _z}from"tailwind-merge";function Vz(...Z){return _z(Wz(Z))}var Dz=()=>{UU(),N.submitGlobalForm()};var Kz=(Z,U)=>`${Z}${OZ}${U}`;export{nU as usePieEmit,n as useOnLinkRestored,a as useOnLinkLost,X$ as useAjaxSubmits,G$ as useAjaxSubmit,D$ as unregisterComponent,PZ as trackLazy,Dz as submitGlobalForm,f as registry,I as registerPieComponent,V$ as registerMultipleComponents,HU as readAjaxKeyAsync,$U as readAjaxKey,qU as preloadComponent,M$ as prefetchLazyComponents,Kz as pieName,GZ as parseDepName,K$ as hasComponent,I$ as getRegistrySize,ZZ as getRegistryEntry,YU as getLazyComponentNames,o as getEmitter,O$ as getComponentMeta,F$ as getAllRegisteredComponents,JU as discoverAjaxEndpoints,Vz as cn,u$ as UnionCard,C as UIRendererContext,wZ as UILoading,R as UI,h as SocketIOContext,RH as SessionStorageCard,h$ as SequenceCard,kZ as PieRoot,Qz as PiePreviewRoot,l as PieConfigContext,A as PieCard,Xz as PieBaseRoot,OZ as PIEBREAK,hH as OneOfCard,p as MittContext,wH as IOEventsCard,UH as HiddenCard,n$ as HTMLEmbedCard,E as FallbackContext,CH as DeviceStorageCard,v as CentrifugeIOContext,SH as BoxCard,XH as AutoRedirectCard,bH as AjaxGroupCard};
|
|
2
|
+
import{useContext as IZ,useEffect as GZ,useRef as MZ}from"react";import{createContext as gU,useContext as pU}from"react";var KZ=globalThis,M=(Z,U)=>{let $=Symbol.for(Z);if(!($ in KZ))KZ[$]=U();return KZ[$]};var o=M("@swarm.ing/pieui:context:pieConfig",()=>gU(null)),p=()=>{let Z=pU(o);if(!Z)throw Error("usePieConfig must be used within PieConfigProvider");return Z},r=()=>{let{apiServer:Z}=p();return Z},HZ=r,zZ=()=>{let{centrifugeServer:Z}=p();return Z};var m=()=>{let{enableRenderingLog:Z}=p();return Z},vZ=m;var a=()=>{let{onLinkLost:Z}=p();return Z},n=()=>{let{onLinkRestored:Z}=p();return Z},OZ="__piedemo__";import{createContext as dU}from"react";import{Centrifuge as hZ}from"centrifuge";var gZ=M("@swarm.ing/pieui:centrifuge-cache",()=>new Map),JZ=(Z,U)=>{if(!U)return null;let $=`${Z}::${U}`,H=gZ.get($);if(H)return H;async function z(){let T=await fetch(Z+"api/centrifuge/gen_token",{credentials:"include"});if(!T.ok){if(T.status===401||T.status===403)throw new hZ.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${T.status}`)}return(await T.json()).token}let J=new hZ(U,{getToken:z});return gZ.set($,J),J},uU=M("@swarm.ing/pieui:context:centrifuge",()=>dU(null)),v=uU;import{io as cU}from"socket.io-client";import{createContext as lU}from"react";var pZ=M("@swarm.ing/pieui:socket-cache",()=>new Map),TZ=(Z)=>{let U=pZ.get(Z);if(U)return U;let $=cU(Z,{autoConnect:!1,transports:["websocket"]});return pZ.set(Z,$),$},oU=M("@swarm.ing/pieui:context:socket",()=>lU(null)),h=oU;import iU from"mitt";import{createContext as sU,useCallback as rU,useContext as aU}from"react";function d(){return M("@swarm.ing/pieui:mitt-emitter",()=>iU())}var dZ=M("@swarm.ing/pieui:context:mitt",()=>sU(null));function nU(Z){let U=aU(dZ);return rU(($,H)=>{(U??d()).emit(`pie${$}_${Z}`,H)},[Z,U])}var g=dZ;function uZ(Z){return Z.wasRecovering===!0&&Z.recovered===!1}function cZ(Z){return Z.recoverable===!1}function lZ(Z,U,$){let H=Z.getSubscription(U);if(H)return{subscription:H,createdHere:!1};return{subscription:Z.newSubscription(U,$),createdHere:!0}}var tU=(Z)=>{let U=document.cookie?document.cookie.split(";"):[];for(let $ of U){let H=$.indexOf("=");if((H===-1?$:$.slice(0,H)).trim()===Z){let J=H===-1?"":$.slice(H+1).trim();try{return decodeURIComponent(J)}catch{return J}}}return null},eU={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(Z){if(typeof window<"u")window.sid=Z},readWebStorage(Z,U){return(Z==="local"?window.localStorage:window.sessionStorage).getItem(U)},readCookie:tU,readUrlParams(Z){return new URLSearchParams(window.location.search).getAll(Z)},readDomInput(Z){let U=document.getElementsByName(Z);if(!U.length)return null;let $=U[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let Z=document.getElementById("piedata_global_form");Z&&Z.submit()}},oZ=eU;var Z$={};function c(){return Z$}var iZ=new Map;var sZ=(Z)=>{return iZ.has(Z)?iZ.get(Z):null};var rZ,U$={isClient(){return!0},readSid(){return rZ},setSid(Z){rZ=Z},readWebStorage(Z,U){let $=c(),H=Z==="local"?$.storage:$.sessionStorage;return H?H.getItem(U):null},async readWebStorageAsync(Z,U){let $=c(),H=Z==="local"?$.asyncStorage:$.asyncSessionStorage;if(H)return H.getItem(U);let z=Z==="local"?$.storage:$.sessionStorage;return z?z.getItem(U):null},readCookie(Z){let U=c();return U.getCookie?U.getCookie(Z):null},readUrlParams(Z){let U=c();return U.getRouteParams?U.getRouteParams(Z):[]},readDomInput(Z){let U=c();return U.getInput?U.getInput(Z):sZ(Z)},submitGlobalForm(){c().submitForm?.()}},aZ=U$;var $$=typeof navigator<"u"&&navigator.product==="ReactNative",H$=$$?aZ:oZ,N=H$;var t=M("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function nZ(){t.resolve?.()}function FZ(){if(!N.isClient())return Promise.resolve();if(N.readSid()!==void 0)return Promise.resolve();if(!t.promise)t.promise=new Promise((Z)=>{t.resolve=()=>{Z()}});return t.promise}import{useMemo as tZ}from"react";var z$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],J$=new Set(["telegram:cloud","telegram:secure"]),e=new Map,eZ=(Z,U)=>{e.set(Z,U)},ZU=(Z)=>{e.delete(Z)},UU=(Z="piedata_global_form")=>{let U;if(typeof Z==="string"){if(typeof document>"u")return;U=document.getElementById(Z)}else U=Z;if(!U)return;let $=U.ownerDocument;for(let H of Array.from(U.getElementsByTagName("input")))if(H.getAttribute("data-pie-stored")!==null)H.remove();for(let[H,z]of e){let J=z();if(J instanceof Promise)continue;for(let T of J){if(typeof T!=="string")continue;let G=$.createElement("input");G.type="hidden",G.name=H,G.value=T,G.setAttribute("data-pie-stored","1"),U.appendChild(G)}}},XZ=(Z)=>{if(Z==="sid")return{source:"sid",key:"sid"};for(let U of z$){let $=U+":";if(Z.startsWith($))return{source:U,key:Z.slice($.length)}}return{source:"dom",key:Z}},$U=(Z,U=!1)=>{let{source:$,key:H}=XZ(Z);if($==="sid"){let T=N.readSid();if(!T)throw Error("SocketIO isn't initialized properly");return[T]}if($==="localStorage"||$==="sessionStorage")try{let T=N.readWebStorage($==="localStorage"?"local":"session",H);if(T===null){if(U)console.warn(`No ${$} value found for key ${H}`);return[]}return[T]}catch(T){if(U)console.warn(`Failed to read ${$} key ${H}:`,T);return[]}if($==="cookie"){let T=N.readCookie(H);if(T===null){if(U)console.warn(`No cookie found for key ${H}`);return[]}return[T]}if($==="url"){let T=N.readUrlParams(H);if(!T.length&&U)console.warn(`No URL query param found for key ${H}`);return T}if(J$.has($)){if(U)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let z=e.get(H);if(z){let T=z();if(T instanceof Promise){if(U)console.warn(`stored resolver for ${H} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}return T}let J=N.readDomInput(H);if(J===null){if(U)console.warn(`No input found with name ${H}`);return[]}return J},T$=(Z,U,$)=>{let H=window.Telegram?.WebApp,z=Z==="telegram:cloud"?H?.CloudStorage:H?.SecureStorage,J=Z==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!z){if($)console.warn(`${J} is not available`);return Promise.resolve([])}return new Promise((T)=>{try{z.getItem(U,(G,X)=>{if(G){if($)console.warn(`Failed to read ${J} key ${U}:`,G);T([]);return}if(X==null||X===""){if($)console.warn(`No ${J} value found for key ${U}`);T([]);return}T([X])})}catch(G){if($)console.warn(`Failed to read ${J} key ${U}:`,G);T([])}})},HU=async(Z,U=!1)=>{let{source:$,key:H}=XZ(Z);if($==="telegram:cloud"||$==="telegram:secure")return T$($,H,U);if(($==="localStorage"||$==="sessionStorage")&&N.readWebStorageAsync)try{let z=await N.readWebStorageAsync($==="localStorage"?"local":"session",H);if(z===null){if(U)console.warn(`No ${$} value found for key ${H}`);return[]}return[z]}catch(z){if(U)console.warn(`Failed to read ${$} key ${H}:`,z);return[]}if($==="dom"){let z=e.get(H);if(z)return z()}return $U(Z,U)},zU=(Z,U={},$=[],H,z)=>{let J=z?.renderingLogEnabled??!1,T=z?.timeout,G=z?.retryPolicy,X=G?.maxRetries??0,Y=G?.baseDelay??1000,Q=G?.retryOn??[502,503,504];if(J)console.log("Registering AJAX: ",H,U,$);return async(q={})=>{if(!N.isClient()){if(J)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=z?.apiServer;if(!V){if(J)console.warn("AJAX skipped: apiServer is missing");return}if(!H||!Z){if(J)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await FZ();let B=new FormData;for(let[O,P]of Object.entries({...U,...q}))B.append(O,P);for(let O of $){let{key:P}=XZ(O);for(let w of await HU(O,J))B.append(P,w)}let W=V+"api/ajax_content"+H;Z(null);let D;for(let O=0;O<=X;O++){if(O>0){let K=Y*2**(O-1);if(J)console.log(`AJAX retry ${O}/${X} after ${K}ms`);await new Promise((_)=>setTimeout(_,K))}let P=T!=null?new AbortController:null,w=P&&setTimeout(()=>P.abort(),T);try{let K=await fetch(W,{method:"POST",body:B,signal:P?.signal});if(w)clearTimeout(w);if(!K.ok&&Q.includes(K.status)&&O<X){D=Error(`HTTP ${K.status}`);continue}let F=(K.headers.get("content-type")||"").includes("application/json");if(!!K.body?.getReader&&!F){let x=K.body.getReader(),$Z=new TextDecoder,k="";while(!0){let{done:S,value:mU}=await x.read();if(S)break;k+=$Z.decode(mU,{stream:!0});let mZ=k.split(`
|
|
3
|
+
`);k=mZ.pop()??"";for(let vU of mZ){let DZ=vU.trim();if(!DZ)continue;try{let hU=JSON.parse(DZ);Z([hU])}catch{if(J)console.warn("Failed to parse streamed line:",DZ)}}}if(k.trim())try{let S=JSON.parse(k);Z([S])}catch{if(J)console.warn("Failed to parse final streamed line:",k)}return{}}else{let x=await K.json();return Z(x),x}}catch(K){if(w)clearTimeout(w);if(D=K,O<X)continue;if(J)console.error("AJAX request failed:",K);return Z(null),K}}if(J)console.error("AJAX request failed after retries:",D);return Z(null),D}},X$=(Z,U={},$=[],H,z)=>{let{apiServer:J,enableRenderingLog:T}=p(),G=JSON.stringify(U),X=JSON.stringify($),Y=JSON.stringify(z);return tZ(()=>zU(Z,U,$,H,{apiServer:J,renderingLogEnabled:T,timeout:z?.timeout,retryPolicy:z?.retryPolicy}),[Z,G,X,H,J,T,Y])},JU=(Z={})=>{let U=[];for(let $ of Object.keys(Z??{})){let H=null;if($==="pathname")H="default";else if($.endsWith("Pathname"))H=$.slice(0,-8);if(H===null)continue;let z=H==="default"?"":H;U.push({key:H,pathname:Z[$],depsNames:Z[z?`${z}DepsNames`:"depsNames"]??[],kwargs:Z[z?`${z}Kwargs`:"kwargs"]??{}})}return U},G$=(Z={},U,$)=>{let{apiServer:H,enableRenderingLog:z}=p(),J=JSON.stringify(Z??{}),T=JSON.stringify($);return tZ(()=>{let G={};for(let X of JU(Z??{}))G[X.key]=zU(U,X.kwargs,X.depsNames,X.pathname,{apiServer:H,renderingLogEnabled:z,timeout:$?.timeout,retryPolicy:$?.retryPolicy});return G},[J,U,H,z,T])};import{jsx as B$,jsxs as W$,Fragment as q$}from"react/jsx-runtime";var Y$=({card:Z,data:U,children:$,useSocketioSupport:H=!1,useCentrifugeSupport:z=!1,useMittSupport:J=!1,centrifugeChannel:T=void 0,methods:G=void 0,stored:X=void 0,onResync:Y=void 0})=>{let Q=vZ(),q=MZ(G);q.current=G;let V=MZ(Y);V.current=Y;let B=MZ(X);B.current=X;let W=typeof X==="function";if(GZ(()=>{if(!W)return;let w=U.name;return eZ(w,()=>[JSON.stringify(B.current())]),()=>ZU(w)},[W,U.name]),Q)console.log("[PieCard] Rendering card:",Z),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:H,centrifuge:z,mitt:J,centrifugeChannel:T}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!$);let D=IZ(h),O=IZ(v),P=IZ(g);if(GZ(()=>{if(!D||!H||!q.current||!U.name){if(Q&&H)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!D,useSocketioSupport:H,hasMethods:!!q.current,hasDataName:!!U?.name});return}let K=Object.keys(q.current??{}).map((_)=>{let F=`pie${_}_${U.name}`;if(Q)console.log(`[PieCard] Socket.IO registering event: ${F}`);let j=(x)=>{q.current?.[_]?.(x)};return D.on(F,j),[F,j]});return()=>{K.forEach(([_,F])=>{if(Q)console.log(`[PieCard] Socket.IO unregistering event: ${_}`);D.off(_,F)})}},[D,U.name,H]),GZ(()=>{if(!O||!z||!T||!U.name){if(Q&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:z,hasCentrifugeChannel:!!T,hasMethods:!!q.current,hasDataName:!!U?.name});return}let K=Object.keys(q.current??{}).map((_)=>{let F=`pie${_}_${U.name}_${T}`;if(Q)console.log(`[PieCard] Centrifuge subscribing to channel: ${F}`);let{subscription:j,createdHere:x}=lZ(O,F,{recoverable:!0,positioned:!0}),$Z=(S)=>{if(Q)console.log(`[PieCard] Centrifuge received data on ${F}:`,S.data);q.current?.[_]?.(S.data)},k=(S)=>{if(cZ(S))console.warn(`[PieCard] Centrifuge channel ${F} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(uZ(S)){if(Q)console.log(`[PieCard] Centrifuge recovery gap on ${F}; requesting resync`);V.current?.({channel:F,reason:"gap"})}};return j.on("publication",$Z),j.on("subscribed",k),j.subscribe(),{subscription:j,createdHere:x,onPublication:$Z,onSubscribed:k}});return()=>{K.forEach(({subscription:_,createdHere:F,onPublication:j,onSubscribed:x})=>{if(Q)console.log("[PieCard] Centrifuge unsubscribing from channel");if(_.off("publication",j),_.off("subscribed",x),F)_.unsubscribe(),O.removeSubscription(_)})}},[O,T,U.name,z]),GZ(()=>{if(!P||!J||!U.name){if(Q&&J)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!P,useMittSupport:J,hasMethods:!!q.current,hasDataName:!!U?.name});return}let w=Object.keys(q.current??{}),K={};return w.forEach((_)=>{let F=`pie${_}_${U.name}`,j=(x)=>{if(Q)console.log(`[PieCard] Mitt registering event: ${F}`);q.current?.[_]?.(x)};K[F]=j,P.on(F,j)}),()=>{Object.entries(K).forEach(([_,F])=>{if(Q)console.log(`[PieCard] Mitt unregistering event: ${_}`);P.off(_,F)})}},[P,U.name,J]),Q)console.log("[PieCard] Rendering complete, returning children");if(X!==void 0&&!W)return W$(q$,{children:[B$("input",{type:"hidden",name:U.name,value:JSON.stringify(X)}),$]});return $},A=Y$;import{lazy as Q$}from"react";var l=new Map;function TU(Z,U){return U.catch(()=>{if(l.get(Z)===U)l.delete(Z)}),l.set(Z,U),U}function PZ(Z,U){return Q$(()=>{if(l.has(U))return l.get(U);return TU(U,Z().then(($)=>$))})}var XU=async(Z,U)=>{if(!U)return;if(l.has(Z))return l.get(Z);return TU(Z,U().then(($)=>$))};var f=M("@swarm.ing/pieui:component-registry",()=>new Map),_$=(Z)=>{if(!Z.name)throw Error("Component registration requires a name");if(!Z.component&&!Z.loader)throw Error(`Component "${Z.name}" requires component or loader`);let U={name:Z.name,component:Z.component,loader:Z.loader,metadata:Z.metadata,fallback:Z.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=PZ(U.loader,Z.name),U.isLazy=!0;return U};function I(Z){let U=_$(Z);return f.set(U.name,U),U.component}var V$=(Z)=>{Z.forEach((U)=>I(U))},D$=(Z)=>{f.delete(Z)},K$=(Z)=>{return f.has(Z)},O$=(Z)=>{return f.get(Z)?.metadata},ZZ=(Z)=>{return f.get(Z)},F$=()=>{return Array.from(f.keys())},I$=()=>{return f.size},YU=()=>Array.from(f.values()).filter((Z)=>Z.isLazy&&typeof Z.loader==="function").map((Z)=>Z.name),qU=(Z)=>{let U=f.get(Z);if(!U?.isLazy||typeof U.loader!=="function")return;return XU(Z,U.loader)},GU=!1,M$=()=>{if(GU||typeof window>"u")return;GU=!0;let Z=navigator.connection;if(Z?.saveData)return;if(Z?.effectiveType&&["slow-2g","2g"].includes(Z.effectiveType))return;let U=YU(),$="requestIdleCallback"in window?(z)=>window.requestIdleCallback(z,{timeout:2000}):(z)=>window.setTimeout(z,300),H=(z)=>{if(z>=U.length)return;$(()=>{Promise.resolve().then(()=>qU(U[z])).catch(()=>{}).finally(()=>H(z+1))})};H(0)};import{useContext as BU,memo as f$}from"react";import{createContext as P$}from"react";import{jsx as N$,Fragment as w$}from"react/jsx-runtime";var A$=M("@swarm.ing/pieui:context:fallback",()=>P$(N$(w$,{}))),E=A$;import{createContext as L$}from"react";var R$=M("@swarm.ing/pieui:context:lazyError",()=>L$(void 0)),u=R$;import{Component as j$,Suspense as E$}from"react";import{jsx as x$}from"react/jsx-runtime";var C$=2,y$=400;class i extends j${state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(Z){if(this.props.onError?.(Z),this.state.attempt<C$){let U=y$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},U)}}componentDidUpdate(Z){if(Z.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 x$(E$,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as AZ}from"react/jsx-runtime";function b$({uiConfig:Z,setUiAjaxConfiguration:U}){let $=BU(E),H=BU(u),z=m();if(z)console.log("[UI] Rendering component:",Z.card),console.log("[UI] Component data:",Z.data),console.log("[UI] Component content:",Z.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let J=ZZ(Z.card);if(!J?.component){if(z)console.warn(`[UI] Component not found in registry: ${Z.card}`),console.log("[UI] Returning fallback component");return $}if(z)console.log("[UI] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata});let T=J.component,G=AZ(T,{data:Z.data,content:Z.content,setUiAjaxConfiguration:U});if(J.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",J.name);return AZ(i,{name:J.name,fallback:J.fallback?AZ(J.fallback,{}):$,onError:H,children:G})}if(z)console.log("[UI] Rendering component directly:",J.name);return G}var R=f$(b$);import{useContext as WU}from"react";import{createContext as k$}from"react";var S$=M("@swarm.ing/pieui:context:uiRenderer",()=>k$(null)),C=S$;import{jsx as YZ}from"react/jsx-runtime";function QU({uiConfig:Z,setUiAjaxConfiguration:U}){let $=WU(E),H=WU(u),z=m();if(z)console.log("[UILoading] Rendering fallback for:",Z.card),console.log("[UILoading] Component data:",Z.data),console.log("[UILoading] Component content:",Z.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let J=ZZ(Z.card);if(!J?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${Z.card}`),console.log("[UILoading] Returning fallback component");return $}if(z)console.log("[UILoading] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata,hasFallback:!!J.fallback});if(J.fallback){if(z)console.log("[UILoading] Rendering fallback for:",J.name);let X=J.fallback;return YZ(X,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",J.name);let T=J.component,G=YZ(C.Provider,{value:QU,children:YZ(T,{data:Z.data,content:Z.content,setUiAjaxConfiguration:U})});if(J.isLazy)return YZ(i,{name:J.name,fallback:$,onError:H,children:G});return G}var wZ=QU;import{useContext as m$}from"react";import{jsx as NZ}from"react/jsx-runtime";var v$=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,sx:z}=Z,J=m$(C)??R;return NZ(A,{card:H,data:Z,children:NZ("div",{style:z,id:H,children:U.map((T,G)=>{return NZ(J,{uiConfig:T,setUiAjaxConfiguration:$},`children-${G}`)})})})},_U=v$;var h$=I({name:"SequenceCard",component:_U,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as g$}from"react";import{jsx as VU}from"react/jsx-runtime";var p$=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H}=Z,z=g$(C)??R;return VU(A,{card:H,data:Z,children:U.map((J,T)=>{return VU(z,{uiConfig:J,setUiAjaxConfiguration:$},`children-${T}`)})})},DU=p$;var d$=I({name:"UnionCard",component:DU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as o$,useState as i$}from"react";import s$ from"html-react-parser";import{useCallback as qZ,useEffect as u$,useRef as LZ,useState as c$}from"react";function l$(){let Z=new AudioContext,U=Z.createOscillator(),$=U.connect(Z.createMediaStreamDestination());U.start();let H=$.stream.getAudioTracks()[0];return H.enabled=!1,H}function RZ(Z=null,U){let[$,H]=c$(!1),z=LZ(null),J=LZ(null),T=LZ(null),G=qZ(async(q,V=!0)=>{if(z.current)X();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")H(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))H(!1)},B.ontrack=(_)=>{if(Z)Z.srcObject=_.streams[0]},V){let _=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(_.getTracks()[0],_)}else{let _=l$();B.addTrack(_)}let W=B.createDataChannel("oai-events");J.current=W,T.current=new Promise((_)=>{W.addEventListener("open",()=>{_()})});let D=await B.createOffer();await B.setLocalDescription(D);let K=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:D.sdp,headers:{Authorization:`Bearer ${q}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:K}),z.current=B,await T.current},[Z]),X=qZ(()=>{let q=J.current;if(q)q.close();z.current?.getSenders()?.forEach((V)=>V.track?.stop()),z.current?.close(),H(!1),z.current=null,J.current=null,T.current=null},[Z]),Y=qZ((q)=>{let V=J.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;U?.(q)},[U,Z]),Q=qZ((q)=>{if(!J.current){console.error("Data channel is not ready");return}let B=()=>{Y({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:q}]}}),Y({type:"response.create"})};if(T.current)T.current.then(B);else B()},[U,Z]);return u$(()=>{let q=J.current;if(!q)return;let V=(B)=>{let W=JSON.parse(B.data);if(!W.timestamp)W.timestamp=new Date().toLocaleTimeString();U?.(W)};return q.addEventListener("message",V),()=>{q.removeEventListener("message",V)}},[U,Z]),{isSessionActive:$,startSession:G,stopSession:X,sendTextMessage:Q}}import{jsx as a$}from"react/jsx-runtime";var r$=({data:Z})=>{let{html:U,useSocketioSupport:$,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:J}=Z,[T,G]=i$(U),{isSessionActive:X,startSession:Y,sendTextMessage:Q}=RZ(null,(W)=>{if(console.log(W.type,W.type==="response.output_text.delta"&&W.delta),W.type==="response.output_text.delta"&&W.delta)G((D)=>D+W.delta)});return o$(()=>{G(U)},[U]),a$(A,{card:"HTMLEmbedCard",data:Z,methods:{update:(W)=>{G(W.value)},generateUsingAI:async(W)=>{try{if(!X&&W.token)await Y(W.token,!1);Q(W.prompt)}catch(D){console.error("Failed to generate using AI",D)}},initializeAI:async(W)=>{if(!X&&W.token)await Y(W.token,!1)}},useCentrifugeSupport:H,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:J,children:s$(T)})},KU=r$;var n$=I({name:"HTMLEmbedCard",component:KU,metadata:{author:"Swarm.ing"}});import{useEffect as t$,useState as e$}from"react";import{jsx as OU}from"react/jsx-runtime";var ZH=({data:Z})=>{let{name:U,value:$,useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:T}=Z,[G,X]=e$($);return t$(()=>{X($)},[$]),OU(A,{card:"HiddenCard",data:Z,useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:T,methods:{update:({value:Y})=>{X(Y)}},children:OU("input",{type:"hidden",id:U,name:U,value:G})})},FU=ZH;var UH=I({name:"HiddenCard",component:FU,metadata:{author:"Swarm.ing"}});import{useContext as IU,useEffect as zH}from"react";import{createContext as $H}from"react";var HH=M("@swarm.ing/pieui:context:navigate",()=>$H(void 0)),b=HH;import{jsx as XH,Fragment as TH}from"react/jsx-runtime";var JH=({data:Z})=>{let{url:U}=Z,$=IU(b),H=IU(E);return zH(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else $?.(U)},[U,$]),XH(TH,{children:H})},MU=JH;var GH=I({name:"AutoRedirectCard",component:MU,metadata:{author:"Swarm.ing"}});import{Bounce as YH,Slide as qH,Zoom as BH,Flip as WH}from"react-toastify";import{toast as QH,ToastContainer as _H}from"react-toastify";import{useContext as VH,useMemo as DH,useRef as KH}from"react";import{jsx as jZ,Fragment as AH}from"react/jsx-runtime";var OH={bounce:YH,slide:qH,zoom:BH,flip:WH},FH=(Z)=>{let U={...Z,type:Z.alertType,transition:Z.transition?OH[Z.transition]:void 0,position:Z.position??"bottom-right",autoClose:Z.autoClose??3000,style:{backgroundColor:"black",...Z.sx}};QH(Z.message,U)},IH=(Z)=>{console.log("Log event",Z)},MH=(Z)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(Z.title,{body:Z.message??Z.subtitle,icon:Z.icon,silent:Z.silent})}catch(H){console.error("[IOEventsCard] Failed to show notification",H)}},$=window.Notification.permission;if($==="granted"){U();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((H)=>{if(H==="granted")U()})},PH=({data:Z})=>{let{useCentrifugeSupport:U,useSocketioSupport:$,useMittSupport:H,centrifugeChannel:z}=Z,J=VH(b),T=KH(J);T.current=J;let G=DH(()=>({alert:FH,log:IH,push:MH,redirect:(X)=>{if(X.to){let Y=X.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else T.current?.(Y)}else window.location.reload()},reload:(X)=>{if(X.to){let Y=X.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else T.current?.(Y)}else window.location.reload()}}),[]);return jZ(AH,{children:jZ(A,{card:"IOEventsCard",data:Z,useCentrifugeSupport:U,useSocketioSupport:$,useMittSupport:H,centrifugeChannel:z,methods:G,children:jZ(_H,{})})})},PU=PH;var wH=I({name:"IOEventsCard",component:PU,metadata:{author:"Swarm.ing"}});import{useEffect as AU,useState as NH}from"react";import{jsx as wU}from"react/jsx-runtime";var LH=({data:Z})=>{let{name:U,key:$,value:H,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:G}=Z,[X,Y]=NH(H);return AU(()=>{Y(H)},[H]),AU(()=>{if(typeof window>"u")return;sessionStorage.setItem($,X)},[$,X]),wU(A,{card:"SessionStorageCard",data:Z,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:G,methods:{update:({value:Q})=>{Y(Q)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:wU("input",{type:"hidden",id:U,name:U,value:X})})},NU=LH;var RH=I({name:"SessionStorageCard",component:NU,metadata:{author:"PieData"}});import{useEffect as LU,useState as jH}from"react";import{jsx as RU}from"react/jsx-runtime";var EH=({data:Z})=>{let{name:U,key:$,value:H,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:G}=Z,[X,Y]=jH(H);return LU(()=>{Y(H)},[H]),LU(()=>{if(typeof window>"u")return;localStorage.setItem($,X)},[$,X]),RU(A,{card:"DeviceStorageCard",data:Z,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:G,methods:{update:({value:Q})=>{Y(Q)},remove:()=>{localStorage.removeItem($),Y("")}},children:RU("input",{type:"hidden",id:U,name:U,value:X})})},jU=EH;var CH=I({name:"DeviceStorageCard",component:jU,metadata:{author:"PieData"}});import{useCallback as EZ,useContext as CZ,useEffect as yH,useRef as xH,useState as EU}from"react";import{jsx as CU}from"react/jsx-runtime";var fH=({data:Z,content:U})=>{let{useLoader:$,noReturn:H,returnType:z,useSocketioSupport:J,useCentrifugeSupport:T,useMittSupport:G,centrifugeChannel:X}=Z,Y=CZ(E),Q=CZ(C)??R,[q,V]=EU(!1),[B,W]=EU(null),D=xH(U),O=CZ(g),P=EZ((_)=>{if(_===null)V(!0);else if(V(!1),!H)D.current=_;if(!H)W(_)},[H]),w=EZ((_)=>{D.current=_.content,W(_.content)},[]),K=EZ((_)=>{if(_===null)V(!0);else if(V(!1),!H)for(let F of _)O?.emit(F.name,F.data)},[H,O]);if(yH(()=>{W(U),V(!1)},[U]),!B&&$)return Y;return CU(A,{card:"AjaxGroupCard",data:Z,methods:{changeContent:w},useSocketioSupport:J,useCentrifugeSupport:T,useMittSupport:G,centrifugeChannel:X,children:CU(Q,{uiConfig:B??D.current,setUiAjaxConfiguration:z==="events"?K:P})})},yU=fH;var bH=I({name:"AjaxGroupCard",component:yU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as xU}from"react";import{jsx as yZ}from"react/jsx-runtime";var kH=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,url:z,sx:J}=Z,T=xU(b),G=xU(C)??R;return yZ(A,{card:H,data:Z,children:yZ("div",{style:J,id:H,onClick:(Y)=>{if(z)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else T?.(z)},children:yZ(G,{setUiAjaxConfiguration:$,uiConfig:U})})})},fU=kH;var SH=I({name:"BoxCard",component:fU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as mH}from"react";import{jsx as xZ}from"react/jsx-runtime";var vH=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,sx:z}=Z,J=mH(C)??R;return xZ(A,{card:H,data:Z,children:xZ("div",{style:z,id:H,children:U.map((T,G)=>{return xZ(J,{uiConfig:T,setUiAjaxConfiguration:$},`children-${G}`)})})})},bU=vH;var hH=I({name:"OneOfCard",component:bU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as UZ}from"react";import{QueryClient as rH,QueryClientProvider as aH,useQuery as nH}from"@tanstack/react-query";import{useContext as dH,useEffect as uH,useRef as fZ}from"react";import{useEffect as gH,useState as pH}from"react";var BZ=new Map,WZ=new Map;function QZ(Z,U){let $=`${Z}::${U}`,H=Z?BZ.get($):void 0,[z,J]=pH(H??null);return gH(()=>{if(!Z)return;if(BZ.has($)){J(BZ.get($));return}let T=WZ.get($);if(!T)T=fetch(Z+`api/support/${U}`,{method:"GET"}).then((X)=>X.json()).then((X)=>{return BZ.set($,X),WZ.delete($),X}).catch((X)=>{throw WZ.delete($),X}),WZ.set($,T);let G=!1;return T.then((X)=>{if(!G)J(X)}).catch(()=>{}),()=>{G=!0}},[Z,U,$]),z}function s(Z,U){if(U==="up")return{state:"up",signal:Z==="down"?"restored":null};return{state:"down",signal:Z==="up"?"lost":null}}var cH=({children:Z})=>{let U=dH(h),$=HZ(),H=QZ($,"socketIO"),z=a(),J=n(),T=fZ(z);T.current=z;let G=fZ(J);G.current=J;let X=fZ("initial"),Y=(Q)=>{if(N.isClient())N.setSid(Q.sid),nZ(),console.log(`SocketIO initialized: ${N.readSid()}`)};return uH(()=>{if(!U||!H)return;let Q=()=>{let{state:V,signal:B}=s(X.current,"up");if(X.current=V,B==="restored")G.current?.("socketio");console.log("SocketIO connected")},q=(V)=>{if(console.log(`SocketIO disconnected: ${V}`),U.connect(),V==="io client disconnect")return;let{state:B,signal:W}=s(X.current,"down");if(X.current=B,W==="lost")T.current?.("socketio",V)};return U.on("pieinit",Y),U.on("connect",Q),U.on("disconnect",q),U.connect(),()=>{U.off("pieinit",Y),U.off("connect",Q),U.off("disconnect",q),U.disconnect()}},[U,H]),Z},_Z=cH;import{useContext as lH,useEffect as oH,useRef as bZ}from"react";var iH=({children:Z})=>{let U=lH(v),$=HZ(),H=QZ($,"centrifuge"),z=a(),J=n(),T=bZ(z);T.current=z;let G=bZ(J);G.current=J;let X=bZ("initial");return oH(()=>{if(!U||!H)return;let Y=(V)=>{let{state:B,signal:W}=s(X.current,"down");if(X.current=B,W==="lost")T.current?.("centrifuge",V)},Q=()=>{let{state:V,signal:B}=s(X.current,"up");if(X.current=V,B==="restored")G.current?.("centrifuge");console.log("Centrifuge connected")},q=(V)=>{console.log("Centrifuge disconnected:",V),Y(V)};return U.on("connecting",Y),U.on("connected",Q),U.on("disconnected",q),U.connect(),()=>{U.off("connecting",Y),U.off("connected",Q),U.off("disconnected",q),U.disconnect()}},[U,H]),Z},VZ=iH;import{createAxiosDateTransformer as tH}from"axios-date-transformer";import{jsx as sH}from"react/jsx-runtime";function kU(Z,U,$){if(!U)return $;let H=Z.replace(/^\//,""),z=U[H];if(!z)return $;return sH(wZ,{uiConfig:z})}import{jsx as L,Fragment as Uz}from"react/jsx-runtime";var eH=({location:Z,fallback:U,piecache:$,onError:H,queryOptions:z,disableGlobalForm:J})=>{let T=r(),G=zZ(),X=m(),Y=UZ(()=>tH({baseURL:T||""}),[T]),Q=UZ(()=>d(),[]),q=UZ(()=>T?TZ(T):null,[T]),V=UZ(()=>T?JZ(T,G):null,[T,G]),{data:B,isLoading:W,error:D}=nH({queryKey:["uiConfig",Z.pathname+Z.search,T],enabled:!!T,queryFn:async()=>{let P=new URLSearchParams(Z.search);P.set("__pieroot","web");let w="/api/content"+Z.pathname+"?"+P.toString();if(X)console.log("[PieRoot] Fetching UI configuration from:",w);let K=await Y.get(w,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(X)console.log("[PieRoot] Received UI configuration:",K.data);return K.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(P)=>Math.min(1000*2**P,30000),...z}),O=kU(Z.pathname,$,U);if(!T)return O??null;if(X)console.log("[PieRoot] Rendering with location:",Z),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!$);if(D){if(X)console.error("[PieRoot] Error fetching UI configuration:",D),console.error("[PieRoot] Error details:",{message:D.message,status:D.response?.status,data:D.response?.data});return H?.(D),O}if(W||!B){if(X)console.log("[PieRoot] Loading state:",{isLoading:W,hasUiConfiguration:!!B});return O}if(X)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L(g.Provider,{value:Q,children:L(h.Provider,{value:q,children:L(v.Provider,{value:V,children:L(E.Provider,{value:U??L(Uz,{}),children:L(_Z,{children:L(VZ,{children:J?L(R,{uiConfig:B}):L("form",{id:"piedata_global_form",action:T+"api/process"+Z.pathname,method:"post",encType:"multipart/form-data",children:L(R,{uiConfig:B})})})})})})})})},Zz=(Z)=>{let U=UZ(()=>new rH,[]),$=Z.queryClient??U;return L(b.Provider,{value:Z.onNavigate,children:L(o.Provider,{value:Z.config,children:L(u.Provider,{value:Z.onError,children:L(aH,{client:$,children:L(eH,{...Z})})})})})},kZ=Zz;import{useMemo as SZ,useState as $z}from"react";import{QueryClient as Hz,QueryClientProvider as zz}from"@tanstack/react-query";import{jsx as y,Fragment as Xz}from"react/jsx-runtime";var Jz=({location:Z,fallback:U,children:$,disableGlobalForm:H})=>{let z=r(),J=zZ(),T=m(),G=SZ(()=>d(),[]),X=SZ(()=>z?TZ(z):null,[z]),Y=SZ(()=>z?JZ(z,J):null,[z,J]);if(T)console.log("[PieRoot] Rendering with location:",Z),console.log("[PieRoot] API_SERVER:",z),console.log("[PieRoot] CENTRIFUGE_SERVER:",J),console.log("[PieRoot] Fallback provided:",!!U);return y(g.Provider,{value:G,children:y(h.Provider,{value:X,children:y(v.Provider,{value:Y,children:y(E.Provider,{value:U??y(Xz,{}),children:y(_Z,{children:y(VZ,{children:H?$:y("form",{id:"piedata_global_form",action:z+"api/process"+Z.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},Tz=(Z)=>{let[U]=$z(()=>new Hz),$=Z.queryClient??U;return y(b.Provider,{value:Z.onNavigate,children:y(o.Provider,{value:Z.config,children:y(u.Provider,{value:Z.onError,children:y(zz,{client:$,children:y(Jz,{...Z})})})})})},Gz=Tz;import{useEffect as Yz,useMemo as qz}from"react";import{jsx as SU}from"react/jsx-runtime";var Bz=SU("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),Wz=({apiServer:Z,pathname:U="/",search:$="",centrifugeServer:H,previewEvents:z=!1,fallback:J,enableRenderingLog:T=!1})=>{let G=Z??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"";Yz(()=>{if(!z||!G||typeof window>"u"||typeof EventSource>"u")return;let Q=G.endsWith("/")?G:`${G}/`,q=new EventSource(`${Q}api/preview/events`),V=d();return q.onmessage=(B)=>{try{let W=JSON.parse(B.data);if(W&&typeof W.name==="string")V.emit(W.name,W.payload)}catch{}},()=>q.close()},[z,G]);let X=qz(()=>({apiServer:G,centrifugeServer:H,enableRenderingLog:T,pageProcessor:"web"}),[G,H,T]);return SU(kZ,{location:{pathname:U,search:$},config:X,fallback:J??Bz,onNavigate:(Q)=>{if(typeof window<"u")window.history.pushState(null,"",Q)}})},Qz=Wz;import{clsx as _z}from"clsx";import{twMerge as Vz}from"tailwind-merge";function Dz(...Z){return Vz(_z(Z))}var Kz=()=>{UU(),N.submitGlobalForm()};var Oz=(Z,U)=>`${Z}${OZ}${U}`;export{nU as usePieEmit,n as useOnLinkRestored,a as useOnLinkLost,G$ as useAjaxSubmits,X$ as useAjaxSubmit,D$ as unregisterComponent,PZ as trackLazy,Kz as submitGlobalForm,f as registry,I as registerPieComponent,V$ as registerMultipleComponents,HU as readAjaxKeyAsync,$U as readAjaxKey,qU as preloadComponent,M$ as prefetchLazyComponents,Oz as pieName,XZ as parseDepName,K$ as hasComponent,I$ as getRegistrySize,ZZ as getRegistryEntry,YU as getLazyComponentNames,d as getEmitter,O$ as getComponentMeta,F$ as getAllRegisteredComponents,JU as discoverAjaxEndpoints,Dz as cn,d$ as UnionCard,C as UIRendererContext,wZ as UILoading,R as UI,h as SocketIOContext,RH as SessionStorageCard,h$ as SequenceCard,kZ as PieRoot,Qz as PiePreviewRoot,o as PieConfigContext,A as PieCard,Gz as PieBaseRoot,OZ as PIEBREAK,hH as OneOfCard,g as MittContext,wH as IOEventsCard,UH as HiddenCard,n$ as HTMLEmbedCard,E as FallbackContext,CH as DeviceStorageCard,v as CentrifugeIOContext,SH as BoxCard,GH as AutoRedirectCard,bH as AjaxGroupCard};
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var o$=Object.create;var{getPrototypeOf:s$,defineProperty:BZ,getOwnPropertyNames:VU,getOwnPropertyDescriptor:i$}=Object,DU=Object.prototype.hasOwnProperty;var KU=(Z,U,$)=>{$=Z!=null?o$(s$(Z)):{};let H=U||!Z||!Z.__esModule?BZ($,"default",{value:Z,enumerable:!0}):$;for(let z of VU(Z))if(!DU.call(H,z))BZ(H,z,{get:()=>Z[z],enumerable:!0});return H},_U=new WeakMap,r$=(Z)=>{var U=_U.get(Z),$;if(U)return U;if(U=BZ({},"__esModule",{value:!0}),Z&&typeof Z==="object"||typeof Z==="function")VU(Z).map((H)=>!DU.call(U,H)&&BZ(U,H,{get:()=>Z[H],enumerable:!($=i$(Z,H))||$.enumerable}));return _U.set(Z,U),U};var a$=(Z,U)=>{for(var $ in U)BZ(Z,$,{get:U[$],enumerable:!0,configurable:!0,set:(H)=>U[$]=()=>H})};var gH={};a$(gH,{usePieEmit:()=>LU,useOnLinkRestored:()=>ZZ,useOnLinkLost:()=>e,useAjaxSubmits:()=>gU,useAjaxSubmit:()=>pU,unregisterComponent:()=>sU,trackLazy:()=>jZ,submitGlobalForm:()=>g$,registry:()=>S,registerPieComponent:()=>I,registerMultipleComponents:()=>oU,readAjaxKeyAsync:()=>ZU,readAjaxKey:()=>eZ,preloadComponent:()=>HU,prefetchLazyComponents:()=>tU,pieName:()=>u$,parseDepName:()=>VZ,hasComponent:()=>iU,getRegistrySize:()=>nU,getRegistryEntry:()=>HZ,getLazyComponentNames:()=>$U,getEmitter:()=>a,getComponentMeta:()=>rU,getAllRegisteredComponents:()=>aU,discoverAjaxEndpoints:()=>UU,cn:()=>p$,UnionCard:()=>Y$,UIRendererContext:()=>y,UILoading:()=>xZ,UI:()=>j,SocketIOContext:()=>v,SessionStorageCard:()=>P$,SequenceCard:()=>T$,PieRoot:()=>oZ,PiePreviewRoot:()=>m$,PieConfigContext:()=>r,PieCard:()=>P,PieBaseRoot:()=>k$,PIEBREAK:()=>NZ,OneOfCard:()=>y$,MittContext:()=>h,IOEventsCard:()=>I$,HiddenCard:()=>V$,HTMLEmbedCard:()=>W$,FallbackContext:()=>C,DeviceStorageCard:()=>w$,CentrifugeIOContext:()=>m,BoxCard:()=>j$,AutoRedirectCard:()=>O$,AjaxGroupCard:()=>L$});module.exports=r$(gH);var f=require("react");var PZ=require("react");var rZ=globalThis,M=(Z,U)=>{let $=Symbol.for(Z);if(!($ in rZ))rZ[$]=U();return rZ[$]};var r=M("@swarm.ing/pieui:context:pieConfig",()=>PZ.createContext(null)),c=()=>{let Z=PZ.useContext(r);if(!Z)throw Error("usePieConfig must be used within PieConfigProvider");return Z},QZ=()=>{let{apiServer:Z}=c();return Z},AZ=QZ,wZ=()=>{let{centrifugeServer:Z}=c();return Z};var d=()=>{let{enableRenderingLog:Z}=c();return Z},OU=d;var e=()=>{let{onLinkLost:Z}=c();return Z},ZZ=()=>{let{onLinkRestored:Z}=c();return Z},NZ="__piedemo__";var IU=require("react"),aZ=require("centrifuge");var FU=M("@swarm.ing/pieui:centrifuge-cache",()=>new Map),LZ=(Z,U)=>{if(!U)return null;let $=`${Z}::${U}`,H=FU.get($);if(H)return H;async function z(){let T=await fetch(Z+"api/centrifuge/gen_token",{credentials:"include"});if(!T.ok){if(T.status===401||T.status===403)throw new aZ.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${T.status}`)}return(await T.json()).token}let J=new aZ.Centrifuge(U,{getToken:z});return FU.set($,J),J},n$=M("@swarm.ing/pieui:context:centrifuge",()=>IU.createContext(null)),m=n$;var PU=require("socket.io-client"),AU=require("react");var MU=M("@swarm.ing/pieui:socket-cache",()=>new Map),RZ=(Z)=>{let U=MU.get(Z);if(U)return U;let $=PU.io(Z,{autoConnect:!1,transports:["websocket"]});return MU.set(Z,$),$},t$=M("@swarm.ing/pieui:context:socket",()=>AU.createContext(null)),v=t$;var wU=KU(require("mitt")),UZ=require("react");function a(){return M("@swarm.ing/pieui:mitt-emitter",()=>wU.default())}var NU=M("@swarm.ing/pieui:context:mitt",()=>UZ.createContext(null));function LU(Z){let U=UZ.useContext(NU);return UZ.useCallback(($,H)=>{(U??a()).emit(`pie${$}_${Z}`,H)},[Z,U])}var h=NU;function RU(Z){return Z.wasRecovering===!0&&Z.recovered===!1}function jU(Z){return Z.recoverable===!1}function EU(Z,U,$){let H=Z.getSubscription(U);if(H)return{subscription:H,createdHere:!1};return{subscription:Z.newSubscription(U,$),createdHere:!0}}var e$=(Z)=>{let U=document.cookie?document.cookie.split(";"):[];for(let $ of U){let H=$.indexOf("=");if((H===-1?$:$.slice(0,H)).trim()===Z){let J=H===-1?"":$.slice(H+1).trim();try{return decodeURIComponent(J)}catch{return J}}}return null},ZH={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(Z){if(typeof window<"u")window.sid=Z},readWebStorage(Z,U){return(Z==="local"?window.localStorage:window.sessionStorage).getItem(U)},readCookie:e$,readUrlParams(Z){return new URLSearchParams(window.location.search).getAll(Z)},readDomInput(Z){let U=document.getElementsByName(Z);if(!U.length)return null;let $=U[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let Z=document.getElementById("piedata_global_form");Z&&Z.submit()}},CU=ZH;var UH={};function n(){return UH}var yU=new Map;var xU=(Z)=>{return yU.has(Z)?yU.get(Z):null};var fU,$H={isClient(){return!0},readSid(){return fU},setSid(Z){fU=Z},readWebStorage(Z,U){let $=n(),H=Z==="local"?$.storage:$.sessionStorage;return H?H.getItem(U):null},async readWebStorageAsync(Z,U){let $=n(),H=Z==="local"?$.asyncStorage:$.asyncSessionStorage;if(H)return H.getItem(U);let z=Z==="local"?$.storage:$.sessionStorage;return z?z.getItem(U):null},readCookie(Z){let U=n();return U.getCookie?U.getCookie(Z):null},readUrlParams(Z){let U=n();return U.getRouteParams?U.getRouteParams(Z):[]},readDomInput(Z){let U=n();return U.getInput?U.getInput(Z):xU(Z)},submitGlobalForm(){n().submitForm?.()}},bU=$H;var HH=typeof navigator<"u"&&navigator.product==="ReactNative",zH=HH?bU:CU,N=zH;var WZ=M("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function kU(){WZ.resolve?.()}function nZ(){if(!N.isClient())return Promise.resolve();if(N.readSid()!==void 0)return Promise.resolve();if(!WZ.promise)WZ.promise=new Promise((Z)=>{WZ.resolve=()=>{Z()}});return WZ.promise}var tZ=require("react");var JH=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],TH=new Set(["telegram:cloud","telegram:secure"]),_Z=new Map,SU=(Z,U)=>{_Z.set(Z,U)},mU=(Z)=>{_Z.delete(Z)},vU=(Z="piedata_global_form")=>{let U;if(typeof Z==="string"){if(typeof document>"u")return;U=document.getElementById(Z)}else U=Z;if(!U)return;let $=U.ownerDocument;for(let H of Array.from(U.getElementsByTagName("input")))if(H.getAttribute("data-pie-stored")!==null)H.remove();for(let[H,z]of _Z){let J=z();if(J instanceof Promise)continue;for(let T of J){if(typeof T!=="string")continue;let X=$.createElement("input");X.type="hidden",X.name=H,X.value=T,X.setAttribute("data-pie-stored","1"),U.appendChild(X)}}},VZ=(Z)=>{if(Z==="sid")return{source:"sid",key:"sid"};for(let U of JH){let $=U+":";if(Z.startsWith($))return{source:U,key:Z.slice($.length)}}return{source:"dom",key:Z}},eZ=(Z,U=!1)=>{let{source:$,key:H}=VZ(Z);if($==="sid"){let T=N.readSid();if(!T)throw Error("SocketIO isn't initialized properly");return[T]}if($==="localStorage"||$==="sessionStorage")try{let T=N.readWebStorage($==="localStorage"?"local":"session",H);if(T===null){if(U)console.warn(`No ${$} value found for key ${H}`);return[]}return[T]}catch(T){if(U)console.warn(`Failed to read ${$} key ${H}:`,T);return[]}if($==="cookie"){let T=N.readCookie(H);if(T===null){if(U)console.warn(`No cookie found for key ${H}`);return[]}return[T]}if($==="url"){let T=N.readUrlParams(H);if(!T.length&&U)console.warn(`No URL query param found for key ${H}`);return T}if(TH.has($)){if(U)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let z=_Z.get(H);if(z){let T=z();if(T instanceof Promise){if(U)console.warn(`stored resolver for ${H} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}return T}let J=N.readDomInput(H);if(J===null){if(U)console.warn(`No input found with name ${H}`);return[]}return J},GH=(Z,U,$)=>{let H=window.Telegram?.WebApp,z=Z==="telegram:cloud"?H?.CloudStorage:H?.SecureStorage,J=Z==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!z){if($)console.warn(`${J} is not available`);return Promise.resolve([])}return new Promise((T)=>{try{z.getItem(U,(X,G)=>{if(X){if($)console.warn(`Failed to read ${J} key ${U}:`,X);T([]);return}if(G==null||G===""){if($)console.warn(`No ${J} value found for key ${U}`);T([]);return}T([G])})}catch(X){if($)console.warn(`Failed to read ${J} key ${U}:`,X);T([])}})},ZU=async(Z,U=!1)=>{let{source:$,key:H}=VZ(Z);if($==="telegram:cloud"||$==="telegram:secure")return GH($,H,U);if(($==="localStorage"||$==="sessionStorage")&&N.readWebStorageAsync)try{let z=await N.readWebStorageAsync($==="localStorage"?"local":"session",H);if(z===null){if(U)console.warn(`No ${$} value found for key ${H}`);return[]}return[z]}catch(z){if(U)console.warn(`Failed to read ${$} key ${H}:`,z);return[]}if($==="dom"){let z=_Z.get(H);if(z)return z()}return eZ(Z,U)},hU=(Z,U={},$=[],H,z)=>{let J=z?.renderingLogEnabled??!1,T=z?.timeout,X=z?.retryPolicy,G=X?.maxRetries??0,Y=X?.baseDelay??1000,_=X?.retryOn??[502,503,504];if(J)console.log("Registering AJAX: ",H,U,$);return async(B={})=>{if(!N.isClient()){if(J)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=z?.apiServer;if(!V){if(J)console.warn("AJAX skipped: apiServer is missing");return}if(!H||!Z){if(J)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await nZ();let q=new FormData;for(let[O,A]of Object.entries({...U,...B}))q.append(O,A);for(let O of $){let{key:A}=VZ(O);for(let w of await ZU(O,J))q.append(A,w)}let W=V+"api/ajax_content"+H;Z(null);let D;for(let O=0;O<=G;O++){if(O>0){let K=Y*2**(O-1);if(J)console.log(`AJAX retry ${O}/${G} after ${K}ms`);await new Promise((Q)=>setTimeout(Q,K))}let A=T!=null?new AbortController:null,w=A&&setTimeout(()=>A.abort(),T);try{let K=await fetch(W,{method:"POST",body:q,signal:A?.signal});if(w)clearTimeout(w);if(!K.ok&&_.includes(K.status)&&O<G){D=Error(`HTTP ${K.status}`);continue}let F=(K.headers.get("content-type")||"").includes("application/json");if(!!K.body?.getReader&&!F){let k=K.body.getReader(),MZ=new TextDecoder,g="";while(!0){let{done:u,value:d$}=await k.read();if(u)break;g+=MZ.decode(d$,{stream:!0});let WU=g.split(`
|
|
3
|
-
`);g=WU.pop()??"";for(let c$ of WU){let iZ=c$.trim();if(!iZ)continue;try{let l$=JSON.parse(iZ);Z([l$])}catch{if(J)console.warn("Failed to parse streamed line:",iZ)}}}if(g.trim())try{let u=JSON.parse(g);Z([u])}catch{if(J)console.warn("Failed to parse final streamed line:",g)}return{}}else{let k=await K.json();return Z(k),k}}catch(K){if(w)clearTimeout(w);if(D=K,O<G)continue;if(J)console.error("AJAX request failed:",K);return Z(null),K}}if(J)console.error("AJAX request failed after retries:",D);return Z(null),D}},pU=(Z,U={},$=[],H,z)=>{let{apiServer:J,enableRenderingLog:T}=c(),X=JSON.stringify(U),G=JSON.stringify($),Y=JSON.stringify(z);return tZ.useMemo(()=>hU(Z,U,$,H,{apiServer:J,renderingLogEnabled:T,timeout:z?.timeout,retryPolicy:z?.retryPolicy}),[Z,X,G,H,J,T,Y])},UU=(Z={})=>{let U=[];for(let $ of Object.keys(Z??{})){let H=null;if($==="pathname")H="default";else if($.endsWith("Pathname"))H=$.slice(0,-8);if(H===null)continue;let z=H==="default"?"":H;U.push({key:H,pathname:Z[$],depsNames:Z[z?`${z}DepsNames`:"depsNames"]??[],kwargs:Z[z?`${z}Kwargs`:"kwargs"]??{}})}return U},gU=(Z={},U,$)=>{let{apiServer:H,enableRenderingLog:z}=c(),J=JSON.stringify(Z??{}),T=JSON.stringify($);return tZ.useMemo(()=>{let X={};for(let G of UU(Z??{}))X[G.key]=hU(U,G.kwargs,G.depsNames,G.pathname,{apiServer:H,renderingLogEnabled:z,timeout:$?.timeout,retryPolicy:$?.retryPolicy});return X},[J,U,H,z,T])};var $Z=require("react/jsx-runtime"),XH=({card:Z,data:U,children:$,useSocketioSupport:H=!1,useCentrifugeSupport:z=!1,useMittSupport:J=!1,centrifugeChannel:T=void 0,methods:X=void 0,stored:G=void 0,onResync:Y=void 0})=>{let _=OU(),B=f.useRef(X);B.current=X;let V=f.useRef(Y);V.current=Y;let q=f.useRef(G);q.current=G;let W=typeof G==="function";if(f.useEffect(()=>{if(!W)return;let w=U.name;return SU(w,()=>[JSON.stringify(q.current())]),()=>mU(w)},[W,U.name]),_)console.log("[PieCard] Rendering card:",Z),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:H,centrifuge:z,mitt:J,centrifugeChannel:T}),console.log("[PieCard] Methods:",X?Object.keys(X):"none"),console.log("[PieCard] Has children:",!!$);let D=f.useContext(v),O=f.useContext(m),A=f.useContext(h);if(f.useEffect(()=>{if(!D||!H||!B.current||!U.name){if(_&&H)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!D,useSocketioSupport:H,hasMethods:!!B.current,hasDataName:!!U?.name});return}let K=Object.keys(B.current??{}).map((Q)=>{let F=`pie${Q}_${U.name}`;if(_)console.log(`[PieCard] Socket.IO registering event: ${F}`);let x=(k)=>{B.current?.[Q]?.(k)};return D.on(F,x),[F,x]});return()=>{K.forEach(([Q,F])=>{if(_)console.log(`[PieCard] Socket.IO unregistering event: ${Q}`);D.off(Q,F)})}},[D,U.name,H]),f.useEffect(()=>{if(!O||!z||!T||!U.name){if(_&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:z,hasCentrifugeChannel:!!T,hasMethods:!!B.current,hasDataName:!!U?.name});return}let K=Object.keys(B.current??{}).map((Q)=>{let F=`pie${Q}_${U.name}_${T}`;if(_)console.log(`[PieCard] Centrifuge subscribing to channel: ${F}`);let{subscription:x,createdHere:k}=EU(O,F,{recoverable:!0,positioned:!0}),MZ=(u)=>{if(_)console.log(`[PieCard] Centrifuge received data on ${F}:`,u.data);B.current?.[Q]?.(u.data)},g=(u)=>{if(jU(u))console.warn(`[PieCard] Centrifuge channel ${F} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(RU(u)){if(_)console.log(`[PieCard] Centrifuge recovery gap on ${F}; requesting resync`);V.current?.({channel:F,reason:"gap"})}};return x.on("publication",MZ),x.on("subscribed",g),x.subscribe(),{subscription:x,createdHere:k,onPublication:MZ,onSubscribed:g}});return()=>{K.forEach(({subscription:Q,createdHere:F,onPublication:x,onSubscribed:k})=>{if(_)console.log("[PieCard] Centrifuge unsubscribing from channel");if(Q.off("publication",x),Q.off("subscribed",k),F)Q.unsubscribe(),O.removeSubscription(Q)})}},[O,T,U.name,z]),f.useEffect(()=>{if(!A||!J||!U.name){if(_&&J)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!A,useMittSupport:J,hasMethods:!!B.current,hasDataName:!!U?.name});return}let w=Object.keys(B.current??{}),K={};return w.forEach((Q)=>{let F=`pie${Q}_${U.name}`,x=(k)=>{if(_)console.log(`[PieCard] Mitt registering event: ${F}`);B.current?.[Q]?.(k)};K[F]=x,A.on(F,x)}),()=>{Object.entries(K).forEach(([Q,F])=>{if(_)console.log(`[PieCard] Mitt unregistering event: ${Q}`);A.off(Q,F)})}},[A,U.name,J]),_)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0&&!W)return $Z.jsxs($Z.Fragment,{children:[$Z.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(G)}),$]});return $},P=XH;var uU=require("react"),t=new Map;function dU(Z,U){return U.catch(()=>{if(t.get(Z)===U)t.delete(Z)}),t.set(Z,U),U}function jZ(Z,U){return uU.lazy(()=>{if(t.has(U))return t.get(U);return dU(U,Z().then(($)=>$))})}var cU=async(Z,U)=>{if(!U)return;if(t.has(Z))return t.get(Z);return dU(Z,U().then(($)=>$))};var S=M("@swarm.ing/pieui:component-registry",()=>new Map),YH=(Z)=>{if(!Z.name)throw Error("Component registration requires a name");if(!Z.component&&!Z.loader)throw Error(`Component "${Z.name}" requires component or loader`);let U={name:Z.name,component:Z.component,loader:Z.loader,metadata:Z.metadata,fallback:Z.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=jZ(U.loader,Z.name),U.isLazy=!0;return U};function I(Z){let U=YH(Z);return S.set(U.name,U),U.component}var oU=(Z)=>{Z.forEach((U)=>I(U))},sU=(Z)=>{S.delete(Z)},iU=(Z)=>{return S.has(Z)},rU=(Z)=>{return S.get(Z)?.metadata},HZ=(Z)=>{return S.get(Z)},aU=()=>{return Array.from(S.keys())},nU=()=>{return S.size},$U=()=>Array.from(S.values()).filter((Z)=>Z.isLazy&&typeof Z.loader==="function").map((Z)=>Z.name),HU=(Z)=>{let U=S.get(Z);if(!U?.isLazy||typeof U.loader!=="function")return;return cU(Z,U.loader)},lU=!1,tU=()=>{if(lU||typeof window>"u")return;lU=!0;let Z=navigator.connection;if(Z?.saveData)return;if(Z?.effectiveType&&["slow-2g","2g"].includes(Z.effectiveType))return;let U=$U(),$="requestIdleCallback"in window?(z)=>window.requestIdleCallback(z,{timeout:2000}):(z)=>window.setTimeout(z,300),H=(z)=>{if(z>=U.length)return;$(()=>{Promise.resolve().then(()=>HU(U[z])).catch(()=>{}).finally(()=>H(z+1))})};H(0)};var DZ=require("react");var eU=require("react");var EZ=require("react/jsx-runtime"),qH=M("@swarm.ing/pieui:context:fallback",()=>eU.createContext(EZ.jsx(EZ.Fragment,{}))),C=qH;var Z$=require("react");var BH=M("@swarm.ing/pieui:context:lazyError",()=>Z$.createContext(void 0)),l=BH;var CZ=require("react"),U$=require("react/jsx-runtime"),QH=2,WH=400;class zZ extends CZ.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(Z){if(this.props.onError?.(Z),this.state.attempt<QH){let U=WH*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},U)}}componentDidUpdate(Z){if(Z.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 U$.jsx(CZ.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var yZ=require("react/jsx-runtime");function _H({uiConfig:Z,setUiAjaxConfiguration:U}){let $=DZ.useContext(C),H=DZ.useContext(l),z=d();if(z)console.log("[UI] Rendering component:",Z.card),console.log("[UI] Component data:",Z.data),console.log("[UI] Component content:",Z.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let J=HZ(Z.card);if(!J?.component){if(z)console.warn(`[UI] Component not found in registry: ${Z.card}`),console.log("[UI] Returning fallback component");return $}if(z)console.log("[UI] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata});let T=J.component,X=yZ.jsx(T,{data:Z.data,content:Z.content,setUiAjaxConfiguration:U});if(J.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",J.name);return yZ.jsx(zZ,{name:J.name,fallback:J.fallback?yZ.jsx(J.fallback,{}):$,onError:H,children:X})}if(z)console.log("[UI] Rendering component directly:",J.name);return X}var j=DZ.memo(_H);var zU=require("react");var $$=require("react");var VH=M("@swarm.ing/pieui:context:uiRenderer",()=>$$.createContext(null)),y=VH;var KZ=require("react/jsx-runtime");function H$({uiConfig:Z,setUiAjaxConfiguration:U}){let $=zU.useContext(C),H=zU.useContext(l),z=d();if(z)console.log("[UILoading] Rendering fallback for:",Z.card),console.log("[UILoading] Component data:",Z.data),console.log("[UILoading] Component content:",Z.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let J=HZ(Z.card);if(!J?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${Z.card}`),console.log("[UILoading] Returning fallback component");return $}if(z)console.log("[UILoading] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata,hasFallback:!!J.fallback});if(J.fallback){if(z)console.log("[UILoading] Rendering fallback for:",J.name);let G=J.fallback;return KZ.jsx(G,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",J.name);let T=J.component,X=KZ.jsx(y.Provider,{value:H$,children:KZ.jsx(T,{data:Z.data,content:Z.content,setUiAjaxConfiguration:U})});if(J.isLazy)return KZ.jsx(zZ,{name:J.name,fallback:$,onError:H,children:X});return X}var xZ=H$;var z$=require("react");var fZ=require("react/jsx-runtime"),DH=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,sx:z}=Z,J=z$.useContext(y)??j;return fZ.jsx(P,{card:H,data:Z,children:fZ.jsx("div",{style:z,id:H,children:U.map((T,X)=>{return fZ.jsx(J,{uiConfig:T,setUiAjaxConfiguration:$},`children-${X}`)})})})},J$=DH;var T$=I({name:"SequenceCard",component:J$,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var G$=require("react");var JU=require("react/jsx-runtime"),KH=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H}=Z,z=G$.useContext(y)??j;return JU.jsx(P,{card:H,data:Z,children:U.map((J,T)=>{return JU.jsx(z,{uiConfig:J,setUiAjaxConfiguration:$},`children-${T}`)})})},X$=KH;var Y$=I({name:"UnionCard",component:X$,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var bZ=require("react"),q$=KU(require("html-react-parser"));var b=require("react");function OH(){let Z=new AudioContext,U=Z.createOscillator(),$=U.connect(Z.createMediaStreamDestination());U.start();let H=$.stream.getAudioTracks()[0];return H.enabled=!1,H}function TU(Z=null,U){let[$,H]=b.useState(!1),z=b.useRef(null),J=b.useRef(null),T=b.useRef(null),X=b.useCallback(async(B,V=!0)=>{if(z.current)G();let q=new RTCPeerConnection;if(q.onconnectionstatechange=()=>{if(q.connectionState==="connected")H(!0);else if(["disconnected","failed","closed"].includes(q.connectionState))H(!1)},q.ontrack=(Q)=>{if(Z)Z.srcObject=Q.streams[0]},V){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});q.addTrack(Q.getTracks()[0],Q)}else{let Q=OH();q.addTrack(Q)}let W=q.createDataChannel("oai-events");J.current=W,T.current=new Promise((Q)=>{W.addEventListener("open",()=>{Q()})});let D=await q.createOffer();await q.setLocalDescription(D);let K=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:D.sdp,headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/sdp"}})).text();await q.setRemoteDescription({type:"answer",sdp:K}),z.current=q,await T.current},[Z]),G=b.useCallback(()=>{let B=J.current;if(B)B.close();z.current?.getSenders()?.forEach((V)=>V.track?.stop()),z.current?.close(),H(!1),z.current=null,J.current=null,T.current=null},[Z]),Y=b.useCallback((B)=>{let V=J.current;if(!V){console.error("Data channel is not ready",B);return}let q=new Date().toLocaleTimeString();if(B.event_id=B.event_id||crypto.randomUUID(),V.send(JSON.stringify(B)),!B.timestamp)B.timestamp=q;U?.(B)},[U,Z]),_=b.useCallback((B)=>{if(!J.current){console.error("Data channel is not ready");return}let q=()=>{Y({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:B}]}}),Y({type:"response.create"})};if(T.current)T.current.then(q);else q()},[U,Z]);return b.useEffect(()=>{let B=J.current;if(!B)return;let V=(q)=>{let W=JSON.parse(q.data);if(!W.timestamp)W.timestamp=new Date().toLocaleTimeString();U?.(W)};return B.addEventListener("message",V),()=>{B.removeEventListener("message",V)}},[U,Z]),{isSessionActive:$,startSession:X,stopSession:G,sendTextMessage:_}}var Q$=require("react/jsx-runtime"),FH=({data:Z})=>{let{html:U,useSocketioSupport:$,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:J}=Z,[T,X]=bZ.useState(U),{isSessionActive:G,startSession:Y,sendTextMessage:_}=TU(null,(W)=>{if(console.log(W.type,W.type==="response.output_text.delta"&&W.delta),W.type==="response.output_text.delta"&&W.delta)X((D)=>D+W.delta)});return bZ.useEffect(()=>{X(U)},[U]),Q$.jsx(P,{card:"HTMLEmbedCard",data:Z,methods:{update:(W)=>{X(W.value)},generateUsingAI:async(W)=>{try{if(!G&&W.token)await Y(W.token,!1);_(W.prompt)}catch(D){console.error("Failed to generate using AI",D)}},initializeAI:async(W)=>{if(!G&&W.token)await Y(W.token,!1)}},useCentrifugeSupport:H,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:J,children:q$.default(T)})},B$=FH;var W$=I({name:"HTMLEmbedCard",component:B$,metadata:{author:"Swarm.ing"}});var kZ=require("react");var GU=require("react/jsx-runtime"),IH=({data:Z})=>{let{name:U,value:$,useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:T}=Z,[X,G]=kZ.useState($);return kZ.useEffect(()=>{G($)},[$]),GU.jsx(P,{card:"HiddenCard",data:Z,useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:T,methods:{update:({value:Y})=>{G(Y)}},children:GU.jsx("input",{type:"hidden",id:U,name:U,value:X})})},_$=IH;var V$=I({name:"HiddenCard",component:_$,metadata:{author:"Swarm.ing"}});var OZ=require("react");var D$=require("react");var MH=M("@swarm.ing/pieui:context:navigate",()=>D$.createContext(void 0)),p=MH;var SZ=require("react/jsx-runtime"),PH=({data:Z})=>{let{url:U}=Z,$=OZ.useContext(p),H=OZ.useContext(C);return OZ.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else $?.(U)},[U,$]),SZ.jsx(SZ.Fragment,{children:H})},K$=PH;var O$=I({name:"AutoRedirectCard",component:K$,metadata:{author:"Swarm.ing"}});var o=require("react-toastify"),mZ=require("react-toastify");var TZ=require("react");var JZ=require("react/jsx-runtime"),AH={bounce:o.Bounce,slide:o.Slide,zoom:o.Zoom,flip:o.Flip},wH=(Z)=>{let U={...Z,type:Z.alertType,transition:Z.transition?AH[Z.transition]:void 0,position:Z.position??"bottom-right",autoClose:Z.autoClose??3000,style:{backgroundColor:"black",...Z.sx}};mZ.toast(Z.message,U)},NH=(Z)=>{console.log("Log event",Z)},LH=(Z)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(Z.title,{body:Z.message??Z.subtitle,icon:Z.icon,silent:Z.silent})}catch(H){console.error("[IOEventsCard] Failed to show notification",H)}},$=window.Notification.permission;if($==="granted"){U();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((H)=>{if(H==="granted")U()})},RH=({data:Z})=>{let{useCentrifugeSupport:U,useSocketioSupport:$,useMittSupport:H,centrifugeChannel:z}=Z,J=TZ.useContext(p),T=TZ.useRef(J);T.current=J;let X=TZ.useMemo(()=>({alert:wH,log:NH,push:LH,redirect:(G)=>{if(G.to){let Y=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else T.current?.(Y)}else window.location.reload()},reload:(G)=>{if(G.to){let Y=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else T.current?.(Y)}else window.location.reload()}}),[]);return JZ.jsx(JZ.Fragment,{children:JZ.jsx(P,{card:"IOEventsCard",data:Z,useCentrifugeSupport:U,useSocketioSupport:$,useMittSupport:H,centrifugeChannel:z,methods:X,children:JZ.jsx(mZ.ToastContainer,{})})})},F$=RH;var I$=I({name:"IOEventsCard",component:F$,metadata:{author:"Swarm.ing"}});var FZ=require("react");var XU=require("react/jsx-runtime"),jH=({data:Z})=>{let{name:U,key:$,value:H,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:X}=Z,[G,Y]=FZ.useState(H);return FZ.useEffect(()=>{Y(H)},[H]),FZ.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem($,G)},[$,G]),XU.jsx(P,{card:"SessionStorageCard",data:Z,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:X,methods:{update:({value:_})=>{Y(_)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:XU.jsx("input",{type:"hidden",id:U,name:U,value:G})})},M$=jH;var P$=I({name:"SessionStorageCard",component:M$,metadata:{author:"PieData"}});var IZ=require("react");var YU=require("react/jsx-runtime"),EH=({data:Z})=>{let{name:U,key:$,value:H,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:X}=Z,[G,Y]=IZ.useState(H);return IZ.useEffect(()=>{Y(H)},[H]),IZ.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem($,G)},[$,G]),YU.jsx(P,{card:"DeviceStorageCard",data:Z,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:X,methods:{update:({value:_})=>{Y(_)},remove:()=>{localStorage.removeItem($),Y("")}},children:YU.jsx("input",{type:"hidden",id:U,name:U,value:G})})},A$=EH;var w$=I({name:"DeviceStorageCard",component:A$,metadata:{author:"PieData"}});var E=require("react");var qU=require("react/jsx-runtime"),CH=({data:Z,content:U})=>{let{useLoader:$,noReturn:H,returnType:z,useSocketioSupport:J,useCentrifugeSupport:T,useMittSupport:X,centrifugeChannel:G}=Z,Y=E.useContext(C),_=E.useContext(y)??j,[B,V]=E.useState(!1),[q,W]=E.useState(null),D=E.useRef(U),O=E.useContext(h),A=E.useCallback((Q)=>{if(Q===null)V(!0);else if(V(!1),!H)D.current=Q;if(!H)W(Q)},[H]),w=E.useCallback((Q)=>{D.current=Q.content,W(Q.content)},[]),K=E.useCallback((Q)=>{if(Q===null)V(!0);else if(V(!1),!H)for(let F of Q)O?.emit(F.name,F.data)},[H,O]);if(E.useEffect(()=>{W(U),V(!1)},[U]),!q&&$)return Y;return qU.jsx(P,{card:"AjaxGroupCard",data:Z,methods:{changeContent:w},useSocketioSupport:J,useCentrifugeSupport:T,useMittSupport:X,centrifugeChannel:G,children:qU.jsx(_,{uiConfig:q??D.current,setUiAjaxConfiguration:z==="events"?K:A})})},N$=CH;var L$=I({name:"AjaxGroupCard",component:N$,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var BU=require("react");var vZ=require("react/jsx-runtime"),yH=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,url:z,sx:J}=Z,T=BU.useContext(p),X=BU.useContext(y)??j;return vZ.jsx(P,{card:H,data:Z,children:vZ.jsx("div",{style:J,id:H,onClick:(Y)=>{if(z)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else T?.(z)},children:vZ.jsx(X,{setUiAjaxConfiguration:$,uiConfig:U})})})},R$=yH;var j$=I({name:"BoxCard",component:R$,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var E$=require("react");var hZ=require("react/jsx-runtime"),xH=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,sx:z}=Z,J=E$.useContext(y)??j;return hZ.jsx(P,{card:H,data:Z,children:hZ.jsx("div",{style:z,id:H,children:U.map((T,X)=>{return hZ.jsx(J,{uiConfig:T,setUiAjaxConfiguration:$},`children-${X}`)})})})},C$=xH;var y$=I({name:"OneOfCard",component:C$,metadata:{author:"Swarm.ing",description:"Different variants"}});var XZ=require("react"),YZ=require("@tanstack/react-query");var s=require("react");var uZ=require("react"),pZ=new Map,gZ=new Map;function dZ(Z,U){let $=`${Z}::${U}`,H=Z?pZ.get($):void 0,[z,J]=uZ.useState(H??null);return uZ.useEffect(()=>{if(!Z)return;if(pZ.has($)){J(pZ.get($));return}let T=gZ.get($);if(!T)T=fetch(Z+`api/support/${U}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return pZ.set($,G),gZ.delete($),G}).catch((G)=>{throw gZ.delete($),G}),gZ.set($,T);let X=!1;return T.then((G)=>{if(!X)J(G)}).catch(()=>{}),()=>{X=!0}},[Z,U,$]),z}function GZ(Z,U){if(U==="up")return{state:"up",signal:Z==="down"?"restored":null};return{state:"down",signal:Z==="up"?"lost":null}}var fH=({children:Z})=>{let U=s.useContext(v),$=AZ(),H=dZ($,"socketIO"),z=e(),J=ZZ(),T=s.useRef(z);T.current=z;let X=s.useRef(J);X.current=J;let G=s.useRef("initial"),Y=(_)=>{if(N.isClient())N.setSid(_.sid),kU(),console.log(`SocketIO initialized: ${N.readSid()}`)};return s.useEffect(()=>{if(!U||!H)return;let _=()=>{let{state:V,signal:q}=GZ(G.current,"up");if(G.current=V,q==="restored")X.current?.("socketio");console.log("SocketIO connected")},B=(V)=>{if(console.log(`SocketIO disconnected: ${V}`),U.connect(),V==="io client disconnect")return;let{state:q,signal:W}=GZ(G.current,"down");if(G.current=q,W==="lost")T.current?.("socketio",V)};return U.on("pieinit",Y),U.on("connect",_),U.on("disconnect",B),U.connect(),()=>{U.off("pieinit",Y),U.off("connect",_),U.off("disconnect",B),U.disconnect()}},[U,H]),Z},cZ=fH;var i=require("react");var bH=({children:Z})=>{let U=i.useContext(m),$=AZ(),H=dZ($,"centrifuge"),z=e(),J=ZZ(),T=i.useRef(z);T.current=z;let X=i.useRef(J);X.current=J;let G=i.useRef("initial");return i.useEffect(()=>{if(!U||!H)return;let Y=(V)=>{let{state:q,signal:W}=GZ(G.current,"down");if(G.current=q,W==="lost")T.current?.("centrifuge",V)},_=()=>{let{state:V,signal:q}=GZ(G.current,"up");if(G.current=V,q==="restored")X.current?.("centrifuge");console.log("Centrifuge connected")},B=(V)=>{console.log("Centrifuge disconnected:",V),Y(V)};return U.on("connecting",Y),U.on("connected",_),U.on("disconnected",B),U.connect(),()=>{U.off("connecting",Y),U.off("connected",_),U.off("disconnected",B),U.disconnect()}},[U,H]),Z},lZ=bH;var b$=require("axios-date-transformer");var f$=require("react/jsx-runtime");function x$(Z,U,$){if(!U)return $;let H=Z.replace(/^\//,""),z=U[H];if(!z)return $;return f$.jsx(xZ,{uiConfig:z})}var L=require("react/jsx-runtime"),kH=({location:Z,fallback:U,piecache:$,onError:H,queryOptions:z,disableGlobalForm:J})=>{let T=QZ(),X=wZ(),G=d(),Y=XZ.useMemo(()=>b$.createAxiosDateTransformer({baseURL:T||""}),[T]),_=XZ.useMemo(()=>a(),[]),B=XZ.useMemo(()=>T?RZ(T):null,[T]),V=XZ.useMemo(()=>T?LZ(T,X):null,[T,X]),{data:q,isLoading:W,error:D}=YZ.useQuery({queryKey:["uiConfig",Z.pathname+Z.search,T],enabled:!!T,queryFn:async()=>{let A=new URLSearchParams(Z.search);A.set("__pieroot","web");let w="/api/content"+Z.pathname+"?"+A.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",w);let K=await Y.get(w,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",K.data);return K.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(A)=>Math.min(1000*2**A,30000),...z}),O=x$(Z.pathname,$,U);if(!T)return O??null;if(G)console.log("[PieRoot] Rendering with location:",Z),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",X),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!$);if(D){if(G)console.error("[PieRoot] Error fetching UI configuration:",D),console.error("[PieRoot] Error details:",{message:D.message,status:D.response?.status,data:D.response?.data});return H?.(D),O}if(W||!q){if(G)console.log("[PieRoot] Loading state:",{isLoading:W,hasUiConfiguration:!!q});return O}if(G)console.log("[PieRoot] UI configuration loaded successfully:",q),console.log("[PieRoot] Rendering UI with configuration");return L.jsx(h.Provider,{value:_,children:L.jsx(v.Provider,{value:B,children:L.jsx(m.Provider,{value:V,children:L.jsx(C.Provider,{value:U??L.jsx(L.Fragment,{}),children:L.jsx(cZ,{children:L.jsx(lZ,{children:J?L.jsx(j,{uiConfig:q}):L.jsx("form",{id:"piedata_global_form",action:T+"api/process"+Z.pathname,method:"post",encType:"multipart/form-data",children:L.jsx(j,{uiConfig:q})})})})})})})})},SH=(Z)=>{let U=XZ.useMemo(()=>new YZ.QueryClient,[]),$=Z.queryClient??U;return L.jsx(p.Provider,{value:Z.onNavigate,children:L.jsx(r.Provider,{value:Z.config,children:L.jsx(l.Provider,{value:Z.onError,children:L.jsx(YZ.QueryClientProvider,{client:$,children:L.jsx(kH,{...Z})})})})})},oZ=SH;var qZ=require("react"),sZ=require("@tanstack/react-query");var R=require("react/jsx-runtime"),mH=({location:Z,fallback:U,children:$,disableGlobalForm:H})=>{let z=QZ(),J=wZ(),T=d(),X=qZ.useMemo(()=>a(),[]),G=qZ.useMemo(()=>z?RZ(z):null,[z]),Y=qZ.useMemo(()=>z?LZ(z,J):null,[z,J]);if(T)console.log("[PieRoot] Rendering with location:",Z),console.log("[PieRoot] API_SERVER:",z),console.log("[PieRoot] CENTRIFUGE_SERVER:",J),console.log("[PieRoot] Fallback provided:",!!U);return R.jsx(h.Provider,{value:X,children:R.jsx(v.Provider,{value:G,children:R.jsx(m.Provider,{value:Y,children:R.jsx(C.Provider,{value:U??R.jsx(R.Fragment,{}),children:R.jsx(cZ,{children:R.jsx(lZ,{children:H?$:R.jsx("form",{id:"piedata_global_form",action:z+"api/process"+Z.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},vH=(Z)=>{let[U]=qZ.useState(()=>new sZ.QueryClient),$=Z.queryClient??U;return R.jsx(p.Provider,{value:Z.onNavigate,children:R.jsx(r.Provider,{value:Z.config,children:R.jsx(l.Provider,{value:Z.onError,children:R.jsx(sZ.QueryClientProvider,{client:$,children:R.jsx(mH,{...Z})})})})})},k$=vH;var S$=require("react");var QU=require("react/jsx-runtime"),hH=QU.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),pH=({apiServer:Z,pathname:U="/",search:$="",centrifugeServer:H,fallback:z,enableRenderingLog:J=!1})=>{let T=Z??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",X=S$.useMemo(()=>({apiServer:T,centrifugeServer:H,enableRenderingLog:J,pageProcessor:"web"}),[T,H,J]);return QU.jsx(oZ,{location:{pathname:U,search:$},config:X,fallback:z??hH,onNavigate:(Y)=>{if(typeof window<"u")window.history.pushState(null,"",Y)}})},m$=pH;var v$=require("clsx"),h$=require("tailwind-merge");function p$(...Z){return h$.twMerge(v$.clsx(Z))}var g$=()=>{vU(),N.submitGlobalForm()};var u$=(Z,U)=>`${Z}${NZ}${U}`;
|
|
2
|
+
var o$=Object.create;var{getPrototypeOf:i$,defineProperty:BZ,getOwnPropertyNames:DU,getOwnPropertyDescriptor:s$}=Object,KU=Object.prototype.hasOwnProperty;var OU=(Z,U,$)=>{$=Z!=null?o$(i$(Z)):{};let H=U||!Z||!Z.__esModule?BZ($,"default",{value:Z,enumerable:!0}):$;for(let z of DU(Z))if(!KU.call(H,z))BZ(H,z,{get:()=>Z[z],enumerable:!0});return H},VU=new WeakMap,r$=(Z)=>{var U=VU.get(Z),$;if(U)return U;if(U=BZ({},"__esModule",{value:!0}),Z&&typeof Z==="object"||typeof Z==="function")DU(Z).map((H)=>!KU.call(U,H)&&BZ(U,H,{get:()=>Z[H],enumerable:!($=s$(Z,H))||$.enumerable}));return VU.set(Z,U),U};var a$=(Z,U)=>{for(var $ in U)BZ(Z,$,{get:U[$],enumerable:!0,configurable:!0,set:(H)=>U[$]=()=>H})};var pH={};a$(pH,{usePieEmit:()=>RU,useOnLinkRestored:()=>ZZ,useOnLinkLost:()=>e,useAjaxSubmits:()=>dU,useAjaxSubmit:()=>pU,unregisterComponent:()=>sU,trackLazy:()=>jZ,submitGlobalForm:()=>p$,registry:()=>S,registerPieComponent:()=>I,registerMultipleComponents:()=>iU,readAjaxKeyAsync:()=>UU,readAjaxKey:()=>ZU,preloadComponent:()=>zU,prefetchLazyComponents:()=>eU,pieName:()=>d$,parseDepName:()=>VZ,hasComponent:()=>rU,getRegistrySize:()=>tU,getRegistryEntry:()=>HZ,getLazyComponentNames:()=>HU,getEmitter:()=>c,getComponentMeta:()=>aU,getAllRegisteredComponents:()=>nU,discoverAjaxEndpoints:()=>$U,cn:()=>g$,UnionCard:()=>q$,UIRendererContext:()=>y,UILoading:()=>xZ,UI:()=>j,SocketIOContext:()=>v,SessionStorageCard:()=>A$,SequenceCard:()=>X$,PieRoot:()=>oZ,PiePreviewRoot:()=>m$,PieConfigContext:()=>a,PieCard:()=>P,PieBaseRoot:()=>S$,PIEBREAK:()=>NZ,OneOfCard:()=>x$,MittContext:()=>h,IOEventsCard:()=>M$,HiddenCard:()=>D$,HTMLEmbedCard:()=>_$,FallbackContext:()=>C,DeviceStorageCard:()=>N$,CentrifugeIOContext:()=>m,BoxCard:()=>E$,AutoRedirectCard:()=>F$,AjaxGroupCard:()=>R$});module.exports=r$(pH);var f=require("react");var PZ=require("react");var aZ=globalThis,M=(Z,U)=>{let $=Symbol.for(Z);if(!($ in aZ))aZ[$]=U();return aZ[$]};var a=M("@swarm.ing/pieui:context:pieConfig",()=>PZ.createContext(null)),l=()=>{let Z=PZ.useContext(a);if(!Z)throw Error("usePieConfig must be used within PieConfigProvider");return Z},WZ=()=>{let{apiServer:Z}=l();return Z},AZ=WZ,wZ=()=>{let{centrifugeServer:Z}=l();return Z};var u=()=>{let{enableRenderingLog:Z}=l();return Z},FU=u;var e=()=>{let{onLinkLost:Z}=l();return Z},ZZ=()=>{let{onLinkRestored:Z}=l();return Z},NZ="__piedemo__";var MU=require("react"),nZ=require("centrifuge");var IU=M("@swarm.ing/pieui:centrifuge-cache",()=>new Map),LZ=(Z,U)=>{if(!U)return null;let $=`${Z}::${U}`,H=IU.get($);if(H)return H;async function z(){let T=await fetch(Z+"api/centrifuge/gen_token",{credentials:"include"});if(!T.ok){if(T.status===401||T.status===403)throw new nZ.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${T.status}`)}return(await T.json()).token}let J=new nZ.Centrifuge(U,{getToken:z});return IU.set($,J),J},n$=M("@swarm.ing/pieui:context:centrifuge",()=>MU.createContext(null)),m=n$;var AU=require("socket.io-client"),wU=require("react");var PU=M("@swarm.ing/pieui:socket-cache",()=>new Map),RZ=(Z)=>{let U=PU.get(Z);if(U)return U;let $=AU.io(Z,{autoConnect:!1,transports:["websocket"]});return PU.set(Z,$),$},t$=M("@swarm.ing/pieui:context:socket",()=>wU.createContext(null)),v=t$;var NU=OU(require("mitt")),UZ=require("react");function c(){return M("@swarm.ing/pieui:mitt-emitter",()=>NU.default())}var LU=M("@swarm.ing/pieui:context:mitt",()=>UZ.createContext(null));function RU(Z){let U=UZ.useContext(LU);return UZ.useCallback(($,H)=>{(U??c()).emit(`pie${$}_${Z}`,H)},[Z,U])}var h=LU;function jU(Z){return Z.wasRecovering===!0&&Z.recovered===!1}function EU(Z){return Z.recoverable===!1}function CU(Z,U,$){let H=Z.getSubscription(U);if(H)return{subscription:H,createdHere:!1};return{subscription:Z.newSubscription(U,$),createdHere:!0}}var e$=(Z)=>{let U=document.cookie?document.cookie.split(";"):[];for(let $ of U){let H=$.indexOf("=");if((H===-1?$:$.slice(0,H)).trim()===Z){let J=H===-1?"":$.slice(H+1).trim();try{return decodeURIComponent(J)}catch{return J}}}return null},ZH={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(Z){if(typeof window<"u")window.sid=Z},readWebStorage(Z,U){return(Z==="local"?window.localStorage:window.sessionStorage).getItem(U)},readCookie:e$,readUrlParams(Z){return new URLSearchParams(window.location.search).getAll(Z)},readDomInput(Z){let U=document.getElementsByName(Z);if(!U.length)return null;let $=U[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let Z=document.getElementById("piedata_global_form");Z&&Z.submit()}},yU=ZH;var UH={};function n(){return UH}var xU=new Map;var fU=(Z)=>{return xU.has(Z)?xU.get(Z):null};var bU,$H={isClient(){return!0},readSid(){return bU},setSid(Z){bU=Z},readWebStorage(Z,U){let $=n(),H=Z==="local"?$.storage:$.sessionStorage;return H?H.getItem(U):null},async readWebStorageAsync(Z,U){let $=n(),H=Z==="local"?$.asyncStorage:$.asyncSessionStorage;if(H)return H.getItem(U);let z=Z==="local"?$.storage:$.sessionStorage;return z?z.getItem(U):null},readCookie(Z){let U=n();return U.getCookie?U.getCookie(Z):null},readUrlParams(Z){let U=n();return U.getRouteParams?U.getRouteParams(Z):[]},readDomInput(Z){let U=n();return U.getInput?U.getInput(Z):fU(Z)},submitGlobalForm(){n().submitForm?.()}},kU=$H;var HH=typeof navigator<"u"&&navigator.product==="ReactNative",zH=HH?kU:yU,N=zH;var QZ=M("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function SU(){QZ.resolve?.()}function tZ(){if(!N.isClient())return Promise.resolve();if(N.readSid()!==void 0)return Promise.resolve();if(!QZ.promise)QZ.promise=new Promise((Z)=>{QZ.resolve=()=>{Z()}});return QZ.promise}var eZ=require("react");var JH=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],TH=new Set(["telegram:cloud","telegram:secure"]),_Z=new Map,mU=(Z,U)=>{_Z.set(Z,U)},vU=(Z)=>{_Z.delete(Z)},hU=(Z="piedata_global_form")=>{let U;if(typeof Z==="string"){if(typeof document>"u")return;U=document.getElementById(Z)}else U=Z;if(!U)return;let $=U.ownerDocument;for(let H of Array.from(U.getElementsByTagName("input")))if(H.getAttribute("data-pie-stored")!==null)H.remove();for(let[H,z]of _Z){let J=z();if(J instanceof Promise)continue;for(let T of J){if(typeof T!=="string")continue;let G=$.createElement("input");G.type="hidden",G.name=H,G.value=T,G.setAttribute("data-pie-stored","1"),U.appendChild(G)}}},VZ=(Z)=>{if(Z==="sid")return{source:"sid",key:"sid"};for(let U of JH){let $=U+":";if(Z.startsWith($))return{source:U,key:Z.slice($.length)}}return{source:"dom",key:Z}},ZU=(Z,U=!1)=>{let{source:$,key:H}=VZ(Z);if($==="sid"){let T=N.readSid();if(!T)throw Error("SocketIO isn't initialized properly");return[T]}if($==="localStorage"||$==="sessionStorage")try{let T=N.readWebStorage($==="localStorage"?"local":"session",H);if(T===null){if(U)console.warn(`No ${$} value found for key ${H}`);return[]}return[T]}catch(T){if(U)console.warn(`Failed to read ${$} key ${H}:`,T);return[]}if($==="cookie"){let T=N.readCookie(H);if(T===null){if(U)console.warn(`No cookie found for key ${H}`);return[]}return[T]}if($==="url"){let T=N.readUrlParams(H);if(!T.length&&U)console.warn(`No URL query param found for key ${H}`);return T}if(TH.has($)){if(U)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let z=_Z.get(H);if(z){let T=z();if(T instanceof Promise){if(U)console.warn(`stored resolver for ${H} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}return T}let J=N.readDomInput(H);if(J===null){if(U)console.warn(`No input found with name ${H}`);return[]}return J},XH=(Z,U,$)=>{let H=window.Telegram?.WebApp,z=Z==="telegram:cloud"?H?.CloudStorage:H?.SecureStorage,J=Z==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!z){if($)console.warn(`${J} is not available`);return Promise.resolve([])}return new Promise((T)=>{try{z.getItem(U,(G,X)=>{if(G){if($)console.warn(`Failed to read ${J} key ${U}:`,G);T([]);return}if(X==null||X===""){if($)console.warn(`No ${J} value found for key ${U}`);T([]);return}T([X])})}catch(G){if($)console.warn(`Failed to read ${J} key ${U}:`,G);T([])}})},UU=async(Z,U=!1)=>{let{source:$,key:H}=VZ(Z);if($==="telegram:cloud"||$==="telegram:secure")return XH($,H,U);if(($==="localStorage"||$==="sessionStorage")&&N.readWebStorageAsync)try{let z=await N.readWebStorageAsync($==="localStorage"?"local":"session",H);if(z===null){if(U)console.warn(`No ${$} value found for key ${H}`);return[]}return[z]}catch(z){if(U)console.warn(`Failed to read ${$} key ${H}:`,z);return[]}if($==="dom"){let z=_Z.get(H);if(z)return z()}return ZU(Z,U)},gU=(Z,U={},$=[],H,z)=>{let J=z?.renderingLogEnabled??!1,T=z?.timeout,G=z?.retryPolicy,X=G?.maxRetries??0,Y=G?.baseDelay??1000,Q=G?.retryOn??[502,503,504];if(J)console.log("Registering AJAX: ",H,U,$);return async(q={})=>{if(!N.isClient()){if(J)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=z?.apiServer;if(!V){if(J)console.warn("AJAX skipped: apiServer is missing");return}if(!H||!Z){if(J)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await tZ();let B=new FormData;for(let[O,A]of Object.entries({...U,...q}))B.append(O,A);for(let O of $){let{key:A}=VZ(O);for(let w of await UU(O,J))B.append(A,w)}let W=V+"api/ajax_content"+H;Z(null);let D;for(let O=0;O<=X;O++){if(O>0){let K=Y*2**(O-1);if(J)console.log(`AJAX retry ${O}/${X} after ${K}ms`);await new Promise((_)=>setTimeout(_,K))}let A=T!=null?new AbortController:null,w=A&&setTimeout(()=>A.abort(),T);try{let K=await fetch(W,{method:"POST",body:B,signal:A?.signal});if(w)clearTimeout(w);if(!K.ok&&Q.includes(K.status)&&O<X){D=Error(`HTTP ${K.status}`);continue}let F=(K.headers.get("content-type")||"").includes("application/json");if(!!K.body?.getReader&&!F){let k=K.body.getReader(),MZ=new TextDecoder,p="";while(!0){let{done:d,value:u$}=await k.read();if(d)break;p+=MZ.decode(u$,{stream:!0});let _U=p.split(`
|
|
3
|
+
`);p=_U.pop()??"";for(let c$ of _U){let rZ=c$.trim();if(!rZ)continue;try{let l$=JSON.parse(rZ);Z([l$])}catch{if(J)console.warn("Failed to parse streamed line:",rZ)}}}if(p.trim())try{let d=JSON.parse(p);Z([d])}catch{if(J)console.warn("Failed to parse final streamed line:",p)}return{}}else{let k=await K.json();return Z(k),k}}catch(K){if(w)clearTimeout(w);if(D=K,O<X)continue;if(J)console.error("AJAX request failed:",K);return Z(null),K}}if(J)console.error("AJAX request failed after retries:",D);return Z(null),D}},pU=(Z,U={},$=[],H,z)=>{let{apiServer:J,enableRenderingLog:T}=l(),G=JSON.stringify(U),X=JSON.stringify($),Y=JSON.stringify(z);return eZ.useMemo(()=>gU(Z,U,$,H,{apiServer:J,renderingLogEnabled:T,timeout:z?.timeout,retryPolicy:z?.retryPolicy}),[Z,G,X,H,J,T,Y])},$U=(Z={})=>{let U=[];for(let $ of Object.keys(Z??{})){let H=null;if($==="pathname")H="default";else if($.endsWith("Pathname"))H=$.slice(0,-8);if(H===null)continue;let z=H==="default"?"":H;U.push({key:H,pathname:Z[$],depsNames:Z[z?`${z}DepsNames`:"depsNames"]??[],kwargs:Z[z?`${z}Kwargs`:"kwargs"]??{}})}return U},dU=(Z={},U,$)=>{let{apiServer:H,enableRenderingLog:z}=l(),J=JSON.stringify(Z??{}),T=JSON.stringify($);return eZ.useMemo(()=>{let G={};for(let X of $U(Z??{}))G[X.key]=gU(U,X.kwargs,X.depsNames,X.pathname,{apiServer:H,renderingLogEnabled:z,timeout:$?.timeout,retryPolicy:$?.retryPolicy});return G},[J,U,H,z,T])};var $Z=require("react/jsx-runtime"),GH=({card:Z,data:U,children:$,useSocketioSupport:H=!1,useCentrifugeSupport:z=!1,useMittSupport:J=!1,centrifugeChannel:T=void 0,methods:G=void 0,stored:X=void 0,onResync:Y=void 0})=>{let Q=FU(),q=f.useRef(G);q.current=G;let V=f.useRef(Y);V.current=Y;let B=f.useRef(X);B.current=X;let W=typeof X==="function";if(f.useEffect(()=>{if(!W)return;let w=U.name;return mU(w,()=>[JSON.stringify(B.current())]),()=>vU(w)},[W,U.name]),Q)console.log("[PieCard] Rendering card:",Z),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:H,centrifuge:z,mitt:J,centrifugeChannel:T}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!$);let D=f.useContext(v),O=f.useContext(m),A=f.useContext(h);if(f.useEffect(()=>{if(!D||!H||!q.current||!U.name){if(Q&&H)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!D,useSocketioSupport:H,hasMethods:!!q.current,hasDataName:!!U?.name});return}let K=Object.keys(q.current??{}).map((_)=>{let F=`pie${_}_${U.name}`;if(Q)console.log(`[PieCard] Socket.IO registering event: ${F}`);let x=(k)=>{q.current?.[_]?.(k)};return D.on(F,x),[F,x]});return()=>{K.forEach(([_,F])=>{if(Q)console.log(`[PieCard] Socket.IO unregistering event: ${_}`);D.off(_,F)})}},[D,U.name,H]),f.useEffect(()=>{if(!O||!z||!T||!U.name){if(Q&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:z,hasCentrifugeChannel:!!T,hasMethods:!!q.current,hasDataName:!!U?.name});return}let K=Object.keys(q.current??{}).map((_)=>{let F=`pie${_}_${U.name}_${T}`;if(Q)console.log(`[PieCard] Centrifuge subscribing to channel: ${F}`);let{subscription:x,createdHere:k}=CU(O,F,{recoverable:!0,positioned:!0}),MZ=(d)=>{if(Q)console.log(`[PieCard] Centrifuge received data on ${F}:`,d.data);q.current?.[_]?.(d.data)},p=(d)=>{if(EU(d))console.warn(`[PieCard] Centrifuge channel ${F} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(jU(d)){if(Q)console.log(`[PieCard] Centrifuge recovery gap on ${F}; requesting resync`);V.current?.({channel:F,reason:"gap"})}};return x.on("publication",MZ),x.on("subscribed",p),x.subscribe(),{subscription:x,createdHere:k,onPublication:MZ,onSubscribed:p}});return()=>{K.forEach(({subscription:_,createdHere:F,onPublication:x,onSubscribed:k})=>{if(Q)console.log("[PieCard] Centrifuge unsubscribing from channel");if(_.off("publication",x),_.off("subscribed",k),F)_.unsubscribe(),O.removeSubscription(_)})}},[O,T,U.name,z]),f.useEffect(()=>{if(!A||!J||!U.name){if(Q&&J)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!A,useMittSupport:J,hasMethods:!!q.current,hasDataName:!!U?.name});return}let w=Object.keys(q.current??{}),K={};return w.forEach((_)=>{let F=`pie${_}_${U.name}`,x=(k)=>{if(Q)console.log(`[PieCard] Mitt registering event: ${F}`);q.current?.[_]?.(k)};K[F]=x,A.on(F,x)}),()=>{Object.entries(K).forEach(([_,F])=>{if(Q)console.log(`[PieCard] Mitt unregistering event: ${_}`);A.off(_,F)})}},[A,U.name,J]),Q)console.log("[PieCard] Rendering complete, returning children");if(X!==void 0&&!W)return $Z.jsxs($Z.Fragment,{children:[$Z.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(X)}),$]});return $},P=GH;var uU=require("react"),t=new Map;function cU(Z,U){return U.catch(()=>{if(t.get(Z)===U)t.delete(Z)}),t.set(Z,U),U}function jZ(Z,U){return uU.lazy(()=>{if(t.has(U))return t.get(U);return cU(U,Z().then(($)=>$))})}var lU=async(Z,U)=>{if(!U)return;if(t.has(Z))return t.get(Z);return cU(Z,U().then(($)=>$))};var S=M("@swarm.ing/pieui:component-registry",()=>new Map),YH=(Z)=>{if(!Z.name)throw Error("Component registration requires a name");if(!Z.component&&!Z.loader)throw Error(`Component "${Z.name}" requires component or loader`);let U={name:Z.name,component:Z.component,loader:Z.loader,metadata:Z.metadata,fallback:Z.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=jZ(U.loader,Z.name),U.isLazy=!0;return U};function I(Z){let U=YH(Z);return S.set(U.name,U),U.component}var iU=(Z)=>{Z.forEach((U)=>I(U))},sU=(Z)=>{S.delete(Z)},rU=(Z)=>{return S.has(Z)},aU=(Z)=>{return S.get(Z)?.metadata},HZ=(Z)=>{return S.get(Z)},nU=()=>{return Array.from(S.keys())},tU=()=>{return S.size},HU=()=>Array.from(S.values()).filter((Z)=>Z.isLazy&&typeof Z.loader==="function").map((Z)=>Z.name),zU=(Z)=>{let U=S.get(Z);if(!U?.isLazy||typeof U.loader!=="function")return;return lU(Z,U.loader)},oU=!1,eU=()=>{if(oU||typeof window>"u")return;oU=!0;let Z=navigator.connection;if(Z?.saveData)return;if(Z?.effectiveType&&["slow-2g","2g"].includes(Z.effectiveType))return;let U=HU(),$="requestIdleCallback"in window?(z)=>window.requestIdleCallback(z,{timeout:2000}):(z)=>window.setTimeout(z,300),H=(z)=>{if(z>=U.length)return;$(()=>{Promise.resolve().then(()=>zU(U[z])).catch(()=>{}).finally(()=>H(z+1))})};H(0)};var DZ=require("react");var Z$=require("react");var EZ=require("react/jsx-runtime"),qH=M("@swarm.ing/pieui:context:fallback",()=>Z$.createContext(EZ.jsx(EZ.Fragment,{}))),C=qH;var U$=require("react");var BH=M("@swarm.ing/pieui:context:lazyError",()=>U$.createContext(void 0)),o=BH;var CZ=require("react"),$$=require("react/jsx-runtime"),WH=2,QH=400;class zZ extends CZ.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(Z){if(this.props.onError?.(Z),this.state.attempt<WH){let U=QH*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},U)}}componentDidUpdate(Z){if(Z.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 $$.jsx(CZ.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var yZ=require("react/jsx-runtime");function _H({uiConfig:Z,setUiAjaxConfiguration:U}){let $=DZ.useContext(C),H=DZ.useContext(o),z=u();if(z)console.log("[UI] Rendering component:",Z.card),console.log("[UI] Component data:",Z.data),console.log("[UI] Component content:",Z.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let J=HZ(Z.card);if(!J?.component){if(z)console.warn(`[UI] Component not found in registry: ${Z.card}`),console.log("[UI] Returning fallback component");return $}if(z)console.log("[UI] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata});let T=J.component,G=yZ.jsx(T,{data:Z.data,content:Z.content,setUiAjaxConfiguration:U});if(J.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",J.name);return yZ.jsx(zZ,{name:J.name,fallback:J.fallback?yZ.jsx(J.fallback,{}):$,onError:H,children:G})}if(z)console.log("[UI] Rendering component directly:",J.name);return G}var j=DZ.memo(_H);var JU=require("react");var H$=require("react");var VH=M("@swarm.ing/pieui:context:uiRenderer",()=>H$.createContext(null)),y=VH;var KZ=require("react/jsx-runtime");function z$({uiConfig:Z,setUiAjaxConfiguration:U}){let $=JU.useContext(C),H=JU.useContext(o),z=u();if(z)console.log("[UILoading] Rendering fallback for:",Z.card),console.log("[UILoading] Component data:",Z.data),console.log("[UILoading] Component content:",Z.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let J=HZ(Z.card);if(!J?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${Z.card}`),console.log("[UILoading] Returning fallback component");return $}if(z)console.log("[UILoading] Found component in registry:",{name:J.name,isLazy:J.isLazy,hasMetadata:!!J.metadata,hasFallback:!!J.fallback});if(J.fallback){if(z)console.log("[UILoading] Rendering fallback for:",J.name);let X=J.fallback;return KZ.jsx(X,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",J.name);let T=J.component,G=KZ.jsx(y.Provider,{value:z$,children:KZ.jsx(T,{data:Z.data,content:Z.content,setUiAjaxConfiguration:U})});if(J.isLazy)return KZ.jsx(zZ,{name:J.name,fallback:$,onError:H,children:G});return G}var xZ=z$;var J$=require("react");var fZ=require("react/jsx-runtime"),DH=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,sx:z}=Z,J=J$.useContext(y)??j;return fZ.jsx(P,{card:H,data:Z,children:fZ.jsx("div",{style:z,id:H,children:U.map((T,G)=>{return fZ.jsx(J,{uiConfig:T,setUiAjaxConfiguration:$},`children-${G}`)})})})},T$=DH;var X$=I({name:"SequenceCard",component:T$,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var G$=require("react");var TU=require("react/jsx-runtime"),KH=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H}=Z,z=G$.useContext(y)??j;return TU.jsx(P,{card:H,data:Z,children:U.map((J,T)=>{return TU.jsx(z,{uiConfig:J,setUiAjaxConfiguration:$},`children-${T}`)})})},Y$=KH;var q$=I({name:"UnionCard",component:Y$,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var bZ=require("react"),B$=OU(require("html-react-parser"));var b=require("react");function OH(){let Z=new AudioContext,U=Z.createOscillator(),$=U.connect(Z.createMediaStreamDestination());U.start();let H=$.stream.getAudioTracks()[0];return H.enabled=!1,H}function XU(Z=null,U){let[$,H]=b.useState(!1),z=b.useRef(null),J=b.useRef(null),T=b.useRef(null),G=b.useCallback(async(q,V=!0)=>{if(z.current)X();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")H(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))H(!1)},B.ontrack=(_)=>{if(Z)Z.srcObject=_.streams[0]},V){let _=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(_.getTracks()[0],_)}else{let _=OH();B.addTrack(_)}let W=B.createDataChannel("oai-events");J.current=W,T.current=new Promise((_)=>{W.addEventListener("open",()=>{_()})});let D=await B.createOffer();await B.setLocalDescription(D);let K=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:D.sdp,headers:{Authorization:`Bearer ${q}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:K}),z.current=B,await T.current},[Z]),X=b.useCallback(()=>{let q=J.current;if(q)q.close();z.current?.getSenders()?.forEach((V)=>V.track?.stop()),z.current?.close(),H(!1),z.current=null,J.current=null,T.current=null},[Z]),Y=b.useCallback((q)=>{let V=J.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;U?.(q)},[U,Z]),Q=b.useCallback((q)=>{if(!J.current){console.error("Data channel is not ready");return}let B=()=>{Y({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:q}]}}),Y({type:"response.create"})};if(T.current)T.current.then(B);else B()},[U,Z]);return b.useEffect(()=>{let q=J.current;if(!q)return;let V=(B)=>{let W=JSON.parse(B.data);if(!W.timestamp)W.timestamp=new Date().toLocaleTimeString();U?.(W)};return q.addEventListener("message",V),()=>{q.removeEventListener("message",V)}},[U,Z]),{isSessionActive:$,startSession:G,stopSession:X,sendTextMessage:Q}}var Q$=require("react/jsx-runtime"),FH=({data:Z})=>{let{html:U,useSocketioSupport:$,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:J}=Z,[T,G]=bZ.useState(U),{isSessionActive:X,startSession:Y,sendTextMessage:Q}=XU(null,(W)=>{if(console.log(W.type,W.type==="response.output_text.delta"&&W.delta),W.type==="response.output_text.delta"&&W.delta)G((D)=>D+W.delta)});return bZ.useEffect(()=>{G(U)},[U]),Q$.jsx(P,{card:"HTMLEmbedCard",data:Z,methods:{update:(W)=>{G(W.value)},generateUsingAI:async(W)=>{try{if(!X&&W.token)await Y(W.token,!1);Q(W.prompt)}catch(D){console.error("Failed to generate using AI",D)}},initializeAI:async(W)=>{if(!X&&W.token)await Y(W.token,!1)}},useCentrifugeSupport:H,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:J,children:B$.default(T)})},W$=FH;var _$=I({name:"HTMLEmbedCard",component:W$,metadata:{author:"Swarm.ing"}});var kZ=require("react");var GU=require("react/jsx-runtime"),IH=({data:Z})=>{let{name:U,value:$,useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:T}=Z,[G,X]=kZ.useState($);return kZ.useEffect(()=>{X($)},[$]),GU.jsx(P,{card:"HiddenCard",data:Z,useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:T,methods:{update:({value:Y})=>{X(Y)}},children:GU.jsx("input",{type:"hidden",id:U,name:U,value:G})})},V$=IH;var D$=I({name:"HiddenCard",component:V$,metadata:{author:"Swarm.ing"}});var OZ=require("react");var K$=require("react");var MH=M("@swarm.ing/pieui:context:navigate",()=>K$.createContext(void 0)),g=MH;var SZ=require("react/jsx-runtime"),PH=({data:Z})=>{let{url:U}=Z,$=OZ.useContext(g),H=OZ.useContext(C);return OZ.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else $?.(U)},[U,$]),SZ.jsx(SZ.Fragment,{children:H})},O$=PH;var F$=I({name:"AutoRedirectCard",component:O$,metadata:{author:"Swarm.ing"}});var i=require("react-toastify"),mZ=require("react-toastify");var TZ=require("react");var JZ=require("react/jsx-runtime"),AH={bounce:i.Bounce,slide:i.Slide,zoom:i.Zoom,flip:i.Flip},wH=(Z)=>{let U={...Z,type:Z.alertType,transition:Z.transition?AH[Z.transition]:void 0,position:Z.position??"bottom-right",autoClose:Z.autoClose??3000,style:{backgroundColor:"black",...Z.sx}};mZ.toast(Z.message,U)},NH=(Z)=>{console.log("Log event",Z)},LH=(Z)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(Z.title,{body:Z.message??Z.subtitle,icon:Z.icon,silent:Z.silent})}catch(H){console.error("[IOEventsCard] Failed to show notification",H)}},$=window.Notification.permission;if($==="granted"){U();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((H)=>{if(H==="granted")U()})},RH=({data:Z})=>{let{useCentrifugeSupport:U,useSocketioSupport:$,useMittSupport:H,centrifugeChannel:z}=Z,J=TZ.useContext(g),T=TZ.useRef(J);T.current=J;let G=TZ.useMemo(()=>({alert:wH,log:NH,push:LH,redirect:(X)=>{if(X.to){let Y=X.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else T.current?.(Y)}else window.location.reload()},reload:(X)=>{if(X.to){let Y=X.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else T.current?.(Y)}else window.location.reload()}}),[]);return JZ.jsx(JZ.Fragment,{children:JZ.jsx(P,{card:"IOEventsCard",data:Z,useCentrifugeSupport:U,useSocketioSupport:$,useMittSupport:H,centrifugeChannel:z,methods:G,children:JZ.jsx(mZ.ToastContainer,{})})})},I$=RH;var M$=I({name:"IOEventsCard",component:I$,metadata:{author:"Swarm.ing"}});var FZ=require("react");var YU=require("react/jsx-runtime"),jH=({data:Z})=>{let{name:U,key:$,value:H,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:G}=Z,[X,Y]=FZ.useState(H);return FZ.useEffect(()=>{Y(H)},[H]),FZ.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem($,X)},[$,X]),YU.jsx(P,{card:"SessionStorageCard",data:Z,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:G,methods:{update:({value:Q})=>{Y(Q)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:YU.jsx("input",{type:"hidden",id:U,name:U,value:X})})},P$=jH;var A$=I({name:"SessionStorageCard",component:P$,metadata:{author:"PieData"}});var IZ=require("react");var qU=require("react/jsx-runtime"),EH=({data:Z})=>{let{name:U,key:$,value:H,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:G}=Z,[X,Y]=IZ.useState(H);return IZ.useEffect(()=>{Y(H)},[H]),IZ.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem($,X)},[$,X]),qU.jsx(P,{card:"DeviceStorageCard",data:Z,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:T,centrifugeChannel:G,methods:{update:({value:Q})=>{Y(Q)},remove:()=>{localStorage.removeItem($),Y("")}},children:qU.jsx("input",{type:"hidden",id:U,name:U,value:X})})},w$=EH;var N$=I({name:"DeviceStorageCard",component:w$,metadata:{author:"PieData"}});var E=require("react");var BU=require("react/jsx-runtime"),CH=({data:Z,content:U})=>{let{useLoader:$,noReturn:H,returnType:z,useSocketioSupport:J,useCentrifugeSupport:T,useMittSupport:G,centrifugeChannel:X}=Z,Y=E.useContext(C),Q=E.useContext(y)??j,[q,V]=E.useState(!1),[B,W]=E.useState(null),D=E.useRef(U),O=E.useContext(h),A=E.useCallback((_)=>{if(_===null)V(!0);else if(V(!1),!H)D.current=_;if(!H)W(_)},[H]),w=E.useCallback((_)=>{D.current=_.content,W(_.content)},[]),K=E.useCallback((_)=>{if(_===null)V(!0);else if(V(!1),!H)for(let F of _)O?.emit(F.name,F.data)},[H,O]);if(E.useEffect(()=>{W(U),V(!1)},[U]),!B&&$)return Y;return BU.jsx(P,{card:"AjaxGroupCard",data:Z,methods:{changeContent:w},useSocketioSupport:J,useCentrifugeSupport:T,useMittSupport:G,centrifugeChannel:X,children:BU.jsx(Q,{uiConfig:B??D.current,setUiAjaxConfiguration:z==="events"?K:A})})},L$=CH;var R$=I({name:"AjaxGroupCard",component:L$,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var WU=require("react");var vZ=require("react/jsx-runtime"),yH=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,url:z,sx:J}=Z,T=WU.useContext(g),G=WU.useContext(y)??j;return vZ.jsx(P,{card:H,data:Z,children:vZ.jsx("div",{style:J,id:H,onClick:(Y)=>{if(z)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else T?.(z)},children:vZ.jsx(G,{setUiAjaxConfiguration:$,uiConfig:U})})})},j$=yH;var E$=I({name:"BoxCard",component:j$,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var C$=require("react");var hZ=require("react/jsx-runtime"),xH=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:H,sx:z}=Z,J=C$.useContext(y)??j;return hZ.jsx(P,{card:H,data:Z,children:hZ.jsx("div",{style:z,id:H,children:U.map((T,G)=>{return hZ.jsx(J,{uiConfig:T,setUiAjaxConfiguration:$},`children-${G}`)})})})},y$=xH;var x$=I({name:"OneOfCard",component:y$,metadata:{author:"Swarm.ing",description:"Different variants"}});var GZ=require("react"),YZ=require("@tanstack/react-query");var s=require("react");var dZ=require("react"),gZ=new Map,pZ=new Map;function uZ(Z,U){let $=`${Z}::${U}`,H=Z?gZ.get($):void 0,[z,J]=dZ.useState(H??null);return dZ.useEffect(()=>{if(!Z)return;if(gZ.has($)){J(gZ.get($));return}let T=pZ.get($);if(!T)T=fetch(Z+`api/support/${U}`,{method:"GET"}).then((X)=>X.json()).then((X)=>{return gZ.set($,X),pZ.delete($),X}).catch((X)=>{throw pZ.delete($),X}),pZ.set($,T);let G=!1;return T.then((X)=>{if(!G)J(X)}).catch(()=>{}),()=>{G=!0}},[Z,U,$]),z}function XZ(Z,U){if(U==="up")return{state:"up",signal:Z==="down"?"restored":null};return{state:"down",signal:Z==="up"?"lost":null}}var fH=({children:Z})=>{let U=s.useContext(v),$=AZ(),H=uZ($,"socketIO"),z=e(),J=ZZ(),T=s.useRef(z);T.current=z;let G=s.useRef(J);G.current=J;let X=s.useRef("initial"),Y=(Q)=>{if(N.isClient())N.setSid(Q.sid),SU(),console.log(`SocketIO initialized: ${N.readSid()}`)};return s.useEffect(()=>{if(!U||!H)return;let Q=()=>{let{state:V,signal:B}=XZ(X.current,"up");if(X.current=V,B==="restored")G.current?.("socketio");console.log("SocketIO connected")},q=(V)=>{if(console.log(`SocketIO disconnected: ${V}`),U.connect(),V==="io client disconnect")return;let{state:B,signal:W}=XZ(X.current,"down");if(X.current=B,W==="lost")T.current?.("socketio",V)};return U.on("pieinit",Y),U.on("connect",Q),U.on("disconnect",q),U.connect(),()=>{U.off("pieinit",Y),U.off("connect",Q),U.off("disconnect",q),U.disconnect()}},[U,H]),Z},cZ=fH;var r=require("react");var bH=({children:Z})=>{let U=r.useContext(m),$=AZ(),H=uZ($,"centrifuge"),z=e(),J=ZZ(),T=r.useRef(z);T.current=z;let G=r.useRef(J);G.current=J;let X=r.useRef("initial");return r.useEffect(()=>{if(!U||!H)return;let Y=(V)=>{let{state:B,signal:W}=XZ(X.current,"down");if(X.current=B,W==="lost")T.current?.("centrifuge",V)},Q=()=>{let{state:V,signal:B}=XZ(X.current,"up");if(X.current=V,B==="restored")G.current?.("centrifuge");console.log("Centrifuge connected")},q=(V)=>{console.log("Centrifuge disconnected:",V),Y(V)};return U.on("connecting",Y),U.on("connected",Q),U.on("disconnected",q),U.connect(),()=>{U.off("connecting",Y),U.off("connected",Q),U.off("disconnected",q),U.disconnect()}},[U,H]),Z},lZ=bH;var k$=require("axios-date-transformer");var b$=require("react/jsx-runtime");function f$(Z,U,$){if(!U)return $;let H=Z.replace(/^\//,""),z=U[H];if(!z)return $;return b$.jsx(xZ,{uiConfig:z})}var L=require("react/jsx-runtime"),kH=({location:Z,fallback:U,piecache:$,onError:H,queryOptions:z,disableGlobalForm:J})=>{let T=WZ(),G=wZ(),X=u(),Y=GZ.useMemo(()=>k$.createAxiosDateTransformer({baseURL:T||""}),[T]),Q=GZ.useMemo(()=>c(),[]),q=GZ.useMemo(()=>T?RZ(T):null,[T]),V=GZ.useMemo(()=>T?LZ(T,G):null,[T,G]),{data:B,isLoading:W,error:D}=YZ.useQuery({queryKey:["uiConfig",Z.pathname+Z.search,T],enabled:!!T,queryFn:async()=>{let A=new URLSearchParams(Z.search);A.set("__pieroot","web");let w="/api/content"+Z.pathname+"?"+A.toString();if(X)console.log("[PieRoot] Fetching UI configuration from:",w);let K=await Y.get(w,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(X)console.log("[PieRoot] Received UI configuration:",K.data);return K.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(A)=>Math.min(1000*2**A,30000),...z}),O=f$(Z.pathname,$,U);if(!T)return O??null;if(X)console.log("[PieRoot] Rendering with location:",Z),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!$);if(D){if(X)console.error("[PieRoot] Error fetching UI configuration:",D),console.error("[PieRoot] Error details:",{message:D.message,status:D.response?.status,data:D.response?.data});return H?.(D),O}if(W||!B){if(X)console.log("[PieRoot] Loading state:",{isLoading:W,hasUiConfiguration:!!B});return O}if(X)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L.jsx(h.Provider,{value:Q,children:L.jsx(v.Provider,{value:q,children:L.jsx(m.Provider,{value:V,children:L.jsx(C.Provider,{value:U??L.jsx(L.Fragment,{}),children:L.jsx(cZ,{children:L.jsx(lZ,{children:J?L.jsx(j,{uiConfig:B}):L.jsx("form",{id:"piedata_global_form",action:T+"api/process"+Z.pathname,method:"post",encType:"multipart/form-data",children:L.jsx(j,{uiConfig:B})})})})})})})})},SH=(Z)=>{let U=GZ.useMemo(()=>new YZ.QueryClient,[]),$=Z.queryClient??U;return L.jsx(g.Provider,{value:Z.onNavigate,children:L.jsx(a.Provider,{value:Z.config,children:L.jsx(o.Provider,{value:Z.onError,children:L.jsx(YZ.QueryClientProvider,{client:$,children:L.jsx(kH,{...Z})})})})})},oZ=SH;var qZ=require("react"),iZ=require("@tanstack/react-query");var R=require("react/jsx-runtime"),mH=({location:Z,fallback:U,children:$,disableGlobalForm:H})=>{let z=WZ(),J=wZ(),T=u(),G=qZ.useMemo(()=>c(),[]),X=qZ.useMemo(()=>z?RZ(z):null,[z]),Y=qZ.useMemo(()=>z?LZ(z,J):null,[z,J]);if(T)console.log("[PieRoot] Rendering with location:",Z),console.log("[PieRoot] API_SERVER:",z),console.log("[PieRoot] CENTRIFUGE_SERVER:",J),console.log("[PieRoot] Fallback provided:",!!U);return R.jsx(h.Provider,{value:G,children:R.jsx(v.Provider,{value:X,children:R.jsx(m.Provider,{value:Y,children:R.jsx(C.Provider,{value:U??R.jsx(R.Fragment,{}),children:R.jsx(cZ,{children:R.jsx(lZ,{children:H?$:R.jsx("form",{id:"piedata_global_form",action:z+"api/process"+Z.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},vH=(Z)=>{let[U]=qZ.useState(()=>new iZ.QueryClient),$=Z.queryClient??U;return R.jsx(g.Provider,{value:Z.onNavigate,children:R.jsx(a.Provider,{value:Z.config,children:R.jsx(o.Provider,{value:Z.onError,children:R.jsx(iZ.QueryClientProvider,{client:$,children:R.jsx(mH,{...Z})})})})})},S$=vH;var sZ=require("react");var QU=require("react/jsx-runtime"),hH=QU.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),gH=({apiServer:Z,pathname:U="/",search:$="",centrifugeServer:H,previewEvents:z=!1,fallback:J,enableRenderingLog:T=!1})=>{let G=Z??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"";sZ.useEffect(()=>{if(!z||!G||typeof window>"u"||typeof EventSource>"u")return;let Q=G.endsWith("/")?G:`${G}/`,q=new EventSource(`${Q}api/preview/events`),V=c();return q.onmessage=(B)=>{try{let W=JSON.parse(B.data);if(W&&typeof W.name==="string")V.emit(W.name,W.payload)}catch{}},()=>q.close()},[z,G]);let X=sZ.useMemo(()=>({apiServer:G,centrifugeServer:H,enableRenderingLog:T,pageProcessor:"web"}),[G,H,T]);return QU.jsx(oZ,{location:{pathname:U,search:$},config:X,fallback:J??hH,onNavigate:(Q)=>{if(typeof window<"u")window.history.pushState(null,"",Q)}})},m$=gH;var v$=require("clsx"),h$=require("tailwind-merge");function g$(...Z){return h$.twMerge(v$.clsx(Z))}var p$=()=>{hU(),N.submitGlobalForm()};var d$=(Z,U)=>`${Z}${NZ}${U}`;
|