@swarm.ing/pieui 2.1.7 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/components/index.esm.js +1 -1
  2. package/dist/components/index.js +1 -1
  3. package/dist/index.d.ts +2 -2
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.esm.js +2 -2
  6. package/dist/index.js +2 -2
  7. package/dist/max/index.esm.js +1 -1
  8. package/dist/max/index.js +1 -1
  9. package/dist/native/index.esm.js +2 -2
  10. package/dist/native/index.js +2 -2
  11. package/dist/providers/CentrifugeIOInitProvider.d.ts.map +1 -1
  12. package/dist/providers/SocketIOInitProvider.d.ts.map +1 -1
  13. package/dist/server/card.d.ts +28 -0
  14. package/dist/server/card.d.ts.map +1 -0
  15. package/dist/server/cards/AjaxGroupCard.d.ts +8 -0
  16. package/dist/server/cards/AjaxGroupCard.d.ts.map +1 -0
  17. package/dist/server/cards/HTMLEmbedCard.d.ts +6 -0
  18. package/dist/server/cards/HTMLEmbedCard.d.ts.map +1 -0
  19. package/dist/server/cards/HiddenCard.d.ts +6 -0
  20. package/dist/server/cards/HiddenCard.d.ts.map +1 -0
  21. package/dist/server/cards/OneOfCard.d.ts +8 -0
  22. package/dist/server/cards/OneOfCard.d.ts.map +1 -0
  23. package/dist/server/cards/UnionCard.d.ts +8 -0
  24. package/dist/server/cards/UnionCard.d.ts.map +1 -0
  25. package/dist/server/cards/index.d.ts +6 -0
  26. package/dist/server/cards/index.d.ts.map +1 -0
  27. package/dist/server/form.d.ts +5 -0
  28. package/dist/server/form.d.ts.map +1 -0
  29. package/dist/server/index.d.ts +9 -0
  30. package/dist/server/index.d.ts.map +1 -0
  31. package/dist/server/index.esm.js +382 -0
  32. package/dist/server/index.js +427 -0
  33. package/dist/server/page.d.ts +26 -0
  34. package/dist/server/page.d.ts.map +1 -0
  35. package/dist/server/realtime.d.ts +13 -0
  36. package/dist/server/realtime.d.ts.map +1 -0
  37. package/dist/server/types.d.ts +28 -0
  38. package/dist/server/types.d.ts.map +1 -0
  39. package/dist/server/web.d.ts +23 -0
  40. package/dist/server/web.d.ts.map +1 -0
  41. package/dist/telegram/index.esm.js +1 -1
  42. package/dist/telegram/index.js +1 -1
  43. package/dist/tests/linkStatus.test.d.ts +2 -0
  44. package/dist/tests/linkStatus.test.d.ts.map +1 -0
  45. package/dist/tests/server/card-fill.test.d.ts +2 -0
  46. package/dist/tests/server/card-fill.test.d.ts.map +1 -0
  47. package/dist/tests/server/card-generate.test.d.ts +2 -0
  48. package/dist/tests/server/card-generate.test.d.ts.map +1 -0
  49. package/dist/tests/server/cards.test.d.ts +2 -0
  50. package/dist/tests/server/cards.test.d.ts.map +1 -0
  51. package/dist/tests/server/e2e.test.d.ts +2 -0
  52. package/dist/tests/server/e2e.test.d.ts.map +1 -0
  53. package/dist/tests/server/entry.test.d.ts +2 -0
  54. package/dist/tests/server/entry.test.d.ts.map +1 -0
  55. package/dist/tests/server/form.test.d.ts +2 -0
  56. package/dist/tests/server/form.test.d.ts.map +1 -0
  57. package/dist/tests/server/page.test.d.ts +2 -0
  58. package/dist/tests/server/page.test.d.ts.map +1 -0
  59. package/dist/tests/server/realtime.test.d.ts +2 -0
  60. package/dist/tests/server/realtime.test.d.ts.map +1 -0
  61. package/dist/tests/server/web-ajax.test.d.ts +2 -0
  62. package/dist/tests/server/web-ajax.test.d.ts.map +1 -0
  63. package/dist/tests/server/web-content.test.d.ts +2 -0
  64. package/dist/tests/server/web-content.test.d.ts.map +1 -0
  65. package/dist/tests/server/web-process.test.d.ts +2 -0
  66. package/dist/tests/server/web-process.test.d.ts.map +1 -0
  67. package/dist/tests/server/web-token.test.d.ts +2 -0
  68. package/dist/tests/server/web-token.test.d.ts.map +1 -0
  69. package/dist/types/index.d.ts +15 -0
  70. package/dist/types/index.d.ts.map +1 -1
  71. package/dist/util/linkStatus.d.ts +33 -0
  72. package/dist/util/linkStatus.d.ts.map +1 -0
  73. package/dist/util/pieConfig.d.ts +11 -0
  74. package/dist/util/pieConfig.d.ts.map +1 -1
  75. package/package.json +28 -3
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- var b$=Object.create;var{getPrototypeOf:v$,defineProperty:HU,getOwnPropertyNames:XZ,getOwnPropertyDescriptor:m$}=Object,YZ=Object.prototype.hasOwnProperty;var BZ=(U,Z,$)=>{$=U!=null?b$(v$(U)):{};let z=Z||!U||!U.__esModule?HU($,"default",{value:U,enumerable:!0}):$;for(let T of XZ(U))if(!YZ.call(z,T))HU(z,T,{get:()=>U[T],enumerable:!0});return z},GZ=new WeakMap,p$=(U)=>{var Z=GZ.get(U),$;if(Z)return Z;if(Z=HU({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")XZ(U).map((z)=>!YZ.call(Z,z)&&HU(Z,z,{get:()=>U[z],enumerable:!($=m$(U,z))||$.enumerable}));return GZ.set(U,Z),Z};var h$=(U,Z)=>{for(var $ in Z)HU(U,$,{get:Z[$],enumerable:!0,configurable:!0,set:(z)=>Z[$]=()=>z})};var xz={};h$(xz,{usePieEmit:()=>KZ,useAjaxSubmit:()=>N$,unregisterComponent:()=>jZ,trackLazy:()=>KU,submitGlobalForm:()=>f$,registry:()=>y,registerPieComponent:()=>F,registerMultipleComponents:()=>EZ,readAjaxKeyAsync:()=>JZ,readAjaxKey:()=>TZ,preloadComponent:()=>sU,prefetchLazyComponents:()=>yZ,pieName:()=>x$,parseDepName:()=>OU,hasComponent:()=>CZ,getRegistrySize:()=>kZ,getRegistryEntry:()=>t,getLazyComponentNames:()=>iU,getEmitter:()=>o,getComponentMeta:()=>fZ,getAllRegisteredComponents:()=>xZ,cn:()=>C$,UnionCard:()=>oZ,UIRendererContext:()=>C,UILoading:()=>RU,UI:()=>N,SocketIOContext:()=>b,SessionStorageCard:()=>H$,SequenceCard:()=>uZ,PieRoot:()=>hU,PiePreviewRoot:()=>L$,PieConfigContext:()=>c,PieCard:()=>M,PieBaseRoot:()=>M$,PIEBREAK:()=>_U,OneOfCard:()=>O$,MittContext:()=>v,IOEventsCard:()=>$$,HiddenCard:()=>tZ,HTMLEmbedCard:()=>rZ,FallbackContext:()=>j,DeviceStorageCard:()=>J$,CentrifugeIOContext:()=>S,BoxCard:()=>Y$,AutoRedirectCard:()=>U$,AjaxGroupCard:()=>G$});module.exports=p$(xz);var k=require("react");var QU=require("react");var oU=globalThis,A=(U,Z)=>{let $=Symbol.for(U);if(!($ in oU))oU[$]=Z();return oU[$]};var c=A("@swarm.ing/pieui:context:pieConfig",()=>QU.createContext(null)),TU=()=>{let U=QU.useContext(c);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},JU=()=>{let{apiServer:U}=TU();return U},WU=JU,DU=()=>{let{centrifugeServer:U}=TU();return U};var p=()=>{let{enableRenderingLog:U}=TU();return U},qZ=p;var _U="__piedemo__";var QZ=require("react"),lU=require("centrifuge");var OZ=A("@swarm.ing/pieui:centrifuge-cache",()=>new Map),VU=(U,Z)=>{if(!Z)return null;let $=`${U}::${Z}`,z=OZ.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 lU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let H=new lU.Centrifuge(Z,{getToken:T});return OZ.set($,H),H},g$=A("@swarm.ing/pieui:context:centrifuge",()=>QZ.createContext(null)),S=g$;var DZ=require("socket.io-client"),_Z=require("react");var WZ=A("@swarm.ing/pieui:socket-cache",()=>new Map),FU=(U)=>{let Z=WZ.get(U);if(Z)return Z;let $=DZ.io(U,{autoConnect:!1,transports:["websocket"]});return WZ.set(U,$),$},u$=A("@swarm.ing/pieui:context:socket",()=>_Z.createContext(null)),b=u$;var VZ=BZ(require("mitt")),r=require("react");function o(){return A("@swarm.ing/pieui:mitt-emitter",()=>VZ.default())}var FZ=A("@swarm.ing/pieui:context:mitt",()=>r.createContext(null));function KZ(U){let Z=r.useContext(FZ);return r.useCallback(($,z)=>{(Z??o()).emit(`pie${$}_${U}`,z)},[U,Z])}var v=FZ;function AZ(U){return U.wasRecovering===!0&&U.recovered===!1}function PZ(U){return U.recoverable===!1}function MZ(U,Z,$){let z=U.getSubscription(Z);if(z)return{subscription:z,createdHere:!1};return{subscription:U.newSubscription(Z,$),createdHere:!0}}var n=require("react/jsx-runtime"),d$=({card:U,data:Z,children:$,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:H=!1,centrifugeChannel:J=void 0,methods:G=void 0,stored:I=void 0,onResync:Y=void 0})=>{let D=qZ(),O=k.useRef(G);O.current=G;let V=k.useRef(Y);if(V.current=Y,D)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:T,mitt:H,centrifugeChannel:J}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!$);let B=k.useContext(b),q=k.useContext(S),_=k.useContext(v);if(k.useEffect(()=>{if(!B||!z||!O.current||!Z.name){if(D&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:z,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let P=Object.keys(O.current??{}).map((W)=>{let X=`pie${W}_${Z.name}`;if(D)console.log(`[PieCard] Socket.IO registering event: ${X}`);let Q=(x)=>{O.current?.[W]?.(x)};return B.on(X,Q),[X,Q]});return()=>{P.forEach(([W,X])=>{if(D)console.log(`[PieCard] Socket.IO unregistering event: ${W}`);B.off(W,X)})}},[B,Z.name,z]),k.useEffect(()=>{if(!q||!T||!J||!Z.name){if(D&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!q,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let P=Object.keys(O.current??{}).map((W)=>{let X=`pie${W}_${Z.name}_${J}`;if(D)console.log(`[PieCard] Centrifuge subscribing to channel: ${X}`);let{subscription:Q,createdHere:x}=MZ(q,X,{recoverable:!0,positioned:!0}),uU=(d)=>{if(D)console.log(`[PieCard] Centrifuge received data on ${X}:`,d.data);O.current?.[W]?.(d.data)},u=(d)=>{if(PZ(d))console.warn(`[PieCard] Centrifuge channel ${X} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(AZ(d)){if(D)console.log(`[PieCard] Centrifuge recovery gap on ${X}; requesting resync`);V.current?.({channel:X,reason:"gap"})}};return Q.on("publication",uU),Q.on("subscribed",u),Q.subscribe(),{subscription:Q,createdHere:x,onPublication:uU,onSubscribed:u}});return()=>{P.forEach(({subscription:W,createdHere:X,onPublication:Q,onSubscribed:x})=>{if(D)console.log("[PieCard] Centrifuge unsubscribing from channel");if(W.off("publication",Q),W.off("subscribed",x),X)W.unsubscribe(),q.removeSubscription(W)})}},[q,J,Z.name,T]),k.useEffect(()=>{if(!_||!H||!Z.name){if(D&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!_,useMittSupport:H,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let K=Object.keys(O.current??{}),P={};return K.forEach((W)=>{let X=`pie${W}_${Z.name}`,Q=(x)=>{if(D)console.log(`[PieCard] Mitt registering event: ${X}`);O.current?.[W]?.(x)};P[X]=Q,_.on(X,Q)}),()=>{Object.entries(P).forEach(([W,X])=>{if(D)console.log(`[PieCard] Mitt unregistering event: ${W}`);_.off(W,X)})}},[_,Z.name,H]),D)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return n.jsxs(n.Fragment,{children:[n.jsx("input",{type:"hidden",name:Z.name,value:JSON.stringify(I)}),$]});return $},M=d$;var RZ=require("react"),l=new Map;function LZ(U,Z){return Z.catch(()=>{if(l.get(U)===Z)l.delete(U)}),l.set(U,Z),Z}function KU(U,Z){return RZ.lazy(()=>{if(l.has(Z))return l.get(Z);return LZ(Z,U().then(($)=>$))})}var wZ=async(U,Z)=>{if(!Z)return;if(l.has(U))return l.get(U);return LZ(U,Z().then(($)=>$))};var y=A("@swarm.ing/pieui:component-registry",()=>new Map),c$=(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=KU(Z.loader,U.name),Z.isLazy=!0;return Z};function F(U){let Z=c$(U);return y.set(Z.name,Z),Z.component}var EZ=(U)=>{U.forEach((Z)=>F(Z))},jZ=(U)=>{y.delete(U)},CZ=(U)=>{return y.has(U)},fZ=(U)=>{return y.get(U)?.metadata},t=(U)=>{return y.get(U)},xZ=()=>{return Array.from(y.keys())},kZ=()=>{return y.size},iU=()=>Array.from(y.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),sU=(U)=>{let Z=y.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return wZ(U,Z.loader)},NZ=!1,yZ=()=>{if(NZ||typeof window>"u")return;NZ=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=iU(),$="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=Z.length)return;$(()=>{Promise.resolve().then(()=>sU(Z[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};var IU=require("react");var SZ=require("react");var AU=require("react/jsx-runtime"),o$=A("@swarm.ing/pieui:context:fallback",()=>SZ.createContext(AU.jsx(AU.Fragment,{}))),j=o$;var bZ=require("react");var l$=A("@swarm.ing/pieui:context:lazyError",()=>bZ.createContext(void 0)),h=l$;var PU=require("react"),vZ=require("react/jsx-runtime"),i$=2,s$=400;class a extends PU.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<i$){let Z=s$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},Z)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return vZ.jsx(PU.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var MU=require("react/jsx-runtime");function r$({uiConfig:U,setUiAjaxConfiguration:Z}){let $=IU.useContext(j),z=IU.useContext(h),T=p();if(T)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!Z);let H=t(U.card);if(!H?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(T)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let J=H.component,G=MU.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(H.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",H.name);return MU.jsx(a,{name:H.name,fallback:H.fallback?MU.jsx(H.fallback,{}):$,onError:z,children:G})}if(T)console.log("[UI] Rendering component directly:",H.name);return G}var N=IU.memo(r$);var rU=require("react");var mZ=require("react");var n$=A("@swarm.ing/pieui:context:uiRenderer",()=>mZ.createContext(null)),C=n$;var GU=require("react/jsx-runtime");function pZ({uiConfig:U,setUiAjaxConfiguration:Z}){let $=rU.useContext(j),z=rU.useContext(h),T=p();if(T)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!Z);let H=t(U.card);if(!H?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(T)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(T)console.log("[UILoading] Rendering fallback for:",H.name);let I=H.fallback;return GU.jsx(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",H.name);let J=H.component,G=GU.jsx(C.Provider,{value:pZ,children:GU.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(H.isLazy)return GU.jsx(a,{name:H.name,fallback:$,onError:z,children:G});return G}var RU=pZ;var hZ=require("react");var LU=require("react/jsx-runtime"),t$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=hZ.useContext(C)??N;return LU.jsx(M,{card:z,data:U,children:LU.jsx("div",{style:T,id:z,children:Z.map((J,G)=>{return LU.jsx(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${G}`)})})})},gZ=t$;var uZ=F({name:"SequenceCard",component:gZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var dZ=require("react");var nU=require("react/jsx-runtime"),a$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z}=U,T=dZ.useContext(C)??N;return nU.jsx(M,{card:z,data:U,children:Z.map((H,J)=>{return nU.jsx(T,{uiConfig:H,setUiAjaxConfiguration:$},`children-${J}`)})})},cZ=a$;var oZ=F({name:"UnionCard",component:cZ,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var wU=require("react"),lZ=BZ(require("html-react-parser"));var f=require("react");function e$(){let U=new AudioContext,Z=U.createOscillator(),$=Z.connect(U.createMediaStreamDestination());Z.start();let z=$.stream.getAudioTracks()[0];return z.enabled=!1,z}function tU(U=null,Z){let[$,z]=f.useState(!1),T=f.useRef(null),H=f.useRef(null),J=f.useRef(null),G=f.useCallback(async(O,V=!0)=>{if(T.current)I();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))z(!1)},B.ontrack=(Q)=>{if(U)U.srcObject=Q.streams[0]},V){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(Q.getTracks()[0],Q)}else{let Q=e$();B.addTrack(Q)}let q=B.createDataChannel("oai-events");H.current=q,J.current=new Promise((Q)=>{q.addEventListener("open",()=>{Q()})});let _=await B.createOffer();await B.setLocalDescription(_);let X=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:_.sdp,headers:{Authorization:`Bearer ${O}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:X}),T.current=B,await J.current},[U]),I=f.useCallback(()=>{let O=H.current;if(O)O.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,H.current=null,J.current=null},[U]),Y=f.useCallback((O)=>{let V=H.current;if(!V){console.error("Data channel is not ready",O);return}let B=new Date().toLocaleTimeString();if(O.event_id=O.event_id||crypto.randomUUID(),V.send(JSON.stringify(O)),!O.timestamp)O.timestamp=B;Z?.(O)},[Z,U]),D=f.useCallback((O)=>{if(!H.current){console.error("Data channel is not ready");return}let B=()=>{Y({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:O}]}}),Y({type:"response.create"})};if(J.current)J.current.then(B);else B()},[Z,U]);return f.useEffect(()=>{let O=H.current;if(!O)return;let V=(B)=>{let q=JSON.parse(B.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();Z?.(q)};return O.addEventListener("message",V),()=>{O.removeEventListener("message",V)}},[Z,U]),{isSessionActive:$,startSession:G,stopSession:I,sendTextMessage:D}}var sZ=require("react/jsx-runtime"),Uz=({data:U})=>{let{html:Z,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:H}=U,[J,G]=wU.useState(Z),{isSessionActive:I,startSession:Y,sendTextMessage:D}=tU(null,(q)=>{if(console.log(q.type,q.type==="response.output_text.delta"&&q.delta),q.type==="response.output_text.delta"&&q.delta)G((_)=>_+q.delta)});return wU.useEffect(()=>{G(Z)},[Z]),sZ.jsx(M,{card:"HTMLEmbedCard",data:U,methods:{update:(q)=>{G(q.value)},generateUsingAI:async(q)=>{try{if(!I&&q.token)await Y(q.token,!1);D(q.prompt)}catch(_){console.error("Failed to generate using AI",_)}},initializeAI:async(q)=>{if(!I&&q.token)await Y(q.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:$,useMittSupport:T,centrifugeChannel:H,children:lZ.default(J)})},iZ=Uz;var rZ=F({name:"HTMLEmbedCard",component:iZ,metadata:{author:"Swarm.ing"}});var NU=require("react");var aU=require("react/jsx-runtime"),Zz=({data:U})=>{let{name:Z,value:$,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J}=U,[G,I]=NU.useState($);return NU.useEffect(()=>{I($)},[$]),aU.jsx(M,{card:"HiddenCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J,methods:{update:({value:Y})=>{I(Y)}},children:aU.jsx("input",{type:"hidden",id:Z,name:Z,value:G})})},nZ=Zz;var tZ=F({name:"HiddenCard",component:nZ,metadata:{author:"Swarm.ing"}});var XU=require("react");var aZ=require("react");var $z=A("@swarm.ing/pieui:context:navigate",()=>aZ.createContext(void 0)),m=$z;var EU=require("react/jsx-runtime"),zz=({data:U})=>{let{url:Z}=U,$=XU.useContext(m),z=XU.useContext(j);return XU.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else $?.(Z)},[Z,$]),EU.jsx(EU.Fragment,{children:z})},eZ=zz;var U$=F({name:"AutoRedirectCard",component:eZ,metadata:{author:"Swarm.ing"}});var g=require("react-toastify"),jU=require("react-toastify");var UU=require("react");var e=require("react/jsx-runtime"),Hz={bounce:g.Bounce,slide:g.Slide,zoom:g.Zoom,flip:g.Flip},Tz=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?Hz[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};jU.toast(U.message,Z)},Jz=(U)=>{console.log("Log event",U)},Iz=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let Z=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},$=window.Notification.permission;if($==="granted"){Z();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")Z()})},Gz=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T}=U,H=UU.useContext(m),J=UU.useRef(H);J.current=H;let G=UU.useMemo(()=>({alert:Tz,log:Jz,push:Iz,redirect:(I)=>{if(I.to){let Y=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()},reload:(I)=>{if(I.to){let Y=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()}}),[]);return e.jsx(e.Fragment,{children:e.jsx(M,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T,methods:G,children:e.jsx(jU.ToastContainer,{})})})},Z$=Gz;var $$=F({name:"IOEventsCard",component:Z$,metadata:{author:"Swarm.ing"}});var YU=require("react");var eU=require("react/jsx-runtime"),Xz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G}=U,[I,Y]=YU.useState(z);return YU.useEffect(()=>{Y(z)},[z]),YU.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem($,I)},[$,I]),eU.jsx(M,{card:"SessionStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:D})=>{Y(D)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:eU.jsx("input",{type:"hidden",id:Z,name:Z,value:I})})},z$=Xz;var H$=F({name:"SessionStorageCard",component:z$,metadata:{author:"PieData"}});var BU=require("react");var UZ=require("react/jsx-runtime"),Yz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G}=U,[I,Y]=BU.useState(z);return BU.useEffect(()=>{Y(z)},[z]),BU.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem($,I)},[$,I]),UZ.jsx(M,{card:"DeviceStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:D})=>{Y(D)},remove:()=>{localStorage.removeItem($),Y("")}},children:UZ.jsx("input",{type:"hidden",id:Z,name:Z,value:I})})},T$=Yz;var J$=F({name:"DeviceStorageCard",component:T$,metadata:{author:"PieData"}});var E=require("react");var ZZ=require("react/jsx-runtime"),Bz=({data:U,content:Z})=>{let{useLoader:$,noReturn:z,returnType:T,useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I}=U,Y=E.useContext(j),D=E.useContext(C)??N,[O,V]=E.useState(!1),[B,q]=E.useState(null),_=E.useRef(Z),K=E.useContext(v),P=E.useCallback((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)_.current=Q;if(!z)q(Q)},[z]),W=E.useCallback((Q)=>{_.current=Q.content,q(Q.content)},[]),X=E.useCallback((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)for(let x of Q)K?.emit(x.name,x.data)},[z,K]);if(E.useEffect(()=>{q(Z),V(!1)},[Z]),!B&&$)return Y;return ZZ.jsx(M,{card:"AjaxGroupCard",data:U,methods:{changeContent:W},useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I,children:ZZ.jsx(D,{uiConfig:B??_.current,setUiAjaxConfiguration:T==="events"?X:P})})},I$=Bz;var G$=F({name:"AjaxGroupCard",component:I$,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var $Z=require("react");var CU=require("react/jsx-runtime"),qz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,url:T,sx:H}=U,J=$Z.useContext(m),G=$Z.useContext(C)??N;return CU.jsx(M,{card:z,data:U,children:CU.jsx("div",{style:H,id:z,onClick:(Y)=>{if(T)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:CU.jsx(G,{setUiAjaxConfiguration:$,uiConfig:Z})})})},X$=qz;var Y$=F({name:"BoxCard",component:X$,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var B$=require("react");var fU=require("react/jsx-runtime"),Oz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=B$.useContext(C)??N;return fU.jsx(M,{card:z,data:U,children:fU.jsx("div",{style:T,id:z,children:Z.map((J,G)=>{return fU.jsx(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${G}`)})})})},q$=Oz;var O$=F({name:"OneOfCard",component:q$,metadata:{author:"Swarm.ing",description:"Different variants"}});var ZU=require("react"),$U=require("@tanstack/react-query");var bU=require("react");var yU=require("react"),xU=new Map,kU=new Map;function SU(U,Z){let $=`${U}::${Z}`,z=U?xU.get($):void 0,[T,H]=yU.useState(z??null);return yU.useEffect(()=>{if(!U)return;if(xU.has($)){H(xU.get($));return}let J=kU.get($);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return xU.set($,I),kU.delete($),I}).catch((I)=>{throw kU.delete($),I}),kU.set($,J);let G=!1;return J.then((I)=>{if(!G)H(I)}).catch(()=>{}),()=>{G=!0}},[U,Z,$]),T}var Qz=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let $ of Z){let z=$.indexOf("=");if((z===-1?$:$.slice(0,z)).trim()===U){let H=z===-1?"":$.slice(z+1).trim();try{return decodeURIComponent(H)}catch{return H}}}return null},Wz={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:Qz,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let $=Z[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},Q$=Wz;var Dz={};function i(){return Dz}var W$=new Map;var D$=(U)=>{return W$.has(U)?W$.get(U):null};var _$,_z={isClient(){return!0},readSid(){return _$},setSid(U){_$=U},readWebStorage(U,Z){let $=i(),z=U==="local"?$.storage:$.sessionStorage;return z?z.getItem(Z):null},async readWebStorageAsync(U,Z){let $=i(),z=U==="local"?$.asyncStorage:$.asyncSessionStorage;if(z)return z.getItem(Z);let T=U==="local"?$.storage:$.sessionStorage;return T?T.getItem(Z):null},readCookie(U){let Z=i();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=i();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=i();return Z.getInput?Z.getInput(U):D$(U)},submitGlobalForm(){i().submitForm?.()}},V$=_z;var Vz=typeof navigator<"u"&&navigator.product==="ReactNative",Fz=Vz?V$:Q$,R=Fz;var qU=A("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function F$(){qU.resolve?.()}function zZ(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!qU.promise)qU.promise=new Promise((U)=>{qU.resolve=()=>{U()}});return qU.promise}var Kz=({children:U})=>{let Z=bU.useContext(b),$=WU(),z=SU($,"socketIO"),T=(H)=>{if(R.isClient())R.setSid(H.sid),F$(),console.log(`SocketIO initialized: ${R.readSid()}`)};return bU.useEffect(()=>{if(!Z)return;let H=()=>{console.log("SocketIO connected")},J=(G)=>{console.log(`SocketIO disconnected: ${G}`),Z.connect()};if(z)Z.on("pieinit",T),Z.on("connect",H),Z.on("disconnect",J),Z.connect();return()=>{if(z)Z.off("pieinit",T),Z.off("connect",H),Z.off("disconnect",J),Z.disconnect()}},[Z,z]),U},vU=Kz;var mU=require("react");var Az=({children:U})=>{let Z=mU.useContext(S),$=WU(),z=SU($,"centrifuge");return mU.useEffect(()=>{if(!Z)return;let T=()=>{console.log("Centrifuge connected")},H=(J)=>{console.log("Centrifuge disconnected:",J)};if(z)Z.on("connected",T),Z.on("disconnected",H),Z.connect();return()=>{if(z)Z.disconnect()}},[Z,z]),U},pU=Az;var P$=require("axios-date-transformer");var A$=require("react/jsx-runtime");function K$(U,Z,$){if(!Z)return $;let z=U.replace(/^\//,""),T=Z[z];if(!T)return $;return A$.jsx(RU,{uiConfig:T})}var L=require("react/jsx-runtime"),Pz=({location:U,fallback:Z,piecache:$,onError:z,queryOptions:T,disableGlobalForm:H})=>{let J=JU(),G=DU(),I=p(),Y=ZU.useMemo(()=>P$.createAxiosDateTransformer({baseURL:J||""}),[J]),D=ZU.useMemo(()=>o(),[]),O=ZU.useMemo(()=>J?FU(J):null,[J]),V=ZU.useMemo(()=>J?VU(J,G):null,[J,G]),{data:B,isLoading:q,error:_}=$U.useQuery({queryKey:["uiConfig",U.pathname+U.search,J],enabled:!!J,queryFn:async()=>{let P=new URLSearchParams(U.search);P.set("__pieroot","web");let W="/api/content"+U.pathname+"?"+P.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",W);let X=await Y.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",X.data);return X.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(P)=>Math.min(1000*2**P,30000),...T}),K=K$(U.pathname,$,Z);if(!J)return K??null;if(I)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!$);if(_){if(I)console.error("[PieRoot] Error fetching UI configuration:",_),console.error("[PieRoot] Error details:",{message:_.message,status:_.response?.status,data:_.response?.data});return z?.(_),K}if(q||!B){if(I)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!B});return K}if(I)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L.jsx(v.Provider,{value:D,children:L.jsx(b.Provider,{value:O,children:L.jsx(S.Provider,{value:V,children:L.jsx(j.Provider,{value:Z??L.jsx(L.Fragment,{}),children:L.jsx(vU,{children:L.jsx(pU,{children:H?L.jsx(N,{uiConfig:B}):L.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:L.jsx(N,{uiConfig:B})})})})})})})})},Mz=(U)=>{let Z=ZU.useMemo(()=>new $U.QueryClient,[]),$=U.queryClient??Z;return L.jsx(m.Provider,{value:U.onNavigate,children:L.jsx(c.Provider,{value:U.config,children:L.jsx(h.Provider,{value:U.onError,children:L.jsx($U.QueryClientProvider,{client:$,children:L.jsx(Pz,{...U})})})})})},hU=Mz;var zU=require("react"),gU=require("@tanstack/react-query");var w=require("react/jsx-runtime"),Rz=({location:U,fallback:Z,children:$,disableGlobalForm:z})=>{let T=JU(),H=DU(),J=p(),G=zU.useMemo(()=>o(),[]),I=zU.useMemo(()=>T?FU(T):null,[T]),Y=zU.useMemo(()=>T?VU(T,H):null,[T,H]);if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",H),console.log("[PieRoot] Fallback provided:",!!Z);return w.jsx(v.Provider,{value:G,children:w.jsx(b.Provider,{value:I,children:w.jsx(S.Provider,{value:Y,children:w.jsx(j.Provider,{value:Z??w.jsx(w.Fragment,{}),children:w.jsx(vU,{children:w.jsx(pU,{children:z?$:w.jsx("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},Lz=(U)=>{let[Z]=zU.useState(()=>new gU.QueryClient),$=U.queryClient??Z;return w.jsx(m.Provider,{value:U.onNavigate,children:w.jsx(c.Provider,{value:U.config,children:w.jsx(h.Provider,{value:U.onError,children:w.jsx(gU.QueryClientProvider,{client:$,children:w.jsx(Rz,{...U})})})})})},M$=Lz;var R$=require("react");var HZ=require("react/jsx-runtime"),wz=HZ.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),Nz=({apiServer:U,pathname:Z="/",search:$="",centrifugeServer:z,fallback:T,enableRenderingLog:H=!1})=>{let J=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",G=R$.useMemo(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:H,pageProcessor:"web"}),[J,z,H]);return HZ.jsx(hU,{location:{pathname:Z,search:$},config:G,fallback:T??wz,onNavigate:(Y)=>{if(typeof window<"u")window.history.pushState(null,"",Y)}})},L$=Nz;var w$=require("react");var Ez=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],jz=new Set(["telegram:cloud","telegram:secure"]),OU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of Ez){let $=Z+":";if(U.startsWith($))return{source:Z,key:U.slice($.length)}}return{source:"dom",key:U}},TZ=(U,Z=!1)=>{let{source:$,key:z}=OU(U);if($==="sid"){let H=R.readSid();if(!H)throw Error("SocketIO isn't initialized properly");return[H]}if($==="localStorage"||$==="sessionStorage")try{let H=R.readWebStorage($==="localStorage"?"local":"session",z);if(H===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[H]}catch(H){if(Z)console.warn(`Failed to read ${$} key ${z}:`,H);return[]}if($==="cookie"){let H=R.readCookie(z);if(H===null){if(Z)console.warn(`No cookie found for key ${z}`);return[]}return[H]}if($==="url"){let H=R.readUrlParams(z);if(!H.length&&Z)console.warn(`No URL query param found for key ${z}`);return H}if(jz.has($)){if(Z)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=R.readDomInput(z);if(T===null){if(Z)console.warn(`No input found with name ${z}`);return[]}return T},Cz=(U,Z,$)=>{let z=window.Telegram?.WebApp,T=U==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,H=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if($)console.warn(`${H} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(Z,(G,I)=>{if(G){if($)console.warn(`Failed to read ${H} key ${Z}:`,G);J([]);return}if(I==null||I===""){if($)console.warn(`No ${H} value found for key ${Z}`);J([]);return}J([I])})}catch(G){if($)console.warn(`Failed to read ${H} key ${Z}:`,G);J([])}})},JZ=async(U,Z=!1)=>{let{source:$,key:z}=OU(U);if($==="telegram:cloud"||$==="telegram:secure")return Cz($,z,Z);if(($==="localStorage"||$==="sessionStorage")&&R.readWebStorageAsync)try{let T=await R.readWebStorageAsync($==="localStorage"?"local":"session",z);if(T===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[T]}catch(T){if(Z)console.warn(`Failed to read ${$} key ${z}:`,T);return[]}return TZ(U,Z)},fz=(U,Z={},$=[],z,T)=>{let H=T?.renderingLogEnabled??!1,J=T?.timeout,G=T?.retryPolicy,I=G?.maxRetries??0,Y=G?.baseDelay??1000,D=G?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",z,Z,$);return async(O={})=>{if(!R.isClient()){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!U){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await zZ();let B=new FormData;for(let[K,P]of Object.entries({...Z,...O}))B.append(K,P);for(let K of $){let{key:P}=OU(K);for(let W of await JZ(K,H))B.append(P,W)}let q=V+"api/ajax_content"+z;U(null);let _;for(let K=0;K<=I;K++){if(K>0){let X=Y*2**(K-1);if(H)console.log(`AJAX retry ${K}/${I} after ${X}ms`);await new Promise((Q)=>setTimeout(Q,X))}let P=J!=null?new AbortController:null,W=P&&setTimeout(()=>P.abort(),J);try{let X=await fetch(q,{method:"POST",body:B,signal:P?.signal});if(W)clearTimeout(W);if(!X.ok&&D.includes(X.status)&&K<I){_=Error(`HTTP ${X.status}`);continue}let x=(X.headers.get("content-type")||"").includes("application/json");if(!!X.body?.getReader&&!x){let u=X.body.getReader(),d=new TextDecoder,s="";while(!0){let{done:dU,value:k$}=await u.read();if(dU)break;s+=d.decode(k$,{stream:!0});let IZ=s.split(`
3
- `);s=IZ.pop()??"";for(let y$ of IZ){let cU=y$.trim();if(!cU)continue;try{let S$=JSON.parse(cU);U([S$])}catch{if(H)console.warn("Failed to parse streamed line:",cU)}}}if(s.trim())try{let dU=JSON.parse(s);U([dU])}catch{if(H)console.warn("Failed to parse final streamed line:",s)}return{}}else{let u=await X.json();return U(u),u}}catch(X){if(W)clearTimeout(W);if(_=X,K<I)continue;if(H)console.error("AJAX request failed:",X);return U(null),X}}if(H)console.error("AJAX request failed after retries:",_);return U(null),_}},N$=(U,Z={},$=[],z,T)=>{let{apiServer:H,enableRenderingLog:J}=TU(),G=JSON.stringify(Z),I=JSON.stringify($),Y=JSON.stringify(T);return w$.useMemo(()=>fz(U,Z,$,z,{apiServer:H,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[U,G,I,z,H,J,Y])};var E$=require("clsx"),j$=require("tailwind-merge");function C$(...U){return j$.twMerge(E$.clsx(U))}var f$=()=>{R.submitGlobalForm()};var x$=(U,Z)=>`${U}${_U}${Z}`;
2
+ var h$=Object.create;var{getPrototypeOf:p$,defineProperty:BU,getOwnPropertyNames:QZ,getOwnPropertyDescriptor:g$}=Object,WZ=Object.prototype.hasOwnProperty;var _Z=(U,Z,$)=>{$=U!=null?h$(p$(U)):{};let z=Z||!U||!U.__esModule?BU($,"default",{value:U,enumerable:!0}):$;for(let T of QZ(U))if(!WZ.call(z,T))BU(z,T,{get:()=>U[T],enumerable:!0});return z},qZ=new WeakMap,d$=(U)=>{var Z=qZ.get(U),$;if(Z)return Z;if(Z=BU({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")QZ(U).map((z)=>!WZ.call(Z,z)&&BU(Z,z,{get:()=>U[z],enumerable:!($=g$(U,z))||$.enumerable}));return qZ.set(U,Z),Z};var u$=(U,Z)=>{for(var $ in Z)BU(U,$,{get:Z[$],enumerable:!0,configurable:!0,set:(z)=>Z[$]=()=>z})};var kz={};u$(kz,{usePieEmit:()=>PZ,useOnLinkRestored:()=>e,useOnLinkLost:()=>t,useAjaxSubmit:()=>C$,unregisterComponent:()=>xZ,trackLazy:()=>NU,submitGlobalForm:()=>b$,registry:()=>b,registerPieComponent:()=>O,registerMultipleComponents:()=>yZ,readAjaxKeyAsync:()=>YZ,readAjaxKey:()=>XZ,preloadComponent:()=>nU,prefetchLazyComponents:()=>mZ,pieName:()=>k$,parseDepName:()=>FU,hasComponent:()=>fZ,getRegistrySize:()=>SZ,getRegistryEntry:()=>$U,getLazyComponentNames:()=>aU,getEmitter:()=>i,getComponentMeta:()=>bZ,getAllRegisteredComponents:()=>kZ,cn:()=>f$,UnionCard:()=>iZ,UIRendererContext:()=>C,UILoading:()=>EU,UI:()=>L,SocketIOContext:()=>S,SessionStorageCard:()=>G$,SequenceCard:()=>lZ,PieRoot:()=>uU,PiePreviewRoot:()=>j$,PieConfigContext:()=>o,PieCard:()=>P,PieBaseRoot:()=>R$,PIEBREAK:()=>AU,OneOfCard:()=>D$,MittContext:()=>m,IOEventsCard:()=>T$,HiddenCard:()=>U$,HTMLEmbedCard:()=>tZ,FallbackContext:()=>E,DeviceStorageCard:()=>Y$,CentrifugeIOContext:()=>k,BoxCard:()=>W$,AutoRedirectCard:()=>z$,AjaxGroupCard:()=>q$});module.exports=d$(kz);var f=require("react");var OU=require("react");var iU=globalThis,M=(U,Z)=>{let $=Symbol.for(U);if(!($ in iU))iU[$]=Z();return iU[$]};var o=M("@swarm.ing/pieui:context:pieConfig",()=>OU.createContext(null)),s=()=>{let U=OU.useContext(o);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},qU=()=>{let{apiServer:U}=s();return U},IU=qU,MU=()=>{let{centrifugeServer:U}=s();return U};var h=()=>{let{enableRenderingLog:U}=s();return U},VZ=h;var t=()=>{let{onLinkLost:U}=s();return U},e=()=>{let{onLinkRestored:U}=s();return U},AU="__piedemo__";var KZ=require("react"),rU=require("centrifuge");var DZ=M("@swarm.ing/pieui:centrifuge-cache",()=>new Map),PU=(U,Z)=>{if(!Z)return null;let $=`${U}::${Z}`,z=DZ.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 rU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let H=new rU.Centrifuge(Z,{getToken:T});return DZ.set($,H),H},c$=M("@swarm.ing/pieui:context:centrifuge",()=>KZ.createContext(null)),k=c$;var OZ=require("socket.io-client"),IZ=require("react");var FZ=M("@swarm.ing/pieui:socket-cache",()=>new Map),wU=(U)=>{let Z=FZ.get(U);if(Z)return Z;let $=OZ.io(U,{autoConnect:!1,transports:["websocket"]});return FZ.set(U,$),$},l$=M("@swarm.ing/pieui:context:socket",()=>IZ.createContext(null)),S=l$;var MZ=_Z(require("mitt")),UU=require("react");function i(){return M("@swarm.ing/pieui:mitt-emitter",()=>MZ.default())}var AZ=M("@swarm.ing/pieui:context:mitt",()=>UU.createContext(null));function PZ(U){let Z=UU.useContext(AZ);return UU.useCallback(($,z)=>{(Z??i()).emit(`pie${$}_${U}`,z)},[U,Z])}var m=AZ;function wZ(U){return U.wasRecovering===!0&&U.recovered===!1}function NZ(U){return U.recoverable===!1}function RZ(U,Z,$){let z=U.getSubscription(Z);if(z)return{subscription:z,createdHere:!1};return{subscription:U.newSubscription(Z,$),createdHere:!0}}var ZU=require("react/jsx-runtime"),o$=({card:U,data:Z,children:$,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:H=!1,centrifugeChannel:J=void 0,methods:X=void 0,stored:G=void 0,onResync:Y=void 0})=>{let _=VZ(),q=f.useRef(X);q.current=X;let V=f.useRef(Y);if(V.current=Y,_)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:T,mitt:H,centrifugeChannel:J}),console.log("[PieCard] Methods:",X?Object.keys(X):"none"),console.log("[PieCard] Has children:",!!$);let B=f.useContext(S),Q=f.useContext(k),F=f.useContext(m);if(f.useEffect(()=>{if(!B||!z||!q.current||!Z.name){if(_&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:z,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let A=Object.keys(q.current??{}).map((K)=>{let W=`pie${K}_${Z.name}`;if(_)console.log(`[PieCard] Socket.IO registering event: ${W}`);let D=(x)=>{q.current?.[K]?.(x)};return B.on(W,D),[W,D]});return()=>{A.forEach(([K,W])=>{if(_)console.log(`[PieCard] Socket.IO unregistering event: ${K}`);B.off(K,W)})}},[B,Z.name,z]),f.useEffect(()=>{if(!Q||!T||!J||!Z.name){if(_&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!Q,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let A=Object.keys(q.current??{}).map((K)=>{let W=`pie${K}_${Z.name}_${J}`;if(_)console.log(`[PieCard] Centrifuge subscribing to channel: ${W}`);let{subscription:D,createdHere:x}=RZ(Q,W,{recoverable:!0,positioned:!0}),lU=(l)=>{if(_)console.log(`[PieCard] Centrifuge received data on ${W}:`,l.data);q.current?.[K]?.(l.data)},c=(l)=>{if(NZ(l))console.warn(`[PieCard] Centrifuge channel ${W} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(wZ(l)){if(_)console.log(`[PieCard] Centrifuge recovery gap on ${W}; requesting resync`);V.current?.({channel:W,reason:"gap"})}};return D.on("publication",lU),D.on("subscribed",c),D.subscribe(),{subscription:D,createdHere:x,onPublication:lU,onSubscribed:c}});return()=>{A.forEach(({subscription:K,createdHere:W,onPublication:D,onSubscribed:x})=>{if(_)console.log("[PieCard] Centrifuge unsubscribing from channel");if(K.off("publication",D),K.off("subscribed",x),W)K.unsubscribe(),Q.removeSubscription(K)})}},[Q,J,Z.name,T]),f.useEffect(()=>{if(!F||!H||!Z.name){if(_&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!F,useMittSupport:H,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let I=Object.keys(q.current??{}),A={};return I.forEach((K)=>{let W=`pie${K}_${Z.name}`,D=(x)=>{if(_)console.log(`[PieCard] Mitt registering event: ${W}`);q.current?.[K]?.(x)};A[W]=D,F.on(W,D)}),()=>{Object.entries(A).forEach(([K,W])=>{if(_)console.log(`[PieCard] Mitt unregistering event: ${K}`);F.off(K,W)})}},[F,Z.name,H]),_)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return ZU.jsxs(ZU.Fragment,{children:[ZU.jsx("input",{type:"hidden",name:Z.name,value:JSON.stringify(G)}),$]});return $},P=o$;var LZ=require("react"),r=new Map;function jZ(U,Z){return Z.catch(()=>{if(r.get(U)===Z)r.delete(U)}),r.set(U,Z),Z}function NU(U,Z){return LZ.lazy(()=>{if(r.has(Z))return r.get(Z);return jZ(Z,U().then(($)=>$))})}var EZ=async(U,Z)=>{if(!Z)return;if(r.has(U))return r.get(U);return jZ(U,Z().then(($)=>$))};var b=M("@swarm.ing/pieui:component-registry",()=>new Map),s$=(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=NU(Z.loader,U.name),Z.isLazy=!0;return Z};function O(U){let Z=s$(U);return b.set(Z.name,Z),Z.component}var yZ=(U)=>{U.forEach((Z)=>O(Z))},xZ=(U)=>{b.delete(U)},fZ=(U)=>{return b.has(U)},bZ=(U)=>{return b.get(U)?.metadata},$U=(U)=>{return b.get(U)},kZ=()=>{return Array.from(b.keys())},SZ=()=>{return b.size},aU=()=>Array.from(b.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),nU=(U)=>{let Z=b.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return EZ(U,Z.loader)},CZ=!1,mZ=()=>{if(CZ||typeof window>"u")return;CZ=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=aU(),$="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=Z.length)return;$(()=>{Promise.resolve().then(()=>nU(Z[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};var QU=require("react");var vZ=require("react");var RU=require("react/jsx-runtime"),i$=M("@swarm.ing/pieui:context:fallback",()=>vZ.createContext(RU.jsx(RU.Fragment,{}))),E=i$;var hZ=require("react");var r$=M("@swarm.ing/pieui:context:lazyError",()=>hZ.createContext(void 0)),p=r$;var LU=require("react"),pZ=require("react/jsx-runtime"),a$=2,n$=400;class zU extends LU.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<a$){let Z=n$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},Z)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return pZ.jsx(LU.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var jU=require("react/jsx-runtime");function t$({uiConfig:U,setUiAjaxConfiguration:Z}){let $=QU.useContext(E),z=QU.useContext(p),T=h();if(T)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!Z);let H=$U(U.card);if(!H?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(T)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let J=H.component,X=jU.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(H.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",H.name);return jU.jsx(zU,{name:H.name,fallback:H.fallback?jU.jsx(H.fallback,{}):$,onError:z,children:X})}if(T)console.log("[UI] Rendering component directly:",H.name);return X}var L=QU.memo(t$);var tU=require("react");var gZ=require("react");var e$=M("@swarm.ing/pieui:context:uiRenderer",()=>gZ.createContext(null)),C=e$;var WU=require("react/jsx-runtime");function dZ({uiConfig:U,setUiAjaxConfiguration:Z}){let $=tU.useContext(E),z=tU.useContext(p),T=h();if(T)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!Z);let H=$U(U.card);if(!H?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(T)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(T)console.log("[UILoading] Rendering fallback for:",H.name);let G=H.fallback;return WU.jsx(G,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",H.name);let J=H.component,X=WU.jsx(C.Provider,{value:dZ,children:WU.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(H.isLazy)return WU.jsx(zU,{name:H.name,fallback:$,onError:z,children:X});return X}var EU=dZ;var uZ=require("react");var CU=require("react/jsx-runtime"),Uz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=uZ.useContext(C)??L;return CU.jsx(P,{card:z,data:U,children:CU.jsx("div",{style:T,id:z,children:Z.map((J,X)=>{return CU.jsx(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${X}`)})})})},cZ=Uz;var lZ=O({name:"SequenceCard",component:cZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var oZ=require("react");var eU=require("react/jsx-runtime"),Zz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z}=U,T=oZ.useContext(C)??L;return eU.jsx(P,{card:z,data:U,children:Z.map((H,J)=>{return eU.jsx(T,{uiConfig:H,setUiAjaxConfiguration:$},`children-${J}`)})})},sZ=Zz;var iZ=O({name:"UnionCard",component:sZ,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var yU=require("react"),rZ=_Z(require("html-react-parser"));var y=require("react");function $z(){let U=new AudioContext,Z=U.createOscillator(),$=Z.connect(U.createMediaStreamDestination());Z.start();let z=$.stream.getAudioTracks()[0];return z.enabled=!1,z}function UZ(U=null,Z){let[$,z]=y.useState(!1),T=y.useRef(null),H=y.useRef(null),J=y.useRef(null),X=y.useCallback(async(q,V=!0)=>{if(T.current)G();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))z(!1)},B.ontrack=(D)=>{if(U)U.srcObject=D.streams[0]},V){let D=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(D.getTracks()[0],D)}else{let D=$z();B.addTrack(D)}let Q=B.createDataChannel("oai-events");H.current=Q,J.current=new Promise((D)=>{Q.addEventListener("open",()=>{D()})});let F=await B.createOffer();await B.setLocalDescription(F);let W=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:F.sdp,headers:{Authorization:`Bearer ${q}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:W}),T.current=B,await J.current},[U]),G=y.useCallback(()=>{let q=H.current;if(q)q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,H.current=null,J.current=null},[U]),Y=y.useCallback((q)=>{let V=H.current;if(!V){console.error("Data channel is not ready",q);return}let B=new Date().toLocaleTimeString();if(q.event_id=q.event_id||crypto.randomUUID(),V.send(JSON.stringify(q)),!q.timestamp)q.timestamp=B;Z?.(q)},[Z,U]),_=y.useCallback((q)=>{if(!H.current){console.error("Data channel is not ready");return}let B=()=>{Y({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:q}]}}),Y({type:"response.create"})};if(J.current)J.current.then(B);else B()},[Z,U]);return y.useEffect(()=>{let q=H.current;if(!q)return;let V=(B)=>{let Q=JSON.parse(B.data);if(!Q.timestamp)Q.timestamp=new Date().toLocaleTimeString();Z?.(Q)};return q.addEventListener("message",V),()=>{q.removeEventListener("message",V)}},[Z,U]),{isSessionActive:$,startSession:X,stopSession:G,sendTextMessage:_}}var nZ=require("react/jsx-runtime"),zz=({data:U})=>{let{html:Z,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:H}=U,[J,X]=yU.useState(Z),{isSessionActive:G,startSession:Y,sendTextMessage:_}=UZ(null,(Q)=>{if(console.log(Q.type,Q.type==="response.output_text.delta"&&Q.delta),Q.type==="response.output_text.delta"&&Q.delta)X((F)=>F+Q.delta)});return yU.useEffect(()=>{X(Z)},[Z]),nZ.jsx(P,{card:"HTMLEmbedCard",data:U,methods:{update:(Q)=>{X(Q.value)},generateUsingAI:async(Q)=>{try{if(!G&&Q.token)await Y(Q.token,!1);_(Q.prompt)}catch(F){console.error("Failed to generate using AI",F)}},initializeAI:async(Q)=>{if(!G&&Q.token)await Y(Q.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:$,useMittSupport:T,centrifugeChannel:H,children:rZ.default(J)})},aZ=zz;var tZ=O({name:"HTMLEmbedCard",component:aZ,metadata:{author:"Swarm.ing"}});var xU=require("react");var ZZ=require("react/jsx-runtime"),Hz=({data:U})=>{let{name:Z,value:$,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J}=U,[X,G]=xU.useState($);return xU.useEffect(()=>{G($)},[$]),ZZ.jsx(P,{card:"HiddenCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J,methods:{update:({value:Y})=>{G(Y)}},children:ZZ.jsx("input",{type:"hidden",id:Z,name:Z,value:X})})},eZ=Hz;var U$=O({name:"HiddenCard",component:eZ,metadata:{author:"Swarm.ing"}});var _U=require("react");var Z$=require("react");var Tz=M("@swarm.ing/pieui:context:navigate",()=>Z$.createContext(void 0)),v=Tz;var fU=require("react/jsx-runtime"),Jz=({data:U})=>{let{url:Z}=U,$=_U.useContext(v),z=_U.useContext(E);return _U.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else $?.(Z)},[Z,$]),fU.jsx(fU.Fragment,{children:z})},$$=Jz;var z$=O({name:"AutoRedirectCard",component:$$,metadata:{author:"Swarm.ing"}});var g=require("react-toastify"),bU=require("react-toastify");var TU=require("react");var HU=require("react/jsx-runtime"),Gz={bounce:g.Bounce,slide:g.Slide,zoom:g.Zoom,flip:g.Flip},Xz=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?Gz[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};bU.toast(U.message,Z)},Yz=(U)=>{console.log("Log event",U)},Bz=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let Z=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},$=window.Notification.permission;if($==="granted"){Z();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")Z()})},qz=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T}=U,H=TU.useContext(v),J=TU.useRef(H);J.current=H;let X=TU.useMemo(()=>({alert:Xz,log:Yz,push:Bz,redirect:(G)=>{if(G.to){let Y=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()},reload:(G)=>{if(G.to){let Y=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()}}),[]);return HU.jsx(HU.Fragment,{children:HU.jsx(P,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T,methods:X,children:HU.jsx(bU.ToastContainer,{})})})},H$=qz;var T$=O({name:"IOEventsCard",component:H$,metadata:{author:"Swarm.ing"}});var VU=require("react");var $Z=require("react/jsx-runtime"),Qz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:X}=U,[G,Y]=VU.useState(z);return VU.useEffect(()=>{Y(z)},[z]),VU.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem($,G)},[$,G]),$Z.jsx(P,{card:"SessionStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:X,methods:{update:({value:_})=>{Y(_)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:$Z.jsx("input",{type:"hidden",id:Z,name:Z,value:G})})},J$=Qz;var G$=O({name:"SessionStorageCard",component:J$,metadata:{author:"PieData"}});var DU=require("react");var zZ=require("react/jsx-runtime"),Wz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:X}=U,[G,Y]=DU.useState(z);return DU.useEffect(()=>{Y(z)},[z]),DU.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem($,G)},[$,G]),zZ.jsx(P,{card:"DeviceStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:X,methods:{update:({value:_})=>{Y(_)},remove:()=>{localStorage.removeItem($),Y("")}},children:zZ.jsx("input",{type:"hidden",id:Z,name:Z,value:G})})},X$=Wz;var Y$=O({name:"DeviceStorageCard",component:X$,metadata:{author:"PieData"}});var j=require("react");var HZ=require("react/jsx-runtime"),_z=({data:U,content:Z})=>{let{useLoader:$,noReturn:z,returnType:T,useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G}=U,Y=j.useContext(E),_=j.useContext(C)??L,[q,V]=j.useState(!1),[B,Q]=j.useState(null),F=j.useRef(Z),I=j.useContext(m),A=j.useCallback((D)=>{if(D===null)V(!0);else if(V(!1),!z)F.current=D;if(!z)Q(D)},[z]),K=j.useCallback((D)=>{F.current=D.content,Q(D.content)},[]),W=j.useCallback((D)=>{if(D===null)V(!0);else if(V(!1),!z)for(let x of D)I?.emit(x.name,x.data)},[z,I]);if(j.useEffect(()=>{Q(Z),V(!1)},[Z]),!B&&$)return Y;return HZ.jsx(P,{card:"AjaxGroupCard",data:U,methods:{changeContent:K},useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G,children:HZ.jsx(_,{uiConfig:B??F.current,setUiAjaxConfiguration:T==="events"?W:A})})},B$=_z;var q$=O({name:"AjaxGroupCard",component:B$,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var TZ=require("react");var kU=require("react/jsx-runtime"),Vz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,url:T,sx:H}=U,J=TZ.useContext(v),X=TZ.useContext(C)??L;return kU.jsx(P,{card:z,data:U,children:kU.jsx("div",{style:H,id:z,onClick:(Y)=>{if(T)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:kU.jsx(X,{setUiAjaxConfiguration:$,uiConfig:Z})})})},Q$=Vz;var W$=O({name:"BoxCard",component:Q$,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var _$=require("react");var SU=require("react/jsx-runtime"),Dz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=_$.useContext(C)??L;return SU.jsx(P,{card:z,data:U,children:SU.jsx("div",{style:T,id:z,children:Z.map((J,X)=>{return SU.jsx(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${X}`)})})})},V$=Dz;var D$=O({name:"OneOfCard",component:V$,metadata:{author:"Swarm.ing",description:"Different variants"}});var GU=require("react"),XU=require("@tanstack/react-query");var d=require("react");var hU=require("react"),mU=new Map,vU=new Map;function pU(U,Z){let $=`${U}::${Z}`,z=U?mU.get($):void 0,[T,H]=hU.useState(z??null);return hU.useEffect(()=>{if(!U)return;if(mU.has($)){H(mU.get($));return}let J=vU.get($);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return mU.set($,G),vU.delete($),G}).catch((G)=>{throw vU.delete($),G}),vU.set($,J);let X=!1;return J.then((G)=>{if(!X)H(G)}).catch(()=>{}),()=>{X=!0}},[U,Z,$]),T}var Kz=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let $ of Z){let z=$.indexOf("=");if((z===-1?$:$.slice(0,z)).trim()===U){let H=z===-1?"":$.slice(z+1).trim();try{return decodeURIComponent(H)}catch{return H}}}return null},Fz={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:Kz,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let $=Z[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},K$=Fz;var Oz={};function a(){return Oz}var F$=new Map;var O$=(U)=>{return F$.has(U)?F$.get(U):null};var I$,Iz={isClient(){return!0},readSid(){return I$},setSid(U){I$=U},readWebStorage(U,Z){let $=a(),z=U==="local"?$.storage:$.sessionStorage;return z?z.getItem(Z):null},async readWebStorageAsync(U,Z){let $=a(),z=U==="local"?$.asyncStorage:$.asyncSessionStorage;if(z)return z.getItem(Z);let T=U==="local"?$.storage:$.sessionStorage;return T?T.getItem(Z):null},readCookie(U){let Z=a();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=a();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=a();return Z.getInput?Z.getInput(U):O$(U)},submitGlobalForm(){a().submitForm?.()}},M$=Iz;var Mz=typeof navigator<"u"&&navigator.product==="ReactNative",Az=Mz?M$:K$,w=Az;var KU=M("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function A$(){KU.resolve?.()}function JZ(){if(!w.isClient())return Promise.resolve();if(w.readSid()!==void 0)return Promise.resolve();if(!KU.promise)KU.promise=new Promise((U)=>{KU.resolve=()=>{U()}});return KU.promise}function JU(U,Z){if(Z==="up")return{state:"up",signal:U==="down"?"restored":null};return{state:"down",signal:U==="up"?"lost":null}}var Pz=({children:U})=>{let Z=d.useContext(S),$=IU(),z=pU($,"socketIO"),T=t(),H=e(),J=d.useRef(T);J.current=T;let X=d.useRef(H);X.current=H;let G=d.useRef("initial"),Y=(_)=>{if(w.isClient())w.setSid(_.sid),A$(),console.log(`SocketIO initialized: ${w.readSid()}`)};return d.useEffect(()=>{if(!Z||!z)return;let _=()=>{let{state:V,signal:B}=JU(G.current,"up");if(G.current=V,B==="restored")X.current?.("socketio");console.log("SocketIO connected")},q=(V)=>{if(console.log(`SocketIO disconnected: ${V}`),Z.connect(),V==="io client disconnect")return;let{state:B,signal:Q}=JU(G.current,"down");if(G.current=B,Q==="lost")J.current?.("socketio",V)};return Z.on("pieinit",Y),Z.on("connect",_),Z.on("disconnect",q),Z.connect(),()=>{Z.off("pieinit",Y),Z.off("connect",_),Z.off("disconnect",q),Z.disconnect()}},[Z,z]),U},gU=Pz;var u=require("react");var wz=({children:U})=>{let Z=u.useContext(k),$=IU(),z=pU($,"centrifuge"),T=t(),H=e(),J=u.useRef(T);J.current=T;let X=u.useRef(H);X.current=H;let G=u.useRef("initial");return u.useEffect(()=>{if(!Z||!z)return;let Y=(V)=>{let{state:B,signal:Q}=JU(G.current,"down");if(G.current=B,Q==="lost")J.current?.("centrifuge",V)},_=()=>{let{state:V,signal:B}=JU(G.current,"up");if(G.current=V,B==="restored")X.current?.("centrifuge");console.log("Centrifuge connected")},q=(V)=>{console.log("Centrifuge disconnected:",V),Y(V)};return Z.on("connecting",Y),Z.on("connected",_),Z.on("disconnected",q),Z.connect(),()=>{Z.off("connecting",Y),Z.off("connected",_),Z.off("disconnected",q),Z.disconnect()}},[Z,z]),U},dU=wz;var N$=require("axios-date-transformer");var w$=require("react/jsx-runtime");function P$(U,Z,$){if(!Z)return $;let z=U.replace(/^\//,""),T=Z[z];if(!T)return $;return w$.jsx(EU,{uiConfig:T})}var N=require("react/jsx-runtime"),Nz=({location:U,fallback:Z,piecache:$,onError:z,queryOptions:T,disableGlobalForm:H})=>{let J=qU(),X=MU(),G=h(),Y=GU.useMemo(()=>N$.createAxiosDateTransformer({baseURL:J||""}),[J]),_=GU.useMemo(()=>i(),[]),q=GU.useMemo(()=>J?wU(J):null,[J]),V=GU.useMemo(()=>J?PU(J,X):null,[J,X]),{data:B,isLoading:Q,error:F}=XU.useQuery({queryKey:["uiConfig",U.pathname+U.search,J],enabled:!!J,queryFn:async()=>{let A=new URLSearchParams(U.search);A.set("__pieroot","web");let K="/api/content"+U.pathname+"?"+A.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",K);let W=await Y.get(K,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",W.data);return W.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(A)=>Math.min(1000*2**A,30000),...T}),I=P$(U.pathname,$,Z);if(!J)return I??null;if(G)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",X),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!$);if(F){if(G)console.error("[PieRoot] Error fetching UI configuration:",F),console.error("[PieRoot] Error details:",{message:F.message,status:F.response?.status,data:F.response?.data});return z?.(F),I}if(Q||!B){if(G)console.log("[PieRoot] Loading state:",{isLoading:Q,hasUiConfiguration:!!B});return I}if(G)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return N.jsx(m.Provider,{value:_,children:N.jsx(S.Provider,{value:q,children:N.jsx(k.Provider,{value:V,children:N.jsx(E.Provider,{value:Z??N.jsx(N.Fragment,{}),children:N.jsx(gU,{children:N.jsx(dU,{children:H?N.jsx(L,{uiConfig:B}):N.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:N.jsx(L,{uiConfig:B})})})})})})})})},Rz=(U)=>{let Z=GU.useMemo(()=>new XU.QueryClient,[]),$=U.queryClient??Z;return N.jsx(v.Provider,{value:U.onNavigate,children:N.jsx(o.Provider,{value:U.config,children:N.jsx(p.Provider,{value:U.onError,children:N.jsx(XU.QueryClientProvider,{client:$,children:N.jsx(Nz,{...U})})})})})},uU=Rz;var YU=require("react"),cU=require("@tanstack/react-query");var R=require("react/jsx-runtime"),Lz=({location:U,fallback:Z,children:$,disableGlobalForm:z})=>{let T=qU(),H=MU(),J=h(),X=YU.useMemo(()=>i(),[]),G=YU.useMemo(()=>T?wU(T):null,[T]),Y=YU.useMemo(()=>T?PU(T,H):null,[T,H]);if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",H),console.log("[PieRoot] Fallback provided:",!!Z);return R.jsx(m.Provider,{value:X,children:R.jsx(S.Provider,{value:G,children:R.jsx(k.Provider,{value:Y,children:R.jsx(E.Provider,{value:Z??R.jsx(R.Fragment,{}),children:R.jsx(gU,{children:R.jsx(dU,{children:z?$:R.jsx("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},jz=(U)=>{let[Z]=YU.useState(()=>new cU.QueryClient),$=U.queryClient??Z;return R.jsx(v.Provider,{value:U.onNavigate,children:R.jsx(o.Provider,{value:U.config,children:R.jsx(p.Provider,{value:U.onError,children:R.jsx(cU.QueryClientProvider,{client:$,children:R.jsx(Lz,{...U})})})})})},R$=jz;var L$=require("react");var GZ=require("react/jsx-runtime"),Ez=GZ.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),Cz=({apiServer:U,pathname:Z="/",search:$="",centrifugeServer:z,fallback:T,enableRenderingLog:H=!1})=>{let J=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",X=L$.useMemo(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:H,pageProcessor:"web"}),[J,z,H]);return GZ.jsx(uU,{location:{pathname:Z,search:$},config:X,fallback:T??Ez,onNavigate:(Y)=>{if(typeof window<"u")window.history.pushState(null,"",Y)}})},j$=Cz;var E$=require("react");var yz=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],xz=new Set(["telegram:cloud","telegram:secure"]),FU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of yz){let $=Z+":";if(U.startsWith($))return{source:Z,key:U.slice($.length)}}return{source:"dom",key:U}},XZ=(U,Z=!1)=>{let{source:$,key:z}=FU(U);if($==="sid"){let H=w.readSid();if(!H)throw Error("SocketIO isn't initialized properly");return[H]}if($==="localStorage"||$==="sessionStorage")try{let H=w.readWebStorage($==="localStorage"?"local":"session",z);if(H===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[H]}catch(H){if(Z)console.warn(`Failed to read ${$} key ${z}:`,H);return[]}if($==="cookie"){let H=w.readCookie(z);if(H===null){if(Z)console.warn(`No cookie found for key ${z}`);return[]}return[H]}if($==="url"){let H=w.readUrlParams(z);if(!H.length&&Z)console.warn(`No URL query param found for key ${z}`);return H}if(xz.has($)){if(Z)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=w.readDomInput(z);if(T===null){if(Z)console.warn(`No input found with name ${z}`);return[]}return T},fz=(U,Z,$)=>{let z=window.Telegram?.WebApp,T=U==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,H=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if($)console.warn(`${H} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(Z,(X,G)=>{if(X){if($)console.warn(`Failed to read ${H} key ${Z}:`,X);J([]);return}if(G==null||G===""){if($)console.warn(`No ${H} value found for key ${Z}`);J([]);return}J([G])})}catch(X){if($)console.warn(`Failed to read ${H} key ${Z}:`,X);J([])}})},YZ=async(U,Z=!1)=>{let{source:$,key:z}=FU(U);if($==="telegram:cloud"||$==="telegram:secure")return fz($,z,Z);if(($==="localStorage"||$==="sessionStorage")&&w.readWebStorageAsync)try{let T=await w.readWebStorageAsync($==="localStorage"?"local":"session",z);if(T===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[T]}catch(T){if(Z)console.warn(`Failed to read ${$} key ${z}:`,T);return[]}return XZ(U,Z)},bz=(U,Z={},$=[],z,T)=>{let H=T?.renderingLogEnabled??!1,J=T?.timeout,X=T?.retryPolicy,G=X?.maxRetries??0,Y=X?.baseDelay??1000,_=X?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",z,Z,$);return async(q={})=>{if(!w.isClient()){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!U){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await JZ();let B=new FormData;for(let[I,A]of Object.entries({...Z,...q}))B.append(I,A);for(let I of $){let{key:A}=FU(I);for(let K of await YZ(I,H))B.append(A,K)}let Q=V+"api/ajax_content"+z;U(null);let F;for(let I=0;I<=G;I++){if(I>0){let W=Y*2**(I-1);if(H)console.log(`AJAX retry ${I}/${G} after ${W}ms`);await new Promise((D)=>setTimeout(D,W))}let A=J!=null?new AbortController:null,K=A&&setTimeout(()=>A.abort(),J);try{let W=await fetch(Q,{method:"POST",body:B,signal:A?.signal});if(K)clearTimeout(K);if(!W.ok&&_.includes(W.status)&&I<G){F=Error(`HTTP ${W.status}`);continue}let x=(W.headers.get("content-type")||"").includes("application/json");if(!!W.body?.getReader&&!x){let c=W.body.getReader(),l=new TextDecoder,n="";while(!0){let{done:oU,value:S$}=await c.read();if(oU)break;n+=l.decode(S$,{stream:!0});let BZ=n.split(`
3
+ `);n=BZ.pop()??"";for(let m$ of BZ){let sU=m$.trim();if(!sU)continue;try{let v$=JSON.parse(sU);U([v$])}catch{if(H)console.warn("Failed to parse streamed line:",sU)}}}if(n.trim())try{let oU=JSON.parse(n);U([oU])}catch{if(H)console.warn("Failed to parse final streamed line:",n)}return{}}else{let c=await W.json();return U(c),c}}catch(W){if(K)clearTimeout(K);if(F=W,I<G)continue;if(H)console.error("AJAX request failed:",W);return U(null),W}}if(H)console.error("AJAX request failed after retries:",F);return U(null),F}},C$=(U,Z={},$=[],z,T)=>{let{apiServer:H,enableRenderingLog:J}=s(),X=JSON.stringify(Z),G=JSON.stringify($),Y=JSON.stringify(T);return E$.useMemo(()=>bz(U,Z,$,z,{apiServer:H,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[U,X,G,z,H,J,Y])};var y$=require("clsx"),x$=require("tailwind-merge");function f$(...U){return x$.twMerge(y$.clsx(U))}var b$=()=>{w.submitGlobalForm()};var k$=(U,Z)=>`${U}${AU}${Z}`;
@@ -1,2 +1,2 @@
1
1
  "use client";
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};
2
+ import{useMemo as P}from"react";import{QueryClient as XT,QueryClientProvider as qT,useQuery as DT}from"@tanstack/react-query";import EU from"mitt";import{createContext as jU,useCallback as AT,useContext as PT}from"react";var h=globalThis,Y=(U,T)=>{let z=Symbol.for(U);if(!(z in h))h[z]=T();return h[z]};function n(){return Y("@swarm.ing/pieui:mitt-emitter",()=>EU())}var IU=Y("@swarm.ing/pieui:context:mitt",()=>jU(null));var i=IU;import{io as OU}from"socket.io-client";import{createContext as MU}from"react";var t=Y("@swarm.ing/pieui:socket-cache",()=>new Map),e=(U)=>{let T=t.get(U);if(T)return T;let z=OU(U,{autoConnect:!1,transports:["websocket"]});return t.set(U,z),z},LU=Y("@swarm.ing/pieui:context:socket",()=>MU(null)),R=LU;import{createContext as AU}from"react";import{Centrifuge as UU}from"centrifuge";var TU=Y("@swarm.ing/pieui:centrifuge-cache",()=>new Map),zU=(U,T)=>{if(!T)return null;let z=`${U}::${T}`,Z=TU.get(z);if(Z)return Z;async function H(){let J=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new UU.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let $=new UU(T,{getToken:H});return TU.set(z,$),$},PU=Y("@swarm.ing/pieui:context:centrifuge",()=>AU(null)),y=PU;import{useContext as hU,useEffect as dU,useRef as u}from"react";import{useEffect as RU,useState as yU}from"react";var w=new Map,x=new Map;function b(U,T){let z=`${U}::${T}`,Z=U?w.get(z):void 0,[H,$]=yU(Z??null);return RU(()=>{if(!U)return;if(w.has(z)){$(w.get(z));return}let J=x.get(z);if(!J)J=fetch(U+`api/support/${T}`,{method:"GET"}).then((V)=>V.json()).then((V)=>{return w.set(z,V),x.delete(z),V}).catch((V)=>{throw x.delete(z),V}),x.set(z,J);let G=!1;return J.then((V)=>{if(!G)$(V)}).catch(()=>{}),()=>{G=!0}},[U,T,z]),H}import{createContext as wU,useContext as xU}from"react";var d=Y("@swarm.ing/pieui:context:pieConfig",()=>wU(null)),A=()=>{let U=xU(d);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},g=()=>{let{apiServer:U}=A();return U},C=g,$U=()=>{let{centrifugeServer:U}=A();return U};var N=()=>{let{enableRenderingLog:U}=A();return U};var m=()=>{let{onLinkLost:U}=A();return U},f=()=>{let{onLinkRestored:U}=A();return U};var bU=(U)=>{let T=document.cookie?document.cookie.split(";"):[];for(let z of T){let Z=z.indexOf("=");if((Z===-1?z:z.slice(0,Z)).trim()===U){let $=Z===-1?"":z.slice(Z+1).trim();try{return decodeURIComponent($)}catch{return $}}}return null},CU={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,T){return(U==="local"?window.localStorage:window.sessionStorage).getItem(T)},readCookie:bU,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let T=document.getElementsByName(U);if(!T.length)return null;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[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},JU=CU;var mU={};function B(){return mU}var HU=new Map;var ZU=(U)=>{return HU.has(U)?HU.get(U):null};var VU,fU={isClient(){return!0},readSid(){return VU},setSid(U){VU=U},readWebStorage(U,T){let z=B(),Z=U==="local"?z.storage:z.sessionStorage;return Z?Z.getItem(T):null},async readWebStorageAsync(U,T){let z=B(),Z=U==="local"?z.asyncStorage:z.asyncSessionStorage;if(Z)return Z.getItem(T);let H=U==="local"?z.storage:z.sessionStorage;return H?H.getItem(T):null},readCookie(U){let T=B();return T.getCookie?T.getCookie(U):null},readUrlParams(U){let T=B();return T.getRouteParams?T.getRouteParams(U):[]},readDomInput(U){let T=B();return T.getInput?T.getInput(U):ZU(U)},submitGlobalForm(){B().submitForm?.()}},YU=fU;var SU=typeof navigator<"u"&&navigator.product==="ReactNative",kU=SU?YU:JU,S=kU;var vU=Y("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function GU(){vU.resolve?.()}function E(U,T){if(T==="up")return{state:"up",signal:U==="down"?"restored":null};return{state:"down",signal:U==="up"?"lost":null}}var gU=({children:U})=>{let T=hU(R),z=C(),Z=b(z,"socketIO"),H=m(),$=f(),J=u(H);J.current=H;let G=u($);G.current=$;let V=u("initial"),q=(K)=>{if(S.isClient())S.setSid(K.sid),GU(),console.log(`SocketIO initialized: ${S.readSid()}`)};return dU(()=>{if(!T||!Z)return;let K=()=>{let{state:_,signal:F}=E(V.current,"up");if(V.current=_,F==="restored")G.current?.("socketio");console.log("SocketIO connected")},D=(_)=>{if(console.log(`SocketIO disconnected: ${_}`),T.connect(),_==="io client disconnect")return;let{state:F,signal:X}=E(V.current,"down");if(V.current=F,X==="lost")J.current?.("socketio",_)};return T.on("pieinit",q),T.on("connect",K),T.on("disconnect",D),T.connect(),()=>{T.off("pieinit",q),T.off("connect",K),T.off("disconnect",D),T.disconnect()}},[T,Z]),U},QU=gU;import{useContext as uU,useEffect as pU,useRef as p}from"react";var lU=({children:U})=>{let T=uU(y),z=C(),Z=b(z,"centrifuge"),H=m(),$=f(),J=p(H);J.current=H;let G=p($);G.current=$;let V=p("initial");return pU(()=>{if(!T||!Z)return;let q=(_)=>{let{state:F,signal:X}=E(V.current,"down");if(V.current=F,X==="lost")J.current?.("centrifuge",_)},K=()=>{let{state:_,signal:F}=E(V.current,"up");if(V.current=_,F==="restored")G.current?.("centrifuge");console.log("Centrifuge connected")},D=(_)=>{console.log("Centrifuge disconnected:",_),q(_)};return T.on("connecting",q),T.on("connected",K),T.on("disconnected",D),T.connect(),()=>{T.off("connecting",q),T.off("connected",K),T.off("disconnected",D),T.disconnect()}},[T,Z]),U},_U=lU;import{createContext as cU}from"react";import{jsx as aU,Fragment as sU}from"react/jsx-runtime";var oU=Y("@swarm.ing/pieui:context:fallback",()=>cU(aU(sU,{}))),j=oU;import{createContext as rU}from"react";var nU=Y("@swarm.ing/pieui:context:lazyError",()=>rU(void 0)),I=nU;var iU=Y("@swarm.ing/pieui:component-registry",()=>new Map);var k=(U)=>{return iU.get(U)};import{useContext as FU,memo as $T}from"react";import{Component as tU,Suspense as eU}from"react";import{jsx as zT}from"react/jsx-runtime";var UT=2,TT=400;class O extends tU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<UT){let T=TT*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((z)=>({failed:!1,attempt:z.attempt+1}))},T)}}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 zT(eU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as l}from"react/jsx-runtime";function JT({uiConfig:U,setUiAjaxConfiguration:T}){let z=FU(j),Z=FU(I),H=N();if(H)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:",!!T);let $=k(U.card);if(!$?.component){if(H)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return z}if(H)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let J=$.component,G=l(J,{data:U.data,content:U.content,setUiAjaxConfiguration:T});if($.isLazy){if(H)console.log("[UI] Rendering lazy component with Suspense:",$.name);return l(O,{name:$.name,fallback:$.fallback?l($.fallback,{}):z,onError:Z,children:G})}if(H)console.log("[UI] Rendering component directly:",$.name);return G}var c=$T(JT);import{createAxiosDateTransformer as BT}from"axios-date-transformer";import{useEffect as KU,useState as HT}from"react";var M=()=>{let[U,T]=HT(null);return KU(()=>{if(typeof window>"u")return;let z=window.WebApp;if(!z)return;z.ready(),T(z)},[]),U},ZT=()=>{let U=M();return[U?.initDataUnsafe,U?.initData]},VT=(U)=>{let T=M();return KU(()=>{if(!T||!U)return;return T.BackButton.onClick(U),T.BackButton.show(),()=>{T.BackButton.offClick(U),T.BackButton.hide()}},[T,U]),T?.BackButton??null},YT=()=>{return M()?.HapticFeedback??null};import{createContext as GT}from"react";var QT=Y("@swarm.ing/pieui:context:navigate",()=>GT(void 0)),XU=QT;import{useContext as DU}from"react";import{createContext as _T}from"react";var FT=Y("@swarm.ing/pieui:context:uiRenderer",()=>_T(null)),qU=FT;import{jsx as v}from"react/jsx-runtime";function BU({uiConfig:U,setUiAjaxConfiguration:T}){let z=DU(j),Z=DU(I),H=N();if(H)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:",!!T);let $=k(U.card);if(!$?.component){if(H)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return z}if(H)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(H)console.log("[UILoading] Rendering fallback for:",$.name);let V=$.fallback;return v(V,{})}if(H)console.log("[UILoading] No fallback, rendering full component:",$.name);let J=$.component,G=v(qU.Provider,{value:BU,children:v(J,{data:U.data,content:U.content,setUiAjaxConfiguration:T})});if($.isLazy)return v(O,{name:$.name,fallback:z,onError:Z,children:G});return G}var WU=BU;import{jsx as KT}from"react/jsx-runtime";function NU(U,T,z){if(!T)return z;let Z=U.replace(/^\//,""),H=T[Z];if(!H)return z;return KT(WU,{uiConfig:H})}import{jsx as Q,Fragment as ET}from"react/jsx-runtime";var WT=({location:U,fallback:T,piecache:z,onError:Z,queryOptions:H,disableGlobalForm:$})=>{let J=g(),G=$U(),V=N(),q=P(()=>BT({baseURL:J}),[J]),K=P(()=>n(),[]),D=P(()=>J?e(J):null,[J]),_=P(()=>J?zU(J,G):null,[J,G]),F=M(),{data:X,isLoading:o,error:W}=DT({queryKey:["uiConfig",U.pathname+U.search,F?.initData],queryFn:async()=>{let L=new URLSearchParams(U.search);if(L.set("__pieroot","max"),F?.initData)L.set("initData",F.initData);let a="/api/content"+U.pathname+"?"+L.toString();if(V)console.log("[PieRoot] Fetching UI configuration from:",a);let r=await q.get(a,{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:",r.data);return r.data},enabled:!!F?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(L)=>Math.min(1000*2**L,30000),...H}),s=NU(U.pathname,z,T);if(!J)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(W&&V)return console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data}),Z?.(W),s;if(o||!X){if(V)console.log("[PieRoot] Loading state:",{isLoading:o,hasUiConfiguration:!!X});return s}if(V)console.log("[PieRoot] UI configuration loaded successfully:",X),console.log("[PieRoot] Rendering UI with configuration");return Q(i.Provider,{value:K,children:Q(R.Provider,{value:D,children:Q(y.Provider,{value:_,children:Q(j.Provider,{value:T??Q(ET,{}),children:Q(QU,{children:Q(_U,{children:$?Q(c,{uiConfig:X}):Q("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:Q(c,{uiConfig:X})})})})})})})})},NT=(U)=>{let T=P(()=>new XT,[]),z=U.queryClient??T;return Q(XU.Provider,{value:U.onNavigate,children:Q(d.Provider,{value:U.config,children:Q(I.Provider,{value:U.onError,children:Q(qT,{client:z,children:Q(WT,{...U})})})})})},jT=NT;export{M as useMaxWebApp,ZT as useMaxInitData,YT as useMaxHapticFeedback,VT as useMaxBackButton,jT as PieMaxRoot};
package/dist/max/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
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;
2
+ var cU=Object.create;var{getPrototypeOf:oU,defineProperty:w,getOwnPropertyNames:YU,getOwnPropertyDescriptor:sU}=Object,GU=Object.prototype.hasOwnProperty;var aU=(U,T,z)=>{z=U!=null?cU(oU(U)):{};let J=T||!U||!U.__esModule?w(z,"default",{value:U,enumerable:!0}):z;for(let H of YU(U))if(!GU.call(J,H))w(J,H,{get:()=>U[H],enumerable:!0});return J},VU=new WeakMap,rU=(U)=>{var T=VU.get(U),z;if(T)return T;if(T=w({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")YU(U).map((J)=>!GU.call(T,J)&&w(T,J,{get:()=>U[J],enumerable:!(z=sU(U,J))||z.enumerable}));return VU.set(U,T),T};var nU=(U,T)=>{for(var z in T)w(U,z,{get:T[z],enumerable:!0,configurable:!0,set:(J)=>T[z]=()=>J})};var NT={};nU(NT,{useMaxWebApp:()=>E,useMaxInitData:()=>bU,useMaxHapticFeedback:()=>mU,useMaxBackButton:()=>CU,PieMaxRoot:()=>lU});module.exports=rU(NT);var P=require("react"),R=require("@tanstack/react-query");var QU=aU(require("mitt")),f=require("react");var i=globalThis,Y=(U,T)=>{let z=Symbol.for(U);if(!(z in i))i[z]=T();return i[z]};function _U(){return Y("@swarm.ing/pieui:mitt-emitter",()=>QU.default())}var iU=Y("@swarm.ing/pieui:context:mitt",()=>f.createContext(null));var FU=iU;var XU=require("socket.io-client"),qU=require("react");var KU=Y("@swarm.ing/pieui:socket-cache",()=>new Map),DU=(U)=>{let T=KU.get(U);if(T)return T;let z=XU.io(U,{autoConnect:!1,transports:["websocket"]});return KU.set(U,z),z},tU=Y("@swarm.ing/pieui:context:socket",()=>qU.createContext(null)),S=tU;var WU=require("react"),t=require("centrifuge");var BU=Y("@swarm.ing/pieui:centrifuge-cache",()=>new Map),NU=(U,T)=>{if(!T)return null;let z=`${U}::${T}`,J=BU.get(z);if(J)return J;async function H(){let Z=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!Z.ok){if(Z.status===401||Z.status===403)throw new t.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let $=new t.Centrifuge(T,{getToken:H});return BU.set(z,$),$},eU=Y("@swarm.ing/pieui:context:centrifuge",()=>WU.createContext(null)),k=eU;var D=require("react");var d=require("react"),v=new Map,h=new Map;function g(U,T){let z=`${U}::${T}`,J=U?v.get(z):void 0,[H,$]=d.useState(J??null);return d.useEffect(()=>{if(!U)return;if(v.has(z)){$(v.get(z));return}let Z=h.get(z);if(!Z)Z=fetch(U+`api/support/${T}`,{method:"GET"}).then((V)=>V.json()).then((V)=>{return v.set(z,V),h.delete(z),V}).catch((V)=>{throw h.delete(z),V}),h.set(z,Z);let G=!1;return Z.then((V)=>{if(!G)$(V)}).catch(()=>{}),()=>{G=!0}},[U,T,z]),H}var u=require("react");var e=Y("@swarm.ing/pieui:context:pieConfig",()=>u.createContext(null)),x=()=>{let U=u.useContext(e);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},UU=()=>{let{apiServer:U}=x();return U},p=UU,EU=()=>{let{centrifugeServer:U}=x();return U};var I=()=>{let{enableRenderingLog:U}=x();return U};var l=()=>{let{onLinkLost:U}=x();return U},c=()=>{let{onLinkRestored:U}=x();return U};var UT=(U)=>{let T=document.cookie?document.cookie.split(";"):[];for(let z of T){let J=z.indexOf("=");if((J===-1?z:z.slice(0,J)).trim()===U){let $=J===-1?"":z.slice(J+1).trim();try{return decodeURIComponent($)}catch{return $}}}return null},TT={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,T){return(U==="local"?window.localStorage:window.sessionStorage).getItem(T)},readCookie:UT,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let T=document.getElementsByName(U);if(!T.length)return null;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[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},jU=TT;var zT={};function N(){return zT}var IU=new Map;var OU=(U)=>{return IU.has(U)?IU.get(U):null};var MU,$T={isClient(){return!0},readSid(){return MU},setSid(U){MU=U},readWebStorage(U,T){let z=N(),J=U==="local"?z.storage:z.sessionStorage;return J?J.getItem(T):null},async readWebStorageAsync(U,T){let z=N(),J=U==="local"?z.asyncStorage:z.asyncSessionStorage;if(J)return J.getItem(T);let H=U==="local"?z.storage:z.sessionStorage;return H?H.getItem(T):null},readCookie(U){let T=N();return T.getCookie?T.getCookie(U):null},readUrlParams(U){let T=N();return T.getRouteParams?T.getRouteParams(U):[]},readDomInput(U){let T=N();return T.getInput?T.getInput(U):OU(U)},submitGlobalForm(){N().submitForm?.()}},LU=$T;var JT=typeof navigator<"u"&&navigator.product==="ReactNative",HT=JT?LU:jU,o=HT;var ZT=Y("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function AU(){ZT.resolve?.()}function O(U,T){if(T==="up")return{state:"up",signal:U==="down"?"restored":null};return{state:"down",signal:U==="up"?"lost":null}}var VT=({children:U})=>{let T=D.useContext(S),z=p(),J=g(z,"socketIO"),H=l(),$=c(),Z=D.useRef(H);Z.current=H;let G=D.useRef($);G.current=$;let V=D.useRef("initial"),q=(K)=>{if(o.isClient())o.setSid(K.sid),AU(),console.log(`SocketIO initialized: ${o.readSid()}`)};return D.useEffect(()=>{if(!T||!J)return;let K=()=>{let{state:_,signal:F}=O(V.current,"up");if(V.current=_,F==="restored")G.current?.("socketio");console.log("SocketIO connected")},W=(_)=>{if(console.log(`SocketIO disconnected: ${_}`),T.connect(),_==="io client disconnect")return;let{state:F,signal:X}=O(V.current,"down");if(V.current=F,X==="lost")Z.current?.("socketio",_)};return T.on("pieinit",q),T.on("connect",K),T.on("disconnect",W),T.connect(),()=>{T.off("pieinit",q),T.off("connect",K),T.off("disconnect",W),T.disconnect()}},[T,J]),U},PU=VT;var B=require("react");var YT=({children:U})=>{let T=B.useContext(k),z=p(),J=g(z,"centrifuge"),H=l(),$=c(),Z=B.useRef(H);Z.current=H;let G=B.useRef($);G.current=$;let V=B.useRef("initial");return B.useEffect(()=>{if(!T||!J)return;let q=(_)=>{let{state:F,signal:X}=O(V.current,"down");if(V.current=F,X==="lost")Z.current?.("centrifuge",_)},K=()=>{let{state:_,signal:F}=O(V.current,"up");if(V.current=_,F==="restored")G.current?.("centrifuge");console.log("Centrifuge connected")},W=(_)=>{console.log("Centrifuge disconnected:",_),q(_)};return T.on("connecting",q),T.on("connected",K),T.on("disconnected",W),T.connect(),()=>{T.off("connecting",q),T.off("connected",K),T.off("disconnected",W),T.disconnect()}},[T,J]),U},RU=YT;var yU=require("react");var s=require("react/jsx-runtime"),GT=Y("@swarm.ing/pieui:context:fallback",()=>yU.createContext(s.jsx(s.Fragment,{}))),M=GT;var wU=require("react");var QT=Y("@swarm.ing/pieui:context:lazyError",()=>wU.createContext(void 0)),L=QT;var _T=Y("@swarm.ing/pieui:component-registry",()=>new Map);var a=(U)=>{return _T.get(U)};var b=require("react");var r=require("react"),xU=require("react/jsx-runtime"),FT=2,KT=400;class A extends r.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<FT){let T=KT*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((z)=>({failed:!1,attempt:z.attempt+1}))},T)}}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.jsx(r.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var n=require("react/jsx-runtime");function XT({uiConfig:U,setUiAjaxConfiguration:T}){let z=b.useContext(M),J=b.useContext(L),H=I();if(H)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:",!!T);let $=a(U.card);if(!$?.component){if(H)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return z}if(H)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let Z=$.component,G=n.jsx(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:T});if($.isLazy){if(H)console.log("[UI] Rendering lazy component with Suspense:",$.name);return n.jsx(A,{name:$.name,fallback:$.fallback?n.jsx($.fallback,{}):z,onError:J,children:G})}if(H)console.log("[UI] Rendering component directly:",$.name);return G}var TU=b.memo(XT);var pU=require("axios-date-transformer");var C=require("react"),E=()=>{let[U,T]=C.useState(null);return C.useEffect(()=>{if(typeof window>"u")return;let z=window.WebApp;if(!z)return;z.ready(),T(z)},[]),U},bU=()=>{let U=E();return[U?.initDataUnsafe,U?.initData]},CU=(U)=>{let T=E();return C.useEffect(()=>{if(!T||!U)return;return T.BackButton.onClick(U),T.BackButton.show(),()=>{T.BackButton.offClick(U),T.BackButton.hide()}},[T,U]),T?.BackButton??null},mU=()=>{return E()?.HapticFeedback??null};var fU=require("react");var qT=Y("@swarm.ing/pieui:context:navigate",()=>fU.createContext(void 0)),SU=qT;var zU=require("react");var kU=require("react");var DT=Y("@swarm.ing/pieui:context:uiRenderer",()=>kU.createContext(null)),vU=DT;var m=require("react/jsx-runtime");function hU({uiConfig:U,setUiAjaxConfiguration:T}){let z=zU.useContext(M),J=zU.useContext(L),H=I();if(H)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:",!!T);let $=a(U.card);if(!$?.component){if(H)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return z}if(H)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(H)console.log("[UILoading] Rendering fallback for:",$.name);let V=$.fallback;return m.jsx(V,{})}if(H)console.log("[UILoading] No fallback, rendering full component:",$.name);let Z=$.component,G=m.jsx(vU.Provider,{value:hU,children:m.jsx(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:T})});if($.isLazy)return m.jsx(A,{name:$.name,fallback:z,onError:J,children:G});return G}var dU=hU;var uU=require("react/jsx-runtime");function gU(U,T,z){if(!T)return z;let J=U.replace(/^\//,""),H=T[J];if(!H)return z;return uU.jsx(dU,{uiConfig:H})}var Q=require("react/jsx-runtime"),BT=({location:U,fallback:T,piecache:z,onError:J,queryOptions:H,disableGlobalForm:$})=>{let Z=UU(),G=EU(),V=I(),q=P.useMemo(()=>pU.createAxiosDateTransformer({baseURL:Z}),[Z]),K=P.useMemo(()=>_U(),[]),W=P.useMemo(()=>Z?DU(Z):null,[Z]),_=P.useMemo(()=>Z?NU(Z,G):null,[Z,G]),F=E(),{data:X,isLoading:$U,error:j}=R.useQuery({queryKey:["uiConfig",U.pathname+U.search,F?.initData],queryFn:async()=>{let y=new URLSearchParams(U.search);if(y.set("__pieroot","max"),F?.initData)y.set("initData",F.initData);let HU="/api/content"+U.pathname+"?"+y.toString();if(V)console.log("[PieRoot] Fetching UI configuration from:",HU);let ZU=await q.get(HU,{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:",ZU.data);return ZU.data},enabled:!!F?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(y)=>Math.min(1000*2**y,30000),...H}),JU=gU(U.pathname,z,T);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(j&&V)return console.error("[PieRoot] Error fetching UI configuration:",j),console.error("[PieRoot] Error details:",{message:j.message,status:j.response?.status,data:j.response?.data}),J?.(j),JU;if($U||!X){if(V)console.log("[PieRoot] Loading state:",{isLoading:$U,hasUiConfiguration:!!X});return JU}if(V)console.log("[PieRoot] UI configuration loaded successfully:",X),console.log("[PieRoot] Rendering UI with configuration");return Q.jsx(FU.Provider,{value:K,children:Q.jsx(S.Provider,{value:W,children:Q.jsx(k.Provider,{value:_,children:Q.jsx(M.Provider,{value:T??Q.jsx(Q.Fragment,{}),children:Q.jsx(PU,{children:Q.jsx(RU,{children:$?Q.jsx(TU,{uiConfig:X}):Q.jsx("form",{id:"piedata_global_form",action:Z+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:Q.jsx(TU,{uiConfig:X})})})})})})})})},WT=(U)=>{let T=P.useMemo(()=>new R.QueryClient,[]),z=U.queryClient??T;return Q.jsx(SU.Provider,{value:U.onNavigate,children:Q.jsx(e.Provider,{value:U.config,children:Q.jsx(L.Provider,{value:U.onError,children:Q.jsx(R.QueryClientProvider,{client:z,children:Q.jsx(BT,{...U})})})})})},lU=WT;
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{lazy as RJ}from"react";var g=new Map;function u$($,J){return J.catch(()=>{if(g.get($)===J)g.delete($)}),g.set($,J),J}function U$($,J){return RJ(()=>{if(g.has(J))return g.get(J);return u$(J,$().then((Z)=>Z))})}var d$=async($,J)=>{if(!J)return;if(g.has($))return g.get($);return u$($,J().then((Z)=>Z))};var V$=globalThis,T=($,J)=>{let Z=Symbol.for($);if(!(Z in V$))V$[Z]=J();return V$[Z]};var y=T("@swarm.ing/pieui:component-registry",()=>new Map),wJ=($)=>{if(!$.name)throw Error("Component registration requires a name");if(!$.component&&!$.loader)throw Error(`Component "${$.name}" requires component or loader`);let J={name:$.name,component:$.component,loader:$.loader,metadata:$.metadata,fallback:$.fallback,isLazy:!1};if(!J.component&&J.loader)J.component=U$(J.loader,$.name),J.isLazy=!0;return J};function t($){let J=wJ($);return y.set(J.name,J),J.component}var EJ=($)=>{$.forEach((J)=>t(J))},jJ=($)=>{y.delete($)},NJ=($)=>{return y.has($)},kJ=($)=>{return y.get($)?.metadata},o=($)=>{return y.get($)},yJ=()=>{return Array.from(y.keys())},xJ=()=>{return y.size},s$=()=>Array.from(y.values()).filter(($)=>$.isLazy&&typeof $.loader==="function").map(($)=>$.name),o$=($)=>{let J=y.get($);if(!J?.isLazy||typeof J.loader!=="function")return;return d$($,J.loader)},l$=!1,SJ=()=>{if(l$||typeof window>"u")return;l$=!0;let $=navigator.connection;if($?.saveData)return;if($?.effectiveType&&["slow-2g","2g"].includes($.effectiveType))return;let J=s$(),Z="requestIdleCallback"in window?(W)=>window.requestIdleCallback(W,{timeout:2000}):(W)=>window.setTimeout(W,300),Y=(W)=>{if(W>=J.length)return;Z(()=>{Promise.resolve().then(()=>o$(J[W])).catch(()=>{}).finally(()=>Y(W+1))})};Y(0)};import{useContext as YJ}from"react";import{Linking as KZ,Pressable as BZ,View as TZ}from"react-native";import{useContext as I$,useEffect as O$,useRef as ZJ}from"react";import{createContext as bJ,useContext as fJ}from"react";var d=T("@swarm.ing/pieui:context:pieConfig",()=>bJ(null)),i=()=>{let $=fJ(d);if(!$)throw Error("usePieConfig must be used within PieConfigProvider");return $},n=()=>{let{apiServer:$}=i();return $},e=n,$$=()=>{let{centrifugeServer:$}=i();return $};var S=()=>{let{enableRenderingLog:$}=i();return $},i$=S;var F$="__piedemo__";import{createContext as CJ}from"react";import{Centrifuge as n$}from"centrifuge";var r$=T("@swarm.ing/pieui:centrifuge-cache",()=>new Map),J$=($,J)=>{if(!J)return null;let Z=`${$}::${J}`,Y=r$.get(Z);if(Y)return Y;async function W(){let z=await fetch($+"api/centrifuge/gen_token",{credentials:"include"});if(!z.ok){if(z.status===401||z.status===403)throw new n$.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let X=new n$(J,{getToken:W});return r$.set(Z,X),X},vJ=T("@swarm.ing/pieui:context:centrifuge",()=>CJ(null)),b=vJ;import{io as hJ}from"socket.io-client";import{createContext as mJ}from"react";var a$=T("@swarm.ing/pieui:socket-cache",()=>new Map),Z$=($)=>{let J=a$.get($);if(J)return J;let Z=hJ($,{autoConnect:!1,transports:["websocket"]});return a$.set($,Z),Z},gJ=T("@swarm.ing/pieui:context:socket",()=>mJ(null)),f=gJ;import pJ from"mitt";import{createContext as cJ,useCallback as uJ,useContext as dJ}from"react";function l(){return T("@swarm.ing/pieui:mitt-emitter",()=>pJ())}var t$=T("@swarm.ing/pieui:context:mitt",()=>cJ(null));function lJ($){let J=dJ(t$);return uJ((Z,Y)=>{(J??l()).emit(`pie${Z}_${$}`,Y)},[$,J])}var C=t$;function e$($){return $.wasRecovering===!0&&$.recovered===!1}function $J($){return $.recoverable===!1}function JJ($,J,Z){let Y=$.getSubscription(J);if(Y)return{subscription:Y,createdHere:!1};return{subscription:$.newSubscription(J,Z),createdHere:!0}}import{jsx as iJ,jsxs as nJ,Fragment as oJ}from"react/jsx-runtime";var sJ=({card:$,data:J,children:Z,useSocketioSupport:Y=!1,useCentrifugeSupport:W=!1,useMittSupport:X=!1,centrifugeChannel:z=void 0,methods:Q=void 0,stored:G=void 0,onResync:_=void 0})=>{let K=i$(),M=ZJ(Q);M.current=Q;let w=ZJ(_);if(w.current=_,K)console.log("[PieCard] Rendering card:",$),console.log("[PieCard] Card data:",J),console.log("[PieCard] Component name:",J?.name),console.log("[PieCard] Real-time support:",{socketio:Y,centrifuge:W,mitt:X,centrifugeChannel:z}),console.log("[PieCard] Methods:",Q?Object.keys(Q):"none"),console.log("[PieCard] Has children:",!!Z);let I=I$(f),L=I$(b),U=I$(C);if(O$(()=>{if(!I||!Y||!M.current||!J.name){if(K&&Y)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!I,useSocketioSupport:Y,hasMethods:!!M.current,hasDataName:!!J?.name});return}let V=Object.keys(M.current??{}).map((D)=>{let q=`pie${D}_${J.name}`;if(K)console.log(`[PieCard] Socket.IO registering event: ${q}`);let H=(k)=>{M.current?.[D]?.(k)};return I.on(q,H),[q,H]});return()=>{V.forEach(([D,q])=>{if(K)console.log(`[PieCard] Socket.IO unregistering event: ${D}`);I.off(D,q)})}},[I,J.name,Y]),O$(()=>{if(!L||!W||!z||!J.name){if(K&&W)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:W,hasCentrifugeChannel:!!z,hasMethods:!!M.current,hasDataName:!!J?.name});return}let V=Object.keys(M.current??{}).map((D)=>{let q=`pie${D}_${J.name}_${z}`;if(K)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let{subscription:H,createdHere:k}=JJ(L,q,{recoverable:!0,positioned:!0}),K$=(m)=>{if(K)console.log(`[PieCard] Centrifuge received data on ${q}:`,m.data);M.current?.[D]?.(m.data)},h=(m)=>{if($J(m))console.warn(`[PieCard] Centrifuge channel ${q} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(e$(m)){if(K)console.log(`[PieCard] Centrifuge recovery gap on ${q}; requesting resync`);w.current?.({channel:q,reason:"gap"})}};return H.on("publication",K$),H.on("subscribed",h),H.subscribe(),{subscription:H,createdHere:k,onPublication:K$,onSubscribed:h}});return()=>{V.forEach(({subscription:D,createdHere:q,onPublication:H,onSubscribed:k})=>{if(K)console.log("[PieCard] Centrifuge unsubscribing from channel");if(D.off("publication",H),D.off("subscribed",k),q)D.unsubscribe(),L.removeSubscription(D)})}},[L,z,J.name,W]),O$(()=>{if(!U||!X||!J.name){if(K&&X)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!U,useMittSupport:X,hasMethods:!!M.current,hasDataName:!!J?.name});return}let B=Object.keys(M.current??{}),V={};return B.forEach((D)=>{let q=`pie${D}_${J.name}`,H=(k)=>{if(K)console.log(`[PieCard] Mitt registering event: ${q}`);M.current?.[D]?.(k)};V[q]=H,U.on(q,H)}),()=>{Object.entries(V).forEach(([D,q])=>{if(K)console.log(`[PieCard] Mitt unregistering event: ${D}`);U.off(D,q)})}},[U,J.name,X]),K)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return nJ(oJ,{children:[iJ("input",{type:"hidden",name:J.name,value:JSON.stringify(G)}),Z]});return Z},F=sJ;import{useContext as XJ,memo as QZ}from"react";import{createContext as rJ}from"react";import{jsx as eJ,Fragment as tJ}from"react/jsx-runtime";var aJ=T("@swarm.ing/pieui:context:fallback",()=>rJ(eJ(tJ,{}))),E=aJ;import{createContext as $Z}from"react";var JZ=T("@swarm.ing/pieui:context:lazyError",()=>$Z(void 0)),v=JZ;import{Component as ZZ,Suspense as XZ}from"react";import{jsx as zZ}from"react/jsx-runtime";var YZ=2,WZ=400;class s extends ZZ{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch($){if(this.props.onError?.($),this.state.attempt<YZ){let J=WZ*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},J)}}componentDidUpdate($){if($.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 zZ(XZ,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as M$}from"react/jsx-runtime";function GZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=XJ(E),Y=XJ(v),W=S();if(W)console.log("[UI] Rendering component:",$.card),console.log("[UI] Component data:",$.data),console.log("[UI] Component content:",$.content),console.log("[UI] Has setUiAjaxConfiguration:",!!J);let X=o($.card);if(!X?.component){if(W)console.warn(`[UI] Component not found in registry: ${$.card}`),console.log("[UI] Returning fallback component");return Z}if(W)console.log("[UI] Found component in registry:",{name:X.name,isLazy:X.isLazy,hasMetadata:!!X.metadata});let z=X.component,Q=M$(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J});if(X.isLazy){if(W)console.log("[UI] Rendering lazy component with Suspense:",X.name);return M$(s,{name:X.name,fallback:X.fallback?M$(X.fallback,{}):Z,onError:Y,children:Q})}if(W)console.log("[UI] Rendering component directly:",X.name);return Q}var P=QZ(GZ);import{createContext as _Z}from"react";var qZ=T("@swarm.ing/pieui:context:navigate",()=>_Z(void 0)),x=qZ;import{createContext as DZ}from"react";var HZ=T("@swarm.ing/pieui:context:uiRenderer",()=>DZ(null)),j=HZ;import{jsx as X$}from"react/jsx-runtime";var UZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),VZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,url:W,sx:X}=$,z=YJ(x),Q=YJ(j)??P,G=()=>{if(!W)return;if(UZ(W))KZ.openURL(W).catch(()=>{});else z?.(W)},_=X$(Q,{setUiAjaxConfiguration:Z,uiConfig:J});return X$(F,{card:Y,data:$,children:W?X$(BZ,{onPress:G,style:X,children:_}):X$(TZ,{style:X,children:_})})},A$=VZ;import{useContext as FZ}from"react";import{View as IZ}from"react-native";import{jsx as L$}from"react/jsx-runtime";var OZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,sx:W}=$,X=FZ(j)??P;return L$(F,{card:Y,data:$,children:L$(IZ,{style:W,children:J.map((z,Q)=>L$(X,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},P$=OZ;import{useContext as MZ}from"react";import{View as AZ}from"react-native";import{jsx as R$}from"react/jsx-runtime";var LZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,sx:W}=$,X=MZ(j)??P;return R$(F,{card:Y,data:$,children:R$(AZ,{style:W,children:J.map((z,Q)=>R$(X,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},w$=LZ;import{useEffect as WJ,useState as PZ}from"react";var Y$=new Map,p=($,J)=>{Y$.set($,J)},c=($)=>{Y$.delete($)},E$=($)=>{return Y$.has($)?Y$.get($):null};import{jsx as wZ}from"react/jsx-runtime";var RZ=({data:$})=>{let{name:J,value:Z,useSocketioSupport:Y,useCentrifugeSupport:W,useMittSupport:X,centrifugeChannel:z}=$,[Q,G]=PZ(Z);return WJ(()=>{G(Z)},[Z]),WJ(()=>{return p(J,[Q]),()=>c(J)},[J,Q]),wZ(F,{card:"HiddenCard",data:$,useSocketioSupport:Y,useCentrifugeSupport:W,useMittSupport:X,centrifugeChannel:z,methods:{update:({value:_})=>{G(_)}}})},j$=RZ;import{useEffect as zJ,useState as NZ}from"react";var W$={};function EZ($){W$={...W$,...$}}function R(){return W$}function jZ(){W$={}}import{jsx as yZ}from"react/jsx-runtime";var kZ=({data:$})=>{let{name:J,key:Z,value:Y,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q}=$,[G,_]=NZ(Y);return zJ(()=>{_(Y)},[Y]),zJ(()=>{return R().storage?.setItem?.(Z,G),p(J,[G]),()=>c(J)},[Z,J,G]),yZ(F,{card:"DeviceStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:K})=>{_(K)},remove:()=>{R().storage?.removeItem?.(Z),_("")}}})},N$=kZ;import{useEffect as QJ,useState as xZ}from"react";import{jsx as bZ}from"react/jsx-runtime";var SZ=({data:$})=>{let{name:J,key:Z,value:Y,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q}=$,[G,_]=xZ(Y);return QJ(()=>{_(Y)},[Y]),QJ(()=>{return R().sessionStorage?.setItem?.(Z,G),p(J,[G]),()=>c(J)},[Z,J,G]),bZ(F,{card:"SessionStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:K})=>{_(K)},remove:()=>{R().sessionStorage?.removeItem?.(Z),_("")}}})},k$=SZ;import{useContext as fZ,useMemo as CZ,useRef as vZ}from"react";import{Alert as hZ,Linking as mZ}from"react-native";import{jsx as cZ}from"react/jsx-runtime";var gZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),pZ=({data:$})=>{let{useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:Y,centrifugeChannel:W}=$,X=fZ(x),z=vZ(X);z.current=X;let Q=CZ(()=>{let G=(_)=>{if(!_)return;if(gZ(_))mZ.openURL(_).catch(()=>{});else z.current?.(_)};return{alert:(_)=>hZ.alert(String(_.title??""),String(_.message??"")),log:(_)=>console.log("Log event",_),push:(_)=>console.warn("[IOEventsCard] push notifications are not supported on native",_?.title),redirect:(_)=>G(_.to),reload:(_)=>G(_.to)}},[]);return cZ(F,{card:"IOEventsCard",data:$,useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:Y,centrifugeChannel:W,methods:Q})},y$=pZ;import{useEffect as uZ,useState as dZ}from"react";import{Text as lZ}from"react-native";import{jsx as GJ}from"react/jsx-runtime";var sZ=($)=>($??"").replace(/<[^>]*>/g,"").replace(/&nbsp;/g," ").replace(/\s+/g," ").trim(),oZ=({data:$})=>{let{html:J,useSocketioSupport:Z,useCentrifugeSupport:Y,useMittSupport:W,centrifugeChannel:X}=$,[z,Q]=dZ(J);return uZ(()=>{Q(J)},[J]),GJ(F,{card:"HTMLEmbedCard",data:$,methods:{update:(G)=>Q(G.value)},useCentrifugeSupport:Y,useSocketioSupport:Z,useMittSupport:W,centrifugeChannel:X,children:GJ(lZ,{children:sZ(z)})})},x$=oZ;import{useContext as _J,useEffect as iZ}from"react";import{Linking as nZ}from"react-native";import{jsx as tZ,Fragment as aZ}from"react/jsx-runtime";var rZ=({data:$})=>{let{url:J}=$,Z=_J(x),Y=_J(E);return iZ(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(J))nZ.openURL(J).catch(()=>{});else Z?.(J)},[J,Z]),tZ(aZ,{children:Y})},S$=rZ;import{useContext as eZ}from"react";import{jsx as qJ}from"react/jsx-runtime";var $0=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y}=$,W=eZ(j)??P;return qJ(F,{card:Y,data:$,children:J.map((X,z)=>{return qJ(W,{uiConfig:X,setUiAjaxConfiguration:Z},`children-${z}`)})})},b$=$0;import{useCallback as f$,useContext as C$,useEffect as J0,useRef as Z0,useState as DJ}from"react";import{jsx as HJ}from"react/jsx-runtime";var X0=({data:$,content:J})=>{let{useLoader:Z,noReturn:Y,returnType:W,useSocketioSupport:X,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G}=$,_=C$(E),K=C$(j)??P,[M,w]=DJ(!1),[I,L]=DJ(null),U=Z0(J),B=C$(C),V=f$((H)=>{if(H===null)w(!0);else if(w(!1),!Y)U.current=H;if(!Y)L(H)},[Y]),D=f$((H)=>{U.current=H.content,L(H.content)},[]),q=f$((H)=>{if(H===null)w(!0);else if(w(!1),!Y)for(let k of H)B?.emit(k.name,k.data)},[Y,B]);if(J0(()=>{L(J),w(!1)},[J]),!I&&Z)return _;return HJ(F,{card:"AjaxGroupCard",data:$,methods:{changeContent:D},useSocketioSupport:X,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G,children:HJ(K,{uiConfig:I??U.current,setUiAjaxConfiguration:W==="events"?q:V})})},v$=X0;var Y0=[{name:"BoxCard",component:A$},{name:"SequenceCard",component:P$},{name:"OneOfCard",component:w$},{name:"HiddenCard",component:j$},{name:"DeviceStorageCard",component:N$},{name:"SessionStorageCard",component:k$},{name:"IOEventsCard",component:y$},{name:"HTMLEmbedCard",component:x$},{name:"AutoRedirectCard",component:S$},{name:"UnionCard",component:b$},{name:"AjaxGroupCard",component:v$}];for(let $ of Y0)t($);import{useMemo as m$,useState as F0}from"react";import{QueryClient as I0,QueryClientProvider as O0}from"@tanstack/react-query";import{useContext as H0,useEffect as K0}from"react";import{useEffect as W0,useState as z0}from"react";var z$=new Map,Q$=new Map;function G$($,J){let Z=`${$}::${J}`,Y=$?z$.get(Z):void 0,[W,X]=z0(Y??null);return W0(()=>{if(!$)return;if(z$.has(Z)){X(z$.get(Z));return}let z=Q$.get(Z);if(!z)z=fetch($+`api/support/${J}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return z$.set(Z,G),Q$.delete(Z),G}).catch((G)=>{throw Q$.delete(Z),G}),Q$.set(Z,z);let Q=!1;return z.then((G)=>{if(!Q)X(G)}).catch(()=>{}),()=>{Q=!0}},[$,J,Z]),W}var Q0=($)=>{let J=document.cookie?document.cookie.split(";"):[];for(let Z of J){let Y=Z.indexOf("=");if((Y===-1?Z:Z.slice(0,Y)).trim()===$){let X=Y===-1?"":Z.slice(Y+1).trim();try{return decodeURIComponent(X)}catch{return X}}}return null},G0={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid($){if(typeof window<"u")window.sid=$},readWebStorage($,J){return($==="local"?window.localStorage:window.sessionStorage).getItem(J)},readCookie:Q0,readUrlParams($){return new URLSearchParams(window.location.search).getAll($)},readDomInput($){let J=document.getElementsByName($);if(!J.length)return null;let Z=J[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[]},submitGlobalForm(){if(typeof document>"u")return;let $=document.getElementById("piedata_global_form");$&&$.submit()}},KJ=G0;var BJ,_0={isClient(){return!0},readSid(){return BJ},setSid($){BJ=$},readWebStorage($,J){let Z=R(),Y=$==="local"?Z.storage:Z.sessionStorage;return Y?Y.getItem(J):null},async readWebStorageAsync($,J){let Z=R(),Y=$==="local"?Z.asyncStorage:Z.asyncSessionStorage;if(Y)return Y.getItem(J);let W=$==="local"?Z.storage:Z.sessionStorage;return W?W.getItem(J):null},readCookie($){let J=R();return J.getCookie?J.getCookie($):null},readUrlParams($){let J=R();return J.getRouteParams?J.getRouteParams($):[]},readDomInput($){let J=R();return J.getInput?J.getInput($):E$($)},submitGlobalForm(){R().submitForm?.()}},TJ=_0;var q0=typeof navigator<"u"&&navigator.product==="ReactNative",D0=q0?TJ:KJ,O=D0;var r=T("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function UJ(){r.resolve?.()}function h$(){if(!O.isClient())return Promise.resolve();if(O.readSid()!==void 0)return Promise.resolve();if(!r.promise)r.promise=new Promise(($)=>{r.resolve=()=>{$()}});return r.promise}var B0=({children:$})=>{let J=H0(f),Z=e(),Y=G$(Z,"socketIO"),W=(X)=>{if(O.isClient())O.setSid(X.sid),UJ(),console.log(`SocketIO initialized: ${O.readSid()}`)};return K0(()=>{if(!J)return;let X=()=>{console.log("SocketIO connected")},z=(Q)=>{console.log(`SocketIO disconnected: ${Q}`),J.connect()};if(Y)J.on("pieinit",W),J.on("connect",X),J.on("disconnect",z),J.connect();return()=>{if(Y)J.off("pieinit",W),J.off("connect",X),J.off("disconnect",z),J.disconnect()}},[J,Y]),$},_$=B0;import{useContext as T0,useEffect as U0}from"react";var V0=({children:$})=>{let J=T0(b),Z=e(),Y=G$(Z,"centrifuge");return U0(()=>{if(!J)return;let W=()=>{console.log("Centrifuge connected")},X=(z)=>{console.log("Centrifuge disconnected:",z)};if(Y)J.on("connected",W),J.on("disconnected",X),J.connect();return()=>{if(Y)J.disconnect()}},[J,Y]),$},q$=V0;import{jsx as N,Fragment as L0}from"react/jsx-runtime";var M0=({location:$,fallback:J,children:Z,disableGlobalForm:Y})=>{let W=n(),X=$$(),z=S(),Q=m$(()=>l(),[]),G=m$(()=>W?Z$(W):null,[W]),_=m$(()=>W?J$(W,X):null,[W,X]);if(z)console.log("[PieRoot] Rendering with location:",$),console.log("[PieRoot] API_SERVER:",W),console.log("[PieRoot] CENTRIFUGE_SERVER:",X),console.log("[PieRoot] Fallback provided:",!!J);return N(C.Provider,{value:Q,children:N(f.Provider,{value:G,children:N(b.Provider,{value:_,children:N(E.Provider,{value:J??N(L0,{}),children:N(_$,{children:N(q$,{children:Y?Z:N("form",{id:"piedata_global_form",action:W+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},A0=($)=>{let[J]=F0(()=>new I0),Z=$.queryClient??J;return N(x.Provider,{value:$.onNavigate,children:N(d.Provider,{value:$.config,children:N(v.Provider,{value:$.onError,children:N(O0,{client:Z,children:N(M0,{...$})})})})})},g$=A0;import{jsx as R0}from"react/jsx-runtime";var P0=($)=>{return R0(g$,{...$,disableGlobalForm:!0})},w0=P0;import{useMemo as a}from"react";import{QueryClient as j0,QueryClientProvider as N0,useQuery as k0}from"@tanstack/react-query";import{createAxiosDateTransformer as y0}from"axios-date-transformer";import{useContext as VJ}from"react";import{jsx as D$}from"react/jsx-runtime";function FJ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=VJ(E),Y=VJ(v),W=S();if(W)console.log("[UILoading] Rendering fallback for:",$.card),console.log("[UILoading] Component data:",$.data),console.log("[UILoading] Component content:",$.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!J);let X=o($.card);if(!X?.component){if(W)console.warn(`[UILoading] Component not found in registry: ${$.card}`),console.log("[UILoading] Returning fallback component");return Z}if(W)console.log("[UILoading] Found component in registry:",{name:X.name,isLazy:X.isLazy,hasMetadata:!!X.metadata,hasFallback:!!X.fallback});if(X.fallback){if(W)console.log("[UILoading] Rendering fallback for:",X.name);let G=X.fallback;return D$(G,{})}if(W)console.log("[UILoading] No fallback, rendering full component:",X.name);let z=X.component,Q=D$(j.Provider,{value:FJ,children:D$(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J})});if(X.isLazy)return D$(s,{name:X.name,fallback:Z,onError:Y,children:Q});return Q}var p$=FJ;import{jsx as E0}from"react/jsx-runtime";function IJ($,J,Z){if(!J)return Z;let Y=$.replace(/^\//,""),W=J[Y];if(!W)return Z;return E0(p$,{uiConfig:W})}import{jsx as A,Fragment as b0}from"react/jsx-runtime";var x0=({location:$,fallback:J,piecache:Z,onError:Y,queryOptions:W,disableGlobalForm:X})=>{let z=n(),Q=$$(),G=S(),_=a(()=>y0({baseURL:z||""}),[z]),K=a(()=>l(),[]),M=a(()=>z?Z$(z):null,[z]),w=a(()=>z?J$(z,Q):null,[z,Q]),{data:I,isLoading:L,error:U}=k0({queryKey:["uiConfig",$.pathname+$.search,z],enabled:!!z,queryFn:async()=>{let V=new URLSearchParams($.search);V.set("__pieroot","web");let D="/api/content"+$.pathname+"?"+V.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",D);let q=await _.get(D,{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:",q.data);return q.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(V)=>Math.min(1000*2**V,30000),...W}),B=IJ($.pathname,Z,J);if(!z)return B??null;if(G)console.log("[PieRoot] Rendering with location:",$),console.log("[PieRoot] API_SERVER:",z),console.log("[PieRoot] CENTRIFUGE_SERVER:",Q),console.log("[PieRoot] Fallback provided:",!!J),console.log("[PieRoot] Piecache provided:",!!Z);if(U){if(G)console.error("[PieRoot] Error fetching UI configuration:",U),console.error("[PieRoot] Error details:",{message:U.message,status:U.response?.status,data:U.response?.data});return Y?.(U),B}if(L||!I){if(G)console.log("[PieRoot] Loading state:",{isLoading:L,hasUiConfiguration:!!I});return B}if(G)console.log("[PieRoot] UI configuration loaded successfully:",I),console.log("[PieRoot] Rendering UI with configuration");return A(C.Provider,{value:K,children:A(f.Provider,{value:M,children:A(b.Provider,{value:w,children:A(E.Provider,{value:J??A(b0,{}),children:A(_$,{children:A(q$,{children:X?A(P,{uiConfig:I}):A("form",{id:"piedata_global_form",action:z+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:A(P,{uiConfig:I})})})})})})})})},S0=($)=>{let J=a(()=>new j0,[]),Z=$.queryClient??J;return A(x.Provider,{value:$.onNavigate,children:A(d.Provider,{value:$.config,children:A(v.Provider,{value:$.onError,children:A(N0,{client:Z,children:A(x0,{...$})})})})})},f0=S0;import{useMemo as C0}from"react";var v0=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],h0=new Set(["telegram:cloud","telegram:secure"]),H$=($)=>{if($==="sid")return{source:"sid",key:"sid"};for(let J of v0){let Z=J+":";if($.startsWith(Z))return{source:J,key:$.slice(Z.length)}}return{source:"dom",key:$}},OJ=($,J=!1)=>{let{source:Z,key:Y}=H$($);if(Z==="sid"){let X=O.readSid();if(!X)throw Error("SocketIO isn't initialized properly");return[X]}if(Z==="localStorage"||Z==="sessionStorage")try{let X=O.readWebStorage(Z==="localStorage"?"local":"session",Y);if(X===null){if(J)console.warn(`No ${Z} value found for key ${Y}`);return[]}return[X]}catch(X){if(J)console.warn(`Failed to read ${Z} key ${Y}:`,X);return[]}if(Z==="cookie"){let X=O.readCookie(Y);if(X===null){if(J)console.warn(`No cookie found for key ${Y}`);return[]}return[X]}if(Z==="url"){let X=O.readUrlParams(Y);if(!X.length&&J)console.warn(`No URL query param found for key ${Y}`);return X}if(h0.has(Z)){if(J)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let W=O.readDomInput(Y);if(W===null){if(J)console.warn(`No input found with name ${Y}`);return[]}return W},m0=($,J,Z)=>{let Y=window.Telegram?.WebApp,W=$==="telegram:cloud"?Y?.CloudStorage:Y?.SecureStorage,X=$==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!W){if(Z)console.warn(`${X} is not available`);return Promise.resolve([])}return new Promise((z)=>{try{W.getItem(J,(Q,G)=>{if(Q){if(Z)console.warn(`Failed to read ${X} key ${J}:`,Q);z([]);return}if(G==null||G===""){if(Z)console.warn(`No ${X} value found for key ${J}`);z([]);return}z([G])})}catch(Q){if(Z)console.warn(`Failed to read ${X} key ${J}:`,Q);z([])}})},MJ=async($,J=!1)=>{let{source:Z,key:Y}=H$($);if(Z==="telegram:cloud"||Z==="telegram:secure")return m0(Z,Y,J);if((Z==="localStorage"||Z==="sessionStorage")&&O.readWebStorageAsync)try{let W=await O.readWebStorageAsync(Z==="localStorage"?"local":"session",Y);if(W===null){if(J)console.warn(`No ${Z} value found for key ${Y}`);return[]}return[W]}catch(W){if(J)console.warn(`Failed to read ${Z} key ${Y}:`,W);return[]}return OJ($,J)},g0=($,J={},Z=[],Y,W)=>{let X=W?.renderingLogEnabled??!1,z=W?.timeout,Q=W?.retryPolicy,G=Q?.maxRetries??0,_=Q?.baseDelay??1000,K=Q?.retryOn??[502,503,504];if(X)console.log("Registering AJAX: ",Y,J,Z);return async(M={})=>{if(!O.isClient()){if(X)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let w=W?.apiServer;if(!w){if(X)console.warn("AJAX skipped: apiServer is missing");return}if(!Y||!$){if(X)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await h$();let I=new FormData;for(let[B,V]of Object.entries({...J,...M}))I.append(B,V);for(let B of Z){let{key:V}=H$(B);for(let D of await MJ(B,X))I.append(V,D)}let L=w+"api/ajax_content"+Y;$(null);let U;for(let B=0;B<=G;B++){if(B>0){let q=_*2**(B-1);if(X)console.log(`AJAX retry ${B}/${G} after ${q}ms`);await new Promise((H)=>setTimeout(H,q))}let V=z!=null?new AbortController:null,D=V&&setTimeout(()=>V.abort(),z);try{let q=await fetch(L,{method:"POST",body:I,signal:V?.signal});if(D)clearTimeout(D);if(!q.ok&&K.includes(q.status)&&B<G){U=Error(`HTTP ${q.status}`);continue}let k=(q.headers.get("content-type")||"").includes("application/json");if(!!q.body?.getReader&&!k){let h=q.body.getReader(),m=new TextDecoder,u="";while(!0){let{done:B$,value:AJ}=await h.read();if(B$)break;u+=m.decode(AJ,{stream:!0});let c$=u.split(`
3
- `);u=c$.pop()??"";for(let LJ of c$){let T$=LJ.trim();if(!T$)continue;try{let PJ=JSON.parse(T$);$([PJ])}catch{if(X)console.warn("Failed to parse streamed line:",T$)}}}if(u.trim())try{let B$=JSON.parse(u);$([B$])}catch{if(X)console.warn("Failed to parse final streamed line:",u)}return{}}else{let h=await q.json();return $(h),h}}catch(q){if(D)clearTimeout(D);if(U=q,B<G)continue;if(X)console.error("AJAX request failed:",q);return $(null),q}}if(X)console.error("AJAX request failed after retries:",U);return $(null),U}},p0=($,J={},Z=[],Y,W)=>{let{apiServer:X,enableRenderingLog:z}=i(),Q=JSON.stringify(J),G=JSON.stringify(Z),_=JSON.stringify(W);return C0(()=>g0($,J,Z,Y,{apiServer:X,renderingLogEnabled:z,timeout:W?.timeout,retryPolicy:W?.retryPolicy}),[$,Q,G,Y,X,z,_])};var c0=()=>{O.submitGlobalForm()};var u0=($,J)=>`${$}${F$}${J}`;export{lJ as usePieEmit,p0 as useAjaxSubmit,jJ as unregisterComponent,U$ as trackLazy,c0 as submitGlobalForm,p as setNativeField,jZ as resetNativeClientSources,y as registry,t as registerPieComponent,EJ as registerMultipleComponents,E$ as readNativeField,MJ as readAjaxKeyAsync,OJ as readAjaxKey,o$ as preloadComponent,SJ as prefetchLazyComponents,u0 as pieName,H$ as parseDepName,NJ as hasComponent,xJ as getRegistrySize,o as getRegistryEntry,R as getNativeClientConfig,s$ as getLazyComponentNames,l as getEmitter,kJ as getComponentMeta,yJ as getAllRegisteredComponents,EZ as configureNativeClientSources,c as clearNativeField,b$ as UnionCard,j as UIRendererContext,p$ as UILoading,P as UI,f as SocketIOContext,k$ as SessionStorageCard,P$ as SequenceCard,f0 as PieRoot,w0 as PieNativeRoot,d as PieConfigContext,F as PieCard,g$ as PieBaseRoot,F$ as PIEBREAK,w$ as OneOfCard,C as MittContext,y$ as IOEventsCard,j$ as HiddenCard,x$ as HTMLEmbedCard,E as FallbackContext,N$ as DeviceStorageCard,b as CentrifugeIOContext,A$ as BoxCard,S$ as AutoRedirectCard,v$ as AjaxGroupCard};
2
+ import{lazy as yJ}from"react";var g=new Map;function i$($,J){return J.catch(()=>{if(g.get($)===J)g.delete($)}),g.set($,J),J}function M$($,J){return yJ(()=>{if(g.has(J))return g.get(J);return i$(J,$().then((Z)=>Z))})}var r$=async($,J)=>{if(!J)return;if(g.has($))return g.get($);return i$($,J().then((Z)=>Z))};var O$=globalThis,V=($,J)=>{let Z=Symbol.for($);if(!(Z in O$))O$[Z]=J();return O$[Z]};var k=V("@swarm.ing/pieui:component-registry",()=>new Map),kJ=($)=>{if(!$.name)throw Error("Component registration requires a name");if(!$.component&&!$.loader)throw Error(`Component "${$.name}" requires component or loader`);let J={name:$.name,component:$.component,loader:$.loader,metadata:$.metadata,fallback:$.fallback,isLazy:!1};if(!J.component&&J.loader)J.component=M$(J.loader,$.name),J.isLazy=!0;return J};function e($){let J=kJ($);return k.set(J.name,J),J.component}var xJ=($)=>{$.forEach((J)=>e(J))},bJ=($)=>{k.delete($)},SJ=($)=>{return k.has($)},CJ=($)=>{return k.get($)?.metadata},r=($)=>{return k.get($)},fJ=()=>{return Array.from(k.keys())},vJ=()=>{return k.size},n$=()=>Array.from(k.values()).filter(($)=>$.isLazy&&typeof $.loader==="function").map(($)=>$.name),t$=($)=>{let J=k.get($);if(!J?.isLazy||typeof J.loader!=="function")return;return r$($,J.loader)},a$=!1,hJ=()=>{if(a$||typeof window>"u")return;a$=!0;let $=navigator.connection;if($?.saveData)return;if($?.effectiveType&&["slow-2g","2g"].includes($.effectiveType))return;let J=n$(),Z="requestIdleCallback"in window?(W)=>window.requestIdleCallback(W,{timeout:2000}):(W)=>window.setTimeout(W,300),Y=(W)=>{if(W>=J.length)return;Z(()=>{Promise.resolve().then(()=>t$(J[W])).catch(()=>{}).finally(()=>Y(W+1))})};Y(0)};import{useContext as _J}from"react";import{Linking as FZ,Pressable as MZ,View as OZ}from"react-native";import{useContext as I$,useEffect as P$,useRef as QJ}from"react";import{createContext as mJ,useContext as gJ}from"react";var l=V("@swarm.ing/pieui:context:pieConfig",()=>mJ(null)),p=()=>{let $=gJ(l);if(!$)throw Error("usePieConfig must be used within PieConfigProvider");return $},a=()=>{let{apiServer:$}=p();return $},$$=a,J$=()=>{let{centrifugeServer:$}=p();return $};var b=()=>{let{enableRenderingLog:$}=p();return $},e$=b;var Z$=()=>{let{onLinkLost:$}=p();return $},X$=()=>{let{onLinkRestored:$}=p();return $},A$="__piedemo__";import{createContext as pJ}from"react";import{Centrifuge as $J}from"centrifuge";var JJ=V("@swarm.ing/pieui:centrifuge-cache",()=>new Map),Y$=($,J)=>{if(!J)return null;let Z=`${$}::${J}`,Y=JJ.get(Z);if(Y)return Y;async function W(){let z=await fetch($+"api/centrifuge/gen_token",{credentials:"include"});if(!z.ok){if(z.status===401||z.status===403)throw new $J.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let X=new $J(J,{getToken:W});return JJ.set(Z,X),X},dJ=V("@swarm.ing/pieui:context:centrifuge",()=>pJ(null)),S=dJ;import{io as uJ}from"socket.io-client";import{createContext as cJ}from"react";var ZJ=V("@swarm.ing/pieui:socket-cache",()=>new Map),W$=($)=>{let J=ZJ.get($);if(J)return J;let Z=uJ($,{autoConnect:!1,transports:["websocket"]});return ZJ.set($,Z),Z},lJ=V("@swarm.ing/pieui:context:socket",()=>cJ(null)),C=lJ;import sJ from"mitt";import{createContext as oJ,useCallback as iJ,useContext as rJ}from"react";function s(){return V("@swarm.ing/pieui:mitt-emitter",()=>sJ())}var XJ=V("@swarm.ing/pieui:context:mitt",()=>oJ(null));function aJ($){let J=rJ(XJ);return iJ((Z,Y)=>{(J??s()).emit(`pie${Z}_${$}`,Y)},[$,J])}var f=XJ;function YJ($){return $.wasRecovering===!0&&$.recovered===!1}function WJ($){return $.recoverable===!1}function zJ($,J,Z){let Y=$.getSubscription(J);if(Y)return{subscription:Y,createdHere:!1};return{subscription:$.newSubscription(J,Z),createdHere:!0}}import{jsx as eJ,jsxs as $Z,Fragment as tJ}from"react/jsx-runtime";var nJ=({card:$,data:J,children:Z,useSocketioSupport:Y=!1,useCentrifugeSupport:W=!1,useMittSupport:X=!1,centrifugeChannel:z=void 0,methods:G=void 0,stored:Q=void 0,onResync:_=void 0})=>{let H=e$(),F=QJ(G);F.current=G;let B=QJ(_);if(B.current=_,H)console.log("[PieCard] Rendering card:",$),console.log("[PieCard] Card data:",J),console.log("[PieCard] Component name:",J?.name),console.log("[PieCard] Real-time support:",{socketio:Y,centrifuge:W,mitt:X,centrifugeChannel:z}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!Z);let T=I$(C),I=I$(S),M=I$(f);if(P$(()=>{if(!T||!Y||!F.current||!J.name){if(H&&Y)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!T,useSocketioSupport:Y,hasMethods:!!F.current,hasDataName:!!J?.name});return}let O=Object.keys(F.current??{}).map((K)=>{let q=`pie${K}_${J.name}`;if(H)console.log(`[PieCard] Socket.IO registering event: ${q}`);let D=(y)=>{F.current?.[K]?.(y)};return T.on(q,D),[q,D]});return()=>{O.forEach(([K,q])=>{if(H)console.log(`[PieCard] Socket.IO unregistering event: ${K}`);T.off(K,q)})}},[T,J.name,Y]),P$(()=>{if(!I||!W||!z||!J.name){if(H&&W)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!I,useCentrifugeSupport:W,hasCentrifugeChannel:!!z,hasMethods:!!F.current,hasDataName:!!J?.name});return}let O=Object.keys(F.current??{}).map((K)=>{let q=`pie${K}_${J.name}_${z}`;if(H)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let{subscription:D,createdHere:y}=zJ(I,q,{recoverable:!0,positioned:!0}),U$=(m)=>{if(H)console.log(`[PieCard] Centrifuge received data on ${q}:`,m.data);F.current?.[K]?.(m.data)},h=(m)=>{if(WJ(m))console.warn(`[PieCard] Centrifuge channel ${q} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(YJ(m)){if(H)console.log(`[PieCard] Centrifuge recovery gap on ${q}; requesting resync`);B.current?.({channel:q,reason:"gap"})}};return D.on("publication",U$),D.on("subscribed",h),D.subscribe(),{subscription:D,createdHere:y,onPublication:U$,onSubscribed:h}});return()=>{O.forEach(({subscription:K,createdHere:q,onPublication:D,onSubscribed:y})=>{if(H)console.log("[PieCard] Centrifuge unsubscribing from channel");if(K.off("publication",D),K.off("subscribed",y),q)K.unsubscribe(),I.removeSubscription(K)})}},[I,z,J.name,W]),P$(()=>{if(!M||!X||!J.name){if(H&&X)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!M,useMittSupport:X,hasMethods:!!F.current,hasDataName:!!J?.name});return}let U=Object.keys(F.current??{}),O={};return U.forEach((K)=>{let q=`pie${K}_${J.name}`,D=(y)=>{if(H)console.log(`[PieCard] Mitt registering event: ${q}`);F.current?.[K]?.(y)};O[q]=D,M.on(q,D)}),()=>{Object.entries(O).forEach(([K,q])=>{if(H)console.log(`[PieCard] Mitt unregistering event: ${K}`);M.off(K,q)})}},[M,J.name,X]),H)console.log("[PieCard] Rendering complete, returning children");if(Q!==void 0)return $Z(tJ,{children:[eJ("input",{type:"hidden",name:J.name,value:JSON.stringify(Q)}),Z]});return Z},A=nJ;import{useContext as GJ,memo as KZ}from"react";import{createContext as JZ}from"react";import{jsx as YZ,Fragment as XZ}from"react/jsx-runtime";var ZZ=V("@swarm.ing/pieui:context:fallback",()=>JZ(YZ(XZ,{}))),N=ZZ;import{createContext as WZ}from"react";var zZ=V("@swarm.ing/pieui:context:lazyError",()=>WZ(void 0)),v=zZ;import{Component as QZ,Suspense as GZ}from"react";import{jsx as HZ}from"react/jsx-runtime";var _Z=2,qZ=400;class o extends QZ{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch($){if(this.props.onError?.($),this.state.attempt<_Z){let J=qZ*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},J)}}componentDidUpdate($){if($.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 HZ(GZ,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as L$}from"react/jsx-runtime";function BZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=GJ(N),Y=GJ(v),W=b();if(W)console.log("[UI] Rendering component:",$.card),console.log("[UI] Component data:",$.data),console.log("[UI] Component content:",$.content),console.log("[UI] Has setUiAjaxConfiguration:",!!J);let X=r($.card);if(!X?.component){if(W)console.warn(`[UI] Component not found in registry: ${$.card}`),console.log("[UI] Returning fallback component");return Z}if(W)console.log("[UI] Found component in registry:",{name:X.name,isLazy:X.isLazy,hasMetadata:!!X.metadata});let z=X.component,G=L$(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J});if(X.isLazy){if(W)console.log("[UI] Rendering lazy component with Suspense:",X.name);return L$(o,{name:X.name,fallback:X.fallback?L$(X.fallback,{}):Z,onError:Y,children:G})}if(W)console.log("[UI] Rendering component directly:",X.name);return G}var w=KZ(BZ);import{createContext as TZ}from"react";var DZ=V("@swarm.ing/pieui:context:navigate",()=>TZ(void 0)),x=DZ;import{createContext as UZ}from"react";var VZ=V("@swarm.ing/pieui:context:uiRenderer",()=>UZ(null)),E=VZ;import{jsx as z$}from"react/jsx-runtime";var AZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),IZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,url:W,sx:X}=$,z=_J(x),G=_J(E)??w,Q=()=>{if(!W)return;if(AZ(W))FZ.openURL(W).catch(()=>{});else z?.(W)},_=z$(G,{setUiAjaxConfiguration:Z,uiConfig:J});return z$(A,{card:Y,data:$,children:W?z$(MZ,{onPress:Q,style:X,children:_}):z$(OZ,{style:X,children:_})})},w$=IZ;import{useContext as PZ}from"react";import{View as LZ}from"react-native";import{jsx as j$}from"react/jsx-runtime";var wZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,sx:W}=$,X=PZ(E)??w;return j$(A,{card:Y,data:$,children:j$(LZ,{style:W,children:J.map((z,G)=>j$(X,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${G}`))})})},N$=wZ;import{useContext as jZ}from"react";import{View as NZ}from"react-native";import{jsx as E$}from"react/jsx-runtime";var EZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,sx:W}=$,X=jZ(E)??w;return E$(A,{card:Y,data:$,children:E$(NZ,{style:W,children:J.map((z,G)=>E$(X,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${G}`))})})},R$=EZ;import{useEffect as qJ,useState as RZ}from"react";var Q$=new Map,d=($,J)=>{Q$.set($,J)},u=($)=>{Q$.delete($)},y$=($)=>{return Q$.has($)?Q$.get($):null};import{jsx as kZ}from"react/jsx-runtime";var yZ=({data:$})=>{let{name:J,value:Z,useSocketioSupport:Y,useCentrifugeSupport:W,useMittSupport:X,centrifugeChannel:z}=$,[G,Q]=RZ(Z);return qJ(()=>{Q(Z)},[Z]),qJ(()=>{return d(J,[G]),()=>u(J)},[J,G]),kZ(A,{card:"HiddenCard",data:$,useSocketioSupport:Y,useCentrifugeSupport:W,useMittSupport:X,centrifugeChannel:z,methods:{update:({value:_})=>{Q(_)}}})},k$=yZ;import{useEffect as HJ,useState as SZ}from"react";var G$={};function xZ($){G$={...G$,...$}}function j(){return G$}function bZ(){G$={}}import{jsx as fZ}from"react/jsx-runtime";var CZ=({data:$})=>{let{name:J,key:Z,value:Y,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:G}=$,[Q,_]=SZ(Y);return HJ(()=>{_(Y)},[Y]),HJ(()=>{return j().storage?.setItem?.(Z,Q),d(J,[Q]),()=>u(J)},[Z,J,Q]),fZ(A,{card:"DeviceStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:G,methods:{update:({value:H})=>{_(H)},remove:()=>{j().storage?.removeItem?.(Z),_("")}}})},x$=CZ;import{useEffect as KJ,useState as vZ}from"react";import{jsx as mZ}from"react/jsx-runtime";var hZ=({data:$})=>{let{name:J,key:Z,value:Y,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:G}=$,[Q,_]=vZ(Y);return KJ(()=>{_(Y)},[Y]),KJ(()=>{return j().sessionStorage?.setItem?.(Z,Q),d(J,[Q]),()=>u(J)},[Z,J,Q]),mZ(A,{card:"SessionStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:G,methods:{update:({value:H})=>{_(H)},remove:()=>{j().sessionStorage?.removeItem?.(Z),_("")}}})},b$=hZ;import{useContext as gZ,useMemo as pZ,useRef as dZ}from"react";import{Alert as uZ,Linking as cZ}from"react-native";import{jsx as oZ}from"react/jsx-runtime";var lZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),sZ=({data:$})=>{let{useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:Y,centrifugeChannel:W}=$,X=gZ(x),z=dZ(X);z.current=X;let G=pZ(()=>{let Q=(_)=>{if(!_)return;if(lZ(_))cZ.openURL(_).catch(()=>{});else z.current?.(_)};return{alert:(_)=>uZ.alert(String(_.title??""),String(_.message??"")),log:(_)=>console.log("Log event",_),push:(_)=>console.warn("[IOEventsCard] push notifications are not supported on native",_?.title),redirect:(_)=>Q(_.to),reload:(_)=>Q(_.to)}},[]);return oZ(A,{card:"IOEventsCard",data:$,useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:Y,centrifugeChannel:W,methods:G})},S$=sZ;import{useEffect as iZ,useState as rZ}from"react";import{Text as aZ}from"react-native";import{jsx as BJ}from"react/jsx-runtime";var nZ=($)=>($??"").replace(/<[^>]*>/g,"").replace(/&nbsp;/g," ").replace(/\s+/g," ").trim(),tZ=({data:$})=>{let{html:J,useSocketioSupport:Z,useCentrifugeSupport:Y,useMittSupport:W,centrifugeChannel:X}=$,[z,G]=rZ(J);return iZ(()=>{G(J)},[J]),BJ(A,{card:"HTMLEmbedCard",data:$,methods:{update:(Q)=>G(Q.value)},useCentrifugeSupport:Y,useSocketioSupport:Z,useMittSupport:W,centrifugeChannel:X,children:BJ(aZ,{children:nZ(z)})})},C$=tZ;import{useContext as TJ,useEffect as eZ}from"react";import{Linking as $0}from"react-native";import{jsx as X0,Fragment as Z0}from"react/jsx-runtime";var J0=({data:$})=>{let{url:J}=$,Z=TJ(x),Y=TJ(N);return eZ(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(J))$0.openURL(J).catch(()=>{});else Z?.(J)},[J,Z]),X0(Z0,{children:Y})},f$=J0;import{useContext as Y0}from"react";import{jsx as DJ}from"react/jsx-runtime";var W0=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y}=$,W=Y0(E)??w;return DJ(A,{card:Y,data:$,children:J.map((X,z)=>{return DJ(W,{uiConfig:X,setUiAjaxConfiguration:Z},`children-${z}`)})})},v$=W0;import{useCallback as h$,useContext as m$,useEffect as z0,useRef as Q0,useState as UJ}from"react";import{jsx as VJ}from"react/jsx-runtime";var G0=({data:$,content:J})=>{let{useLoader:Z,noReturn:Y,returnType:W,useSocketioSupport:X,useCentrifugeSupport:z,useMittSupport:G,centrifugeChannel:Q}=$,_=m$(N),H=m$(E)??w,[F,B]=UJ(!1),[T,I]=UJ(null),M=Q0(J),U=m$(f),O=h$((D)=>{if(D===null)B(!0);else if(B(!1),!Y)M.current=D;if(!Y)I(D)},[Y]),K=h$((D)=>{M.current=D.content,I(D.content)},[]),q=h$((D)=>{if(D===null)B(!0);else if(B(!1),!Y)for(let y of D)U?.emit(y.name,y.data)},[Y,U]);if(z0(()=>{I(J),B(!1)},[J]),!T&&Z)return _;return VJ(A,{card:"AjaxGroupCard",data:$,methods:{changeContent:K},useSocketioSupport:X,useCentrifugeSupport:z,useMittSupport:G,centrifugeChannel:Q,children:VJ(H,{uiConfig:T??M.current,setUiAjaxConfiguration:W==="events"?q:O})})},g$=G0;var _0=[{name:"BoxCard",component:w$},{name:"SequenceCard",component:N$},{name:"OneOfCard",component:R$},{name:"HiddenCard",component:k$},{name:"DeviceStorageCard",component:x$},{name:"SessionStorageCard",component:b$},{name:"IOEventsCard",component:S$},{name:"HTMLEmbedCard",component:C$},{name:"AutoRedirectCard",component:f$},{name:"UnionCard",component:v$},{name:"AjaxGroupCard",component:g$}];for(let $ of _0)e($);import{useMemo as c$,useState as P0}from"react";import{QueryClient as L0,QueryClientProvider as w0}from"@tanstack/react-query";import{useContext as V0,useEffect as F0,useRef as d$}from"react";import{useEffect as q0,useState as H0}from"react";var _$=new Map,q$=new Map;function H$($,J){let Z=`${$}::${J}`,Y=$?_$.get(Z):void 0,[W,X]=H0(Y??null);return q0(()=>{if(!$)return;if(_$.has(Z)){X(_$.get(Z));return}let z=q$.get(Z);if(!z)z=fetch($+`api/support/${J}`,{method:"GET"}).then((Q)=>Q.json()).then((Q)=>{return _$.set(Z,Q),q$.delete(Z),Q}).catch((Q)=>{throw q$.delete(Z),Q}),q$.set(Z,z);let G=!1;return z.then((Q)=>{if(!G)X(Q)}).catch(()=>{}),()=>{G=!0}},[$,J,Z]),W}var K0=($)=>{let J=document.cookie?document.cookie.split(";"):[];for(let Z of J){let Y=Z.indexOf("=");if((Y===-1?Z:Z.slice(0,Y)).trim()===$){let X=Y===-1?"":Z.slice(Y+1).trim();try{return decodeURIComponent(X)}catch{return X}}}return null},B0={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid($){if(typeof window<"u")window.sid=$},readWebStorage($,J){return($==="local"?window.localStorage:window.sessionStorage).getItem(J)},readCookie:K0,readUrlParams($){return new URLSearchParams(window.location.search).getAll($)},readDomInput($){let J=document.getElementsByName($);if(!J.length)return null;let Z=J[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[]},submitGlobalForm(){if(typeof document>"u")return;let $=document.getElementById("piedata_global_form");$&&$.submit()}},FJ=B0;var MJ,T0={isClient(){return!0},readSid(){return MJ},setSid($){MJ=$},readWebStorage($,J){let Z=j(),Y=$==="local"?Z.storage:Z.sessionStorage;return Y?Y.getItem(J):null},async readWebStorageAsync($,J){let Z=j(),Y=$==="local"?Z.asyncStorage:Z.asyncSessionStorage;if(Y)return Y.getItem(J);let W=$==="local"?Z.storage:Z.sessionStorage;return W?W.getItem(J):null},readCookie($){let J=j();return J.getCookie?J.getCookie($):null},readUrlParams($){let J=j();return J.getRouteParams?J.getRouteParams($):[]},readDomInput($){let J=j();return J.getInput?J.getInput($):y$($)},submitGlobalForm(){j().submitForm?.()}},OJ=T0;var D0=typeof navigator<"u"&&navigator.product==="ReactNative",U0=D0?OJ:FJ,P=U0;var n=V("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function AJ(){n.resolve?.()}function p$(){if(!P.isClient())return Promise.resolve();if(P.readSid()!==void 0)return Promise.resolve();if(!n.promise)n.promise=new Promise(($)=>{n.resolve=()=>{$()}});return n.promise}function i($,J){if(J==="up")return{state:"up",signal:$==="down"?"restored":null};return{state:"down",signal:$==="up"?"lost":null}}var M0=({children:$})=>{let J=V0(C),Z=$$(),Y=H$(Z,"socketIO"),W=Z$(),X=X$(),z=d$(W);z.current=W;let G=d$(X);G.current=X;let Q=d$("initial"),_=(H)=>{if(P.isClient())P.setSid(H.sid),AJ(),console.log(`SocketIO initialized: ${P.readSid()}`)};return F0(()=>{if(!J||!Y)return;let H=()=>{let{state:B,signal:T}=i(Q.current,"up");if(Q.current=B,T==="restored")G.current?.("socketio");console.log("SocketIO connected")},F=(B)=>{if(console.log(`SocketIO disconnected: ${B}`),J.connect(),B==="io client disconnect")return;let{state:T,signal:I}=i(Q.current,"down");if(Q.current=T,I==="lost")z.current?.("socketio",B)};return J.on("pieinit",_),J.on("connect",H),J.on("disconnect",F),J.connect(),()=>{J.off("pieinit",_),J.off("connect",H),J.off("disconnect",F),J.disconnect()}},[J,Y]),$},K$=M0;import{useContext as O0,useEffect as A0,useRef as u$}from"react";var I0=({children:$})=>{let J=O0(S),Z=$$(),Y=H$(Z,"centrifuge"),W=Z$(),X=X$(),z=u$(W);z.current=W;let G=u$(X);G.current=X;let Q=u$("initial");return A0(()=>{if(!J||!Y)return;let _=(B)=>{let{state:T,signal:I}=i(Q.current,"down");if(Q.current=T,I==="lost")z.current?.("centrifuge",B)},H=()=>{let{state:B,signal:T}=i(Q.current,"up");if(Q.current=B,T==="restored")G.current?.("centrifuge");console.log("Centrifuge connected")},F=(B)=>{console.log("Centrifuge disconnected:",B),_(B)};return J.on("connecting",_),J.on("connected",H),J.on("disconnected",F),J.connect(),()=>{J.off("connecting",_),J.off("connected",H),J.off("disconnected",F),J.disconnect()}},[J,Y]),$},B$=I0;import{jsx as R,Fragment as E0}from"react/jsx-runtime";var j0=({location:$,fallback:J,children:Z,disableGlobalForm:Y})=>{let W=a(),X=J$(),z=b(),G=c$(()=>s(),[]),Q=c$(()=>W?W$(W):null,[W]),_=c$(()=>W?Y$(W,X):null,[W,X]);if(z)console.log("[PieRoot] Rendering with location:",$),console.log("[PieRoot] API_SERVER:",W),console.log("[PieRoot] CENTRIFUGE_SERVER:",X),console.log("[PieRoot] Fallback provided:",!!J);return R(f.Provider,{value:G,children:R(C.Provider,{value:Q,children:R(S.Provider,{value:_,children:R(N.Provider,{value:J??R(E0,{}),children:R(K$,{children:R(B$,{children:Y?Z:R("form",{id:"piedata_global_form",action:W+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},N0=($)=>{let[J]=P0(()=>new L0),Z=$.queryClient??J;return R(x.Provider,{value:$.onNavigate,children:R(l.Provider,{value:$.config,children:R(v.Provider,{value:$.onError,children:R(w0,{client:Z,children:R(j0,{...$})})})})})},l$=N0;import{jsx as y0}from"react/jsx-runtime";var R0=($)=>{return y0(l$,{...$,disableGlobalForm:!0})},k0=R0;import{useMemo as t}from"react";import{QueryClient as b0,QueryClientProvider as S0,useQuery as C0}from"@tanstack/react-query";import{createAxiosDateTransformer as f0}from"axios-date-transformer";import{useContext as IJ}from"react";import{jsx as T$}from"react/jsx-runtime";function PJ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=IJ(N),Y=IJ(v),W=b();if(W)console.log("[UILoading] Rendering fallback for:",$.card),console.log("[UILoading] Component data:",$.data),console.log("[UILoading] Component content:",$.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!J);let X=r($.card);if(!X?.component){if(W)console.warn(`[UILoading] Component not found in registry: ${$.card}`),console.log("[UILoading] Returning fallback component");return Z}if(W)console.log("[UILoading] Found component in registry:",{name:X.name,isLazy:X.isLazy,hasMetadata:!!X.metadata,hasFallback:!!X.fallback});if(X.fallback){if(W)console.log("[UILoading] Rendering fallback for:",X.name);let Q=X.fallback;return T$(Q,{})}if(W)console.log("[UILoading] No fallback, rendering full component:",X.name);let z=X.component,G=T$(E.Provider,{value:PJ,children:T$(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J})});if(X.isLazy)return T$(o,{name:X.name,fallback:Z,onError:Y,children:G});return G}var s$=PJ;import{jsx as x0}from"react/jsx-runtime";function LJ($,J,Z){if(!J)return Z;let Y=$.replace(/^\//,""),W=J[Y];if(!W)return Z;return x0(s$,{uiConfig:W})}import{jsx as L,Fragment as m0}from"react/jsx-runtime";var v0=({location:$,fallback:J,piecache:Z,onError:Y,queryOptions:W,disableGlobalForm:X})=>{let z=a(),G=J$(),Q=b(),_=t(()=>f0({baseURL:z||""}),[z]),H=t(()=>s(),[]),F=t(()=>z?W$(z):null,[z]),B=t(()=>z?Y$(z,G):null,[z,G]),{data:T,isLoading:I,error:M}=C0({queryKey:["uiConfig",$.pathname+$.search,z],enabled:!!z,queryFn:async()=>{let O=new URLSearchParams($.search);O.set("__pieroot","web");let K="/api/content"+$.pathname+"?"+O.toString();if(Q)console.log("[PieRoot] Fetching UI configuration from:",K);let q=await _.get(K,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(Q)console.log("[PieRoot] Received UI configuration:",q.data);return q.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(O)=>Math.min(1000*2**O,30000),...W}),U=LJ($.pathname,Z,J);if(!z)return U??null;if(Q)console.log("[PieRoot] Rendering with location:",$),console.log("[PieRoot] API_SERVER:",z),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!J),console.log("[PieRoot] Piecache provided:",!!Z);if(M){if(Q)console.error("[PieRoot] Error fetching UI configuration:",M),console.error("[PieRoot] Error details:",{message:M.message,status:M.response?.status,data:M.response?.data});return Y?.(M),U}if(I||!T){if(Q)console.log("[PieRoot] Loading state:",{isLoading:I,hasUiConfiguration:!!T});return U}if(Q)console.log("[PieRoot] UI configuration loaded successfully:",T),console.log("[PieRoot] Rendering UI with configuration");return L(f.Provider,{value:H,children:L(C.Provider,{value:F,children:L(S.Provider,{value:B,children:L(N.Provider,{value:J??L(m0,{}),children:L(K$,{children:L(B$,{children:X?L(w,{uiConfig:T}):L("form",{id:"piedata_global_form",action:z+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:L(w,{uiConfig:T})})})})})})})})},h0=($)=>{let J=t(()=>new b0,[]),Z=$.queryClient??J;return L(x.Provider,{value:$.onNavigate,children:L(l.Provider,{value:$.config,children:L(v.Provider,{value:$.onError,children:L(S0,{client:Z,children:L(v0,{...$})})})})})},g0=h0;import{useMemo as p0}from"react";var d0=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],u0=new Set(["telegram:cloud","telegram:secure"]),D$=($)=>{if($==="sid")return{source:"sid",key:"sid"};for(let J of d0){let Z=J+":";if($.startsWith(Z))return{source:J,key:$.slice(Z.length)}}return{source:"dom",key:$}},wJ=($,J=!1)=>{let{source:Z,key:Y}=D$($);if(Z==="sid"){let X=P.readSid();if(!X)throw Error("SocketIO isn't initialized properly");return[X]}if(Z==="localStorage"||Z==="sessionStorage")try{let X=P.readWebStorage(Z==="localStorage"?"local":"session",Y);if(X===null){if(J)console.warn(`No ${Z} value found for key ${Y}`);return[]}return[X]}catch(X){if(J)console.warn(`Failed to read ${Z} key ${Y}:`,X);return[]}if(Z==="cookie"){let X=P.readCookie(Y);if(X===null){if(J)console.warn(`No cookie found for key ${Y}`);return[]}return[X]}if(Z==="url"){let X=P.readUrlParams(Y);if(!X.length&&J)console.warn(`No URL query param found for key ${Y}`);return X}if(u0.has(Z)){if(J)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let W=P.readDomInput(Y);if(W===null){if(J)console.warn(`No input found with name ${Y}`);return[]}return W},c0=($,J,Z)=>{let Y=window.Telegram?.WebApp,W=$==="telegram:cloud"?Y?.CloudStorage:Y?.SecureStorage,X=$==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!W){if(Z)console.warn(`${X} is not available`);return Promise.resolve([])}return new Promise((z)=>{try{W.getItem(J,(G,Q)=>{if(G){if(Z)console.warn(`Failed to read ${X} key ${J}:`,G);z([]);return}if(Q==null||Q===""){if(Z)console.warn(`No ${X} value found for key ${J}`);z([]);return}z([Q])})}catch(G){if(Z)console.warn(`Failed to read ${X} key ${J}:`,G);z([])}})},jJ=async($,J=!1)=>{let{source:Z,key:Y}=D$($);if(Z==="telegram:cloud"||Z==="telegram:secure")return c0(Z,Y,J);if((Z==="localStorage"||Z==="sessionStorage")&&P.readWebStorageAsync)try{let W=await P.readWebStorageAsync(Z==="localStorage"?"local":"session",Y);if(W===null){if(J)console.warn(`No ${Z} value found for key ${Y}`);return[]}return[W]}catch(W){if(J)console.warn(`Failed to read ${Z} key ${Y}:`,W);return[]}return wJ($,J)},l0=($,J={},Z=[],Y,W)=>{let X=W?.renderingLogEnabled??!1,z=W?.timeout,G=W?.retryPolicy,Q=G?.maxRetries??0,_=G?.baseDelay??1000,H=G?.retryOn??[502,503,504];if(X)console.log("Registering AJAX: ",Y,J,Z);return async(F={})=>{if(!P.isClient()){if(X)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let B=W?.apiServer;if(!B){if(X)console.warn("AJAX skipped: apiServer is missing");return}if(!Y||!$){if(X)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await p$();let T=new FormData;for(let[U,O]of Object.entries({...J,...F}))T.append(U,O);for(let U of Z){let{key:O}=D$(U);for(let K of await jJ(U,X))T.append(O,K)}let I=B+"api/ajax_content"+Y;$(null);let M;for(let U=0;U<=Q;U++){if(U>0){let q=_*2**(U-1);if(X)console.log(`AJAX retry ${U}/${Q} after ${q}ms`);await new Promise((D)=>setTimeout(D,q))}let O=z!=null?new AbortController:null,K=O&&setTimeout(()=>O.abort(),z);try{let q=await fetch(I,{method:"POST",body:T,signal:O?.signal});if(K)clearTimeout(K);if(!q.ok&&H.includes(q.status)&&U<Q){M=Error(`HTTP ${q.status}`);continue}let y=(q.headers.get("content-type")||"").includes("application/json");if(!!q.body?.getReader&&!y){let h=q.body.getReader(),m=new TextDecoder,c="";while(!0){let{done:V$,value:NJ}=await h.read();if(V$)break;c+=m.decode(NJ,{stream:!0});let o$=c.split(`
3
+ `);c=o$.pop()??"";for(let EJ of o$){let F$=EJ.trim();if(!F$)continue;try{let RJ=JSON.parse(F$);$([RJ])}catch{if(X)console.warn("Failed to parse streamed line:",F$)}}}if(c.trim())try{let V$=JSON.parse(c);$([V$])}catch{if(X)console.warn("Failed to parse final streamed line:",c)}return{}}else{let h=await q.json();return $(h),h}}catch(q){if(K)clearTimeout(K);if(M=q,U<Q)continue;if(X)console.error("AJAX request failed:",q);return $(null),q}}if(X)console.error("AJAX request failed after retries:",M);return $(null),M}},s0=($,J={},Z=[],Y,W)=>{let{apiServer:X,enableRenderingLog:z}=p(),G=JSON.stringify(J),Q=JSON.stringify(Z),_=JSON.stringify(W);return p0(()=>l0($,J,Z,Y,{apiServer:X,renderingLogEnabled:z,timeout:W?.timeout,retryPolicy:W?.retryPolicy}),[$,G,Q,Y,X,z,_])};var o0=()=>{P.submitGlobalForm()};var i0=($,J)=>`${$}${A$}${J}`;export{aJ as usePieEmit,s0 as useAjaxSubmit,bJ as unregisterComponent,M$ as trackLazy,o0 as submitGlobalForm,d as setNativeField,bZ as resetNativeClientSources,k as registry,e as registerPieComponent,xJ as registerMultipleComponents,y$ as readNativeField,jJ as readAjaxKeyAsync,wJ as readAjaxKey,t$ as preloadComponent,hJ as prefetchLazyComponents,i0 as pieName,D$ as parseDepName,SJ as hasComponent,vJ as getRegistrySize,r as getRegistryEntry,j as getNativeClientConfig,n$ as getLazyComponentNames,s as getEmitter,CJ as getComponentMeta,fJ as getAllRegisteredComponents,xZ as configureNativeClientSources,u as clearNativeField,v$ as UnionCard,E as UIRendererContext,s$ as UILoading,w as UI,C as SocketIOContext,b$ as SessionStorageCard,N$ as SequenceCard,g0 as PieRoot,k0 as PieNativeRoot,l as PieConfigContext,A as PieCard,l$ as PieBaseRoot,A$ as PIEBREAK,R$ as OneOfCard,f as MittContext,S$ as IOEventsCard,k$ as HiddenCard,C$ as HTMLEmbedCard,N as FallbackContext,x$ as DeviceStorageCard,S as CentrifugeIOContext,w$ as BoxCard,f$ as AutoRedirectCard,g$ as AjaxGroupCard};