@swarm.ing/pieui 2.1.7 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +2 -2
- package/dist/index.js +2 -2
- package/dist/max/index.esm.js +1 -1
- package/dist/max/index.js +1 -1
- package/dist/native/index.esm.js +2 -2
- package/dist/native/index.js +2 -2
- package/dist/providers/CentrifugeIOInitProvider.d.ts.map +1 -1
- package/dist/providers/SocketIOInitProvider.d.ts.map +1 -1
- package/dist/server/card.d.ts +28 -0
- package/dist/server/card.d.ts.map +1 -0
- package/dist/server/cards/AjaxGroupCard.d.ts +8 -0
- package/dist/server/cards/AjaxGroupCard.d.ts.map +1 -0
- package/dist/server/cards/HTMLEmbedCard.d.ts +6 -0
- package/dist/server/cards/HTMLEmbedCard.d.ts.map +1 -0
- package/dist/server/cards/HiddenCard.d.ts +6 -0
- package/dist/server/cards/HiddenCard.d.ts.map +1 -0
- package/dist/server/cards/OneOfCard.d.ts +8 -0
- package/dist/server/cards/OneOfCard.d.ts.map +1 -0
- package/dist/server/cards/UnionCard.d.ts +8 -0
- package/dist/server/cards/UnionCard.d.ts.map +1 -0
- package/dist/server/cards/index.d.ts +6 -0
- package/dist/server/cards/index.d.ts.map +1 -0
- package/dist/server/form.d.ts +5 -0
- package/dist/server/form.d.ts.map +1 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.esm.js +382 -0
- package/dist/server/index.js +427 -0
- package/dist/server/page.d.ts +26 -0
- package/dist/server/page.d.ts.map +1 -0
- package/dist/server/realtime.d.ts +13 -0
- package/dist/server/realtime.d.ts.map +1 -0
- package/dist/server/types.d.ts +28 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/web.d.ts +23 -0
- package/dist/server/web.d.ts.map +1 -0
- package/dist/telegram/index.esm.js +1 -1
- package/dist/telegram/index.js +1 -1
- package/dist/tests/linkStatus.test.d.ts +2 -0
- package/dist/tests/linkStatus.test.d.ts.map +1 -0
- package/dist/tests/server/card-fill.test.d.ts +2 -0
- package/dist/tests/server/card-fill.test.d.ts.map +1 -0
- package/dist/tests/server/card-generate.test.d.ts +2 -0
- package/dist/tests/server/card-generate.test.d.ts.map +1 -0
- package/dist/tests/server/cards.test.d.ts +2 -0
- package/dist/tests/server/cards.test.d.ts.map +1 -0
- package/dist/tests/server/e2e.test.d.ts +2 -0
- package/dist/tests/server/e2e.test.d.ts.map +1 -0
- package/dist/tests/server/entry.test.d.ts +2 -0
- package/dist/tests/server/entry.test.d.ts.map +1 -0
- package/dist/tests/server/form.test.d.ts +2 -0
- package/dist/tests/server/form.test.d.ts.map +1 -0
- package/dist/tests/server/page.test.d.ts +2 -0
- package/dist/tests/server/page.test.d.ts.map +1 -0
- package/dist/tests/server/realtime.test.d.ts +2 -0
- package/dist/tests/server/realtime.test.d.ts.map +1 -0
- package/dist/tests/server/web-ajax.test.d.ts +2 -0
- package/dist/tests/server/web-ajax.test.d.ts.map +1 -0
- package/dist/tests/server/web-content.test.d.ts +2 -0
- package/dist/tests/server/web-content.test.d.ts.map +1 -0
- package/dist/tests/server/web-process.test.d.ts +2 -0
- package/dist/tests/server/web-process.test.d.ts.map +1 -0
- package/dist/tests/server/web-token.test.d.ts +2 -0
- package/dist/tests/server/web-token.test.d.ts.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/util/linkStatus.d.ts +33 -0
- package/dist/util/linkStatus.d.ts.map +1 -0
- package/dist/util/pieConfig.d.ts +11 -0
- package/dist/util/pieConfig.d.ts.map +1 -1
- package/package.json +28 -3
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useContext as S,useEffect as g,useRef as TU}from"react";import{createContext as NU,useContext as kU}from"react";var b=globalThis,X=(U,f)=>{let T=Symbol.for(U);if(!(T in b))b[T]=f();return b[T]};var yU=X("@swarm.ing/pieui:context:pieConfig",()=>NU(null)),jU=()=>{let U=kU(yU);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U};var N=()=>{let{enableRenderingLog:U}=jU();return U},t=N;import{createContext as mU}from"react";import{Centrifuge as XI}from"centrifuge";var YI=X("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var pU=X("@swarm.ing/pieui:context:centrifuge",()=>mU(null)),e=pU;import{io as KI}from"socket.io-client";import{createContext as xU}from"react";var RI=X("@swarm.ing/pieui:socket-cache",()=>new Map);var bU=X("@swarm.ing/pieui:context:socket",()=>xU(null)),UU=bU;import kI from"mitt";import{createContext as SU,useCallback as mI,useContext as pI}from"react";var gU=X("@swarm.ing/pieui:context:mitt",()=>SU(null));var y=gU;function fU(U){return U.wasRecovering===!0&&U.recovered===!1}function IU(U){return U.recoverable===!1}function oU(U,f,T){let o=U.getSubscription(f);if(o)return{subscription:o,createdHere:!1};return{subscription:U.newSubscription(f,T),createdHere:!0}}import{jsx as dU,jsxs as rU,Fragment as lU}from"react/jsx-runtime";var vU=({card:U,data:f,children:T,useSocketioSupport:o=!1,useCentrifugeSupport:z=!1,useMittSupport:I=!1,centrifugeChannel:Z=void 0,methods:O=void 0,stored:B=void 0,onResync:H=void 0})=>{let q=t(),P=TU(O);P.current=O;let Q=TU(H);if(Q.current=H,q)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",f),console.log("[PieCard] Component name:",f?.name),console.log("[PieCard] Real-time support:",{socketio:o,centrifuge:z,mitt:I,centrifugeChannel:Z}),console.log("[PieCard] Methods:",O?Object.keys(O):"none"),console.log("[PieCard] Has children:",!!T);let $=S(UU),L=S(e),w=S(y);if(g(()=>{if(!$||!o||!P.current||!f.name){if(q&&o)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!$,useSocketioSupport:o,hasMethods:!!P.current,hasDataName:!!f?.name});return}let K=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}`;if(q)console.log(`[PieCard] Socket.IO registering event: ${G}`);let A=(_)=>{P.current?.[J]?.(_)};return $.on(G,A),[G,A]});return()=>{K.forEach(([J,G])=>{if(q)console.log(`[PieCard] Socket.IO unregistering event: ${J}`);$.off(J,G)})}},[$,f.name,o]),g(()=>{if(!L||!z||!Z||!f.name){if(q&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!P.current,hasDataName:!!f?.name});return}let K=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}_${Z}`;if(q)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let{subscription:A,createdHere:_}=oU(L,G,{recoverable:!0,positioned:!0}),s=(E)=>{if(q)console.log(`[PieCard] Centrifuge received data on ${G}:`,E.data);P.current?.[J]?.(E.data)},a=(E)=>{if(IU(E))console.warn(`[PieCard] Centrifuge channel ${G} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(fU(E)){if(q)console.log(`[PieCard] Centrifuge recovery gap on ${G}; requesting resync`);Q.current?.({channel:G,reason:"gap"})}};return A.on("publication",s),A.on("subscribed",a),A.subscribe(),{subscription:A,createdHere:_,onPublication:s,onSubscribed:a}});return()=>{K.forEach(({subscription:J,createdHere:G,onPublication:A,onSubscribed:_})=>{if(q)console.log("[PieCard] Centrifuge unsubscribing from channel");if(J.off("publication",A),J.off("subscribed",_),G)J.unsubscribe(),L.removeSubscription(J)})}},[L,Z,f.name,z]),g(()=>{if(!w||!I||!f.name){if(q&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:I,hasMethods:!!P.current,hasDataName:!!f?.name});return}let V=Object.keys(P.current??{}),K={};return V.forEach((J)=>{let G=`pie${J}_${f.name}`,A=(_)=>{if(q)console.log(`[PieCard] Mitt registering event: ${G}`);P.current?.[J]?.(_)};K[G]=A,w.on(G,A)}),()=>{Object.entries(K).forEach(([J,G])=>{if(q)console.log(`[PieCard] Mitt unregistering event: ${J}`);w.off(J,G)})}},[w,f.name,I]),q)console.log("[PieCard] Rendering complete, returning children");if(B!==void 0)return rU(lU,{children:[dU("input",{type:"hidden",name:f.name,value:JSON.stringify(B)}),T]});return T},D=vU;import{lazy as uU}from"react";var k=new Map;function cU(U,f){return f.catch(()=>{if(k.get(U)===f)k.delete(U)}),k.set(U,f),f}function zU(U,f){return uU(()=>{if(k.has(f))return k.get(f);return cU(f,U().then((T)=>T))})}var ZU=X("@swarm.ing/pieui:component-registry",()=>new Map),hU=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let f={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!f.component&&f.loader)f.component=zU(f.loader,U.name),f.isLazy=!0;return f};function F(U){let f=hU(U);return ZU.set(f.name,f),f.component}var j=(U)=>{return ZU.get(U)};import{useContext as LU,memo as zf}from"react";import{createContext as iU}from"react";import{jsx as aU,Fragment as sU}from"react/jsx-runtime";var nU=X("@swarm.ing/pieui:context:fallback",()=>iU(aU(sU,{}))),C=nU;import{createContext as tU}from"react";var eU=X("@swarm.ing/pieui:context:lazyError",()=>tU(void 0)),m=eU;import{Component as Uf,Suspense as ff}from"react";import{jsx as Tf}from"react/jsx-runtime";var If=2,of=400;class M extends Uf{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<If){let f=of*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((T)=>({failed:!1,attempt:T.attempt+1}))},f)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return Tf(ff,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as v}from"react/jsx-runtime";function Zf({uiConfig:U,setUiAjaxConfiguration:f}){let T=LU(C),o=LU(m),z=N();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!f);let I=j(U.card);if(!I?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return T}if(z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let Z=I.component,O=v(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f});if(I.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return v(M,{name:I.name,fallback:I.fallback?v(I.fallback,{}):T,onError:o,children:O})}if(z)console.log("[UI] Rendering component directly:",I.name);return O}var W=zf(Zf);import{useContext as OU}from"react";import{createContext as Lf}from"react";var Of=X("@swarm.ing/pieui:context:uiRenderer",()=>Lf(null)),Y=Of;import{jsx as p}from"react/jsx-runtime";function PU({uiConfig:U,setUiAjaxConfiguration:f}){let T=OU(C),o=OU(m),z=N();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!f);let I=j(U.card);if(!I?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return T}if(z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(z)console.log("[UILoading] Rendering fallback for:",I.name);let B=I.fallback;return p(B,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let Z=I.component,O=p(Y.Provider,{value:PU,children:p(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f})});if(I.isLazy)return p(M,{name:I.name,fallback:T,onError:o,children:O});return O}var Pf=PU;import{useContext as Af}from"react";import{jsx as l}from"react/jsx-runtime";var Bf=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o,sx:z}=U,I=Af(Y)??W;return l(D,{card:o,data:U,children:l("div",{style:z,id:o,children:f.map((Z,O)=>{return l(I,{uiConfig:Z,setUiAjaxConfiguration:T},`children-${O}`)})})})},AU=Bf;var Hf=F({name:"SequenceCard",component:AU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as $f}from"react";import{jsx as BU}from"react/jsx-runtime";var qf=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o}=U,z=$f(Y)??W;return BU(D,{card:o,data:U,children:f.map((I,Z)=>{return BU(z,{uiConfig:I,setUiAjaxConfiguration:T},`children-${Z}`)})})},HU=qf;var Gf=F({name:"UnionCard",component:HU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as Qf,useState as Xf}from"react";import wf from"html-react-parser";import{useCallback as x,useEffect as Jf,useRef as d,useState as Ff}from"react";function Df(){let U=new AudioContext,f=U.createOscillator(),T=f.connect(U.createMediaStreamDestination());f.start();let o=T.stream.getAudioTracks()[0];return o.enabled=!1,o}function r(U=null,f){let[T,o]=Ff(!1),z=d(null),I=d(null),Z=d(null),O=x(async(P,Q=!0)=>{if(z.current)B();let $=new RTCPeerConnection;if($.onconnectionstatechange=()=>{if($.connectionState==="connected")o(!0);else if(["disconnected","failed","closed"].includes($.connectionState))o(!1)},$.ontrack=(A)=>{if(U)U.srcObject=A.streams[0]},Q){let A=await navigator.mediaDevices.getUserMedia({audio:!0});$.addTrack(A.getTracks()[0],A)}else{let A=Df();$.addTrack(A)}let L=$.createDataChannel("oai-events");I.current=L,Z.current=new Promise((A)=>{L.addEventListener("open",()=>{A()})});let w=await $.createOffer();await $.setLocalDescription(w);let G=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:w.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await $.setRemoteDescription({type:"answer",sdp:G}),z.current=$,await Z.current},[U]),B=x(()=>{let P=I.current;if(P)P.close();z.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),z.current?.close(),o(!1),z.current=null,I.current=null,Z.current=null},[U]),H=x((P)=>{let Q=I.current;if(!Q){console.error("Data channel is not ready",P);return}let $=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),Q.send(JSON.stringify(P)),!P.timestamp)P.timestamp=$;f?.(P)},[f,U]),q=x((P)=>{if(!I.current){console.error("Data channel is not ready");return}let $=()=>{H({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),H({type:"response.create"})};if(Z.current)Z.current.then($);else $()},[f,U]);return Jf(()=>{let P=I.current;if(!P)return;let Q=($)=>{let L=JSON.parse($.data);if(!L.timestamp)L.timestamp=new Date().toLocaleTimeString();f?.(L)};return P.addEventListener("message",Q),()=>{P.removeEventListener("message",Q)}},[f,U]),{isSessionActive:T,startSession:O,stopSession:B,sendTextMessage:q}}import{jsx as Wf}from"react/jsx-runtime";var Yf=({data:U})=>{let{html:f,useSocketioSupport:T,useCentrifugeSupport:o,useMittSupport:z,centrifugeChannel:I}=U,[Z,O]=Xf(f),{isSessionActive:B,startSession:H,sendTextMessage:q}=r(null,(L)=>{if(console.log(L.type,L.type==="response.output_text.delta"&&L.delta),L.type==="response.output_text.delta"&&L.delta)O((w)=>w+L.delta)});return Qf(()=>{O(f)},[f]),Wf(D,{card:"HTMLEmbedCard",data:U,methods:{update:(L)=>{O(L.value)},generateUsingAI:async(L)=>{try{if(!B&&L.token)await H(L.token,!1);q(L.prompt)}catch(w){console.error("Failed to generate using AI",w)}},initializeAI:async(L)=>{if(!B&&L.token)await H(L.token,!1)}},useCentrifugeSupport:o,useSocketioSupport:T,useMittSupport:z,centrifugeChannel:I,children:wf(Z)})},$U=Yf;var _f=F({name:"HTMLEmbedCard",component:$U,metadata:{author:"Swarm.ing"}});import{useEffect as Kf,useState as Cf}from"react";import{jsx as qU}from"react/jsx-runtime";var Vf=({data:U})=>{let{name:f,value:T,useSocketioSupport:o,useCentrifugeSupport:z,useMittSupport:I,centrifugeChannel:Z}=U,[O,B]=Cf(T);return Kf(()=>{B(T)},[T]),qU(D,{card:"HiddenCard",data:U,useSocketioSupport:o,useCentrifugeSupport:z,useMittSupport:I,centrifugeChannel:Z,methods:{update:({value:H})=>{B(H)}},children:qU("input",{type:"hidden",id:f,name:f,value:O})})},GU=Vf;var Mf=F({name:"HiddenCard",component:GU,metadata:{author:"Swarm.ing"}});import{useContext as JU,useEffect as Nf}from"react";import{createContext as Rf}from"react";var Ef=X("@swarm.ing/pieui:context:navigate",()=>Rf(void 0)),R=Ef;import{jsx as jf,Fragment as yf}from"react/jsx-runtime";var kf=({data:U})=>{let{url:f}=U,T=JU(R),o=JU(C);return Nf(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(f))window.location.href=f;else T?.(f)},[f,T]),jf(yf,{children:o})},FU=kf;var mf=F({name:"AutoRedirectCard",component:FU,metadata:{author:"Swarm.ing"}});import{Bounce as pf,Slide as xf,Zoom as bf,Flip as Sf}from"react-toastify";import{toast as gf,ToastContainer as vf}from"react-toastify";import{useContext as lf,useMemo as df,useRef as rf}from"react";import{jsx as u,Fragment as af}from"react/jsx-runtime";var uf={bounce:pf,slide:xf,zoom:bf,flip:Sf},cf=(U)=>{let f={...U,type:U.alertType,transition:U.transition?uf[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};gf(U.message,f)},hf=(U)=>{console.log("Log event",U)},nf=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let f=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(o){console.error("[IOEventsCard] Failed to show notification",o)}},T=window.Notification.permission;if(T==="granted"){f();return}if(T==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((o)=>{if(o==="granted")f()})},sf=({data:U})=>{let{useCentrifugeSupport:f,useSocketioSupport:T,useMittSupport:o,centrifugeChannel:z}=U,I=lf(R),Z=rf(I);Z.current=I;let O=df(()=>({alert:cf,log:hf,push:nf,redirect:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()},reload:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()}}),[]);return u(af,{children:u(D,{card:"IOEventsCard",data:U,useCentrifugeSupport:f,useSocketioSupport:T,useMittSupport:o,centrifugeChannel:z,methods:O,children:u(vf,{})})})},DU=sf;var tf=F({name:"IOEventsCard",component:DU,metadata:{author:"Swarm.ing"}});import{useEffect as QU,useState as ef}from"react";import{jsx as XU}from"react/jsx-runtime";var UI=({data:U})=>{let{name:f,key:T,value:o,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=ef(o);return QU(()=>{H(o)},[o]),QU(()=>{if(typeof window>"u")return;sessionStorage.setItem(T,B)},[T,B]),XU(D,{card:"SessionStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{sessionStorage.removeItem(T),H("")}},children:XU("input",{type:"hidden",id:f,name:f,value:B})})},wU=UI;var fI=F({name:"SessionStorageCard",component:wU,metadata:{author:"PieData"}});import{useEffect as YU,useState as II}from"react";import{jsx as WU}from"react/jsx-runtime";var oI=({data:U})=>{let{name:f,key:T,value:o,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=II(o);return YU(()=>{H(o)},[o]),YU(()=>{if(typeof window>"u")return;localStorage.setItem(T,B)},[T,B]),WU(D,{card:"DeviceStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{localStorage.removeItem(T),H("")}},children:WU("input",{type:"hidden",id:f,name:f,value:B})})},_U=oI;var TI=F({name:"DeviceStorageCard",component:_U,metadata:{author:"PieData"}});import{useCallback as c,useContext as h,useEffect as zI,useRef as ZI,useState as KU}from"react";import{jsx as CU}from"react/jsx-runtime";var LI=({data:U,content:f})=>{let{useLoader:T,noReturn:o,returnType:z,useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B}=U,H=h(C),q=h(Y)??W,[P,Q]=KU(!1),[$,L]=KU(null),w=ZI(f),V=h(y),K=c((A)=>{if(A===null)Q(!0);else if(Q(!1),!o)w.current=A;if(!o)L(A)},[o]),J=c((A)=>{w.current=A.content,L(A.content)},[]),G=c((A)=>{if(A===null)Q(!0);else if(Q(!1),!o)for(let _ of A)V?.emit(_.name,_.data)},[o,V]);if(zI(()=>{L(f),Q(!1)},[f]),!$&&T)return H;return CU(D,{card:"AjaxGroupCard",data:U,methods:{changeContent:J},useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B,children:CU(q,{uiConfig:$??w.current,setUiAjaxConfiguration:z==="events"?G:K})})},VU=LI;var OI=F({name:"AjaxGroupCard",component:VU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as MU}from"react";import{jsx as i}from"react/jsx-runtime";var PI=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o,url:z,sx:I}=U,Z=MU(R),O=MU(Y)??W;return i(D,{card:o,data:U,children:i("div",{style:I,id:o,onClick:(H)=>{if(z)if(H.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else Z?.(z)},children:i(O,{setUiAjaxConfiguration:T,uiConfig:f})})})},RU=PI;var AI=F({name:"BoxCard",component:RU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as BI}from"react";import{jsx as n}from"react/jsx-runtime";var HI=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o,sx:z}=U,I=BI(Y)??W;return n(D,{card:o,data:U,children:n("div",{style:z,id:o,children:f.map((Z,O)=>{return n(I,{uiConfig:Z,setUiAjaxConfiguration:T},`children-${O}`)})})})},EU=HI;var $I=F({name:"OneOfCard",component:EU,metadata:{author:"Swarm.ing",description:"Different variants"}});export{Gf as UnionCard,Pf as UILoading,W as UI,fI as SessionStorageCard,Hf as SequenceCard,D as PieCard,$I as OneOfCard,tf as IOEventsCard,Mf as HiddenCard,_f as HTMLEmbedCard,TI as DeviceStorageCard,AI as BoxCard,mf as AutoRedirectCard,OI as AjaxGroupCard};
|
|
2
|
+
import{useContext as S,useEffect as g,useRef as oU}from"react";import{createContext as NU,useContext as yU}from"react";var b=globalThis,X=(U,f)=>{let o=Symbol.for(U);if(!(o in b))b[o]=f();return b[o]};var jU=X("@swarm.ing/pieui:context:pieConfig",()=>NU(null)),kU=()=>{let U=yU(jU);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U};var N=()=>{let{enableRenderingLog:U}=kU();return U},t=N;import{createContext as mU}from"react";import{Centrifuge as XI}from"centrifuge";var YI=X("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var pU=X("@swarm.ing/pieui:context:centrifuge",()=>mU(null)),e=pU;import{io as KI}from"socket.io-client";import{createContext as xU}from"react";var RI=X("@swarm.ing/pieui:socket-cache",()=>new Map);var bU=X("@swarm.ing/pieui:context:socket",()=>xU(null)),UU=bU;import yI from"mitt";import{createContext as SU,useCallback as mI,useContext as pI}from"react";var gU=X("@swarm.ing/pieui:context:mitt",()=>SU(null));var j=gU;function fU(U){return U.wasRecovering===!0&&U.recovered===!1}function IU(U){return U.recoverable===!1}function TU(U,f,o){let T=U.getSubscription(f);if(T)return{subscription:T,createdHere:!1};return{subscription:U.newSubscription(f,o),createdHere:!0}}import{jsx as dU,jsxs as rU,Fragment as lU}from"react/jsx-runtime";var vU=({card:U,data:f,children:o,useSocketioSupport:T=!1,useCentrifugeSupport:z=!1,useMittSupport:I=!1,centrifugeChannel:Z=void 0,methods:A=void 0,stored:P=void 0,onResync:$=void 0})=>{let L=t(),B=oU(A);B.current=A;let Q=oU($);if(Q.current=$,L)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",f),console.log("[PieCard] Component name:",f?.name),console.log("[PieCard] Real-time support:",{socketio:T,centrifuge:z,mitt:I,centrifugeChannel:Z}),console.log("[PieCard] Methods:",A?Object.keys(A):"none"),console.log("[PieCard] Has children:",!!o);let q=S(UU),O=S(e),w=S(j);if(g(()=>{if(!q||!T||!B.current||!f.name){if(L&&T)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!q,useSocketioSupport:T,hasMethods:!!B.current,hasDataName:!!f?.name});return}let K=Object.keys(B.current??{}).map((J)=>{let G=`pie${J}_${f.name}`;if(L)console.log(`[PieCard] Socket.IO registering event: ${G}`);let H=(_)=>{B.current?.[J]?.(_)};return q.on(G,H),[G,H]});return()=>{K.forEach(([J,G])=>{if(L)console.log(`[PieCard] Socket.IO unregistering event: ${J}`);q.off(J,G)})}},[q,f.name,T]),g(()=>{if(!O||!z||!Z||!f.name){if(L&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!B.current,hasDataName:!!f?.name});return}let K=Object.keys(B.current??{}).map((J)=>{let G=`pie${J}_${f.name}_${Z}`;if(L)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let{subscription:H,createdHere:_}=TU(O,G,{recoverable:!0,positioned:!0}),s=(E)=>{if(L)console.log(`[PieCard] Centrifuge received data on ${G}:`,E.data);B.current?.[J]?.(E.data)},a=(E)=>{if(IU(E))console.warn(`[PieCard] Centrifuge channel ${G} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(fU(E)){if(L)console.log(`[PieCard] Centrifuge recovery gap on ${G}; requesting resync`);Q.current?.({channel:G,reason:"gap"})}};return H.on("publication",s),H.on("subscribed",a),H.subscribe(),{subscription:H,createdHere:_,onPublication:s,onSubscribed:a}});return()=>{K.forEach(({subscription:J,createdHere:G,onPublication:H,onSubscribed:_})=>{if(L)console.log("[PieCard] Centrifuge unsubscribing from channel");if(J.off("publication",H),J.off("subscribed",_),G)J.unsubscribe(),O.removeSubscription(J)})}},[O,Z,f.name,z]),g(()=>{if(!w||!I||!f.name){if(L&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:I,hasMethods:!!B.current,hasDataName:!!f?.name});return}let C=Object.keys(B.current??{}),K={};return C.forEach((J)=>{let G=`pie${J}_${f.name}`,H=(_)=>{if(L)console.log(`[PieCard] Mitt registering event: ${G}`);B.current?.[J]?.(_)};K[G]=H,w.on(G,H)}),()=>{Object.entries(K).forEach(([J,G])=>{if(L)console.log(`[PieCard] Mitt unregistering event: ${J}`);w.off(J,G)})}},[w,f.name,I]),L)console.log("[PieCard] Rendering complete, returning children");if(P!==void 0)return rU(lU,{children:[dU("input",{type:"hidden",name:f.name,value:JSON.stringify(P)}),o]});return o},D=vU;import{lazy as uU}from"react";var y=new Map;function cU(U,f){return f.catch(()=>{if(y.get(U)===f)y.delete(U)}),y.set(U,f),f}function zU(U,f){return uU(()=>{if(y.has(f))return y.get(f);return cU(f,U().then((o)=>o))})}var ZU=X("@swarm.ing/pieui:component-registry",()=>new Map),hU=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let f={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!f.component&&f.loader)f.component=zU(f.loader,U.name),f.isLazy=!0;return f};function F(U){let f=hU(U);return ZU.set(f.name,f),f.component}var k=(U)=>{return ZU.get(U)};import{useContext as OU,memo as zf}from"react";import{createContext as iU}from"react";import{jsx as aU,Fragment as sU}from"react/jsx-runtime";var nU=X("@swarm.ing/pieui:context:fallback",()=>iU(aU(sU,{}))),V=nU;import{createContext as tU}from"react";var eU=X("@swarm.ing/pieui:context:lazyError",()=>tU(void 0)),m=eU;import{Component as Uf,Suspense as ff}from"react";import{jsx as of}from"react/jsx-runtime";var If=2,Tf=400;class M extends Uf{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<If){let f=Tf*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((o)=>({failed:!1,attempt:o.attempt+1}))},f)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return of(ff,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as v}from"react/jsx-runtime";function Zf({uiConfig:U,setUiAjaxConfiguration:f}){let o=OU(V),T=OU(m),z=N();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!f);let I=k(U.card);if(!I?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return o}if(z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let Z=I.component,A=v(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f});if(I.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return v(M,{name:I.name,fallback:I.fallback?v(I.fallback,{}):o,onError:T,children:A})}if(z)console.log("[UI] Rendering component directly:",I.name);return A}var W=zf(Zf);import{useContext as AU}from"react";import{createContext as Of}from"react";var Af=X("@swarm.ing/pieui:context:uiRenderer",()=>Of(null)),Y=Af;import{jsx as p}from"react/jsx-runtime";function BU({uiConfig:U,setUiAjaxConfiguration:f}){let o=AU(V),T=AU(m),z=N();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!f);let I=k(U.card);if(!I?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return o}if(z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(z)console.log("[UILoading] Rendering fallback for:",I.name);let P=I.fallback;return p(P,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let Z=I.component,A=p(Y.Provider,{value:BU,children:p(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f})});if(I.isLazy)return p(M,{name:I.name,fallback:o,onError:T,children:A});return A}var Bf=BU;import{useContext as Hf}from"react";import{jsx as l}from"react/jsx-runtime";var Pf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:T,sx:z}=U,I=Hf(Y)??W;return l(D,{card:T,data:U,children:l("div",{style:z,id:T,children:f.map((Z,A)=>{return l(I,{uiConfig:Z,setUiAjaxConfiguration:o},`children-${A}`)})})})},HU=Pf;var $f=F({name:"SequenceCard",component:HU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as qf}from"react";import{jsx as PU}from"react/jsx-runtime";var Lf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:T}=U,z=qf(Y)??W;return PU(D,{card:T,data:U,children:f.map((I,Z)=>{return PU(z,{uiConfig:I,setUiAjaxConfiguration:o},`children-${Z}`)})})},$U=Lf;var Gf=F({name:"UnionCard",component:$U,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as Qf,useState as Xf}from"react";import wf from"html-react-parser";import{useCallback as x,useEffect as Jf,useRef as d,useState as Ff}from"react";function Df(){let U=new AudioContext,f=U.createOscillator(),o=f.connect(U.createMediaStreamDestination());f.start();let T=o.stream.getAudioTracks()[0];return T.enabled=!1,T}function r(U=null,f){let[o,T]=Ff(!1),z=d(null),I=d(null),Z=d(null),A=x(async(B,Q=!0)=>{if(z.current)P();let q=new RTCPeerConnection;if(q.onconnectionstatechange=()=>{if(q.connectionState==="connected")T(!0);else if(["disconnected","failed","closed"].includes(q.connectionState))T(!1)},q.ontrack=(H)=>{if(U)U.srcObject=H.streams[0]},Q){let H=await navigator.mediaDevices.getUserMedia({audio:!0});q.addTrack(H.getTracks()[0],H)}else{let H=Df();q.addTrack(H)}let O=q.createDataChannel("oai-events");I.current=O,Z.current=new Promise((H)=>{O.addEventListener("open",()=>{H()})});let w=await q.createOffer();await q.setLocalDescription(w);let G=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:w.sdp,headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/sdp"}})).text();await q.setRemoteDescription({type:"answer",sdp:G}),z.current=q,await Z.current},[U]),P=x(()=>{let B=I.current;if(B)B.close();z.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),z.current?.close(),T(!1),z.current=null,I.current=null,Z.current=null},[U]),$=x((B)=>{let Q=I.current;if(!Q){console.error("Data channel is not ready",B);return}let q=new Date().toLocaleTimeString();if(B.event_id=B.event_id||crypto.randomUUID(),Q.send(JSON.stringify(B)),!B.timestamp)B.timestamp=q;f?.(B)},[f,U]),L=x((B)=>{if(!I.current){console.error("Data channel is not ready");return}let q=()=>{$({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:B}]}}),$({type:"response.create"})};if(Z.current)Z.current.then(q);else q()},[f,U]);return Jf(()=>{let B=I.current;if(!B)return;let Q=(q)=>{let O=JSON.parse(q.data);if(!O.timestamp)O.timestamp=new Date().toLocaleTimeString();f?.(O)};return B.addEventListener("message",Q),()=>{B.removeEventListener("message",Q)}},[f,U]),{isSessionActive:o,startSession:A,stopSession:P,sendTextMessage:L}}import{jsx as Wf}from"react/jsx-runtime";var Yf=({data:U})=>{let{html:f,useSocketioSupport:o,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:I}=U,[Z,A]=Xf(f),{isSessionActive:P,startSession:$,sendTextMessage:L}=r(null,(O)=>{if(console.log(O.type,O.type==="response.output_text.delta"&&O.delta),O.type==="response.output_text.delta"&&O.delta)A((w)=>w+O.delta)});return Qf(()=>{A(f)},[f]),Wf(D,{card:"HTMLEmbedCard",data:U,methods:{update:(O)=>{A(O.value)},generateUsingAI:async(O)=>{try{if(!P&&O.token)await $(O.token,!1);L(O.prompt)}catch(w){console.error("Failed to generate using AI",w)}},initializeAI:async(O)=>{if(!P&&O.token)await $(O.token,!1)}},useCentrifugeSupport:T,useSocketioSupport:o,useMittSupport:z,centrifugeChannel:I,children:wf(Z)})},qU=Yf;var _f=F({name:"HTMLEmbedCard",component:qU,metadata:{author:"Swarm.ing"}});import{useEffect as Kf,useState as Vf}from"react";import{jsx as LU}from"react/jsx-runtime";var Cf=({data:U})=>{let{name:f,value:o,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:I,centrifugeChannel:Z}=U,[A,P]=Vf(o);return Kf(()=>{P(o)},[o]),LU(D,{card:"HiddenCard",data:U,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:I,centrifugeChannel:Z,methods:{update:({value:$})=>{P($)}},children:LU("input",{type:"hidden",id:f,name:f,value:A})})},GU=Cf;var Mf=F({name:"HiddenCard",component:GU,metadata:{author:"Swarm.ing"}});import{useContext as JU,useEffect as Nf}from"react";import{createContext as Rf}from"react";var Ef=X("@swarm.ing/pieui:context:navigate",()=>Rf(void 0)),R=Ef;import{jsx as kf,Fragment as jf}from"react/jsx-runtime";var yf=({data:U})=>{let{url:f}=U,o=JU(R),T=JU(V);return Nf(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(f))window.location.href=f;else o?.(f)},[f,o]),kf(jf,{children:T})},FU=yf;var mf=F({name:"AutoRedirectCard",component:FU,metadata:{author:"Swarm.ing"}});import{Bounce as pf,Slide as xf,Zoom as bf,Flip as Sf}from"react-toastify";import{toast as gf,ToastContainer as vf}from"react-toastify";import{useContext as lf,useMemo as df,useRef as rf}from"react";import{jsx as u,Fragment as af}from"react/jsx-runtime";var uf={bounce:pf,slide:xf,zoom:bf,flip:Sf},cf=(U)=>{let f={...U,type:U.alertType,transition:U.transition?uf[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};gf(U.message,f)},hf=(U)=>{console.log("Log event",U)},nf=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let f=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(T){console.error("[IOEventsCard] Failed to show notification",T)}},o=window.Notification.permission;if(o==="granted"){f();return}if(o==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((T)=>{if(T==="granted")f()})},sf=({data:U})=>{let{useCentrifugeSupport:f,useSocketioSupport:o,useMittSupport:T,centrifugeChannel:z}=U,I=lf(R),Z=rf(I);Z.current=I;let A=df(()=>({alert:cf,log:hf,push:nf,redirect:(P)=>{if(P.to){let $=P.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($))window.location.href=$;else Z.current?.($)}else window.location.reload()},reload:(P)=>{if(P.to){let $=P.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($))window.location.href=$;else Z.current?.($)}else window.location.reload()}}),[]);return u(af,{children:u(D,{card:"IOEventsCard",data:U,useCentrifugeSupport:f,useSocketioSupport:o,useMittSupport:T,centrifugeChannel:z,methods:A,children:u(vf,{})})})},DU=sf;var tf=F({name:"IOEventsCard",component:DU,metadata:{author:"Swarm.ing"}});import{useEffect as QU,useState as ef}from"react";import{jsx as XU}from"react/jsx-runtime";var UI=({data:U})=>{let{name:f,key:o,value:T,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:A}=U,[P,$]=ef(T);return QU(()=>{$(T)},[T]),QU(()=>{if(typeof window>"u")return;sessionStorage.setItem(o,P)},[o,P]),XU(D,{card:"SessionStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:A,methods:{update:({value:L})=>{$(L)},remove:()=>{sessionStorage.removeItem(o),$("")}},children:XU("input",{type:"hidden",id:f,name:f,value:P})})},wU=UI;var fI=F({name:"SessionStorageCard",component:wU,metadata:{author:"PieData"}});import{useEffect as YU,useState as II}from"react";import{jsx as WU}from"react/jsx-runtime";var TI=({data:U})=>{let{name:f,key:o,value:T,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:A}=U,[P,$]=II(T);return YU(()=>{$(T)},[T]),YU(()=>{if(typeof window>"u")return;localStorage.setItem(o,P)},[o,P]),WU(D,{card:"DeviceStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:A,methods:{update:({value:L})=>{$(L)},remove:()=>{localStorage.removeItem(o),$("")}},children:WU("input",{type:"hidden",id:f,name:f,value:P})})},_U=TI;var oI=F({name:"DeviceStorageCard",component:_U,metadata:{author:"PieData"}});import{useCallback as c,useContext as h,useEffect as zI,useRef as ZI,useState as KU}from"react";import{jsx as VU}from"react/jsx-runtime";var OI=({data:U,content:f})=>{let{useLoader:o,noReturn:T,returnType:z,useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:A,centrifugeChannel:P}=U,$=h(V),L=h(Y)??W,[B,Q]=KU(!1),[q,O]=KU(null),w=ZI(f),C=h(j),K=c((H)=>{if(H===null)Q(!0);else if(Q(!1),!T)w.current=H;if(!T)O(H)},[T]),J=c((H)=>{w.current=H.content,O(H.content)},[]),G=c((H)=>{if(H===null)Q(!0);else if(Q(!1),!T)for(let _ of H)C?.emit(_.name,_.data)},[T,C]);if(zI(()=>{O(f),Q(!1)},[f]),!q&&o)return $;return VU(D,{card:"AjaxGroupCard",data:U,methods:{changeContent:J},useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:A,centrifugeChannel:P,children:VU(L,{uiConfig:q??w.current,setUiAjaxConfiguration:z==="events"?G:K})})},CU=OI;var AI=F({name:"AjaxGroupCard",component:CU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as MU}from"react";import{jsx as i}from"react/jsx-runtime";var BI=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:T,url:z,sx:I}=U,Z=MU(R),A=MU(Y)??W;return i(D,{card:T,data:U,children:i("div",{style:I,id:T,onClick:($)=>{if(z)if($.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else Z?.(z)},children:i(A,{setUiAjaxConfiguration:o,uiConfig:f})})})},RU=BI;var HI=F({name:"BoxCard",component:RU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as PI}from"react";import{jsx as n}from"react/jsx-runtime";var $I=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:T,sx:z}=U,I=PI(Y)??W;return n(D,{card:T,data:U,children:n("div",{style:z,id:T,children:f.map((Z,A)=>{return n(I,{uiConfig:Z,setUiAjaxConfiguration:o},`children-${A}`)})})})},EU=$I;var qI=F({name:"OneOfCard",component:EU,metadata:{author:"Swarm.ing",description:"Different variants"}});export{Gf as UnionCard,Bf as UILoading,W as UI,fI as SessionStorageCard,$f as SequenceCard,D as PieCard,qI as OneOfCard,tf as IOEventsCard,Mf as HiddenCard,_f as HTMLEmbedCard,oI as DeviceStorageCard,HI as BoxCard,mf as AutoRedirectCard,AI as AjaxGroupCard};
|
package/dist/components/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var $f=Object.create;var{getPrototypeOf:qf,defineProperty:b,getOwnPropertyNames:QU,getOwnPropertyDescriptor:Gf}=Object,XU=Object.prototype.hasOwnProperty;var wU=(U,f,o)=>{o=U!=null?$f(qf(U)):{};let I=f||!U||!U.__esModule?b(o,"default",{value:U,enumerable:!0}):o;for(let z of QU(U))if(!XU.call(I,z))b(I,z,{get:()=>U[z],enumerable:!0});return I},DU=new WeakMap,Jf=(U)=>{var f=DU.get(U),o;if(f)return f;if(f=b({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")QU(U).map((I)=>!XU.call(f,I)&&b(f,I,{get:()=>U[I],enumerable:!(o=Gf(U,I))||o.enumerable}));return DU.set(U,f),f};var Ff=(U,f)=>{for(var o in f)b(U,o,{get:f[o],enumerable:!0,configurable:!0,set:(I)=>f[o]=()=>I})};var ef={};Ff(ef,{UnionCard:()=>rU,UILoading:()=>bU,UI:()=>_,SessionStorageCard:()=>of,SequenceCard:()=>vU,PieCard:()=>F,OneOfCard:()=>Hf,IOEventsCard:()=>ff,HiddenCard:()=>sU,HTMLEmbedCard:()=>iU,DeviceStorageCard:()=>zf,BoxCard:()=>Pf,AutoRedirectCard:()=>eU,AjaxGroupCard:()=>Lf});module.exports=Jf(ef);var C=require("react");var c=require("react");var LU=globalThis,X=(U,f)=>{let o=Symbol.for(U);if(!(o in LU))LU[o]=f();return LU[o]};var Df=X("@swarm.ing/pieui:context:pieConfig",()=>c.createContext(null)),Qf=()=>{let U=c.useContext(Df);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U};var S=()=>{let{enableRenderingLog:U}=Qf();return U},YU=S;var WU=require("react"),Xf=require("centrifuge");var zI=X("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var wf=X("@swarm.ing/pieui:context:centrifuge",()=>WU.createContext(null)),_U=wf;var Yf=require("socket.io-client"),KU=require("react");var PI=X("@swarm.ing/pieui:socket-cache",()=>new Map);var Wf=X("@swarm.ing/pieui:context:socket",()=>KU.createContext(null)),CU=Wf;var _f=wU(require("mitt")),h=require("react");var Kf=X("@swarm.ing/pieui:context:mitt",()=>h.createContext(null));var i=Kf;function VU(U){return U.wasRecovering===!0&&U.recovered===!1}function MU(U){return U.recoverable===!1}function RU(U,f,o){let I=U.getSubscription(f);if(I)return{subscription:I,createdHere:!1};return{subscription:U.newSubscription(f,o),createdHere:!0}}var k=require("react/jsx-runtime"),Cf=({card:U,data:f,children:o,useSocketioSupport:I=!1,useCentrifugeSupport:z=!1,useMittSupport:T=!1,centrifugeChannel:Z=void 0,methods:O=void 0,stored:B=void 0,onResync:H=void 0})=>{let q=YU(),P=C.useRef(O);P.current=O;let Q=C.useRef(H);if(Q.current=H,q)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",f),console.log("[PieCard] Component name:",f?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:z,mitt:T,centrifugeChannel:Z}),console.log("[PieCard] Methods:",O?Object.keys(O):"none"),console.log("[PieCard] Has children:",!!o);let $=C.useContext(CU),L=C.useContext(_U),w=C.useContext(i);if(C.useEffect(()=>{if(!$||!I||!P.current||!f.name){if(q&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!$,useSocketioSupport:I,hasMethods:!!P.current,hasDataName:!!f?.name});return}let M=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}`;if(q)console.log(`[PieCard] Socket.IO registering event: ${G}`);let A=(V)=>{P.current?.[J]?.(V)};return $.on(G,A),[G,A]});return()=>{M.forEach(([J,G])=>{if(q)console.log(`[PieCard] Socket.IO unregistering event: ${J}`);$.off(J,G)})}},[$,f.name,I]),C.useEffect(()=>{if(!L||!z||!Z||!f.name){if(q&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!P.current,hasDataName:!!f?.name});return}let M=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}_${Z}`;if(q)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let{subscription:A,createdHere:V}=RU(L,G,{recoverable:!0,positioned:!0}),JU=(x)=>{if(q)console.log(`[PieCard] Centrifuge received data on ${G}:`,x.data);P.current?.[J]?.(x.data)},FU=(x)=>{if(MU(x))console.warn(`[PieCard] Centrifuge channel ${G} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(VU(x)){if(q)console.log(`[PieCard] Centrifuge recovery gap on ${G}; requesting resync`);Q.current?.({channel:G,reason:"gap"})}};return A.on("publication",JU),A.on("subscribed",FU),A.subscribe(),{subscription:A,createdHere:V,onPublication:JU,onSubscribed:FU}});return()=>{M.forEach(({subscription:J,createdHere:G,onPublication:A,onSubscribed:V})=>{if(q)console.log("[PieCard] Centrifuge unsubscribing from channel");if(J.off("publication",A),J.off("subscribed",V),G)J.unsubscribe(),L.removeSubscription(J)})}},[L,Z,f.name,z]),C.useEffect(()=>{if(!w||!T||!f.name){if(q&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:T,hasMethods:!!P.current,hasDataName:!!f?.name});return}let N=Object.keys(P.current??{}),M={};return N.forEach((J)=>{let G=`pie${J}_${f.name}`,A=(V)=>{if(q)console.log(`[PieCard] Mitt registering event: ${G}`);P.current?.[J]?.(V)};M[G]=A,w.on(G,A)}),()=>{Object.entries(M).forEach(([J,G])=>{if(q)console.log(`[PieCard] Mitt unregistering event: ${J}`);w.off(J,G)})}},[w,f.name,T]),q)console.log("[PieCard] Rendering complete, returning children");if(B!==void 0)return k.jsxs(k.Fragment,{children:[k.jsx("input",{type:"hidden",name:f.name,value:JSON.stringify(B)}),o]});return o},F=Cf;var EU=require("react"),g=new Map;function Vf(U,f){return f.catch(()=>{if(g.get(U)===f)g.delete(U)}),g.set(U,f),f}function NU(U,f){return EU.lazy(()=>{if(g.has(f))return g.get(f);return Vf(f,U().then((o)=>o))})}var kU=X("@swarm.ing/pieui:component-registry",()=>new Map),Mf=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let f={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!f.component&&f.loader)f.component=NU(f.loader,U.name),f.isLazy=!0;return f};function D(U){let f=Mf(U);return kU.set(f.name,f),f.component}var n=(U)=>{return kU.get(U)};var v=require("react");var yU=require("react");var s=require("react/jsx-runtime"),Rf=X("@swarm.ing/pieui:context:fallback",()=>yU.createContext(s.jsx(s.Fragment,{}))),R=Rf;var jU=require("react");var Ef=X("@swarm.ing/pieui:context:lazyError",()=>jU.createContext(void 0)),a=Ef;var t=require("react"),mU=require("react/jsx-runtime"),Nf=2,kf=400;class y extends t.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<Nf){let f=kf*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((o)=>({failed:!1,attempt:o.attempt+1}))},f)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return mU.jsx(t.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var e=require("react/jsx-runtime");function yf({uiConfig:U,setUiAjaxConfiguration:f}){let o=v.useContext(R),I=v.useContext(a),z=S();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!f);let T=n(U.card);if(!T?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return o}if(z)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let Z=T.component,O=e.jsx(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f});if(T.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",T.name);return e.jsx(y,{name:T.name,fallback:T.fallback?e.jsx(T.fallback,{}):o,onError:I,children:O})}if(z)console.log("[UI] Rendering component directly:",T.name);return O}var _=v.memo(yf);var OU=require("react");var pU=require("react");var jf=X("@swarm.ing/pieui:context:uiRenderer",()=>pU.createContext(null)),K=jf;var l=require("react/jsx-runtime");function xU({uiConfig:U,setUiAjaxConfiguration:f}){let o=OU.useContext(R),I=OU.useContext(a),z=S();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!f);let T=n(U.card);if(!T?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return o}if(z)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(z)console.log("[UILoading] Rendering fallback for:",T.name);let B=T.fallback;return l.jsx(B,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",T.name);let Z=T.component,O=l.jsx(K.Provider,{value:xU,children:l.jsx(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f})});if(T.isLazy)return l.jsx(y,{name:T.name,fallback:o,onError:I,children:O});return O}var bU=xU;var SU=require("react");var UU=require("react/jsx-runtime"),mf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I,sx:z}=U,T=SU.useContext(K)??_;return UU.jsx(F,{card:I,data:U,children:UU.jsx("div",{style:z,id:I,children:f.map((Z,O)=>{return UU.jsx(T,{uiConfig:Z,setUiAjaxConfiguration:o},`children-${O}`)})})})},gU=mf;var vU=D({name:"SequenceCard",component:gU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var lU=require("react");var PU=require("react/jsx-runtime"),pf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I}=U,z=lU.useContext(K)??_;return PU.jsx(F,{card:I,data:U,children:f.map((T,Z)=>{return PU.jsx(z,{uiConfig:T,setUiAjaxConfiguration:o},`children-${Z}`)})})},dU=pf;var rU=D({name:"UnionCard",component:dU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var fU=require("react"),uU=wU(require("html-react-parser"));var W=require("react");function xf(){let U=new AudioContext,f=U.createOscillator(),o=f.connect(U.createMediaStreamDestination());f.start();let I=o.stream.getAudioTracks()[0];return I.enabled=!1,I}function AU(U=null,f){let[o,I]=W.useState(!1),z=W.useRef(null),T=W.useRef(null),Z=W.useRef(null),O=W.useCallback(async(P,Q=!0)=>{if(z.current)B();let $=new RTCPeerConnection;if($.onconnectionstatechange=()=>{if($.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes($.connectionState))I(!1)},$.ontrack=(A)=>{if(U)U.srcObject=A.streams[0]},Q){let A=await navigator.mediaDevices.getUserMedia({audio:!0});$.addTrack(A.getTracks()[0],A)}else{let A=xf();$.addTrack(A)}let L=$.createDataChannel("oai-events");T.current=L,Z.current=new Promise((A)=>{L.addEventListener("open",()=>{A()})});let w=await $.createOffer();await $.setLocalDescription(w);let G=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:w.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await $.setRemoteDescription({type:"answer",sdp:G}),z.current=$,await Z.current},[U]),B=W.useCallback(()=>{let P=T.current;if(P)P.close();z.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),z.current?.close(),I(!1),z.current=null,T.current=null,Z.current=null},[U]),H=W.useCallback((P)=>{let Q=T.current;if(!Q){console.error("Data channel is not ready",P);return}let $=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),Q.send(JSON.stringify(P)),!P.timestamp)P.timestamp=$;f?.(P)},[f,U]),q=W.useCallback((P)=>{if(!T.current){console.error("Data channel is not ready");return}let $=()=>{H({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),H({type:"response.create"})};if(Z.current)Z.current.then($);else $()},[f,U]);return W.useEffect(()=>{let P=T.current;if(!P)return;let Q=($)=>{let L=JSON.parse($.data);if(!L.timestamp)L.timestamp=new Date().toLocaleTimeString();f?.(L)};return P.addEventListener("message",Q),()=>{P.removeEventListener("message",Q)}},[f,U]),{isSessionActive:o,startSession:O,stopSession:B,sendTextMessage:q}}var hU=require("react/jsx-runtime"),bf=({data:U})=>{let{html:f,useSocketioSupport:o,useCentrifugeSupport:I,useMittSupport:z,centrifugeChannel:T}=U,[Z,O]=fU.useState(f),{isSessionActive:B,startSession:H,sendTextMessage:q}=AU(null,(L)=>{if(console.log(L.type,L.type==="response.output_text.delta"&&L.delta),L.type==="response.output_text.delta"&&L.delta)O((w)=>w+L.delta)});return fU.useEffect(()=>{O(f)},[f]),hU.jsx(F,{card:"HTMLEmbedCard",data:U,methods:{update:(L)=>{O(L.value)},generateUsingAI:async(L)=>{try{if(!B&&L.token)await H(L.token,!1);q(L.prompt)}catch(w){console.error("Failed to generate using AI",w)}},initializeAI:async(L)=>{if(!B&&L.token)await H(L.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:o,useMittSupport:z,centrifugeChannel:T,children:uU.default(Z)})},cU=bf;var iU=D({name:"HTMLEmbedCard",component:cU,metadata:{author:"Swarm.ing"}});var IU=require("react");var BU=require("react/jsx-runtime"),Sf=({data:U})=>{let{name:f,value:o,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:Z}=U,[O,B]=IU.useState(o);return IU.useEffect(()=>{B(o)},[o]),BU.jsx(F,{card:"HiddenCard",data:U,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:Z,methods:{update:({value:H})=>{B(H)}},children:BU.jsx("input",{type:"hidden",id:f,name:f,value:O})})},nU=Sf;var sU=D({name:"HiddenCard",component:nU,metadata:{author:"Swarm.ing"}});var d=require("react");var aU=require("react");var gf=X("@swarm.ing/pieui:context:navigate",()=>aU.createContext(void 0)),j=gf;var oU=require("react/jsx-runtime"),vf=({data:U})=>{let{url:f}=U,o=d.useContext(j),I=d.useContext(R);return d.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(f))window.location.href=f;else o?.(f)},[f,o]),oU.jsx(oU.Fragment,{children:I})},tU=vf;var eU=D({name:"AutoRedirectCard",component:tU,metadata:{author:"Swarm.ing"}});var E=require("react-toastify"),TU=require("react-toastify");var p=require("react");var m=require("react/jsx-runtime"),lf={bounce:E.Bounce,slide:E.Slide,zoom:E.Zoom,flip:E.Flip},df=(U)=>{let f={...U,type:U.alertType,transition:U.transition?lf[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};TU.toast(U.message,f)},rf=(U)=>{console.log("Log event",U)},uf=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let f=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(I){console.error("[IOEventsCard] Failed to show notification",I)}},o=window.Notification.permission;if(o==="granted"){f();return}if(o==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")f()})},cf=({data:U})=>{let{useCentrifugeSupport:f,useSocketioSupport:o,useMittSupport:I,centrifugeChannel:z}=U,T=p.useContext(j),Z=p.useRef(T);Z.current=T;let O=p.useMemo(()=>({alert:df,log:rf,push:uf,redirect:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()},reload:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()}}),[]);return m.jsx(m.Fragment,{children:m.jsx(F,{card:"IOEventsCard",data:U,useCentrifugeSupport:f,useSocketioSupport:o,useMittSupport:I,centrifugeChannel:z,methods:O,children:m.jsx(TU.ToastContainer,{})})})},Uf=cf;var ff=D({name:"IOEventsCard",component:Uf,metadata:{author:"Swarm.ing"}});var r=require("react");var HU=require("react/jsx-runtime"),hf=({data:U})=>{let{name:f,key:o,value:I,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=r.useState(I);return r.useEffect(()=>{H(I)},[I]),r.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(o,B)},[o,B]),HU.jsx(F,{card:"SessionStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{sessionStorage.removeItem(o),H("")}},children:HU.jsx("input",{type:"hidden",id:f,name:f,value:B})})},If=hf;var of=D({name:"SessionStorageCard",component:If,metadata:{author:"PieData"}});var u=require("react");var $U=require("react/jsx-runtime"),nf=({data:U})=>{let{name:f,key:o,value:I,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=u.useState(I);return u.useEffect(()=>{H(I)},[I]),u.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(o,B)},[o,B]),$U.jsx(F,{card:"DeviceStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{localStorage.removeItem(o),H("")}},children:$U.jsx("input",{type:"hidden",id:f,name:f,value:B})})},Tf=nf;var zf=D({name:"DeviceStorageCard",component:Tf,metadata:{author:"PieData"}});var Y=require("react");var qU=require("react/jsx-runtime"),sf=({data:U,content:f})=>{let{useLoader:o,noReturn:I,returnType:z,useSocketioSupport:T,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B}=U,H=Y.useContext(R),q=Y.useContext(K)??_,[P,Q]=Y.useState(!1),[$,L]=Y.useState(null),w=Y.useRef(f),N=Y.useContext(i),M=Y.useCallback((A)=>{if(A===null)Q(!0);else if(Q(!1),!I)w.current=A;if(!I)L(A)},[I]),J=Y.useCallback((A)=>{w.current=A.content,L(A.content)},[]),G=Y.useCallback((A)=>{if(A===null)Q(!0);else if(Q(!1),!I)for(let V of A)N?.emit(V.name,V.data)},[I,N]);if(Y.useEffect(()=>{L(f),Q(!1)},[f]),!$&&o)return H;return qU.jsx(F,{card:"AjaxGroupCard",data:U,methods:{changeContent:J},useSocketioSupport:T,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B,children:qU.jsx(q,{uiConfig:$??w.current,setUiAjaxConfiguration:z==="events"?G:M})})},Zf=sf;var Lf=D({name:"AjaxGroupCard",component:Zf,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var GU=require("react");var zU=require("react/jsx-runtime"),af=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I,url:z,sx:T}=U,Z=GU.useContext(j),O=GU.useContext(K)??_;return zU.jsx(F,{card:I,data:U,children:zU.jsx("div",{style:T,id:I,onClick:(H)=>{if(z)if(H.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else Z?.(z)},children:zU.jsx(O,{setUiAjaxConfiguration:o,uiConfig:f})})})},Of=af;var Pf=D({name:"BoxCard",component:Of,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Af=require("react");var ZU=require("react/jsx-runtime"),tf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I,sx:z}=U,T=Af.useContext(K)??_;return ZU.jsx(F,{card:I,data:U,children:ZU.jsx("div",{style:z,id:I,children:f.map((Z,O)=>{return ZU.jsx(T,{uiConfig:Z,setUiAjaxConfiguration:o},`children-${O}`)})})})},Bf=tf;var Hf=D({name:"OneOfCard",component:Bf,metadata:{author:"Swarm.ing",description:"Different variants"}});
|
|
2
|
+
var qf=Object.create;var{getPrototypeOf:Lf,defineProperty:b,getOwnPropertyNames:QU,getOwnPropertyDescriptor:Gf}=Object,XU=Object.prototype.hasOwnProperty;var wU=(U,f,T)=>{T=U!=null?qf(Lf(U)):{};let I=f||!U||!U.__esModule?b(T,"default",{value:U,enumerable:!0}):T;for(let z of QU(U))if(!XU.call(I,z))b(I,z,{get:()=>U[z],enumerable:!0});return I},DU=new WeakMap,Jf=(U)=>{var f=DU.get(U),T;if(f)return f;if(f=b({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")QU(U).map((I)=>!XU.call(f,I)&&b(f,I,{get:()=>U[I],enumerable:!(T=Gf(U,I))||T.enumerable}));return DU.set(U,f),f};var Ff=(U,f)=>{for(var T in f)b(U,T,{get:f[T],enumerable:!0,configurable:!0,set:(I)=>f[T]=()=>I})};var ef={};Ff(ef,{UnionCard:()=>rU,UILoading:()=>bU,UI:()=>_,SessionStorageCard:()=>Tf,SequenceCard:()=>vU,PieCard:()=>F,OneOfCard:()=>$f,IOEventsCard:()=>ff,HiddenCard:()=>sU,HTMLEmbedCard:()=>iU,DeviceStorageCard:()=>zf,BoxCard:()=>Bf,AutoRedirectCard:()=>eU,AjaxGroupCard:()=>Of});module.exports=Jf(ef);var V=require("react");var c=require("react");var OU=globalThis,X=(U,f)=>{let T=Symbol.for(U);if(!(T in OU))OU[T]=f();return OU[T]};var Df=X("@swarm.ing/pieui:context:pieConfig",()=>c.createContext(null)),Qf=()=>{let U=c.useContext(Df);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U};var S=()=>{let{enableRenderingLog:U}=Qf();return U},YU=S;var WU=require("react"),Xf=require("centrifuge");var zI=X("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var wf=X("@swarm.ing/pieui:context:centrifuge",()=>WU.createContext(null)),_U=wf;var Yf=require("socket.io-client"),KU=require("react");var BI=X("@swarm.ing/pieui:socket-cache",()=>new Map);var Wf=X("@swarm.ing/pieui:context:socket",()=>KU.createContext(null)),VU=Wf;var _f=wU(require("mitt")),h=require("react");var Kf=X("@swarm.ing/pieui:context:mitt",()=>h.createContext(null));var i=Kf;function CU(U){return U.wasRecovering===!0&&U.recovered===!1}function MU(U){return U.recoverable===!1}function RU(U,f,T){let I=U.getSubscription(f);if(I)return{subscription:I,createdHere:!1};return{subscription:U.newSubscription(f,T),createdHere:!0}}var y=require("react/jsx-runtime"),Vf=({card:U,data:f,children:T,useSocketioSupport:I=!1,useCentrifugeSupport:z=!1,useMittSupport:o=!1,centrifugeChannel:Z=void 0,methods:A=void 0,stored:P=void 0,onResync:$=void 0})=>{let L=YU(),B=V.useRef(A);B.current=A;let Q=V.useRef($);if(Q.current=$,L)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",f),console.log("[PieCard] Component name:",f?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:z,mitt:o,centrifugeChannel:Z}),console.log("[PieCard] Methods:",A?Object.keys(A):"none"),console.log("[PieCard] Has children:",!!T);let q=V.useContext(VU),O=V.useContext(_U),w=V.useContext(i);if(V.useEffect(()=>{if(!q||!I||!B.current||!f.name){if(L&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!q,useSocketioSupport:I,hasMethods:!!B.current,hasDataName:!!f?.name});return}let M=Object.keys(B.current??{}).map((J)=>{let G=`pie${J}_${f.name}`;if(L)console.log(`[PieCard] Socket.IO registering event: ${G}`);let H=(C)=>{B.current?.[J]?.(C)};return q.on(G,H),[G,H]});return()=>{M.forEach(([J,G])=>{if(L)console.log(`[PieCard] Socket.IO unregistering event: ${J}`);q.off(J,G)})}},[q,f.name,I]),V.useEffect(()=>{if(!O||!z||!Z||!f.name){if(L&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!B.current,hasDataName:!!f?.name});return}let M=Object.keys(B.current??{}).map((J)=>{let G=`pie${J}_${f.name}_${Z}`;if(L)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let{subscription:H,createdHere:C}=RU(O,G,{recoverable:!0,positioned:!0}),JU=(x)=>{if(L)console.log(`[PieCard] Centrifuge received data on ${G}:`,x.data);B.current?.[J]?.(x.data)},FU=(x)=>{if(MU(x))console.warn(`[PieCard] Centrifuge channel ${G} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(CU(x)){if(L)console.log(`[PieCard] Centrifuge recovery gap on ${G}; requesting resync`);Q.current?.({channel:G,reason:"gap"})}};return H.on("publication",JU),H.on("subscribed",FU),H.subscribe(),{subscription:H,createdHere:C,onPublication:JU,onSubscribed:FU}});return()=>{M.forEach(({subscription:J,createdHere:G,onPublication:H,onSubscribed:C})=>{if(L)console.log("[PieCard] Centrifuge unsubscribing from channel");if(J.off("publication",H),J.off("subscribed",C),G)J.unsubscribe(),O.removeSubscription(J)})}},[O,Z,f.name,z]),V.useEffect(()=>{if(!w||!o||!f.name){if(L&&o)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:o,hasMethods:!!B.current,hasDataName:!!f?.name});return}let N=Object.keys(B.current??{}),M={};return N.forEach((J)=>{let G=`pie${J}_${f.name}`,H=(C)=>{if(L)console.log(`[PieCard] Mitt registering event: ${G}`);B.current?.[J]?.(C)};M[G]=H,w.on(G,H)}),()=>{Object.entries(M).forEach(([J,G])=>{if(L)console.log(`[PieCard] Mitt unregistering event: ${J}`);w.off(J,G)})}},[w,f.name,o]),L)console.log("[PieCard] Rendering complete, returning children");if(P!==void 0)return y.jsxs(y.Fragment,{children:[y.jsx("input",{type:"hidden",name:f.name,value:JSON.stringify(P)}),T]});return T},F=Vf;var EU=require("react"),g=new Map;function Cf(U,f){return f.catch(()=>{if(g.get(U)===f)g.delete(U)}),g.set(U,f),f}function NU(U,f){return EU.lazy(()=>{if(g.has(f))return g.get(f);return Cf(f,U().then((T)=>T))})}var yU=X("@swarm.ing/pieui:component-registry",()=>new Map),Mf=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let f={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!f.component&&f.loader)f.component=NU(f.loader,U.name),f.isLazy=!0;return f};function D(U){let f=Mf(U);return yU.set(f.name,f),f.component}var n=(U)=>{return yU.get(U)};var v=require("react");var jU=require("react");var s=require("react/jsx-runtime"),Rf=X("@swarm.ing/pieui:context:fallback",()=>jU.createContext(s.jsx(s.Fragment,{}))),R=Rf;var kU=require("react");var Ef=X("@swarm.ing/pieui:context:lazyError",()=>kU.createContext(void 0)),a=Ef;var t=require("react"),mU=require("react/jsx-runtime"),Nf=2,yf=400;class j extends t.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<Nf){let f=yf*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((T)=>({failed:!1,attempt:T.attempt+1}))},f)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return mU.jsx(t.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var e=require("react/jsx-runtime");function jf({uiConfig:U,setUiAjaxConfiguration:f}){let T=v.useContext(R),I=v.useContext(a),z=S();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!f);let o=n(U.card);if(!o?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return T}if(z)console.log("[UI] Found component in registry:",{name:o.name,isLazy:o.isLazy,hasMetadata:!!o.metadata});let Z=o.component,A=e.jsx(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f});if(o.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",o.name);return e.jsx(j,{name:o.name,fallback:o.fallback?e.jsx(o.fallback,{}):T,onError:I,children:A})}if(z)console.log("[UI] Rendering component directly:",o.name);return A}var _=v.memo(jf);var AU=require("react");var pU=require("react");var kf=X("@swarm.ing/pieui:context:uiRenderer",()=>pU.createContext(null)),K=kf;var l=require("react/jsx-runtime");function xU({uiConfig:U,setUiAjaxConfiguration:f}){let T=AU.useContext(R),I=AU.useContext(a),z=S();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!f);let o=n(U.card);if(!o?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return T}if(z)console.log("[UILoading] Found component in registry:",{name:o.name,isLazy:o.isLazy,hasMetadata:!!o.metadata,hasFallback:!!o.fallback});if(o.fallback){if(z)console.log("[UILoading] Rendering fallback for:",o.name);let P=o.fallback;return l.jsx(P,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",o.name);let Z=o.component,A=l.jsx(K.Provider,{value:xU,children:l.jsx(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f})});if(o.isLazy)return l.jsx(j,{name:o.name,fallback:T,onError:I,children:A});return A}var bU=xU;var SU=require("react");var UU=require("react/jsx-runtime"),mf=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:I,sx:z}=U,o=SU.useContext(K)??_;return UU.jsx(F,{card:I,data:U,children:UU.jsx("div",{style:z,id:I,children:f.map((Z,A)=>{return UU.jsx(o,{uiConfig:Z,setUiAjaxConfiguration:T},`children-${A}`)})})})},gU=mf;var vU=D({name:"SequenceCard",component:gU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var lU=require("react");var BU=require("react/jsx-runtime"),pf=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:I}=U,z=lU.useContext(K)??_;return BU.jsx(F,{card:I,data:U,children:f.map((o,Z)=>{return BU.jsx(z,{uiConfig:o,setUiAjaxConfiguration:T},`children-${Z}`)})})},dU=pf;var rU=D({name:"UnionCard",component:dU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var fU=require("react"),uU=wU(require("html-react-parser"));var W=require("react");function xf(){let U=new AudioContext,f=U.createOscillator(),T=f.connect(U.createMediaStreamDestination());f.start();let I=T.stream.getAudioTracks()[0];return I.enabled=!1,I}function HU(U=null,f){let[T,I]=W.useState(!1),z=W.useRef(null),o=W.useRef(null),Z=W.useRef(null),A=W.useCallback(async(B,Q=!0)=>{if(z.current)P();let q=new RTCPeerConnection;if(q.onconnectionstatechange=()=>{if(q.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes(q.connectionState))I(!1)},q.ontrack=(H)=>{if(U)U.srcObject=H.streams[0]},Q){let H=await navigator.mediaDevices.getUserMedia({audio:!0});q.addTrack(H.getTracks()[0],H)}else{let H=xf();q.addTrack(H)}let O=q.createDataChannel("oai-events");o.current=O,Z.current=new Promise((H)=>{O.addEventListener("open",()=>{H()})});let w=await q.createOffer();await q.setLocalDescription(w);let G=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:w.sdp,headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/sdp"}})).text();await q.setRemoteDescription({type:"answer",sdp:G}),z.current=q,await Z.current},[U]),P=W.useCallback(()=>{let B=o.current;if(B)B.close();z.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),z.current?.close(),I(!1),z.current=null,o.current=null,Z.current=null},[U]),$=W.useCallback((B)=>{let Q=o.current;if(!Q){console.error("Data channel is not ready",B);return}let q=new Date().toLocaleTimeString();if(B.event_id=B.event_id||crypto.randomUUID(),Q.send(JSON.stringify(B)),!B.timestamp)B.timestamp=q;f?.(B)},[f,U]),L=W.useCallback((B)=>{if(!o.current){console.error("Data channel is not ready");return}let q=()=>{$({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:B}]}}),$({type:"response.create"})};if(Z.current)Z.current.then(q);else q()},[f,U]);return W.useEffect(()=>{let B=o.current;if(!B)return;let Q=(q)=>{let O=JSON.parse(q.data);if(!O.timestamp)O.timestamp=new Date().toLocaleTimeString();f?.(O)};return B.addEventListener("message",Q),()=>{B.removeEventListener("message",Q)}},[f,U]),{isSessionActive:T,startSession:A,stopSession:P,sendTextMessage:L}}var hU=require("react/jsx-runtime"),bf=({data:U})=>{let{html:f,useSocketioSupport:T,useCentrifugeSupport:I,useMittSupport:z,centrifugeChannel:o}=U,[Z,A]=fU.useState(f),{isSessionActive:P,startSession:$,sendTextMessage:L}=HU(null,(O)=>{if(console.log(O.type,O.type==="response.output_text.delta"&&O.delta),O.type==="response.output_text.delta"&&O.delta)A((w)=>w+O.delta)});return fU.useEffect(()=>{A(f)},[f]),hU.jsx(F,{card:"HTMLEmbedCard",data:U,methods:{update:(O)=>{A(O.value)},generateUsingAI:async(O)=>{try{if(!P&&O.token)await $(O.token,!1);L(O.prompt)}catch(w){console.error("Failed to generate using AI",w)}},initializeAI:async(O)=>{if(!P&&O.token)await $(O.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:T,useMittSupport:z,centrifugeChannel:o,children:uU.default(Z)})},cU=bf;var iU=D({name:"HTMLEmbedCard",component:cU,metadata:{author:"Swarm.ing"}});var IU=require("react");var PU=require("react/jsx-runtime"),Sf=({data:U})=>{let{name:f,value:T,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:o,centrifugeChannel:Z}=U,[A,P]=IU.useState(T);return IU.useEffect(()=>{P(T)},[T]),PU.jsx(F,{card:"HiddenCard",data:U,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:o,centrifugeChannel:Z,methods:{update:({value:$})=>{P($)}},children:PU.jsx("input",{type:"hidden",id:f,name:f,value:A})})},nU=Sf;var sU=D({name:"HiddenCard",component:nU,metadata:{author:"Swarm.ing"}});var d=require("react");var aU=require("react");var gf=X("@swarm.ing/pieui:context:navigate",()=>aU.createContext(void 0)),k=gf;var TU=require("react/jsx-runtime"),vf=({data:U})=>{let{url:f}=U,T=d.useContext(k),I=d.useContext(R);return d.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(f))window.location.href=f;else T?.(f)},[f,T]),TU.jsx(TU.Fragment,{children:I})},tU=vf;var eU=D({name:"AutoRedirectCard",component:tU,metadata:{author:"Swarm.ing"}});var E=require("react-toastify"),oU=require("react-toastify");var p=require("react");var m=require("react/jsx-runtime"),lf={bounce:E.Bounce,slide:E.Slide,zoom:E.Zoom,flip:E.Flip},df=(U)=>{let f={...U,type:U.alertType,transition:U.transition?lf[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};oU.toast(U.message,f)},rf=(U)=>{console.log("Log event",U)},uf=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let f=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(I){console.error("[IOEventsCard] Failed to show notification",I)}},T=window.Notification.permission;if(T==="granted"){f();return}if(T==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")f()})},cf=({data:U})=>{let{useCentrifugeSupport:f,useSocketioSupport:T,useMittSupport:I,centrifugeChannel:z}=U,o=p.useContext(k),Z=p.useRef(o);Z.current=o;let A=p.useMemo(()=>({alert:df,log:rf,push:uf,redirect:(P)=>{if(P.to){let $=P.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($))window.location.href=$;else Z.current?.($)}else window.location.reload()},reload:(P)=>{if(P.to){let $=P.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($))window.location.href=$;else Z.current?.($)}else window.location.reload()}}),[]);return m.jsx(m.Fragment,{children:m.jsx(F,{card:"IOEventsCard",data:U,useCentrifugeSupport:f,useSocketioSupport:T,useMittSupport:I,centrifugeChannel:z,methods:A,children:m.jsx(oU.ToastContainer,{})})})},Uf=cf;var ff=D({name:"IOEventsCard",component:Uf,metadata:{author:"Swarm.ing"}});var r=require("react");var $U=require("react/jsx-runtime"),hf=({data:U})=>{let{name:f,key:T,value:I,useSocketioSupport:z,useCentrifugeSupport:o,useMittSupport:Z,centrifugeChannel:A}=U,[P,$]=r.useState(I);return r.useEffect(()=>{$(I)},[I]),r.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(T,P)},[T,P]),$U.jsx(F,{card:"SessionStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:o,useMittSupport:Z,centrifugeChannel:A,methods:{update:({value:L})=>{$(L)},remove:()=>{sessionStorage.removeItem(T),$("")}},children:$U.jsx("input",{type:"hidden",id:f,name:f,value:P})})},If=hf;var Tf=D({name:"SessionStorageCard",component:If,metadata:{author:"PieData"}});var u=require("react");var qU=require("react/jsx-runtime"),nf=({data:U})=>{let{name:f,key:T,value:I,useSocketioSupport:z,useCentrifugeSupport:o,useMittSupport:Z,centrifugeChannel:A}=U,[P,$]=u.useState(I);return u.useEffect(()=>{$(I)},[I]),u.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(T,P)},[T,P]),qU.jsx(F,{card:"DeviceStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:o,useMittSupport:Z,centrifugeChannel:A,methods:{update:({value:L})=>{$(L)},remove:()=>{localStorage.removeItem(T),$("")}},children:qU.jsx("input",{type:"hidden",id:f,name:f,value:P})})},of=nf;var zf=D({name:"DeviceStorageCard",component:of,metadata:{author:"PieData"}});var Y=require("react");var LU=require("react/jsx-runtime"),sf=({data:U,content:f})=>{let{useLoader:T,noReturn:I,returnType:z,useSocketioSupport:o,useCentrifugeSupport:Z,useMittSupport:A,centrifugeChannel:P}=U,$=Y.useContext(R),L=Y.useContext(K)??_,[B,Q]=Y.useState(!1),[q,O]=Y.useState(null),w=Y.useRef(f),N=Y.useContext(i),M=Y.useCallback((H)=>{if(H===null)Q(!0);else if(Q(!1),!I)w.current=H;if(!I)O(H)},[I]),J=Y.useCallback((H)=>{w.current=H.content,O(H.content)},[]),G=Y.useCallback((H)=>{if(H===null)Q(!0);else if(Q(!1),!I)for(let C of H)N?.emit(C.name,C.data)},[I,N]);if(Y.useEffect(()=>{O(f),Q(!1)},[f]),!q&&T)return $;return LU.jsx(F,{card:"AjaxGroupCard",data:U,methods:{changeContent:J},useSocketioSupport:o,useCentrifugeSupport:Z,useMittSupport:A,centrifugeChannel:P,children:LU.jsx(L,{uiConfig:q??w.current,setUiAjaxConfiguration:z==="events"?G:M})})},Zf=sf;var Of=D({name:"AjaxGroupCard",component:Zf,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var GU=require("react");var zU=require("react/jsx-runtime"),af=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:I,url:z,sx:o}=U,Z=GU.useContext(k),A=GU.useContext(K)??_;return zU.jsx(F,{card:I,data:U,children:zU.jsx("div",{style:o,id:I,onClick:($)=>{if(z)if($.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else Z?.(z)},children:zU.jsx(A,{setUiAjaxConfiguration:T,uiConfig:f})})})},Af=af;var Bf=D({name:"BoxCard",component:Af,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Hf=require("react");var ZU=require("react/jsx-runtime"),tf=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:I,sx:z}=U,o=Hf.useContext(K)??_;return ZU.jsx(F,{card:I,data:U,children:ZU.jsx("div",{style:z,id:I,children:f.map((Z,A)=>{return ZU.jsx(o,{uiConfig:Z,setUiAjaxConfiguration:T},`children-${A}`)})})})},Pf=tf;var $f=D({name:"OneOfCard",component:Pf,metadata:{author:"Swarm.ing",description:"Different variants"}});
|
package/dist/index.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export type { PiePreviewRootProps } from './components/PiePreviewRoot';
|
|
|
9
9
|
export { default as PieCard } from './components/PieCard';
|
|
10
10
|
export { registerPieComponent, getAllRegisteredComponents, getRegistrySize, registry, hasComponent, getRegistryEntry, getComponentMeta, registerMultipleComponents, unregisterComponent, getLazyComponentNames, preloadComponent, prefetchLazyComponents, } from './util/registry';
|
|
11
11
|
export { trackLazy } from './util/lazy';
|
|
12
|
-
export type { PieComponentProps, PieSimpleComponentProps, PieComplexComponentProps, PieContainerComponentProps, PieComplexContainerComponentProps, InputPieSimpleComponentProps, InputPieComplexComponentProps, InputPieContainerComponentProps, InputPieComplexContainerComponentProps, PieConfig, UIConfigType, SetUiAjaxConfigurationType, } from './types';
|
|
12
|
+
export type { PieComponentProps, PieSimpleComponentProps, PieComplexComponentProps, PieContainerComponentProps, PieComplexContainerComponentProps, InputPieSimpleComponentProps, InputPieComplexComponentProps, InputPieContainerComponentProps, InputPieComplexContainerComponentProps, PieConfig, PieLinkSource, UIConfigType, SetUiAjaxConfigurationType, } from './types';
|
|
13
13
|
export type { PieQueryOptions } from './components/PieRoot/types';
|
|
14
14
|
export { useAjaxSubmit, readAjaxKey, readAjaxKeyAsync, parseDepName, } from './util/ajaxCommonUtils';
|
|
15
15
|
export type { RetryPolicy, DepSource } from './util/ajaxCommonUtils';
|
|
@@ -18,7 +18,7 @@ export { default as MittContext, getEmitter } from './util/mitt';
|
|
|
18
18
|
export { default as SocketIOContext } from './util/socket';
|
|
19
19
|
export { default as CentrifugeIOContext } from './util/centrifuge';
|
|
20
20
|
export { default as FallbackContext } from './util/fallback';
|
|
21
|
-
export { PieConfigContext } from './util/pieConfig';
|
|
21
|
+
export { PieConfigContext, useOnLinkLost, useOnLinkRestored, } from './util/pieConfig';
|
|
22
22
|
export { cn } from './util/tailwindCommonUtils';
|
|
23
23
|
export { PIEBREAK } from './util/pieConfig';
|
|
24
24
|
export { submitGlobalForm } from './util/globalForm.ts';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACH,OAAO,IAAI,iBAAiB,EAC5B,KAAK,eAAe,GACvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAMtE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EACH,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,GACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EACR,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,sCAAsC,EACtC,SAAS,EACT,YAAY,EACZ,0BAA0B,GAC7B,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EACH,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,YAAY,GACf,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACH,OAAO,IAAI,iBAAiB,EAC5B,KAAK,eAAe,GACvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAMtE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EACH,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,GACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EACR,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,sCAAsC,EACtC,SAAS,EACT,aAAa,EACb,YAAY,EACZ,0BAA0B,GAC7B,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EACH,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,YAAY,GACf,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EACH,gBAAgB,EAChB,aAAa,EACb,iBAAiB,GACpB,MAAM,kBAAkB,CAAA;AAMzB,OAAO,EAAE,EAAE,EAAE,MAAM,4BAA4B,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/index.esm.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useContext as QU,useEffect as WU,useRef as pU}from"react";import{createContext as EZ,useContext as jZ}from"react";var qU=globalThis,A=(U,Z)=>{let $=Symbol.for(U);if(!($ in qU))qU[$]=Z();return qU[$]};var d=A("@swarm.ing/pieui:context:pieConfig",()=>EZ(null)),l=()=>{let U=jZ(d);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},i=()=>{let{apiServer:U}=l();return U},t=i,a=()=>{let{centrifugeServer:U}=l();return U};var k=()=>{let{enableRenderingLog:U}=l();return U},fU=k;var OU="__piedemo__";import{createContext as CZ}from"react";import{Centrifuge as xU}from"centrifuge";var kU=A("@swarm.ing/pieui:centrifuge-cache",()=>new Map),e=(U,Z)=>{if(!Z)return null;let $=`${U}::${Z}`,z=kU.get($);if(z)return z;async function T(){let J=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new xU.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let H=new xU(Z,{getToken:T});return kU.set($,H),H},fZ=A("@swarm.ing/pieui:context:centrifuge",()=>CZ(null)),y=fZ;import{io as xZ}from"socket.io-client";import{createContext as kZ}from"react";var yU=A("@swarm.ing/pieui:socket-cache",()=>new Map),UU=(U)=>{let Z=yU.get(U);if(Z)return Z;let $=xZ(U,{autoConnect:!1,transports:["websocket"]});return yU.set(U,$),$},yZ=A("@swarm.ing/pieui:context:socket",()=>kZ(null)),S=yZ;import SZ from"mitt";import{createContext as bZ,useCallback as vZ,useContext as mZ}from"react";function c(){return A("@swarm.ing/pieui:mitt-emitter",()=>SZ())}var SU=A("@swarm.ing/pieui:context:mitt",()=>bZ(null));function pZ(U){let Z=mZ(SU);return vZ(($,z)=>{(Z??c()).emit(`pie${$}_${U}`,z)},[U,Z])}var b=SU;function bU(U){return U.wasRecovering===!0&&U.recovered===!1}function vU(U){return U.recoverable===!1}function mU(U,Z,$){let z=U.getSubscription(Z);if(z)return{subscription:z,createdHere:!1};return{subscription:U.newSubscription(Z,$),createdHere:!0}}import{jsx as uZ,jsxs as dZ,Fragment as gZ}from"react/jsx-runtime";var hZ=({card:U,data:Z,children:$,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:H=!1,centrifugeChannel:J=void 0,methods:G=void 0,stored:I=void 0,onResync:Y=void 0})=>{let D=fU(),O=pU(G);O.current=G;let V=pU(Y);if(V.current=Y,D)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:T,mitt:H,centrifugeChannel:J}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!$);let B=QU(S),q=QU(y),_=QU(b);if(WU(()=>{if(!B||!z||!O.current||!Z.name){if(D&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:z,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let P=Object.keys(O.current??{}).map((W)=>{let X=`pie${W}_${Z.name}`;if(D)console.log(`[PieCard] Socket.IO registering event: ${X}`);let Q=(C)=>{O.current?.[W]?.(C)};return B.on(X,Q),[X,Q]});return()=>{P.forEach(([W,X])=>{if(D)console.log(`[PieCard] Socket.IO unregistering event: ${W}`);B.off(W,X)})}},[B,Z.name,z]),WU(()=>{if(!q||!T||!J||!Z.name){if(D&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!q,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let P=Object.keys(O.current??{}).map((W)=>{let X=`pie${W}_${Z.name}_${J}`;if(D)console.log(`[PieCard] Centrifuge subscribing to channel: ${X}`);let{subscription:Q,createdHere:C}=mU(q,X,{recoverable:!0,positioned:!0}),XU=(p)=>{if(D)console.log(`[PieCard] Centrifuge received data on ${X}:`,p.data);O.current?.[W]?.(p.data)},m=(p)=>{if(vU(p))console.warn(`[PieCard] Centrifuge channel ${X} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(bU(p)){if(D)console.log(`[PieCard] Centrifuge recovery gap on ${X}; requesting resync`);V.current?.({channel:X,reason:"gap"})}};return Q.on("publication",XU),Q.on("subscribed",m),Q.subscribe(),{subscription:Q,createdHere:C,onPublication:XU,onSubscribed:m}});return()=>{P.forEach(({subscription:W,createdHere:X,onPublication:Q,onSubscribed:C})=>{if(D)console.log("[PieCard] Centrifuge unsubscribing from channel");if(W.off("publication",Q),W.off("subscribed",C),X)W.unsubscribe(),q.removeSubscription(W)})}},[q,J,Z.name,T]),WU(()=>{if(!_||!H||!Z.name){if(D&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!_,useMittSupport:H,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let F=Object.keys(O.current??{}),P={};return F.forEach((W)=>{let X=`pie${W}_${Z.name}`,Q=(C)=>{if(D)console.log(`[PieCard] Mitt registering event: ${X}`);O.current?.[W]?.(C)};P[X]=Q,_.on(X,Q)}),()=>{Object.entries(P).forEach(([W,X])=>{if(D)console.log(`[PieCard] Mitt unregistering event: ${W}`);_.off(W,X)})}},[_,Z.name,H]),D)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return dZ(gZ,{children:[uZ("input",{type:"hidden",name:Z.name,value:JSON.stringify(I)}),$]});return $},M=hZ;import{lazy as cZ}from"react";var h=new Map;function hU(U,Z){return Z.catch(()=>{if(h.get(U)===Z)h.delete(U)}),h.set(U,Z),Z}function DU(U,Z){return cZ(()=>{if(h.has(Z))return h.get(Z);return hU(Z,U().then(($)=>$))})}var gU=async(U,Z)=>{if(!Z)return;if(h.has(U))return h.get(U);return hU(U,Z().then(($)=>$))};var f=A("@swarm.ing/pieui:component-registry",()=>new Map),oZ=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let Z={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!Z.component&&Z.loader)Z.component=DU(Z.loader,U.name),Z.isLazy=!0;return Z};function K(U){let Z=oZ(U);return f.set(Z.name,Z),Z.component}var lZ=(U)=>{U.forEach((Z)=>K(Z))},iZ=(U)=>{f.delete(U)},sZ=(U)=>{return f.has(U)},rZ=(U)=>{return f.get(U)?.metadata},s=(U)=>{return f.get(U)},nZ=()=>{return Array.from(f.keys())},tZ=()=>{return f.size},dU=()=>Array.from(f.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),cU=(U)=>{let Z=f.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return gU(U,Z.loader)},uU=!1,aZ=()=>{if(uU||typeof window>"u")return;uU=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=dU(),$="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=Z.length)return;$(()=>{Promise.resolve().then(()=>cU(Z[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};import{useContext as oU,memo as Y$}from"react";import{createContext as eZ}from"react";import{jsx as $$,Fragment as Z$}from"react/jsx-runtime";var U$=A("@swarm.ing/pieui:context:fallback",()=>eZ($$(Z$,{}))),N=U$;import{createContext as z$}from"react";var H$=A("@swarm.ing/pieui:context:lazyError",()=>z$(void 0)),v=H$;import{Component as T$,Suspense as J$}from"react";import{jsx as X$}from"react/jsx-runtime";var I$=2,G$=400;class o extends T${state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<I$){let Z=G$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},Z)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return X$(J$,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as _U}from"react/jsx-runtime";function B$({uiConfig:U,setUiAjaxConfiguration:Z}){let $=oU(N),z=oU(v),T=k();if(T)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!Z);let H=s(U.card);if(!H?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(T)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let J=H.component,G=_U(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(H.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",H.name);return _U(o,{name:H.name,fallback:H.fallback?_U(H.fallback,{}):$,onError:z,children:G})}if(T)console.log("[UI] Rendering component directly:",H.name);return G}var w=Y$(B$);import{useContext as lU}from"react";import{createContext as q$}from"react";var O$=A("@swarm.ing/pieui:context:uiRenderer",()=>q$(null)),E=O$;import{jsx as ZU}from"react/jsx-runtime";function iU({uiConfig:U,setUiAjaxConfiguration:Z}){let $=lU(N),z=lU(v),T=k();if(T)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!Z);let H=s(U.card);if(!H?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(T)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(T)console.log("[UILoading] Rendering fallback for:",H.name);let I=H.fallback;return ZU(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",H.name);let J=H.component,G=ZU(E.Provider,{value:iU,children:ZU(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(H.isLazy)return ZU(o,{name:H.name,fallback:$,onError:z,children:G});return G}var VU=iU;import{useContext as Q$}from"react";import{jsx as FU}from"react/jsx-runtime";var W$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=Q$(E)??w;return FU(M,{card:z,data:U,children:FU("div",{style:T,id:z,children:Z.map((J,G)=>{return FU(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${G}`)})})})},sU=W$;var D$=K({name:"SequenceCard",component:sU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as _$}from"react";import{jsx as rU}from"react/jsx-runtime";var V$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z}=U,T=_$(E)??w;return rU(M,{card:z,data:U,children:Z.map((H,J)=>{return rU(T,{uiConfig:H,setUiAjaxConfiguration:$},`children-${J}`)})})},nU=V$;var F$=K({name:"UnionCard",component:nU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as M$,useState as R$}from"react";import L$ from"html-react-parser";import{useCallback as $U,useEffect as K$,useRef as KU,useState as A$}from"react";function P$(){let U=new AudioContext,Z=U.createOscillator(),$=Z.connect(U.createMediaStreamDestination());Z.start();let z=$.stream.getAudioTracks()[0];return z.enabled=!1,z}function AU(U=null,Z){let[$,z]=A$(!1),T=KU(null),H=KU(null),J=KU(null),G=$U(async(O,V=!0)=>{if(T.current)I();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))z(!1)},B.ontrack=(Q)=>{if(U)U.srcObject=Q.streams[0]},V){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(Q.getTracks()[0],Q)}else{let Q=P$();B.addTrack(Q)}let q=B.createDataChannel("oai-events");H.current=q,J.current=new Promise((Q)=>{q.addEventListener("open",()=>{Q()})});let _=await B.createOffer();await B.setLocalDescription(_);let X=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:_.sdp,headers:{Authorization:`Bearer ${O}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:X}),T.current=B,await J.current},[U]),I=$U(()=>{let O=H.current;if(O)O.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,H.current=null,J.current=null},[U]),Y=$U((O)=>{let V=H.current;if(!V){console.error("Data channel is not ready",O);return}let B=new Date().toLocaleTimeString();if(O.event_id=O.event_id||crypto.randomUUID(),V.send(JSON.stringify(O)),!O.timestamp)O.timestamp=B;Z?.(O)},[Z,U]),D=$U((O)=>{if(!H.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:O}]}}),Y({type:"response.create"})};if(J.current)J.current.then(B);else B()},[Z,U]);return K$(()=>{let O=H.current;if(!O)return;let V=(B)=>{let q=JSON.parse(B.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();Z?.(q)};return O.addEventListener("message",V),()=>{O.removeEventListener("message",V)}},[Z,U]),{isSessionActive:$,startSession:G,stopSession:I,sendTextMessage:D}}import{jsx as N$}from"react/jsx-runtime";var w$=({data:U})=>{let{html:Z,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:H}=U,[J,G]=R$(Z),{isSessionActive:I,startSession:Y,sendTextMessage:D}=AU(null,(q)=>{if(console.log(q.type,q.type==="response.output_text.delta"&&q.delta),q.type==="response.output_text.delta"&&q.delta)G((_)=>_+q.delta)});return M$(()=>{G(Z)},[Z]),N$(M,{card:"HTMLEmbedCard",data:U,methods:{update:(q)=>{G(q.value)},generateUsingAI:async(q)=>{try{if(!I&&q.token)await Y(q.token,!1);D(q.prompt)}catch(_){console.error("Failed to generate using AI",_)}},initializeAI:async(q)=>{if(!I&&q.token)await Y(q.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:$,useMittSupport:T,centrifugeChannel:H,children:L$(J)})},tU=w$;var E$=K({name:"HTMLEmbedCard",component:tU,metadata:{author:"Swarm.ing"}});import{useEffect as j$,useState as C$}from"react";import{jsx as aU}from"react/jsx-runtime";var f$=({data:U})=>{let{name:Z,value:$,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J}=U,[G,I]=C$($);return j$(()=>{I($)},[$]),aU(M,{card:"HiddenCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J,methods:{update:({value:Y})=>{I(Y)}},children:aU("input",{type:"hidden",id:Z,name:Z,value:G})})},eU=f$;var x$=K({name:"HiddenCard",component:eU,metadata:{author:"Swarm.ing"}});import{useContext as UZ,useEffect as S$}from"react";import{createContext as k$}from"react";var y$=A("@swarm.ing/pieui:context:navigate",()=>k$(void 0)),x=y$;import{jsx as m$,Fragment as v$}from"react/jsx-runtime";var b$=({data:U})=>{let{url:Z}=U,$=UZ(x),z=UZ(N);return S$(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else $?.(Z)},[Z,$]),m$(v$,{children:z})},ZZ=b$;var p$=K({name:"AutoRedirectCard",component:ZZ,metadata:{author:"Swarm.ing"}});import{Bounce as h$,Slide as g$,Zoom as u$,Flip as d$}from"react-toastify";import{toast as c$,ToastContainer as o$}from"react-toastify";import{useContext as l$,useMemo as i$,useRef as s$}from"react";import{jsx as PU,Fragment as Uz}from"react/jsx-runtime";var r$={bounce:h$,slide:g$,zoom:u$,flip:d$},n$=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?r$[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};c$(U.message,Z)},t$=(U)=>{console.log("Log event",U)},a$=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let Z=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},$=window.Notification.permission;if($==="granted"){Z();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")Z()})},e$=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T}=U,H=l$(x),J=s$(H);J.current=H;let G=i$(()=>({alert:n$,log:t$,push:a$,redirect:(I)=>{if(I.to){let Y=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()},reload:(I)=>{if(I.to){let Y=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()}}),[]);return PU(Uz,{children:PU(M,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T,methods:G,children:PU(o$,{})})})},$Z=e$;var Zz=K({name:"IOEventsCard",component:$Z,metadata:{author:"Swarm.ing"}});import{useEffect as zZ,useState as $z}from"react";import{jsx as HZ}from"react/jsx-runtime";var zz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G}=U,[I,Y]=$z(z);return zZ(()=>{Y(z)},[z]),zZ(()=>{if(typeof window>"u")return;sessionStorage.setItem($,I)},[$,I]),HZ(M,{card:"SessionStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:D})=>{Y(D)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:HZ("input",{type:"hidden",id:Z,name:Z,value:I})})},TZ=zz;var Hz=K({name:"SessionStorageCard",component:TZ,metadata:{author:"PieData"}});import{useEffect as JZ,useState as Tz}from"react";import{jsx as IZ}from"react/jsx-runtime";var Jz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G}=U,[I,Y]=Tz(z);return JZ(()=>{Y(z)},[z]),JZ(()=>{if(typeof window>"u")return;localStorage.setItem($,I)},[$,I]),IZ(M,{card:"DeviceStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:D})=>{Y(D)},remove:()=>{localStorage.removeItem($),Y("")}},children:IZ("input",{type:"hidden",id:Z,name:Z,value:I})})},GZ=Jz;var Iz=K({name:"DeviceStorageCard",component:GZ,metadata:{author:"PieData"}});import{useCallback as MU,useContext as RU,useEffect as Gz,useRef as Xz,useState as XZ}from"react";import{jsx as YZ}from"react/jsx-runtime";var Yz=({data:U,content:Z})=>{let{useLoader:$,noReturn:z,returnType:T,useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I}=U,Y=RU(N),D=RU(E)??w,[O,V]=XZ(!1),[B,q]=XZ(null),_=Xz(Z),F=RU(b),P=MU((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)_.current=Q;if(!z)q(Q)},[z]),W=MU((Q)=>{_.current=Q.content,q(Q.content)},[]),X=MU((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)for(let C of Q)F?.emit(C.name,C.data)},[z,F]);if(Gz(()=>{q(Z),V(!1)},[Z]),!B&&$)return Y;return YZ(M,{card:"AjaxGroupCard",data:U,methods:{changeContent:W},useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I,children:YZ(D,{uiConfig:B??_.current,setUiAjaxConfiguration:T==="events"?X:P})})},BZ=Yz;var Bz=K({name:"AjaxGroupCard",component:BZ,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as qZ}from"react";import{jsx as LU}from"react/jsx-runtime";var qz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,url:T,sx:H}=U,J=qZ(x),G=qZ(E)??w;return LU(M,{card:z,data:U,children:LU("div",{style:H,id:z,onClick:(Y)=>{if(T)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:LU(G,{setUiAjaxConfiguration:$,uiConfig:Z})})})},OZ=qz;var Oz=K({name:"BoxCard",component:OZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Qz}from"react";import{jsx as wU}from"react/jsx-runtime";var Wz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=Qz(E)??w;return wU(M,{card:z,data:U,children:wU("div",{style:T,id:z,children:Z.map((J,G)=>{return wU(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${G}`)})})})},QZ=Wz;var Dz=K({name:"OneOfCard",component:QZ,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as n}from"react";import{QueryClient as xz,QueryClientProvider as kz,useQuery as yz}from"@tanstack/react-query";import{useContext as Lz,useEffect as wz}from"react";import{useEffect as _z,useState as Vz}from"react";var zU=new Map,HU=new Map;function TU(U,Z){let $=`${U}::${Z}`,z=U?zU.get($):void 0,[T,H]=Vz(z??null);return _z(()=>{if(!U)return;if(zU.has($)){H(zU.get($));return}let J=HU.get($);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return zU.set($,I),HU.delete($),I}).catch((I)=>{throw HU.delete($),I}),HU.set($,J);let G=!1;return J.then((I)=>{if(!G)H(I)}).catch(()=>{}),()=>{G=!0}},[U,Z,$]),T}var Fz=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let $ of Z){let z=$.indexOf("=");if((z===-1?$:$.slice(0,z)).trim()===U){let H=z===-1?"":$.slice(z+1).trim();try{return decodeURIComponent(H)}catch{return H}}}return null},Kz={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,Z){return(U==="local"?window.localStorage:window.sessionStorage).getItem(Z)},readCookie:Fz,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let $=Z[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 U=document.getElementById("piedata_global_form");U&&U.submit()}},WZ=Kz;var Az={};function g(){return Az}var DZ=new Map;var _Z=(U)=>{return DZ.has(U)?DZ.get(U):null};var VZ,Pz={isClient(){return!0},readSid(){return VZ},setSid(U){VZ=U},readWebStorage(U,Z){let $=g(),z=U==="local"?$.storage:$.sessionStorage;return z?z.getItem(Z):null},async readWebStorageAsync(U,Z){let $=g(),z=U==="local"?$.asyncStorage:$.asyncSessionStorage;if(z)return z.getItem(Z);let T=U==="local"?$.storage:$.sessionStorage;return T?T.getItem(Z):null},readCookie(U){let Z=g();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=g();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=g();return Z.getInput?Z.getInput(U):_Z(U)},submitGlobalForm(){g().submitForm?.()}},FZ=Pz;var Mz=typeof navigator<"u"&&navigator.product==="ReactNative",Rz=Mz?FZ:WZ,R=Rz;var r=A("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function KZ(){r.resolve?.()}function NU(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!r.promise)r.promise=new Promise((U)=>{r.resolve=()=>{U()}});return r.promise}var Nz=({children:U})=>{let Z=Lz(S),$=t(),z=TU($,"socketIO"),T=(H)=>{if(R.isClient())R.setSid(H.sid),KZ(),console.log(`SocketIO initialized: ${R.readSid()}`)};return wz(()=>{if(!Z)return;let H=()=>{console.log("SocketIO connected")},J=(G)=>{console.log(`SocketIO disconnected: ${G}`),Z.connect()};if(z)Z.on("pieinit",T),Z.on("connect",H),Z.on("disconnect",J),Z.connect();return()=>{if(z)Z.off("pieinit",T),Z.off("connect",H),Z.off("disconnect",J),Z.disconnect()}},[Z,z]),U},JU=Nz;import{useContext as Ez,useEffect as jz}from"react";var Cz=({children:U})=>{let Z=Ez(y),$=t(),z=TU($,"centrifuge");return jz(()=>{if(!Z)return;let T=()=>{console.log("Centrifuge connected")},H=(J)=>{console.log("Centrifuge disconnected:",J)};if(z)Z.on("connected",T),Z.on("disconnected",H),Z.connect();return()=>{if(z)Z.disconnect()}},[Z,z]),U},IU=Cz;import{createAxiosDateTransformer as Sz}from"axios-date-transformer";import{jsx as fz}from"react/jsx-runtime";function AZ(U,Z,$){if(!Z)return $;let z=U.replace(/^\//,""),T=Z[z];if(!T)return $;return fz(VU,{uiConfig:T})}import{jsx as L,Fragment as mz}from"react/jsx-runtime";var bz=({location:U,fallback:Z,piecache:$,onError:z,queryOptions:T,disableGlobalForm:H})=>{let J=i(),G=a(),I=k(),Y=n(()=>Sz({baseURL:J||""}),[J]),D=n(()=>c(),[]),O=n(()=>J?UU(J):null,[J]),V=n(()=>J?e(J,G):null,[J,G]),{data:B,isLoading:q,error:_}=yz({queryKey:["uiConfig",U.pathname+U.search,J],enabled:!!J,queryFn:async()=>{let P=new URLSearchParams(U.search);P.set("__pieroot","web");let W="/api/content"+U.pathname+"?"+P.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",W);let X=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(I)console.log("[PieRoot] Received UI configuration:",X.data);return X.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(P)=>Math.min(1000*2**P,30000),...T}),F=AZ(U.pathname,$,Z);if(!J)return F??null;if(I)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!$);if(_){if(I)console.error("[PieRoot] Error fetching UI configuration:",_),console.error("[PieRoot] Error details:",{message:_.message,status:_.response?.status,data:_.response?.data});return z?.(_),F}if(q||!B){if(I)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!B});return F}if(I)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L(b.Provider,{value:D,children:L(S.Provider,{value:O,children:L(y.Provider,{value:V,children:L(N.Provider,{value:Z??L(mz,{}),children:L(JU,{children:L(IU,{children:H?L(w,{uiConfig:B}):L("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:L(w,{uiConfig:B})})})})})})})})},vz=(U)=>{let Z=n(()=>new xz,[]),$=U.queryClient??Z;return L(x.Provider,{value:U.onNavigate,children:L(d.Provider,{value:U.config,children:L(v.Provider,{value:U.onError,children:L(kz,{client:$,children:L(bz,{...U})})})})})},EU=vz;import{useMemo as jU,useState as pz}from"react";import{QueryClient as hz,QueryClientProvider as gz}from"@tanstack/react-query";import{jsx as j,Fragment as cz}from"react/jsx-runtime";var uz=({location:U,fallback:Z,children:$,disableGlobalForm:z})=>{let T=i(),H=a(),J=k(),G=jU(()=>c(),[]),I=jU(()=>T?UU(T):null,[T]),Y=jU(()=>T?e(T,H):null,[T,H]);if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",H),console.log("[PieRoot] Fallback provided:",!!Z);return j(b.Provider,{value:G,children:j(S.Provider,{value:I,children:j(y.Provider,{value:Y,children:j(N.Provider,{value:Z??j(cz,{}),children:j(JU,{children:j(IU,{children:z?$:j("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},dz=(U)=>{let[Z]=pz(()=>new hz),$=U.queryClient??Z;return j(x.Provider,{value:U.onNavigate,children:j(d.Provider,{value:U.config,children:j(v.Provider,{value:U.onError,children:j(gz,{client:$,children:j(uz,{...U})})})})})},oz=dz;import{useMemo as lz}from"react";import{jsx as PZ}from"react/jsx-runtime";var iz=PZ("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),sz=({apiServer:U,pathname:Z="/",search:$="",centrifugeServer:z,fallback:T,enableRenderingLog:H=!1})=>{let J=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",G=lz(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:H,pageProcessor:"web"}),[J,z,H]);return PZ(EU,{location:{pathname:Z,search:$},config:G,fallback:T??iz,onNavigate:(Y)=>{if(typeof window<"u")window.history.pushState(null,"",Y)}})},rz=sz;import{useMemo as nz}from"react";var tz=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],az=new Set(["telegram:cloud","telegram:secure"]),GU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of tz){let $=Z+":";if(U.startsWith($))return{source:Z,key:U.slice($.length)}}return{source:"dom",key:U}},MZ=(U,Z=!1)=>{let{source:$,key:z}=GU(U);if($==="sid"){let H=R.readSid();if(!H)throw Error("SocketIO isn't initialized properly");return[H]}if($==="localStorage"||$==="sessionStorage")try{let H=R.readWebStorage($==="localStorage"?"local":"session",z);if(H===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[H]}catch(H){if(Z)console.warn(`Failed to read ${$} key ${z}:`,H);return[]}if($==="cookie"){let H=R.readCookie(z);if(H===null){if(Z)console.warn(`No cookie found for key ${z}`);return[]}return[H]}if($==="url"){let H=R.readUrlParams(z);if(!H.length&&Z)console.warn(`No URL query param found for key ${z}`);return H}if(az.has($)){if(Z)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=R.readDomInput(z);if(T===null){if(Z)console.warn(`No input found with name ${z}`);return[]}return T},ez=(U,Z,$)=>{let z=window.Telegram?.WebApp,T=U==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,H=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if($)console.warn(`${H} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(Z,(G,I)=>{if(G){if($)console.warn(`Failed to read ${H} key ${Z}:`,G);J([]);return}if(I==null||I===""){if($)console.warn(`No ${H} value found for key ${Z}`);J([]);return}J([I])})}catch(G){if($)console.warn(`Failed to read ${H} key ${Z}:`,G);J([])}})},RZ=async(U,Z=!1)=>{let{source:$,key:z}=GU(U);if($==="telegram:cloud"||$==="telegram:secure")return ez($,z,Z);if(($==="localStorage"||$==="sessionStorage")&&R.readWebStorageAsync)try{let T=await R.readWebStorageAsync($==="localStorage"?"local":"session",z);if(T===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[T]}catch(T){if(Z)console.warn(`Failed to read ${$} key ${z}:`,T);return[]}return MZ(U,Z)},UH=(U,Z={},$=[],z,T)=>{let H=T?.renderingLogEnabled??!1,J=T?.timeout,G=T?.retryPolicy,I=G?.maxRetries??0,Y=G?.baseDelay??1000,D=G?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",z,Z,$);return async(O={})=>{if(!R.isClient()){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!U){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await NU();let B=new FormData;for(let[F,P]of Object.entries({...Z,...O}))B.append(F,P);for(let F of $){let{key:P}=GU(F);for(let W of await RZ(F,H))B.append(P,W)}let q=V+"api/ajax_content"+z;U(null);let _;for(let F=0;F<=I;F++){if(F>0){let X=Y*2**(F-1);if(H)console.log(`AJAX retry ${F}/${I} after ${X}ms`);await new Promise((Q)=>setTimeout(Q,X))}let P=J!=null?new AbortController:null,W=P&&setTimeout(()=>P.abort(),J);try{let X=await fetch(q,{method:"POST",body:B,signal:P?.signal});if(W)clearTimeout(W);if(!X.ok&&D.includes(X.status)&&F<I){_=Error(`HTTP ${X.status}`);continue}let C=(X.headers.get("content-type")||"").includes("application/json");if(!!X.body?.getReader&&!C){let m=X.body.getReader(),p=new TextDecoder,u="";while(!0){let{done:YU,value:LZ}=await m.read();if(YU)break;u+=p.decode(LZ,{stream:!0});let CU=u.split(`
|
|
3
|
-
`);u=
|
|
2
|
+
import{useContext as KU,useEffect as FU,useRef as cU}from"react";import{createContext as fZ,useContext as bZ}from"react";var VU=globalThis,M=(U,Z)=>{let $=Symbol.for(U);if(!($ in VU))VU[$]=Z();return VU[$]};var c=M("@swarm.ing/pieui:context:pieConfig",()=>fZ(null)),p=()=>{let U=bZ(c);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},i=()=>{let{apiServer:U}=p();return U},UU=i,ZU=()=>{let{centrifugeServer:U}=p();return U};var f=()=>{let{enableRenderingLog:U}=p();return U},SU=f;var r=()=>{let{onLinkLost:U}=p();return U},a=()=>{let{onLinkRestored:U}=p();return U},DU="__piedemo__";import{createContext as kZ}from"react";import{Centrifuge as mU}from"centrifuge";var vU=M("@swarm.ing/pieui:centrifuge-cache",()=>new Map),$U=(U,Z)=>{if(!Z)return null;let $=`${U}::${Z}`,z=vU.get($);if(z)return z;async function T(){let J=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new mU.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let H=new mU(Z,{getToken:T});return vU.set($,H),H},SZ=M("@swarm.ing/pieui:context:centrifuge",()=>kZ(null)),b=SZ;import{io as mZ}from"socket.io-client";import{createContext as vZ}from"react";var hU=M("@swarm.ing/pieui:socket-cache",()=>new Map),zU=(U)=>{let Z=hU.get(U);if(Z)return Z;let $=mZ(U,{autoConnect:!1,transports:["websocket"]});return hU.set(U,$),$},hZ=M("@swarm.ing/pieui:context:socket",()=>vZ(null)),k=hZ;import pZ from"mitt";import{createContext as gZ,useCallback as dZ,useContext as uZ}from"react";function l(){return M("@swarm.ing/pieui:mitt-emitter",()=>pZ())}var pU=M("@swarm.ing/pieui:context:mitt",()=>gZ(null));function cZ(U){let Z=uZ(pU);return dZ(($,z)=>{(Z??l()).emit(`pie${$}_${U}`,z)},[U,Z])}var S=pU;function gU(U){return U.wasRecovering===!0&&U.recovered===!1}function dU(U){return U.recoverable===!1}function uU(U,Z,$){let z=U.getSubscription(Z);if(z)return{subscription:z,createdHere:!1};return{subscription:U.newSubscription(Z,$),createdHere:!0}}import{jsx as sZ,jsxs as iZ,Fragment as oZ}from"react/jsx-runtime";var lZ=({card:U,data:Z,children:$,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:H=!1,centrifugeChannel:J=void 0,methods:X=void 0,stored:G=void 0,onResync:Y=void 0})=>{let _=SU(),q=cU(X);q.current=X;let V=cU(Y);if(V.current=Y,_)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:T,mitt:H,centrifugeChannel:J}),console.log("[PieCard] Methods:",X?Object.keys(X):"none"),console.log("[PieCard] Has children:",!!$);let B=KU(k),Q=KU(b),F=KU(S);if(FU(()=>{if(!B||!z||!q.current||!Z.name){if(_&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:z,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let A=Object.keys(q.current??{}).map((K)=>{let W=`pie${K}_${Z.name}`;if(_)console.log(`[PieCard] Socket.IO registering event: ${W}`);let D=(C)=>{q.current?.[K]?.(C)};return B.on(W,D),[W,D]});return()=>{A.forEach(([K,W])=>{if(_)console.log(`[PieCard] Socket.IO unregistering event: ${K}`);B.off(K,W)})}},[B,Z.name,z]),FU(()=>{if(!Q||!T||!J||!Z.name){if(_&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!Q,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let A=Object.keys(q.current??{}).map((K)=>{let W=`pie${K}_${Z.name}_${J}`;if(_)console.log(`[PieCard] Centrifuge subscribing to channel: ${W}`);let{subscription:D,createdHere:C}=uU(Q,W,{recoverable:!0,positioned:!0}),QU=(h)=>{if(_)console.log(`[PieCard] Centrifuge received data on ${W}:`,h.data);q.current?.[K]?.(h.data)},v=(h)=>{if(dU(h))console.warn(`[PieCard] Centrifuge channel ${W} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(gU(h)){if(_)console.log(`[PieCard] Centrifuge recovery gap on ${W}; requesting resync`);V.current?.({channel:W,reason:"gap"})}};return D.on("publication",QU),D.on("subscribed",v),D.subscribe(),{subscription:D,createdHere:C,onPublication:QU,onSubscribed:v}});return()=>{A.forEach(({subscription:K,createdHere:W,onPublication:D,onSubscribed:C})=>{if(_)console.log("[PieCard] Centrifuge unsubscribing from channel");if(K.off("publication",D),K.off("subscribed",C),W)K.unsubscribe(),Q.removeSubscription(K)})}},[Q,J,Z.name,T]),FU(()=>{if(!F||!H||!Z.name){if(_&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!F,useMittSupport:H,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let O=Object.keys(q.current??{}),A={};return O.forEach((K)=>{let W=`pie${K}_${Z.name}`,D=(C)=>{if(_)console.log(`[PieCard] Mitt registering event: ${W}`);q.current?.[K]?.(C)};A[W]=D,F.on(W,D)}),()=>{Object.entries(A).forEach(([K,W])=>{if(_)console.log(`[PieCard] Mitt unregistering event: ${K}`);F.off(K,W)})}},[F,Z.name,H]),_)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return iZ(oZ,{children:[sZ("input",{type:"hidden",name:Z.name,value:JSON.stringify(G)}),$]});return $},P=lZ;import{lazy as rZ}from"react";var g=new Map;function lU(U,Z){return Z.catch(()=>{if(g.get(U)===Z)g.delete(U)}),g.set(U,Z),Z}function OU(U,Z){return rZ(()=>{if(g.has(Z))return g.get(Z);return lU(Z,U().then(($)=>$))})}var oU=async(U,Z)=>{if(!Z)return;if(g.has(U))return g.get(U);return lU(U,Z().then(($)=>$))};var y=M("@swarm.ing/pieui:component-registry",()=>new Map),aZ=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let Z={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!Z.component&&Z.loader)Z.component=OU(Z.loader,U.name),Z.isLazy=!0;return Z};function I(U){let Z=aZ(U);return y.set(Z.name,Z),Z.component}var nZ=(U)=>{U.forEach((Z)=>I(Z))},tZ=(U)=>{y.delete(U)},eZ=(U)=>{return y.has(U)},U$=(U)=>{return y.get(U)?.metadata},n=(U)=>{return y.get(U)},Z$=()=>{return Array.from(y.keys())},$$=()=>{return y.size},iU=()=>Array.from(y.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),rU=(U)=>{let Z=y.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return oU(U,Z.loader)},sU=!1,z$=()=>{if(sU||typeof window>"u")return;sU=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=iU(),$="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=Z.length)return;$(()=>{Promise.resolve().then(()=>rU(Z[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};import{useContext as aU,memo as V$}from"react";import{createContext as H$}from"react";import{jsx as G$,Fragment as J$}from"react/jsx-runtime";var T$=M("@swarm.ing/pieui:context:fallback",()=>H$(G$(J$,{}))),L=T$;import{createContext as X$}from"react";var Y$=M("@swarm.ing/pieui:context:lazyError",()=>X$(void 0)),m=Y$;import{Component as B$,Suspense as q$}from"react";import{jsx as _$}from"react/jsx-runtime";var Q$=2,W$=400;class o extends B${state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<Q$){let Z=W$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},Z)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return _$(q$,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as IU}from"react/jsx-runtime";function D$({uiConfig:U,setUiAjaxConfiguration:Z}){let $=aU(L),z=aU(m),T=f();if(T)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!Z);let H=n(U.card);if(!H?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(T)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let J=H.component,X=IU(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(H.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",H.name);return IU(o,{name:H.name,fallback:H.fallback?IU(H.fallback,{}):$,onError:z,children:X})}if(T)console.log("[UI] Rendering component directly:",H.name);return X}var R=V$(D$);import{useContext as nU}from"react";import{createContext as K$}from"react";var F$=M("@swarm.ing/pieui:context:uiRenderer",()=>K$(null)),j=F$;import{jsx as HU}from"react/jsx-runtime";function tU({uiConfig:U,setUiAjaxConfiguration:Z}){let $=nU(L),z=nU(m),T=f();if(T)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!Z);let H=n(U.card);if(!H?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(T)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(T)console.log("[UILoading] Rendering fallback for:",H.name);let G=H.fallback;return HU(G,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",H.name);let J=H.component,X=HU(j.Provider,{value:tU,children:HU(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(H.isLazy)return HU(o,{name:H.name,fallback:$,onError:z,children:X});return X}var MU=tU;import{useContext as O$}from"react";import{jsx as AU}from"react/jsx-runtime";var I$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=O$(j)??R;return AU(P,{card:z,data:U,children:AU("div",{style:T,id:z,children:Z.map((J,X)=>{return AU(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${X}`)})})})},eU=I$;var M$=I({name:"SequenceCard",component:eU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as A$}from"react";import{jsx as UZ}from"react/jsx-runtime";var P$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z}=U,T=A$(j)??R;return UZ(P,{card:z,data:U,children:Z.map((H,J)=>{return UZ(T,{uiConfig:H,setUiAjaxConfiguration:$},`children-${J}`)})})},ZZ=P$;var w$=I({name:"UnionCard",component:ZZ,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as j$,useState as E$}from"react";import C$ from"html-react-parser";import{useCallback as TU,useEffect as N$,useRef as PU,useState as R$}from"react";function L$(){let U=new AudioContext,Z=U.createOscillator(),$=Z.connect(U.createMediaStreamDestination());Z.start();let z=$.stream.getAudioTracks()[0];return z.enabled=!1,z}function wU(U=null,Z){let[$,z]=R$(!1),T=PU(null),H=PU(null),J=PU(null),X=TU(async(q,V=!0)=>{if(T.current)G();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))z(!1)},B.ontrack=(D)=>{if(U)U.srcObject=D.streams[0]},V){let D=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(D.getTracks()[0],D)}else{let D=L$();B.addTrack(D)}let Q=B.createDataChannel("oai-events");H.current=Q,J.current=new Promise((D)=>{Q.addEventListener("open",()=>{D()})});let F=await B.createOffer();await B.setLocalDescription(F);let W=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:F.sdp,headers:{Authorization:`Bearer ${q}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:W}),T.current=B,await J.current},[U]),G=TU(()=>{let q=H.current;if(q)q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,H.current=null,J.current=null},[U]),Y=TU((q)=>{let V=H.current;if(!V){console.error("Data channel is not ready",q);return}let B=new Date().toLocaleTimeString();if(q.event_id=q.event_id||crypto.randomUUID(),V.send(JSON.stringify(q)),!q.timestamp)q.timestamp=B;Z?.(q)},[Z,U]),_=TU((q)=>{if(!H.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(J.current)J.current.then(B);else B()},[Z,U]);return N$(()=>{let q=H.current;if(!q)return;let V=(B)=>{let Q=JSON.parse(B.data);if(!Q.timestamp)Q.timestamp=new Date().toLocaleTimeString();Z?.(Q)};return q.addEventListener("message",V),()=>{q.removeEventListener("message",V)}},[Z,U]),{isSessionActive:$,startSession:X,stopSession:G,sendTextMessage:_}}import{jsx as x$}from"react/jsx-runtime";var y$=({data:U})=>{let{html:Z,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:H}=U,[J,X]=E$(Z),{isSessionActive:G,startSession:Y,sendTextMessage:_}=wU(null,(Q)=>{if(console.log(Q.type,Q.type==="response.output_text.delta"&&Q.delta),Q.type==="response.output_text.delta"&&Q.delta)X((F)=>F+Q.delta)});return j$(()=>{X(Z)},[Z]),x$(P,{card:"HTMLEmbedCard",data:U,methods:{update:(Q)=>{X(Q.value)},generateUsingAI:async(Q)=>{try{if(!G&&Q.token)await Y(Q.token,!1);_(Q.prompt)}catch(F){console.error("Failed to generate using AI",F)}},initializeAI:async(Q)=>{if(!G&&Q.token)await Y(Q.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:$,useMittSupport:T,centrifugeChannel:H,children:C$(J)})},$Z=y$;var f$=I({name:"HTMLEmbedCard",component:$Z,metadata:{author:"Swarm.ing"}});import{useEffect as b$,useState as k$}from"react";import{jsx as zZ}from"react/jsx-runtime";var S$=({data:U})=>{let{name:Z,value:$,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J}=U,[X,G]=k$($);return b$(()=>{G($)},[$]),zZ(P,{card:"HiddenCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J,methods:{update:({value:Y})=>{G(Y)}},children:zZ("input",{type:"hidden",id:Z,name:Z,value:X})})},HZ=S$;var m$=I({name:"HiddenCard",component:HZ,metadata:{author:"Swarm.ing"}});import{useContext as TZ,useEffect as p$}from"react";import{createContext as v$}from"react";var h$=M("@swarm.ing/pieui:context:navigate",()=>v$(void 0)),x=h$;import{jsx as u$,Fragment as d$}from"react/jsx-runtime";var g$=({data:U})=>{let{url:Z}=U,$=TZ(x),z=TZ(L);return p$(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else $?.(Z)},[Z,$]),u$(d$,{children:z})},JZ=g$;var c$=I({name:"AutoRedirectCard",component:JZ,metadata:{author:"Swarm.ing"}});import{Bounce as l$,Slide as o$,Zoom as s$,Flip as i$}from"react-toastify";import{toast as r$,ToastContainer as a$}from"react-toastify";import{useContext as n$,useMemo as t$,useRef as e$}from"react";import{jsx as NU,Fragment as Tz}from"react/jsx-runtime";var Uz={bounce:l$,slide:o$,zoom:s$,flip:i$},Zz=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?Uz[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};r$(U.message,Z)},$z=(U)=>{console.log("Log event",U)},zz=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let Z=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},$=window.Notification.permission;if($==="granted"){Z();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")Z()})},Hz=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T}=U,H=n$(x),J=e$(H);J.current=H;let X=t$(()=>({alert:Zz,log:$z,push:zz,redirect:(G)=>{if(G.to){let Y=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.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 J.current?.(Y)}else window.location.reload()}}),[]);return NU(Tz,{children:NU(P,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T,methods:X,children:NU(a$,{})})})},GZ=Hz;var Jz=I({name:"IOEventsCard",component:GZ,metadata:{author:"Swarm.ing"}});import{useEffect as XZ,useState as Gz}from"react";import{jsx as YZ}from"react/jsx-runtime";var Xz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:X}=U,[G,Y]=Gz(z);return XZ(()=>{Y(z)},[z]),XZ(()=>{if(typeof window>"u")return;sessionStorage.setItem($,G)},[$,G]),YZ(P,{card:"SessionStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:X,methods:{update:({value:_})=>{Y(_)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:YZ("input",{type:"hidden",id:Z,name:Z,value:G})})},BZ=Xz;var Yz=I({name:"SessionStorageCard",component:BZ,metadata:{author:"PieData"}});import{useEffect as qZ,useState as Bz}from"react";import{jsx as QZ}from"react/jsx-runtime";var qz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:X}=U,[G,Y]=Bz(z);return qZ(()=>{Y(z)},[z]),qZ(()=>{if(typeof window>"u")return;localStorage.setItem($,G)},[$,G]),QZ(P,{card:"DeviceStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:X,methods:{update:({value:_})=>{Y(_)},remove:()=>{localStorage.removeItem($),Y("")}},children:QZ("input",{type:"hidden",id:Z,name:Z,value:G})})},WZ=qz;var Qz=I({name:"DeviceStorageCard",component:WZ,metadata:{author:"PieData"}});import{useCallback as RU,useContext as LU,useEffect as Wz,useRef as _z,useState as _Z}from"react";import{jsx as VZ}from"react/jsx-runtime";var Vz=({data:U,content:Z})=>{let{useLoader:$,noReturn:z,returnType:T,useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G}=U,Y=LU(L),_=LU(j)??R,[q,V]=_Z(!1),[B,Q]=_Z(null),F=_z(Z),O=LU(S),A=RU((D)=>{if(D===null)V(!0);else if(V(!1),!z)F.current=D;if(!z)Q(D)},[z]),K=RU((D)=>{F.current=D.content,Q(D.content)},[]),W=RU((D)=>{if(D===null)V(!0);else if(V(!1),!z)for(let C of D)O?.emit(C.name,C.data)},[z,O]);if(Wz(()=>{Q(Z),V(!1)},[Z]),!B&&$)return Y;return VZ(P,{card:"AjaxGroupCard",data:U,methods:{changeContent:K},useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G,children:VZ(_,{uiConfig:B??F.current,setUiAjaxConfiguration:T==="events"?W:A})})},DZ=Vz;var Dz=I({name:"AjaxGroupCard",component:DZ,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as KZ}from"react";import{jsx as jU}from"react/jsx-runtime";var Kz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,url:T,sx:H}=U,J=KZ(x),X=KZ(j)??R;return jU(P,{card:z,data:U,children:jU("div",{style:H,id:z,onClick:(Y)=>{if(T)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:jU(X,{setUiAjaxConfiguration:$,uiConfig:Z})})})},FZ=Kz;var Fz=I({name:"BoxCard",component:FZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Oz}from"react";import{jsx as EU}from"react/jsx-runtime";var Iz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=Oz(j)??R;return EU(P,{card:z,data:U,children:EU("div",{style:T,id:z,children:Z.map((J,X)=>{return EU(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${X}`)})})})},OZ=Iz;var Mz=I({name:"OneOfCard",component:OZ,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as e}from"react";import{QueryClient as mz,QueryClientProvider as vz,useQuery as hz}from"@tanstack/react-query";import{useContext as Cz,useEffect as yz,useRef as yU}from"react";import{useEffect as Az,useState as Pz}from"react";var JU=new Map,GU=new Map;function XU(U,Z){let $=`${U}::${Z}`,z=U?JU.get($):void 0,[T,H]=Pz(z??null);return Az(()=>{if(!U)return;if(JU.has($)){H(JU.get($));return}let J=GU.get($);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return JU.set($,G),GU.delete($),G}).catch((G)=>{throw GU.delete($),G}),GU.set($,J);let X=!1;return J.then((G)=>{if(!X)H(G)}).catch(()=>{}),()=>{X=!0}},[U,Z,$]),T}var wz=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let $ of Z){let z=$.indexOf("=");if((z===-1?$:$.slice(0,z)).trim()===U){let H=z===-1?"":$.slice(z+1).trim();try{return decodeURIComponent(H)}catch{return H}}}return null},Nz={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,Z){return(U==="local"?window.localStorage:window.sessionStorage).getItem(Z)},readCookie:wz,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let $=Z[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 U=document.getElementById("piedata_global_form");U&&U.submit()}},IZ=Nz;var Rz={};function d(){return Rz}var MZ=new Map;var AZ=(U)=>{return MZ.has(U)?MZ.get(U):null};var PZ,Lz={isClient(){return!0},readSid(){return PZ},setSid(U){PZ=U},readWebStorage(U,Z){let $=d(),z=U==="local"?$.storage:$.sessionStorage;return z?z.getItem(Z):null},async readWebStorageAsync(U,Z){let $=d(),z=U==="local"?$.asyncStorage:$.asyncSessionStorage;if(z)return z.getItem(Z);let T=U==="local"?$.storage:$.sessionStorage;return T?T.getItem(Z):null},readCookie(U){let Z=d();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=d();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=d();return Z.getInput?Z.getInput(U):AZ(U)},submitGlobalForm(){d().submitForm?.()}},wZ=Lz;var jz=typeof navigator<"u"&&navigator.product==="ReactNative",Ez=jz?wZ:IZ,w=Ez;var t=M("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function NZ(){t.resolve?.()}function CU(){if(!w.isClient())return Promise.resolve();if(w.readSid()!==void 0)return Promise.resolve();if(!t.promise)t.promise=new Promise((U)=>{t.resolve=()=>{U()}});return t.promise}function s(U,Z){if(Z==="up")return{state:"up",signal:U==="down"?"restored":null};return{state:"down",signal:U==="up"?"lost":null}}var xz=({children:U})=>{let Z=Cz(k),$=UU(),z=XU($,"socketIO"),T=r(),H=a(),J=yU(T);J.current=T;let X=yU(H);X.current=H;let G=yU("initial"),Y=(_)=>{if(w.isClient())w.setSid(_.sid),NZ(),console.log(`SocketIO initialized: ${w.readSid()}`)};return yz(()=>{if(!Z||!z)return;let _=()=>{let{state:V,signal:B}=s(G.current,"up");if(G.current=V,B==="restored")X.current?.("socketio");console.log("SocketIO connected")},q=(V)=>{if(console.log(`SocketIO disconnected: ${V}`),Z.connect(),V==="io client disconnect")return;let{state:B,signal:Q}=s(G.current,"down");if(G.current=B,Q==="lost")J.current?.("socketio",V)};return Z.on("pieinit",Y),Z.on("connect",_),Z.on("disconnect",q),Z.connect(),()=>{Z.off("pieinit",Y),Z.off("connect",_),Z.off("disconnect",q),Z.disconnect()}},[Z,z]),U},YU=xz;import{useContext as fz,useEffect as bz,useRef as xU}from"react";var kz=({children:U})=>{let Z=fz(b),$=UU(),z=XU($,"centrifuge"),T=r(),H=a(),J=xU(T);J.current=T;let X=xU(H);X.current=H;let G=xU("initial");return bz(()=>{if(!Z||!z)return;let Y=(V)=>{let{state:B,signal:Q}=s(G.current,"down");if(G.current=B,Q==="lost")J.current?.("centrifuge",V)},_=()=>{let{state:V,signal:B}=s(G.current,"up");if(G.current=V,B==="restored")X.current?.("centrifuge");console.log("Centrifuge connected")},q=(V)=>{console.log("Centrifuge disconnected:",V),Y(V)};return Z.on("connecting",Y),Z.on("connected",_),Z.on("disconnected",q),Z.connect(),()=>{Z.off("connecting",Y),Z.off("connected",_),Z.off("disconnected",q),Z.disconnect()}},[Z,z]),U},BU=kz;import{createAxiosDateTransformer as pz}from"axios-date-transformer";import{jsx as Sz}from"react/jsx-runtime";function RZ(U,Z,$){if(!Z)return $;let z=U.replace(/^\//,""),T=Z[z];if(!T)return $;return Sz(MU,{uiConfig:T})}import{jsx as N,Fragment as uz}from"react/jsx-runtime";var gz=({location:U,fallback:Z,piecache:$,onError:z,queryOptions:T,disableGlobalForm:H})=>{let J=i(),X=ZU(),G=f(),Y=e(()=>pz({baseURL:J||""}),[J]),_=e(()=>l(),[]),q=e(()=>J?zU(J):null,[J]),V=e(()=>J?$U(J,X):null,[J,X]),{data:B,isLoading:Q,error:F}=hz({queryKey:["uiConfig",U.pathname+U.search,J],enabled:!!J,queryFn:async()=>{let A=new URLSearchParams(U.search);A.set("__pieroot","web");let K="/api/content"+U.pathname+"?"+A.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",K);let W=await Y.get(K,{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:",W.data);return W.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(A)=>Math.min(1000*2**A,30000),...T}),O=RZ(U.pathname,$,Z);if(!J)return O??null;if(G)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",X),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!$);if(F){if(G)console.error("[PieRoot] Error fetching UI configuration:",F),console.error("[PieRoot] Error details:",{message:F.message,status:F.response?.status,data:F.response?.data});return z?.(F),O}if(Q||!B){if(G)console.log("[PieRoot] Loading state:",{isLoading:Q,hasUiConfiguration:!!B});return O}if(G)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return N(S.Provider,{value:_,children:N(k.Provider,{value:q,children:N(b.Provider,{value:V,children:N(L.Provider,{value:Z??N(uz,{}),children:N(YU,{children:N(BU,{children:H?N(R,{uiConfig:B}):N("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:N(R,{uiConfig:B})})})})})})})})},dz=(U)=>{let Z=e(()=>new mz,[]),$=U.queryClient??Z;return N(x.Provider,{value:U.onNavigate,children:N(c.Provider,{value:U.config,children:N(m.Provider,{value:U.onError,children:N(vz,{client:$,children:N(gz,{...U})})})})})},fU=dz;import{useMemo as bU,useState as cz}from"react";import{QueryClient as lz,QueryClientProvider as oz}from"@tanstack/react-query";import{jsx as E,Fragment as rz}from"react/jsx-runtime";var sz=({location:U,fallback:Z,children:$,disableGlobalForm:z})=>{let T=i(),H=ZU(),J=f(),X=bU(()=>l(),[]),G=bU(()=>T?zU(T):null,[T]),Y=bU(()=>T?$U(T,H):null,[T,H]);if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",H),console.log("[PieRoot] Fallback provided:",!!Z);return E(S.Provider,{value:X,children:E(k.Provider,{value:G,children:E(b.Provider,{value:Y,children:E(L.Provider,{value:Z??E(rz,{}),children:E(YU,{children:E(BU,{children:z?$:E("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},iz=(U)=>{let[Z]=cz(()=>new lz),$=U.queryClient??Z;return E(x.Provider,{value:U.onNavigate,children:E(c.Provider,{value:U.config,children:E(m.Provider,{value:U.onError,children:E(oz,{client:$,children:E(sz,{...U})})})})})},az=iz;import{useMemo as nz}from"react";import{jsx as LZ}from"react/jsx-runtime";var tz=LZ("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),ez=({apiServer:U,pathname:Z="/",search:$="",centrifugeServer:z,fallback:T,enableRenderingLog:H=!1})=>{let J=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",X=nz(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:H,pageProcessor:"web"}),[J,z,H]);return LZ(fU,{location:{pathname:Z,search:$},config:X,fallback:T??tz,onNavigate:(Y)=>{if(typeof window<"u")window.history.pushState(null,"",Y)}})},UH=ez;import{useMemo as ZH}from"react";var $H=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],zH=new Set(["telegram:cloud","telegram:secure"]),qU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of $H){let $=Z+":";if(U.startsWith($))return{source:Z,key:U.slice($.length)}}return{source:"dom",key:U}},jZ=(U,Z=!1)=>{let{source:$,key:z}=qU(U);if($==="sid"){let H=w.readSid();if(!H)throw Error("SocketIO isn't initialized properly");return[H]}if($==="localStorage"||$==="sessionStorage")try{let H=w.readWebStorage($==="localStorage"?"local":"session",z);if(H===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[H]}catch(H){if(Z)console.warn(`Failed to read ${$} key ${z}:`,H);return[]}if($==="cookie"){let H=w.readCookie(z);if(H===null){if(Z)console.warn(`No cookie found for key ${z}`);return[]}return[H]}if($==="url"){let H=w.readUrlParams(z);if(!H.length&&Z)console.warn(`No URL query param found for key ${z}`);return H}if(zH.has($)){if(Z)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=w.readDomInput(z);if(T===null){if(Z)console.warn(`No input found with name ${z}`);return[]}return T},HH=(U,Z,$)=>{let z=window.Telegram?.WebApp,T=U==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,H=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if($)console.warn(`${H} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(Z,(X,G)=>{if(X){if($)console.warn(`Failed to read ${H} key ${Z}:`,X);J([]);return}if(G==null||G===""){if($)console.warn(`No ${H} value found for key ${Z}`);J([]);return}J([G])})}catch(X){if($)console.warn(`Failed to read ${H} key ${Z}:`,X);J([])}})},EZ=async(U,Z=!1)=>{let{source:$,key:z}=qU(U);if($==="telegram:cloud"||$==="telegram:secure")return HH($,z,Z);if(($==="localStorage"||$==="sessionStorage")&&w.readWebStorageAsync)try{let T=await w.readWebStorageAsync($==="localStorage"?"local":"session",z);if(T===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[T]}catch(T){if(Z)console.warn(`Failed to read ${$} key ${z}:`,T);return[]}return jZ(U,Z)},TH=(U,Z={},$=[],z,T)=>{let H=T?.renderingLogEnabled??!1,J=T?.timeout,X=T?.retryPolicy,G=X?.maxRetries??0,Y=X?.baseDelay??1000,_=X?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",z,Z,$);return async(q={})=>{if(!w.isClient()){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!U){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await CU();let B=new FormData;for(let[O,A]of Object.entries({...Z,...q}))B.append(O,A);for(let O of $){let{key:A}=qU(O);for(let K of await EZ(O,H))B.append(A,K)}let Q=V+"api/ajax_content"+z;U(null);let F;for(let O=0;O<=G;O++){if(O>0){let W=Y*2**(O-1);if(H)console.log(`AJAX retry ${O}/${G} after ${W}ms`);await new Promise((D)=>setTimeout(D,W))}let A=J!=null?new AbortController:null,K=A&&setTimeout(()=>A.abort(),J);try{let W=await fetch(Q,{method:"POST",body:B,signal:A?.signal});if(K)clearTimeout(K);if(!W.ok&&_.includes(W.status)&&O<G){F=Error(`HTTP ${W.status}`);continue}let C=(W.headers.get("content-type")||"").includes("application/json");if(!!W.body?.getReader&&!C){let v=W.body.getReader(),h=new TextDecoder,u="";while(!0){let{done:WU,value:CZ}=await v.read();if(WU)break;u+=h.decode(CZ,{stream:!0});let kU=u.split(`
|
|
3
|
+
`);u=kU.pop()??"";for(let yZ of kU){let _U=yZ.trim();if(!_U)continue;try{let xZ=JSON.parse(_U);U([xZ])}catch{if(H)console.warn("Failed to parse streamed line:",_U)}}}if(u.trim())try{let WU=JSON.parse(u);U([WU])}catch{if(H)console.warn("Failed to parse final streamed line:",u)}return{}}else{let v=await W.json();return U(v),v}}catch(W){if(K)clearTimeout(K);if(F=W,O<G)continue;if(H)console.error("AJAX request failed:",W);return U(null),W}}if(H)console.error("AJAX request failed after retries:",F);return U(null),F}},JH=(U,Z={},$=[],z,T)=>{let{apiServer:H,enableRenderingLog:J}=p(),X=JSON.stringify(Z),G=JSON.stringify($),Y=JSON.stringify(T);return ZH(()=>TH(U,Z,$,z,{apiServer:H,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[U,X,G,z,H,J,Y])};import{clsx as GH}from"clsx";import{twMerge as XH}from"tailwind-merge";function YH(...U){return XH(GH(U))}var BH=()=>{w.submitGlobalForm()};var qH=(U,Z)=>`${U}${DU}${Z}`;export{cZ as usePieEmit,a as useOnLinkRestored,r as useOnLinkLost,JH as useAjaxSubmit,tZ as unregisterComponent,OU as trackLazy,BH as submitGlobalForm,y as registry,I as registerPieComponent,nZ as registerMultipleComponents,EZ as readAjaxKeyAsync,jZ as readAjaxKey,rU as preloadComponent,z$ as prefetchLazyComponents,qH as pieName,qU as parseDepName,eZ as hasComponent,$$ as getRegistrySize,n as getRegistryEntry,iU as getLazyComponentNames,l as getEmitter,U$ as getComponentMeta,Z$ as getAllRegisteredComponents,YH as cn,w$ as UnionCard,j as UIRendererContext,MU as UILoading,R as UI,k as SocketIOContext,Yz as SessionStorageCard,M$ as SequenceCard,fU as PieRoot,UH as PiePreviewRoot,c as PieConfigContext,P as PieCard,az as PieBaseRoot,DU as PIEBREAK,Mz as OneOfCard,S as MittContext,Jz as IOEventsCard,m$ as HiddenCard,f$ as HTMLEmbedCard,L as FallbackContext,Qz as DeviceStorageCard,b as CentrifugeIOContext,Fz as BoxCard,c$ as AutoRedirectCard,Dz as AjaxGroupCard};
|