@swarm.ing/pieui 2.1.3 → 2.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/cli.js +2208 -14
  2. package/dist/code/commands/listEvents.d.ts.map +1 -1
  3. package/dist/code/commands/registry.d.ts.map +1 -1
  4. package/dist/index.esm.js +2 -2
  5. package/dist/index.js +2 -2
  6. package/dist/max/index.esm.js +1 -1
  7. package/dist/max/index.js +1 -1
  8. package/dist/native/PieNativeRoot.d.ts +15 -0
  9. package/dist/native/PieNativeRoot.d.ts.map +1 -0
  10. package/dist/native/components/AutoRedirectCard.d.ts +10 -0
  11. package/dist/native/components/AutoRedirectCard.d.ts.map +1 -0
  12. package/dist/native/components/BoxCard.d.ts +13 -0
  13. package/dist/native/components/BoxCard.d.ts.map +1 -0
  14. package/dist/native/components/DeviceStorageCard.d.ts +12 -0
  15. package/dist/native/components/DeviceStorageCard.d.ts.map +1 -0
  16. package/dist/native/components/HTMLEmbedCard.d.ts +11 -0
  17. package/dist/native/components/HTMLEmbedCard.d.ts.map +1 -0
  18. package/dist/native/components/HiddenCard.d.ts +11 -0
  19. package/dist/native/components/HiddenCard.d.ts.map +1 -0
  20. package/dist/native/components/IOEventsCard.d.ts +11 -0
  21. package/dist/native/components/IOEventsCard.d.ts.map +1 -0
  22. package/dist/native/components/OneOfCard.d.ts +12 -0
  23. package/dist/native/components/OneOfCard.d.ts.map +1 -0
  24. package/dist/native/components/SequenceCard.d.ts +12 -0
  25. package/dist/native/components/SequenceCard.d.ts.map +1 -0
  26. package/dist/native/components/SessionStorageCard.d.ts +9 -0
  27. package/dist/native/components/SessionStorageCard.d.ts.map +1 -0
  28. package/dist/native/components/index.d.ts +13 -0
  29. package/dist/native/components/index.d.ts.map +1 -0
  30. package/dist/native/index.d.ts +41 -0
  31. package/dist/native/index.d.ts.map +1 -0
  32. package/dist/native/index.esm.js +3 -0
  33. package/dist/native/index.js +3 -0
  34. package/dist/platform/clientSources.d.ts +4 -0
  35. package/dist/platform/clientSources.d.ts.map +1 -0
  36. package/dist/platform/clientSources.native.d.ts +4 -0
  37. package/dist/platform/clientSources.native.d.ts.map +1 -0
  38. package/dist/platform/clientSources.web.d.ts +10 -0
  39. package/dist/platform/clientSources.web.d.ts.map +1 -0
  40. package/dist/platform/nativeConfig.d.ts +63 -0
  41. package/dist/platform/nativeConfig.d.ts.map +1 -0
  42. package/dist/platform/nativeFormStore.d.ts +12 -0
  43. package/dist/platform/nativeFormStore.d.ts.map +1 -0
  44. package/dist/platform/types.d.ts +39 -0
  45. package/dist/platform/types.d.ts.map +1 -0
  46. package/dist/providers/SocketIOInitProvider.d.ts.map +1 -1
  47. package/dist/telegram/index.esm.js +1 -1
  48. package/dist/telegram/index.js +1 -1
  49. package/dist/tests/clientSources.test.d.ts +2 -0
  50. package/dist/tests/clientSources.test.d.ts.map +1 -0
  51. package/dist/tests/clientSourcesNative.test.d.ts +12 -0
  52. package/dist/tests/clientSourcesNative.test.d.ts.map +1 -0
  53. package/dist/util/ajaxCommonUtils.d.ts.map +1 -1
  54. package/dist/util/centrifuge.d.ts.map +1 -1
  55. package/dist/util/globalForm.d.ts +4 -5
  56. package/dist/util/globalForm.d.ts.map +1 -1
  57. package/dist/util/waitForSidAvailable.d.ts.map +1 -1
  58. package/package.json +17 -4
@@ -1 +1 @@
1
- {"version":3,"file":"listEvents.d.ts","sourceRoot":"","sources":["../../../src/code/commands/listEvents.ts"],"names":[],"mappings":"AAiLA,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,eAAe,MAAM,SAwKtE,CAAA"}
1
+ {"version":3,"file":"listEvents.d.ts","sourceRoot":"","sources":["../../../src/code/commands/listEvents.ts"],"names":[],"mappings":"AAiLA,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,eAAe,MAAM,SA4KtE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/code/commands/registry.ts"],"names":[],"mappings":"AAyBA,KAAK,eAAe,GAAG;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AA2LD,eAAO,MAAM,eAAe,GACxB,QAAQ,KAAK,GAAG,OAAO,EACvB,OAAM,eAAoB,KAC3B,IAiDF,CAAA"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/code/commands/registry.ts"],"names":[],"mappings":"AAyBA,KAAK,eAAe,GAAG;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAsMD,eAAO,MAAM,eAAe,GACxB,QAAQ,KAAK,GAAG,OAAO,EACvB,OAAM,eAAoB,KAC3B,IAiDF,CAAA"}
package/dist/index.esm.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{useContext as GH,useEffect as XH,useRef as fU}from"react";import{createContext as DU,useContext as VU}from"react";var IH=globalThis,K=(H,U)=>{let Z=Symbol.for(H);if(!(Z in IH))IH[Z]=U();return IH[Z]};var m=K("@swarm.ing/pieui:context:pieConfig",()=>DU(null)),p=()=>{let H=VU(m);if(!H)throw Error("usePieConfig must be used within PieConfigProvider");return H},g=()=>{let{apiServer:H}=p();return H},s=g,n=()=>{let{centrifugeServer:H}=p();return H};var j=()=>{let{enableRenderingLog:H}=p();return H},NH=j;var OH="__piedemo__";import{createContext as FU}from"react";import{Centrifuge as fH}from"centrifuge";var EH=K("@swarm.ing/pieui:centrifuge-cache",()=>new Map),r=(H,U)=>{if(!U)return null;let Z=`${H}::${U}`,z=EH.get(Z);if(z)return z;async function T(){let J=await fetch(H+"api/centrifuge/gen_token");if(!J.ok){if(J.status===403)throw new fH.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let $=new fH(U,{getToken:T});return EH.set(Z,$),$},_U=K("@swarm.ing/pieui:context:centrifuge",()=>FU(null)),y=_U;import{io as KU}from"socket.io-client";import{createContext as MU}from"react";var CH=K("@swarm.ing/pieui:socket-cache",()=>new Map),t=(H)=>{let U=CH.get(H);if(U)return U;let Z=KU(H,{autoConnect:!1,transports:["websocket"]});return CH.set(H,Z),Z},AU=K("@swarm.ing/pieui:context:socket",()=>MU(null)),k=AU;import PU from"mitt";import{createContext as RU,useCallback as wU,useContext as LU}from"react";function c(){return K("@swarm.ing/pieui:mitt-emitter",()=>PU())}var jH=K("@swarm.ing/pieui:context:mitt",()=>RU(null));function NU(H){let U=LU(jH);return wU((Z,z)=>{(U??c()).emit(`pie${Z}_${H}`,z)},[H,U])}var x=jH;import{jsx as jU,jsxs as yU,Fragment as CU}from"react/jsx-runtime";var EU=({card:H,data:U,children:Z,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:$=!1,centrifugeChannel:J=void 0,methods:B=void 0,stored:I=void 0})=>{let O=NH(),D=fU(B);if(D.current=B,O)console.log("[PieCard] Rendering card:",H),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:T,mitt:$,centrifugeChannel:J}),console.log("[PieCard] Methods:",B?Object.keys(B):"none"),console.log("[PieCard] Has children:",!!Z);let Q=GH(k),V=GH(y),G=GH(x);if(XH(()=>{if(!Q||!z||!D.current||!U.name){if(O&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!Q,useSocketioSupport:z,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}`;if(O)console.log(`[PieCard] Socket.IO registering event: ${q}`);let M=(F)=>{D.current?.[X]?.(F)};return Q.on(q,M),[q,M]});return()=>{W.forEach(([X,q])=>{if(O)console.log(`[PieCard] Socket.IO unregistering event: ${X}`);Q.off(X,q)})}},[Q,U.name,z]),XH(()=>{if(!V||!T||!J||!U.name){if(O&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}_${J}`;if(O)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let M=V.newSubscription(q);return M.on("publication",(F)=>{if(O)console.log(`[PieCard] Centrifuge received data on ${q}:`,F.data);D.current?.[X]?.(F.data)}),M.subscribe(),M});return()=>{W.forEach((X)=>{if(O)console.log("[PieCard] Centrifuge unsubscribing from channel");X.unsubscribe(),V.removeSubscription(X)})}},[V,J,U.name,T]),XH(()=>{if(!G||!$||!U.name){if(O&&$)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!G,useMittSupport:$,hasMethods:!!D.current,hasDataName:!!U?.name});return}let Y=Object.keys(D.current??{}),W={};return Y.forEach((X)=>{let q=`pie${X}_${U.name}`,M=(F)=>{if(O)console.log(`[PieCard] Mitt registering event: ${q}`);D.current?.[X]?.(F)};W[q]=M,G.on(q,M)}),()=>{Object.entries(W).forEach(([X,q])=>{if(O)console.log(`[PieCard] Mitt unregistering event: ${X}`);G.off(X,q)})}},[G,U.name,$]),O)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return yU(CU,{children:[jU("input",{type:"hidden",name:U.name,value:JSON.stringify(I)}),Z]});return Z},P=EU;import{lazy as kU}from"react";var b=new Map;function yH(H,U){return U.catch(()=>{if(b.get(H)===U)b.delete(H)}),b.set(H,U),U}function YH(H,U){return kU(()=>{if(b.has(U))return b.get(U);return yH(U,H().then((Z)=>Z))})}var kH=async(H,U)=>{if(!U)return;if(b.has(H))return b.get(H);return yH(H,U().then((Z)=>Z))};var E=K("@swarm.ing/pieui:component-registry",()=>new Map),xU=(H)=>{if(!H.name)throw Error("Component registration requires a name");if(!H.component&&!H.loader)throw Error(`Component "${H.name}" requires component or loader`);let U={name:H.name,component:H.component,loader:H.loader,metadata:H.metadata,fallback:H.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=YH(U.loader,H.name),U.isLazy=!0;return U};function _(H){let U=xU(H);return E.set(U.name,U),U.component}var SU=(H)=>{H.forEach((U)=>_(U))},bU=(H)=>{E.delete(H)},vU=(H)=>{return E.has(H)},mU=(H)=>{return E.get(H)?.metadata},u=(H)=>{return E.get(H)},cU=()=>{return Array.from(E.keys())},hU=()=>{return E.size},SH=()=>Array.from(E.values()).filter((H)=>H.isLazy&&typeof H.loader==="function").map((H)=>H.name),bH=(H)=>{let U=E.get(H);if(!U?.isLazy||typeof U.loader!=="function")return;return kH(H,U.loader)},xH=!1,pU=()=>{if(xH||typeof window>"u")return;xH=!0;let H=navigator.connection;if(H?.saveData)return;if(H?.effectiveType&&["slow-2g","2g"].includes(H.effectiveType))return;let U=SH(),Z="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=U.length)return;Z(()=>{Promise.resolve().then(()=>bH(U[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};import{useContext as vH,memo as eU}from"react";import{createContext as gU}from"react";import{jsx as oU,Fragment as dU}from"react/jsx-runtime";var uU=K("@swarm.ing/pieui:context:fallback",()=>gU(oU(dU,{}))),L=uU;import{createContext as lU}from"react";var iU=K("@swarm.ing/pieui:context:lazyError",()=>lU(void 0)),S=iU;import{Component as sU,Suspense as nU}from"react";import{jsx as aU}from"react/jsx-runtime";var rU=2,tU=400;class h extends sU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(H){if(this.props.onError?.(H),this.state.attempt<rU){let U=tU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},U)}}componentDidUpdate(H){if(H.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return aU(nU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as qH}from"react/jsx-runtime";function HZ({uiConfig:H,setUiAjaxConfiguration:U}){let Z=vH(L),z=vH(S),T=j();if(T)console.log("[UI] Rendering component:",H.card),console.log("[UI] Component data:",H.data),console.log("[UI] Component content:",H.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let $=u(H.card);if(!$?.component){if(T)console.warn(`[UI] Component not found in registry: ${H.card}`),console.log("[UI] Returning fallback component");return Z}if(T)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let J=$.component,B=qH(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U});if($.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",$.name);return qH(h,{name:$.name,fallback:$.fallback?qH($.fallback,{}):Z,onError:z,children:B})}if(T)console.log("[UI] Rendering component directly:",$.name);return B}var w=eU(HZ);import{useContext as mH}from"react";import{createContext as UZ}from"react";var ZZ=K("@swarm.ing/pieui:context:uiRenderer",()=>UZ(null)),N=ZZ;import{jsx as a}from"react/jsx-runtime";function cH({uiConfig:H,setUiAjaxConfiguration:U}){let Z=mH(L),z=mH(S),T=j();if(T)console.log("[UILoading] Rendering fallback for:",H.card),console.log("[UILoading] Component data:",H.data),console.log("[UILoading] Component content:",H.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let $=u(H.card);if(!$?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${H.card}`),console.log("[UILoading] Returning fallback component");return Z}if(T)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(T)console.log("[UILoading] Rendering fallback for:",$.name);let I=$.fallback;return a(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",$.name);let J=$.component,B=a(N.Provider,{value:cH,children:a(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U})});if($.isLazy)return a(h,{name:$.name,fallback:Z,onError:z,children:B});return B}var QH=cH;import{useContext as $Z}from"react";import{jsx as WH}from"react/jsx-runtime";var zZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:T}=H,$=$Z(N)??w;return WH(P,{card:z,data:H,children:WH("div",{style:T,id:z,children:U.map((J,B)=>{return WH($,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},hH=zZ;var TZ=_({name:"SequenceCard",component:hH,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as JZ}from"react";import{jsx as pH}from"react/jsx-runtime";var BZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z}=H,T=JZ(N)??w;return pH(P,{card:z,data:H,children:U.map(($,J)=>{return pH(T,{uiConfig:$,setUiAjaxConfiguration:Z},`children-${J}`)})})},gH=BZ;var IZ=_({name:"UnionCard",component:gH,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as YZ,useState as qZ}from"react";import QZ from"html-react-parser";import{useCallback as e,useEffect as OZ,useRef as DH,useState as GZ}from"react";function XZ(){let H=new AudioContext,U=H.createOscillator(),Z=U.connect(H.createMediaStreamDestination());U.start();let z=Z.stream.getAudioTracks()[0];return z.enabled=!1,z}function VH(H=null,U){let[Z,z]=GZ(!1),T=DH(null),$=DH(null),J=DH(null),B=e(async(Q,V=!0)=>{if(T.current)I();let G=new RTCPeerConnection;if(G.onconnectionstatechange=()=>{if(G.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(G.connectionState))z(!1)},G.ontrack=(A)=>{if(H)H.srcObject=A.streams[0]},V){let A=await navigator.mediaDevices.getUserMedia({audio:!0});G.addTrack(A.getTracks()[0],A)}else{let A=XZ();G.addTrack(A)}let Y=G.createDataChannel("oai-events");$.current=Y,J.current=new Promise((A)=>{Y.addEventListener("open",()=>{A()})});let W=await G.createOffer();await G.setLocalDescription(W);let F=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:W.sdp,headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/sdp"}})).text();await G.setRemoteDescription({type:"answer",sdp:F}),T.current=G,await J.current},[H]),I=e(()=>{let Q=$.current;if(Q)Q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,$.current=null,J.current=null},[H]),O=e((Q)=>{let V=$.current;if(!V){console.error("Data channel is not ready",Q);return}let G=new Date().toLocaleTimeString();if(Q.event_id=Q.event_id||crypto.randomUUID(),V.send(JSON.stringify(Q)),!Q.timestamp)Q.timestamp=G;U?.(Q)},[U,H]),D=e((Q)=>{if(!$.current){console.error("Data channel is not ready");return}let G=()=>{O({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Q}]}}),O({type:"response.create"})};if(J.current)J.current.then(G);else G()},[U,H]);return OZ(()=>{let Q=$.current;if(!Q)return;let V=(G)=>{let Y=JSON.parse(G.data);if(!Y.timestamp)Y.timestamp=new Date().toLocaleTimeString();U?.(Y)};return Q.addEventListener("message",V),()=>{Q.removeEventListener("message",V)}},[U,H]),{isSessionActive:Z,startSession:B,stopSession:I,sendTextMessage:D}}import{jsx as DZ}from"react/jsx-runtime";var WZ=({data:H})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:$}=H,[J,B]=qZ(U),{isSessionActive:I,startSession:O,sendTextMessage:D}=VH(null,(Y)=>{if(console.log(Y.type,Y.type==="response.output_text.delta"&&Y.delta),Y.type==="response.output_text.delta"&&Y.delta)B((W)=>W+Y.delta)});return YZ(()=>{B(U)},[U]),DZ(P,{card:"HTMLEmbedCard",data:H,methods:{update:(Y)=>{B(Y.value)},generateUsingAI:async(Y)=>{try{if(!I&&Y.token)await O(Y.token,!1);D(Y.prompt)}catch(W){console.error("Failed to generate using AI",W)}},initializeAI:async(Y)=>{if(!I&&Y.token)await O(Y.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:Z,useMittSupport:T,centrifugeChannel:$,children:QZ(J)})},uH=WZ;var VZ=_({name:"HTMLEmbedCard",component:uH,metadata:{author:"Swarm.ing"}});import{useEffect as FZ,useState as _Z}from"react";import{jsx as dH}from"react/jsx-runtime";var KZ=({data:H})=>{let{name:U,value:Z,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:J}=H,[B,I]=_Z(Z);return FZ(()=>{I(Z)},[Z]),dH(P,{card:"HiddenCard",data:H,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:J,methods:{update:({value:O})=>{I(O)}},children:dH("input",{type:"hidden",id:U,name:U,value:B})})},oH=KZ;var MZ=_({name:"HiddenCard",component:oH,metadata:{author:"Swarm.ing"}});import{useContext as lH,useEffect as RZ}from"react";import{createContext as AZ}from"react";var PZ=K("@swarm.ing/pieui:context:navigate",()=>AZ(void 0)),C=PZ;import{jsx as NZ,Fragment as LZ}from"react/jsx-runtime";var wZ=({data:H})=>{let{url:U}=H,Z=lH(C),z=lH(L);return RZ(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),NZ(LZ,{children:z})},iH=wZ;var fZ=_({name:"AutoRedirectCard",component:iH,metadata:{author:"Swarm.ing"}});import{Bounce as EZ,Slide as CZ,Zoom as jZ,Flip as yZ}from"react-toastify";import{toast as kZ,ToastContainer as xZ}from"react-toastify";import{useContext as SZ,useMemo as bZ,useRef as vZ}from"react";import{jsx as FH,Fragment as uZ}from"react/jsx-runtime";var mZ={bounce:EZ,slide:CZ,zoom:jZ,flip:yZ},cZ=(H)=>{let U={...H,type:H.alertType,transition:H.transition?mZ[H.transition]:void 0,position:H.position??"bottom-right",autoClose:H.autoClose??3000,style:{backgroundColor:"black",...H.sx}};kZ(H.message,U)},hZ=(H)=>{console.log("Log event",H)},pZ=(H)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(H.title,{body:H.message??H.subtitle,icon:H.icon,silent:H.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")U()})},gZ=({data:H})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:T}=H,$=SZ(C),J=vZ($);J.current=$;let B=bZ(()=>({alert:cZ,log:hZ,push:pZ,redirect:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()},reload:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()}}),[]);return FH(uZ,{children:FH(P,{card:"IOEventsCard",data:H,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:T,methods:B,children:FH(xZ,{})})})},sH=gZ;var dZ=_({name:"IOEventsCard",component:sH,metadata:{author:"Swarm.ing"}});import{useEffect as nH,useState as oZ}from"react";import{jsx as rH}from"react/jsx-runtime";var lZ=({data:H})=>{let{name:U,key:Z,value:z,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=oZ(z);return nH(()=>{O(z)},[z]),nH(()=>{if(typeof window>"u")return;sessionStorage.setItem(Z,I)},[Z,I]),rH(P,{card:"SessionStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{sessionStorage.removeItem(Z),O("")}},children:rH("input",{type:"hidden",id:U,name:U,value:I})})},tH=lZ;var iZ=_({name:"SessionStorageCard",component:tH,metadata:{author:"PieData"}});import{useEffect as aH,useState as sZ}from"react";import{jsx as eH}from"react/jsx-runtime";var nZ=({data:H})=>{let{name:U,key:Z,value:z,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=sZ(z);return aH(()=>{O(z)},[z]),aH(()=>{if(typeof window>"u")return;localStorage.setItem(Z,I)},[Z,I]),eH(P,{card:"DeviceStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{localStorage.removeItem(Z),O("")}},children:eH("input",{type:"hidden",id:U,name:U,value:I})})},HU=nZ;var rZ=_({name:"DeviceStorageCard",component:HU,metadata:{author:"PieData"}});import{useCallback as _H,useContext as KH,useEffect as tZ,useRef as aZ,useState as UU}from"react";import{jsx as ZU}from"react/jsx-runtime";var eZ=({data:H,content:U})=>{let{useLoader:Z,noReturn:z,returnType:T,useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I}=H,O=KH(L),D=KH(N)??w,[Q,V]=UU(!1),[G,Y]=UU(null),W=aZ(U),X=KH(x),q=_H((A)=>{if(A===null)V(!0);else if(V(!1),!z)W.current=A;if(!z)Y(A)},[z]),M=_H((A)=>{W.current=A.content,Y(A.content)},[]),F=_H((A)=>{if(A===null)V(!0);else if(V(!1),!z)for(let l of A)X?.emit(l.name,l.data)},[z,X]);if(tZ(()=>{Y(U),V(!1)},[U]),!G&&Z)return O;return ZU(P,{card:"AjaxGroupCard",data:H,methods:{changeContent:M},useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I,children:ZU(D,{uiConfig:G??W.current,setUiAjaxConfiguration:T==="events"?F:q})})},$U=eZ;var H$=_({name:"AjaxGroupCard",component:$U,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as zU}from"react";import{jsx as MH}from"react/jsx-runtime";var U$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,url:T,sx:$}=H,J=zU(C),B=zU(N)??w;return MH(P,{card:z,data:H,children:MH("div",{style:$,id:z,onClick:(O)=>{if(T)if(O.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:MH(B,{setUiAjaxConfiguration:Z,uiConfig:U})})})},TU=U$;var Z$=_({name:"BoxCard",component:TU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as $$}from"react";import{jsx as AH}from"react/jsx-runtime";var z$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:T}=H,$=$$(N)??w;return AH(P,{card:z,data:H,children:AH("div",{style:T,id:z,children:U.map((J,B)=>{return AH($,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},JU=z$;var T$=_({name:"OneOfCard",component:JU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as o}from"react";import{QueryClient as W$,QueryClientProvider as D$,useQuery as V$}from"@tanstack/react-query";import{useContext as I$,useEffect as O$}from"react";import{useEffect as J$,useState as B$}from"react";var HH=new Map,UH=new Map;function ZH(H,U){let Z=`${H}::${U}`,z=H?HH.get(Z):void 0,[T,$]=B$(z??null);return J$(()=>{if(!H)return;if(HH.has(Z)){$(HH.get(Z));return}let J=UH.get(Z);if(!J)J=fetch(H+`api/support/${U}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return HH.set(Z,I),UH.delete(Z),I}).catch((I)=>{throw UH.delete(Z),I}),UH.set(Z,J);let B=!1;return J.then((I)=>{if(!B)$(I)}).catch(()=>{}),()=>{B=!0}},[H,U,Z]),T}var d=K("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function BU(){d.resolve?.()}function PH(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!d.promise)d.promise=new Promise((H)=>{d.resolve=()=>{H()}});return d.promise}var G$=({children:H})=>{let U=I$(k),Z=s(),z=ZH(Z,"socketIO"),T=($)=>{if(typeof window<"u")window.sid=$.sid,BU(),console.log(`SocketIO initialized: ${window.sid}`)};return O$(()=>{if(!U)return;let $=()=>{console.log("SocketIO connected")},J=(B)=>{console.log(`SocketIO disconnected: ${B}`),U.connect()};if(z)U.on("pieinit",T),U.on("connect",$),U.on("disconnect",J),U.connect();return()=>{if(z)U.off("pieinit",T),U.off("connect",$),U.off("disconnect",J),U.disconnect()}},[U,z]),H},$H=G$;import{useContext as X$,useEffect as Y$}from"react";var q$=({children:H})=>{let U=X$(y),Z=s(),z=ZH(Z,"centrifuge");return Y$(()=>{if(!U)return;let T=()=>{console.log("Centrifuge connected")},$=(J)=>{console.log("Centrifuge disconnected:",J)};if(z)U.on("connected",T),U.on("disconnected",$),U.connect();return()=>{if(z)U.disconnect()}},[U,z]),H},zH=q$;import{createAxiosDateTransformer as F$}from"axios-date-transformer";import{jsx as Q$}from"react/jsx-runtime";function IU(H,U,Z){if(!U)return Z;let z=H.replace(/^\//,""),T=U[z];if(!T)return Z;return Q$(QH,{uiConfig:T})}import{jsx as R,Fragment as M$}from"react/jsx-runtime";var _$=({location:H,fallback:U,piecache:Z,onError:z,queryOptions:T,disableGlobalForm:$})=>{let J=g(),B=n(),I=j(),O=o(()=>F$({baseURL:J||""}),[J]),D=o(()=>c(),[]),Q=o(()=>J?t(J):null,[J]),V=o(()=>J?r(J,B):null,[J,B]),{data:G,isLoading:Y,error:W}=V$({queryKey:["uiConfig",H.pathname+H.search,J],enabled:!!J,queryFn:async()=>{let q=new URLSearchParams(H.search);q.set("__pieroot","web");let M="/api/content"+H.pathname+"?"+q.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",M);let F=await O.get(M,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",F.data);return F.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...T}),X=IU(H.pathname,Z,U);if(!J)return X??null;if(I)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",B),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!Z);if(W){if(I)console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data});return z?.(W),X}if(Y||!G){if(I)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!G});return X}if(I)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return R(x.Provider,{value:D,children:R(k.Provider,{value:Q,children:R(y.Provider,{value:V,children:R(L.Provider,{value:U??R(M$,{}),children:R($H,{children:R(zH,{children:$?R(w,{uiConfig:G}):R("form",{id:"piedata_global_form",action:J+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:R(w,{uiConfig:G})})})})})})})})},K$=(H)=>{let U=o(()=>new W$,[]),Z=H.queryClient??U;return R(C.Provider,{value:H.onNavigate,children:R(m.Provider,{value:H.config,children:R(S.Provider,{value:H.onError,children:R(D$,{client:Z,children:R(_$,{...H})})})})})},RH=K$;import{useMemo as wH,useState as A$}from"react";import{QueryClient as P$,QueryClientProvider as R$}from"@tanstack/react-query";import{jsx as f,Fragment as N$}from"react/jsx-runtime";var w$=({location:H,fallback:U,children:Z,disableGlobalForm:z})=>{let T=g(),$=n(),J=j(),B=wH(()=>c(),[]),I=wH(()=>T?t(T):null,[T]),O=wH(()=>T?r(T,$):null,[T,$]);if(J)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",$),console.log("[PieRoot] Fallback provided:",!!U);return f(x.Provider,{value:B,children:f(k.Provider,{value:I,children:f(y.Provider,{value:O,children:f(L.Provider,{value:U??f(N$,{}),children:f($H,{children:f(zH,{children:z?Z:f("form",{id:"piedata_global_form",action:T+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},L$=(H)=>{let[U]=A$(()=>new P$),Z=H.queryClient??U;return f(C.Provider,{value:H.onNavigate,children:f(m.Provider,{value:H.config,children:f(S.Provider,{value:H.onError,children:f(R$,{client:Z,children:f(w$,{...H})})})})})},f$=L$;import{useMemo as E$}from"react";import{jsx as OU}from"react/jsx-runtime";var C$=OU("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),j$=({apiServer:H,pathname:U="/",search:Z="",centrifugeServer:z,fallback:T,enableRenderingLog:$=!1})=>{let J=H??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",B=E$(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:$,pageProcessor:"web"}),[J,z,$]);return OU(RH,{location:{pathname:U,search:Z},config:B,fallback:T??C$,onNavigate:(O)=>{if(typeof window<"u")window.history.pushState(null,"",O)}})},y$=j$;import{useMemo as k$}from"react";var x$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],S$=new Set(["telegram:cloud","telegram:secure"]),TH=(H)=>{if(H==="sid")return{source:"sid",key:"sid"};for(let U of x$){let Z=U+":";if(H.startsWith(Z))return{source:U,key:H.slice(Z.length)}}return{source:"dom",key:H}},GU=(H,U=!1)=>{let{source:Z,key:z}=TH(H);if(Z==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}if(Z==="localStorage"||Z==="sessionStorage")try{let B=(Z==="localStorage"?window.localStorage:window.sessionStorage).getItem(z);if(B===null){if(U)console.warn(`No ${Z} value found for key ${z}`);return[]}return[B]}catch(J){if(U)console.warn(`Failed to read ${Z} key ${z}:`,J);return[]}if(Z==="cookie"){let J=b$(z);if(J===null){if(U)console.warn(`No cookie found for key ${z}`);return[]}return[J]}if(Z==="url"){let J=new URLSearchParams(window.location.search).getAll(z);if(!J.length&&U)console.warn(`No URL query param found for key ${z}`);return J}if(S$.has(Z)){if(U)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=document.getElementsByName(z);if(!T.length){if(U)console.warn(`No input found with name ${z}`);return[]}let $=T[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},b$=(H)=>{let U=document.cookie?document.cookie.split(";"):[];for(let Z of U){let z=Z.indexOf("=");if((z===-1?Z:Z.slice(0,z)).trim()===H){let $=z===-1?"":Z.slice(z+1).trim();try{return decodeURIComponent($)}catch{return $}}}return null},v$=(H,U,Z)=>{let z=window.Telegram?.WebApp,T=H==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,$=H==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if(Z)console.warn(`${$} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(U,(B,I)=>{if(B){if(Z)console.warn(`Failed to read ${$} key ${U}:`,B);J([]);return}if(I==null||I===""){if(Z)console.warn(`No ${$} value found for key ${U}`);J([]);return}J([I])})}catch(B){if(Z)console.warn(`Failed to read ${$} key ${U}:`,B);J([])}})},XU=async(H,U=!1)=>{let{source:Z,key:z}=TH(H);if(Z==="telegram:cloud"||Z==="telegram:secure")return v$(Z,z,U);return GU(H,U)},m$=(H,U={},Z=[],z,T)=>{let $=T?.renderingLogEnabled??!1,J=T?.timeout,B=T?.retryPolicy,I=B?.maxRetries??0,O=B?.baseDelay??1000,D=B?.retryOn??[502,503,504];if($)console.log("Registering AJAX: ",z,U,Z);return async(Q={})=>{if(typeof window>"u"||typeof document>"u"){if($)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if($)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!H){if($)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await PH();let G=new FormData;for(let[X,q]of Object.entries({...U,...Q}))G.append(X,q);for(let X of Z){let{key:q}=TH(X);for(let M of await XU(X,$))G.append(q,M)}let Y=V+"api/ajax_content"+z;H(null);let W;for(let X=0;X<=I;X++){if(X>0){let F=O*2**(X-1);if($)console.log(`AJAX retry ${X}/${I} after ${F}ms`);await new Promise((A)=>setTimeout(A,F))}let q=J!=null?new AbortController:null,M=q&&setTimeout(()=>q.abort(),J);try{let F=await fetch(Y,{method:"POST",body:G,signal:q?.signal});if(M)clearTimeout(M);if(!F.ok&&D.includes(F.status)&&X<I){W=Error(`HTTP ${F.status}`);continue}let l=(F.headers.get("content-type")||"").includes("application/json");if(!!F.body?.getReader&&!l){let i=F.body.getReader(),YU=new TextDecoder,v="";while(!0){let{done:JH,value:qU}=await i.read();if(JH)break;v+=YU.decode(qU,{stream:!0});let LH=v.split(`
3
- `);v=LH.pop()??"";for(let QU of LH){let BH=QU.trim();if(!BH)continue;try{let WU=JSON.parse(BH);H([WU])}catch{if($)console.warn("Failed to parse streamed line:",BH)}}}if(v.trim())try{let JH=JSON.parse(v);H([JH])}catch{if($)console.warn("Failed to parse final streamed line:",v)}return{}}else{let i=await F.json();return H(i),i}}catch(F){if(M)clearTimeout(M);if(W=F,X<I)continue;if($)console.error("AJAX request failed:",F);return H(null),F}}if($)console.error("AJAX request failed after retries:",W);return H(null),W}},c$=(H,U={},Z=[],z,T)=>{let{apiServer:$,enableRenderingLog:J}=p(),B=JSON.stringify(U),I=JSON.stringify(Z),O=JSON.stringify(T);return k$(()=>m$(H,U,Z,z,{apiServer:$,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[H,B,I,z,$,J,O])};import{clsx as h$}from"clsx";import{twMerge as p$}from"tailwind-merge";function g$(...H){return p$(h$(H))}var u$=()=>{if(typeof document>"u")return;let H=document.getElementById("piedata_global_form");H&&H.submit()};var d$=(H,U)=>`${H}${OH}${U}`;export{NU as usePieEmit,c$ as useAjaxSubmit,bU as unregisterComponent,YH as trackLazy,u$ as submitGlobalForm,E as registry,_ as registerPieComponent,SU as registerMultipleComponents,XU as readAjaxKeyAsync,GU as readAjaxKey,bH as preloadComponent,pU as prefetchLazyComponents,d$ as pieName,TH as parseDepName,vU as hasComponent,hU as getRegistrySize,u as getRegistryEntry,SH as getLazyComponentNames,c as getEmitter,mU as getComponentMeta,cU as getAllRegisteredComponents,g$ as cn,IZ as UnionCard,N as UIRendererContext,QH as UILoading,w as UI,k as SocketIOContext,iZ as SessionStorageCard,TZ as SequenceCard,RH as PieRoot,y$ as PiePreviewRoot,m as PieConfigContext,P as PieCard,f$ as PieBaseRoot,OH as PIEBREAK,T$ as OneOfCard,x as MittContext,dZ as IOEventsCard,MZ as HiddenCard,VZ as HTMLEmbedCard,L as FallbackContext,rZ as DeviceStorageCard,y as CentrifugeIOContext,Z$ as BoxCard,fZ as AutoRedirectCard,H$ as AjaxGroupCard};
2
+ import{useContext as qU,useEffect as OU,useRef as SZ}from"react";import{createContext as MZ,useContext as RZ}from"react";var YU=globalThis,K=(U,Z)=>{let H=Symbol.for(U);if(!(H in YU))YU[H]=Z();return YU[H]};var p=K("@swarm.ing/pieui:context:pieConfig",()=>MZ(null)),u=()=>{let U=RZ(p);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},d=()=>{let{apiServer:U}=u();return U},r=d,t=()=>{let{centrifugeServer:U}=u();return U};var x=()=>{let{enableRenderingLog:U}=u();return U},jU=x;var BU="__piedemo__";import{createContext as LZ}from"react";import{Centrifuge as fU}from"centrifuge";var CU=K("@swarm.ing/pieui:centrifuge-cache",()=>new Map),a=(U,Z)=>{if(!Z)return null;let H=`${U}::${Z}`,$=CU.get(H);if($)return $;async function J(){let T=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!T.ok){if(T.status===401||T.status===403)throw new fU.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${T.status}`)}return(await T.json()).token}let z=new fU(Z,{getToken:J});return CU.set(H,z),z},wZ=K("@swarm.ing/pieui:context:centrifuge",()=>LZ(null)),y=wZ;import{io as NZ}from"socket.io-client";import{createContext as EZ}from"react";var xU=K("@swarm.ing/pieui:socket-cache",()=>new Map),e=(U)=>{let Z=xU.get(U);if(Z)return Z;let H=NZ(U,{autoConnect:!1,transports:["websocket"]});return xU.set(U,H),H},jZ=K("@swarm.ing/pieui:context:socket",()=>EZ(null)),k=jZ;import fZ from"mitt";import{createContext as CZ,useCallback as xZ,useContext as yZ}from"react";function g(){return K("@swarm.ing/pieui:mitt-emitter",()=>fZ())}var yU=K("@swarm.ing/pieui:context:mitt",()=>CZ(null));function kZ(U){let Z=yZ(yU);return xZ((H,$)=>{(Z??g()).emit(`pie${H}_${U}`,$)},[U,Z])}var S=yU;import{jsx as mZ,jsxs as hZ,Fragment as vZ}from"react/jsx-runtime";var bZ=({card:U,data:Z,children:H,useSocketioSupport:$=!1,useCentrifugeSupport:J=!1,useMittSupport:z=!1,centrifugeChannel:T=void 0,methods:I=void 0,stored:G=void 0})=>{let X=jU(),D=SZ(I);if(D.current=I,X)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:$,centrifuge:J,mitt:z,centrifugeChannel:T}),console.log("[PieCard] Methods:",I?Object.keys(I):"none"),console.log("[PieCard] Has children:",!!H);let Q=qU(k),V=qU(y),Y=qU(S);if(OU(()=>{if(!Q||!$||!D.current||!Z.name){if(X&&$)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!Q,useSocketioSupport:$,hasMethods:!!D.current,hasDataName:!!Z?.name});return}let W=Object.keys(D.current??{}).map((B)=>{let O=`pie${B}_${Z.name}`;if(X)console.log(`[PieCard] Socket.IO registering event: ${O}`);let A=(_)=>{D.current?.[B]?.(_)};return Q.on(O,A),[O,A]});return()=>{W.forEach(([B,O])=>{if(X)console.log(`[PieCard] Socket.IO unregistering event: ${B}`);Q.off(B,O)})}},[Q,Z.name,$]),OU(()=>{if(!V||!J||!T||!Z.name){if(X&&J)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:J,hasCentrifugeChannel:!!T,hasMethods:!!D.current,hasDataName:!!Z?.name});return}let W=Object.keys(D.current??{}).map((B)=>{let O=`pie${B}_${Z.name}_${T}`;if(X)console.log(`[PieCard] Centrifuge subscribing to channel: ${O}`);let A=V.newSubscription(O);return A.on("publication",(_)=>{if(X)console.log(`[PieCard] Centrifuge received data on ${O}:`,_.data);D.current?.[B]?.(_.data)}),A.subscribe(),A});return()=>{W.forEach((B)=>{if(X)console.log("[PieCard] Centrifuge unsubscribing from channel");B.unsubscribe(),V.removeSubscription(B)})}},[V,T,Z.name,J]),OU(()=>{if(!Y||!z||!Z.name){if(X&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!Y,useMittSupport:z,hasMethods:!!D.current,hasDataName:!!Z?.name});return}let q=Object.keys(D.current??{}),W={};return q.forEach((B)=>{let O=`pie${B}_${Z.name}`,A=(_)=>{if(X)console.log(`[PieCard] Mitt registering event: ${O}`);D.current?.[B]?.(_)};W[O]=A,Y.on(O,A)}),()=>{Object.entries(W).forEach(([B,O])=>{if(X)console.log(`[PieCard] Mitt unregistering event: ${B}`);Y.off(B,O)})}},[Y,Z.name,z]),X)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return hZ(vZ,{children:[mZ("input",{type:"hidden",name:Z.name,value:JSON.stringify(G)}),H]});return H},M=bZ;import{lazy as pZ}from"react";var v=new Map;function kU(U,Z){return Z.catch(()=>{if(v.get(U)===Z)v.delete(U)}),v.set(U,Z),Z}function QU(U,Z){return pZ(()=>{if(v.has(Z))return v.get(Z);return kU(Z,U().then((H)=>H))})}var SU=async(U,Z)=>{if(!Z)return;if(v.has(U))return v.get(U);return kU(U,Z().then((H)=>H))};var f=K("@swarm.ing/pieui:component-registry",()=>new Map),gZ=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let Z={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!Z.component&&Z.loader)Z.component=QU(Z.loader,U.name),Z.isLazy=!0;return Z};function F(U){let Z=gZ(U);return f.set(Z.name,Z),Z.component}var cZ=(U)=>{U.forEach((Z)=>F(Z))},uZ=(U)=>{f.delete(U)},dZ=(U)=>{return f.has(U)},oZ=(U)=>{return f.get(U)?.metadata},o=(U)=>{return f.get(U)},lZ=()=>{return Array.from(f.keys())},iZ=()=>{return f.size},vU=()=>Array.from(f.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),mU=(U)=>{let Z=f.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return SU(U,Z.loader)},bU=!1,sZ=()=>{if(bU||typeof window>"u")return;bU=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=vU(),H="requestIdleCallback"in window?(J)=>window.requestIdleCallback(J,{timeout:2000}):(J)=>window.setTimeout(J,300),$=(J)=>{if(J>=Z.length)return;H(()=>{Promise.resolve().then(()=>mU(Z[J])).catch(()=>{}).finally(()=>$(J+1))})};$(0)};import{useContext as hU,memo as TH}from"react";import{createContext as nZ}from"react";import{jsx as aZ,Fragment as tZ}from"react/jsx-runtime";var rZ=K("@swarm.ing/pieui:context:fallback",()=>nZ(aZ(tZ,{}))),N=rZ;import{createContext as eZ}from"react";var UH=K("@swarm.ing/pieui:context:lazyError",()=>eZ(void 0)),b=UH;import{Component as ZH,Suspense as HH}from"react";import{jsx as JH}from"react/jsx-runtime";var $H=2,zH=400;class c extends ZH{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<$H){let Z=zH*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((H)=>({failed:!1,attempt:H.attempt+1}))},Z)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return JH(HH,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as WU}from"react/jsx-runtime";function GH({uiConfig:U,setUiAjaxConfiguration:Z}){let H=hU(N),$=hU(b),J=x();if(J)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!Z);let z=o(U.card);if(!z?.component){if(J)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return H}if(J)console.log("[UI] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let T=z.component,I=WU(T,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(z.isLazy){if(J)console.log("[UI] Rendering lazy component with Suspense:",z.name);return WU(c,{name:z.name,fallback:z.fallback?WU(z.fallback,{}):H,onError:$,children:I})}if(J)console.log("[UI] Rendering component directly:",z.name);return I}var w=TH(GH);import{useContext as pU}from"react";import{createContext as IH}from"react";var XH=K("@swarm.ing/pieui:context:uiRenderer",()=>IH(null)),E=XH;import{jsx as UU}from"react/jsx-runtime";function gU({uiConfig:U,setUiAjaxConfiguration:Z}){let H=pU(N),$=pU(b),J=x();if(J)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!Z);let z=o(U.card);if(!z?.component){if(J)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return H}if(J)console.log("[UILoading] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata,hasFallback:!!z.fallback});if(z.fallback){if(J)console.log("[UILoading] Rendering fallback for:",z.name);let G=z.fallback;return UU(G,{})}if(J)console.log("[UILoading] No fallback, rendering full component:",z.name);let T=z.component,I=UU(E.Provider,{value:gU,children:UU(T,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(z.isLazy)return UU(c,{name:z.name,fallback:H,onError:$,children:I});return I}var DU=gU;import{useContext as YH}from"react";import{jsx as VU}from"react/jsx-runtime";var BH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:J}=U,z=YH(E)??w;return VU(M,{card:$,data:U,children:VU("div",{style:J,id:$,children:Z.map((T,I)=>{return VU(z,{uiConfig:T,setUiAjaxConfiguration:H},`children-${I}`)})})})},cU=BH;var qH=F({name:"SequenceCard",component:cU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as OH}from"react";import{jsx as uU}from"react/jsx-runtime";var QH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$}=U,J=OH(E)??w;return uU(M,{card:$,data:U,children:Z.map((z,T)=>{return uU(J,{uiConfig:z,setUiAjaxConfiguration:H},`children-${T}`)})})},dU=QH;var WH=F({name:"UnionCard",component:dU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as FH,useState as KH}from"react";import AH from"html-react-parser";import{useCallback as ZU,useEffect as DH,useRef as _U,useState as VH}from"react";function _H(){let U=new AudioContext,Z=U.createOscillator(),H=Z.connect(U.createMediaStreamDestination());Z.start();let $=H.stream.getAudioTracks()[0];return $.enabled=!1,$}function FU(U=null,Z){let[H,$]=VH(!1),J=_U(null),z=_U(null),T=_U(null),I=ZU(async(Q,V=!0)=>{if(J.current)G();let Y=new RTCPeerConnection;if(Y.onconnectionstatechange=()=>{if(Y.connectionState==="connected")$(!0);else if(["disconnected","failed","closed"].includes(Y.connectionState))$(!1)},Y.ontrack=(P)=>{if(U)U.srcObject=P.streams[0]},V){let P=await navigator.mediaDevices.getUserMedia({audio:!0});Y.addTrack(P.getTracks()[0],P)}else{let P=_H();Y.addTrack(P)}let q=Y.createDataChannel("oai-events");z.current=q,T.current=new Promise((P)=>{q.addEventListener("open",()=>{P()})});let W=await Y.createOffer();await Y.setLocalDescription(W);let _=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:W.sdp,headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/sdp"}})).text();await Y.setRemoteDescription({type:"answer",sdp:_}),J.current=Y,await T.current},[U]),G=ZU(()=>{let Q=z.current;if(Q)Q.close();J.current?.getSenders()?.forEach((V)=>V.track?.stop()),J.current?.close(),$(!1),J.current=null,z.current=null,T.current=null},[U]),X=ZU((Q)=>{let V=z.current;if(!V){console.error("Data channel is not ready",Q);return}let Y=new Date().toLocaleTimeString();if(Q.event_id=Q.event_id||crypto.randomUUID(),V.send(JSON.stringify(Q)),!Q.timestamp)Q.timestamp=Y;Z?.(Q)},[Z,U]),D=ZU((Q)=>{if(!z.current){console.error("Data channel is not ready");return}let Y=()=>{X({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Q}]}}),X({type:"response.create"})};if(T.current)T.current.then(Y);else Y()},[Z,U]);return DH(()=>{let Q=z.current;if(!Q)return;let V=(Y)=>{let q=JSON.parse(Y.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();Z?.(q)};return Q.addEventListener("message",V),()=>{Q.removeEventListener("message",V)}},[Z,U]),{isSessionActive:H,startSession:I,stopSession:G,sendTextMessage:D}}import{jsx as MH}from"react/jsx-runtime";var PH=({data:U})=>{let{html:Z,useSocketioSupport:H,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:z}=U,[T,I]=KH(Z),{isSessionActive:G,startSession:X,sendTextMessage:D}=FU(null,(q)=>{if(console.log(q.type,q.type==="response.output_text.delta"&&q.delta),q.type==="response.output_text.delta"&&q.delta)I((W)=>W+q.delta)});return FH(()=>{I(Z)},[Z]),MH(M,{card:"HTMLEmbedCard",data:U,methods:{update:(q)=>{I(q.value)},generateUsingAI:async(q)=>{try{if(!G&&q.token)await X(q.token,!1);D(q.prompt)}catch(W){console.error("Failed to generate using AI",W)}},initializeAI:async(q)=>{if(!G&&q.token)await X(q.token,!1)}},useCentrifugeSupport:$,useSocketioSupport:H,useMittSupport:J,centrifugeChannel:z,children:AH(T)})},oU=PH;var RH=F({name:"HTMLEmbedCard",component:oU,metadata:{author:"Swarm.ing"}});import{useEffect as LH,useState as wH}from"react";import{jsx as lU}from"react/jsx-runtime";var NH=({data:U})=>{let{name:Z,value:H,useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:z,centrifugeChannel:T}=U,[I,G]=wH(H);return LH(()=>{G(H)},[H]),lU(M,{card:"HiddenCard",data:U,useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)}},children:lU("input",{type:"hidden",id:Z,name:Z,value:I})})},iU=NH;var EH=F({name:"HiddenCard",component:iU,metadata:{author:"Swarm.ing"}});import{useContext as sU,useEffect as CH}from"react";import{createContext as jH}from"react";var fH=K("@swarm.ing/pieui:context:navigate",()=>jH(void 0)),C=fH;import{jsx as kH,Fragment as yH}from"react/jsx-runtime";var xH=({data:U})=>{let{url:Z}=U,H=sU(C),$=sU(N);return CH(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else H?.(Z)},[Z,H]),kH(yH,{children:$})},nU=xH;var SH=F({name:"AutoRedirectCard",component:nU,metadata:{author:"Swarm.ing"}});import{Bounce as bH,Slide as vH,Zoom as mH,Flip as hH}from"react-toastify";import{toast as pH,ToastContainer as gH}from"react-toastify";import{useContext as cH,useMemo as uH,useRef as dH}from"react";import{jsx as KU,Fragment as rH}from"react/jsx-runtime";var oH={bounce:bH,slide:vH,zoom:mH,flip:hH},lH=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?oH[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};pH(U.message,Z)},iH=(U)=>{console.log("Log event",U)},sH=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let Z=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch($){console.error("[IOEventsCard] Failed to show notification",$)}},H=window.Notification.permission;if(H==="granted"){Z();return}if(H==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then(($)=>{if($==="granted")Z()})},nH=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:J}=U,z=cH(C),T=dH(z);T.current=z;let I=uH(()=>({alert:lH,log:iH,push:sH,redirect:(G)=>{if(G.to){let X=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(X))window.location.href=X;else T.current?.(X)}else window.location.reload()},reload:(G)=>{if(G.to){let X=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(X))window.location.href=X;else T.current?.(X)}else window.location.reload()}}),[]);return KU(rH,{children:KU(M,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:J,methods:I,children:KU(gH,{})})})},rU=nH;var tH=F({name:"IOEventsCard",component:rU,metadata:{author:"Swarm.ing"}});import{useEffect as tU,useState as aH}from"react";import{jsx as aU}from"react/jsx-runtime";var eH=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:J,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:I}=U,[G,X]=aH($);return tU(()=>{X($)},[$]),tU(()=>{if(typeof window>"u")return;sessionStorage.setItem(H,G)},[H,G]),aU(M,{card:"SessionStorageCard",data:U,useSocketioSupport:J,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:I,methods:{update:({value:D})=>{X(D)},remove:()=>{sessionStorage.removeItem(H),X("")}},children:aU("input",{type:"hidden",id:Z,name:Z,value:G})})},eU=eH;var U$=F({name:"SessionStorageCard",component:eU,metadata:{author:"PieData"}});import{useEffect as UZ,useState as Z$}from"react";import{jsx as ZZ}from"react/jsx-runtime";var H$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:J,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:I}=U,[G,X]=Z$($);return UZ(()=>{X($)},[$]),UZ(()=>{if(typeof window>"u")return;localStorage.setItem(H,G)},[H,G]),ZZ(M,{card:"DeviceStorageCard",data:U,useSocketioSupport:J,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:I,methods:{update:({value:D})=>{X(D)},remove:()=>{localStorage.removeItem(H),X("")}},children:ZZ("input",{type:"hidden",id:Z,name:Z,value:G})})},HZ=H$;var $$=F({name:"DeviceStorageCard",component:HZ,metadata:{author:"PieData"}});import{useCallback as AU,useContext as PU,useEffect as z$,useRef as J$,useState as $Z}from"react";import{jsx as zZ}from"react/jsx-runtime";var T$=({data:U,content:Z})=>{let{useLoader:H,noReturn:$,returnType:J,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:I,centrifugeChannel:G}=U,X=PU(N),D=PU(E)??w,[Q,V]=$Z(!1),[Y,q]=$Z(null),W=J$(Z),B=PU(S),O=AU((P)=>{if(P===null)V(!0);else if(V(!1),!$)W.current=P;if(!$)q(P)},[$]),A=AU((P)=>{W.current=P.content,q(P.content)},[]),_=AU((P)=>{if(P===null)V(!0);else if(V(!1),!$)for(let s of P)B?.emit(s.name,s.data)},[$,B]);if(z$(()=>{q(Z),V(!1)},[Z]),!Y&&H)return X;return zZ(M,{card:"AjaxGroupCard",data:U,methods:{changeContent:A},useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:I,centrifugeChannel:G,children:zZ(D,{uiConfig:Y??W.current,setUiAjaxConfiguration:J==="events"?_:O})})},JZ=T$;var G$=F({name:"AjaxGroupCard",component:JZ,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as TZ}from"react";import{jsx as MU}from"react/jsx-runtime";var I$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,url:J,sx:z}=U,T=TZ(C),I=TZ(E)??w;return MU(M,{card:$,data:U,children:MU("div",{style:z,id:$,onClick:(X)=>{if(J)if(X.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(J))window.location.href=J;else T?.(J)},children:MU(I,{setUiAjaxConfiguration:H,uiConfig:Z})})})},GZ=I$;var X$=F({name:"BoxCard",component:GZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Y$}from"react";import{jsx as RU}from"react/jsx-runtime";var B$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:J}=U,z=Y$(E)??w;return RU(M,{card:$,data:U,children:RU("div",{style:J,id:$,children:Z.map((T,I)=>{return RU(z,{uiConfig:T,setUiAjaxConfiguration:H},`children-${I}`)})})})},IZ=B$;var q$=F({name:"OneOfCard",component:IZ,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as i}from"react";import{QueryClient as E$,QueryClientProvider as j$,useQuery as f$}from"@tanstack/react-query";import{useContext as A$,useEffect as P$}from"react";import{useEffect as O$,useState as Q$}from"react";var HU=new Map,$U=new Map;function zU(U,Z){let H=`${U}::${Z}`,$=U?HU.get(H):void 0,[J,z]=Q$($??null);return O$(()=>{if(!U)return;if(HU.has(H)){z(HU.get(H));return}let T=$U.get(H);if(!T)T=fetch(U+`api/support/${Z}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return HU.set(H,G),$U.delete(H),G}).catch((G)=>{throw $U.delete(H),G}),$U.set(H,T);let I=!1;return T.then((G)=>{if(!I)z(G)}).catch(()=>{}),()=>{I=!0}},[U,Z,H]),J}var W$=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let H of Z){let $=H.indexOf("=");if(($===-1?H:H.slice(0,$)).trim()===U){let z=$===-1?"":H.slice($+1).trim();try{return decodeURIComponent(z)}catch{return z}}}return null},D$={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,Z){return(U==="local"?window.localStorage:window.sessionStorage).getItem(Z)},readCookie:W$,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let H=Z[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},XZ=D$;var V$={};function m(){return V$}var YZ=new Map;var BZ=(U)=>{return YZ.has(U)?YZ.get(U):null};var qZ,_$={isClient(){return!0},readSid(){return qZ},setSid(U){qZ=U},readWebStorage(U,Z){let H=m(),$=U==="local"?H.storage:H.sessionStorage;return $?$.getItem(Z):null},async readWebStorageAsync(U,Z){let H=m(),$=U==="local"?H.asyncStorage:H.asyncSessionStorage;if($)return $.getItem(Z);let J=U==="local"?H.storage:H.sessionStorage;return J?J.getItem(Z):null},readCookie(U){let Z=m();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=m();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=m();return Z.getInput?Z.getInput(U):BZ(U)},submitGlobalForm(){m().submitForm?.()}},OZ=_$;var F$=typeof navigator<"u"&&navigator.product==="ReactNative",K$=F$?OZ:XZ,R=K$;var l=K("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function QZ(){l.resolve?.()}function LU(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!l.promise)l.promise=new Promise((U)=>{l.resolve=()=>{U()}});return l.promise}var M$=({children:U})=>{let Z=A$(k),H=r(),$=zU(H,"socketIO"),J=(z)=>{if(R.isClient())R.setSid(z.sid),QZ(),console.log(`SocketIO initialized: ${R.readSid()}`)};return P$(()=>{if(!Z)return;let z=()=>{console.log("SocketIO connected")},T=(I)=>{console.log(`SocketIO disconnected: ${I}`),Z.connect()};if($)Z.on("pieinit",J),Z.on("connect",z),Z.on("disconnect",T),Z.connect();return()=>{if($)Z.off("pieinit",J),Z.off("connect",z),Z.off("disconnect",T),Z.disconnect()}},[Z,$]),U},JU=M$;import{useContext as R$,useEffect as L$}from"react";var w$=({children:U})=>{let Z=R$(y),H=r(),$=zU(H,"centrifuge");return L$(()=>{if(!Z)return;let J=()=>{console.log("Centrifuge connected")},z=(T)=>{console.log("Centrifuge disconnected:",T)};if($)Z.on("connected",J),Z.on("disconnected",z),Z.connect();return()=>{if($)Z.disconnect()}},[Z,$]),U},TU=w$;import{createAxiosDateTransformer as C$}from"axios-date-transformer";import{jsx as N$}from"react/jsx-runtime";function WZ(U,Z,H){if(!Z)return H;let $=U.replace(/^\//,""),J=Z[$];if(!J)return H;return N$(DU,{uiConfig:J})}import{jsx as L,Fragment as k$}from"react/jsx-runtime";var x$=({location:U,fallback:Z,piecache:H,onError:$,queryOptions:J,disableGlobalForm:z})=>{let T=d(),I=t(),G=x(),X=i(()=>C$({baseURL:T||""}),[T]),D=i(()=>g(),[]),Q=i(()=>T?e(T):null,[T]),V=i(()=>T?a(T,I):null,[T,I]),{data:Y,isLoading:q,error:W}=f$({queryKey:["uiConfig",U.pathname+U.search,T],enabled:!!T,queryFn:async()=>{let O=new URLSearchParams(U.search);O.set("__pieroot","web");let A="/api/content"+U.pathname+"?"+O.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",A);let _=await X.get(A,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",_.data);return _.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(O)=>Math.min(1000*2**O,30000),...J}),B=WZ(U.pathname,H,Z);if(!T)return B??null;if(G)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",I),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!H);if(W){if(G)console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data});return $?.(W),B}if(q||!Y){if(G)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!Y});return B}if(G)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return L(S.Provider,{value:D,children:L(k.Provider,{value:Q,children:L(y.Provider,{value:V,children:L(N.Provider,{value:Z??L(k$,{}),children:L(JU,{children:L(TU,{children:z?L(w,{uiConfig:Y}):L("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:L(w,{uiConfig:Y})})})})})})})})},y$=(U)=>{let Z=i(()=>new E$,[]),H=U.queryClient??Z;return L(C.Provider,{value:U.onNavigate,children:L(p.Provider,{value:U.config,children:L(b.Provider,{value:U.onError,children:L(j$,{client:H,children:L(x$,{...U})})})})})},wU=y$;import{useMemo as NU,useState as S$}from"react";import{QueryClient as b$,QueryClientProvider as v$}from"@tanstack/react-query";import{jsx as j,Fragment as p$}from"react/jsx-runtime";var m$=({location:U,fallback:Z,children:H,disableGlobalForm:$})=>{let J=d(),z=t(),T=x(),I=NU(()=>g(),[]),G=NU(()=>J?e(J):null,[J]),X=NU(()=>J?a(J,z):null,[J,z]);if(T)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!Z);return j(S.Provider,{value:I,children:j(k.Provider,{value:G,children:j(y.Provider,{value:X,children:j(N.Provider,{value:Z??j(p$,{}),children:j(JU,{children:j(TU,{children:$?H:j("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:H})})})})})})})},h$=(U)=>{let[Z]=S$(()=>new b$),H=U.queryClient??Z;return j(C.Provider,{value:U.onNavigate,children:j(p.Provider,{value:U.config,children:j(b.Provider,{value:U.onError,children:j(v$,{client:H,children:j(m$,{...U})})})})})},g$=h$;import{useMemo as c$}from"react";import{jsx as DZ}from"react/jsx-runtime";var u$=DZ("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),d$=({apiServer:U,pathname:Z="/",search:H="",centrifugeServer:$,fallback:J,enableRenderingLog:z=!1})=>{let T=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",I=c$(()=>({apiServer:T,centrifugeServer:$,enableRenderingLog:z,pageProcessor:"web"}),[T,$,z]);return DZ(wU,{location:{pathname:Z,search:H},config:I,fallback:J??u$,onNavigate:(X)=>{if(typeof window<"u")window.history.pushState(null,"",X)}})},o$=d$;import{useMemo as l$}from"react";var i$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],s$=new Set(["telegram:cloud","telegram:secure"]),GU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of i$){let H=Z+":";if(U.startsWith(H))return{source:Z,key:U.slice(H.length)}}return{source:"dom",key:U}},VZ=(U,Z=!1)=>{let{source:H,key:$}=GU(U);if(H==="sid"){let z=R.readSid();if(!z)throw Error("SocketIO isn't initialized properly");return[z]}if(H==="localStorage"||H==="sessionStorage")try{let z=R.readWebStorage(H==="localStorage"?"local":"session",$);if(z===null){if(Z)console.warn(`No ${H} value found for key ${$}`);return[]}return[z]}catch(z){if(Z)console.warn(`Failed to read ${H} key ${$}:`,z);return[]}if(H==="cookie"){let z=R.readCookie($);if(z===null){if(Z)console.warn(`No cookie found for key ${$}`);return[]}return[z]}if(H==="url"){let z=R.readUrlParams($);if(!z.length&&Z)console.warn(`No URL query param found for key ${$}`);return z}if(s$.has(H)){if(Z)console.warn(`Source ${H} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let J=R.readDomInput($);if(J===null){if(Z)console.warn(`No input found with name ${$}`);return[]}return J},n$=(U,Z,H)=>{let $=window.Telegram?.WebApp,J=U==="telegram:cloud"?$?.CloudStorage:$?.SecureStorage,z=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!J){if(H)console.warn(`${z} is not available`);return Promise.resolve([])}return new Promise((T)=>{try{J.getItem(Z,(I,G)=>{if(I){if(H)console.warn(`Failed to read ${z} key ${Z}:`,I);T([]);return}if(G==null||G===""){if(H)console.warn(`No ${z} value found for key ${Z}`);T([]);return}T([G])})}catch(I){if(H)console.warn(`Failed to read ${z} key ${Z}:`,I);T([])}})},_Z=async(U,Z=!1)=>{let{source:H,key:$}=GU(U);if(H==="telegram:cloud"||H==="telegram:secure")return n$(H,$,Z);if((H==="localStorage"||H==="sessionStorage")&&R.readWebStorageAsync)try{let J=await R.readWebStorageAsync(H==="localStorage"?"local":"session",$);if(J===null){if(Z)console.warn(`No ${H} value found for key ${$}`);return[]}return[J]}catch(J){if(Z)console.warn(`Failed to read ${H} key ${$}:`,J);return[]}return VZ(U,Z)},r$=(U,Z={},H=[],$,J)=>{let z=J?.renderingLogEnabled??!1,T=J?.timeout,I=J?.retryPolicy,G=I?.maxRetries??0,X=I?.baseDelay??1000,D=I?.retryOn??[502,503,504];if(z)console.log("Registering AJAX: ",$,Z,H);return async(Q={})=>{if(!R.isClient()){if(z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=J?.apiServer;if(!V){if(z)console.warn("AJAX skipped: apiServer is missing");return}if(!$||!U){if(z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(H.includes("sid"))await LU();let Y=new FormData;for(let[B,O]of Object.entries({...Z,...Q}))Y.append(B,O);for(let B of H){let{key:O}=GU(B);for(let A of await _Z(B,z))Y.append(O,A)}let q=V+"api/ajax_content"+$;U(null);let W;for(let B=0;B<=G;B++){if(B>0){let _=X*2**(B-1);if(z)console.log(`AJAX retry ${B}/${G} after ${_}ms`);await new Promise((P)=>setTimeout(P,_))}let O=T!=null?new AbortController:null,A=O&&setTimeout(()=>O.abort(),T);try{let _=await fetch(q,{method:"POST",body:Y,signal:O?.signal});if(A)clearTimeout(A);if(!_.ok&&D.includes(_.status)&&B<G){W=Error(`HTTP ${_.status}`);continue}let s=(_.headers.get("content-type")||"").includes("application/json");if(!!_.body?.getReader&&!s){let n=_.body.getReader(),FZ=new TextDecoder,h="";while(!0){let{done:IU,value:KZ}=await n.read();if(IU)break;h+=FZ.decode(KZ,{stream:!0});let EU=h.split(`
3
+ `);h=EU.pop()??"";for(let AZ of EU){let XU=AZ.trim();if(!XU)continue;try{let PZ=JSON.parse(XU);U([PZ])}catch{if(z)console.warn("Failed to parse streamed line:",XU)}}}if(h.trim())try{let IU=JSON.parse(h);U([IU])}catch{if(z)console.warn("Failed to parse final streamed line:",h)}return{}}else{let n=await _.json();return U(n),n}}catch(_){if(A)clearTimeout(A);if(W=_,B<G)continue;if(z)console.error("AJAX request failed:",_);return U(null),_}}if(z)console.error("AJAX request failed after retries:",W);return U(null),W}},t$=(U,Z={},H=[],$,J)=>{let{apiServer:z,enableRenderingLog:T}=u(),I=JSON.stringify(Z),G=JSON.stringify(H),X=JSON.stringify(J);return l$(()=>r$(U,Z,H,$,{apiServer:z,renderingLogEnabled:T,timeout:J?.timeout,retryPolicy:J?.retryPolicy}),[U,I,G,$,z,T,X])};import{clsx as a$}from"clsx";import{twMerge as e$}from"tailwind-merge";function Uz(...U){return e$(a$(U))}var Zz=()=>{R.submitGlobalForm()};var Hz=(U,Z)=>`${U}${BU}${Z}`;export{kZ as usePieEmit,t$ as useAjaxSubmit,uZ as unregisterComponent,QU as trackLazy,Zz as submitGlobalForm,f as registry,F as registerPieComponent,cZ as registerMultipleComponents,_Z as readAjaxKeyAsync,VZ as readAjaxKey,mU as preloadComponent,sZ as prefetchLazyComponents,Hz as pieName,GU as parseDepName,dZ as hasComponent,iZ as getRegistrySize,o as getRegistryEntry,vU as getLazyComponentNames,g as getEmitter,oZ as getComponentMeta,lZ as getAllRegisteredComponents,Uz as cn,WH as UnionCard,E as UIRendererContext,DU as UILoading,w as UI,k as SocketIOContext,U$ as SessionStorageCard,qH as SequenceCard,wU as PieRoot,o$ as PiePreviewRoot,p as PieConfigContext,M as PieCard,g$ as PieBaseRoot,BU as PIEBREAK,q$ as OneOfCard,S as MittContext,tH as IOEventsCard,EH as HiddenCard,RH as HTMLEmbedCard,N as FallbackContext,$$ as DeviceStorageCard,y as CentrifugeIOContext,X$ as BoxCard,SH as AutoRedirectCard,G$ as AjaxGroupCard};
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- var wZ=Object.create;var{getPrototypeOf:LZ,defineProperty:e,getOwnPropertyNames:TU,getOwnPropertyDescriptor:NZ}=Object,JU=Object.prototype.hasOwnProperty;var BU=(H,U,Z)=>{Z=H!=null?wZ(LZ(H)):{};let $=U||!H||!H.__esModule?e(Z,"default",{value:H,enumerable:!0}):Z;for(let T of TU(H))if(!JU.call($,T))e($,T,{get:()=>H[T],enumerable:!0});return $},zU=new WeakMap,fZ=(H)=>{var U=zU.get(H),Z;if(U)return U;if(U=e({},"__esModule",{value:!0}),H&&typeof H==="object"||typeof H==="function")TU(H).map(($)=>!JU.call(U,$)&&e(U,$,{get:()=>H[$],enumerable:!(Z=NZ(H,$))||Z.enumerable}));return zU.set(H,U),U};var EZ=(H,U)=>{for(var Z in U)e(H,Z,{get:U[Z],enumerable:!0,configurable:!0,set:($)=>U[Z]=()=>$})};var D$={};EZ(D$,{usePieEmit:()=>DU,useAjaxSubmit:()=>WZ,unregisterComponent:()=>AU,trackLazy:()=>VH,submitGlobalForm:()=>_Z,registry:()=>j,registerPieComponent:()=>_,registerMultipleComponents:()=>MU,readAjaxKeyAsync:()=>ZU,readAjaxKey:()=>UU,preloadComponent:()=>dH,prefetchLazyComponents:()=>NU,pieName:()=>KZ,parseDepName:()=>IH,hasComponent:()=>PU,getRegistrySize:()=>LU,getRegistryEntry:()=>l,getLazyComponentNames:()=>uH,getEmitter:()=>p,getComponentMeta:()=>RU,getAllRegisteredComponents:()=>wU,cn:()=>FZ,UnionCard:()=>mU,UIRendererContext:()=>E,UILoading:()=>MH,UI:()=>L,SocketIOContext:()=>k,SessionStorageCard:()=>tU,SequenceCard:()=>SU,PieRoot:()=>vH,PiePreviewRoot:()=>qZ,PieConfigContext:()=>h,PieCard:()=>A,PieBaseRoot:()=>XZ,PIEBREAK:()=>QH,OneOfCard:()=>JZ,MittContext:()=>x,IOEventsCard:()=>nU,HiddenCard:()=>dU,HTMLEmbedCard:()=>gU,FallbackContext:()=>f,DeviceStorageCard:()=>eU,CentrifugeIOContext:()=>y,BoxCard:()=>$Z,AutoRedirectCard:()=>iU,AjaxGroupCard:()=>UZ});module.exports=fZ(D$);var S=require("react");var XH=require("react");var pH=globalThis,K=(H,U)=>{let Z=Symbol.for(H);if(!(Z in pH))pH[Z]=U();return pH[Z]};var h=K("@swarm.ing/pieui:context:pieConfig",()=>XH.createContext(null)),HH=()=>{let H=XH.useContext(h);if(!H)throw Error("usePieConfig must be used within PieConfigProvider");return H},UH=()=>{let{apiServer:H}=HH();return H},YH=UH,qH=()=>{let{centrifugeServer:H}=HH();return H};var v=()=>{let{enableRenderingLog:H}=HH();return H},IU=v;var QH="__piedemo__";var GU=require("react"),gH=require("centrifuge");var OU=K("@swarm.ing/pieui:centrifuge-cache",()=>new Map),WH=(H,U)=>{if(!U)return null;let Z=`${H}::${U}`,$=OU.get(Z);if($)return $;async function T(){let J=await fetch(H+"api/centrifuge/gen_token");if(!J.ok){if(J.status===403)throw new gH.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let z=new gH.Centrifuge(U,{getToken:T});return OU.set(Z,z),z},CZ=K("@swarm.ing/pieui:context:centrifuge",()=>GU.createContext(null)),y=CZ;var YU=require("socket.io-client"),qU=require("react");var XU=K("@swarm.ing/pieui:socket-cache",()=>new Map),DH=(H)=>{let U=XU.get(H);if(U)return U;let Z=YU.io(H,{autoConnect:!1,transports:["websocket"]});return XU.set(H,Z),Z},jZ=K("@swarm.ing/pieui:context:socket",()=>qU.createContext(null)),k=jZ;var QU=BU(require("mitt")),d=require("react");function p(){return K("@swarm.ing/pieui:mitt-emitter",()=>QU.default())}var WU=K("@swarm.ing/pieui:context:mitt",()=>d.createContext(null));function DU(H){let U=d.useContext(WU);return d.useCallback((Z,$)=>{(U??p()).emit(`pie${Z}_${H}`,$)},[H,U])}var x=WU;var o=require("react/jsx-runtime"),yZ=({card:H,data:U,children:Z,useSocketioSupport:$=!1,useCentrifugeSupport:T=!1,useMittSupport:z=!1,centrifugeChannel:J=void 0,methods:B=void 0,stored:I=void 0})=>{let O=IU(),D=S.useRef(B);if(D.current=B,O)console.log("[PieCard] Rendering card:",H),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:$,centrifuge:T,mitt:z,centrifugeChannel:J}),console.log("[PieCard] Methods:",B?Object.keys(B):"none"),console.log("[PieCard] Has children:",!!Z);let Q=S.useContext(k),V=S.useContext(y),G=S.useContext(x);if(S.useEffect(()=>{if(!Q||!$||!D.current||!U.name){if(O&&$)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!Q,useSocketioSupport:$,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}`;if(O)console.log(`[PieCard] Socket.IO registering event: ${q}`);let M=(F)=>{D.current?.[X]?.(F)};return Q.on(q,M),[q,M]});return()=>{W.forEach(([X,q])=>{if(O)console.log(`[PieCard] Socket.IO unregistering event: ${X}`);Q.off(X,q)})}},[Q,U.name,$]),S.useEffect(()=>{if(!V||!T||!J||!U.name){if(O&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}_${J}`;if(O)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let M=V.newSubscription(q);return M.on("publication",(F)=>{if(O)console.log(`[PieCard] Centrifuge received data on ${q}:`,F.data);D.current?.[X]?.(F.data)}),M.subscribe(),M});return()=>{W.forEach((X)=>{if(O)console.log("[PieCard] Centrifuge unsubscribing from channel");X.unsubscribe(),V.removeSubscription(X)})}},[V,J,U.name,T]),S.useEffect(()=>{if(!G||!z||!U.name){if(O&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!G,useMittSupport:z,hasMethods:!!D.current,hasDataName:!!U?.name});return}let Y=Object.keys(D.current??{}),W={};return Y.forEach((X)=>{let q=`pie${X}_${U.name}`,M=(F)=>{if(O)console.log(`[PieCard] Mitt registering event: ${q}`);D.current?.[X]?.(F)};W[q]=M,G.on(q,M)}),()=>{Object.entries(W).forEach(([X,q])=>{if(O)console.log(`[PieCard] Mitt unregistering event: ${X}`);G.off(X,q)})}},[G,U.name,z]),O)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return o.jsxs(o.Fragment,{children:[o.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(I)}),Z]});return Z},A=yZ;var VU=require("react"),g=new Map;function FU(H,U){return U.catch(()=>{if(g.get(H)===U)g.delete(H)}),g.set(H,U),U}function VH(H,U){return VU.lazy(()=>{if(g.has(U))return g.get(U);return FU(U,H().then((Z)=>Z))})}var _U=async(H,U)=>{if(!U)return;if(g.has(H))return g.get(H);return FU(H,U().then((Z)=>Z))};var j=K("@swarm.ing/pieui:component-registry",()=>new Map),kZ=(H)=>{if(!H.name)throw Error("Component registration requires a name");if(!H.component&&!H.loader)throw Error(`Component "${H.name}" requires component or loader`);let U={name:H.name,component:H.component,loader:H.loader,metadata:H.metadata,fallback:H.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=VH(U.loader,H.name),U.isLazy=!0;return U};function _(H){let U=kZ(H);return j.set(U.name,U),U.component}var MU=(H)=>{H.forEach((U)=>_(U))},AU=(H)=>{j.delete(H)},PU=(H)=>{return j.has(H)},RU=(H)=>{return j.get(H)?.metadata},l=(H)=>{return j.get(H)},wU=()=>{return Array.from(j.keys())},LU=()=>{return j.size},uH=()=>Array.from(j.values()).filter((H)=>H.isLazy&&typeof H.loader==="function").map((H)=>H.name),dH=(H)=>{let U=j.get(H);if(!U?.isLazy||typeof U.loader!=="function")return;return _U(H,U.loader)},KU=!1,NU=()=>{if(KU||typeof window>"u")return;KU=!0;let H=navigator.connection;if(H?.saveData)return;if(H?.effectiveType&&["slow-2g","2g"].includes(H.effectiveType))return;let U=uH(),Z="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),$=(T)=>{if(T>=U.length)return;Z(()=>{Promise.resolve().then(()=>dH(U[T])).catch(()=>{}).finally(()=>$(T+1))})};$(0)};var ZH=require("react");var fU=require("react");var FH=require("react/jsx-runtime"),xZ=K("@swarm.ing/pieui:context:fallback",()=>fU.createContext(FH.jsx(FH.Fragment,{}))),f=xZ;var EU=require("react");var SZ=K("@swarm.ing/pieui:context:lazyError",()=>EU.createContext(void 0)),m=SZ;var _H=require("react"),CU=require("react/jsx-runtime"),bZ=2,vZ=400;class i extends _H.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(H){if(this.props.onError?.(H),this.state.attempt<bZ){let U=vZ*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},U)}}componentDidUpdate(H){if(H.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return CU.jsx(_H.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var KH=require("react/jsx-runtime");function mZ({uiConfig:H,setUiAjaxConfiguration:U}){let Z=ZH.useContext(f),$=ZH.useContext(m),T=v();if(T)console.log("[UI] Rendering component:",H.card),console.log("[UI] Component data:",H.data),console.log("[UI] Component content:",H.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let z=l(H.card);if(!z?.component){if(T)console.warn(`[UI] Component not found in registry: ${H.card}`),console.log("[UI] Returning fallback component");return Z}if(T)console.log("[UI] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let J=z.component,B=KH.jsx(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U});if(z.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",z.name);return KH.jsx(i,{name:z.name,fallback:z.fallback?KH.jsx(z.fallback,{}):Z,onError:$,children:B})}if(T)console.log("[UI] Rendering component directly:",z.name);return B}var L=ZH.memo(mZ);var oH=require("react");var jU=require("react");var cZ=K("@swarm.ing/pieui:context:uiRenderer",()=>jU.createContext(null)),E=cZ;var $H=require("react/jsx-runtime");function yU({uiConfig:H,setUiAjaxConfiguration:U}){let Z=oH.useContext(f),$=oH.useContext(m),T=v();if(T)console.log("[UILoading] Rendering fallback for:",H.card),console.log("[UILoading] Component data:",H.data),console.log("[UILoading] Component content:",H.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let z=l(H.card);if(!z?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${H.card}`),console.log("[UILoading] Returning fallback component");return Z}if(T)console.log("[UILoading] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata,hasFallback:!!z.fallback});if(z.fallback){if(T)console.log("[UILoading] Rendering fallback for:",z.name);let I=z.fallback;return $H.jsx(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",z.name);let J=z.component,B=$H.jsx(E.Provider,{value:yU,children:$H.jsx(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U})});if(z.isLazy)return $H.jsx(i,{name:z.name,fallback:Z,onError:$,children:B});return B}var MH=yU;var kU=require("react");var AH=require("react/jsx-runtime"),hZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$,sx:T}=H,z=kU.useContext(E)??L;return AH.jsx(A,{card:$,data:H,children:AH.jsx("div",{style:T,id:$,children:U.map((J,B)=>{return AH.jsx(z,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},xU=hZ;var SU=_({name:"SequenceCard",component:xU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var bU=require("react");var lH=require("react/jsx-runtime"),pZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$}=H,T=bU.useContext(E)??L;return lH.jsx(A,{card:$,data:H,children:U.map((z,J)=>{return lH.jsx(T,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${J}`)})})},vU=pZ;var mU=_({name:"UnionCard",component:vU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var PH=require("react"),cU=BU(require("html-react-parser"));var C=require("react");function gZ(){let H=new AudioContext,U=H.createOscillator(),Z=U.connect(H.createMediaStreamDestination());U.start();let $=Z.stream.getAudioTracks()[0];return $.enabled=!1,$}function iH(H=null,U){let[Z,$]=C.useState(!1),T=C.useRef(null),z=C.useRef(null),J=C.useRef(null),B=C.useCallback(async(Q,V=!0)=>{if(T.current)I();let G=new RTCPeerConnection;if(G.onconnectionstatechange=()=>{if(G.connectionState==="connected")$(!0);else if(["disconnected","failed","closed"].includes(G.connectionState))$(!1)},G.ontrack=(P)=>{if(H)H.srcObject=P.streams[0]},V){let P=await navigator.mediaDevices.getUserMedia({audio:!0});G.addTrack(P.getTracks()[0],P)}else{let P=gZ();G.addTrack(P)}let Y=G.createDataChannel("oai-events");z.current=Y,J.current=new Promise((P)=>{Y.addEventListener("open",()=>{P()})});let W=await G.createOffer();await G.setLocalDescription(W);let F=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:W.sdp,headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/sdp"}})).text();await G.setRemoteDescription({type:"answer",sdp:F}),T.current=G,await J.current},[H]),I=C.useCallback(()=>{let Q=z.current;if(Q)Q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),$(!1),T.current=null,z.current=null,J.current=null},[H]),O=C.useCallback((Q)=>{let V=z.current;if(!V){console.error("Data channel is not ready",Q);return}let G=new Date().toLocaleTimeString();if(Q.event_id=Q.event_id||crypto.randomUUID(),V.send(JSON.stringify(Q)),!Q.timestamp)Q.timestamp=G;U?.(Q)},[U,H]),D=C.useCallback((Q)=>{if(!z.current){console.error("Data channel is not ready");return}let G=()=>{O({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Q}]}}),O({type:"response.create"})};if(J.current)J.current.then(G);else G()},[U,H]);return C.useEffect(()=>{let Q=z.current;if(!Q)return;let V=(G)=>{let Y=JSON.parse(G.data);if(!Y.timestamp)Y.timestamp=new Date().toLocaleTimeString();U?.(Y)};return Q.addEventListener("message",V),()=>{Q.removeEventListener("message",V)}},[U,H]),{isSessionActive:Z,startSession:B,stopSession:I,sendTextMessage:D}}var pU=require("react/jsx-runtime"),uZ=({data:H})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:$,useMittSupport:T,centrifugeChannel:z}=H,[J,B]=PH.useState(U),{isSessionActive:I,startSession:O,sendTextMessage:D}=iH(null,(Y)=>{if(console.log(Y.type,Y.type==="response.output_text.delta"&&Y.delta),Y.type==="response.output_text.delta"&&Y.delta)B((W)=>W+Y.delta)});return PH.useEffect(()=>{B(U)},[U]),pU.jsx(A,{card:"HTMLEmbedCard",data:H,methods:{update:(Y)=>{B(Y.value)},generateUsingAI:async(Y)=>{try{if(!I&&Y.token)await O(Y.token,!1);D(Y.prompt)}catch(W){console.error("Failed to generate using AI",W)}},initializeAI:async(Y)=>{if(!I&&Y.token)await O(Y.token,!1)}},useCentrifugeSupport:$,useSocketioSupport:Z,useMittSupport:T,centrifugeChannel:z,children:cU.default(J)})},hU=uZ;var gU=_({name:"HTMLEmbedCard",component:hU,metadata:{author:"Swarm.ing"}});var RH=require("react");var sH=require("react/jsx-runtime"),dZ=({data:H})=>{let{name:U,value:Z,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J}=H,[B,I]=RH.useState(Z);return RH.useEffect(()=>{I(Z)},[Z]),sH.jsx(A,{card:"HiddenCard",data:H,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J,methods:{update:({value:O})=>{I(O)}},children:sH.jsx("input",{type:"hidden",id:U,name:U,value:B})})},uU=dZ;var dU=_({name:"HiddenCard",component:uU,metadata:{author:"Swarm.ing"}});var zH=require("react");var oU=require("react");var oZ=K("@swarm.ing/pieui:context:navigate",()=>oU.createContext(void 0)),b=oZ;var wH=require("react/jsx-runtime"),lZ=({data:H})=>{let{url:U}=H,Z=zH.useContext(b),$=zH.useContext(f);return zH.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),wH.jsx(wH.Fragment,{children:$})},lU=lZ;var iU=_({name:"AutoRedirectCard",component:lU,metadata:{author:"Swarm.ing"}});var c=require("react-toastify"),LH=require("react-toastify");var n=require("react");var s=require("react/jsx-runtime"),iZ={bounce:c.Bounce,slide:c.Slide,zoom:c.Zoom,flip:c.Flip},sZ=(H)=>{let U={...H,type:H.alertType,transition:H.transition?iZ[H.transition]:void 0,position:H.position??"bottom-right",autoClose:H.autoClose??3000,style:{backgroundColor:"black",...H.sx}};LH.toast(H.message,U)},nZ=(H)=>{console.log("Log event",H)},rZ=(H)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(H.title,{body:H.message??H.subtitle,icon:H.icon,silent:H.silent})}catch($){console.error("[IOEventsCard] Failed to show notification",$)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then(($)=>{if($==="granted")U()})},tZ=({data:H})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:$,centrifugeChannel:T}=H,z=n.useContext(b),J=n.useRef(z);J.current=z;let B=n.useMemo(()=>({alert:sZ,log:nZ,push:rZ,redirect:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()},reload:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()}}),[]);return s.jsx(s.Fragment,{children:s.jsx(A,{card:"IOEventsCard",data:H,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:$,centrifugeChannel:T,methods:B,children:s.jsx(LH.ToastContainer,{})})})},sU=tZ;var nU=_({name:"IOEventsCard",component:sU,metadata:{author:"Swarm.ing"}});var TH=require("react");var nH=require("react/jsx-runtime"),aZ=({data:H})=>{let{name:U,key:Z,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=TH.useState($);return TH.useEffect(()=>{O($)},[$]),TH.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(Z,I)},[Z,I]),nH.jsx(A,{card:"SessionStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{sessionStorage.removeItem(Z),O("")}},children:nH.jsx("input",{type:"hidden",id:U,name:U,value:I})})},rU=aZ;var tU=_({name:"SessionStorageCard",component:rU,metadata:{author:"PieData"}});var JH=require("react");var rH=require("react/jsx-runtime"),eZ=({data:H})=>{let{name:U,key:Z,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=JH.useState($);return JH.useEffect(()=>{O($)},[$]),JH.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(Z,I)},[Z,I]),rH.jsx(A,{card:"DeviceStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{localStorage.removeItem(Z),O("")}},children:rH.jsx("input",{type:"hidden",id:U,name:U,value:I})})},aU=eZ;var eU=_({name:"DeviceStorageCard",component:aU,metadata:{author:"PieData"}});var N=require("react");var tH=require("react/jsx-runtime"),H$=({data:H,content:U})=>{let{useLoader:Z,noReturn:$,returnType:T,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I}=H,O=N.useContext(f),D=N.useContext(E)??L,[Q,V]=N.useState(!1),[G,Y]=N.useState(null),W=N.useRef(U),X=N.useContext(x),q=N.useCallback((P)=>{if(P===null)V(!0);else if(V(!1),!$)W.current=P;if(!$)Y(P)},[$]),M=N.useCallback((P)=>{W.current=P.content,Y(P.content)},[]),F=N.useCallback((P)=>{if(P===null)V(!0);else if(V(!1),!$)for(let OH of P)X?.emit(OH.name,OH.data)},[$,X]);if(N.useEffect(()=>{Y(U),V(!1)},[U]),!G&&Z)return O;return tH.jsx(A,{card:"AjaxGroupCard",data:H,methods:{changeContent:M},useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I,children:tH.jsx(D,{uiConfig:G??W.current,setUiAjaxConfiguration:T==="events"?F:q})})},HZ=H$;var UZ=_({name:"AjaxGroupCard",component:HZ,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var aH=require("react");var NH=require("react/jsx-runtime"),U$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$,url:T,sx:z}=H,J=aH.useContext(b),B=aH.useContext(E)??L;return NH.jsx(A,{card:$,data:H,children:NH.jsx("div",{style:z,id:$,onClick:(O)=>{if(T)if(O.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:NH.jsx(B,{setUiAjaxConfiguration:Z,uiConfig:U})})})},ZZ=U$;var $Z=_({name:"BoxCard",component:ZZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var zZ=require("react");var fH=require("react/jsx-runtime"),Z$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$,sx:T}=H,z=zZ.useContext(E)??L;return fH.jsx(A,{card:$,data:H,children:fH.jsx("div",{style:T,id:$,children:U.map((J,B)=>{return fH.jsx(z,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},TZ=Z$;var JZ=_({name:"OneOfCard",component:TZ,metadata:{author:"Swarm.ing",description:"Different variants"}});var r=require("react"),t=require("@tanstack/react-query");var kH=require("react");var jH=require("react"),EH=new Map,CH=new Map;function yH(H,U){let Z=`${H}::${U}`,$=H?EH.get(Z):void 0,[T,z]=jH.useState($??null);return jH.useEffect(()=>{if(!H)return;if(EH.has(Z)){z(EH.get(Z));return}let J=CH.get(Z);if(!J)J=fetch(H+`api/support/${U}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return EH.set(Z,I),CH.delete(Z),I}).catch((I)=>{throw CH.delete(Z),I}),CH.set(Z,J);let B=!1;return J.then((I)=>{if(!B)z(I)}).catch(()=>{}),()=>{B=!0}},[H,U,Z]),T}var BH=K("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function BZ(){BH.resolve?.()}function eH(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!BH.promise)BH.promise=new Promise((H)=>{BH.resolve=()=>{H()}});return BH.promise}var $$=({children:H})=>{let U=kH.useContext(k),Z=YH(),$=yH(Z,"socketIO"),T=(z)=>{if(typeof window<"u")window.sid=z.sid,BZ(),console.log(`SocketIO initialized: ${window.sid}`)};return kH.useEffect(()=>{if(!U)return;let z=()=>{console.log("SocketIO connected")},J=(B)=>{console.log(`SocketIO disconnected: ${B}`),U.connect()};if($)U.on("pieinit",T),U.on("connect",z),U.on("disconnect",J),U.connect();return()=>{if($)U.off("pieinit",T),U.off("connect",z),U.off("disconnect",J),U.disconnect()}},[U,$]),H},xH=$$;var SH=require("react");var z$=({children:H})=>{let U=SH.useContext(y),Z=YH(),$=yH(Z,"centrifuge");return SH.useEffect(()=>{if(!U)return;let T=()=>{console.log("Centrifuge connected")},z=(J)=>{console.log("Centrifuge disconnected:",J)};if($)U.on("connected",T),U.on("disconnected",z),U.connect();return()=>{if($)U.disconnect()}},[U,$]),H},bH=z$;var GZ=require("axios-date-transformer");var OZ=require("react/jsx-runtime");function IZ(H,U,Z){if(!U)return Z;let $=H.replace(/^\//,""),T=U[$];if(!T)return Z;return OZ.jsx(MH,{uiConfig:T})}var R=require("react/jsx-runtime"),T$=({location:H,fallback:U,piecache:Z,onError:$,queryOptions:T,disableGlobalForm:z})=>{let J=UH(),B=qH(),I=v(),O=r.useMemo(()=>GZ.createAxiosDateTransformer({baseURL:J||""}),[J]),D=r.useMemo(()=>p(),[]),Q=r.useMemo(()=>J?DH(J):null,[J]),V=r.useMemo(()=>J?WH(J,B):null,[J,B]),{data:G,isLoading:Y,error:W}=t.useQuery({queryKey:["uiConfig",H.pathname+H.search,J],enabled:!!J,queryFn:async()=>{let q=new URLSearchParams(H.search);q.set("__pieroot","web");let M="/api/content"+H.pathname+"?"+q.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",M);let F=await O.get(M,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",F.data);return F.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...T}),X=IZ(H.pathname,Z,U);if(!J)return X??null;if(I)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",B),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!Z);if(W){if(I)console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data});return $?.(W),X}if(Y||!G){if(I)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!G});return X}if(I)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return R.jsx(x.Provider,{value:D,children:R.jsx(k.Provider,{value:Q,children:R.jsx(y.Provider,{value:V,children:R.jsx(f.Provider,{value:U??R.jsx(R.Fragment,{}),children:R.jsx(xH,{children:R.jsx(bH,{children:z?R.jsx(L,{uiConfig:G}):R.jsx("form",{id:"piedata_global_form",action:J+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:R.jsx(L,{uiConfig:G})})})})})})})})},J$=(H)=>{let U=r.useMemo(()=>new t.QueryClient,[]),Z=H.queryClient??U;return R.jsx(b.Provider,{value:H.onNavigate,children:R.jsx(h.Provider,{value:H.config,children:R.jsx(m.Provider,{value:H.onError,children:R.jsx(t.QueryClientProvider,{client:Z,children:R.jsx(T$,{...H})})})})})},vH=J$;var a=require("react"),mH=require("@tanstack/react-query");var w=require("react/jsx-runtime"),B$=({location:H,fallback:U,children:Z,disableGlobalForm:$})=>{let T=UH(),z=qH(),J=v(),B=a.useMemo(()=>p(),[]),I=a.useMemo(()=>T?DH(T):null,[T]),O=a.useMemo(()=>T?WH(T,z):null,[T,z]);if(J)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!U);return w.jsx(x.Provider,{value:B,children:w.jsx(k.Provider,{value:I,children:w.jsx(y.Provider,{value:O,children:w.jsx(f.Provider,{value:U??w.jsx(w.Fragment,{}),children:w.jsx(xH,{children:w.jsx(bH,{children:$?Z:w.jsx("form",{id:"piedata_global_form",action:T+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},I$=(H)=>{let[U]=a.useState(()=>new mH.QueryClient),Z=H.queryClient??U;return w.jsx(b.Provider,{value:H.onNavigate,children:w.jsx(h.Provider,{value:H.config,children:w.jsx(m.Provider,{value:H.onError,children:w.jsx(mH.QueryClientProvider,{client:Z,children:w.jsx(B$,{...H})})})})})},XZ=I$;var YZ=require("react");var HU=require("react/jsx-runtime"),O$=HU.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),G$=({apiServer:H,pathname:U="/",search:Z="",centrifugeServer:$,fallback:T,enableRenderingLog:z=!1})=>{let J=H??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",B=YZ.useMemo(()=>({apiServer:J,centrifugeServer:$,enableRenderingLog:z,pageProcessor:"web"}),[J,$,z]);return HU.jsx(vH,{location:{pathname:U,search:Z},config:B,fallback:T??O$,onNavigate:(O)=>{if(typeof window<"u")window.history.pushState(null,"",O)}})},qZ=G$;var QZ=require("react"),X$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],Y$=new Set(["telegram:cloud","telegram:secure"]),IH=(H)=>{if(H==="sid")return{source:"sid",key:"sid"};for(let U of X$){let Z=U+":";if(H.startsWith(Z))return{source:U,key:H.slice(Z.length)}}return{source:"dom",key:H}},UU=(H,U=!1)=>{let{source:Z,key:$}=IH(H);if(Z==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}if(Z==="localStorage"||Z==="sessionStorage")try{let B=(Z==="localStorage"?window.localStorage:window.sessionStorage).getItem($);if(B===null){if(U)console.warn(`No ${Z} value found for key ${$}`);return[]}return[B]}catch(J){if(U)console.warn(`Failed to read ${Z} key ${$}:`,J);return[]}if(Z==="cookie"){let J=q$($);if(J===null){if(U)console.warn(`No cookie found for key ${$}`);return[]}return[J]}if(Z==="url"){let J=new URLSearchParams(window.location.search).getAll($);if(!J.length&&U)console.warn(`No URL query param found for key ${$}`);return J}if(Y$.has(Z)){if(U)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=document.getElementsByName($);if(!T.length){if(U)console.warn(`No input found with name ${$}`);return[]}let z=T[0];if(z instanceof HTMLInputElement){if(z.type==="file"&&z.files)return Array.from(z.files);return[z.value]}if(z instanceof HTMLTextAreaElement)return[z.value];return[]},q$=(H)=>{let U=document.cookie?document.cookie.split(";"):[];for(let Z of U){let $=Z.indexOf("=");if(($===-1?Z:Z.slice(0,$)).trim()===H){let z=$===-1?"":Z.slice($+1).trim();try{return decodeURIComponent(z)}catch{return z}}}return null},Q$=(H,U,Z)=>{let $=window.Telegram?.WebApp,T=H==="telegram:cloud"?$?.CloudStorage:$?.SecureStorage,z=H==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if(Z)console.warn(`${z} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(U,(B,I)=>{if(B){if(Z)console.warn(`Failed to read ${z} key ${U}:`,B);J([]);return}if(I==null||I===""){if(Z)console.warn(`No ${z} value found for key ${U}`);J([]);return}J([I])})}catch(B){if(Z)console.warn(`Failed to read ${z} key ${U}:`,B);J([])}})},ZU=async(H,U=!1)=>{let{source:Z,key:$}=IH(H);if(Z==="telegram:cloud"||Z==="telegram:secure")return Q$(Z,$,U);return UU(H,U)},W$=(H,U={},Z=[],$,T)=>{let z=T?.renderingLogEnabled??!1,J=T?.timeout,B=T?.retryPolicy,I=B?.maxRetries??0,O=B?.baseDelay??1000,D=B?.retryOn??[502,503,504];if(z)console.log("Registering AJAX: ",$,U,Z);return async(Q={})=>{if(typeof window>"u"||typeof document>"u"){if(z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(z)console.warn("AJAX skipped: apiServer is missing");return}if(!$||!H){if(z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await eH();let G=new FormData;for(let[X,q]of Object.entries({...U,...Q}))G.append(X,q);for(let X of Z){let{key:q}=IH(X);for(let M of await ZU(X,z))G.append(q,M)}let Y=V+"api/ajax_content"+$;H(null);let W;for(let X=0;X<=I;X++){if(X>0){let F=O*2**(X-1);if(z)console.log(`AJAX retry ${X}/${I} after ${F}ms`);await new Promise((P)=>setTimeout(P,F))}let q=J!=null?new AbortController:null,M=q&&setTimeout(()=>q.abort(),J);try{let F=await fetch(Y,{method:"POST",body:G,signal:q?.signal});if(M)clearTimeout(M);if(!F.ok&&D.includes(F.status)&&X<I){W=Error(`HTTP ${F.status}`);continue}let OH=(F.headers.get("content-type")||"").includes("application/json");if(!!F.body?.getReader&&!OH){let GH=F.body.getReader(),MZ=new TextDecoder,u="";while(!0){let{done:cH,value:AZ}=await GH.read();if(cH)break;u+=MZ.decode(AZ,{stream:!0});let $U=u.split(`
3
- `);u=$U.pop()??"";for(let PZ of $U){let hH=PZ.trim();if(!hH)continue;try{let RZ=JSON.parse(hH);H([RZ])}catch{if(z)console.warn("Failed to parse streamed line:",hH)}}}if(u.trim())try{let cH=JSON.parse(u);H([cH])}catch{if(z)console.warn("Failed to parse final streamed line:",u)}return{}}else{let GH=await F.json();return H(GH),GH}}catch(F){if(M)clearTimeout(M);if(W=F,X<I)continue;if(z)console.error("AJAX request failed:",F);return H(null),F}}if(z)console.error("AJAX request failed after retries:",W);return H(null),W}},WZ=(H,U={},Z=[],$,T)=>{let{apiServer:z,enableRenderingLog:J}=HH(),B=JSON.stringify(U),I=JSON.stringify(Z),O=JSON.stringify(T);return QZ.useMemo(()=>W$(H,U,Z,$,{apiServer:z,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[H,B,I,$,z,J,O])};var DZ=require("clsx"),VZ=require("tailwind-merge");function FZ(...H){return VZ.twMerge(DZ.clsx(H))}var _Z=()=>{if(typeof document>"u")return;let H=document.getElementById("piedata_global_form");H&&H.submit()};var KZ=(H,U)=>`${H}${QH}${U}`;
2
+ var xH=Object.create;var{getPrototypeOf:yH,defineProperty:ZU,getOwnPropertyNames:GZ,getOwnPropertyDescriptor:kH}=Object,IZ=Object.prototype.hasOwnProperty;var XZ=(U,Z,H)=>{H=U!=null?xH(yH(U)):{};let $=Z||!U||!U.__esModule?ZU(H,"default",{value:U,enumerable:!0}):H;for(let J of GZ(U))if(!IZ.call($,J))ZU($,J,{get:()=>U[J],enumerable:!0});return $},TZ=new WeakMap,SH=(U)=>{var Z=TZ.get(U),H;if(Z)return Z;if(Z=ZU({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")GZ(U).map(($)=>!IZ.call(Z,$)&&ZU(Z,$,{get:()=>U[$],enumerable:!(H=kH(U,$))||H.enumerable}));return TZ.set(U,Z),Z};var bH=(U,Z)=>{for(var H in Z)ZU(U,H,{get:Z[H],enumerable:!0,configurable:!0,set:($)=>Z[H]=()=>$})};var E$={};bH(E$,{usePieEmit:()=>_Z,useAjaxSubmit:()=>PH,unregisterComponent:()=>RZ,trackLazy:()=>FU,submitGlobalForm:()=>wH,registry:()=>x,registerPieComponent:()=>F,registerMultipleComponents:()=>MZ,readAjaxKeyAsync:()=>zZ,readAjaxKey:()=>$Z,preloadComponent:()=>lU,prefetchLazyComponents:()=>jZ,pieName:()=>NH,parseDepName:()=>YU,hasComponent:()=>LZ,getRegistrySize:()=>EZ,getRegistryEntry:()=>s,getLazyComponentNames:()=>oU,getEmitter:()=>c,getComponentMeta:()=>wZ,getAllRegisteredComponents:()=>NZ,cn:()=>LH,UnionCard:()=>pZ,UIRendererContext:()=>f,UILoading:()=>MU,UI:()=>N,SocketIOContext:()=>k,SessionStorageCard:()=>eZ,SequenceCard:()=>vZ,PieRoot:()=>hU,PiePreviewRoot:()=>KH,PieConfigContext:()=>g,PieCard:()=>P,PieBaseRoot:()=>_H,PIEBREAK:()=>DU,OneOfCard:()=>IH,MittContext:()=>S,IOEventsCard:()=>tZ,HiddenCard:()=>lZ,HTMLEmbedCard:()=>dZ,FallbackContext:()=>j,DeviceStorageCard:()=>ZH,CentrifugeIOContext:()=>y,BoxCard:()=>JH,AutoRedirectCard:()=>nZ,AjaxGroupCard:()=>$H});module.exports=SH(E$);var b=require("react");var OU=require("react");var uU=globalThis,K=(U,Z)=>{let H=Symbol.for(U);if(!(H in uU))uU[H]=Z();return uU[H]};var g=K("@swarm.ing/pieui:context:pieConfig",()=>OU.createContext(null)),HU=()=>{let U=OU.useContext(g);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},$U=()=>{let{apiServer:U}=HU();return U},QU=$U,WU=()=>{let{centrifugeServer:U}=HU();return U};var m=()=>{let{enableRenderingLog:U}=HU();return U},YZ=m;var DU="__piedemo__";var qZ=require("react"),dU=require("centrifuge");var BZ=K("@swarm.ing/pieui:centrifuge-cache",()=>new Map),VU=(U,Z)=>{if(!Z)return null;let H=`${U}::${Z}`,$=BZ.get(H);if($)return $;async function J(){let T=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!T.ok){if(T.status===401||T.status===403)throw new dU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${T.status}`)}return(await T.json()).token}let z=new dU.Centrifuge(Z,{getToken:J});return BZ.set(H,z),z},vH=K("@swarm.ing/pieui:context:centrifuge",()=>qZ.createContext(null)),y=vH;var QZ=require("socket.io-client"),WZ=require("react");var OZ=K("@swarm.ing/pieui:socket-cache",()=>new Map),_U=(U)=>{let Z=OZ.get(U);if(Z)return Z;let H=QZ.io(U,{autoConnect:!1,transports:["websocket"]});return OZ.set(U,H),H},mH=K("@swarm.ing/pieui:context:socket",()=>WZ.createContext(null)),k=mH;var DZ=XZ(require("mitt")),l=require("react");function c(){return K("@swarm.ing/pieui:mitt-emitter",()=>DZ.default())}var VZ=K("@swarm.ing/pieui:context:mitt",()=>l.createContext(null));function _Z(U){let Z=l.useContext(VZ);return l.useCallback((H,$)=>{(Z??c()).emit(`pie${H}_${U}`,$)},[U,Z])}var S=VZ;var i=require("react/jsx-runtime"),hH=({card:U,data:Z,children:H,useSocketioSupport:$=!1,useCentrifugeSupport:J=!1,useMittSupport:z=!1,centrifugeChannel:T=void 0,methods:I=void 0,stored:G=void 0})=>{let X=YZ(),D=b.useRef(I);if(D.current=I,X)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:$,centrifuge:J,mitt:z,centrifugeChannel:T}),console.log("[PieCard] Methods:",I?Object.keys(I):"none"),console.log("[PieCard] Has children:",!!H);let Q=b.useContext(k),V=b.useContext(y),Y=b.useContext(S);if(b.useEffect(()=>{if(!Q||!$||!D.current||!Z.name){if(X&&$)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!Q,useSocketioSupport:$,hasMethods:!!D.current,hasDataName:!!Z?.name});return}let W=Object.keys(D.current??{}).map((B)=>{let O=`pie${B}_${Z.name}`;if(X)console.log(`[PieCard] Socket.IO registering event: ${O}`);let A=(_)=>{D.current?.[B]?.(_)};return Q.on(O,A),[O,A]});return()=>{W.forEach(([B,O])=>{if(X)console.log(`[PieCard] Socket.IO unregistering event: ${B}`);Q.off(B,O)})}},[Q,Z.name,$]),b.useEffect(()=>{if(!V||!J||!T||!Z.name){if(X&&J)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:J,hasCentrifugeChannel:!!T,hasMethods:!!D.current,hasDataName:!!Z?.name});return}let W=Object.keys(D.current??{}).map((B)=>{let O=`pie${B}_${Z.name}_${T}`;if(X)console.log(`[PieCard] Centrifuge subscribing to channel: ${O}`);let A=V.newSubscription(O);return A.on("publication",(_)=>{if(X)console.log(`[PieCard] Centrifuge received data on ${O}:`,_.data);D.current?.[B]?.(_.data)}),A.subscribe(),A});return()=>{W.forEach((B)=>{if(X)console.log("[PieCard] Centrifuge unsubscribing from channel");B.unsubscribe(),V.removeSubscription(B)})}},[V,T,Z.name,J]),b.useEffect(()=>{if(!Y||!z||!Z.name){if(X&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!Y,useMittSupport:z,hasMethods:!!D.current,hasDataName:!!Z?.name});return}let q=Object.keys(D.current??{}),W={};return q.forEach((B)=>{let O=`pie${B}_${Z.name}`,A=(_)=>{if(X)console.log(`[PieCard] Mitt registering event: ${O}`);D.current?.[B]?.(_)};W[O]=A,Y.on(O,A)}),()=>{Object.entries(W).forEach(([B,O])=>{if(X)console.log(`[PieCard] Mitt unregistering event: ${B}`);Y.off(B,O)})}},[Y,Z.name,z]),X)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return i.jsxs(i.Fragment,{children:[i.jsx("input",{type:"hidden",name:Z.name,value:JSON.stringify(G)}),H]});return H},P=hH;var FZ=require("react"),u=new Map;function KZ(U,Z){return Z.catch(()=>{if(u.get(U)===Z)u.delete(U)}),u.set(U,Z),Z}function FU(U,Z){return FZ.lazy(()=>{if(u.has(Z))return u.get(Z);return KZ(Z,U().then((H)=>H))})}var AZ=async(U,Z)=>{if(!Z)return;if(u.has(U))return u.get(U);return KZ(U,Z().then((H)=>H))};var x=K("@swarm.ing/pieui:component-registry",()=>new Map),pH=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let Z={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!Z.component&&Z.loader)Z.component=FU(Z.loader,U.name),Z.isLazy=!0;return Z};function F(U){let Z=pH(U);return x.set(Z.name,Z),Z.component}var MZ=(U)=>{U.forEach((Z)=>F(Z))},RZ=(U)=>{x.delete(U)},LZ=(U)=>{return x.has(U)},wZ=(U)=>{return x.get(U)?.metadata},s=(U)=>{return x.get(U)},NZ=()=>{return Array.from(x.keys())},EZ=()=>{return x.size},oU=()=>Array.from(x.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),lU=(U)=>{let Z=x.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return AZ(U,Z.loader)},PZ=!1,jZ=()=>{if(PZ||typeof window>"u")return;PZ=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=oU(),H="requestIdleCallback"in window?(J)=>window.requestIdleCallback(J,{timeout:2000}):(J)=>window.setTimeout(J,300),$=(J)=>{if(J>=Z.length)return;H(()=>{Promise.resolve().then(()=>lU(Z[J])).catch(()=>{}).finally(()=>$(J+1))})};$(0)};var zU=require("react");var fZ=require("react");var KU=require("react/jsx-runtime"),gH=K("@swarm.ing/pieui:context:fallback",()=>fZ.createContext(KU.jsx(KU.Fragment,{}))),j=gH;var CZ=require("react");var cH=K("@swarm.ing/pieui:context:lazyError",()=>CZ.createContext(void 0)),h=cH;var AU=require("react"),xZ=require("react/jsx-runtime"),uH=2,dH=400;class n extends AU.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<uH){let Z=dH*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((H)=>({failed:!1,attempt:H.attempt+1}))},Z)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return xZ.jsx(AU.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var PU=require("react/jsx-runtime");function oH({uiConfig:U,setUiAjaxConfiguration:Z}){let H=zU.useContext(j),$=zU.useContext(h),J=m();if(J)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!Z);let z=s(U.card);if(!z?.component){if(J)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return H}if(J)console.log("[UI] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let T=z.component,I=PU.jsx(T,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(z.isLazy){if(J)console.log("[UI] Rendering lazy component with Suspense:",z.name);return PU.jsx(n,{name:z.name,fallback:z.fallback?PU.jsx(z.fallback,{}):H,onError:$,children:I})}if(J)console.log("[UI] Rendering component directly:",z.name);return I}var N=zU.memo(oH);var iU=require("react");var yZ=require("react");var lH=K("@swarm.ing/pieui:context:uiRenderer",()=>yZ.createContext(null)),f=lH;var JU=require("react/jsx-runtime");function kZ({uiConfig:U,setUiAjaxConfiguration:Z}){let H=iU.useContext(j),$=iU.useContext(h),J=m();if(J)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!Z);let z=s(U.card);if(!z?.component){if(J)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return H}if(J)console.log("[UILoading] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata,hasFallback:!!z.fallback});if(z.fallback){if(J)console.log("[UILoading] Rendering fallback for:",z.name);let G=z.fallback;return JU.jsx(G,{})}if(J)console.log("[UILoading] No fallback, rendering full component:",z.name);let T=z.component,I=JU.jsx(f.Provider,{value:kZ,children:JU.jsx(T,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(z.isLazy)return JU.jsx(n,{name:z.name,fallback:H,onError:$,children:I});return I}var MU=kZ;var SZ=require("react");var RU=require("react/jsx-runtime"),iH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:J}=U,z=SZ.useContext(f)??N;return RU.jsx(P,{card:$,data:U,children:RU.jsx("div",{style:J,id:$,children:Z.map((T,I)=>{return RU.jsx(z,{uiConfig:T,setUiAjaxConfiguration:H},`children-${I}`)})})})},bZ=iH;var vZ=F({name:"SequenceCard",component:bZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var mZ=require("react");var sU=require("react/jsx-runtime"),sH=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$}=U,J=mZ.useContext(f)??N;return sU.jsx(P,{card:$,data:U,children:Z.map((z,T)=>{return sU.jsx(J,{uiConfig:z,setUiAjaxConfiguration:H},`children-${T}`)})})},hZ=sH;var pZ=F({name:"UnionCard",component:hZ,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var LU=require("react"),gZ=XZ(require("html-react-parser"));var C=require("react");function nH(){let U=new AudioContext,Z=U.createOscillator(),H=Z.connect(U.createMediaStreamDestination());Z.start();let $=H.stream.getAudioTracks()[0];return $.enabled=!1,$}function nU(U=null,Z){let[H,$]=C.useState(!1),J=C.useRef(null),z=C.useRef(null),T=C.useRef(null),I=C.useCallback(async(Q,V=!0)=>{if(J.current)G();let Y=new RTCPeerConnection;if(Y.onconnectionstatechange=()=>{if(Y.connectionState==="connected")$(!0);else if(["disconnected","failed","closed"].includes(Y.connectionState))$(!1)},Y.ontrack=(M)=>{if(U)U.srcObject=M.streams[0]},V){let M=await navigator.mediaDevices.getUserMedia({audio:!0});Y.addTrack(M.getTracks()[0],M)}else{let M=nH();Y.addTrack(M)}let q=Y.createDataChannel("oai-events");z.current=q,T.current=new Promise((M)=>{q.addEventListener("open",()=>{M()})});let W=await Y.createOffer();await Y.setLocalDescription(W);let _=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:W.sdp,headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/sdp"}})).text();await Y.setRemoteDescription({type:"answer",sdp:_}),J.current=Y,await T.current},[U]),G=C.useCallback(()=>{let Q=z.current;if(Q)Q.close();J.current?.getSenders()?.forEach((V)=>V.track?.stop()),J.current?.close(),$(!1),J.current=null,z.current=null,T.current=null},[U]),X=C.useCallback((Q)=>{let V=z.current;if(!V){console.error("Data channel is not ready",Q);return}let Y=new Date().toLocaleTimeString();if(Q.event_id=Q.event_id||crypto.randomUUID(),V.send(JSON.stringify(Q)),!Q.timestamp)Q.timestamp=Y;Z?.(Q)},[Z,U]),D=C.useCallback((Q)=>{if(!z.current){console.error("Data channel is not ready");return}let Y=()=>{X({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Q}]}}),X({type:"response.create"})};if(T.current)T.current.then(Y);else Y()},[Z,U]);return C.useEffect(()=>{let Q=z.current;if(!Q)return;let V=(Y)=>{let q=JSON.parse(Y.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();Z?.(q)};return Q.addEventListener("message",V),()=>{Q.removeEventListener("message",V)}},[Z,U]),{isSessionActive:H,startSession:I,stopSession:G,sendTextMessage:D}}var uZ=require("react/jsx-runtime"),rH=({data:U})=>{let{html:Z,useSocketioSupport:H,useCentrifugeSupport:$,useMittSupport:J,centrifugeChannel:z}=U,[T,I]=LU.useState(Z),{isSessionActive:G,startSession:X,sendTextMessage:D}=nU(null,(q)=>{if(console.log(q.type,q.type==="response.output_text.delta"&&q.delta),q.type==="response.output_text.delta"&&q.delta)I((W)=>W+q.delta)});return LU.useEffect(()=>{I(Z)},[Z]),uZ.jsx(P,{card:"HTMLEmbedCard",data:U,methods:{update:(q)=>{I(q.value)},generateUsingAI:async(q)=>{try{if(!G&&q.token)await X(q.token,!1);D(q.prompt)}catch(W){console.error("Failed to generate using AI",W)}},initializeAI:async(q)=>{if(!G&&q.token)await X(q.token,!1)}},useCentrifugeSupport:$,useSocketioSupport:H,useMittSupport:J,centrifugeChannel:z,children:gZ.default(T)})},cZ=rH;var dZ=F({name:"HTMLEmbedCard",component:cZ,metadata:{author:"Swarm.ing"}});var wU=require("react");var rU=require("react/jsx-runtime"),tH=({data:U})=>{let{name:Z,value:H,useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:z,centrifugeChannel:T}=U,[I,G]=wU.useState(H);return wU.useEffect(()=>{G(H)},[H]),rU.jsx(P,{card:"HiddenCard",data:U,useSocketioSupport:$,useCentrifugeSupport:J,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)}},children:rU.jsx("input",{type:"hidden",id:Z,name:Z,value:I})})},oZ=tH;var lZ=F({name:"HiddenCard",component:oZ,metadata:{author:"Swarm.ing"}});var TU=require("react");var iZ=require("react");var aH=K("@swarm.ing/pieui:context:navigate",()=>iZ.createContext(void 0)),v=aH;var NU=require("react/jsx-runtime"),eH=({data:U})=>{let{url:Z}=U,H=TU.useContext(v),$=TU.useContext(j);return TU.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else H?.(Z)},[Z,H]),NU.jsx(NU.Fragment,{children:$})},sZ=eH;var nZ=F({name:"AutoRedirectCard",component:sZ,metadata:{author:"Swarm.ing"}});var p=require("react-toastify"),EU=require("react-toastify");var t=require("react");var r=require("react/jsx-runtime"),U$={bounce:p.Bounce,slide:p.Slide,zoom:p.Zoom,flip:p.Flip},Z$=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?U$[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};EU.toast(U.message,Z)},H$=(U)=>{console.log("Log event",U)},$$=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let Z=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch($){console.error("[IOEventsCard] Failed to show notification",$)}},H=window.Notification.permission;if(H==="granted"){Z();return}if(H==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then(($)=>{if($==="granted")Z()})},z$=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:J}=U,z=t.useContext(v),T=t.useRef(z);T.current=z;let I=t.useMemo(()=>({alert:Z$,log:H$,push:$$,redirect:(G)=>{if(G.to){let X=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(X))window.location.href=X;else T.current?.(X)}else window.location.reload()},reload:(G)=>{if(G.to){let X=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(X))window.location.href=X;else T.current?.(X)}else window.location.reload()}}),[]);return r.jsx(r.Fragment,{children:r.jsx(P,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:H,useMittSupport:$,centrifugeChannel:J,methods:I,children:r.jsx(EU.ToastContainer,{})})})},rZ=z$;var tZ=F({name:"IOEventsCard",component:rZ,metadata:{author:"Swarm.ing"}});var GU=require("react");var tU=require("react/jsx-runtime"),J$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:J,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:I}=U,[G,X]=GU.useState($);return GU.useEffect(()=>{X($)},[$]),GU.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(H,G)},[H,G]),tU.jsx(P,{card:"SessionStorageCard",data:U,useSocketioSupport:J,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:I,methods:{update:({value:D})=>{X(D)},remove:()=>{sessionStorage.removeItem(H),X("")}},children:tU.jsx("input",{type:"hidden",id:Z,name:Z,value:G})})},aZ=J$;var eZ=F({name:"SessionStorageCard",component:aZ,metadata:{author:"PieData"}});var IU=require("react");var aU=require("react/jsx-runtime"),T$=({data:U})=>{let{name:Z,key:H,value:$,useSocketioSupport:J,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:I}=U,[G,X]=IU.useState($);return IU.useEffect(()=>{X($)},[$]),IU.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(H,G)},[H,G]),aU.jsx(P,{card:"DeviceStorageCard",data:U,useSocketioSupport:J,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:I,methods:{update:({value:D})=>{X(D)},remove:()=>{localStorage.removeItem(H),X("")}},children:aU.jsx("input",{type:"hidden",id:Z,name:Z,value:G})})},UH=T$;var ZH=F({name:"DeviceStorageCard",component:UH,metadata:{author:"PieData"}});var E=require("react");var eU=require("react/jsx-runtime"),G$=({data:U,content:Z})=>{let{useLoader:H,noReturn:$,returnType:J,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:I,centrifugeChannel:G}=U,X=E.useContext(j),D=E.useContext(f)??N,[Q,V]=E.useState(!1),[Y,q]=E.useState(null),W=E.useRef(Z),B=E.useContext(S),O=E.useCallback((M)=>{if(M===null)V(!0);else if(V(!1),!$)W.current=M;if(!$)q(M)},[$]),A=E.useCallback((M)=>{W.current=M.content,q(M.content)},[]),_=E.useCallback((M)=>{if(M===null)V(!0);else if(V(!1),!$)for(let BU of M)B?.emit(BU.name,BU.data)},[$,B]);if(E.useEffect(()=>{q(Z),V(!1)},[Z]),!Y&&H)return X;return eU.jsx(P,{card:"AjaxGroupCard",data:U,methods:{changeContent:A},useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:I,centrifugeChannel:G,children:eU.jsx(D,{uiConfig:Y??W.current,setUiAjaxConfiguration:J==="events"?_:O})})},HH=G$;var $H=F({name:"AjaxGroupCard",component:HH,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var UZ=require("react");var jU=require("react/jsx-runtime"),I$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,url:J,sx:z}=U,T=UZ.useContext(v),I=UZ.useContext(f)??N;return jU.jsx(P,{card:$,data:U,children:jU.jsx("div",{style:z,id:$,onClick:(X)=>{if(J)if(X.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(J))window.location.href=J;else T?.(J)},children:jU.jsx(I,{setUiAjaxConfiguration:H,uiConfig:Z})})})},zH=I$;var JH=F({name:"BoxCard",component:zH,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var TH=require("react");var fU=require("react/jsx-runtime"),X$=({data:U,content:Z,setUiAjaxConfiguration:H})=>{let{name:$,sx:J}=U,z=TH.useContext(f)??N;return fU.jsx(P,{card:$,data:U,children:fU.jsx("div",{style:J,id:$,children:Z.map((T,I)=>{return fU.jsx(z,{uiConfig:T,setUiAjaxConfiguration:H},`children-${I}`)})})})},GH=X$;var IH=F({name:"OneOfCard",component:GH,metadata:{author:"Swarm.ing",description:"Different variants"}});var a=require("react"),e=require("@tanstack/react-query");var SU=require("react");var yU=require("react"),CU=new Map,xU=new Map;function kU(U,Z){let H=`${U}::${Z}`,$=U?CU.get(H):void 0,[J,z]=yU.useState($??null);return yU.useEffect(()=>{if(!U)return;if(CU.has(H)){z(CU.get(H));return}let T=xU.get(H);if(!T)T=fetch(U+`api/support/${Z}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return CU.set(H,G),xU.delete(H),G}).catch((G)=>{throw xU.delete(H),G}),xU.set(H,T);let I=!1;return T.then((G)=>{if(!I)z(G)}).catch(()=>{}),()=>{I=!0}},[U,Z,H]),J}var Y$=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let H of Z){let $=H.indexOf("=");if(($===-1?H:H.slice(0,$)).trim()===U){let z=$===-1?"":H.slice($+1).trim();try{return decodeURIComponent(z)}catch{return z}}}return null},B$={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,Z){return(U==="local"?window.localStorage:window.sessionStorage).getItem(Z)},readCookie:Y$,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let H=Z[0];if(H instanceof HTMLInputElement){if(H.type==="file"&&H.files)return Array.from(H.files);return[H.value]}if(H instanceof HTMLTextAreaElement)return[H.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},XH=B$;var q$={};function d(){return q$}var YH=new Map;var BH=(U)=>{return YH.has(U)?YH.get(U):null};var qH,O$={isClient(){return!0},readSid(){return qH},setSid(U){qH=U},readWebStorage(U,Z){let H=d(),$=U==="local"?H.storage:H.sessionStorage;return $?$.getItem(Z):null},async readWebStorageAsync(U,Z){let H=d(),$=U==="local"?H.asyncStorage:H.asyncSessionStorage;if($)return $.getItem(Z);let J=U==="local"?H.storage:H.sessionStorage;return J?J.getItem(Z):null},readCookie(U){let Z=d();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=d();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=d();return Z.getInput?Z.getInput(U):BH(U)},submitGlobalForm(){d().submitForm?.()}},OH=O$;var Q$=typeof navigator<"u"&&navigator.product==="ReactNative",W$=Q$?OH:XH,R=W$;var XU=K("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function QH(){XU.resolve?.()}function ZZ(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!XU.promise)XU.promise=new Promise((U)=>{XU.resolve=()=>{U()}});return XU.promise}var D$=({children:U})=>{let Z=SU.useContext(k),H=QU(),$=kU(H,"socketIO"),J=(z)=>{if(R.isClient())R.setSid(z.sid),QH(),console.log(`SocketIO initialized: ${R.readSid()}`)};return SU.useEffect(()=>{if(!Z)return;let z=()=>{console.log("SocketIO connected")},T=(I)=>{console.log(`SocketIO disconnected: ${I}`),Z.connect()};if($)Z.on("pieinit",J),Z.on("connect",z),Z.on("disconnect",T),Z.connect();return()=>{if($)Z.off("pieinit",J),Z.off("connect",z),Z.off("disconnect",T),Z.disconnect()}},[Z,$]),U},bU=D$;var vU=require("react");var V$=({children:U})=>{let Z=vU.useContext(y),H=QU(),$=kU(H,"centrifuge");return vU.useEffect(()=>{if(!Z)return;let J=()=>{console.log("Centrifuge connected")},z=(T)=>{console.log("Centrifuge disconnected:",T)};if($)Z.on("connected",J),Z.on("disconnected",z),Z.connect();return()=>{if($)Z.disconnect()}},[Z,$]),U},mU=V$;var VH=require("axios-date-transformer");var DH=require("react/jsx-runtime");function WH(U,Z,H){if(!Z)return H;let $=U.replace(/^\//,""),J=Z[$];if(!J)return H;return DH.jsx(MU,{uiConfig:J})}var L=require("react/jsx-runtime"),_$=({location:U,fallback:Z,piecache:H,onError:$,queryOptions:J,disableGlobalForm:z})=>{let T=$U(),I=WU(),G=m(),X=a.useMemo(()=>VH.createAxiosDateTransformer({baseURL:T||""}),[T]),D=a.useMemo(()=>c(),[]),Q=a.useMemo(()=>T?_U(T):null,[T]),V=a.useMemo(()=>T?VU(T,I):null,[T,I]),{data:Y,isLoading:q,error:W}=e.useQuery({queryKey:["uiConfig",U.pathname+U.search,T],enabled:!!T,queryFn:async()=>{let O=new URLSearchParams(U.search);O.set("__pieroot","web");let A="/api/content"+U.pathname+"?"+O.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",A);let _=await X.get(A,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",_.data);return _.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(O)=>Math.min(1000*2**O,30000),...J}),B=WH(U.pathname,H,Z);if(!T)return B??null;if(G)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",I),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!H);if(W){if(G)console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data});return $?.(W),B}if(q||!Y){if(G)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!Y});return B}if(G)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return L.jsx(S.Provider,{value:D,children:L.jsx(k.Provider,{value:Q,children:L.jsx(y.Provider,{value:V,children:L.jsx(j.Provider,{value:Z??L.jsx(L.Fragment,{}),children:L.jsx(bU,{children:L.jsx(mU,{children:z?L.jsx(N,{uiConfig:Y}):L.jsx("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:L.jsx(N,{uiConfig:Y})})})})})})})})},F$=(U)=>{let Z=a.useMemo(()=>new e.QueryClient,[]),H=U.queryClient??Z;return L.jsx(v.Provider,{value:U.onNavigate,children:L.jsx(g.Provider,{value:U.config,children:L.jsx(h.Provider,{value:U.onError,children:L.jsx(e.QueryClientProvider,{client:H,children:L.jsx(_$,{...U})})})})})},hU=F$;var UU=require("react"),pU=require("@tanstack/react-query");var w=require("react/jsx-runtime"),K$=({location:U,fallback:Z,children:H,disableGlobalForm:$})=>{let J=$U(),z=WU(),T=m(),I=UU.useMemo(()=>c(),[]),G=UU.useMemo(()=>J?_U(J):null,[J]),X=UU.useMemo(()=>J?VU(J,z):null,[J,z]);if(T)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!Z);return w.jsx(S.Provider,{value:I,children:w.jsx(k.Provider,{value:G,children:w.jsx(y.Provider,{value:X,children:w.jsx(j.Provider,{value:Z??w.jsx(w.Fragment,{}),children:w.jsx(bU,{children:w.jsx(mU,{children:$?H:w.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:H})})})})})})})},A$=(U)=>{let[Z]=UU.useState(()=>new pU.QueryClient),H=U.queryClient??Z;return w.jsx(v.Provider,{value:U.onNavigate,children:w.jsx(g.Provider,{value:U.config,children:w.jsx(h.Provider,{value:U.onError,children:w.jsx(pU.QueryClientProvider,{client:H,children:w.jsx(K$,{...U})})})})})},_H=A$;var FH=require("react");var HZ=require("react/jsx-runtime"),P$=HZ.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),M$=({apiServer:U,pathname:Z="/",search:H="",centrifugeServer:$,fallback:J,enableRenderingLog:z=!1})=>{let T=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",I=FH.useMemo(()=>({apiServer:T,centrifugeServer:$,enableRenderingLog:z,pageProcessor:"web"}),[T,$,z]);return HZ.jsx(hU,{location:{pathname:Z,search:H},config:I,fallback:J??P$,onNavigate:(X)=>{if(typeof window<"u")window.history.pushState(null,"",X)}})},KH=M$;var AH=require("react");var R$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],L$=new Set(["telegram:cloud","telegram:secure"]),YU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of R$){let H=Z+":";if(U.startsWith(H))return{source:Z,key:U.slice(H.length)}}return{source:"dom",key:U}},$Z=(U,Z=!1)=>{let{source:H,key:$}=YU(U);if(H==="sid"){let z=R.readSid();if(!z)throw Error("SocketIO isn't initialized properly");return[z]}if(H==="localStorage"||H==="sessionStorage")try{let z=R.readWebStorage(H==="localStorage"?"local":"session",$);if(z===null){if(Z)console.warn(`No ${H} value found for key ${$}`);return[]}return[z]}catch(z){if(Z)console.warn(`Failed to read ${H} key ${$}:`,z);return[]}if(H==="cookie"){let z=R.readCookie($);if(z===null){if(Z)console.warn(`No cookie found for key ${$}`);return[]}return[z]}if(H==="url"){let z=R.readUrlParams($);if(!z.length&&Z)console.warn(`No URL query param found for key ${$}`);return z}if(L$.has(H)){if(Z)console.warn(`Source ${H} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let J=R.readDomInput($);if(J===null){if(Z)console.warn(`No input found with name ${$}`);return[]}return J},w$=(U,Z,H)=>{let $=window.Telegram?.WebApp,J=U==="telegram:cloud"?$?.CloudStorage:$?.SecureStorage,z=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!J){if(H)console.warn(`${z} is not available`);return Promise.resolve([])}return new Promise((T)=>{try{J.getItem(Z,(I,G)=>{if(I){if(H)console.warn(`Failed to read ${z} key ${Z}:`,I);T([]);return}if(G==null||G===""){if(H)console.warn(`No ${z} value found for key ${Z}`);T([]);return}T([G])})}catch(I){if(H)console.warn(`Failed to read ${z} key ${Z}:`,I);T([])}})},zZ=async(U,Z=!1)=>{let{source:H,key:$}=YU(U);if(H==="telegram:cloud"||H==="telegram:secure")return w$(H,$,Z);if((H==="localStorage"||H==="sessionStorage")&&R.readWebStorageAsync)try{let J=await R.readWebStorageAsync(H==="localStorage"?"local":"session",$);if(J===null){if(Z)console.warn(`No ${H} value found for key ${$}`);return[]}return[J]}catch(J){if(Z)console.warn(`Failed to read ${H} key ${$}:`,J);return[]}return $Z(U,Z)},N$=(U,Z={},H=[],$,J)=>{let z=J?.renderingLogEnabled??!1,T=J?.timeout,I=J?.retryPolicy,G=I?.maxRetries??0,X=I?.baseDelay??1000,D=I?.retryOn??[502,503,504];if(z)console.log("Registering AJAX: ",$,Z,H);return async(Q={})=>{if(!R.isClient()){if(z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=J?.apiServer;if(!V){if(z)console.warn("AJAX skipped: apiServer is missing");return}if(!$||!U){if(z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(H.includes("sid"))await ZZ();let Y=new FormData;for(let[B,O]of Object.entries({...Z,...Q}))Y.append(B,O);for(let B of H){let{key:O}=YU(B);for(let A of await zZ(B,z))Y.append(O,A)}let q=V+"api/ajax_content"+$;U(null);let W;for(let B=0;B<=G;B++){if(B>0){let _=X*2**(B-1);if(z)console.log(`AJAX retry ${B}/${G} after ${_}ms`);await new Promise((M)=>setTimeout(M,_))}let O=T!=null?new AbortController:null,A=O&&setTimeout(()=>O.abort(),T);try{let _=await fetch(q,{method:"POST",body:Y,signal:O?.signal});if(A)clearTimeout(A);if(!_.ok&&D.includes(_.status)&&B<G){W=Error(`HTTP ${_.status}`);continue}let BU=(_.headers.get("content-type")||"").includes("application/json");if(!!_.body?.getReader&&!BU){let qU=_.body.getReader(),EH=new TextDecoder,o="";while(!0){let{done:gU,value:jH}=await qU.read();if(gU)break;o+=EH.decode(jH,{stream:!0});let JZ=o.split(`
3
+ `);o=JZ.pop()??"";for(let fH of JZ){let cU=fH.trim();if(!cU)continue;try{let CH=JSON.parse(cU);U([CH])}catch{if(z)console.warn("Failed to parse streamed line:",cU)}}}if(o.trim())try{let gU=JSON.parse(o);U([gU])}catch{if(z)console.warn("Failed to parse final streamed line:",o)}return{}}else{let qU=await _.json();return U(qU),qU}}catch(_){if(A)clearTimeout(A);if(W=_,B<G)continue;if(z)console.error("AJAX request failed:",_);return U(null),_}}if(z)console.error("AJAX request failed after retries:",W);return U(null),W}},PH=(U,Z={},H=[],$,J)=>{let{apiServer:z,enableRenderingLog:T}=HU(),I=JSON.stringify(Z),G=JSON.stringify(H),X=JSON.stringify(J);return AH.useMemo(()=>N$(U,Z,H,$,{apiServer:z,renderingLogEnabled:T,timeout:J?.timeout,retryPolicy:J?.retryPolicy}),[U,I,G,$,z,T,X])};var MH=require("clsx"),RH=require("tailwind-merge");function LH(...U){return RH.twMerge(MH.clsx(U))}var wH=()=>{R.submitGlobalForm()};var NH=(U,Z)=>`${U}${DU}${Z}`;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{useMemo as R}from"react";import{QueryClient as rU,QueryClientProvider as aU,useQuery as tU}from"@tanstack/react-query";import HU from"mitt";import{createContext as NU,useCallback as HL,useContext as NL}from"react";var A=globalThis,J=(U,L)=>{let T=Symbol.for(U);if(!(T in A))A[T]=L();return A[T]};function b(){return J("@swarm.ing/pieui:mitt-emitter",()=>HU())}var ZU=J("@swarm.ing/pieui:context:mitt",()=>NU(null));var u=ZU;import{io as VU}from"socket.io-client";import{createContext as YU}from"react";var c=J("@swarm.ing/pieui:socket-cache",()=>new Map),o=(U)=>{let L=c.get(U);if(L)return L;let T=VU(U,{autoConnect:!1,transports:["websocket"]});return c.set(U,T),T},FU=J("@swarm.ing/pieui:context:socket",()=>YU(null)),K=FU;import{createContext as GU}from"react";import{Centrifuge as g}from"centrifuge";var h=J("@swarm.ing/pieui:centrifuge-cache",()=>new Map),l=(U,L)=>{if(!L)return null;let T=`${U}::${L}`,D=h.get(T);if(D)return D;async function z(){let $=await fetch(U+"api/centrifuge/gen_token");if(!$.ok){if($.status===403)throw new g.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${$.status}`)}return(await $.json()).token}let I=new g(L,{getToken:z});return h.set(T,I),I},OU=J("@swarm.ing/pieui:context:centrifuge",()=>GU(null)),X=OU;import{useContext as KU,useEffect as XU}from"react";import{useEffect as QU,useState as _U}from"react";var B=new Map,W=new Map;function f(U,L){let T=`${U}::${L}`,D=U?B.get(T):void 0,[z,I]=_U(D??null);return QU(()=>{if(!U)return;if(B.has(T)){I(B.get(T));return}let $=W.get(T);if(!$)$=fetch(U+`api/support/${L}`,{method:"GET"}).then((H)=>H.json()).then((H)=>{return B.set(T,H),W.delete(T),H}).catch((H)=>{throw W.delete(T),H}),W.set(T,$);let Z=!1;return $.then((H)=>{if(!Z)I(H)}).catch(()=>{}),()=>{Z=!0}},[U,L,T]),z}import{createContext as qU,useContext as RU}from"react";var y=J("@swarm.ing/pieui:context:pieConfig",()=>qU(null)),w=()=>{let U=RU(y);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},k=()=>{let{apiServer:U}=w();return U},j=k,p=()=>{let{centrifugeServer:U}=w();return U};var Y=()=>{let{enableRenderingLog:U}=w();return U};var EU=J("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function n(){EU.resolve?.()}var BU=({children:U})=>{let L=KU(K),T=j(),D=f(T,"socketIO"),z=(I)=>{if(typeof window<"u")window.sid=I.sid,n(),console.log(`SocketIO initialized: ${window.sid}`)};return XU(()=>{if(!L)return;let I=()=>{console.log("SocketIO connected")},$=(Z)=>{console.log(`SocketIO disconnected: ${Z}`),L.connect()};if(D)L.on("pieinit",z),L.on("connect",I),L.on("disconnect",$),L.connect();return()=>{if(D)L.off("pieinit",z),L.off("connect",I),L.off("disconnect",$),L.disconnect()}},[L,D]),U},s=BU;import{useContext as WU,useEffect as fU}from"react";var jU=({children:U})=>{let L=WU(X),T=j(),D=f(T,"centrifuge");return fU(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},I=($)=>{console.log("Centrifuge disconnected:",$)};if(D)L.on("connected",z),L.on("disconnected",I),L.connect();return()=>{if(D)L.disconnect()}},[L,D]),U},i=jU;import{createContext as MU}from"react";import{jsx as yU,Fragment as AU}from"react/jsx-runtime";var PU=J("@swarm.ing/pieui:context:fallback",()=>MU(yU(AU,{}))),F=PU;import{createContext as wU}from"react";var kU=J("@swarm.ing/pieui:context:lazyError",()=>wU(void 0)),G=kU;var mU=J("@swarm.ing/pieui:component-registry",()=>new Map);var M=(U)=>{return mU.get(U)};import{useContext as r,memo as bU}from"react";import{Component as CU,Suspense as dU}from"react";import{jsx as xU}from"react/jsx-runtime";var SU=2,vU=400;class O extends CU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<SU){let L=vU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((T)=>({failed:!1,attempt:T.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return xU(dU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as m}from"react/jsx-runtime";function uU({uiConfig:U,setUiAjaxConfiguration:L}){let T=r(F),D=r(G),z=Y();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let I=M(U.card);if(!I?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return T}if(z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let $=I.component,Z=m($,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(I.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return m(O,{name:I.name,fallback:I.fallback?m(I.fallback,{}):T,onError:D,children:Z})}if(z)console.log("[UI] Rendering component directly:",I.name);return Z}var C=bU(uU);import{createAxiosDateTransformer as eU}from"axios-date-transformer";import{useEffect as a,useState as cU}from"react";var Q=()=>{let[U,L]=cU(null);return a(()=>{if(typeof window>"u")return;let T=window.WebApp;if(!T)return;T.ready(),L(T)},[]),U},oU=()=>{let U=Q();return[U?.initDataUnsafe,U?.initData]},gU=(U)=>{let L=Q();return a(()=>{if(!L||!U)return;return L.BackButton.onClick(U),L.BackButton.show(),()=>{L.BackButton.offClick(U),L.BackButton.hide()}},[L,U]),L?.BackButton??null},hU=()=>{return Q()?.HapticFeedback??null};import{createContext as lU}from"react";var pU=J("@swarm.ing/pieui:context:navigate",()=>lU(void 0)),t=pU;import{useContext as UU}from"react";import{createContext as nU}from"react";var sU=J("@swarm.ing/pieui:context:uiRenderer",()=>nU(null)),e=sU;import{jsx as P}from"react/jsx-runtime";function LU({uiConfig:U,setUiAjaxConfiguration:L}){let T=UU(F),D=UU(G),z=Y();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let I=M(U.card);if(!I?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return T}if(z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(z)console.log("[UILoading] Rendering fallback for:",I.name);let H=I.fallback;return P(H,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let $=I.component,Z=P(e.Provider,{value:LU,children:P($,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(I.isLazy)return P(O,{name:I.name,fallback:T,onError:D,children:Z});return Z}var TU=LU;import{jsx as iU}from"react/jsx-runtime";function IU(U,L,T){if(!L)return T;let D=U.replace(/^\//,""),z=L[D];if(!z)return T;return iU(TU,{uiConfig:z})}import{jsx as N,Fragment as TL}from"react/jsx-runtime";var UL=({location:U,fallback:L,piecache:T,onError:D,queryOptions:z,disableGlobalForm:I})=>{let $=k(),Z=p(),H=Y(),$U=R(()=>eU({baseURL:$}),[$]),zU=R(()=>b(),[]),JU=R(()=>$?o($):null,[$]),DU=R(()=>$?l($,Z):null,[$,Z]),E=Q(),{data:_,isLoading:d,error:V}=tU({queryKey:["uiConfig",U.pathname+U.search,E?.initData],queryFn:async()=>{let q=new URLSearchParams(U.search);if(q.set("__pieroot","max"),E?.initData)q.set("initData",E.initData);let v="/api/content"+U.pathname+"?"+q.toString();if(H)console.log("[PieRoot] Fetching UI configuration from:",v);let x=await $U.get(v,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(H)console.log("[PieRoot] Received UI configuration:",x.data);return x.data},enabled:!!E?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...z}),S=IU(U.pathname,T,L);if(!$)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&H)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),D?.(V),S;if(d||!_){if(H)console.log("[PieRoot] Loading state:",{isLoading:d,hasUiConfiguration:!!_});return S}if(H)console.log("[PieRoot] UI configuration loaded successfully:",_),console.log("[PieRoot] Rendering UI with configuration");return N(u.Provider,{value:zU,children:N(K.Provider,{value:JU,children:N(X.Provider,{value:DU,children:N(F.Provider,{value:L??N(TL,{}),children:N(s,{children:N(i,{children:I?N(C,{uiConfig:_}):N("form",{id:"piedata_global_form",action:$+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:N(C,{uiConfig:_})})})})})})})})},LL=(U)=>{let L=R(()=>new rU,[]),T=U.queryClient??L;return N(t.Provider,{value:U.onNavigate,children:N(y.Provider,{value:U.config,children:N(G.Provider,{value:U.onError,children:N(aU,{client:T,children:N(UL,{...U})})})})})},IL=LL;export{Q as useMaxWebApp,oU as useMaxInitData,hU as useMaxHapticFeedback,gU as useMaxBackButton,IL as PieMaxRoot};
2
+ import{useMemo as E}from"react";import{QueryClient as VL,QueryClientProvider as YL,useQuery as DL}from"@tanstack/react-query";import FU from"mitt";import{createContext as KU,useCallback as BL,useContext as WL}from"react";var w=globalThis,H=(U,L)=>{let $=Symbol.for(U);if(!($ in w))w[$]=L();return w[$]};function g(){return H("@swarm.ing/pieui:mitt-emitter",()=>FU())}var OU=H("@swarm.ing/pieui:context:mitt",()=>KU(null));var h=OU;import{io as XU}from"socket.io-client";import{createContext as qU}from"react";var c=H("@swarm.ing/pieui:socket-cache",()=>new Map),l=(U)=>{let L=c.get(U);if(L)return L;let $=XU(U,{autoConnect:!1,transports:["websocket"]});return c.set(U,$),$},EU=H("@swarm.ing/pieui:context:socket",()=>qU(null)),W=EU;import{createContext as BU}from"react";import{Centrifuge as p}from"centrifuge";var o=H("@swarm.ing/pieui:centrifuge-cache",()=>new Map),s=(U,L)=>{if(!L)return null;let $=`${U}::${L}`,I=o.get($);if(I)return I;async function J(){let T=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!T.ok){if(T.status===401||T.status===403)throw new p.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${T.status}`)}return(await T.json()).token}let z=new p(L,{getToken:J});return o.set($,z),z},WU=H("@swarm.ing/pieui:context:centrifuge",()=>BU(null)),N=WU;import{useContext as kU,useEffect as SU}from"react";import{useEffect as NU,useState as RU}from"react";var R=new Map,j=new Map;function M(U,L){let $=`${U}::${L}`,I=U?R.get($):void 0,[J,z]=RU(I??null);return NU(()=>{if(!U)return;if(R.has($)){z(R.get($));return}let T=j.get($);if(!T)T=fetch(U+`api/support/${L}`,{method:"GET"}).then((Z)=>Z.json()).then((Z)=>{return R.set($,Z),j.delete($),Z}).catch((Z)=>{throw j.delete($),Z}),j.set($,T);let Y=!1;return T.then((Z)=>{if(!Y)z(Z)}).catch(()=>{}),()=>{Y=!0}},[U,L,$]),J}import{createContext as jU,useContext as MU}from"react";var x=H("@swarm.ing/pieui:context:pieConfig",()=>jU(null)),C=()=>{let U=MU(x);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},k=()=>{let{apiServer:U}=C();return U},A=k,n=()=>{let{centrifugeServer:U}=C();return U};var Q=()=>{let{enableRenderingLog:U}=C();return U};var AU=(U)=>{let L=document.cookie?document.cookie.split(";"):[];for(let $ of L){let I=$.indexOf("=");if((I===-1?$:$.slice(0,I)).trim()===U){let z=I===-1?"":$.slice(I+1).trim();try{return decodeURIComponent(z)}catch{return z}}}return null},PU={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,L){return(U==="local"?window.localStorage:window.sessionStorage).getItem(L)},readCookie:AU,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let L=document.getElementsByName(U);if(!L.length)return null;let $=L[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},r=PU;var fU={};function D(){return fU}var i=new Map;var a=(U)=>{return i.has(U)?i.get(U):null};var t,yU={isClient(){return!0},readSid(){return t},setSid(U){t=U},readWebStorage(U,L){let $=D(),I=U==="local"?$.storage:$.sessionStorage;return I?I.getItem(L):null},async readWebStorageAsync(U,L){let $=D(),I=U==="local"?$.asyncStorage:$.asyncSessionStorage;if(I)return I.getItem(L);let J=U==="local"?$.storage:$.sessionStorage;return J?J.getItem(L):null},readCookie(U){let L=D();return L.getCookie?L.getCookie(U):null},readUrlParams(U){let L=D();return L.getRouteParams?L.getRouteParams(U):[]},readDomInput(U){let L=D();return L.getInput?L.getInput(U):a(U)},submitGlobalForm(){D().submitForm?.()}},e=yU;var wU=typeof navigator<"u"&&navigator.product==="ReactNative",xU=wU?e:r,P=xU;var CU=H("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function UU(){CU.resolve?.()}var bU=({children:U})=>{let L=kU(W),$=A(),I=M($,"socketIO"),J=(z)=>{if(P.isClient())P.setSid(z.sid),UU(),console.log(`SocketIO initialized: ${P.readSid()}`)};return SU(()=>{if(!L)return;let z=()=>{console.log("SocketIO connected")},T=(Y)=>{console.log(`SocketIO disconnected: ${Y}`),L.connect()};if(I)L.on("pieinit",J),L.on("connect",z),L.on("disconnect",T),L.connect();return()=>{if(I)L.off("pieinit",J),L.off("connect",z),L.off("disconnect",T),L.disconnect()}},[L,I]),U},LU=bU;import{useContext as mU,useEffect as vU}from"react";var dU=({children:U})=>{let L=mU(N),$=A(),I=M($,"centrifuge");return vU(()=>{if(!L)return;let J=()=>{console.log("Centrifuge connected")},z=(T)=>{console.log("Centrifuge disconnected:",T)};if(I)L.on("connected",J),L.on("disconnected",z),L.connect();return()=>{if(I)L.disconnect()}},[L,I]),U},$U=dU;import{createContext as uU}from"react";import{jsx as cU,Fragment as hU}from"react/jsx-runtime";var gU=H("@swarm.ing/pieui:context:fallback",()=>uU(cU(hU,{}))),_=gU;import{createContext as lU}from"react";var pU=H("@swarm.ing/pieui:context:lazyError",()=>lU(void 0)),F=pU;var oU=H("@swarm.ing/pieui:component-registry",()=>new Map);var f=(U)=>{return oU.get(U)};import{useContext as zU,memo as tU}from"react";import{Component as sU,Suspense as nU}from"react";import{jsx as aU}from"react/jsx-runtime";var rU=2,iU=400;class K extends sU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<rU){let L=iU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return aU(nU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as S}from"react/jsx-runtime";function eU({uiConfig:U,setUiAjaxConfiguration:L}){let $=zU(_),I=zU(F),J=Q();if(J)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let z=f(U.card);if(!z?.component){if(J)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(J)console.log("[UI] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let T=z.component,Y=S(T,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(z.isLazy){if(J)console.log("[UI] Rendering lazy component with Suspense:",z.name);return S(K,{name:z.name,fallback:z.fallback?S(z.fallback,{}):$,onError:I,children:Y})}if(J)console.log("[UI] Rendering component directly:",z.name);return Y}var b=tU(eU);import{createAxiosDateTransformer as GL}from"axios-date-transformer";import{useEffect as IU,useState as UL}from"react";var O=()=>{let[U,L]=UL(null);return IU(()=>{if(typeof window>"u")return;let $=window.WebApp;if(!$)return;$.ready(),L($)},[]),U},LL=()=>{let U=O();return[U?.initDataUnsafe,U?.initData]},$L=(U)=>{let L=O();return IU(()=>{if(!L||!U)return;return L.BackButton.onClick(U),L.BackButton.show(),()=>{L.BackButton.offClick(U),L.BackButton.hide()}},[L,U]),L?.BackButton??null},zL=()=>{return O()?.HapticFeedback??null};import{createContext as IL}from"react";var TL=H("@swarm.ing/pieui:context:navigate",()=>IL(void 0)),TU=TL;import{useContext as HU}from"react";import{createContext as JL}from"react";var HL=H("@swarm.ing/pieui:context:uiRenderer",()=>JL(null)),JU=HL;import{jsx as y}from"react/jsx-runtime";function ZU({uiConfig:U,setUiAjaxConfiguration:L}){let $=HU(_),I=HU(F),J=Q();if(J)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let z=f(U.card);if(!z?.component){if(J)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(J)console.log("[UILoading] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata,hasFallback:!!z.fallback});if(z.fallback){if(J)console.log("[UILoading] Rendering fallback for:",z.name);let Z=z.fallback;return y(Z,{})}if(J)console.log("[UILoading] No fallback, rendering full component:",z.name);let T=z.component,Y=y(JU.Provider,{value:ZU,children:y(T,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(z.isLazy)return y(K,{name:z.name,fallback:$,onError:I,children:Y});return Y}var VU=ZU;import{jsx as ZL}from"react/jsx-runtime";function YU(U,L,$){if(!L)return $;let I=U.replace(/^\//,""),J=L[I];if(!J)return $;return ZL(VU,{uiConfig:J})}import{jsx as V,Fragment as FL}from"react/jsx-runtime";var QL=({location:U,fallback:L,piecache:$,onError:I,queryOptions:J,disableGlobalForm:z})=>{let T=k(),Y=n(),Z=Q(),DU=E(()=>GL({baseURL:T}),[T]),GU=E(()=>g(),[]),QU=E(()=>T?l(T):null,[T]),_U=E(()=>T?s(T,Y):null,[T,Y]),B=O(),{data:X,isLoading:m,error:G}=DL({queryKey:["uiConfig",U.pathname+U.search,B?.initData],queryFn:async()=>{let q=new URLSearchParams(U.search);if(q.set("__pieroot","max"),B?.initData)q.set("initData",B.initData);let d="/api/content"+U.pathname+"?"+q.toString();if(Z)console.log("[PieRoot] Fetching UI configuration from:",d);let u=await DU.get(d,{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:",u.data);return u.data},enabled:!!B?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...J}),v=YU(U.pathname,$,L);if(!T)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(G&&Z)return console.error("[PieRoot] Error fetching UI configuration:",G),console.error("[PieRoot] Error details:",{message:G.message,status:G.response?.status,data:G.response?.data}),I?.(G),v;if(m||!X){if(Z)console.log("[PieRoot] Loading state:",{isLoading:m,hasUiConfiguration:!!X});return v}if(Z)console.log("[PieRoot] UI configuration loaded successfully:",X),console.log("[PieRoot] Rendering UI with configuration");return V(h.Provider,{value:GU,children:V(W.Provider,{value:QU,children:V(N.Provider,{value:_U,children:V(_.Provider,{value:L??V(FL,{}),children:V(LU,{children:V($U,{children:z?V(b,{uiConfig:X}):V("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:V(b,{uiConfig:X})})})})})})})})},_L=(U)=>{let L=E(()=>new VL,[]),$=U.queryClient??L;return V(TU.Provider,{value:U.onNavigate,children:V(x.Provider,{value:U.config,children:V(F.Provider,{value:U.onError,children:V(YL,{client:$,children:V(QL,{...U})})})})})},KL=_L;export{O as useMaxWebApp,LL as useMaxInitData,zL as useMaxHapticFeedback,$L as useMaxBackButton,KL as PieMaxRoot};
package/dist/max/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var dU=Object.create;var{getPrototypeOf:SU,defineProperty:K,getOwnPropertyNames:e,getOwnPropertyDescriptor:vU}=Object,UU=Object.prototype.hasOwnProperty;var xU=(U,L,T)=>{T=U!=null?dU(SU(U)):{};let $=L||!U||!U.__esModule?K(T,"default",{value:U,enumerable:!0}):T;for(let z of e(U))if(!UU.call($,z))K($,z,{get:()=>U[z],enumerable:!0});return $},t=new WeakMap,bU=(U)=>{var L=t.get(U),T;if(L)return L;if(L=K({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")e(U).map(($)=>!UU.call(L,$)&&K(L,$,{get:()=>U[$],enumerable:!(T=vU(U,$))||T.enumerable}));return t.set(U,L),L};var uU=(U,L)=>{for(var T in L)K(U,T,{get:L[T],enumerable:!0,configurable:!0,set:($)=>L[T]=()=>$})};var IL={};uU(IL,{useMaxWebApp:()=>V,useMaxInitData:()=>qU,useMaxHapticFeedback:()=>EU,useMaxBackButton:()=>RU,PieMaxRoot:()=>yU});module.exports=bU(IL);var _=require("react"),q=require("@tanstack/react-query");var LU=xU(require("mitt")),j=require("react");var c=globalThis,D=(U,L)=>{let T=Symbol.for(U);if(!(T in c))c[T]=L();return c[T]};function TU(){return D("@swarm.ing/pieui:mitt-emitter",()=>LU.default())}var cU=D("@swarm.ing/pieui:context:mitt",()=>j.createContext(null));var IU=cU;var zU=require("socket.io-client"),JU=require("react");var $U=D("@swarm.ing/pieui:socket-cache",()=>new Map),DU=(U)=>{let L=$U.get(U);if(L)return L;let T=zU.io(U,{autoConnect:!1,transports:["websocket"]});return $U.set(U,T),T},oU=D("@swarm.ing/pieui:context:socket",()=>JU.createContext(null)),M=oU;var NU=require("react"),o=require("centrifuge");var HU=D("@swarm.ing/pieui:centrifuge-cache",()=>new Map),ZU=(U,L)=>{if(!L)return null;let T=`${U}::${L}`,$=HU.get(T);if($)return $;async function z(){let J=await fetch(U+"api/centrifuge/gen_token");if(!J.ok){if(J.status===403)throw new o.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let I=new o.Centrifuge(L,{getToken:z});return HU.set(T,I),I},gU=D("@swarm.ing/pieui:context:centrifuge",()=>NU.createContext(null)),P=gU;var d=require("react");var w=require("react"),A=new Map,y=new Map;function k(U,L){let T=`${U}::${L}`,$=U?A.get(T):void 0,[z,I]=w.useState($??null);return w.useEffect(()=>{if(!U)return;if(A.has(T)){I(A.get(T));return}let J=y.get(T);if(!J)J=fetch(U+`api/support/${L}`,{method:"GET"}).then((N)=>N.json()).then((N)=>{return A.set(T,N),y.delete(T),N}).catch((N)=>{throw y.delete(T),N}),y.set(T,J);let Z=!1;return J.then((N)=>{if(!Z)I(N)}).catch(()=>{}),()=>{Z=!0}},[U,L,T]),z}var m=require("react");var g=D("@swarm.ing/pieui:context:pieConfig",()=>m.createContext(null)),h=()=>{let U=m.useContext(g);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},l=()=>{let{apiServer:U}=h();return U},C=l,VU=()=>{let{centrifugeServer:U}=h();return U};var F=()=>{let{enableRenderingLog:U}=h();return U};var hU=D("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function YU(){hU.resolve?.()}var lU=({children:U})=>{let L=d.useContext(M),T=C(),$=k(T,"socketIO"),z=(I)=>{if(typeof window<"u")window.sid=I.sid,YU(),console.log(`SocketIO initialized: ${window.sid}`)};return d.useEffect(()=>{if(!L)return;let I=()=>{console.log("SocketIO connected")},J=(Z)=>{console.log(`SocketIO disconnected: ${Z}`),L.connect()};if($)L.on("pieinit",z),L.on("connect",I),L.on("disconnect",J),L.connect();return()=>{if($)L.off("pieinit",z),L.off("connect",I),L.off("disconnect",J),L.disconnect()}},[L,$]),U},FU=lU;var S=require("react");var pU=({children:U})=>{let L=S.useContext(P),T=C(),$=k(T,"centrifuge");return S.useEffect(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},I=(J)=>{console.log("Centrifuge disconnected:",J)};if($)L.on("connected",z),L.on("disconnected",I),L.connect();return()=>{if($)L.disconnect()}},[L,$]),U},GU=pU;var OU=require("react");var v=require("react/jsx-runtime"),nU=D("@swarm.ing/pieui:context:fallback",()=>OU.createContext(v.jsx(v.Fragment,{}))),G=nU;var QU=require("react");var sU=D("@swarm.ing/pieui:context:lazyError",()=>QU.createContext(void 0)),O=sU;var iU=D("@swarm.ing/pieui:component-registry",()=>new Map);var x=(U)=>{return iU.get(U)};var X=require("react");var b=require("react"),_U=require("react/jsx-runtime"),rU=2,aU=400;class Q extends b.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<rU){let L=aU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((T)=>({failed:!1,attempt:T.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return _U.jsx(b.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var u=require("react/jsx-runtime");function tU({uiConfig:U,setUiAjaxConfiguration:L}){let T=X.useContext(G),$=X.useContext(O),z=F();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let I=x(U.card);if(!I?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return T}if(z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let J=I.component,Z=u.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(I.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return u.jsx(Q,{name:I.name,fallback:I.fallback?u.jsx(I.fallback,{}):T,onError:$,children:Z})}if(z)console.log("[UI] Rendering component directly:",I.name);return Z}var p=X.memo(tU);var AU=require("axios-date-transformer");var B=require("react"),V=()=>{let[U,L]=B.useState(null);return B.useEffect(()=>{if(typeof window>"u")return;let T=window.WebApp;if(!T)return;T.ready(),L(T)},[]),U},qU=()=>{let U=V();return[U?.initDataUnsafe,U?.initData]},RU=(U)=>{let L=V();return B.useEffect(()=>{if(!L||!U)return;return L.BackButton.onClick(U),L.BackButton.show(),()=>{L.BackButton.offClick(U),L.BackButton.hide()}},[L,U]),L?.BackButton??null},EU=()=>{return V()?.HapticFeedback??null};var KU=require("react");var eU=D("@swarm.ing/pieui:context:navigate",()=>KU.createContext(void 0)),XU=eU;var n=require("react");var BU=require("react");var UL=D("@swarm.ing/pieui:context:uiRenderer",()=>BU.createContext(null)),WU=UL;var W=require("react/jsx-runtime");function fU({uiConfig:U,setUiAjaxConfiguration:L}){let T=n.useContext(G),$=n.useContext(O),z=F();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let I=x(U.card);if(!I?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return T}if(z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(z)console.log("[UILoading] Rendering fallback for:",I.name);let N=I.fallback;return W.jsx(N,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let J=I.component,Z=W.jsx(WU.Provider,{value:fU,children:W.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(I.isLazy)return W.jsx(Q,{name:I.name,fallback:T,onError:$,children:Z});return Z}var jU=fU;var PU=require("react/jsx-runtime");function MU(U,L,T){if(!L)return T;let $=U.replace(/^\//,""),z=L[$];if(!z)return T;return PU.jsx(jU,{uiConfig:z})}var H=require("react/jsx-runtime"),LL=({location:U,fallback:L,piecache:T,onError:$,queryOptions:z,disableGlobalForm:I})=>{let J=l(),Z=VU(),N=F(),wU=_.useMemo(()=>AU.createAxiosDateTransformer({baseURL:J}),[J]),kU=_.useMemo(()=>TU(),[]),mU=_.useMemo(()=>J?DU(J):null,[J]),CU=_.useMemo(()=>J?ZU(J,Z):null,[J,Z]),f=V(),{data:R,isLoading:s,error:Y}=q.useQuery({queryKey:["uiConfig",U.pathname+U.search,f?.initData],queryFn:async()=>{let E=new URLSearchParams(U.search);if(E.set("__pieroot","max"),f?.initData)E.set("initData",f.initData);let r="/api/content"+U.pathname+"?"+E.toString();if(N)console.log("[PieRoot] Fetching UI configuration from:",r);let a=await wU.get(r,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(N)console.log("[PieRoot] Received UI configuration:",a.data);return a.data},enabled:!!f?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(E)=>Math.min(1000*2**E,30000),...z}),i=MU(U.pathname,T,L);if(!J)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(Y&&N)return console.error("[PieRoot] Error fetching UI configuration:",Y),console.error("[PieRoot] Error details:",{message:Y.message,status:Y.response?.status,data:Y.response?.data}),$?.(Y),i;if(s||!R){if(N)console.log("[PieRoot] Loading state:",{isLoading:s,hasUiConfiguration:!!R});return i}if(N)console.log("[PieRoot] UI configuration loaded successfully:",R),console.log("[PieRoot] Rendering UI with configuration");return H.jsx(IU.Provider,{value:kU,children:H.jsx(M.Provider,{value:mU,children:H.jsx(P.Provider,{value:CU,children:H.jsx(G.Provider,{value:L??H.jsx(H.Fragment,{}),children:H.jsx(FU,{children:H.jsx(GU,{children:I?H.jsx(p,{uiConfig:R}):H.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:H.jsx(p,{uiConfig:R})})})})})})})})},TL=(U)=>{let L=_.useMemo(()=>new q.QueryClient,[]),T=U.queryClient??L;return H.jsx(XU.Provider,{value:U.onNavigate,children:H.jsx(g.Provider,{value:U.config,children:H.jsx(O.Provider,{value:U.onError,children:H.jsx(q.QueryClientProvider,{client:T,children:H.jsx(LL,{...U})})})})})},yU=TL;
2
+ var hU=Object.create;var{getPrototypeOf:cU,defineProperty:W,getOwnPropertyNames:LU,getOwnPropertyDescriptor:lU}=Object,$U=Object.prototype.hasOwnProperty;var pU=(U,L,$)=>{$=U!=null?hU(cU(U)):{};let z=L||!U||!U.__esModule?W($,"default",{value:U,enumerable:!0}):$;for(let T of LU(U))if(!$U.call(z,T))W(z,T,{get:()=>U[T],enumerable:!0});return z},UU=new WeakMap,oU=(U)=>{var L=UU.get(U),$;if(L)return L;if(L=W({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")LU(U).map((z)=>!$U.call(L,z)&&W(L,z,{get:()=>U[z],enumerable:!($=lU(U,z))||$.enumerable}));return UU.set(U,L),L};var sU=(U,L)=>{for(var $ in L)W(U,$,{get:L[$],enumerable:!0,configurable:!0,set:(z)=>L[$]=()=>z})};var KL={};sU(KL,{useMaxWebApp:()=>G,useMaxInitData:()=>jU,useMaxHapticFeedback:()=>AU,useMaxBackButton:()=>MU,PieMaxRoot:()=>mU});module.exports=oU(KL);var X=require("react"),q=require("@tanstack/react-query");var zU=pU(require("mitt")),A=require("react");var c=globalThis,H=(U,L)=>{let $=Symbol.for(U);if(!($ in c))c[$]=L();return c[$]};function IU(){return H("@swarm.ing/pieui:mitt-emitter",()=>zU.default())}var nU=H("@swarm.ing/pieui:context:mitt",()=>A.createContext(null));var TU=nU;var HU=require("socket.io-client"),ZU=require("react");var JU=H("@swarm.ing/pieui:socket-cache",()=>new Map),VU=(U)=>{let L=JU.get(U);if(L)return L;let $=HU.io(U,{autoConnect:!1,transports:["websocket"]});return JU.set(U,$),$},rU=H("@swarm.ing/pieui:context:socket",()=>ZU.createContext(null)),P=rU;var DU=require("react"),l=require("centrifuge");var YU=H("@swarm.ing/pieui:centrifuge-cache",()=>new Map),GU=(U,L)=>{if(!L)return null;let $=`${U}::${L}`,z=YU.get($);if(z)return z;async function T(){let J=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new l.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let I=new l.Centrifuge(L,{getToken:T});return YU.set($,I),I},iU=H("@swarm.ing/pieui:context:centrifuge",()=>DU.createContext(null)),f=iU;var m=require("react");var x=require("react"),y=new Map,w=new Map;function C(U,L){let $=`${U}::${L}`,z=U?y.get($):void 0,[T,I]=x.useState(z??null);return x.useEffect(()=>{if(!U)return;if(y.has($)){I(y.get($));return}let J=w.get($);if(!J)J=fetch(U+`api/support/${L}`,{method:"GET"}).then((V)=>V.json()).then((V)=>{return y.set($,V),w.delete($),V}).catch((V)=>{throw w.delete($),V}),w.set($,J);let Y=!1;return J.then((V)=>{if(!Y)I(V)}).catch(()=>{}),()=>{Y=!0}},[U,L,$]),T}var k=require("react");var p=H("@swarm.ing/pieui:context:pieConfig",()=>k.createContext(null)),o=()=>{let U=k.useContext(p);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},s=()=>{let{apiServer:U}=o();return U},S=s,QU=()=>{let{centrifugeServer:U}=o();return U};var _=()=>{let{enableRenderingLog:U}=o();return U};var aU=(U)=>{let L=document.cookie?document.cookie.split(";"):[];for(let $ of L){let z=$.indexOf("=");if((z===-1?$:$.slice(0,z)).trim()===U){let I=z===-1?"":$.slice(z+1).trim();try{return decodeURIComponent(I)}catch{return I}}}return null},tU={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,L){return(U==="local"?window.localStorage:window.sessionStorage).getItem(L)},readCookie:aU,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let L=document.getElementsByName(U);if(!L.length)return null;let $=L[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},_U=tU;var eU={};function D(){return eU}var FU=new Map;var KU=(U)=>{return FU.has(U)?FU.get(U):null};var OU,UL={isClient(){return!0},readSid(){return OU},setSid(U){OU=U},readWebStorage(U,L){let $=D(),z=U==="local"?$.storage:$.sessionStorage;return z?z.getItem(L):null},async readWebStorageAsync(U,L){let $=D(),z=U==="local"?$.asyncStorage:$.asyncSessionStorage;if(z)return z.getItem(L);let T=U==="local"?$.storage:$.sessionStorage;return T?T.getItem(L):null},readCookie(U){let L=D();return L.getCookie?L.getCookie(U):null},readUrlParams(U){let L=D();return L.getRouteParams?L.getRouteParams(U):[]},readDomInput(U){let L=D();return L.getInput?L.getInput(U):KU(U)},submitGlobalForm(){D().submitForm?.()}},XU=UL;var LL=typeof navigator<"u"&&navigator.product==="ReactNative",$L=LL?XU:_U,b=$L;var zL=H("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function qU(){zL.resolve?.()}var IL=({children:U})=>{let L=m.useContext(P),$=S(),z=C($,"socketIO"),T=(I)=>{if(b.isClient())b.setSid(I.sid),qU(),console.log(`SocketIO initialized: ${b.readSid()}`)};return m.useEffect(()=>{if(!L)return;let I=()=>{console.log("SocketIO connected")},J=(Y)=>{console.log(`SocketIO disconnected: ${Y}`),L.connect()};if(z)L.on("pieinit",T),L.on("connect",I),L.on("disconnect",J),L.connect();return()=>{if(z)L.off("pieinit",T),L.off("connect",I),L.off("disconnect",J),L.disconnect()}},[L,z]),U},EU=IL;var v=require("react");var TL=({children:U})=>{let L=v.useContext(f),$=S(),z=C($,"centrifuge");return v.useEffect(()=>{if(!L)return;let T=()=>{console.log("Centrifuge connected")},I=(J)=>{console.log("Centrifuge disconnected:",J)};if(z)L.on("connected",T),L.on("disconnected",I),L.connect();return()=>{if(z)L.disconnect()}},[L,z]),U},BU=TL;var WU=require("react");var d=require("react/jsx-runtime"),JL=H("@swarm.ing/pieui:context:fallback",()=>WU.createContext(d.jsx(d.Fragment,{}))),F=JL;var NU=require("react");var HL=H("@swarm.ing/pieui:context:lazyError",()=>NU.createContext(void 0)),K=HL;var ZL=H("@swarm.ing/pieui:component-registry",()=>new Map);var u=(U)=>{return ZL.get(U)};var N=require("react");var g=require("react"),RU=require("react/jsx-runtime"),VL=2,YL=400;class O extends g.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<VL){let L=YL*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return RU.jsx(g.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var h=require("react/jsx-runtime");function DL({uiConfig:U,setUiAjaxConfiguration:L}){let $=N.useContext(F),z=N.useContext(K),T=_();if(T)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let I=u(U.card);if(!I?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(T)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let J=I.component,Y=h.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if(I.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",I.name);return h.jsx(O,{name:I.name,fallback:I.fallback?h.jsx(I.fallback,{}):$,onError:z,children:Y})}if(T)console.log("[UI] Rendering component directly:",I.name);return Y}var n=N.memo(DL);var bU=require("axios-date-transformer");var R=require("react"),G=()=>{let[U,L]=R.useState(null);return R.useEffect(()=>{if(typeof window>"u")return;let $=window.WebApp;if(!$)return;$.ready(),L($)},[]),U},jU=()=>{let U=G();return[U?.initDataUnsafe,U?.initData]},MU=(U)=>{let L=G();return R.useEffect(()=>{if(!L||!U)return;return L.BackButton.onClick(U),L.BackButton.show(),()=>{L.BackButton.offClick(U),L.BackButton.hide()}},[L,U]),L?.BackButton??null},AU=()=>{return G()?.HapticFeedback??null};var PU=require("react");var GL=H("@swarm.ing/pieui:context:navigate",()=>PU.createContext(void 0)),fU=GL;var r=require("react");var yU=require("react");var QL=H("@swarm.ing/pieui:context:uiRenderer",()=>yU.createContext(null)),wU=QL;var j=require("react/jsx-runtime");function xU({uiConfig:U,setUiAjaxConfiguration:L}){let $=r.useContext(F),z=r.useContext(K),T=_();if(T)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let I=u(U.card);if(!I?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(T)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(T)console.log("[UILoading] Rendering fallback for:",I.name);let V=I.fallback;return j.jsx(V,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",I.name);let J=I.component,Y=j.jsx(wU.Provider,{value:xU,children:j.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if(I.isLazy)return j.jsx(O,{name:I.name,fallback:$,onError:z,children:Y});return Y}var CU=xU;var SU=require("react/jsx-runtime");function kU(U,L,$){if(!L)return $;let z=U.replace(/^\//,""),T=L[z];if(!T)return $;return SU.jsx(CU,{uiConfig:T})}var Z=require("react/jsx-runtime"),_L=({location:U,fallback:L,piecache:$,onError:z,queryOptions:T,disableGlobalForm:I})=>{let J=s(),Y=QU(),V=_(),vU=X.useMemo(()=>bU.createAxiosDateTransformer({baseURL:J}),[J]),dU=X.useMemo(()=>IU(),[]),uU=X.useMemo(()=>J?VU(J):null,[J]),gU=X.useMemo(()=>J?GU(J,Y):null,[J,Y]),M=G(),{data:E,isLoading:i,error:Q}=q.useQuery({queryKey:["uiConfig",U.pathname+U.search,M?.initData],queryFn:async()=>{let B=new URLSearchParams(U.search);if(B.set("__pieroot","max"),M?.initData)B.set("initData",M.initData);let t="/api/content"+U.pathname+"?"+B.toString();if(V)console.log("[PieRoot] Fetching UI configuration from:",t);let e=await vU.get(t,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(V)console.log("[PieRoot] Received UI configuration:",e.data);return e.data},enabled:!!M?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(B)=>Math.min(1000*2**B,30000),...T}),a=kU(U.pathname,$,L);if(!J)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(Q&&V)return console.error("[PieRoot] Error fetching UI configuration:",Q),console.error("[PieRoot] Error details:",{message:Q.message,status:Q.response?.status,data:Q.response?.data}),z?.(Q),a;if(i||!E){if(V)console.log("[PieRoot] Loading state:",{isLoading:i,hasUiConfiguration:!!E});return a}if(V)console.log("[PieRoot] UI configuration loaded successfully:",E),console.log("[PieRoot] Rendering UI with configuration");return Z.jsx(TU.Provider,{value:dU,children:Z.jsx(P.Provider,{value:uU,children:Z.jsx(f.Provider,{value:gU,children:Z.jsx(F.Provider,{value:L??Z.jsx(Z.Fragment,{}),children:Z.jsx(EU,{children:Z.jsx(BU,{children:I?Z.jsx(n,{uiConfig:E}):Z.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:Z.jsx(n,{uiConfig:E})})})})})})})})},FL=(U)=>{let L=X.useMemo(()=>new q.QueryClient,[]),$=U.queryClient??L;return Z.jsx(fU.Provider,{value:U.onNavigate,children:Z.jsx(p.Provider,{value:U.config,children:Z.jsx(K.Provider,{value:U.onError,children:Z.jsx(q.QueryClientProvider,{client:$,children:Z.jsx(_L,{...U})})})})})},mU=FL;
@@ -0,0 +1,15 @@
1
+ import { PieBaseRootProps } from '../components/PieBaseRoot/types';
2
+ /**
3
+ * React Native root for PieUI. Behaves exactly like {@link PieBaseRoot} but
4
+ * never renders the implicit `<form id="piedata_global_form">` wrapper — there
5
+ * is no HTML form on native, so the global "submit" is handled by the platform
6
+ * `ClientSources` implementation instead (wire it via
7
+ * {@link configureNativeClientSources}).
8
+ *
9
+ * The host registers its own React Native leaf components with
10
+ * `registerPieComponent` and renders the server-driven tree through `UI` /
11
+ * `PieCard` inside this root.
12
+ */
13
+ declare const PieNativeRoot: (props: PieBaseRootProps) => import("react").JSX.Element;
14
+ export default PieNativeRoot;
15
+ //# sourceMappingURL=PieNativeRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PieNativeRoot.d.ts","sourceRoot":"","sources":["../../src/native/PieNativeRoot.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAElE;;;;;;;;;;GAUG;AACH,QAAA,MAAM,aAAa,GAAI,OAAO,gBAAgB,gCAE7C,CAAA;AAED,eAAe,aAAa,CAAA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * React Native variant of `AutoRedirectCard`. On mount routes to `data.url` via
3
+ * `Linking` (external) or `NavigateContext` (internal), rendering the fallback
4
+ * in the meantime.
5
+ */
6
+ declare const AutoRedirectCard: ({ data }: {
7
+ data: any;
8
+ }) => import("react").JSX.Element;
9
+ export default AutoRedirectCard;
10
+ //# sourceMappingURL=AutoRedirectCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoRedirectCard.d.ts","sourceRoot":"","sources":["../../../src/native/components/AutoRedirectCard.tsx"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,QAAA,MAAM,gBAAgB,GAAI,UAAU;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,gCAYhD,CAAA;AAED,eAAe,gBAAgB,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { SetUiAjaxConfigurationType, UIConfigType } from '../../types';
2
+ /**
3
+ * React Native variant of `BoxCard`. Renders its child config inside a `View`
4
+ * (a `Pressable` when `data.url` is set), routing external URLs through
5
+ * `Linking` and internal ones through `NavigateContext`.
6
+ */
7
+ declare const BoxCard: ({ data, content, setUiAjaxConfiguration, }: {
8
+ data: any;
9
+ content: UIConfigType;
10
+ setUiAjaxConfiguration?: SetUiAjaxConfigurationType;
11
+ }) => import("react").JSX.Element;
12
+ export default BoxCard;
13
+ //# sourceMappingURL=BoxCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoxCard.d.ts","sourceRoot":"","sources":["../../../src/native/components/BoxCard.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAStE;;;;GAIG;AACH,QAAA,MAAM,OAAO,GAAI,4CAId;IACC,IAAI,EAAE,GAAG,CAAA;IACT,OAAO,EAAE,YAAY,CAAA;IACrB,sBAAsB,CAAC,EAAE,0BAA0B,CAAA;CACtD,gCA6BA,CAAA;AAED,eAAe,OAAO,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * React Native variant of `DeviceStorageCard`. Persists `data.value` to the
3
+ * host's sync storage adapter (`configureNativeClientSources({ storage })`,
4
+ * e.g. MMKV) under `data.key`, and mirrors it into the native form store under
5
+ * `data.name` so it can participate in Ajax submissions by name. Renders
6
+ * nothing visible.
7
+ */
8
+ declare const DeviceStorageCard: ({ data }: {
9
+ data: any;
10
+ }) => import("react").JSX.Element;
11
+ export default DeviceStorageCard;
12
+ //# sourceMappingURL=DeviceStorageCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceStorageCard.d.ts","sourceRoot":"","sources":["../../../src/native/components/DeviceStorageCard.tsx"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,QAAA,MAAM,iBAAiB,GAAI,UAAU;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,gCAyCjD,CAAA;AAED,eAAe,iBAAiB,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * React Native variant of `HTMLEmbedCard`. React Native cannot render arbitrary
3
+ * HTML, so this shows the markup as stripped plain text inside a `<Text>` and
4
+ * supports the `update` event. The web variant's WebRTC/AI streaming is
5
+ * browser-only and intentionally omitted here.
6
+ */
7
+ declare const HTMLEmbedCard: ({ data }: {
8
+ data: any;
9
+ }) => import("react").JSX.Element;
10
+ export default HTMLEmbedCard;
11
+ //# sourceMappingURL=HTMLEmbedCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTMLEmbedCard.d.ts","sourceRoot":"","sources":["../../../src/native/components/HTMLEmbedCard.tsx"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,QAAA,MAAM,aAAa,GAAI,UAAU;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,gCA6B7C,CAAA;AAED,eAAe,aAAa,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * React Native variant of `HiddenCard`. There is no hidden `<input>` on native,
3
+ * so the value is published to the native form store under `data.name` — a
4
+ * plain dep name then resolves to it exactly as it would from a hidden input on
5
+ * web. Renders nothing visible.
6
+ */
7
+ declare const HiddenCard: ({ data }: {
8
+ data: any;
9
+ }) => import("react").JSX.Element;
10
+ export default HiddenCard;
11
+ //# sourceMappingURL=HiddenCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HiddenCard.d.ts","sourceRoot":"","sources":["../../../src/native/components/HiddenCard.tsx"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,QAAA,MAAM,UAAU,GAAI,UAAU;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,gCAmC1C,CAAA;AAED,eAAe,UAAU,CAAA"}