@swarm.ing/pieui 2.0.25 → 2.0.26
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/__tests__/step7-storybook.test.d.cts +2 -0
- package/dist/__tests__/step7-storybook.test.d.cts.map +1 -0
- package/dist/cli.js +3974 -3445
- package/dist/code/args.d.ts.map +1 -1
- package/dist/code/commands/add.d.ts.map +1 -1
- package/dist/code/commands/cardAddFromMeta.d.ts.map +1 -1
- package/dist/code/commands/cardAddStory.d.ts +2 -0
- package/dist/code/commands/cardAddStory.d.ts.map +1 -0
- package/dist/code/commands/cardCheckSync.d.ts +10 -0
- package/dist/code/commands/cardCheckSync.d.ts.map +1 -1
- package/dist/code/commands/cardDumpMetadata.d.ts +6 -0
- package/dist/code/commands/cardDumpMetadata.d.ts.map +1 -1
- package/dist/code/commands/cardPull.d.ts.map +1 -1
- package/dist/code/commands/cardRemote/history.d.ts.map +1 -1
- package/dist/code/commands/cardRemote/public.d.ts.map +1 -1
- package/dist/code/commands/cardRemote/push.d.ts.map +1 -1
- package/dist/code/commands/cardView.d.ts.map +1 -1
- package/dist/code/commands/create.d.ts.map +1 -1
- package/dist/code/commands/createPieApp.d.ts.map +1 -1
- package/dist/code/commands/init.d.ts.map +1 -1
- package/dist/code/commands/login.d.ts.map +1 -1
- package/dist/code/commands/pageAdd.d.ts.map +1 -1
- package/dist/code/commands/pageAjax.d.ts.map +1 -1
- package/dist/code/commands/remove.d.ts.map +1 -1
- package/dist/code/commands/selfUpgrade.d.ts.map +1 -1
- package/dist/code/introspection/cardMetadata.d.ts.map +1 -0
- package/dist/code/{metadataCompare.d.ts → introspection/compare.d.ts} +1 -1
- package/dist/code/introspection/compare.d.ts.map +1 -0
- package/dist/code/introspection/errors.d.ts.map +1 -1
- package/dist/code/introspection/extractEvents.d.ts.map +1 -1
- package/dist/code/introspection/extractEventsPayloads.d.ts +33 -8
- package/dist/code/introspection/extractEventsPayloads.d.ts.map +1 -1
- package/dist/code/introspection/extractImports.d.ts.map +1 -1
- package/dist/code/introspection/findDataType.d.ts.map +1 -1
- package/dist/code/introspection/index.d.ts +5 -1
- package/dist/code/introspection/index.d.ts.map +1 -1
- package/dist/code/{scan.d.ts → introspection/scan.d.ts} +1 -1
- package/dist/code/introspection/scan.d.ts.map +1 -0
- package/dist/code/{schema.d.ts → introspection/schemaPatch.d.ts} +1 -1
- package/dist/code/introspection/schemaPatch.d.ts.map +1 -0
- package/dist/code/introspection/typeToSchema.d.ts.map +1 -1
- package/dist/code/patchPieCardForwarding.d.ts +22 -0
- package/dist/code/patchPieCardForwarding.d.ts.map +1 -0
- package/dist/code/printRequirements.d.ts +1 -0
- package/dist/code/printRequirements.d.ts.map +1 -1
- package/dist/code/services/models.d.ts.map +1 -1
- package/dist/code/services/projectLinks.d.ts +30 -0
- package/dist/code/services/projectLinks.d.ts.map +1 -0
- package/dist/code/services/storage.d.ts.map +1 -1
- package/dist/code/storybookIntegration.d.ts +28 -0
- package/dist/code/storybookIntegration.d.ts.map +1 -0
- package/dist/code/types.d.ts +10 -2
- package/dist/code/types.d.ts.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +2 -2
- package/dist/index.js +2 -2
- package/dist/storybook/addon/Panel.d.ts +5 -0
- package/dist/storybook/addon/Panel.d.ts.map +1 -0
- package/dist/storybook/addon/constants.d.ts +22 -0
- package/dist/storybook/addon/constants.d.ts.map +1 -0
- package/dist/storybook/addon/index.d.ts +11 -0
- package/dist/storybook/addon/index.d.ts.map +1 -0
- package/dist/storybook/addon/index.esm.js +2 -0
- package/dist/storybook/addon/index.js +2 -0
- package/dist/storybook/addon/manager.d.ts +2 -0
- package/dist/storybook/addon/manager.d.ts.map +1 -0
- package/dist/storybook/addon/manager.esm.js +3 -0
- package/dist/storybook/addon/manager.js +3 -0
- package/dist/storybook/addon/preset.d.cts +2 -0
- package/dist/storybook/addon/preset.d.cts.map +1 -0
- package/dist/storybook/addon/preset.js +20 -0
- package/dist/storybook/index.d.ts +29 -0
- package/dist/storybook/index.d.ts.map +1 -0
- package/dist/storybook/index.esm.js +2 -0
- package/dist/storybook/index.js +2 -0
- package/dist/util/ajaxCommonUtils.d.ts.map +1 -1
- package/package.json +25 -3
- package/dist/code/cardMetadata.d.ts.map +0 -1
- package/dist/code/metadataCompare.d.ts.map +0 -1
- package/dist/code/scan.d.ts.map +0 -1
- package/dist/code/schema.d.ts.map +0 -1
- /package/dist/code/{cardMetadata.d.ts → introspection/cardMetadata.d.ts} +0 -0
package/dist/index.esm.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useContext as If,useEffect as Cf,useRef as yU}from"react";import{createContext as WU,useContext as QU}from"react";var j=WU(null),h=()=>{let f=QU(j);if(!f)throw new Error("usePieConfig must be used within PieConfigProvider");return f},x=()=>{let{apiServer:f}=h();return f},e=x,u=()=>{let{centrifugeServer:f}=h();return f};var N=()=>{let{enableRenderingLog:f}=h();return f},Lf=N,Af=()=>{let{pageProcessor:f}=h();return f};var Tf="__piedemo__";import{createContext as RU}from"react";import{Centrifuge as Nf}from"centrifuge";var yf=new Map,d=(f,U)=>{if(!U)return null;let D=`${f}::${U}`,H=yf.get(D);if(H)return H;async function P(){let Z=await fetch(f+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new Nf.UnauthorizedError("Backend is not answering");throw new Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let $=new Nf(U,{getToken:P});return yf.set(D,$),$},_U=RU(null),o=_U;import{io as wU}from"socket.io-client";import{createContext as KU}from"react";var of=new Map,b=(f)=>{let U=of.get(f);if(U)return U;let D=wU(f,{autoConnect:!1,transports:["websocket"]});return of.set(f,D),D},SU=KU(null),m=SU;import FU from"mitt";import{createContext as MU,useCallback as LU,useContext as AU}from"react";var Vf=null;function E(){if(!Vf)Vf=FU();return Vf}var mf=MU(null);function NU(f){let U=AU(mf);return LU((D,H)=>{(U??E()).emit(`pie${D}_${f}`,H)},[f,U])}var S=mf;import{jsx as EU,jsxs as kU,Fragment as mU}from"react/jsx-runtime";var oU=({card:f,data:U,children:D,useSocketioSupport:H=!1,useCentrifugeSupport:P=!1,useMittSupport:$=!1,centrifugeChannel:Z=void 0,methods:V=void 0,stored:z=void 0})=>{let T=Lf(),I=yU(V);if(I.current=V,T)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:H,centrifuge:P,mitt:$,centrifugeChannel:Z}),console.log("[PieCard] Methods:",V?Object.keys(V):"none"),console.log("[PieCard] Has children:",!!D);let X=If(m),G=If(o),J=If(S);if(Cf(()=>{if(!X||!H||!I.current||!U.name){if(T&&H)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!X,useSocketioSupport:H,hasMethods:!!I.current,hasDataName:!!U?.name});return}let q=Object.keys(I.current??{}).map((C)=>{let O=`pie${C}_${U.name}`;if(T)console.log(`[PieCard] Socket.IO registering event: ${O}`);let W=(B)=>{I.current?.[C]?.(B)};return X.on(O,W),[O,W]});return()=>{q.forEach(([C,O])=>{if(T)console.log(`[PieCard] Socket.IO unregistering event: ${C}`);X.off(C,O)})}},[X,U.name,H]),Cf(()=>{if(!G||!P||!Z||!U.name){if(T&&P)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!G,useCentrifugeSupport:P,hasCentrifugeChannel:!!Z,hasMethods:!!I.current,hasDataName:!!U?.name});return}let q=Object.keys(I.current??{}).map((C)=>{let O=`pie${C}_${U.name}_${Z}`;if(T)console.log(`[PieCard] Centrifuge subscribing to channel: ${O}`);let W=G.newSubscription(O);return W.on("publication",(B)=>{if(T)console.log(`[PieCard] Centrifuge received data on ${O}:`,B.data);I.current?.[C]?.(B.data)}),W.subscribe(),W});return()=>{q.forEach((C)=>{if(T)console.log("[PieCard] Centrifuge unsubscribing from channel");C.unsubscribe(),G.removeSubscription(C)})}},[G,Z,U.name,P]),Cf(()=>{if(!J||!$||!U.name){if(T&&$)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!J,useMittSupport:$,hasMethods:!!I.current,hasDataName:!!U?.name});return}let Y=Object.keys(I.current??{}),q={};return Y.forEach((C)=>{let O=`pie${C}_${U.name}`,W=(B)=>{if(T)console.log(`[PieCard] Mitt registering event: ${O}`);I.current?.[C]?.(B)};q[O]=W,J.on(O,W)}),()=>{Object.entries(q).forEach(([C,O])=>{if(T)console.log(`[PieCard] Mitt unregistering event: ${C}`);J.off(C,O)})}},[J,U.name,$]),T)console.log("[PieCard] Rendering complete, returning children");if(z!==void 0)return kU(mU,{children:[EU("input",{type:"hidden",name:U.name,value:JSON.stringify(z)}),D]});return D},_=oU;import{lazy as jU}from"react";var Jf=new Map;function Ef(f,U){return jU(()=>{if(Jf.has(U))return Jf.get(U);let D=f().then((H)=>H);return Jf.set(U,D),D})}var g=new Map,xU=(f)=>{if(!f.name)throw new Error("Component registration requires a name");if(!f.component&&!f.loader)throw new Error(`Component "${f.name}" requires component or loader`);let U={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=Ef(U.loader,f.name),U.loader=void 0,U.isLazy=!0;return U};function Q(f){let U=xU(f);return g.set(U.name,U),U.component}var uU=(f)=>{f.forEach((U)=>Q(U))},dU=(f)=>{g.delete(f)},bU=(f)=>{return g.has(f)},gU=(f)=>{return g.get(f)?.metadata},r=(f)=>{return g.get(f)},vU=()=>{return Array.from(g.keys())},pU=()=>{return g.size};import{Suspense as nU,useContext as iU,memo as tU}from"react";import{createContext as cU}from"react";import{jsx as rU,Fragment as lU}from"react/jsx-runtime";var hU=cU(rU(lU,{})),K=hU;import{jsx as Yf}from"react/jsx-runtime";function sU({uiConfig:f,setUiAjaxConfiguration:U}){let D=iU(K),H=N();if(H)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let P=r(f.card);if(!P?.component){if(H)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return D}if(H)console.log("[UI] Found component in registry:",{name:P.name,isLazy:P.isLazy,hasMetadata:!!P.metadata});let $=P.component,Z=Yf($,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(P.isLazy){if(H)console.log("[UI] Rendering lazy component with Suspense:",P.name);return Yf(nU,{fallback:P.fallback?Yf(P.fallback,{}):D,children:Z},`${P.name}`)}if(H)console.log("[UI] Rendering component directly:",P.name);return Z}var w=tU(sU);import{Suspense as fH,useContext as UH}from"react";import{createContext as aU}from"react";var eU=aU(null),y=eU;import{jsx as ff}from"react/jsx-runtime";function kf({uiConfig:f,setUiAjaxConfiguration:U}){let D=UH(K),H=N();if(H)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let P=r(f.card);if(!P?.component){if(H)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return D}if(H)console.log("[UILoading] Found component in registry:",{name:P.name,isLazy:P.isLazy,hasMetadata:!!P.metadata,hasFallback:!!P.fallback});if(P.fallback){if(H)console.log("[UILoading] Rendering fallback for:",P.name);let V=P.fallback;return ff(V,{})}if(H)console.log("[UILoading] No fallback, rendering full component:",P.name);let $=P.component,Z=ff(y.Provider,{value:kf,children:ff($,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(P.isLazy)return ff(fH,{fallback:D,children:Z},`${P.name}`);return Z}var Of=kf;import{useContext as HH}from"react";import{jsx as Xf}from"react/jsx-runtime";var PH=({data:f,content:U,setUiAjaxConfiguration:D})=>{let{name:H,sx:P}=f,$=HH(y)??w;return Xf(_,{card:H,data:f,children:Xf("div",{style:P,id:H,children:U.map((Z,V)=>{return Xf($,{uiConfig:Z,setUiAjaxConfiguration:D},`children-${V}`)})})})},jf=PH;var DH=Q({name:"SequenceCard",component:jf,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as ZH}from"react";import{jsx as xf}from"react/jsx-runtime";var $H=({data:f,content:U,setUiAjaxConfiguration:D})=>{let{name:H}=f,P=ZH(y)??w;return xf(_,{card:H,data:f,children:U.map(($,Z)=>{return xf(P,{uiConfig:$,setUiAjaxConfiguration:D},`children-${Z}`)})})},uf=$H;var zH=Q({name:"UnionCard",component:uf,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as CH,useState as JH}from"react";import YH from"html-react-parser";import{useCallback as Uf,useEffect as TH,useRef as Gf,useState as VH}from"react";function IH(){let f=new AudioContext,U=f.createOscillator(),D=U.connect(f.createMediaStreamDestination());U.start();let H=D.stream.getAudioTracks()[0];return H.enabled=!1,H}function Hf(f=null,U){let[D,H]=VH(!1),P=Gf(null),$=Gf(null),Z=Gf(null),V=Uf(async(X,G=!0)=>{if(P.current)z();let J=new RTCPeerConnection;if(J.onconnectionstatechange=()=>{if(J.connectionState==="connected")H(!0);else if(["disconnected","failed","closed"].includes(J.connectionState))H(!1)},J.ontrack=(R)=>{if(f)f.srcObject=R.streams[0]},G){let R=await navigator.mediaDevices.getUserMedia({audio:!0});J.addTrack(R.getTracks()[0],R)}else{let R=IH();J.addTrack(R)}let Y=J.createDataChannel("oai-events");$.current=Y,Z.current=new Promise((R)=>{Y.addEventListener("open",()=>{R()})});let q=await J.createOffer();await J.setLocalDescription(q);let B=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:q.sdp,headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/sdp"}})).text();await J.setRemoteDescription({type:"answer",sdp:B}),P.current=J,await Z.current},[f]),z=Uf(()=>{let X=$.current;if(X)X.close();P.current?.getSenders()?.forEach((G)=>G.track?.stop()),P.current?.close(),H(!1),P.current=null,$.current=null,Z.current=null},[f]),T=Uf((X)=>{let G=$.current;if(!G){console.error("Data channel is not ready",X);return}let J=new Date().toLocaleTimeString();if(X.event_id=X.event_id||crypto.randomUUID(),G.send(JSON.stringify(X)),!X.timestamp)X.timestamp=J;U?.(X)},[U,f]),I=Uf((X)=>{if(!$.current){console.error("Data channel is not ready");return}let J=()=>{T({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:X}]}}),T({type:"response.create"})};if(Z.current)Z.current.then(J);else J()},[U,f]);return TH(()=>{let X=$.current;if(!X)return;let G=(J)=>{let Y=JSON.parse(J.data);if(!Y.timestamp)Y.timestamp=new Date().toLocaleTimeString();U?.(Y)};return X.addEventListener("message",G),()=>{X.removeEventListener("message",G)}},[U,f]),{isSessionActive:D,startSession:V,stopSession:z,sendTextMessage:I}}import{jsx as XH}from"react/jsx-runtime";var OH=({data:f})=>{let{html:U,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:P,centrifugeChannel:$}=f,[Z,V]=JH(U),{isSessionActive:z,startSession:T,sendTextMessage:I}=Hf(null,(Y)=>{if(console.log(Y.type,Y.type==="response.output_text.delta"&&Y.delta),Y.type==="response.output_text.delta"&&Y.delta)V((q)=>q+Y.delta)});return CH(()=>{V(U)},[U]),XH(_,{card:"HTMLEmbedCard",data:f,methods:{update:(Y)=>{V(Y.value)},generateUsingAI:async(Y)=>{try{if(!z&&Y.token)await T(Y.token,!1);I(Y.prompt)}catch(q){console.error("Failed to generate using AI",q)}},initializeAI:async(Y)=>{if(!z&&Y.token)await T(Y.token,!1)}},useCentrifugeSupport:H,useSocketioSupport:D,useMittSupport:P,centrifugeChannel:$,children:YH(Z)})},df=OH;var GH=Q({name:"HTMLEmbedCard",component:df,metadata:{author:"Swarm.ing"}});import{useEffect as qH,useState as BH}from"react";import{jsx as bf}from"react/jsx-runtime";var WH=({data:f})=>{let{name:U,value:D,useSocketioSupport:H,useCentrifugeSupport:P,useMittSupport:$,centrifugeChannel:Z}=f,[V,z]=BH(D);return qH(()=>{z(D)},[D]),bf(_,{card:"HiddenCard",data:f,useSocketioSupport:H,useCentrifugeSupport:P,useMittSupport:$,centrifugeChannel:Z,methods:{update:({value:T})=>{z(T)}},children:bf("input",{type:"hidden",id:U,name:U,value:V})})},gf=WH;var QH=Q({name:"HiddenCard",component:gf,metadata:{author:"Swarm.ing"}});import{useContext as vf,useEffect as wH}from"react";import{createContext as RH}from"react";var _H=RH(void 0),F=_H;import{jsx as FH,Fragment as SH}from"react/jsx-runtime";var KH=({data:f})=>{let{url:U}=f,D=vf(F),H=vf(K);return wH(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else D?.(U)},[U,D]),FH(SH,{children:H})},pf=KH;var MH=Q({name:"AutoRedirectCard",component:pf,metadata:{author:"Swarm.ing"}});import{Bounce as LH,Slide as AH,Zoom as NH,Flip as yH}from"react-toastify";import{toast as oH,ToastContainer as mH}from"react-toastify";import{useContext as EH,useMemo as kH,useRef as jH}from"react";import{jsx as qf,Fragment as vH}from"react/jsx-runtime";var xH={bounce:LH,slide:AH,zoom:NH,flip:yH},uH=(f)=>{let U={...f,type:f.alertType,transition:f.transition?xH[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};oH(f.message,U)},dH=(f)=>{console.log("Log event",f)},bH=(f)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(H){console.error("[IOEventsCard] Failed to show notification",H)}},D=window.Notification.permission;if(D==="granted"){U();return}if(D==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((H)=>{if(H==="granted")U()})},gH=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:D,useMittSupport:H,centrifugeChannel:P}=f,$=EH(F),Z=jH($);Z.current=$;let V=kH(()=>({alert:uH,log:dH,push:bH,redirect:(z)=>{if(z.to){let T=z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else Z.current?.(T)}else window.location.reload()},reload:(z)=>{if(z.to){let T=z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else Z.current?.(T)}else window.location.reload()}}),[]);return qf(vH,{children:qf(_,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:D,useMittSupport:H,centrifugeChannel:P,methods:V,children:qf(mH,{})})})},cf=gH;var pH=Q({name:"IOEventsCard",component:cf,metadata:{author:"Swarm.ing"}});import{useEffect as hf,useState as cH}from"react";import{jsx as lf}from"react/jsx-runtime";var hH=({data:f})=>{let{name:U,key:D,value:H,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V}=f,[z,T]=cH(H);return hf(()=>{T(H)},[H]),hf(()=>{if(typeof window==="undefined")return;sessionStorage.setItem(D,z)},[D,z]),lf(_,{card:"SessionStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:I})=>{T(I)},remove:()=>{sessionStorage.removeItem(D),T("")}},children:lf("input",{type:"hidden",id:U,name:U,value:z})})},rf=hH;var lH=Q({name:"SessionStorageCard",component:rf,metadata:{author:"PieData"}});import{useEffect as nf,useState as rH}from"react";import{jsx as tf}from"react/jsx-runtime";var nH=({data:f})=>{let{name:U,key:D,value:H,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V}=f,[z,T]=rH(H);return nf(()=>{T(H)},[H]),nf(()=>{if(typeof window==="undefined")return;localStorage.setItem(D,z)},[D,z]),tf(_,{card:"DeviceStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:I})=>{T(I)},remove:()=>{localStorage.removeItem(D),T("")}},children:tf("input",{type:"hidden",id:U,name:U,value:z})})},sf=nH;var iH=Q({name:"DeviceStorageCard",component:sf,metadata:{author:"PieData"}});import{useEffect as af,useState as tH}from"react";import{jsx as ef}from"react/jsx-runtime";var sH=({data:f})=>{let{name:U,key:D,value:H,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V}=f,[z,T]=tH(H);return af(()=>{T(H)},[H]),af(()=>{if(typeof window==="undefined")return;let I=window.Telegram?.WebApp?.CloudStorage;if(!I)return;I.setItem(D,z)},[D,z]),ef(_,{card:"CloudStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:I})=>{T(I)},remove:()=>{let I=window.Telegram?.WebApp?.CloudStorage;if(I)I.removeItem(D);T("")}},children:ef("input",{type:"hidden",id:U,name:U,value:z})})},fU=sH;var aH=Q({name:"CloudStorageCard",component:fU,metadata:{author:"PieData"}});import{useEffect as UU,useState as eH}from"react";import{jsx as HU}from"react/jsx-runtime";var fP=({data:f})=>{let{name:U,key:D,value:H,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V}=f,[z,T]=eH(H);return UU(()=>{T(H)},[H]),UU(()=>{if(typeof window==="undefined")return;let I=window.Telegram?.WebApp?.SecureStorage;if(!I)return;I.setItem(D,z)},[D,z]),HU(_,{card:"SecureStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:I})=>{T(I)},remove:()=>{let I=window.Telegram?.WebApp?.SecureStorage;if(I)I.removeItem(D);T("")}},children:HU("input",{type:"hidden",id:U,name:U,value:z})})},PU=fP;var UP=Q({name:"SecureStorageCard",component:PU,metadata:{author:"PieData"}});import{useCallback as Bf,useContext as Wf,useEffect as HP,useRef as PP,useState as DU}from"react";import{jsx as ZU}from"react/jsx-runtime";var DP=({data:f,content:U})=>{let{useLoader:D,noReturn:H,returnType:P,useSocketioSupport:$,useCentrifugeSupport:Z,useMittSupport:V,centrifugeChannel:z}=f,T=Wf(K),I=Wf(y)??w,[X,G]=DU(!1),[J,Y]=DU(null),q=PP(U),C=Wf(S),O=Bf((R)=>{if(R===null)G(!0);else if(G(!1),!H)q.current=R;if(!H)Y(R)},[H]),W=Bf((R)=>{q.current=R.content,Y(R.content)},[]),B=Bf((R)=>{if(R===null)G(!0);else if(G(!1),!H)for(let s of R)C?.emit(s.name,s.data)},[H,C]);if(HP(()=>{Y(U),G(!1)},[U]),!J&&D)return T;return ZU(_,{card:"AjaxGroupCard",data:f,methods:{changeContent:W},useSocketioSupport:$,useCentrifugeSupport:Z,useMittSupport:V,centrifugeChannel:z,children:ZU(I,{uiConfig:J??q.current,setUiAjaxConfiguration:P==="events"?B:O})})},$U=DP;var ZP=Q({name:"AjaxGroupCard",component:$U,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as zU}from"react";import{jsx as Qf}from"react/jsx-runtime";var $P=({data:f,content:U,setUiAjaxConfiguration:D})=>{let{name:H,url:P,sx:$}=f,Z=zU(F),V=zU(y)??w;return Qf(_,{card:H,data:f,children:Qf("div",{style:$,id:H,onClick:(T)=>{if(P)if(T.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(P))window.location.href=P;else Z?.(P)},children:Qf(V,{setUiAjaxConfiguration:D,uiConfig:U})})})},TU=$P;var zP=Q({name:"BoxCard",component:TU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as TP}from"react";import{jsx as Rf}from"react/jsx-runtime";var VP=({data:f,content:U,setUiAjaxConfiguration:D})=>{let{name:H,sx:P}=f,$=TP(y)??w;return Rf(_,{card:H,data:f,children:Rf("div",{style:P,id:H,children:U.map((Z,V)=>{return Rf($,{uiConfig:Z,setUiAjaxConfiguration:D},`children-${V}`)})})})},VU=VP;var IP=Q({name:"OneOfCard",component:VU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as n}from"react";import{QueryClient as QP,QueryClientProvider as RP,useQuery as _P}from"@tanstack/react-query";import{useContext as YP,useEffect as OP}from"react";import{useEffect as CP,useState as JP}from"react";var Pf=new Map,Df=new Map;function Zf(f,U){let D=`${f}::${U}`,H=f?Pf.get(D):void 0,[P,$]=JP(H??null);return CP(()=>{if(!f)return;if(Pf.has(D)){$(Pf.get(D));return}let Z=Df.get(D);if(!Z)Z=fetch(f+`api/support/${U}`,{method:"GET"}).then((z)=>z.json()).then((z)=>{return Pf.set(D,z),Df.delete(D),z}).catch((z)=>{throw Df.delete(D),z}),Df.set(D,Z);let V=!1;return Z.then((z)=>{if(!V)$(z)}).catch(()=>{}),()=>{V=!0}},[f,U,D]),P}var _f=null,IU=null;function CU(){IU?.()}function wf(){if(typeof window==="undefined")return Promise.resolve();if(typeof window.sid!=="undefined")return Promise.resolve();if(!_f)_f=new Promise((f)=>{IU=()=>{f()}});return _f}var XP=({children:f})=>{let U=YP(m),D=e(),H=Zf(D,"socketIO"),P=($)=>{if(typeof window!=="undefined")window.sid=$.sid,CU(),console.log(`SocketIO initialized: ${window.sid}`)};return OP(()=>{if(!U)return;let $=()=>{console.log("SocketIO connected")},Z=(V)=>{console.log(`SocketIO disconnected: ${V}`),U.connect()};if(H)U.on("pieinit",P),U.on("connect",$),U.on("disconnect",Z),U.connect();return()=>{if(H)U.off("pieinit",P),U.off("connect",$),U.off("disconnect",Z),U.disconnect()}},[U,H]),f},v=XP;import{useContext as GP,useEffect as qP}from"react";var BP=({children:f})=>{let U=GP(o),D=e(),H=Zf(D,"centrifuge");return qP(()=>{if(!U)return;let P=()=>{console.log("Centrifuge connected")},$=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(H)U.on("connected",P),U.on("disconnected",$),U.connect();return()=>{if(H)U.disconnect()}},[U,H]),f},p=BP;import{createAxiosDateTransformer as wP}from"axios-date-transformer";import{jsx as WP}from"react/jsx-runtime";function l(f,U,D){if(!U)return D;let H=f.replace(/^\//,""),P=U[H];if(!P)return D;return WP(Of,{uiConfig:P})}import{jsx as M,Fragment as FP}from"react/jsx-runtime";var KP=({location:f,fallback:U,piecache:D,onError:H,queryOptions:P,disableGlobalForm:$})=>{let Z=x(),V=u(),z=N(),T=n(()=>wP({baseURL:Z||""}),[Z]),I=n(()=>E(),[]),X=n(()=>Z?b(Z):null,[Z]),G=n(()=>Z?d(Z,V):null,[Z,V]),{data:J,isLoading:Y,error:q}=_P({queryKey:["uiConfig",f.pathname+f.search,Z],enabled:!!Z,queryFn:async()=>{let O=new URLSearchParams(f.search);O.set("__pieroot","web");let W="/api/content"+f.pathname+"?"+O.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",W);let B=await T.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",B.data);return B.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(O)=>Math.min(1000*2**O,30000),...P}),C=l(f.pathname,D,U);if(!Z)return C??null;if(z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",V),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!D);if(q){if(z)console.error("[PieRoot] Error fetching UI configuration:",q),console.error("[PieRoot] Error details:",{message:q.message,status:q.response?.status,data:q.response?.data});return H?.(),C}if(Y||!J){if(z)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!J});return C}if(z)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return M(S.Provider,{value:I,children:M(m.Provider,{value:X,children:M(o.Provider,{value:G,children:M(K.Provider,{value:U??M(FP,{}),children:M(v,{children:M(p,{children:$?M(w,{uiConfig:J}):M("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:M(w,{uiConfig:J})})})})})})})})},SP=(f)=>{let U=n(()=>new QP,[]);return M(F.Provider,{value:f.onNavigate,children:M(j.Provider,{value:f.config,children:M(RP,{client:U,children:M(KP,{...f})})})})},MP=SP;import{useMemo as i}from"react";import{QueryClient as NP,QueryClientProvider as yP,useQuery as oP}from"@tanstack/react-query";import{createAxiosDateTransformer as mP}from"axios-date-transformer";import{useEffect as LP,useState as AP}from"react";var Kf=({onError:f}={})=>{let[U,D]=AP(null),H=Af();return LP(()=>{if(typeof window==="undefined")return;let P=window.Telegram?.WebApp;if(!P)return;try{P.ready?.()}catch($){f?.()}if(H==="telegram_expanded"&&(P.platform==="ios"||P.platform==="android"))P.expand();D(P)},[]),U};import{jsx as L,Fragment as jP}from"react/jsx-runtime";var EP=({location:f,fallback:U,piecache:D,onError:H,queryOptions:P,disableGlobalForm:$})=>{let Z=x(),V=u(),z=N(),T=i(()=>mP({baseURL:Z}),[Z]),I=i(()=>E(),[]),X=i(()=>Z?b(Z):null,[Z]),G=i(()=>Z?d(Z,V):null,[Z,V]),J=Kf({onError:H}),{data:Y,isLoading:q,error:C}=oP({queryKey:["uiConfig",f.pathname+f.search,J?.initData],enabled:!!J?.initData,queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","telegram"),J?.initData)W.set("initData",J.initData);let B="/api/content"+f.pathname+"?"+W.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await T.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...P}),O=l(f.pathname,D,U);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(C&&z)return console.error("[PieRoot] Error fetching UI configuration:",C),console.error("[PieRoot] Error details:",{message:C.message,status:C.response?.status,data:C.response?.data}),H?.(),O;if(q||!Y){if(z)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!Y});return O}if(z)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return L(S.Provider,{value:I,children:L(m.Provider,{value:X,children:L(o.Provider,{value:G,children:L(K.Provider,{value:U??L(jP,{}),children:L(v,{children:L(p,{children:$?L(w,{uiConfig:Y}):L("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:L(w,{uiConfig:Y})})})})})})})})},kP=(f)=>{let U=i(()=>new NP,[]);return L(F.Provider,{value:f.onNavigate,children:L(j.Provider,{value:f.config,children:L(yP,{client:U,children:L(EP,{...f})})})})},xP=kP;import{useMemo as Sf,useState as uP}from"react";import{QueryClient as dP,QueryClientProvider as bP}from"@tanstack/react-query";import{jsx as k,Fragment as pP}from"react/jsx-runtime";var gP=({location:f,fallback:U,children:D,disableGlobalForm:H})=>{let P=x(),$=u(),Z=N(),V=Sf(()=>E(),[]),z=Sf(()=>P?b(P):null,[P]),T=Sf(()=>P?d(P,$):null,[P,$]);if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",P),console.log("[PieRoot] CENTRIFUGE_SERVER:",$),console.log("[PieRoot] Fallback provided:",!!U);return k(S.Provider,{value:V,children:k(m.Provider,{value:z,children:k(o.Provider,{value:T,children:k(K.Provider,{value:U??k(pP,{}),children:k(v,{children:k(p,{children:H?D:k("form",{id:"piedata_global_form",action:P+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:D})})})})})})})},vP=(f)=>{let[U]=uP(()=>new dP);return k(F.Provider,{value:f.onNavigate,children:k(j.Provider,{value:f.config,children:k(bP,{client:U,children:k(gP,{...f})})})})},cP=vP;import{useMemo as t}from"react";import{QueryClient as rP,QueryClientProvider as nP,useQuery as iP}from"@tanstack/react-query";import{createAxiosDateTransformer as tP}from"axios-date-transformer";import{useEffect as hP,useState as lP}from"react";var Ff=()=>{let[f,U]=lP(null);return hP(()=>{if(typeof window==="undefined")return;let D=window.WebApp;if(!D)return;D.ready(),U(D)},[]),f};import{jsx as A,Fragment as eP}from"react/jsx-runtime";var sP=({location:f,fallback:U,piecache:D,onError:H,queryOptions:P,disableGlobalForm:$})=>{let Z=x(),V=u(),z=N(),T=t(()=>tP({baseURL:Z}),[Z]),I=t(()=>E(),[]),X=t(()=>Z?b(Z):null,[Z]),G=t(()=>Z?d(Z,V):null,[Z,V]),J=Ff(),{data:Y,isLoading:q,error:C}=iP({queryKey:["uiConfig",f.pathname+f.search,J?.initData],queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","max"),J?.initData)W.set("initData",J.initData);let B="/api/content"+f.pathname+"?"+W.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await T.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},enabled:!!J?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...P}),O=l(f.pathname,D,U);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(C&&z)return console.error("[PieRoot] Error fetching UI configuration:",C),console.error("[PieRoot] Error details:",{message:C.message,status:C.response?.status,data:C.response?.data}),H?.(),O;if(q||!Y){if(z)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!Y});return O}if(z)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return A(S.Provider,{value:I,children:A(m.Provider,{value:X,children:A(o.Provider,{value:G,children:A(K.Provider,{value:U??A(eP,{}),children:A(v,{children:A(p,{children:$?A(w,{uiConfig:Y}):A("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:A(w,{uiConfig:Y})})})})})})})})},aP=(f)=>{let U=t(()=>new rP,[]);return A(F.Provider,{value:f.onNavigate,children:A(j.Provider,{value:f.config,children:A(nP,{client:U,children:A(sP,{...f})})})})},fD=aP;import{useMemo as UD}from"react";var JU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw new Error("SocketIO isn't initialized properly");return[window.sid]}let D=document.getElementsByName(f);if(!D.length){if(U)console.warn(`No input found with name ${f}`);return[]}let H=D[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},HD=(f,U={},D=[],H,P)=>{let $=P?.renderingLogEnabled??!1,Z=P?.timeout,V=P?.retryPolicy,z=V?.maxRetries??0,T=V?.baseDelay??1000,I=V?.retryOn??[502,503,504];if($)console.log("Registering AJAX: ",H,U,D);return async(X={})=>{if(typeof window==="undefined"||typeof document==="undefined"){if($)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let G=P?.apiServer;if(!G){if($)console.warn("AJAX skipped: apiServer is missing");return}if(!H||!f){if($)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(D.includes("sid"))await wf();let J=new FormData;for(let[C,O]of Object.entries({...U,...X}))J.append(C,O);for(let C of D)for(let O of JU(C,$))J.append(C,O);let Y=G+"api/ajax_content"+H;f(null);let q;for(let C=0;C<=z;C++){if(C>0){let B=T*2**(C-1);if($)console.log(`AJAX retry ${C}/${z} after ${B}ms`);await new Promise((R)=>setTimeout(R,B))}let O=Z!=null?new AbortController:null,W=O&&setTimeout(()=>O.abort(),Z);try{let B=await fetch(Y,{method:"POST",body:J,signal:O?.signal});if(W)clearTimeout(W);if(!B.ok&&I.includes(B.status)&&C<z){q=new Error(`HTTP ${B.status}`);continue}let s=(B.headers.get("content-type")||"").includes("application/json");if(!!B.body?.getReader&&!s){let a=B.body.getReader(),XU=new TextDecoder,c="";while(!0){let{done:$f,value:GU}=await a.read();if($f)break;c+=XU.decode(GU,{stream:!0});let Mf=c.split(`
|
|
3
|
-
`);c=Mf.pop()??"";for(let qU of Mf){let zf=qU.trim();if(!zf)continue;try{let BU=JSON.parse(zf);f([BU])}catch{if($)console.warn("Failed to parse streamed line:",zf)}}}if(c.trim())try{let $f=JSON.parse(c);f([$f])}catch{if($)console.warn("Failed to parse final streamed line:",c)}return{}}else{let a=await B.json();return f(a),a}}catch(B){if(W)clearTimeout(W);if(q=B,
|
|
2
|
+
import{useContext as Vf,useEffect as If,useRef as NU}from"react";import{createContext as WU,useContext as QU}from"react";var x=WU(null),h=()=>{let f=QU(x);if(!f)throw new Error("usePieConfig must be used within PieConfigProvider");return f},j=()=>{let{apiServer:f}=h();return f},e=j,u=()=>{let{centrifugeServer:f}=h();return f};var o=()=>{let{enableRenderingLog:f}=h();return f},Lf=o,Af=()=>{let{pageProcessor:f}=h();return f};var Cf="__piedemo__";import{createContext as RU}from"react";import{Centrifuge as of}from"centrifuge";var Nf=new Map,d=(f,U)=>{if(!U)return null;let D=`${f}::${U}`,H=Nf.get(D);if(H)return H;async function P(){let Z=await fetch(f+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new of.UnauthorizedError("Backend is not answering");throw new Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let $=new of(U,{getToken:P});return Nf.set(D,$),$},_U=RU(null),N=_U;import{io as wU}from"socket.io-client";import{createContext as KU}from"react";var yf=new Map,b=(f)=>{let U=yf.get(f);if(U)return U;let D=wU(f,{autoConnect:!1,transports:["websocket"]});return yf.set(f,D),D},SU=KU(null),y=SU;import FU from"mitt";import{createContext as MU,useCallback as LU,useContext as AU}from"react";var Tf=null;function m(){if(!Tf)Tf=FU();return Tf}var mf=MU(null);function oU(f){let U=AU(mf);return LU((D,H)=>{(U??m()).emit(`pie${D}_${f}`,H)},[f,U])}var S=mf;import{jsx as EU,jsxs as kU,Fragment as mU}from"react/jsx-runtime";var yU=({card:f,data:U,children:D,useSocketioSupport:H=!1,useCentrifugeSupport:P=!1,useMittSupport:$=!1,centrifugeChannel:Z=void 0,methods:T=void 0,stored:z=void 0})=>{let C=Lf(),V=NU(T);if(V.current=T,C)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:H,centrifuge:P,mitt:$,centrifugeChannel:Z}),console.log("[PieCard] Methods:",T?Object.keys(T):"none"),console.log("[PieCard] Has children:",!!D);let X=Vf(y),G=Vf(N),O=Vf(S);if(If(()=>{if(!X||!H||!V.current||!U.name){if(C&&H)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!X,useSocketioSupport:H,hasMethods:!!V.current,hasDataName:!!U?.name});return}let q=Object.keys(V.current??{}).map((I)=>{let Y=`pie${I}_${U.name}`;if(C)console.log(`[PieCard] Socket.IO registering event: ${Y}`);let W=(B)=>{V.current?.[I]?.(B)};return X.on(Y,W),[Y,W]});return()=>{q.forEach(([I,Y])=>{if(C)console.log(`[PieCard] Socket.IO unregistering event: ${I}`);X.off(I,Y)})}},[X,U.name,H]),If(()=>{if(!G||!P||!Z||!U.name){if(C&&P)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!G,useCentrifugeSupport:P,hasCentrifugeChannel:!!Z,hasMethods:!!V.current,hasDataName:!!U?.name});return}let q=Object.keys(V.current??{}).map((I)=>{let Y=`pie${I}_${U.name}_${Z}`;if(C)console.log(`[PieCard] Centrifuge subscribing to channel: ${Y}`);let W=G.newSubscription(Y);return W.on("publication",(B)=>{if(C)console.log(`[PieCard] Centrifuge received data on ${Y}:`,B.data);V.current?.[I]?.(B.data)}),W.subscribe(),W});return()=>{q.forEach((I)=>{if(C)console.log("[PieCard] Centrifuge unsubscribing from channel");I.unsubscribe(),G.removeSubscription(I)})}},[G,Z,U.name,P]),If(()=>{if(!O||!$||!U.name){if(C&&$)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!O,useMittSupport:$,hasMethods:!!V.current,hasDataName:!!U?.name});return}let J=Object.keys(V.current??{}),q={};return J.forEach((I)=>{let Y=`pie${I}_${U.name}`,W=(B)=>{if(C)console.log(`[PieCard] Mitt registering event: ${Y}`);V.current?.[I]?.(B)};q[Y]=W,O.on(Y,W)}),()=>{Object.entries(q).forEach(([I,Y])=>{if(C)console.log(`[PieCard] Mitt unregistering event: ${I}`);O.off(I,Y)})}},[O,U.name,$]),C)console.log("[PieCard] Rendering complete, returning children");if(z!==void 0)return kU(mU,{children:[EU("input",{type:"hidden",name:U.name,value:JSON.stringify(z)}),D]});return D},_=yU;import{lazy as xU}from"react";var Of=new Map;function Ef(f,U){return xU(()=>{if(Of.has(U))return Of.get(U);let D=f().then((H)=>H);return Of.set(U,D),D})}var g=new Map,jU=(f)=>{if(!f.name)throw new Error("Component registration requires a name");if(!f.component&&!f.loader)throw new Error(`Component "${f.name}" requires component or loader`);let U={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=Ef(U.loader,f.name),U.loader=void 0,U.isLazy=!0;return U};function Q(f){let U=jU(f);return g.set(U.name,U),U.component}var uU=(f)=>{f.forEach((U)=>Q(U))},dU=(f)=>{g.delete(f)},bU=(f)=>{return g.has(f)},gU=(f)=>{return g.get(f)?.metadata},r=(f)=>{return g.get(f)},vU=()=>{return Array.from(g.keys())},pU=()=>{return g.size};import{Suspense as nU,useContext as tU,memo as iU}from"react";import{createContext as cU}from"react";import{jsx as rU,Fragment as lU}from"react/jsx-runtime";var hU=cU(rU(lU,{})),K=hU;import{jsx as Jf}from"react/jsx-runtime";function sU({uiConfig:f,setUiAjaxConfiguration:U}){let D=tU(K),H=o();if(H)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let P=r(f.card);if(!P?.component){if(H)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return D}if(H)console.log("[UI] Found component in registry:",{name:P.name,isLazy:P.isLazy,hasMetadata:!!P.metadata});let $=P.component,Z=Jf($,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(P.isLazy){if(H)console.log("[UI] Rendering lazy component with Suspense:",P.name);return Jf(nU,{fallback:P.fallback?Jf(P.fallback,{}):D,children:Z},`${P.name}`)}if(H)console.log("[UI] Rendering component directly:",P.name);return Z}var w=iU(sU);import{Suspense as fH,useContext as UH}from"react";import{createContext as aU}from"react";var eU=aU(null),E=eU;import{jsx as ff}from"react/jsx-runtime";function kf({uiConfig:f,setUiAjaxConfiguration:U}){let D=UH(K),H=o();if(H)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let P=r(f.card);if(!P?.component){if(H)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return D}if(H)console.log("[UILoading] Found component in registry:",{name:P.name,isLazy:P.isLazy,hasMetadata:!!P.metadata,hasFallback:!!P.fallback});if(P.fallback){if(H)console.log("[UILoading] Rendering fallback for:",P.name);let T=P.fallback;return ff(T,{})}if(H)console.log("[UILoading] No fallback, rendering full component:",P.name);let $=P.component,Z=ff(E.Provider,{value:kf,children:ff($,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(P.isLazy)return ff(fH,{fallback:D,children:Z},`${P.name}`);return Z}var Yf=kf;import{useContext as HH}from"react";import{jsx as Xf}from"react/jsx-runtime";var PH=({data:f,content:U,setUiAjaxConfiguration:D})=>{let{name:H,sx:P}=f,$=HH(E)??w;return Xf(_,{card:H,data:f,children:Xf("div",{style:P,id:H,children:U.map((Z,T)=>{return Xf($,{uiConfig:Z,setUiAjaxConfiguration:D},`children-${T}`)})})})},xf=PH;var DH=Q({name:"SequenceCard",component:xf,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as ZH}from"react";import{jsx as jf}from"react/jsx-runtime";var $H=({data:f,content:U,setUiAjaxConfiguration:D})=>{let{name:H}=f,P=ZH(E)??w;return jf(_,{card:H,data:f,children:U.map(($,Z)=>{return jf(P,{uiConfig:$,setUiAjaxConfiguration:D},`children-${Z}`)})})},uf=$H;var zH=Q({name:"UnionCard",component:uf,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as IH,useState as OH}from"react";import JH from"html-react-parser";import{useCallback as Uf,useEffect as CH,useRef as Gf,useState as TH}from"react";function VH(){let f=new AudioContext,U=f.createOscillator(),D=U.connect(f.createMediaStreamDestination());U.start();let H=D.stream.getAudioTracks()[0];return H.enabled=!1,H}function Hf(f=null,U){let[D,H]=TH(!1),P=Gf(null),$=Gf(null),Z=Gf(null),T=Uf(async(X,G=!0)=>{if(P.current)z();let O=new RTCPeerConnection;if(O.onconnectionstatechange=()=>{if(O.connectionState==="connected")H(!0);else if(["disconnected","failed","closed"].includes(O.connectionState))H(!1)},O.ontrack=(R)=>{if(f)f.srcObject=R.streams[0]},G){let R=await navigator.mediaDevices.getUserMedia({audio:!0});O.addTrack(R.getTracks()[0],R)}else{let R=VH();O.addTrack(R)}let J=O.createDataChannel("oai-events");$.current=J,Z.current=new Promise((R)=>{J.addEventListener("open",()=>{R()})});let q=await O.createOffer();await O.setLocalDescription(q);let B=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:q.sdp,headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/sdp"}})).text();await O.setRemoteDescription({type:"answer",sdp:B}),P.current=O,await Z.current},[f]),z=Uf(()=>{let X=$.current;if(X)X.close();P.current?.getSenders()?.forEach((G)=>G.track?.stop()),P.current?.close(),H(!1),P.current=null,$.current=null,Z.current=null},[f]),C=Uf((X)=>{let G=$.current;if(!G){console.error("Data channel is not ready",X);return}let O=new Date().toLocaleTimeString();if(X.event_id=X.event_id||crypto.randomUUID(),G.send(JSON.stringify(X)),!X.timestamp)X.timestamp=O;U?.(X)},[U,f]),V=Uf((X)=>{if(!$.current){console.error("Data channel is not ready");return}let O=()=>{C({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:X}]}}),C({type:"response.create"})};if(Z.current)Z.current.then(O);else O()},[U,f]);return CH(()=>{let X=$.current;if(!X)return;let G=(O)=>{let J=JSON.parse(O.data);if(!J.timestamp)J.timestamp=new Date().toLocaleTimeString();U?.(J)};return X.addEventListener("message",G),()=>{X.removeEventListener("message",G)}},[U,f]),{isSessionActive:D,startSession:T,stopSession:z,sendTextMessage:V}}import{jsx as XH}from"react/jsx-runtime";var YH=({data:f})=>{let{html:U,useSocketioSupport:D,useCentrifugeSupport:H,useMittSupport:P,centrifugeChannel:$}=f,[Z,T]=OH(U),{isSessionActive:z,startSession:C,sendTextMessage:V}=Hf(null,(J)=>{if(console.log(J.type,J.type==="response.output_text.delta"&&J.delta),J.type==="response.output_text.delta"&&J.delta)T((q)=>q+J.delta)});return IH(()=>{T(U)},[U]),XH(_,{card:"HTMLEmbedCard",data:f,methods:{update:(J)=>{T(J.value)},generateUsingAI:async(J)=>{try{if(!z&&J.token)await C(J.token,!1);V(J.prompt)}catch(q){console.error("Failed to generate using AI",q)}},initializeAI:async(J)=>{if(!z&&J.token)await C(J.token,!1)}},useCentrifugeSupport:H,useSocketioSupport:D,useMittSupport:P,centrifugeChannel:$,children:JH(Z)})},df=YH;var GH=Q({name:"HTMLEmbedCard",component:df,metadata:{author:"Swarm.ing"}});import{useEffect as qH,useState as BH}from"react";import{jsx as bf}from"react/jsx-runtime";var WH=({data:f})=>{let{name:U,value:D,useSocketioSupport:H,useCentrifugeSupport:P,useMittSupport:$,centrifugeChannel:Z}=f,[T,z]=BH(D);return qH(()=>{z(D)},[D]),bf(_,{card:"HiddenCard",data:f,useSocketioSupport:H,useCentrifugeSupport:P,useMittSupport:$,centrifugeChannel:Z,methods:{update:({value:C})=>{z(C)}},children:bf("input",{type:"hidden",id:U,name:U,value:T})})},gf=WH;var QH=Q({name:"HiddenCard",component:gf,metadata:{author:"Swarm.ing"}});import{useContext as vf,useEffect as wH}from"react";import{createContext as RH}from"react";var _H=RH(void 0),F=_H;import{jsx as FH,Fragment as SH}from"react/jsx-runtime";var KH=({data:f})=>{let{url:U}=f,D=vf(F),H=vf(K);return wH(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else D?.(U)},[U,D]),FH(SH,{children:H})},pf=KH;var MH=Q({name:"AutoRedirectCard",component:pf,metadata:{author:"Swarm.ing"}});import{Bounce as LH,Slide as AH,Zoom as oH,Flip as NH}from"react-toastify";import{toast as yH,ToastContainer as mH}from"react-toastify";import{useContext as EH,useMemo as kH,useRef as xH}from"react";import{jsx as qf,Fragment as vH}from"react/jsx-runtime";var jH={bounce:LH,slide:AH,zoom:oH,flip:NH},uH=(f)=>{let U={...f,type:f.alertType,transition:f.transition?jH[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};yH(f.message,U)},dH=(f)=>{console.log("Log event",f)},bH=(f)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(H){console.error("[IOEventsCard] Failed to show notification",H)}},D=window.Notification.permission;if(D==="granted"){U();return}if(D==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((H)=>{if(H==="granted")U()})},gH=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:D,useMittSupport:H,centrifugeChannel:P}=f,$=EH(F),Z=xH($);Z.current=$;let T=kH(()=>({alert:uH,log:dH,push:bH,redirect:(z)=>{if(z.to){let C=z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(C))window.location.href=C;else Z.current?.(C)}else window.location.reload()},reload:(z)=>{if(z.to){let C=z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(C))window.location.href=C;else Z.current?.(C)}else window.location.reload()}}),[]);return qf(vH,{children:qf(_,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:D,useMittSupport:H,centrifugeChannel:P,methods:T,children:qf(mH,{})})})},cf=gH;var pH=Q({name:"IOEventsCard",component:cf,metadata:{author:"Swarm.ing"}});import{useEffect as hf,useState as cH}from"react";import{jsx as lf}from"react/jsx-runtime";var hH=({data:f})=>{let{name:U,key:D,value:H,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T}=f,[z,C]=cH(H);return hf(()=>{C(H)},[H]),hf(()=>{if(typeof window==="undefined")return;sessionStorage.setItem(D,z)},[D,z]),lf(_,{card:"SessionStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T,methods:{update:({value:V})=>{C(V)},remove:()=>{sessionStorage.removeItem(D),C("")}},children:lf("input",{type:"hidden",id:U,name:U,value:z})})},rf=hH;var lH=Q({name:"SessionStorageCard",component:rf,metadata:{author:"PieData"}});import{useEffect as nf,useState as rH}from"react";import{jsx as tf}from"react/jsx-runtime";var nH=({data:f})=>{let{name:U,key:D,value:H,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T}=f,[z,C]=rH(H);return nf(()=>{C(H)},[H]),nf(()=>{if(typeof window==="undefined")return;localStorage.setItem(D,z)},[D,z]),tf(_,{card:"DeviceStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T,methods:{update:({value:V})=>{C(V)},remove:()=>{localStorage.removeItem(D),C("")}},children:tf("input",{type:"hidden",id:U,name:U,value:z})})},sf=nH;var tH=Q({name:"DeviceStorageCard",component:sf,metadata:{author:"PieData"}});import{useEffect as af,useState as iH}from"react";import{jsx as ef}from"react/jsx-runtime";var sH=({data:f})=>{let{name:U,key:D,value:H,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T}=f,[z,C]=iH(H);return af(()=>{C(H)},[H]),af(()=>{if(typeof window==="undefined")return;let V=window.Telegram?.WebApp?.CloudStorage;if(!V)return;V.setItem(D,z)},[D,z]),ef(_,{card:"CloudStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T,methods:{update:({value:V})=>{C(V)},remove:()=>{let V=window.Telegram?.WebApp?.CloudStorage;if(V)V.removeItem(D);C("")}},children:ef("input",{type:"hidden",id:U,name:U,value:z})})},fU=sH;var aH=Q({name:"CloudStorageCard",component:fU,metadata:{author:"PieData"}});import{useEffect as UU,useState as eH}from"react";import{jsx as HU}from"react/jsx-runtime";var fP=({data:f})=>{let{name:U,key:D,value:H,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T}=f,[z,C]=eH(H);return UU(()=>{C(H)},[H]),UU(()=>{if(typeof window==="undefined")return;let V=window.Telegram?.WebApp?.SecureStorage;if(!V)return;V.setItem(D,z)},[D,z]),HU(_,{card:"SecureStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T,methods:{update:({value:V})=>{C(V)},remove:()=>{let V=window.Telegram?.WebApp?.SecureStorage;if(V)V.removeItem(D);C("")}},children:HU("input",{type:"hidden",id:U,name:U,value:z})})},PU=fP;var UP=Q({name:"SecureStorageCard",component:PU,metadata:{author:"PieData"}});import{useCallback as Bf,useContext as Wf,useEffect as HP,useRef as PP,useState as DU}from"react";import{jsx as ZU}from"react/jsx-runtime";var DP=({data:f,content:U})=>{let{useLoader:D,noReturn:H,returnType:P,useSocketioSupport:$,useCentrifugeSupport:Z,useMittSupport:T,centrifugeChannel:z}=f,C=Wf(K),V=Wf(E)??w,[X,G]=DU(!1),[O,J]=DU(null),q=PP(U),I=Wf(S),Y=Bf((R)=>{if(R===null)G(!0);else if(G(!1),!H)q.current=R;if(!H)J(R)},[H]),W=Bf((R)=>{q.current=R.content,J(R.content)},[]),B=Bf((R)=>{if(R===null)G(!0);else if(G(!1),!H)for(let s of R)I?.emit(s.name,s.data)},[H,I]);if(HP(()=>{J(U),G(!1)},[U]),!O&&D)return C;return ZU(_,{card:"AjaxGroupCard",data:f,methods:{changeContent:W},useSocketioSupport:$,useCentrifugeSupport:Z,useMittSupport:T,centrifugeChannel:z,children:ZU(V,{uiConfig:O??q.current,setUiAjaxConfiguration:P==="events"?B:Y})})},$U=DP;var ZP=Q({name:"AjaxGroupCard",component:$U,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as zU}from"react";import{jsx as Qf}from"react/jsx-runtime";var $P=({data:f,content:U,setUiAjaxConfiguration:D})=>{let{name:H,url:P,sx:$}=f,Z=zU(F),T=zU(E)??w;return Qf(_,{card:H,data:f,children:Qf("div",{style:$,id:H,onClick:(C)=>{if(P)if(C.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(P))window.location.href=P;else Z?.(P)},children:Qf(T,{setUiAjaxConfiguration:D,uiConfig:U})})})},CU=$P;var zP=Q({name:"BoxCard",component:CU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as CP}from"react";import{jsx as Rf}from"react/jsx-runtime";var TP=({data:f,content:U,setUiAjaxConfiguration:D})=>{let{name:H,sx:P}=f,$=CP(E)??w;return Rf(_,{card:H,data:f,children:Rf("div",{style:P,id:H,children:U.map((Z,T)=>{return Rf($,{uiConfig:Z,setUiAjaxConfiguration:D},`children-${T}`)})})})},TU=TP;var VP=Q({name:"OneOfCard",component:TU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as n}from"react";import{QueryClient as QP,QueryClientProvider as RP,useQuery as _P}from"@tanstack/react-query";import{useContext as JP,useEffect as YP}from"react";import{useEffect as IP,useState as OP}from"react";var Pf=new Map,Df=new Map;function Zf(f,U){let D=`${f}::${U}`,H=f?Pf.get(D):void 0,[P,$]=OP(H??null);return IP(()=>{if(!f)return;if(Pf.has(D)){$(Pf.get(D));return}let Z=Df.get(D);if(!Z)Z=fetch(f+`api/support/${U}`,{method:"GET"}).then((z)=>z.json()).then((z)=>{return Pf.set(D,z),Df.delete(D),z}).catch((z)=>{throw Df.delete(D),z}),Df.set(D,Z);let T=!1;return Z.then((z)=>{if(!T)$(z)}).catch(()=>{}),()=>{T=!0}},[f,U,D]),P}var _f=null,VU=null;function IU(){VU?.()}function wf(){if(typeof window==="undefined")return Promise.resolve();if(typeof window.sid!=="undefined")return Promise.resolve();if(!_f)_f=new Promise((f)=>{VU=()=>{f()}});return _f}var XP=({children:f})=>{let U=JP(y),D=e(),H=Zf(D,"socketIO"),P=($)=>{if(typeof window!=="undefined")window.sid=$.sid,IU(),console.log(`SocketIO initialized: ${window.sid}`)};return YP(()=>{if(!U)return;let $=()=>{console.log("SocketIO connected")},Z=(T)=>{console.log(`SocketIO disconnected: ${T}`),U.connect()};if(H)U.on("pieinit",P),U.on("connect",$),U.on("disconnect",Z),U.connect();return()=>{if(H)U.off("pieinit",P),U.off("connect",$),U.off("disconnect",Z),U.disconnect()}},[U,H]),f},v=XP;import{useContext as GP,useEffect as qP}from"react";var BP=({children:f})=>{let U=GP(N),D=e(),H=Zf(D,"centrifuge");return qP(()=>{if(!U)return;let P=()=>{console.log("Centrifuge connected")},$=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(H)U.on("connected",P),U.on("disconnected",$),U.connect();return()=>{if(H)U.disconnect()}},[U,H]),f},p=BP;import{createAxiosDateTransformer as wP}from"axios-date-transformer";import{jsx as WP}from"react/jsx-runtime";function l(f,U,D){if(!U)return D;let H=f.replace(/^\//,""),P=U[H];if(!P)return D;return WP(Yf,{uiConfig:P})}import{jsx as M,Fragment as FP}from"react/jsx-runtime";var KP=({location:f,fallback:U,piecache:D,onError:H,queryOptions:P,disableGlobalForm:$})=>{let Z=j(),T=u(),z=o(),C=n(()=>wP({baseURL:Z||""}),[Z]),V=n(()=>m(),[]),X=n(()=>Z?b(Z):null,[Z]),G=n(()=>Z?d(Z,T):null,[Z,T]),{data:O,isLoading:J,error:q}=_P({queryKey:["uiConfig",f.pathname+f.search,Z],enabled:!!Z,queryFn:async()=>{let Y=new URLSearchParams(f.search);Y.set("__pieroot","web");let W="/api/content"+f.pathname+"?"+Y.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",W);let B=await C.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",B.data);return B.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Y)=>Math.min(1000*2**Y,30000),...P}),I=l(f.pathname,D,U);if(!Z)return I??null;if(z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",T),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!D);if(q){if(z)console.error("[PieRoot] Error fetching UI configuration:",q),console.error("[PieRoot] Error details:",{message:q.message,status:q.response?.status,data:q.response?.data});return H?.(),I}if(J||!O){if(z)console.log("[PieRoot] Loading state:",{isLoading:J,hasUiConfiguration:!!O});return I}if(z)console.log("[PieRoot] UI configuration loaded successfully:",O),console.log("[PieRoot] Rendering UI with configuration");return M(S.Provider,{value:V,children:M(y.Provider,{value:X,children:M(N.Provider,{value:G,children:M(K.Provider,{value:U??M(FP,{}),children:M(v,{children:M(p,{children:$?M(w,{uiConfig:O}):M("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:M(w,{uiConfig:O})})})})})})})})},SP=(f)=>{let U=n(()=>new QP,[]);return M(F.Provider,{value:f.onNavigate,children:M(x.Provider,{value:f.config,children:M(RP,{client:U,children:M(KP,{...f})})})})},MP=SP;import{useMemo as t}from"react";import{QueryClient as oP,QueryClientProvider as NP,useQuery as yP}from"@tanstack/react-query";import{createAxiosDateTransformer as mP}from"axios-date-transformer";import{useEffect as LP,useState as AP}from"react";var Kf=({onError:f}={})=>{let[U,D]=AP(null),H=Af();return LP(()=>{if(typeof window==="undefined")return;let P=window.Telegram?.WebApp;if(!P)return;try{P.ready?.()}catch($){f?.()}if(H==="telegram_expanded"&&(P.platform==="ios"||P.platform==="android"))P.expand();D(P)},[]),U};import{jsx as L,Fragment as xP}from"react/jsx-runtime";var EP=({location:f,fallback:U,piecache:D,onError:H,queryOptions:P,disableGlobalForm:$})=>{let Z=j(),T=u(),z=o(),C=t(()=>mP({baseURL:Z}),[Z]),V=t(()=>m(),[]),X=t(()=>Z?b(Z):null,[Z]),G=t(()=>Z?d(Z,T):null,[Z,T]),O=Kf({onError:H}),{data:J,isLoading:q,error:I}=yP({queryKey:["uiConfig",f.pathname+f.search,O?.initData],enabled:!!O?.initData,queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","telegram"),O?.initData)W.set("initData",O.initData);let B="/api/content"+f.pathname+"?"+W.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await C.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...P}),Y=l(f.pathname,D,U);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(I&&z)return console.error("[PieRoot] Error fetching UI configuration:",I),console.error("[PieRoot] Error details:",{message:I.message,status:I.response?.status,data:I.response?.data}),H?.(),Y;if(q||!J){if(z)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!J});return Y}if(z)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return L(S.Provider,{value:V,children:L(y.Provider,{value:X,children:L(N.Provider,{value:G,children:L(K.Provider,{value:U??L(xP,{}),children:L(v,{children:L(p,{children:$?L(w,{uiConfig:J}):L("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:L(w,{uiConfig:J})})})})})})})})},kP=(f)=>{let U=t(()=>new oP,[]);return L(F.Provider,{value:f.onNavigate,children:L(x.Provider,{value:f.config,children:L(NP,{client:U,children:L(EP,{...f})})})})},jP=kP;import{useMemo as Sf,useState as uP}from"react";import{QueryClient as dP,QueryClientProvider as bP}from"@tanstack/react-query";import{jsx as k,Fragment as pP}from"react/jsx-runtime";var gP=({location:f,fallback:U,children:D,disableGlobalForm:H})=>{let P=j(),$=u(),Z=o(),T=Sf(()=>m(),[]),z=Sf(()=>P?b(P):null,[P]),C=Sf(()=>P?d(P,$):null,[P,$]);if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",P),console.log("[PieRoot] CENTRIFUGE_SERVER:",$),console.log("[PieRoot] Fallback provided:",!!U);return k(S.Provider,{value:T,children:k(y.Provider,{value:z,children:k(N.Provider,{value:C,children:k(K.Provider,{value:U??k(pP,{}),children:k(v,{children:k(p,{children:H?D:k("form",{id:"piedata_global_form",action:P+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:D})})})})})})})},vP=(f)=>{let[U]=uP(()=>new dP);return k(F.Provider,{value:f.onNavigate,children:k(x.Provider,{value:f.config,children:k(bP,{client:U,children:k(gP,{...f})})})})},cP=vP;import{useMemo as i}from"react";import{QueryClient as rP,QueryClientProvider as nP,useQuery as tP}from"@tanstack/react-query";import{createAxiosDateTransformer as iP}from"axios-date-transformer";import{useEffect as hP,useState as lP}from"react";var Ff=()=>{let[f,U]=lP(null);return hP(()=>{if(typeof window==="undefined")return;let D=window.WebApp;if(!D)return;D.ready(),U(D)},[]),f};import{jsx as A,Fragment as eP}from"react/jsx-runtime";var sP=({location:f,fallback:U,piecache:D,onError:H,queryOptions:P,disableGlobalForm:$})=>{let Z=j(),T=u(),z=o(),C=i(()=>iP({baseURL:Z}),[Z]),V=i(()=>m(),[]),X=i(()=>Z?b(Z):null,[Z]),G=i(()=>Z?d(Z,T):null,[Z,T]),O=Ff(),{data:J,isLoading:q,error:I}=tP({queryKey:["uiConfig",f.pathname+f.search,O?.initData],queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","max"),O?.initData)W.set("initData",O.initData);let B="/api/content"+f.pathname+"?"+W.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await C.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},enabled:!!O?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...P}),Y=l(f.pathname,D,U);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(I&&z)return console.error("[PieRoot] Error fetching UI configuration:",I),console.error("[PieRoot] Error details:",{message:I.message,status:I.response?.status,data:I.response?.data}),H?.(),Y;if(q||!J){if(z)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!J});return Y}if(z)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return A(S.Provider,{value:V,children:A(y.Provider,{value:X,children:A(N.Provider,{value:G,children:A(K.Provider,{value:U??A(eP,{}),children:A(v,{children:A(p,{children:$?A(w,{uiConfig:J}):A("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:A(w,{uiConfig:J})})})})})})})})},aP=(f)=>{let U=i(()=>new rP,[]);return A(F.Provider,{value:f.onNavigate,children:A(x.Provider,{value:f.config,children:A(nP,{client:U,children:A(sP,{...f})})})})},fD=aP;import{useMemo as UD}from"react";var OU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw new Error("SocketIO isn't initialized properly");return[window.sid]}let D=document.getElementsByName(f);if(!D.length){if(U)console.warn(`No input found with name ${f}`);return[]}let H=D[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},HD=(f,U={},D=[],H,P)=>{let $=P?.renderingLogEnabled??!1,Z=P?.timeout,T=P?.retryPolicy,z=T?.maxRetries??0,C=T?.baseDelay??1000,V=T?.retryOn??[502,503,504];if($)console.log("Registering AJAX: ",H,U,D);return async(X={})=>{if(typeof window==="undefined"||typeof document==="undefined"){if($)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let G=P?.apiServer;if(!G){if($)console.warn("AJAX skipped: apiServer is missing");return}if(!H||!f){if($)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(D.includes("sid"))await wf();let O=new FormData;for(let[I,Y]of Object.entries({...U,...X}))O.append(I,Y);for(let I of D)for(let Y of OU(I,$))O.append(I,Y);let J=G+"api/ajax_content"+H;f(null);let q;for(let I=0;I<=z;I++){if(I>0){let B=C*2**(I-1);if($)console.log(`AJAX retry ${I}/${z} after ${B}ms`);await new Promise((R)=>setTimeout(R,B))}let Y=Z!=null?new AbortController:null,W=Y&&setTimeout(()=>Y.abort(),Z);try{let B=await fetch(J,{method:"POST",body:O,signal:Y?.signal});if(W)clearTimeout(W);if(!B.ok&&V.includes(B.status)&&I<z){q=new Error(`HTTP ${B.status}`);continue}let s=(B.headers.get("content-type")||"").includes("application/json");if(!!B.body?.getReader&&!s){let a=B.body.getReader(),XU=new TextDecoder,c="";while(!0){let{done:$f,value:GU}=await a.read();if($f)break;c+=XU.decode(GU,{stream:!0});let Mf=c.split(`
|
|
3
|
+
`);c=Mf.pop()??"";for(let qU of Mf){let zf=qU.trim();if(!zf)continue;try{let BU=JSON.parse(zf);f([BU])}catch{if($)console.warn("Failed to parse streamed line:",zf)}}}if(c.trim())try{let $f=JSON.parse(c);f([$f])}catch{if($)console.warn("Failed to parse final streamed line:",c)}return{}}else{let a=await B.json();return f(a),a}}catch(B){if(W)clearTimeout(W);if(q=B,I<z)continue;if($)console.error("AJAX request failed:",B);return f(null),B}}if($)console.error("AJAX request failed after retries:",q);return f(null),q}},PD=(f,U={},D=[],H,P)=>{let{apiServer:$,enableRenderingLog:Z}=h(),T=JSON.stringify(U),z=JSON.stringify(D),C=JSON.stringify(P);return UD(()=>HD(f,U,D,H,{apiServer:$,renderingLogEnabled:Z,timeout:P?.timeout,retryPolicy:P?.retryPolicy}),[f,T,z,H,$,Z,C])};import{tool as DD}from"@openai/agents";import{useContext as ZD,useMemo as $D}from"react";var JU=/^pie(.+?)_(.+)$/;function YU(f=m(),U={}){let D=[],H=new Set;for(let P of f.all.keys()){if(typeof P!=="string")continue;let $=P.match(JU);if(!$)continue;let[,Z,T]=$,z={methodName:Z,cardName:T,eventName:P};if(U.filter&&!U.filter(z))continue;let C=U.nameFor?.(z)??`${T}_${Z}`;if(H.has(C))continue;H.add(C);let V=U.describe?.(z)??`Invokes the "${Z}" method on the PieCard "${T}" by emitting the in-process mitt event "${P}". The optional "payload" argument is forwarded verbatim to the card's handler.`;D.push(DD({name:C,description:V,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(X)=>{let G=X?.payload;return f.emit(P,G),`Emitted "${P}"`}}))}return D}function zD(f={}){let D=ZD(S)??m(),H=[];for(let z of D.all.keys())if(typeof z==="string"&&JU.test(z))H.push(z);H.sort();let P=H.join("|"),{filter:$,describe:Z,nameFor:T}=f;return $D(()=>YU(D,{filter:$,describe:Z,nameFor:T}),[D,P,$,Z,T])}import{clsx as CD}from"clsx";import{twMerge as TD}from"tailwind-merge";function VD(...f){return TD(CD(f))}var ID=()=>{if(typeof document==="undefined")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var OD=(f,U)=>`${f}${Cf}${U}`;export{Kf as useWebApp,zD as usePieMittAgentTools,oU as usePieEmit,Hf as useOpenAIWebRTC,Ff as useMaxWebApp,PD as useAjaxSubmit,dU as unregisterComponent,ID as submitGlobalForm,g as registry,Q as registerPieComponent,uU as registerMultipleComponents,OU as readAjaxKey,OD as pieName,bU as hasComponent,pU as getRegistrySize,r as getRegistryEntry,YU as getMittAgentTools,m as getEmitter,gU as getComponentMeta,vU as getAllRegisteredComponents,VD as cn,zH as UnionCard,E as UIRendererContext,Yf as UILoading,w as UI,y as SocketIOContext,lH as SessionStorageCard,DH as SequenceCard,UP as SecureStorageCard,jP as PieTelegramRoot,MP as PieRoot,fD as PieMaxRoot,x as PieConfigContext,_ as PieCard,cP as PieBaseRoot,Cf as PIEBREAK,VP as OneOfCard,S as MittContext,pH as IOEventsCard,QH as HiddenCard,GH as HTMLEmbedCard,K as FallbackContext,tH as DeviceStorageCard,aH as CloudStorageCard,N as CentrifugeIOContext,zP as BoxCard,MH as AutoRedirectCard,ZP as AjaxGroupCard};
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var uH=Object.create;var{getPrototypeOf:dH,defineProperty:If,getOwnPropertyNames:JU,getOwnPropertyDescriptor:bH}=Object,YU=Object.prototype.hasOwnProperty;var OU=(f,U,P)=>{P=f!=null?uH(dH(f)):{};let H=U||!f||!f.__esModule?If(P,"default",{value:f,enumerable:!0}):P;for(let D of JU(f))if(!YU.call(H,D))If(H,D,{get:()=>f[D],enumerable:!0});return H},CU=new WeakMap,gH=(f)=>{var U=CU.get(f),P;if(U)return U;if(U=If({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")JU(f).map((H)=>!YU.call(U,H)&&If(U,H,{get:()=>f[H],enumerable:!(P=bH(f,H))||P.enumerable}));return CU.set(f,U),U};var vH=(f,U)=>{for(var P in U)If(f,P,{get:U[P],enumerable:!0,configurable:!0,set:(H)=>U[P]=()=>H})};var FP={};vH(FP,{useWebApp:()=>gf,usePieMittAgentTools:()=>LH,usePieEmit:()=>KU,useOpenAIWebRTC:()=>Jf,useMaxWebApp:()=>cf,useAjaxSubmit:()=>SH,unregisterComponent:()=>LU,submitGlobalForm:()=>oH,registry:()=>g,registerPieComponent:()=>Q,registerMultipleComponents:()=>MU,readAjaxKey:()=>TU,pieName:()=>mH,hasComponent:()=>AU,getRegistrySize:()=>oU,getRegistryEntry:()=>a,getMittAgentTools:()=>VU,getComponentMeta:()=>NU,getAllRegisteredComponents:()=>yU,cn:()=>yH,UnionCard:()=>gU,UIRendererContext:()=>y,UILoading:()=>Ff,UI:()=>w,SessionStorageCard:()=>fH,SequenceCard:()=>uU,SecureStorageCard:()=>$H,PieTelegramRoot:()=>QH,PieRoot:()=>BH,PieMaxRoot:()=>wH,PieCard:()=>_,PieBaseRoot:()=>RH,PIEBREAK:()=>_f,OneOfCard:()=>YH,IOEventsCard:()=>aU,HiddenCard:()=>rU,HTMLEmbedCard:()=>hU,DeviceStorageCard:()=>HH,CloudStorageCard:()=>DH,BoxCard:()=>IH,AutoRedirectCard:()=>tU,AjaxGroupCard:()=>TH});module.exports=gH(FP);var u=require("react");var Qf=require("react"),d=Qf.createContext(null),i=()=>{let f=Qf.useContext(d);if(!f)throw new Error("usePieConfig must be used within PieConfigProvider");return f},b=()=>{let{apiServer:f}=i();return f},Rf=b,v=()=>{let{centrifugeServer:f}=i();return f};var m=()=>{let{enableRenderingLog:f}=i();return f},XU=m,GU=()=>{let{pageProcessor:f}=i();return f};var _f="__piedemo__";var BU=require("react"),nf=require("centrifuge"),qU=new Map,p=(f,U)=>{if(!U)return null;let P=`${f}::${U}`,H=qU.get(P);if(H)return H;async function D(){let Z=await fetch(f+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new nf.Centrifuge.UnauthorizedError("Backend is not answering");throw new Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let $=new nf.Centrifuge(U,{getToken:D});return qU.set(P,$),$},pH=BU.createContext(null),k=pH;var QU=require("socket.io-client"),RU=require("react"),WU=new Map,c=(f)=>{let U=WU.get(f);if(U)return U;let P=QU.io(f,{autoConnect:!1,transports:["websocket"]});return WU.set(f,P),P},cH=RU.createContext(null),j=cH;var _U=OU(require("mitt")),t=require("react"),tf=null;function x(){if(!tf)tf=_U.default();return tf}var wU=t.createContext(null);function KU(f){let U=t.useContext(wU);return t.useCallback((P,H)=>{(U??x()).emit(`pie${P}_${f}`,H)},[f,U])}var N=wU;var s=require("react/jsx-runtime"),hH=({card:f,data:U,children:P,useSocketioSupport:H=!1,useCentrifugeSupport:D=!1,useMittSupport:$=!1,centrifugeChannel:Z=void 0,methods:V=void 0,stored:z=void 0})=>{let T=XU(),I=u.useRef(V);if(I.current=V,T)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:H,centrifuge:D,mitt:$,centrifugeChannel:Z}),console.log("[PieCard] Methods:",V?Object.keys(V):"none"),console.log("[PieCard] Has children:",!!P);let X=u.useContext(j),G=u.useContext(k),J=u.useContext(N);if(u.useEffect(()=>{if(!X||!H||!I.current||!U.name){if(T&&H)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!X,useSocketioSupport:H,hasMethods:!!I.current,hasDataName:!!U?.name});return}let q=Object.keys(I.current??{}).map((C)=>{let O=`pie${C}_${U.name}`;if(T)console.log(`[PieCard] Socket.IO registering event: ${O}`);let W=(B)=>{I.current?.[C]?.(B)};return X.on(O,W),[O,W]});return()=>{q.forEach(([C,O])=>{if(T)console.log(`[PieCard] Socket.IO unregistering event: ${C}`);X.off(C,O)})}},[X,U.name,H]),u.useEffect(()=>{if(!G||!D||!Z||!U.name){if(T&&D)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!G,useCentrifugeSupport:D,hasCentrifugeChannel:!!Z,hasMethods:!!I.current,hasDataName:!!U?.name});return}let q=Object.keys(I.current??{}).map((C)=>{let O=`pie${C}_${U.name}_${Z}`;if(T)console.log(`[PieCard] Centrifuge subscribing to channel: ${O}`);let W=G.newSubscription(O);return W.on("publication",(B)=>{if(T)console.log(`[PieCard] Centrifuge received data on ${O}:`,B.data);I.current?.[C]?.(B.data)}),W.subscribe(),W});return()=>{q.forEach((C)=>{if(T)console.log("[PieCard] Centrifuge unsubscribing from channel");C.unsubscribe(),G.removeSubscription(C)})}},[G,Z,U.name,D]),u.useEffect(()=>{if(!J||!$||!U.name){if(T&&$)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!J,useMittSupport:$,hasMethods:!!I.current,hasDataName:!!U?.name});return}let Y=Object.keys(I.current??{}),q={};return Y.forEach((C)=>{let O=`pie${C}_${U.name}`,W=(B)=>{if(T)console.log(`[PieCard] Mitt registering event: ${O}`);I.current?.[C]?.(B)};q[O]=W,J.on(O,W)}),()=>{Object.entries(q).forEach(([C,O])=>{if(T)console.log(`[PieCard] Mitt unregistering event: ${C}`);J.off(C,O)})}},[J,U.name,$]),T)console.log("[PieCard] Rendering complete, returning children");if(z!==void 0)return s.jsxs(s.Fragment,{children:[s.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(z)}),P]});return P},_=hH;var SU=require("react"),sf=new Map;function FU(f,U){return SU.lazy(()=>{if(sf.has(U))return sf.get(U);let P=f().then((H)=>H);return sf.set(U,P),P})}var g=new Map,lH=(f)=>{if(!f.name)throw new Error("Component registration requires a name");if(!f.component&&!f.loader)throw new Error(`Component "${f.name}" requires component or loader`);let U={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=FU(U.loader,f.name),U.loader=void 0,U.isLazy=!0;return U};function Q(f){let U=lH(f);return g.set(U.name,U),U.component}var MU=(f)=>{f.forEach((U)=>Q(U))},LU=(f)=>{g.delete(f)},AU=(f)=>{return g.has(f)},NU=(f)=>{return g.get(f)?.metadata},a=(f)=>{return g.get(f)},yU=()=>{return Array.from(g.keys())},oU=()=>{return g.size};var e=require("react");var mU=require("react"),wf=require("react/jsx-runtime"),rH=mU.createContext(wf.jsx(wf.Fragment,{})),M=rH;var Kf=require("react/jsx-runtime");function nH({uiConfig:f,setUiAjaxConfiguration:U}){let P=e.useContext(M),H=m();if(H)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let D=a(f.card);if(!D?.component){if(H)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return P}if(H)console.log("[UI] Found component in registry:",{name:D.name,isLazy:D.isLazy,hasMetadata:!!D.metadata});let $=D.component,Z=Kf.jsx($,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(D.isLazy){if(H)console.log("[UI] Rendering lazy component with Suspense:",D.name);return Kf.jsx(e.Suspense,{fallback:D.fallback?Kf.jsx(D.fallback,{}):P,children:Z},`${D.name}`)}if(H)console.log("[UI] Rendering component directly:",D.name);return Z}var w=e.memo(nH);var Sf=require("react");var EU=require("react"),iH=EU.createContext(null),y=iH;var Cf=require("react/jsx-runtime");function kU({uiConfig:f,setUiAjaxConfiguration:U}){let P=Sf.useContext(M),H=m();if(H)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let D=a(f.card);if(!D?.component){if(H)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return P}if(H)console.log("[UILoading] Found component in registry:",{name:D.name,isLazy:D.isLazy,hasMetadata:!!D.metadata,hasFallback:!!D.fallback});if(D.fallback){if(H)console.log("[UILoading] Rendering fallback for:",D.name);let V=D.fallback;return Cf.jsx(V,{})}if(H)console.log("[UILoading] No fallback, rendering full component:",D.name);let $=D.component,Z=Cf.jsx(y.Provider,{value:kU,children:Cf.jsx($,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(D.isLazy)return Cf.jsx(Sf.Suspense,{fallback:P,children:Z},`${D.name}`);return Z}var Ff=kU;var jU=require("react");var Mf=require("react/jsx-runtime"),tH=({data:f,content:U,setUiAjaxConfiguration:P})=>{let{name:H,sx:D}=f,$=jU.useContext(y)??w;return Mf.jsx(_,{card:H,data:f,children:Mf.jsx("div",{style:D,id:H,children:U.map((Z,V)=>{return Mf.jsx($,{uiConfig:Z,setUiAjaxConfiguration:P},`children-${V}`)})})})},xU=tH;var uU=Q({name:"SequenceCard",component:xU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var dU=require("react");var af=require("react/jsx-runtime"),sH=({data:f,content:U,setUiAjaxConfiguration:P})=>{let{name:H}=f,D=dU.useContext(y)??w;return af.jsx(_,{card:H,data:f,children:U.map(($,Z)=>{return af.jsx(D,{uiConfig:$,setUiAjaxConfiguration:P},`children-${Z}`)})})},bU=sH;var gU=Q({name:"UnionCard",component:bU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var Lf=require("react"),vU=OU(require("html-react-parser"));var E=require("react");function aH(){let f=new AudioContext,U=f.createOscillator(),P=U.connect(f.createMediaStreamDestination());U.start();let H=P.stream.getAudioTracks()[0];return H.enabled=!1,H}function Jf(f=null,U){let[P,H]=E.useState(!1),D=E.useRef(null),$=E.useRef(null),Z=E.useRef(null),V=E.useCallback(async(X,G=!0)=>{if(D.current)z();let J=new RTCPeerConnection;if(J.onconnectionstatechange=()=>{if(J.connectionState==="connected")H(!0);else if(["disconnected","failed","closed"].includes(J.connectionState))H(!1)},J.ontrack=(R)=>{if(f)f.srcObject=R.streams[0]},G){let R=await navigator.mediaDevices.getUserMedia({audio:!0});J.addTrack(R.getTracks()[0],R)}else{let R=aH();J.addTrack(R)}let Y=J.createDataChannel("oai-events");$.current=Y,Z.current=new Promise((R)=>{Y.addEventListener("open",()=>{R()})});let q=await J.createOffer();await J.setLocalDescription(q);let B=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:q.sdp,headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/sdp"}})).text();await J.setRemoteDescription({type:"answer",sdp:B}),D.current=J,await Z.current},[f]),z=E.useCallback(()=>{let X=$.current;if(X)X.close();D.current?.getSenders()?.forEach((G)=>G.track?.stop()),D.current?.close(),H(!1),D.current=null,$.current=null,Z.current=null},[f]),T=E.useCallback((X)=>{let G=$.current;if(!G){console.error("Data channel is not ready",X);return}let J=new Date().toLocaleTimeString();if(X.event_id=X.event_id||crypto.randomUUID(),G.send(JSON.stringify(X)),!X.timestamp)X.timestamp=J;U?.(X)},[U,f]),I=E.useCallback((X)=>{if(!$.current){console.error("Data channel is not ready");return}let J=()=>{T({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:X}]}}),T({type:"response.create"})};if(Z.current)Z.current.then(J);else J()},[U,f]);return E.useEffect(()=>{let X=$.current;if(!X)return;let G=(J)=>{let Y=JSON.parse(J.data);if(!Y.timestamp)Y.timestamp=new Date().toLocaleTimeString();U?.(Y)};return X.addEventListener("message",G),()=>{X.removeEventListener("message",G)}},[U,f]),{isSessionActive:P,startSession:V,stopSession:z,sendTextMessage:I}}var cU=require("react/jsx-runtime"),eH=({data:f})=>{let{html:U,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:D,centrifugeChannel:$}=f,[Z,V]=Lf.useState(U),{isSessionActive:z,startSession:T,sendTextMessage:I}=Jf(null,(Y)=>{if(console.log(Y.type,Y.type==="response.output_text.delta"&&Y.delta),Y.type==="response.output_text.delta"&&Y.delta)V((q)=>q+Y.delta)});return Lf.useEffect(()=>{V(U)},[U]),cU.jsx(_,{card:"HTMLEmbedCard",data:f,methods:{update:(Y)=>{V(Y.value)},generateUsingAI:async(Y)=>{try{if(!z&&Y.token)await T(Y.token,!1);I(Y.prompt)}catch(q){console.error("Failed to generate using AI",q)}},initializeAI:async(Y)=>{if(!z&&Y.token)await T(Y.token,!1)}},useCentrifugeSupport:H,useSocketioSupport:P,useMittSupport:D,centrifugeChannel:$,children:vU.default(Z)})},pU=eH;var hU=Q({name:"HTMLEmbedCard",component:pU,metadata:{author:"Swarm.ing"}});var Af=require("react");var ef=require("react/jsx-runtime"),fP=({data:f})=>{let{name:U,value:P,useSocketioSupport:H,useCentrifugeSupport:D,useMittSupport:$,centrifugeChannel:Z}=f,[V,z]=Af.useState(P);return Af.useEffect(()=>{z(P)},[P]),ef.jsx(_,{card:"HiddenCard",data:f,useSocketioSupport:H,useCentrifugeSupport:D,useMittSupport:$,centrifugeChannel:Z,methods:{update:({value:T})=>{z(T)}},children:ef.jsx("input",{type:"hidden",id:U,name:U,value:V})})},lU=fP;var rU=Q({name:"HiddenCard",component:lU,metadata:{author:"Swarm.ing"}});var Yf=require("react");var nU=require("react"),UP=nU.createContext(void 0),o=UP;var Nf=require("react/jsx-runtime"),HP=({data:f})=>{let{url:U}=f,P=Yf.useContext(o),H=Yf.useContext(M);return Yf.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else P?.(U)},[U,P]),Nf.jsx(Nf.Fragment,{children:H})},iU=HP;var tU=Q({name:"AutoRedirectCard",component:iU,metadata:{author:"Swarm.ing"}});var h=require("react-toastify"),yf=require("react-toastify");var Uf=require("react");var ff=require("react/jsx-runtime"),PP={bounce:h.Bounce,slide:h.Slide,zoom:h.Zoom,flip:h.Flip},DP=(f)=>{let U={...f,type:f.alertType,transition:f.transition?PP[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};yf.toast(f.message,U)},ZP=(f)=>{console.log("Log event",f)},$P=(f)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(H){console.error("[IOEventsCard] Failed to show notification",H)}},P=window.Notification.permission;if(P==="granted"){U();return}if(P==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((H)=>{if(H==="granted")U()})},zP=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:P,useMittSupport:H,centrifugeChannel:D}=f,$=Uf.useContext(o),Z=Uf.useRef($);Z.current=$;let V=Uf.useMemo(()=>({alert:DP,log:ZP,push:$P,redirect:(z)=>{if(z.to){let T=z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else Z.current?.(T)}else window.location.reload()},reload:(z)=>{if(z.to){let T=z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else Z.current?.(T)}else window.location.reload()}}),[]);return ff.jsx(ff.Fragment,{children:ff.jsx(_,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:P,useMittSupport:H,centrifugeChannel:D,methods:V,children:ff.jsx(yf.ToastContainer,{})})})},sU=zP;var aU=Q({name:"IOEventsCard",component:sU,metadata:{author:"Swarm.ing"}});var Of=require("react");var fU=require("react/jsx-runtime"),TP=({data:f})=>{let{name:U,key:P,value:H,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V}=f,[z,T]=Of.useState(H);return Of.useEffect(()=>{T(H)},[H]),Of.useEffect(()=>{if(typeof window==="undefined")return;sessionStorage.setItem(P,z)},[P,z]),fU.jsx(_,{card:"SessionStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:I})=>{T(I)},remove:()=>{sessionStorage.removeItem(P),T("")}},children:fU.jsx("input",{type:"hidden",id:U,name:U,value:z})})},eU=TP;var fH=Q({name:"SessionStorageCard",component:eU,metadata:{author:"PieData"}});var Xf=require("react");var UU=require("react/jsx-runtime"),VP=({data:f})=>{let{name:U,key:P,value:H,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V}=f,[z,T]=Xf.useState(H);return Xf.useEffect(()=>{T(H)},[H]),Xf.useEffect(()=>{if(typeof window==="undefined")return;localStorage.setItem(P,z)},[P,z]),UU.jsx(_,{card:"DeviceStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:I})=>{T(I)},remove:()=>{localStorage.removeItem(P),T("")}},children:UU.jsx("input",{type:"hidden",id:U,name:U,value:z})})},UH=VP;var HH=Q({name:"DeviceStorageCard",component:UH,metadata:{author:"PieData"}});var Gf=require("react");var HU=require("react/jsx-runtime"),IP=({data:f})=>{let{name:U,key:P,value:H,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V}=f,[z,T]=Gf.useState(H);return Gf.useEffect(()=>{T(H)},[H]),Gf.useEffect(()=>{if(typeof window==="undefined")return;let I=window.Telegram?.WebApp?.CloudStorage;if(!I)return;I.setItem(P,z)},[P,z]),HU.jsx(_,{card:"CloudStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:I})=>{T(I)},remove:()=>{let I=window.Telegram?.WebApp?.CloudStorage;if(I)I.removeItem(P);T("")}},children:HU.jsx("input",{type:"hidden",id:U,name:U,value:z})})},PH=IP;var DH=Q({name:"CloudStorageCard",component:PH,metadata:{author:"PieData"}});var qf=require("react");var PU=require("react/jsx-runtime"),CP=({data:f})=>{let{name:U,key:P,value:H,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V}=f,[z,T]=qf.useState(H);return qf.useEffect(()=>{T(H)},[H]),qf.useEffect(()=>{if(typeof window==="undefined")return;let I=window.Telegram?.WebApp?.SecureStorage;if(!I)return;I.setItem(P,z)},[P,z]),PU.jsx(_,{card:"SecureStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:V,methods:{update:({value:I})=>{T(I)},remove:()=>{let I=window.Telegram?.WebApp?.SecureStorage;if(I)I.removeItem(P);T("")}},children:PU.jsx("input",{type:"hidden",id:U,name:U,value:z})})},ZH=CP;var $H=Q({name:"SecureStorageCard",component:ZH,metadata:{author:"PieData"}});var L=require("react");var DU=require("react/jsx-runtime"),JP=({data:f,content:U})=>{let{useLoader:P,noReturn:H,returnType:D,useSocketioSupport:$,useCentrifugeSupport:Z,useMittSupport:V,centrifugeChannel:z}=f,T=L.useContext(M),I=L.useContext(y)??w,[X,G]=L.useState(!1),[J,Y]=L.useState(null),q=L.useRef(U),C=L.useContext(N),O=L.useCallback((R)=>{if(R===null)G(!0);else if(G(!1),!H)q.current=R;if(!H)Y(R)},[H]),W=L.useCallback((R)=>{q.current=R.content,Y(R.content)},[]),B=L.useCallback((R)=>{if(R===null)G(!0);else if(G(!1),!H)for(let Bf of R)C?.emit(Bf.name,Bf.data)},[H,C]);if(L.useEffect(()=>{Y(U),G(!1)},[U]),!J&&P)return T;return DU.jsx(_,{card:"AjaxGroupCard",data:f,methods:{changeContent:W},useSocketioSupport:$,useCentrifugeSupport:Z,useMittSupport:V,centrifugeChannel:z,children:DU.jsx(I,{uiConfig:J??q.current,setUiAjaxConfiguration:D==="events"?B:O})})},zH=JP;var TH=Q({name:"AjaxGroupCard",component:zH,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var ZU=require("react");var of=require("react/jsx-runtime"),YP=({data:f,content:U,setUiAjaxConfiguration:P})=>{let{name:H,url:D,sx:$}=f,Z=ZU.useContext(o),V=ZU.useContext(y)??w;return of.jsx(_,{card:H,data:f,children:of.jsx("div",{style:$,id:H,onClick:(T)=>{if(D)if(T.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(D))window.location.href=D;else Z?.(D)},children:of.jsx(V,{setUiAjaxConfiguration:P,uiConfig:U})})})},VH=YP;var IH=Q({name:"BoxCard",component:VH,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var CH=require("react");var mf=require("react/jsx-runtime"),OP=({data:f,content:U,setUiAjaxConfiguration:P})=>{let{name:H,sx:D}=f,$=CH.useContext(y)??w;return mf.jsx(_,{card:H,data:f,children:mf.jsx("div",{style:D,id:H,children:U.map((Z,V)=>{return mf.jsx($,{uiConfig:Z,setUiAjaxConfiguration:P},`children-${V}`)})})})},JH=OP;var YH=Q({name:"OneOfCard",component:JH,metadata:{author:"Swarm.ing",description:"Different variants"}});var Pf=require("react"),Df=require("@tanstack/react-query");var uf=require("react");var jf=require("react"),Ef=new Map,kf=new Map;function xf(f,U){let P=`${f}::${U}`,H=f?Ef.get(P):void 0,[D,$]=jf.useState(H??null);return jf.useEffect(()=>{if(!f)return;if(Ef.has(P)){$(Ef.get(P));return}let Z=kf.get(P);if(!Z)Z=fetch(f+`api/support/${U}`,{method:"GET"}).then((z)=>z.json()).then((z)=>{return Ef.set(P,z),kf.delete(P),z}).catch((z)=>{throw kf.delete(P),z}),kf.set(P,Z);let V=!1;return Z.then((z)=>{if(!V)$(z)}).catch(()=>{}),()=>{V=!0}},[f,U,P]),D}var $U=null,OH=null;function XH(){OH?.()}function zU(){if(typeof window==="undefined")return Promise.resolve();if(typeof window.sid!=="undefined")return Promise.resolve();if(!$U)$U=new Promise((f)=>{OH=()=>{f()}});return $U}var XP=({children:f})=>{let U=uf.useContext(j),P=Rf(),H=xf(P,"socketIO"),D=($)=>{if(typeof window!=="undefined")window.sid=$.sid,XH(),console.log(`SocketIO initialized: ${window.sid}`)};return uf.useEffect(()=>{if(!U)return;let $=()=>{console.log("SocketIO connected")},Z=(V)=>{console.log(`SocketIO disconnected: ${V}`),U.connect()};if(H)U.on("pieinit",D),U.on("connect",$),U.on("disconnect",Z),U.connect();return()=>{if(H)U.off("pieinit",D),U.off("connect",$),U.off("disconnect",Z),U.disconnect()}},[U,H]),f},l=XP;var df=require("react");var GP=({children:f})=>{let U=df.useContext(k),P=Rf(),H=xf(P,"centrifuge");return df.useEffect(()=>{if(!U)return;let D=()=>{console.log("Centrifuge connected")},$=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(H)U.on("connected",D),U.on("disconnected",$),U.connect();return()=>{if(H)U.disconnect()}},[U,H]),f},r=GP;var qH=require("axios-date-transformer");var GH=require("react/jsx-runtime");function Hf(f,U,P){if(!U)return P;let H=f.replace(/^\//,""),D=U[H];if(!D)return P;return GH.jsx(Ff,{uiConfig:D})}var K=require("react/jsx-runtime"),qP=({location:f,fallback:U,piecache:P,onError:H,queryOptions:D,disableGlobalForm:$})=>{let Z=b(),V=v(),z=m(),T=Pf.useMemo(()=>qH.createAxiosDateTransformer({baseURL:Z||""}),[Z]),I=Pf.useMemo(()=>x(),[]),X=Pf.useMemo(()=>Z?c(Z):null,[Z]),G=Pf.useMemo(()=>Z?p(Z,V):null,[Z,V]),{data:J,isLoading:Y,error:q}=Df.useQuery({queryKey:["uiConfig",f.pathname+f.search,Z],enabled:!!Z,queryFn:async()=>{let O=new URLSearchParams(f.search);O.set("__pieroot","web");let W="/api/content"+f.pathname+"?"+O.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",W);let B=await T.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",B.data);return B.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(O)=>Math.min(1000*2**O,30000),...D}),C=Hf(f.pathname,P,U);if(!Z)return C??null;if(z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",V),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!P);if(q){if(z)console.error("[PieRoot] Error fetching UI configuration:",q),console.error("[PieRoot] Error details:",{message:q.message,status:q.response?.status,data:q.response?.data});return H?.(),C}if(Y||!J){if(z)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!J});return C}if(z)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return K.jsx(N.Provider,{value:I,children:K.jsx(j.Provider,{value:X,children:K.jsx(k.Provider,{value:G,children:K.jsx(M.Provider,{value:U??K.jsx(K.Fragment,{}),children:K.jsx(l,{children:K.jsx(r,{children:$?K.jsx(w,{uiConfig:J}):K.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:K.jsx(w,{uiConfig:J})})})})})})})})},BP=(f)=>{let U=Pf.useMemo(()=>new Df.QueryClient,[]);return K.jsx(o.Provider,{value:f.onNavigate,children:K.jsx(d.Provider,{value:f.config,children:K.jsx(Df.QueryClientProvider,{client:U,children:K.jsx(qP,{...f})})})})},BH=BP;var Zf=require("react"),$f=require("@tanstack/react-query");var WH=require("axios-date-transformer");var bf=require("react");var gf=({onError:f}={})=>{let[U,P]=bf.useState(null),H=GU();return bf.useEffect(()=>{if(typeof window==="undefined")return;let D=window.Telegram?.WebApp;if(!D)return;try{D.ready?.()}catch($){f?.()}if(H==="telegram_expanded"&&(D.platform==="ios"||D.platform==="android"))D.expand();P(D)},[]),U};var S=require("react/jsx-runtime"),WP=({location:f,fallback:U,piecache:P,onError:H,queryOptions:D,disableGlobalForm:$})=>{let Z=b(),V=v(),z=m(),T=Zf.useMemo(()=>WH.createAxiosDateTransformer({baseURL:Z}),[Z]),I=Zf.useMemo(()=>x(),[]),X=Zf.useMemo(()=>Z?c(Z):null,[Z]),G=Zf.useMemo(()=>Z?p(Z,V):null,[Z,V]),J=gf({onError:H}),{data:Y,isLoading:q,error:C}=$f.useQuery({queryKey:["uiConfig",f.pathname+f.search,J?.initData],enabled:!!J?.initData,queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","telegram"),J?.initData)W.set("initData",J.initData);let B="/api/content"+f.pathname+"?"+W.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await T.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...D}),O=Hf(f.pathname,P,U);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(C&&z)return console.error("[PieRoot] Error fetching UI configuration:",C),console.error("[PieRoot] Error details:",{message:C.message,status:C.response?.status,data:C.response?.data}),H?.(),O;if(q||!Y){if(z)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!Y});return O}if(z)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return S.jsx(N.Provider,{value:I,children:S.jsx(j.Provider,{value:X,children:S.jsx(k.Provider,{value:G,children:S.jsx(M.Provider,{value:U??S.jsx(S.Fragment,{}),children:S.jsx(l,{children:S.jsx(r,{children:$?S.jsx(w,{uiConfig:Y}):S.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:S.jsx(w,{uiConfig:Y})})})})})})})})},QP=(f)=>{let U=Zf.useMemo(()=>new $f.QueryClient,[]);return S.jsx(o.Provider,{value:f.onNavigate,children:S.jsx(d.Provider,{value:f.config,children:S.jsx($f.QueryClientProvider,{client:U,children:S.jsx(WP,{...f})})})})},QH=QP;var zf=require("react"),vf=require("@tanstack/react-query");var A=require("react/jsx-runtime"),RP=({location:f,fallback:U,children:P,disableGlobalForm:H})=>{let D=b(),$=v(),Z=m(),V=zf.useMemo(()=>x(),[]),z=zf.useMemo(()=>D?c(D):null,[D]),T=zf.useMemo(()=>D?p(D,$):null,[D,$]);if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",$),console.log("[PieRoot] Fallback provided:",!!U);return A.jsx(N.Provider,{value:V,children:A.jsx(j.Provider,{value:z,children:A.jsx(k.Provider,{value:T,children:A.jsx(M.Provider,{value:U??A.jsx(A.Fragment,{}),children:A.jsx(l,{children:A.jsx(r,{children:H?P:A.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:P})})})})})})})},_P=(f)=>{let[U]=zf.useState(()=>new vf.QueryClient);return A.jsx(o.Provider,{value:f.onNavigate,children:A.jsx(d.Provider,{value:f.config,children:A.jsx(vf.QueryClientProvider,{client:U,children:A.jsx(RP,{...f})})})})},RH=_P;var Tf=require("react"),Vf=require("@tanstack/react-query");var _H=require("axios-date-transformer");var pf=require("react"),cf=()=>{let[f,U]=pf.useState(null);return pf.useEffect(()=>{if(typeof window==="undefined")return;let P=window.WebApp;if(!P)return;P.ready(),U(P)},[]),f};var F=require("react/jsx-runtime"),wP=({location:f,fallback:U,piecache:P,onError:H,queryOptions:D,disableGlobalForm:$})=>{let Z=b(),V=v(),z=m(),T=Tf.useMemo(()=>_H.createAxiosDateTransformer({baseURL:Z}),[Z]),I=Tf.useMemo(()=>x(),[]),X=Tf.useMemo(()=>Z?c(Z):null,[Z]),G=Tf.useMemo(()=>Z?p(Z,V):null,[Z,V]),J=cf(),{data:Y,isLoading:q,error:C}=Vf.useQuery({queryKey:["uiConfig",f.pathname+f.search,J?.initData],queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","max"),J?.initData)W.set("initData",J.initData);let B="/api/content"+f.pathname+"?"+W.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await T.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},enabled:!!J?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...D}),O=Hf(f.pathname,P,U);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(C&&z)return console.error("[PieRoot] Error fetching UI configuration:",C),console.error("[PieRoot] Error details:",{message:C.message,status:C.response?.status,data:C.response?.data}),H?.(),O;if(q||!Y){if(z)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!Y});return O}if(z)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return F.jsx(N.Provider,{value:I,children:F.jsx(j.Provider,{value:X,children:F.jsx(k.Provider,{value:G,children:F.jsx(M.Provider,{value:U??F.jsx(F.Fragment,{}),children:F.jsx(l,{children:F.jsx(r,{children:$?F.jsx(w,{uiConfig:Y}):F.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:F.jsx(w,{uiConfig:Y})})})})})})})})},KP=(f)=>{let U=Tf.useMemo(()=>new Vf.QueryClient,[]);return F.jsx(o.Provider,{value:f.onNavigate,children:F.jsx(d.Provider,{value:f.config,children:F.jsx(Vf.QueryClientProvider,{client:U,children:F.jsx(wP,{...f})})})})},wH=KP;var KH=require("react"),TU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw new Error("SocketIO isn't initialized properly");return[window.sid]}let P=document.getElementsByName(f);if(!P.length){if(U)console.warn(`No input found with name ${f}`);return[]}let H=P[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},SP=(f,U={},P=[],H,D)=>{let $=D?.renderingLogEnabled??!1,Z=D?.timeout,V=D?.retryPolicy,z=V?.maxRetries??0,T=V?.baseDelay??1000,I=V?.retryOn??[502,503,504];if($)console.log("Registering AJAX: ",H,U,P);return async(X={})=>{if(typeof window==="undefined"||typeof document==="undefined"){if($)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let G=D?.apiServer;if(!G){if($)console.warn("AJAX skipped: apiServer is missing");return}if(!H||!f){if($)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(P.includes("sid"))await zU();let J=new FormData;for(let[C,O]of Object.entries({...U,...X}))J.append(C,O);for(let C of P)for(let O of TU(C,$))J.append(C,O);let Y=G+"api/ajax_content"+H;f(null);let q;for(let C=0;C<=z;C++){if(C>0){let B=T*2**(C-1);if($)console.log(`AJAX retry ${C}/${z} after ${B}ms`);await new Promise((R)=>setTimeout(R,B))}let O=Z!=null?new AbortController:null,W=O&&setTimeout(()=>O.abort(),Z);try{let B=await fetch(Y,{method:"POST",body:J,signal:O?.signal});if(W)clearTimeout(W);if(!B.ok&&I.includes(B.status)&&C<z){q=new Error(`HTTP ${B.status}`);continue}let Bf=(B.headers.get("content-type")||"").includes("application/json");if(!!B.body?.getReader&&!Bf){let Wf=B.body.getReader(),EH=new TextDecoder,n="";while(!0){let{done:lf,value:kH}=await Wf.read();if(lf)break;n+=EH.decode(kH,{stream:!0});let IU=n.split(`
|
|
3
|
-
`);n=
|
|
2
|
+
var uH=Object.create;var{getPrototypeOf:dH,defineProperty:Vf,getOwnPropertyNames:OU,getOwnPropertyDescriptor:bH}=Object,JU=Object.prototype.hasOwnProperty;var YU=(f,U,P)=>{P=f!=null?uH(dH(f)):{};let H=U||!f||!f.__esModule?Vf(P,"default",{value:f,enumerable:!0}):P;for(let D of OU(f))if(!JU.call(H,D))Vf(H,D,{get:()=>f[D],enumerable:!0});return H},IU=new WeakMap,gH=(f)=>{var U=IU.get(f),P;if(U)return U;if(U=Vf({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")OU(f).map((H)=>!JU.call(U,H)&&Vf(U,H,{get:()=>f[H],enumerable:!(P=bH(f,H))||P.enumerable}));return IU.set(f,U),U};var vH=(f,U)=>{for(var P in U)Vf(f,P,{get:U[P],enumerable:!0,configurable:!0,set:(H)=>U[P]=()=>H})};var FP={};vH(FP,{useWebApp:()=>gf,usePieMittAgentTools:()=>LH,usePieEmit:()=>KU,useOpenAIWebRTC:()=>Of,useMaxWebApp:()=>cf,useAjaxSubmit:()=>SH,unregisterComponent:()=>LU,submitGlobalForm:()=>yH,registry:()=>g,registerPieComponent:()=>Q,registerMultipleComponents:()=>MU,readAjaxKey:()=>CU,pieName:()=>mH,hasComponent:()=>AU,getRegistrySize:()=>yU,getRegistryEntry:()=>a,getMittAgentTools:()=>TU,getEmitter:()=>m,getComponentMeta:()=>oU,getAllRegisteredComponents:()=>NU,cn:()=>NH,UnionCard:()=>gU,UIRendererContext:()=>E,UILoading:()=>Ff,UI:()=>w,SocketIOContext:()=>y,SessionStorageCard:()=>fH,SequenceCard:()=>uU,SecureStorageCard:()=>$H,PieTelegramRoot:()=>QH,PieRoot:()=>BH,PieMaxRoot:()=>wH,PieConfigContext:()=>u,PieCard:()=>_,PieBaseRoot:()=>RH,PIEBREAK:()=>_f,OneOfCard:()=>JH,MittContext:()=>L,IOEventsCard:()=>aU,HiddenCard:()=>rU,HTMLEmbedCard:()=>hU,FallbackContext:()=>K,DeviceStorageCard:()=>HH,CloudStorageCard:()=>DH,CentrifugeIOContext:()=>N,BoxCard:()=>VH,AutoRedirectCard:()=>iU,AjaxGroupCard:()=>CH});module.exports=gH(FP);var d=require("react");var Qf=require("react"),u=Qf.createContext(null),t=()=>{let f=Qf.useContext(u);if(!f)throw new Error("usePieConfig must be used within PieConfigProvider");return f},b=()=>{let{apiServer:f}=t();return f},Rf=b,v=()=>{let{centrifugeServer:f}=t();return f};var x=()=>{let{enableRenderingLog:f}=t();return f},XU=x,GU=()=>{let{pageProcessor:f}=t();return f};var _f="__piedemo__";var BU=require("react"),nf=require("centrifuge"),qU=new Map,p=(f,U)=>{if(!U)return null;let P=`${f}::${U}`,H=qU.get(P);if(H)return H;async function D(){let Z=await fetch(f+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new nf.Centrifuge.UnauthorizedError("Backend is not answering");throw new Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let $=new nf.Centrifuge(U,{getToken:D});return qU.set(P,$),$},pH=BU.createContext(null),N=pH;var QU=require("socket.io-client"),RU=require("react"),WU=new Map,c=(f)=>{let U=WU.get(f);if(U)return U;let P=QU.io(f,{autoConnect:!1,transports:["websocket"]});return WU.set(f,P),P},cH=RU.createContext(null),y=cH;var _U=YU(require("mitt")),i=require("react"),tf=null;function m(){if(!tf)tf=_U.default();return tf}var wU=i.createContext(null);function KU(f){let U=i.useContext(wU);return i.useCallback((P,H)=>{(U??m()).emit(`pie${P}_${f}`,H)},[f,U])}var L=wU;var s=require("react/jsx-runtime"),hH=({card:f,data:U,children:P,useSocketioSupport:H=!1,useCentrifugeSupport:D=!1,useMittSupport:$=!1,centrifugeChannel:Z=void 0,methods:T=void 0,stored:z=void 0})=>{let C=XU(),V=d.useRef(T);if(V.current=T,C)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:H,centrifuge:D,mitt:$,centrifugeChannel:Z}),console.log("[PieCard] Methods:",T?Object.keys(T):"none"),console.log("[PieCard] Has children:",!!P);let X=d.useContext(y),G=d.useContext(N),O=d.useContext(L);if(d.useEffect(()=>{if(!X||!H||!V.current||!U.name){if(C&&H)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!X,useSocketioSupport:H,hasMethods:!!V.current,hasDataName:!!U?.name});return}let q=Object.keys(V.current??{}).map((I)=>{let Y=`pie${I}_${U.name}`;if(C)console.log(`[PieCard] Socket.IO registering event: ${Y}`);let W=(B)=>{V.current?.[I]?.(B)};return X.on(Y,W),[Y,W]});return()=>{q.forEach(([I,Y])=>{if(C)console.log(`[PieCard] Socket.IO unregistering event: ${I}`);X.off(I,Y)})}},[X,U.name,H]),d.useEffect(()=>{if(!G||!D||!Z||!U.name){if(C&&D)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!G,useCentrifugeSupport:D,hasCentrifugeChannel:!!Z,hasMethods:!!V.current,hasDataName:!!U?.name});return}let q=Object.keys(V.current??{}).map((I)=>{let Y=`pie${I}_${U.name}_${Z}`;if(C)console.log(`[PieCard] Centrifuge subscribing to channel: ${Y}`);let W=G.newSubscription(Y);return W.on("publication",(B)=>{if(C)console.log(`[PieCard] Centrifuge received data on ${Y}:`,B.data);V.current?.[I]?.(B.data)}),W.subscribe(),W});return()=>{q.forEach((I)=>{if(C)console.log("[PieCard] Centrifuge unsubscribing from channel");I.unsubscribe(),G.removeSubscription(I)})}},[G,Z,U.name,D]),d.useEffect(()=>{if(!O||!$||!U.name){if(C&&$)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!O,useMittSupport:$,hasMethods:!!V.current,hasDataName:!!U?.name});return}let J=Object.keys(V.current??{}),q={};return J.forEach((I)=>{let Y=`pie${I}_${U.name}`,W=(B)=>{if(C)console.log(`[PieCard] Mitt registering event: ${Y}`);V.current?.[I]?.(B)};q[Y]=W,O.on(Y,W)}),()=>{Object.entries(q).forEach(([I,Y])=>{if(C)console.log(`[PieCard] Mitt unregistering event: ${I}`);O.off(I,Y)})}},[O,U.name,$]),C)console.log("[PieCard] Rendering complete, returning children");if(z!==void 0)return s.jsxs(s.Fragment,{children:[s.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(z)}),P]});return P},_=hH;var SU=require("react"),sf=new Map;function FU(f,U){return SU.lazy(()=>{if(sf.has(U))return sf.get(U);let P=f().then((H)=>H);return sf.set(U,P),P})}var g=new Map,lH=(f)=>{if(!f.name)throw new Error("Component registration requires a name");if(!f.component&&!f.loader)throw new Error(`Component "${f.name}" requires component or loader`);let U={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=FU(U.loader,f.name),U.loader=void 0,U.isLazy=!0;return U};function Q(f){let U=lH(f);return g.set(U.name,U),U.component}var MU=(f)=>{f.forEach((U)=>Q(U))},LU=(f)=>{g.delete(f)},AU=(f)=>{return g.has(f)},oU=(f)=>{return g.get(f)?.metadata},a=(f)=>{return g.get(f)},NU=()=>{return Array.from(g.keys())},yU=()=>{return g.size};var e=require("react");var mU=require("react"),wf=require("react/jsx-runtime"),rH=mU.createContext(wf.jsx(wf.Fragment,{})),K=rH;var Kf=require("react/jsx-runtime");function nH({uiConfig:f,setUiAjaxConfiguration:U}){let P=e.useContext(K),H=x();if(H)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let D=a(f.card);if(!D?.component){if(H)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return P}if(H)console.log("[UI] Found component in registry:",{name:D.name,isLazy:D.isLazy,hasMetadata:!!D.metadata});let $=D.component,Z=Kf.jsx($,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(D.isLazy){if(H)console.log("[UI] Rendering lazy component with Suspense:",D.name);return Kf.jsx(e.Suspense,{fallback:D.fallback?Kf.jsx(D.fallback,{}):P,children:Z},`${D.name}`)}if(H)console.log("[UI] Rendering component directly:",D.name);return Z}var w=e.memo(nH);var Sf=require("react");var EU=require("react"),tH=EU.createContext(null),E=tH;var If=require("react/jsx-runtime");function kU({uiConfig:f,setUiAjaxConfiguration:U}){let P=Sf.useContext(K),H=x();if(H)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let D=a(f.card);if(!D?.component){if(H)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return P}if(H)console.log("[UILoading] Found component in registry:",{name:D.name,isLazy:D.isLazy,hasMetadata:!!D.metadata,hasFallback:!!D.fallback});if(D.fallback){if(H)console.log("[UILoading] Rendering fallback for:",D.name);let T=D.fallback;return If.jsx(T,{})}if(H)console.log("[UILoading] No fallback, rendering full component:",D.name);let $=D.component,Z=If.jsx(E.Provider,{value:kU,children:If.jsx($,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(D.isLazy)return If.jsx(Sf.Suspense,{fallback:P,children:Z},`${D.name}`);return Z}var Ff=kU;var xU=require("react");var Mf=require("react/jsx-runtime"),iH=({data:f,content:U,setUiAjaxConfiguration:P})=>{let{name:H,sx:D}=f,$=xU.useContext(E)??w;return Mf.jsx(_,{card:H,data:f,children:Mf.jsx("div",{style:D,id:H,children:U.map((Z,T)=>{return Mf.jsx($,{uiConfig:Z,setUiAjaxConfiguration:P},`children-${T}`)})})})},jU=iH;var uU=Q({name:"SequenceCard",component:jU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var dU=require("react");var af=require("react/jsx-runtime"),sH=({data:f,content:U,setUiAjaxConfiguration:P})=>{let{name:H}=f,D=dU.useContext(E)??w;return af.jsx(_,{card:H,data:f,children:U.map(($,Z)=>{return af.jsx(D,{uiConfig:$,setUiAjaxConfiguration:P},`children-${Z}`)})})},bU=sH;var gU=Q({name:"UnionCard",component:bU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var Lf=require("react"),vU=YU(require("html-react-parser"));var j=require("react");function aH(){let f=new AudioContext,U=f.createOscillator(),P=U.connect(f.createMediaStreamDestination());U.start();let H=P.stream.getAudioTracks()[0];return H.enabled=!1,H}function Of(f=null,U){let[P,H]=j.useState(!1),D=j.useRef(null),$=j.useRef(null),Z=j.useRef(null),T=j.useCallback(async(X,G=!0)=>{if(D.current)z();let O=new RTCPeerConnection;if(O.onconnectionstatechange=()=>{if(O.connectionState==="connected")H(!0);else if(["disconnected","failed","closed"].includes(O.connectionState))H(!1)},O.ontrack=(R)=>{if(f)f.srcObject=R.streams[0]},G){let R=await navigator.mediaDevices.getUserMedia({audio:!0});O.addTrack(R.getTracks()[0],R)}else{let R=aH();O.addTrack(R)}let J=O.createDataChannel("oai-events");$.current=J,Z.current=new Promise((R)=>{J.addEventListener("open",()=>{R()})});let q=await O.createOffer();await O.setLocalDescription(q);let B=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:q.sdp,headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/sdp"}})).text();await O.setRemoteDescription({type:"answer",sdp:B}),D.current=O,await Z.current},[f]),z=j.useCallback(()=>{let X=$.current;if(X)X.close();D.current?.getSenders()?.forEach((G)=>G.track?.stop()),D.current?.close(),H(!1),D.current=null,$.current=null,Z.current=null},[f]),C=j.useCallback((X)=>{let G=$.current;if(!G){console.error("Data channel is not ready",X);return}let O=new Date().toLocaleTimeString();if(X.event_id=X.event_id||crypto.randomUUID(),G.send(JSON.stringify(X)),!X.timestamp)X.timestamp=O;U?.(X)},[U,f]),V=j.useCallback((X)=>{if(!$.current){console.error("Data channel is not ready");return}let O=()=>{C({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:X}]}}),C({type:"response.create"})};if(Z.current)Z.current.then(O);else O()},[U,f]);return j.useEffect(()=>{let X=$.current;if(!X)return;let G=(O)=>{let J=JSON.parse(O.data);if(!J.timestamp)J.timestamp=new Date().toLocaleTimeString();U?.(J)};return X.addEventListener("message",G),()=>{X.removeEventListener("message",G)}},[U,f]),{isSessionActive:P,startSession:T,stopSession:z,sendTextMessage:V}}var cU=require("react/jsx-runtime"),eH=({data:f})=>{let{html:U,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:D,centrifugeChannel:$}=f,[Z,T]=Lf.useState(U),{isSessionActive:z,startSession:C,sendTextMessage:V}=Of(null,(J)=>{if(console.log(J.type,J.type==="response.output_text.delta"&&J.delta),J.type==="response.output_text.delta"&&J.delta)T((q)=>q+J.delta)});return Lf.useEffect(()=>{T(U)},[U]),cU.jsx(_,{card:"HTMLEmbedCard",data:f,methods:{update:(J)=>{T(J.value)},generateUsingAI:async(J)=>{try{if(!z&&J.token)await C(J.token,!1);V(J.prompt)}catch(q){console.error("Failed to generate using AI",q)}},initializeAI:async(J)=>{if(!z&&J.token)await C(J.token,!1)}},useCentrifugeSupport:H,useSocketioSupport:P,useMittSupport:D,centrifugeChannel:$,children:vU.default(Z)})},pU=eH;var hU=Q({name:"HTMLEmbedCard",component:pU,metadata:{author:"Swarm.ing"}});var Af=require("react");var ef=require("react/jsx-runtime"),fP=({data:f})=>{let{name:U,value:P,useSocketioSupport:H,useCentrifugeSupport:D,useMittSupport:$,centrifugeChannel:Z}=f,[T,z]=Af.useState(P);return Af.useEffect(()=>{z(P)},[P]),ef.jsx(_,{card:"HiddenCard",data:f,useSocketioSupport:H,useCentrifugeSupport:D,useMittSupport:$,centrifugeChannel:Z,methods:{update:({value:C})=>{z(C)}},children:ef.jsx("input",{type:"hidden",id:U,name:U,value:T})})},lU=fP;var rU=Q({name:"HiddenCard",component:lU,metadata:{author:"Swarm.ing"}});var Jf=require("react");var nU=require("react"),UP=nU.createContext(void 0),k=UP;var of=require("react/jsx-runtime"),HP=({data:f})=>{let{url:U}=f,P=Jf.useContext(k),H=Jf.useContext(K);return Jf.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else P?.(U)},[U,P]),of.jsx(of.Fragment,{children:H})},tU=HP;var iU=Q({name:"AutoRedirectCard",component:tU,metadata:{author:"Swarm.ing"}});var h=require("react-toastify"),Nf=require("react-toastify");var Uf=require("react");var ff=require("react/jsx-runtime"),PP={bounce:h.Bounce,slide:h.Slide,zoom:h.Zoom,flip:h.Flip},DP=(f)=>{let U={...f,type:f.alertType,transition:f.transition?PP[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};Nf.toast(f.message,U)},ZP=(f)=>{console.log("Log event",f)},$P=(f)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(H){console.error("[IOEventsCard] Failed to show notification",H)}},P=window.Notification.permission;if(P==="granted"){U();return}if(P==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((H)=>{if(H==="granted")U()})},zP=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:P,useMittSupport:H,centrifugeChannel:D}=f,$=Uf.useContext(k),Z=Uf.useRef($);Z.current=$;let T=Uf.useMemo(()=>({alert:DP,log:ZP,push:$P,redirect:(z)=>{if(z.to){let C=z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(C))window.location.href=C;else Z.current?.(C)}else window.location.reload()},reload:(z)=>{if(z.to){let C=z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(C))window.location.href=C;else Z.current?.(C)}else window.location.reload()}}),[]);return ff.jsx(ff.Fragment,{children:ff.jsx(_,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:P,useMittSupport:H,centrifugeChannel:D,methods:T,children:ff.jsx(Nf.ToastContainer,{})})})},sU=zP;var aU=Q({name:"IOEventsCard",component:sU,metadata:{author:"Swarm.ing"}});var Yf=require("react");var fU=require("react/jsx-runtime"),CP=({data:f})=>{let{name:U,key:P,value:H,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T}=f,[z,C]=Yf.useState(H);return Yf.useEffect(()=>{C(H)},[H]),Yf.useEffect(()=>{if(typeof window==="undefined")return;sessionStorage.setItem(P,z)},[P,z]),fU.jsx(_,{card:"SessionStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T,methods:{update:({value:V})=>{C(V)},remove:()=>{sessionStorage.removeItem(P),C("")}},children:fU.jsx("input",{type:"hidden",id:U,name:U,value:z})})},eU=CP;var fH=Q({name:"SessionStorageCard",component:eU,metadata:{author:"PieData"}});var Xf=require("react");var UU=require("react/jsx-runtime"),TP=({data:f})=>{let{name:U,key:P,value:H,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T}=f,[z,C]=Xf.useState(H);return Xf.useEffect(()=>{C(H)},[H]),Xf.useEffect(()=>{if(typeof window==="undefined")return;localStorage.setItem(P,z)},[P,z]),UU.jsx(_,{card:"DeviceStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T,methods:{update:({value:V})=>{C(V)},remove:()=>{localStorage.removeItem(P),C("")}},children:UU.jsx("input",{type:"hidden",id:U,name:U,value:z})})},UH=TP;var HH=Q({name:"DeviceStorageCard",component:UH,metadata:{author:"PieData"}});var Gf=require("react");var HU=require("react/jsx-runtime"),VP=({data:f})=>{let{name:U,key:P,value:H,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T}=f,[z,C]=Gf.useState(H);return Gf.useEffect(()=>{C(H)},[H]),Gf.useEffect(()=>{if(typeof window==="undefined")return;let V=window.Telegram?.WebApp?.CloudStorage;if(!V)return;V.setItem(P,z)},[P,z]),HU.jsx(_,{card:"CloudStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T,methods:{update:({value:V})=>{C(V)},remove:()=>{let V=window.Telegram?.WebApp?.CloudStorage;if(V)V.removeItem(P);C("")}},children:HU.jsx("input",{type:"hidden",id:U,name:U,value:z})})},PH=VP;var DH=Q({name:"CloudStorageCard",component:PH,metadata:{author:"PieData"}});var qf=require("react");var PU=require("react/jsx-runtime"),IP=({data:f})=>{let{name:U,key:P,value:H,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T}=f,[z,C]=qf.useState(H);return qf.useEffect(()=>{C(H)},[H]),qf.useEffect(()=>{if(typeof window==="undefined")return;let V=window.Telegram?.WebApp?.SecureStorage;if(!V)return;V.setItem(P,z)},[P,z]),PU.jsx(_,{card:"SecureStorageCard",data:f,useSocketioSupport:D,useCentrifugeSupport:$,useMittSupport:Z,centrifugeChannel:T,methods:{update:({value:V})=>{C(V)},remove:()=>{let V=window.Telegram?.WebApp?.SecureStorage;if(V)V.removeItem(P);C("")}},children:PU.jsx("input",{type:"hidden",id:U,name:U,value:z})})},ZH=IP;var $H=Q({name:"SecureStorageCard",component:ZH,metadata:{author:"PieData"}});var A=require("react");var DU=require("react/jsx-runtime"),OP=({data:f,content:U})=>{let{useLoader:P,noReturn:H,returnType:D,useSocketioSupport:$,useCentrifugeSupport:Z,useMittSupport:T,centrifugeChannel:z}=f,C=A.useContext(K),V=A.useContext(E)??w,[X,G]=A.useState(!1),[O,J]=A.useState(null),q=A.useRef(U),I=A.useContext(L),Y=A.useCallback((R)=>{if(R===null)G(!0);else if(G(!1),!H)q.current=R;if(!H)J(R)},[H]),W=A.useCallback((R)=>{q.current=R.content,J(R.content)},[]),B=A.useCallback((R)=>{if(R===null)G(!0);else if(G(!1),!H)for(let Bf of R)I?.emit(Bf.name,Bf.data)},[H,I]);if(A.useEffect(()=>{J(U),G(!1)},[U]),!O&&P)return C;return DU.jsx(_,{card:"AjaxGroupCard",data:f,methods:{changeContent:W},useSocketioSupport:$,useCentrifugeSupport:Z,useMittSupport:T,centrifugeChannel:z,children:DU.jsx(V,{uiConfig:O??q.current,setUiAjaxConfiguration:D==="events"?B:Y})})},zH=OP;var CH=Q({name:"AjaxGroupCard",component:zH,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var ZU=require("react");var yf=require("react/jsx-runtime"),JP=({data:f,content:U,setUiAjaxConfiguration:P})=>{let{name:H,url:D,sx:$}=f,Z=ZU.useContext(k),T=ZU.useContext(E)??w;return yf.jsx(_,{card:H,data:f,children:yf.jsx("div",{style:$,id:H,onClick:(C)=>{if(D)if(C.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(D))window.location.href=D;else Z?.(D)},children:yf.jsx(T,{setUiAjaxConfiguration:P,uiConfig:U})})})},TH=JP;var VH=Q({name:"BoxCard",component:TH,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var IH=require("react");var mf=require("react/jsx-runtime"),YP=({data:f,content:U,setUiAjaxConfiguration:P})=>{let{name:H,sx:D}=f,$=IH.useContext(E)??w;return mf.jsx(_,{card:H,data:f,children:mf.jsx("div",{style:D,id:H,children:U.map((Z,T)=>{return mf.jsx($,{uiConfig:Z,setUiAjaxConfiguration:P},`children-${T}`)})})})},OH=YP;var JH=Q({name:"OneOfCard",component:OH,metadata:{author:"Swarm.ing",description:"Different variants"}});var Pf=require("react"),Df=require("@tanstack/react-query");var uf=require("react");var xf=require("react"),Ef=new Map,kf=new Map;function jf(f,U){let P=`${f}::${U}`,H=f?Ef.get(P):void 0,[D,$]=xf.useState(H??null);return xf.useEffect(()=>{if(!f)return;if(Ef.has(P)){$(Ef.get(P));return}let Z=kf.get(P);if(!Z)Z=fetch(f+`api/support/${U}`,{method:"GET"}).then((z)=>z.json()).then((z)=>{return Ef.set(P,z),kf.delete(P),z}).catch((z)=>{throw kf.delete(P),z}),kf.set(P,Z);let T=!1;return Z.then((z)=>{if(!T)$(z)}).catch(()=>{}),()=>{T=!0}},[f,U,P]),D}var $U=null,YH=null;function XH(){YH?.()}function zU(){if(typeof window==="undefined")return Promise.resolve();if(typeof window.sid!=="undefined")return Promise.resolve();if(!$U)$U=new Promise((f)=>{YH=()=>{f()}});return $U}var XP=({children:f})=>{let U=uf.useContext(y),P=Rf(),H=jf(P,"socketIO"),D=($)=>{if(typeof window!=="undefined")window.sid=$.sid,XH(),console.log(`SocketIO initialized: ${window.sid}`)};return uf.useEffect(()=>{if(!U)return;let $=()=>{console.log("SocketIO connected")},Z=(T)=>{console.log(`SocketIO disconnected: ${T}`),U.connect()};if(H)U.on("pieinit",D),U.on("connect",$),U.on("disconnect",Z),U.connect();return()=>{if(H)U.off("pieinit",D),U.off("connect",$),U.off("disconnect",Z),U.disconnect()}},[U,H]),f},l=XP;var df=require("react");var GP=({children:f})=>{let U=df.useContext(N),P=Rf(),H=jf(P,"centrifuge");return df.useEffect(()=>{if(!U)return;let D=()=>{console.log("Centrifuge connected")},$=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(H)U.on("connected",D),U.on("disconnected",$),U.connect();return()=>{if(H)U.disconnect()}},[U,H]),f},r=GP;var qH=require("axios-date-transformer");var GH=require("react/jsx-runtime");function Hf(f,U,P){if(!U)return P;let H=f.replace(/^\//,""),D=U[H];if(!D)return P;return GH.jsx(Ff,{uiConfig:D})}var S=require("react/jsx-runtime"),qP=({location:f,fallback:U,piecache:P,onError:H,queryOptions:D,disableGlobalForm:$})=>{let Z=b(),T=v(),z=x(),C=Pf.useMemo(()=>qH.createAxiosDateTransformer({baseURL:Z||""}),[Z]),V=Pf.useMemo(()=>m(),[]),X=Pf.useMemo(()=>Z?c(Z):null,[Z]),G=Pf.useMemo(()=>Z?p(Z,T):null,[Z,T]),{data:O,isLoading:J,error:q}=Df.useQuery({queryKey:["uiConfig",f.pathname+f.search,Z],enabled:!!Z,queryFn:async()=>{let Y=new URLSearchParams(f.search);Y.set("__pieroot","web");let W="/api/content"+f.pathname+"?"+Y.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",W);let B=await C.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",B.data);return B.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Y)=>Math.min(1000*2**Y,30000),...D}),I=Hf(f.pathname,P,U);if(!Z)return I??null;if(z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",Z),console.log("[PieRoot] CENTRIFUGE_SERVER:",T),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!P);if(q){if(z)console.error("[PieRoot] Error fetching UI configuration:",q),console.error("[PieRoot] Error details:",{message:q.message,status:q.response?.status,data:q.response?.data});return H?.(),I}if(J||!O){if(z)console.log("[PieRoot] Loading state:",{isLoading:J,hasUiConfiguration:!!O});return I}if(z)console.log("[PieRoot] UI configuration loaded successfully:",O),console.log("[PieRoot] Rendering UI with configuration");return S.jsx(L.Provider,{value:V,children:S.jsx(y.Provider,{value:X,children:S.jsx(N.Provider,{value:G,children:S.jsx(K.Provider,{value:U??S.jsx(S.Fragment,{}),children:S.jsx(l,{children:S.jsx(r,{children:$?S.jsx(w,{uiConfig:O}):S.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:S.jsx(w,{uiConfig:O})})})})})})})})},BP=(f)=>{let U=Pf.useMemo(()=>new Df.QueryClient,[]);return S.jsx(k.Provider,{value:f.onNavigate,children:S.jsx(u.Provider,{value:f.config,children:S.jsx(Df.QueryClientProvider,{client:U,children:S.jsx(qP,{...f})})})})},BH=BP;var Zf=require("react"),$f=require("@tanstack/react-query");var WH=require("axios-date-transformer");var bf=require("react");var gf=({onError:f}={})=>{let[U,P]=bf.useState(null),H=GU();return bf.useEffect(()=>{if(typeof window==="undefined")return;let D=window.Telegram?.WebApp;if(!D)return;try{D.ready?.()}catch($){f?.()}if(H==="telegram_expanded"&&(D.platform==="ios"||D.platform==="android"))D.expand();P(D)},[]),U};var F=require("react/jsx-runtime"),WP=({location:f,fallback:U,piecache:P,onError:H,queryOptions:D,disableGlobalForm:$})=>{let Z=b(),T=v(),z=x(),C=Zf.useMemo(()=>WH.createAxiosDateTransformer({baseURL:Z}),[Z]),V=Zf.useMemo(()=>m(),[]),X=Zf.useMemo(()=>Z?c(Z):null,[Z]),G=Zf.useMemo(()=>Z?p(Z,T):null,[Z,T]),O=gf({onError:H}),{data:J,isLoading:q,error:I}=$f.useQuery({queryKey:["uiConfig",f.pathname+f.search,O?.initData],enabled:!!O?.initData,queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","telegram"),O?.initData)W.set("initData",O.initData);let B="/api/content"+f.pathname+"?"+W.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await C.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...D}),Y=Hf(f.pathname,P,U);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(I&&z)return console.error("[PieRoot] Error fetching UI configuration:",I),console.error("[PieRoot] Error details:",{message:I.message,status:I.response?.status,data:I.response?.data}),H?.(),Y;if(q||!J){if(z)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!J});return Y}if(z)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return F.jsx(L.Provider,{value:V,children:F.jsx(y.Provider,{value:X,children:F.jsx(N.Provider,{value:G,children:F.jsx(K.Provider,{value:U??F.jsx(F.Fragment,{}),children:F.jsx(l,{children:F.jsx(r,{children:$?F.jsx(w,{uiConfig:J}):F.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:F.jsx(w,{uiConfig:J})})})})})})})})},QP=(f)=>{let U=Zf.useMemo(()=>new $f.QueryClient,[]);return F.jsx(k.Provider,{value:f.onNavigate,children:F.jsx(u.Provider,{value:f.config,children:F.jsx($f.QueryClientProvider,{client:U,children:F.jsx(WP,{...f})})})})},QH=QP;var zf=require("react"),vf=require("@tanstack/react-query");var o=require("react/jsx-runtime"),RP=({location:f,fallback:U,children:P,disableGlobalForm:H})=>{let D=b(),$=v(),Z=x(),T=zf.useMemo(()=>m(),[]),z=zf.useMemo(()=>D?c(D):null,[D]),C=zf.useMemo(()=>D?p(D,$):null,[D,$]);if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",$),console.log("[PieRoot] Fallback provided:",!!U);return o.jsx(L.Provider,{value:T,children:o.jsx(y.Provider,{value:z,children:o.jsx(N.Provider,{value:C,children:o.jsx(K.Provider,{value:U??o.jsx(o.Fragment,{}),children:o.jsx(l,{children:o.jsx(r,{children:H?P:o.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:P})})})})})})})},_P=(f)=>{let[U]=zf.useState(()=>new vf.QueryClient);return o.jsx(k.Provider,{value:f.onNavigate,children:o.jsx(u.Provider,{value:f.config,children:o.jsx(vf.QueryClientProvider,{client:U,children:o.jsx(RP,{...f})})})})},RH=_P;var Cf=require("react"),Tf=require("@tanstack/react-query");var _H=require("axios-date-transformer");var pf=require("react"),cf=()=>{let[f,U]=pf.useState(null);return pf.useEffect(()=>{if(typeof window==="undefined")return;let P=window.WebApp;if(!P)return;P.ready(),U(P)},[]),f};var M=require("react/jsx-runtime"),wP=({location:f,fallback:U,piecache:P,onError:H,queryOptions:D,disableGlobalForm:$})=>{let Z=b(),T=v(),z=x(),C=Cf.useMemo(()=>_H.createAxiosDateTransformer({baseURL:Z}),[Z]),V=Cf.useMemo(()=>m(),[]),X=Cf.useMemo(()=>Z?c(Z):null,[Z]),G=Cf.useMemo(()=>Z?p(Z,T):null,[Z,T]),O=cf(),{data:J,isLoading:q,error:I}=Tf.useQuery({queryKey:["uiConfig",f.pathname+f.search,O?.initData],queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","max"),O?.initData)W.set("initData",O.initData);let B="/api/content"+f.pathname+"?"+W.toString();if(z)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await C.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(z)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},enabled:!!O?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...D}),Y=Hf(f.pathname,P,U);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(I&&z)return console.error("[PieRoot] Error fetching UI configuration:",I),console.error("[PieRoot] Error details:",{message:I.message,status:I.response?.status,data:I.response?.data}),H?.(),Y;if(q||!J){if(z)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!J});return Y}if(z)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return M.jsx(L.Provider,{value:V,children:M.jsx(y.Provider,{value:X,children:M.jsx(N.Provider,{value:G,children:M.jsx(K.Provider,{value:U??M.jsx(M.Fragment,{}),children:M.jsx(l,{children:M.jsx(r,{children:$?M.jsx(w,{uiConfig:J}):M.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:M.jsx(w,{uiConfig:J})})})})})})})})},KP=(f)=>{let U=Cf.useMemo(()=>new Tf.QueryClient,[]);return M.jsx(k.Provider,{value:f.onNavigate,children:M.jsx(u.Provider,{value:f.config,children:M.jsx(Tf.QueryClientProvider,{client:U,children:M.jsx(wP,{...f})})})})},wH=KP;var KH=require("react"),CU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw new Error("SocketIO isn't initialized properly");return[window.sid]}let P=document.getElementsByName(f);if(!P.length){if(U)console.warn(`No input found with name ${f}`);return[]}let H=P[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},SP=(f,U={},P=[],H,D)=>{let $=D?.renderingLogEnabled??!1,Z=D?.timeout,T=D?.retryPolicy,z=T?.maxRetries??0,C=T?.baseDelay??1000,V=T?.retryOn??[502,503,504];if($)console.log("Registering AJAX: ",H,U,P);return async(X={})=>{if(typeof window==="undefined"||typeof document==="undefined"){if($)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let G=D?.apiServer;if(!G){if($)console.warn("AJAX skipped: apiServer is missing");return}if(!H||!f){if($)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(P.includes("sid"))await zU();let O=new FormData;for(let[I,Y]of Object.entries({...U,...X}))O.append(I,Y);for(let I of P)for(let Y of CU(I,$))O.append(I,Y);let J=G+"api/ajax_content"+H;f(null);let q;for(let I=0;I<=z;I++){if(I>0){let B=C*2**(I-1);if($)console.log(`AJAX retry ${I}/${z} after ${B}ms`);await new Promise((R)=>setTimeout(R,B))}let Y=Z!=null?new AbortController:null,W=Y&&setTimeout(()=>Y.abort(),Z);try{let B=await fetch(J,{method:"POST",body:O,signal:Y?.signal});if(W)clearTimeout(W);if(!B.ok&&V.includes(B.status)&&I<z){q=new Error(`HTTP ${B.status}`);continue}let Bf=(B.headers.get("content-type")||"").includes("application/json");if(!!B.body?.getReader&&!Bf){let Wf=B.body.getReader(),EH=new TextDecoder,n="";while(!0){let{done:lf,value:kH}=await Wf.read();if(lf)break;n+=EH.decode(kH,{stream:!0});let VU=n.split(`
|
|
3
|
+
`);n=VU.pop()??"";for(let xH of VU){let rf=xH.trim();if(!rf)continue;try{let jH=JSON.parse(rf);f([jH])}catch{if($)console.warn("Failed to parse streamed line:",rf)}}}if(n.trim())try{let lf=JSON.parse(n);f([lf])}catch{if($)console.warn("Failed to parse final streamed line:",n)}return{}}else{let Wf=await B.json();return f(Wf),Wf}}catch(B){if(W)clearTimeout(W);if(q=B,I<z)continue;if($)console.error("AJAX request failed:",B);return f(null),B}}if($)console.error("AJAX request failed after retries:",q);return f(null),q}},SH=(f,U={},P=[],H,D)=>{let{apiServer:$,enableRenderingLog:Z}=t(),T=JSON.stringify(U),z=JSON.stringify(P),C=JSON.stringify(D);return KH.useMemo(()=>SP(f,U,P,H,{apiServer:$,renderingLogEnabled:Z,timeout:D?.timeout,retryPolicy:D?.retryPolicy}),[f,T,z,H,$,Z,C])};var FH=require("@openai/agents"),hf=require("react");var MH=/^pie(.+?)_(.+)$/;function TU(f=m(),U={}){let P=[],H=new Set;for(let D of f.all.keys()){if(typeof D!=="string")continue;let $=D.match(MH);if(!$)continue;let[,Z,T]=$,z={methodName:Z,cardName:T,eventName:D};if(U.filter&&!U.filter(z))continue;let C=U.nameFor?.(z)??`${T}_${Z}`;if(H.has(C))continue;H.add(C);let V=U.describe?.(z)??`Invokes the "${Z}" method on the PieCard "${T}" by emitting the in-process mitt event "${D}". The optional "payload" argument is forwarded verbatim to the card's handler.`;P.push(FH.tool({name:C,description:V,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(X)=>{let G=X?.payload;return f.emit(D,G),`Emitted "${D}"`}}))}return P}function LH(f={}){let P=hf.useContext(L)??m(),H=[];for(let z of P.all.keys())if(typeof z==="string"&&MH.test(z))H.push(z);H.sort();let D=H.join("|"),{filter:$,describe:Z,nameFor:T}=f;return hf.useMemo(()=>TU(P,{filter:$,describe:Z,nameFor:T}),[P,D,$,Z,T])}var AH=require("clsx"),oH=require("tailwind-merge");function NH(...f){return oH.twMerge(AH.clsx(f))}var yH=()=>{if(typeof document==="undefined")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var mH=(f,U)=>`${f}${_f}${U}`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../../../src/storybook/addon/Panel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAe,YAAY,EAAgC,MAAM,OAAO,CAAA;AAqL/E,eAAO,MAAM,KAAK,GAAI,aAEnB;IACC,MAAM,CAAC,EAAE,OAAO,CAAA;CACnB,KAAG,YAAY,GAAG,IAsClB,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared constants + parameter shapes for the PieCard storybook addon.
|
|
3
|
+
*
|
|
4
|
+
* IMPORTANT: this module must NOT import React, pieui contexts, or any
|
|
5
|
+
* runtime code from `@swarm.ing/pieui`. It is loaded by the Storybook
|
|
6
|
+
* manager bundle (which already ships its own React) and any duplicate
|
|
7
|
+
* React import will explode with cross-context errors like
|
|
8
|
+
* "Cannot read properties of undefined (reading 'recentlyCreatedOwnerStacks')".
|
|
9
|
+
*/
|
|
10
|
+
export declare const PIECARD_PARAM_KEY = "piecard";
|
|
11
|
+
export declare const PIE_STORYBOOK_FIRE_EVENT = "piecard/fire";
|
|
12
|
+
export type PieMethodSpec = {
|
|
13
|
+
name: string;
|
|
14
|
+
payloadSchema?: Record<string, unknown> | null;
|
|
15
|
+
payloadCode?: string | null;
|
|
16
|
+
samplePayload?: unknown;
|
|
17
|
+
};
|
|
18
|
+
export type PieCardParams = {
|
|
19
|
+
card: string;
|
|
20
|
+
methods?: PieMethodSpec[];
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/storybook/addon/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,iBAAiB,YAAY,CAAA;AAC1C,eAAO,MAAM,wBAAwB,iBAAiB,CAAA;AAEtD,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC9C,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;CAC5B,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public API of the `@swarm.ing/pieui/storybook/addon` addon.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the core decorator + helpers so a single import in a story file
|
|
5
|
+
* is sufficient:
|
|
6
|
+
*
|
|
7
|
+
* import { withPieCard, firePieMethod } from '@swarm.ing/pieui/storybook/addon'
|
|
8
|
+
*/
|
|
9
|
+
export { withPieCard, PieStorybookProviders, PieStorybookChannelBridge, firePieMethod, usePieStorybookEmitter, PieMethodTrigger, PIECARD_PARAM_KEY, PIE_STORYBOOK_FIRE_EVENT, } from '../index';
|
|
10
|
+
export type { PieStorybookProvidersProps, PieMethodTriggerProps, PieMethodSpec, PieCardParams, } from '../index';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storybook/addon/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EACH,WAAW,EACX,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,GAC3B,MAAM,UAAU,CAAA;AACjB,YAAY,EACR,0BAA0B,EAC1B,qBAAqB,EACrB,aAAa,EACb,aAAa,GAChB,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{createContext as D,useContext as _,useEffect as K,useMemo as I,useRef as Y}from"react";import{QueryClient as z,QueryClientProvider as J}from"@tanstack/react-query";import U from"mitt";import{MittContext as V,SocketIOContext as W,CentrifugeIOContext as X,FallbackContext as Z,PieConfigContext as $}from"@swarm.ing/pieui";var h="piecard",A="piecard/fire";import{jsx as P,jsxs as L,Fragment as H}from"react/jsx-runtime";var g={apiServer:"",centrifugeServer:"",enableRenderingLog:!1,pageProcessor:""},M={current:null},q=()=>{if(!M.current)M.current=new z({defaultOptions:{queries:{retry:!1,staleTime:1/0}}});return M.current},R=D(null),k=()=>{let p=_(R);if(!p)throw new Error("usePieStorybookEmitter must be used inside <PieStorybookProviders />");return p},b=({children:p,emitter:o,pieConfig:r})=>{let s=I(()=>o??U(),[o]),d=I(()=>({...g,...r??{}}),[r]);return P(J,{client:q(),children:P($.Provider,{value:d,children:P(Z.Provider,{value:P(H,{}),children:P(R.Provider,{value:s,children:P(V.Provider,{value:s,children:P(W.Provider,{value:null,children:P(X.Provider,{value:null,children:p})})})})})})})},G=(p)=>L(b,{children:[P(y,{}),P(p,{})]}),c=(p,o)=>`pie${o}_${p}`,T=(p,o,r,s)=>{p.emit(c(o,r),s)},i=({card:p,method:o,payload:r,label:s})=>{let d=k();return P("button",{type:"button",onClick:()=>T(d,p,o,r),style:{padding:"6px 12px",marginRight:8,marginBottom:8,fontSize:12,border:"1px solid #ccc",borderRadius:4,cursor:"pointer",background:"#f7f7f7"},children:s??`${p}.${o}`})},v=()=>{return globalThis.__STORYBOOK_ADDONS_CHANNEL__??null},y=()=>{let p=k(),o=Y(p);return o.current=p,K(()=>{let r=v();if(!r)return;let s=(...d)=>{let w=d[0];if(!w||!w.card||!w.method)return;T(o.current,w.card,w.method,w.payload)};return r.on(A,s),()=>r.off(A,s)},[]),null};export{G as withPieCard,k as usePieStorybookEmitter,T as firePieMethod,b as PieStorybookProviders,y as PieStorybookChannelBridge,i as PieMethodTrigger,A as PIE_STORYBOOK_FIRE_EVENT,h as PIECARD_PARAM_KEY};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var X=Object.create;var{getPrototypeOf:Z,defineProperty:T,getOwnPropertyNames:Y,getOwnPropertyDescriptor:$}=Object,z=Object.prototype.hasOwnProperty;var g=(p,o,P)=>{P=p!=null?X(Z(p)):{};let r=o||!p||!p.__esModule?T(P,"default",{value:p,enumerable:!0}):P;for(let A of Y(p))if(!z.call(r,A))T(r,A,{get:()=>p[A],enumerable:!0});return r},K=new WeakMap,q=(p)=>{var o=K.get(p),P;if(o)return o;if(o=T({},"__esModule",{value:!0}),p&&typeof p==="object"||typeof p==="function")Y(p).map((r)=>!z.call(o,r)&&T(o,r,{get:()=>p[r],enumerable:!(P=$(p,r))||P.enumerable}));return K.set(p,o),o};var G=(p,o)=>{for(var P in o)T(p,P,{get:o[P],enumerable:!0,configurable:!0,set:(r)=>o[P]=()=>r})};var L={};G(L,{withPieCard:()=>V,usePieStorybookEmitter:()=>I,firePieMethod:()=>R,PieStorybookProviders:()=>D,PieStorybookChannelBridge:()=>_,PieMethodTrigger:()=>W,PIE_STORYBOOK_FIRE_EVENT:()=>k,PIECARD_PARAM_KEY:()=>b});module.exports=q(L);var w=require("react"),h=require("@tanstack/react-query"),J=g(require("mitt")),d=require("@swarm.ing/pieui");var b="piecard",k="piecard/fire";var s=require("react/jsx-runtime"),c={apiServer:"",centrifugeServer:"",enableRenderingLog:!1,pageProcessor:""},y={current:null},i=()=>{if(!y.current)y.current=new h.QueryClient({defaultOptions:{queries:{retry:!1,staleTime:1/0}}});return y.current},U=w.createContext(null),I=()=>{let p=w.useContext(U);if(!p)throw new Error("usePieStorybookEmitter must be used inside <PieStorybookProviders />");return p},D=({children:p,emitter:o,pieConfig:P})=>{let r=w.useMemo(()=>o??J.default(),[o]),A=w.useMemo(()=>({...c,...P??{}}),[P]);return s.jsx(h.QueryClientProvider,{client:i(),children:s.jsx(d.PieConfigContext.Provider,{value:A,children:s.jsx(d.FallbackContext.Provider,{value:s.jsx(s.Fragment,{}),children:s.jsx(U.Provider,{value:r,children:s.jsx(d.MittContext.Provider,{value:r,children:s.jsx(d.SocketIOContext.Provider,{value:null,children:s.jsx(d.CentrifugeIOContext.Provider,{value:null,children:p})})})})})})})},V=(p)=>s.jsxs(D,{children:[s.jsx(_,{}),s.jsx(p,{})]}),v=(p,o)=>`pie${o}_${p}`,R=(p,o,P,r)=>{p.emit(v(o,P),r)},W=({card:p,method:o,payload:P,label:r})=>{let A=I();return s.jsx("button",{type:"button",onClick:()=>R(A,p,o,P),style:{padding:"6px 12px",marginRight:8,marginBottom:8,fontSize:12,border:"1px solid #ccc",borderRadius:4,cursor:"pointer",background:"#f7f7f7"},children:r??`${p}.${o}`})},H=()=>{return globalThis.__STORYBOOK_ADDONS_CHANNEL__??null},_=()=>{let p=I(),o=w.useRef(p);return o.current=p,w.useEffect(()=>{let P=H();if(!P)return;let r=(...A)=>{let M=A[0];if(!M||!M.card||!M.method)return;R(o.current,M.card,M.method,M.payload)};return P.on(k,r),()=>P.off(k,r)},[]),null};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/storybook/addon/manager.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import"react";import{addons as Q,types as f}from"storybook/manager-api";import*as n from"react";import{useEffect as X,useMemo as Z,useState as q}from"react";import{addons as $,useParameter as j}from"storybook/manager-api";var S="piecard",H="piecard/fire";var u=({children:i,style:x})=>n.createElement("pre",{style:{margin:0,padding:8,fontSize:11,background:"#f5f5f5",border:"1px solid #e0e0e0",borderRadius:4,overflow:"auto",...x??{}}},i),K=(i)=>{if(i.samplePayload!==void 0)try{return JSON.stringify(i.samplePayload,null,2)}catch{}let x=i.payloadSchema;if(!x||typeof x!=="object")return"{}";let T=x.properties??{};if(!Object.keys(T).length)return"{}";let C={};for(let[b,g]of Object.entries(T)){if(typeof g!=="object"||g===null)continue;let w=g.type;if(w==="string")C[b]="";else if(w==="number"||w==="integer")C[b]=0;else if(w==="boolean")C[b]=!1;else if(w==="array")C[b]=[];else if(w==="object")C[b]={};else C[b]=null}return JSON.stringify(C,null,2)},Y=({card:i,method:x})=>{let T=Z(()=>K(x),[x]),[C,b]=q(T),[g,w]=q(null),[z,V]=q(null),W=()=>{let O=void 0,B=C.trim();if(B.length>0)try{O=JSON.parse(B)}catch(G){w(G instanceof Error?G.message:"Invalid JSON payload");return}w(null),$.getChannel().emit(H,{card:i,method:x.name,payload:O}),V(Date.now())};return n.createElement("div",{style:{padding:12,borderBottom:"1px solid #eee",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'}},n.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:6}},n.createElement("code",{style:{fontSize:13,fontWeight:600}},i,".",x.name),n.createElement("button",{type:"button",onClick:W,style:{marginLeft:"auto",padding:"4px 10px",fontSize:12,background:"#1ea7fd",color:"white",border:"none",borderRadius:4,cursor:"pointer"}},"Fire")),x.payloadCode?n.createElement("details",{style:{marginBottom:6}},n.createElement("summary",{style:{fontSize:11,cursor:"pointer"}},"Payload type"),n.createElement(u,null,x.payloadCode)):null,n.createElement("textarea",{value:C,onChange:(O)=>b(O.target.value),rows:Math.min(10,Math.max(2,C.split(`
|
|
3
|
+
`).length)),style:{width:"100%",fontFamily:"monospace",fontSize:12,padding:6,border:"1px solid #ddd",borderRadius:4,boxSizing:"border-box"}}),g?n.createElement("div",{style:{marginTop:4,color:"#c00",fontSize:11}},g):null,z?n.createElement("div",{style:{marginTop:4,color:"#666",fontSize:11}},"Fired at ",new Date(z).toLocaleTimeString()):null)},J=({active:i})=>{let x=j(S,null);if(X(()=>{},[x]),!i)return null;if(!x||!x.card)return n.createElement("div",{style:{padding:16,fontSize:13,color:"#666"}},n.createElement("strong",null,"No PieCard parameters on this story."),n.createElement("p",{style:{marginTop:8}},"Add"," ",n.createElement("code",null,"parameters.",S," = ","{"," card, methods"," ","}")," ","to your story to surface method triggers here."));let T=x.methods??[];if(T.length===0)return n.createElement("div",{style:{padding:16,fontSize:13,color:"#666"}},"No methods declared for ",n.createElement("code",null,x.card),".");return n.createElement("div",null,T.map((C)=>n.createElement(Y,{key:C.name,card:x.card,method:C})))};var U="piecard",k=`${U}/panel`;Q.register(U,()=>{Q.add(k,{type:f.PANEL,title:"PieCard Methods",match:({viewMode:i})=>i==="story",render:({active:i})=>J({active:i})})});
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var $=Object.create;var{getPrototypeOf:j,defineProperty:Q,getOwnPropertyNames:u}=Object;var K=Object.prototype.hasOwnProperty;var Y=(x,i,b)=>{b=x!=null?$(j(x)):{};let C=i||!x||!x.__esModule?Q(b,"default",{value:x,enumerable:!0}):b;for(let w of u(x))if(!K.call(C,w))Q(C,w,{get:()=>x[w],enumerable:!0});return C};var l=require("react"),S=require("storybook/manager-api");var n=Y(require("react")),g=require("react"),z=require("storybook/manager-api");var B="piecard",U="piecard/fire";var f=({children:x,style:i})=>n.createElement("pre",{style:{margin:0,padding:8,fontSize:11,background:"#f5f5f5",border:"1px solid #e0e0e0",borderRadius:4,overflow:"auto",...i??{}}},x),k=(x)=>{if(x.samplePayload!==void 0)try{return JSON.stringify(x.samplePayload,null,2)}catch{}let i=x.payloadSchema;if(!i||typeof i!=="object")return"{}";let b=i.properties??{};if(!Object.keys(b).length)return"{}";let C={};for(let[w,O]of Object.entries(b)){if(typeof O!=="object"||O===null)continue;let T=O.type;if(T==="string")C[w]="";else if(T==="number"||T==="integer")C[w]=0;else if(T==="boolean")C[w]=!1;else if(T==="array")C[w]=[];else if(T==="object")C[w]={};else C[w]=null}return JSON.stringify(C,null,2)},I=({card:x,method:i})=>{let b=g.useMemo(()=>k(i),[i]),[C,w]=g.useState(b),[O,T]=g.useState(null),[G,X]=g.useState(null),Z=()=>{let q=void 0,H=C.trim();if(H.length>0)try{q=JSON.parse(H)}catch(J){T(J instanceof Error?J.message:"Invalid JSON payload");return}T(null),z.addons.getChannel().emit(U,{card:x,method:i.name,payload:q}),X(Date.now())};return n.createElement("div",{style:{padding:12,borderBottom:"1px solid #eee",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'}},n.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:6}},n.createElement("code",{style:{fontSize:13,fontWeight:600}},x,".",i.name),n.createElement("button",{type:"button",onClick:Z,style:{marginLeft:"auto",padding:"4px 10px",fontSize:12,background:"#1ea7fd",color:"white",border:"none",borderRadius:4,cursor:"pointer"}},"Fire")),i.payloadCode?n.createElement("details",{style:{marginBottom:6}},n.createElement("summary",{style:{fontSize:11,cursor:"pointer"}},"Payload type"),n.createElement(f,null,i.payloadCode)):null,n.createElement("textarea",{value:C,onChange:(q)=>w(q.target.value),rows:Math.min(10,Math.max(2,C.split(`
|
|
3
|
+
`).length)),style:{width:"100%",fontFamily:"monospace",fontSize:12,padding:6,border:"1px solid #ddd",borderRadius:4,boxSizing:"border-box"}}),O?n.createElement("div",{style:{marginTop:4,color:"#c00",fontSize:11}},O):null,G?n.createElement("div",{style:{marginTop:4,color:"#666",fontSize:11}},"Fired at ",new Date(G).toLocaleTimeString()):null)},V=({active:x})=>{let i=z.useParameter(B,null);if(g.useEffect(()=>{},[i]),!x)return null;if(!i||!i.card)return n.createElement("div",{style:{padding:16,fontSize:13,color:"#666"}},n.createElement("strong",null,"No PieCard parameters on this story."),n.createElement("p",{style:{marginTop:8}},"Add"," ",n.createElement("code",null,"parameters.",B," = ","{"," card, methods"," ","}")," ","to your story to surface method triggers here."));let b=i.methods??[];if(b.length===0)return n.createElement("div",{style:{padding:16,fontSize:13,color:"#666"}},"No methods declared for ",n.createElement("code",null,i.card),".");return n.createElement("div",null,b.map((C)=>n.createElement(I,{key:C.name,card:i.card,method:C})))};var W="piecard",L=`${W}/panel`;S.addons.register(W,()=>{S.addons.add(L,{type:S.types.PANEL,title:"PieCard Methods",match:({viewMode:x})=>x==="story",render:({active:x})=>V({active:x})})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset.d.cts","sourceRoot":"","sources":["../../../src/storybook/addon/preset.cjs"],"names":[],"mappings":"AAgByB,qDAGxB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storybook addon preset for `@swarm.ing/pieui/storybook/addon`.
|
|
3
|
+
*
|
|
4
|
+
* Hand-written CommonJS because bun build inlines `__dirname` with the
|
|
5
|
+
* source path at build time, which breaks once the package is installed
|
|
6
|
+
* into a consumer's node_modules. Plain CJS lets Node resolve `__dirname`
|
|
7
|
+
* at runtime against the actual install location.
|
|
8
|
+
*
|
|
9
|
+
* Users opt in via `.storybook/main.ts`:
|
|
10
|
+
*
|
|
11
|
+
* export default {
|
|
12
|
+
* addons: ['@swarm.ing/pieui/storybook/addon/preset'],
|
|
13
|
+
* }
|
|
14
|
+
*/
|
|
15
|
+
const path = require('node:path')
|
|
16
|
+
|
|
17
|
+
exports.managerEntries = (entry = []) => [
|
|
18
|
+
...entry,
|
|
19
|
+
path.join(__dirname, 'manager.js'),
|
|
20
|
+
]
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { Emitter } from 'mitt';
|
|
3
|
+
declare const STORYBOOK_PIE_CONFIG: {
|
|
4
|
+
apiServer: string;
|
|
5
|
+
centrifugeServer: string;
|
|
6
|
+
enableRenderingLog: boolean;
|
|
7
|
+
pageProcessor: string;
|
|
8
|
+
};
|
|
9
|
+
type SBEmitter = Emitter<Record<string, unknown>>;
|
|
10
|
+
export declare const usePieStorybookEmitter: () => SBEmitter;
|
|
11
|
+
export type PieStorybookProvidersProps = {
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
emitter?: SBEmitter;
|
|
14
|
+
pieConfig?: Partial<typeof STORYBOOK_PIE_CONFIG>;
|
|
15
|
+
};
|
|
16
|
+
export declare const PieStorybookProviders: ({ children, emitter, pieConfig, }: PieStorybookProvidersProps) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare const withPieCard: (Story: (props?: unknown) => ReactNode) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare const firePieMethod: (emitter: SBEmitter, cardName: string, methodName: string, payload: unknown) => void;
|
|
19
|
+
export type PieMethodTriggerProps = {
|
|
20
|
+
card: string;
|
|
21
|
+
method: string;
|
|
22
|
+
payload?: unknown;
|
|
23
|
+
label?: string;
|
|
24
|
+
};
|
|
25
|
+
export declare const PieMethodTrigger: ({ card, method, payload, label, }: PieMethodTriggerProps) => import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export { PIECARD_PARAM_KEY, PIE_STORYBOOK_FIRE_EVENT } from './addon/constants';
|
|
27
|
+
export type { PieMethodSpec, PieCardParams } from './addon/constants';
|
|
28
|
+
export declare const PieStorybookChannelBridge: () => null;
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storybook/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEH,SAAS,EAKZ,MAAM,OAAO,CAAA;AAEd,OAAa,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAgBpC,QAAA,MAAM,oBAAoB;;;;;CAKzB,CAAA;AAcD,KAAK,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAIjD,eAAO,MAAM,sBAAsB,QAAO,SAQzC,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACrC,QAAQ,EAAE,SAAS,CAAA;IACnB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,oBAAoB,CAAC,CAAA;CACnD,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,mCAInC,0BAA0B,4CA6B5B,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,SAAS,4CAKhE,CAAA;AAKD,eAAO,MAAM,aAAa,GACtB,SAAS,SAAS,EAClB,UAAU,MAAM,EAChB,YAAY,MAAM,EAClB,SAAS,OAAO,KACjB,IAEF,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,mCAK9B,qBAAqB,4CAoBvB,CAAA;AAED,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC/E,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAgBrE,eAAO,MAAM,yBAAyB,YAyBrC,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{createContext as I,useContext as K,useEffect as M,useMemo as X,useRef as V}from"react";import{QueryClient as Y,QueryClientProvider as k}from"@tanstack/react-query";import H from"mitt";import{MittContext as L,SocketIOContext as R,CentrifugeIOContext as P,FallbackContext as _,PieConfigContext as v}from"@swarm.ing/pieui";var G="piecard",U="piecard/fire";import{jsx as A,jsxs as h,Fragment as c}from"react/jsx-runtime";var F={apiServer:"",centrifugeServer:"",enableRenderingLog:!1,pageProcessor:""},W={current:null},b=()=>{if(!W.current)W.current=new Y({defaultOptions:{queries:{retry:!1,staleTime:1/0}}});return W.current},Z=I(null),$=()=>{let p=K(Z);if(!p)throw new Error("usePieStorybookEmitter must be used inside <PieStorybookProviders />");return p},s=({children:p,emitter:w,pieConfig:D})=>{let z=X(()=>w??H(),[w]),T=X(()=>({...F,...D??{}}),[D]);return A(k,{client:b(),children:A(v.Provider,{value:T,children:A(_.Provider,{value:A(c,{}),children:A(Z.Provider,{value:z,children:A(L.Provider,{value:z,children:A(R.Provider,{value:null,children:A(P.Provider,{value:null,children:p})})})})})})})},N=(p)=>h(s,{children:[A(Q,{}),A(p,{})]}),y=(p,w)=>`pie${w}_${p}`,q=(p,w,D,z)=>{p.emit(y(w,D),z)},f=({card:p,method:w,payload:D,label:z})=>{let T=$();return A("button",{type:"button",onClick:()=>q(T,p,w,D),style:{padding:"6px 12px",marginRight:8,marginBottom:8,fontSize:12,border:"1px solid #ccc",borderRadius:4,cursor:"pointer",background:"#f7f7f7"},children:z??`${p}.${w}`})},O=()=>{return globalThis.__STORYBOOK_ADDONS_CHANNEL__??null},Q=()=>{let p=$(),w=V(p);return w.current=p,M(()=>{let D=O();if(!D)return;let z=(...T)=>{let J=T[0];if(!J||!J.card||!J.method)return;q(w.current,J.card,J.method,J.payload)};return D.on(U,z),()=>D.off(U,z)},[]),null};export{N as withPieCard,$ as usePieStorybookEmitter,q as firePieMethod,s as PieStorybookProviders,Q as PieStorybookChannelBridge,f as PieMethodTrigger,U as PIE_STORYBOOK_FIRE_EVENT,G as PIECARD_PARAM_KEY};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var P=Object.create;var{getPrototypeOf:_,defineProperty:X,getOwnPropertyNames:M,getOwnPropertyDescriptor:v}=Object,V=Object.prototype.hasOwnProperty;var F=(p,w,A)=>{A=p!=null?P(_(p)):{};let D=w||!p||!p.__esModule?X(A,"default",{value:p,enumerable:!0}):A;for(let U of M(p))if(!V.call(D,U))X(D,U,{get:()=>p[U],enumerable:!0});return D},K=new WeakMap,b=(p)=>{var w=K.get(p),A;if(w)return w;if(w=X({},"__esModule",{value:!0}),p&&typeof p==="object"||typeof p==="function")M(p).map((D)=>!V.call(w,D)&&X(w,D,{get:()=>p[D],enumerable:!(A=v(p,D))||A.enumerable}));return K.set(p,w),w};var s=(p,w)=>{for(var A in w)X(p,A,{get:w[A],enumerable:!0,configurable:!0,set:(D)=>w[A]=()=>D})};var g={};s(g,{withPieCard:()=>Q,usePieStorybookEmitter:()=>G,firePieMethod:()=>I,PieStorybookProviders:()=>L,PieStorybookChannelBridge:()=>R,PieMethodTrigger:()=>h,PIE_STORYBOOK_FIRE_EVENT:()=>Z,PIECARD_PARAM_KEY:()=>Y});module.exports=b(g);var J=require("react"),$=require("@tanstack/react-query"),k=F(require("mitt")),T=require("@swarm.ing/pieui");var Y="piecard",Z="piecard/fire";var z=require("react/jsx-runtime"),y={apiServer:"",centrifugeServer:"",enableRenderingLog:!1,pageProcessor:""},q={current:null},O=()=>{if(!q.current)q.current=new $.QueryClient({defaultOptions:{queries:{retry:!1,staleTime:1/0}}});return q.current},H=J.createContext(null),G=()=>{let p=J.useContext(H);if(!p)throw new Error("usePieStorybookEmitter must be used inside <PieStorybookProviders />");return p},L=({children:p,emitter:w,pieConfig:A})=>{let D=J.useMemo(()=>w??k.default(),[w]),U=J.useMemo(()=>({...y,...A??{}}),[A]);return z.jsx($.QueryClientProvider,{client:O(),children:z.jsx(T.PieConfigContext.Provider,{value:U,children:z.jsx(T.FallbackContext.Provider,{value:z.jsx(z.Fragment,{}),children:z.jsx(H.Provider,{value:D,children:z.jsx(T.MittContext.Provider,{value:D,children:z.jsx(T.SocketIOContext.Provider,{value:null,children:z.jsx(T.CentrifugeIOContext.Provider,{value:null,children:p})})})})})})})},Q=(p)=>z.jsxs(L,{children:[z.jsx(R,{}),z.jsx(p,{})]}),c=(p,w)=>`pie${w}_${p}`,I=(p,w,A,D)=>{p.emit(c(w,A),D)},h=({card:p,method:w,payload:A,label:D})=>{let U=G();return z.jsx("button",{type:"button",onClick:()=>I(U,p,w,A),style:{padding:"6px 12px",marginRight:8,marginBottom:8,fontSize:12,border:"1px solid #ccc",borderRadius:4,cursor:"pointer",background:"#f7f7f7"},children:D??`${p}.${w}`})},B=()=>{return globalThis.__STORYBOOK_ADDONS_CHANNEL__??null},R=()=>{let p=G(),w=J.useRef(p);return w.current=p,J.useEffect(()=>{let A=B();if(!A)return;let D=(...U)=>{let W=U[0];if(!W||!W.card||!W.method)return;I(w.current,W.card,W.method,W.payload)};return A.on(Z,D),()=>A.off(Z,D)},[]),null};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ajaxCommonUtils.d.ts","sourceRoot":"","sources":["../../src/util/ajaxCommonUtils.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,CAAA;AACjB,OAAO,EAAE,0BAA0B,EAAe,MAAM,UAAU,CAAA;AAKlE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kJAAkJ;IAClJ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,uEAAuE;IACvE,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,WAAW,CAAA;CAC5B,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW,GACpB,SAAS,MAAM,EACf,sBAAqB,OAAe,KACrC,KAAK,CAAC,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"ajaxCommonUtils.d.ts","sourceRoot":"","sources":["../../src/util/ajaxCommonUtils.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,CAAA;AACjB,OAAO,EAAE,0BAA0B,EAAe,MAAM,UAAU,CAAA;AAKlE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kJAAkJ;IAClJ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,uEAAuE;IACvE,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,WAAW,CAAA;CAC5B,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW,GACpB,SAAS,MAAM,EACf,sBAAqB,OAAe,KACrC,KAAK,CAAC,MAAM,GAAG,IAAI,CAyBrB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,aAAa,GACtB,yBAAyB,0BAA0B,EACnD,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAChC,YAAW,KAAK,CAAC,MAAM,CAAM,EAC7B,WAAW,MAAM,EACjB,UAAU,oBAAoB,MAahB,cAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,iBAuKtD,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,GACtB,yBAAyB,0BAA0B,EACnD,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAChC,YAAW,KAAK,CAAC,MAAM,CAAM,EAC7B,WAAW,MAAM,EACjB,UAAU;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE,oBA7L9B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBAyNjD,CAAA"}
|