@swarm.ing/pieui 2.1.6 → 2.2.0

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 (66) hide show
  1. package/dist/components/PieCard/index.d.ts.map +1 -1
  2. package/dist/components/index.esm.js +1 -1
  3. package/dist/components/index.js +1 -1
  4. package/dist/index.esm.js +2 -2
  5. package/dist/index.js +2 -2
  6. package/dist/native/index.esm.js +2 -2
  7. package/dist/native/index.js +2 -2
  8. package/dist/server/card.d.ts +28 -0
  9. package/dist/server/card.d.ts.map +1 -0
  10. package/dist/server/cards/AjaxGroupCard.d.ts +8 -0
  11. package/dist/server/cards/AjaxGroupCard.d.ts.map +1 -0
  12. package/dist/server/cards/HTMLEmbedCard.d.ts +6 -0
  13. package/dist/server/cards/HTMLEmbedCard.d.ts.map +1 -0
  14. package/dist/server/cards/HiddenCard.d.ts +6 -0
  15. package/dist/server/cards/HiddenCard.d.ts.map +1 -0
  16. package/dist/server/cards/OneOfCard.d.ts +8 -0
  17. package/dist/server/cards/OneOfCard.d.ts.map +1 -0
  18. package/dist/server/cards/UnionCard.d.ts +8 -0
  19. package/dist/server/cards/UnionCard.d.ts.map +1 -0
  20. package/dist/server/cards/index.d.ts +6 -0
  21. package/dist/server/cards/index.d.ts.map +1 -0
  22. package/dist/server/form.d.ts +5 -0
  23. package/dist/server/form.d.ts.map +1 -0
  24. package/dist/server/index.d.ts +9 -0
  25. package/dist/server/index.d.ts.map +1 -0
  26. package/dist/server/index.esm.js +382 -0
  27. package/dist/server/index.js +427 -0
  28. package/dist/server/page.d.ts +26 -0
  29. package/dist/server/page.d.ts.map +1 -0
  30. package/dist/server/realtime.d.ts +13 -0
  31. package/dist/server/realtime.d.ts.map +1 -0
  32. package/dist/server/types.d.ts +28 -0
  33. package/dist/server/types.d.ts.map +1 -0
  34. package/dist/server/web.d.ts +23 -0
  35. package/dist/server/web.d.ts.map +1 -0
  36. package/dist/telegram/index.esm.js +1 -1
  37. package/dist/telegram/index.js +1 -1
  38. package/dist/tests/centrifugeSubscription.test.d.ts +2 -0
  39. package/dist/tests/centrifugeSubscription.test.d.ts.map +1 -0
  40. package/dist/tests/server/card-fill.test.d.ts +2 -0
  41. package/dist/tests/server/card-fill.test.d.ts.map +1 -0
  42. package/dist/tests/server/card-generate.test.d.ts +2 -0
  43. package/dist/tests/server/card-generate.test.d.ts.map +1 -0
  44. package/dist/tests/server/cards.test.d.ts +2 -0
  45. package/dist/tests/server/cards.test.d.ts.map +1 -0
  46. package/dist/tests/server/e2e.test.d.ts +2 -0
  47. package/dist/tests/server/e2e.test.d.ts.map +1 -0
  48. package/dist/tests/server/entry.test.d.ts +2 -0
  49. package/dist/tests/server/entry.test.d.ts.map +1 -0
  50. package/dist/tests/server/form.test.d.ts +2 -0
  51. package/dist/tests/server/form.test.d.ts.map +1 -0
  52. package/dist/tests/server/page.test.d.ts +2 -0
  53. package/dist/tests/server/page.test.d.ts.map +1 -0
  54. package/dist/tests/server/realtime.test.d.ts +2 -0
  55. package/dist/tests/server/realtime.test.d.ts.map +1 -0
  56. package/dist/tests/server/web-ajax.test.d.ts +2 -0
  57. package/dist/tests/server/web-ajax.test.d.ts.map +1 -0
  58. package/dist/tests/server/web-content.test.d.ts +2 -0
  59. package/dist/tests/server/web-content.test.d.ts.map +1 -0
  60. package/dist/tests/server/web-process.test.d.ts +2 -0
  61. package/dist/tests/server/web-process.test.d.ts.map +1 -0
  62. package/dist/tests/server/web-token.test.d.ts +2 -0
  63. package/dist/tests/server/web-token.test.d.ts.map +1 -0
  64. package/dist/util/centrifugeSubscription.d.ts +18 -0
  65. package/dist/util/centrifugeSubscription.d.ts.map +1 -0
  66. package/package.json +28 -3
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{lazy as LJ}from"react";var h=new Map;function p$($,J){return J.catch(()=>{if(h.get($)===J)h.delete($)}),h.set($,J),J}function B$($,J){return LJ(()=>{if(h.has(J))return h.get(J);return p$(J,$().then((Z)=>Z))})}var c$=async($,J)=>{if(!J)return;if(h.has($))return h.get($);return p$($,J().then((Z)=>Z))};var T$=globalThis,T=($,J)=>{let Z=Symbol.for($);if(!(Z in T$))T$[Z]=J();return T$[Z]};var y=T("@swarm.ing/pieui:component-registry",()=>new Map),PJ=($)=>{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=B$(J.loader,$.name),J.isLazy=!0;return J};function a($){let J=PJ($);return y.set(J.name,J),J.component}var wJ=($)=>{$.forEach((J)=>a(J))},RJ=($)=>{y.delete($)},EJ=($)=>{return y.has($)},jJ=($)=>{return y.get($)?.metadata},l=($)=>{return y.get($)},NJ=()=>{return Array.from(y.keys())},kJ=()=>{return y.size},d$=()=>Array.from(y.values()).filter(($)=>$.isLazy&&typeof $.loader==="function").map(($)=>$.name),l$=($)=>{let J=y.get($);if(!J?.isLazy||typeof J.loader!=="function")return;return c$($,J.loader)},u$=!1,yJ=()=>{if(u$||typeof window>"u")return;u$=!0;let $=navigator.connection;if($?.saveData)return;if($?.effectiveType&&["slow-2g","2g"].includes($.effectiveType))return;let J=d$(),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(()=>l$(J[W])).catch(()=>{}).finally(()=>Y(W+1))})};Y(0)};import{useContext as JJ}from"react";import{Linking as qZ,Pressable as DZ,View as KZ}from"react-native";import{useContext as V$,useEffect as F$,useRef as e$}from"react";import{createContext as bJ,useContext as xJ}from"react";var c=T("@swarm.ing/pieui:context:pieConfig",()=>bJ(null)),s=()=>{let $=xJ(c);if(!$)throw Error("usePieConfig must be used within PieConfigProvider");return $},o=()=>{let{apiServer:$}=s();return $},t=o,e=()=>{let{centrifugeServer:$}=s();return $};var x=()=>{let{enableRenderingLog:$}=s();return $},s$=x;var U$="__piedemo__";import{createContext as SJ}from"react";import{Centrifuge as o$}from"centrifuge";var i$=T("@swarm.ing/pieui:centrifuge-cache",()=>new Map),$$=($,J)=>{if(!J)return null;let Z=`${$}::${J}`,Y=i$.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 o$.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let X=new o$(J,{getToken:W});return i$.set(Z,X),X},fJ=T("@swarm.ing/pieui:context:centrifuge",()=>SJ(null)),S=fJ;import{io as CJ}from"socket.io-client";import{createContext as vJ}from"react";var n$=T("@swarm.ing/pieui:socket-cache",()=>new Map),J$=($)=>{let J=n$.get($);if(J)return J;let Z=CJ($,{autoConnect:!1,transports:["websocket"]});return n$.set($,Z),Z},hJ=T("@swarm.ing/pieui:context:socket",()=>vJ(null)),f=hJ;import mJ from"mitt";import{createContext as gJ,useCallback as pJ,useContext as cJ}from"react";function u(){return T("@swarm.ing/pieui:mitt-emitter",()=>mJ())}var r$=T("@swarm.ing/pieui:context:mitt",()=>gJ(null));function uJ($){let J=cJ(r$);return pJ((Z,Y)=>{(J??u()).emit(`pie${Z}_${$}`,Y)},[$,J])}var C=r$;function a$($){return $.wasRecovering===!0&&$.recovered===!1}function t$($){return $.recoverable===!1}import{jsx as sJ,jsxs as oJ,Fragment as lJ}from"react/jsx-runtime";var dJ=({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:H=void 0})=>{let D=s$(),M=e$(Q);M.current=Q;let E=e$(H);if(E.current=H,D)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=V$(f),L=V$(S),U=V$(C);if(F$(()=>{if(!I||!Y||!M.current||!J.name){if(D&&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((q)=>{let _=`pie${q}_${J.name}`;if(D)console.log(`[PieCard] Socket.IO registering event: ${_}`);let B=(P)=>{M.current?.[q]?.(P)};return I.on(_,B),[_,B]});return()=>{V.forEach(([q,_])=>{if(D)console.log(`[PieCard] Socket.IO unregistering event: ${q}`);I.off(q,_)})}},[I,J.name,Y]),F$(()=>{if(!L||!W||!z||!J.name){if(D&&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((q)=>{let _=`pie${q}_${J.name}_${z}`;if(D)console.log(`[PieCard] Centrifuge subscribing to channel: ${_}`);let B=L.newSubscription(_,{recoverable:!0,positioned:!0});return B.on("publication",(P)=>{if(D)console.log(`[PieCard] Centrifuge received data on ${_}:`,P.data);M.current?.[q]?.(P.data)}),B.on("subscribed",(P)=>{if(t$(P))console.warn(`[PieCard] Centrifuge channel ${_} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(a$(P)){if(D)console.log(`[PieCard] Centrifuge recovery gap on ${_}; requesting resync`);E.current?.({channel:_,reason:"gap"})}}),B.subscribe(),B});return()=>{V.forEach((q)=>{if(D)console.log("[PieCard] Centrifuge unsubscribing from channel");q.unsubscribe(),L.removeSubscription(q)})}},[L,z,J.name,W]),F$(()=>{if(!U||!X||!J.name){if(D&&X)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!U,useMittSupport:X,hasMethods:!!M.current,hasDataName:!!J?.name});return}let K=Object.keys(M.current??{}),V={};return K.forEach((q)=>{let _=`pie${q}_${J.name}`,B=(P)=>{if(D)console.log(`[PieCard] Mitt registering event: ${_}`);M.current?.[q]?.(P)};V[_]=B,U.on(_,B)}),()=>{Object.entries(V).forEach(([q,_])=>{if(D)console.log(`[PieCard] Mitt unregistering event: ${q}`);U.off(q,_)})}},[U,J.name,X]),D)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return oJ(lJ,{children:[sJ("input",{type:"hidden",name:J.name,value:JSON.stringify(G)}),Z]});return Z},F=dJ;import{useContext as $J,memo as WZ}from"react";import{createContext as iJ}from"react";import{jsx as aJ,Fragment as rJ}from"react/jsx-runtime";var nJ=T("@swarm.ing/pieui:context:fallback",()=>iJ(aJ(rJ,{}))),j=nJ;import{createContext as tJ}from"react";var eJ=T("@swarm.ing/pieui:context:lazyError",()=>tJ(void 0)),v=eJ;import{Component as $Z,Suspense as JZ}from"react";import{jsx as YZ}from"react/jsx-runtime";var ZZ=2,XZ=400;class d extends $Z{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch($){if(this.props.onError?.($),this.state.attempt<ZZ){let J=XZ*(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 YZ(JZ,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as I$}from"react/jsx-runtime";function zZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=$J(j),Y=$J(v),W=x();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=l($.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=I$(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J});if(X.isLazy){if(W)console.log("[UI] Rendering lazy component with Suspense:",X.name);return I$(d,{name:X.name,fallback:X.fallback?I$(X.fallback,{}):Z,onError:Y,children:Q})}if(W)console.log("[UI] Rendering component directly:",X.name);return Q}var w=WZ(zZ);import{createContext as QZ}from"react";var GZ=T("@swarm.ing/pieui:context:navigate",()=>QZ(void 0)),b=GZ;import{createContext as HZ}from"react";var _Z=T("@swarm.ing/pieui:context:uiRenderer",()=>HZ(null)),N=_Z;import{jsx as Z$}from"react/jsx-runtime";var BZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),TZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,url:W,sx:X}=$,z=JJ(b),Q=JJ(N)??w,G=()=>{if(!W)return;if(BZ(W))qZ.openURL(W).catch(()=>{});else z?.(W)},H=Z$(Q,{setUiAjaxConfiguration:Z,uiConfig:J});return Z$(F,{card:Y,data:$,children:W?Z$(DZ,{onPress:G,style:X,children:H}):Z$(KZ,{style:X,children:H})})},O$=TZ;import{useContext as UZ}from"react";import{View as VZ}from"react-native";import{jsx as M$}from"react/jsx-runtime";var FZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,sx:W}=$,X=UZ(N)??w;return M$(F,{card:Y,data:$,children:M$(VZ,{style:W,children:J.map((z,Q)=>M$(X,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},A$=FZ;import{useContext as IZ}from"react";import{View as OZ}from"react-native";import{jsx as L$}from"react/jsx-runtime";var MZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y,sx:W}=$,X=IZ(N)??w;return L$(F,{card:Y,data:$,children:L$(OZ,{style:W,children:J.map((z,Q)=>L$(X,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},P$=MZ;import{useEffect as ZJ,useState as AZ}from"react";var X$=new Map,m=($,J)=>{X$.set($,J)},g=($)=>{X$.delete($)},w$=($)=>{return X$.has($)?X$.get($):null};import{jsx as PZ}from"react/jsx-runtime";var LZ=({data:$})=>{let{name:J,value:Z,useSocketioSupport:Y,useCentrifugeSupport:W,useMittSupport:X,centrifugeChannel:z}=$,[Q,G]=AZ(Z);return ZJ(()=>{G(Z)},[Z]),ZJ(()=>{return m(J,[Q]),()=>g(J)},[J,Q]),PZ(F,{card:"HiddenCard",data:$,useSocketioSupport:Y,useCentrifugeSupport:W,useMittSupport:X,centrifugeChannel:z,methods:{update:({value:H})=>{G(H)}}})},R$=LZ;import{useEffect as XJ,useState as EZ}from"react";var Y$={};function wZ($){Y$={...Y$,...$}}function R(){return Y$}function RZ(){Y$={}}import{jsx as NZ}from"react/jsx-runtime";var jZ=({data:$})=>{let{name:J,key:Z,value:Y,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q}=$,[G,H]=EZ(Y);return XJ(()=>{H(Y)},[Y]),XJ(()=>{return R().storage?.setItem?.(Z,G),m(J,[G]),()=>g(J)},[Z,J,G]),NZ(F,{card:"DeviceStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:D})=>{H(D)},remove:()=>{R().storage?.removeItem?.(Z),H("")}}})},E$=jZ;import{useEffect as YJ,useState as kZ}from"react";import{jsx as bZ}from"react/jsx-runtime";var yZ=({data:$})=>{let{name:J,key:Z,value:Y,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q}=$,[G,H]=kZ(Y);return YJ(()=>{H(Y)},[Y]),YJ(()=>{return R().sessionStorage?.setItem?.(Z,G),m(J,[G]),()=>g(J)},[Z,J,G]),bZ(F,{card:"SessionStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:X,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:D})=>{H(D)},remove:()=>{R().sessionStorage?.removeItem?.(Z),H("")}}})},j$=yZ;import{useContext as xZ,useMemo as SZ,useRef as fZ}from"react";import{Alert as CZ,Linking as vZ}from"react-native";import{jsx as gZ}from"react/jsx-runtime";var hZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),mZ=({data:$})=>{let{useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:Y,centrifugeChannel:W}=$,X=xZ(b),z=fZ(X);z.current=X;let Q=SZ(()=>{let G=(H)=>{if(!H)return;if(hZ(H))vZ.openURL(H).catch(()=>{});else z.current?.(H)};return{alert:(H)=>CZ.alert(String(H.title??""),String(H.message??"")),log:(H)=>console.log("Log event",H),push:(H)=>console.warn("[IOEventsCard] push notifications are not supported on native",H?.title),redirect:(H)=>G(H.to),reload:(H)=>G(H.to)}},[]);return gZ(F,{card:"IOEventsCard",data:$,useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:Y,centrifugeChannel:W,methods:Q})},N$=mZ;import{useEffect as pZ,useState as cZ}from"react";import{Text as uZ}from"react-native";import{jsx as WJ}from"react/jsx-runtime";var dZ=($)=>($??"").replace(/<[^>]*>/g,"").replace(/&nbsp;/g," ").replace(/\s+/g," ").trim(),lZ=({data:$})=>{let{html:J,useSocketioSupport:Z,useCentrifugeSupport:Y,useMittSupport:W,centrifugeChannel:X}=$,[z,Q]=cZ(J);return pZ(()=>{Q(J)},[J]),WJ(F,{card:"HTMLEmbedCard",data:$,methods:{update:(G)=>Q(G.value)},useCentrifugeSupport:Y,useSocketioSupport:Z,useMittSupport:W,centrifugeChannel:X,children:WJ(uZ,{children:dZ(z)})})},k$=lZ;import{useContext as zJ,useEffect as sZ}from"react";import{Linking as oZ}from"react-native";import{jsx as rZ,Fragment as nZ}from"react/jsx-runtime";var iZ=({data:$})=>{let{url:J}=$,Z=zJ(b),Y=zJ(j);return sZ(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(J))oZ.openURL(J).catch(()=>{});else Z?.(J)},[J,Z]),rZ(nZ,{children:Y})},y$=iZ;import{useContext as aZ}from"react";import{jsx as QJ}from"react/jsx-runtime";var tZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:Y}=$,W=aZ(N)??w;return QJ(F,{card:Y,data:$,children:J.map((X,z)=>{return QJ(W,{uiConfig:X,setUiAjaxConfiguration:Z},`children-${z}`)})})},b$=tZ;import{useCallback as x$,useContext as S$,useEffect as eZ,useRef as $0,useState as GJ}from"react";import{jsx as HJ}from"react/jsx-runtime";var J0=({data:$,content:J})=>{let{useLoader:Z,noReturn:Y,returnType:W,useSocketioSupport:X,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G}=$,H=S$(j),D=S$(N)??w,[M,E]=GJ(!1),[I,L]=GJ(null),U=$0(J),K=S$(C),V=x$((B)=>{if(B===null)E(!0);else if(E(!1),!Y)U.current=B;if(!Y)L(B)},[Y]),q=x$((B)=>{U.current=B.content,L(B.content)},[]),_=x$((B)=>{if(B===null)E(!0);else if(E(!1),!Y)for(let P of B)K?.emit(P.name,P.data)},[Y,K]);if(eZ(()=>{L(J),E(!1)},[J]),!I&&Z)return H;return HJ(F,{card:"AjaxGroupCard",data:$,methods:{changeContent:q},useSocketioSupport:X,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G,children:HJ(D,{uiConfig:I??U.current,setUiAjaxConfiguration:W==="events"?_:V})})},f$=J0;var Z0=[{name:"BoxCard",component:O$},{name:"SequenceCard",component:A$},{name:"OneOfCard",component:P$},{name:"HiddenCard",component:R$},{name:"DeviceStorageCard",component:E$},{name:"SessionStorageCard",component:j$},{name:"IOEventsCard",component:N$},{name:"HTMLEmbedCard",component:k$},{name:"AutoRedirectCard",component:y$},{name:"UnionCard",component:b$},{name:"AjaxGroupCard",component:f$}];for(let $ of Z0)a($);import{useMemo as v$,useState as U0}from"react";import{QueryClient as V0,QueryClientProvider as F0}from"@tanstack/react-query";import{useContext as _0,useEffect as q0}from"react";import{useEffect as X0,useState as Y0}from"react";var W$=new Map,z$=new Map;function Q$($,J){let Z=`${$}::${J}`,Y=$?W$.get(Z):void 0,[W,X]=Y0(Y??null);return X0(()=>{if(!$)return;if(W$.has(Z)){X(W$.get(Z));return}let z=z$.get(Z);if(!z)z=fetch($+`api/support/${J}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return W$.set(Z,G),z$.delete(Z),G}).catch((G)=>{throw z$.delete(Z),G}),z$.set(Z,z);let Q=!1;return z.then((G)=>{if(!Q)X(G)}).catch(()=>{}),()=>{Q=!0}},[$,J,Z]),W}var W0=($)=>{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},z0={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:W0,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()}},_J=z0;var qJ,Q0={isClient(){return!0},readSid(){return qJ},setSid($){qJ=$},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($):w$($)},submitGlobalForm(){R().submitForm?.()}},DJ=Q0;var G0=typeof navigator<"u"&&navigator.product==="ReactNative",H0=G0?DJ:_J,O=H0;var i=T("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function KJ(){i.resolve?.()}function C$(){if(!O.isClient())return Promise.resolve();if(O.readSid()!==void 0)return Promise.resolve();if(!i.promise)i.promise=new Promise(($)=>{i.resolve=()=>{$()}});return i.promise}var D0=({children:$})=>{let J=_0(f),Z=t(),Y=Q$(Z,"socketIO"),W=(X)=>{if(O.isClient())O.setSid(X.sid),KJ(),console.log(`SocketIO initialized: ${O.readSid()}`)};return q0(()=>{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]),$},G$=D0;import{useContext as K0,useEffect as B0}from"react";var T0=({children:$})=>{let J=K0(S),Z=t(),Y=Q$(Z,"centrifuge");return B0(()=>{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]),$},H$=T0;import{jsx as k,Fragment as M0}from"react/jsx-runtime";var I0=({location:$,fallback:J,children:Z,disableGlobalForm:Y})=>{let W=o(),X=e(),z=x(),Q=v$(()=>u(),[]),G=v$(()=>W?J$(W):null,[W]),H=v$(()=>W?$$(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 k(C.Provider,{value:Q,children:k(f.Provider,{value:G,children:k(S.Provider,{value:H,children:k(j.Provider,{value:J??k(M0,{}),children:k(G$,{children:k(H$,{children:Y?Z:k("form",{id:"piedata_global_form",action:W+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},O0=($)=>{let[J]=U0(()=>new V0),Z=$.queryClient??J;return k(b.Provider,{value:$.onNavigate,children:k(c.Provider,{value:$.config,children:k(v.Provider,{value:$.onError,children:k(F0,{client:Z,children:k(I0,{...$})})})})})},h$=O0;import{jsx as L0}from"react/jsx-runtime";var A0=($)=>{return L0(h$,{...$,disableGlobalForm:!0})},P0=A0;import{useMemo as n}from"react";import{QueryClient as R0,QueryClientProvider as E0,useQuery as j0}from"@tanstack/react-query";import{createAxiosDateTransformer as N0}from"axios-date-transformer";import{useContext as BJ}from"react";import{jsx as _$}from"react/jsx-runtime";function TJ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=BJ(j),Y=BJ(v),W=x();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=l($.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 _$(G,{})}if(W)console.log("[UILoading] No fallback, rendering full component:",X.name);let z=X.component,Q=_$(N.Provider,{value:TJ,children:_$(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J})});if(X.isLazy)return _$(d,{name:X.name,fallback:Z,onError:Y,children:Q});return Q}var m$=TJ;import{jsx as w0}from"react/jsx-runtime";function UJ($,J,Z){if(!J)return Z;let Y=$.replace(/^\//,""),W=J[Y];if(!W)return Z;return w0(m$,{uiConfig:W})}import{jsx as A,Fragment as b0}from"react/jsx-runtime";var k0=({location:$,fallback:J,piecache:Z,onError:Y,queryOptions:W,disableGlobalForm:X})=>{let z=o(),Q=e(),G=x(),H=n(()=>N0({baseURL:z||""}),[z]),D=n(()=>u(),[]),M=n(()=>z?J$(z):null,[z]),E=n(()=>z?$$(z,Q):null,[z,Q]),{data:I,isLoading:L,error:U}=j0({queryKey:["uiConfig",$.pathname+$.search,z],enabled:!!z,queryFn:async()=>{let V=new URLSearchParams($.search);V.set("__pieroot","web");let q="/api/content"+$.pathname+"?"+V.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",q);let _=await H.get(q,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",_.data);return _.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(V)=>Math.min(1000*2**V,30000),...W}),K=UJ($.pathname,Z,J);if(!z)return K??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),K}if(L||!I){if(G)console.log("[PieRoot] Loading state:",{isLoading:L,hasUiConfiguration:!!I});return K}if(G)console.log("[PieRoot] UI configuration loaded successfully:",I),console.log("[PieRoot] Rendering UI with configuration");return A(C.Provider,{value:D,children:A(f.Provider,{value:M,children:A(S.Provider,{value:E,children:A(j.Provider,{value:J??A(b0,{}),children:A(G$,{children:A(H$,{children:X?A(w,{uiConfig:I}):A("form",{id:"piedata_global_form",action:z+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:A(w,{uiConfig:I})})})})})})})})},y0=($)=>{let J=n(()=>new R0,[]),Z=$.queryClient??J;return A(b.Provider,{value:$.onNavigate,children:A(c.Provider,{value:$.config,children:A(v.Provider,{value:$.onError,children:A(E0,{client:Z,children:A(k0,{...$})})})})})},x0=y0;import{useMemo as S0}from"react";var f0=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],C0=new Set(["telegram:cloud","telegram:secure"]),q$=($)=>{if($==="sid")return{source:"sid",key:"sid"};for(let J of f0){let Z=J+":";if($.startsWith(Z))return{source:J,key:$.slice(Z.length)}}return{source:"dom",key:$}},VJ=($,J=!1)=>{let{source:Z,key:Y}=q$($);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(C0.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},v0=($,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([])}})},FJ=async($,J=!1)=>{let{source:Z,key:Y}=q$($);if(Z==="telegram:cloud"||Z==="telegram:secure")return v0(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 VJ($,J)},h0=($,J={},Z=[],Y,W)=>{let X=W?.renderingLogEnabled??!1,z=W?.timeout,Q=W?.retryPolicy,G=Q?.maxRetries??0,H=Q?.baseDelay??1000,D=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 E=W?.apiServer;if(!E){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 C$();let I=new FormData;for(let[K,V]of Object.entries({...J,...M}))I.append(K,V);for(let K of Z){let{key:V}=q$(K);for(let q of await FJ(K,X))I.append(V,q)}let L=E+"api/ajax_content"+Y;$(null);let U;for(let K=0;K<=G;K++){if(K>0){let _=H*2**(K-1);if(X)console.log(`AJAX retry ${K}/${G} after ${_}ms`);await new Promise((B)=>setTimeout(B,_))}let V=z!=null?new AbortController:null,q=V&&setTimeout(()=>V.abort(),z);try{let _=await fetch(L,{method:"POST",body:I,signal:V?.signal});if(q)clearTimeout(q);if(!_.ok&&D.includes(_.status)&&K<G){U=Error(`HTTP ${_.status}`);continue}let P=(_.headers.get("content-type")||"").includes("application/json");if(!!_.body?.getReader&&!P){let r=_.body.getReader(),IJ=new TextDecoder,p="";while(!0){let{done:D$,value:OJ}=await r.read();if(D$)break;p+=IJ.decode(OJ,{stream:!0});let g$=p.split(`
3
- `);p=g$.pop()??"";for(let MJ of g$){let K$=MJ.trim();if(!K$)continue;try{let AJ=JSON.parse(K$);$([AJ])}catch{if(X)console.warn("Failed to parse streamed line:",K$)}}}if(p.trim())try{let D$=JSON.parse(p);$([D$])}catch{if(X)console.warn("Failed to parse final streamed line:",p)}return{}}else{let r=await _.json();return $(r),r}}catch(_){if(q)clearTimeout(q);if(U=_,K<G)continue;if(X)console.error("AJAX request failed:",_);return $(null),_}}if(X)console.error("AJAX request failed after retries:",U);return $(null),U}},m0=($,J={},Z=[],Y,W)=>{let{apiServer:X,enableRenderingLog:z}=s(),Q=JSON.stringify(J),G=JSON.stringify(Z),H=JSON.stringify(W);return S0(()=>h0($,J,Z,Y,{apiServer:X,renderingLogEnabled:z,timeout:W?.timeout,retryPolicy:W?.retryPolicy}),[$,Q,G,Y,X,z,H])};var g0=()=>{O.submitGlobalForm()};var p0=($,J)=>`${$}${U$}${J}`;export{uJ as usePieEmit,m0 as useAjaxSubmit,RJ as unregisterComponent,B$ as trackLazy,g0 as submitGlobalForm,m as setNativeField,RZ as resetNativeClientSources,y as registry,a as registerPieComponent,wJ as registerMultipleComponents,w$ as readNativeField,FJ as readAjaxKeyAsync,VJ as readAjaxKey,l$ as preloadComponent,yJ as prefetchLazyComponents,p0 as pieName,q$ as parseDepName,EJ as hasComponent,kJ as getRegistrySize,l as getRegistryEntry,R as getNativeClientConfig,d$ as getLazyComponentNames,u as getEmitter,jJ as getComponentMeta,NJ as getAllRegisteredComponents,wZ as configureNativeClientSources,g as clearNativeField,b$ as UnionCard,N as UIRendererContext,m$ as UILoading,w as UI,f as SocketIOContext,j$ as SessionStorageCard,A$ as SequenceCard,x0 as PieRoot,P0 as PieNativeRoot,c as PieConfigContext,F as PieCard,h$ as PieBaseRoot,U$ as PIEBREAK,P$ as OneOfCard,C as MittContext,N$ as IOEventsCard,R$ as HiddenCard,k$ as HTMLEmbedCard,j as FallbackContext,E$ as DeviceStorageCard,S as CentrifugeIOContext,O$ as BoxCard,y$ as AutoRedirectCard,f$ as AjaxGroupCard};
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};
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- var PZ=Object.create;var{getPrototypeOf:wZ,defineProperty:J$,getOwnPropertyNames:VJ,getOwnPropertyDescriptor:RZ}=Object,FJ=Object.prototype.hasOwnProperty;var EZ=($,J,Z)=>{Z=$!=null?PZ(wZ($)):{};let X=J||!$||!$.__esModule?J$(Z,"default",{value:$,enumerable:!0}):Z;for(let W of VJ($))if(!FJ.call(X,W))J$(X,W,{get:()=>$[W],enumerable:!0});return X},UJ=new WeakMap,jZ=($)=>{var J=UJ.get($),Z;if(J)return J;if(J=J$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function")VJ($).map((X)=>!FJ.call(J,X)&&J$(J,X,{get:()=>$[X],enumerable:!(Z=RZ($,X))||Z.enumerable}));return UJ.set($,J),J};var NZ=($,J)=>{for(var Z in J)J$($,Z,{get:J[Z],enumerable:!0,configurable:!0,set:(X)=>J[Z]=()=>X})};var F0={};NZ(F0,{usePieEmit:()=>hJ,useAjaxSubmit:()=>VZ,unregisterComponent:()=>PJ,trackLazy:()=>T$,submitGlobalForm:()=>FZ,setNativeField:()=>g,resetNativeClientSources:()=>tJ,registry:()=>b,registerPieComponent:()=>Z$,registerMultipleComponents:()=>LJ,readNativeField:()=>y$,readAjaxKeyAsync:()=>BJ,readAjaxKey:()=>KJ,preloadComponent:()=>WJ,prefetchLazyComponents:()=>NJ,pieName:()=>IZ,parseDepName:()=>K$,hasComponent:()=>wJ,getRegistrySize:()=>jJ,getRegistryEntry:()=>s,getNativeClientConfig:()=>w,getLazyComponentNames:()=>YJ,getEmitter:()=>d,getComponentMeta:()=>RJ,getAllRegisteredComponents:()=>EJ,configureNativeClientSources:()=>aJ,clearNativeField:()=>p,UnionCard:()=>c$,UIRendererContext:()=>k,UILoading:()=>$J,UI:()=>P,SocketIOContext:()=>f,SessionStorageCard:()=>f$,SequenceCard:()=>E$,PieRoot:()=>TZ,PieNativeRoot:()=>HZ,PieConfigContext:()=>u,PieCard:()=>U,PieBaseRoot:()=>e$,PIEBREAK:()=>I$,OneOfCard:()=>N$,MittContext:()=>C,IOEventsCard:()=>v$,HiddenCard:()=>b$,HTMLEmbedCard:()=>m$,FallbackContext:()=>N,DeviceStorageCard:()=>S$,CentrifugeIOContext:()=>S,BoxCard:()=>w$,AutoRedirectCard:()=>g$,AjaxGroupCard:()=>u$});module.exports=jZ(F0);var IJ=require("react"),c=new Map;function OJ($,J){return J.catch(()=>{if(c.get($)===J)c.delete($)}),c.set($,J),J}function T$($,J){return IJ.lazy(()=>{if(c.has(J))return c.get(J);return OJ(J,$().then((Z)=>Z))})}var MJ=async($,J)=>{if(!J)return;if(c.has($))return c.get($);return OJ($,J().then((Z)=>Z))};var XJ=globalThis,T=($,J)=>{let Z=Symbol.for($);if(!(Z in XJ))XJ[Z]=J();return XJ[Z]};var b=T("@swarm.ing/pieui:component-registry",()=>new Map),kZ=($)=>{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=T$(J.loader,$.name),J.isLazy=!0;return J};function Z$($){let J=kZ($);return b.set(J.name,J),J.component}var LJ=($)=>{$.forEach((J)=>Z$(J))},PJ=($)=>{b.delete($)},wJ=($)=>{return b.has($)},RJ=($)=>{return b.get($)?.metadata},s=($)=>{return b.get($)},EJ=()=>{return Array.from(b.keys())},jJ=()=>{return b.size},YJ=()=>Array.from(b.values()).filter(($)=>$.isLazy&&typeof $.loader==="function").map(($)=>$.name),WJ=($)=>{let J=b.get($);if(!J?.isLazy||typeof J.loader!=="function")return;return MJ($,J.loader)},AJ=!1,NJ=()=>{if(AJ||typeof window>"u")return;AJ=!0;let $=navigator.connection;if($?.saveData)return;if($?.effectiveType&&["slow-2g","2g"].includes($.effectiveType))return;let J=YJ(),Z="requestIdleCallback"in window?(W)=>window.requestIdleCallback(W,{timeout:2000}):(W)=>window.setTimeout(W,300),X=(W)=>{if(W>=J.length)return;Z(()=>{Promise.resolve().then(()=>WJ(J[W])).catch(()=>{}).finally(()=>X(W+1))})};X(0)};var QJ=require("react"),r=require("react-native");var x=require("react");var U$=require("react");var u=T("@swarm.ing/pieui:context:pieConfig",()=>U$.createContext(null)),X$=()=>{let $=U$.useContext(u);if(!$)throw Error("usePieConfig must be used within PieConfigProvider");return $},Y$=()=>{let{apiServer:$}=X$();return $},V$=Y$,F$=()=>{let{centrifugeServer:$}=X$();return $};var h=()=>{let{enableRenderingLog:$}=X$();return $},kJ=h;var I$="__piedemo__";var bJ=require("react"),zJ=require("centrifuge");var yJ=T("@swarm.ing/pieui:centrifuge-cache",()=>new Map),O$=($,J)=>{if(!J)return null;let Z=`${$}::${J}`,X=yJ.get(Z);if(X)return X;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 zJ.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let Y=new zJ.Centrifuge(J,{getToken:W});return yJ.set(Z,Y),Y},yZ=T("@swarm.ing/pieui:context:centrifuge",()=>bJ.createContext(null)),S=yZ;var SJ=require("socket.io-client"),fJ=require("react");var xJ=T("@swarm.ing/pieui:socket-cache",()=>new Map),M$=($)=>{let J=xJ.get($);if(J)return J;let Z=SJ.io($,{autoConnect:!1,transports:["websocket"]});return xJ.set($,Z),Z},bZ=T("@swarm.ing/pieui:context:socket",()=>fJ.createContext(null)),f=bZ;var CJ=EZ(require("mitt")),o=require("react");function d(){return T("@swarm.ing/pieui:mitt-emitter",()=>CJ.default())}var vJ=T("@swarm.ing/pieui:context:mitt",()=>o.createContext(null));function hJ($){let J=o.useContext(vJ);return o.useCallback((Z,X)=>{(J??d()).emit(`pie${Z}_${$}`,X)},[$,J])}var C=vJ;function mJ($){return $.wasRecovering===!0&&$.recovered===!1}function gJ($){return $.recoverable===!1}var i=require("react/jsx-runtime"),xZ=({card:$,data:J,children:Z,useSocketioSupport:X=!1,useCentrifugeSupport:W=!1,useMittSupport:Y=!1,centrifugeChannel:z=void 0,methods:Q=void 0,stored:G=void 0,onResync:H=void 0})=>{let D=kJ(),A=x.useRef(Q);A.current=Q;let y=x.useRef(H);if(y.current=H,D)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:X,centrifuge:W,mitt:Y,centrifugeChannel:z}),console.log("[PieCard] Methods:",Q?Object.keys(Q):"none"),console.log("[PieCard] Has children:",!!Z);let I=x.useContext(f),E=x.useContext(S),V=x.useContext(C);if(x.useEffect(()=>{if(!I||!X||!A.current||!J.name){if(D&&X)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!I,useSocketioSupport:X,hasMethods:!!A.current,hasDataName:!!J?.name});return}let F=Object.keys(A.current??{}).map((q)=>{let _=`pie${q}_${J.name}`;if(D)console.log(`[PieCard] Socket.IO registering event: ${_}`);let B=(j)=>{A.current?.[q]?.(j)};return I.on(_,B),[_,B]});return()=>{F.forEach(([q,_])=>{if(D)console.log(`[PieCard] Socket.IO unregistering event: ${q}`);I.off(q,_)})}},[I,J.name,X]),x.useEffect(()=>{if(!E||!W||!z||!J.name){if(D&&W)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!E,useCentrifugeSupport:W,hasCentrifugeChannel:!!z,hasMethods:!!A.current,hasDataName:!!J?.name});return}let F=Object.keys(A.current??{}).map((q)=>{let _=`pie${q}_${J.name}_${z}`;if(D)console.log(`[PieCard] Centrifuge subscribing to channel: ${_}`);let B=E.newSubscription(_,{recoverable:!0,positioned:!0});return B.on("publication",(j)=>{if(D)console.log(`[PieCard] Centrifuge received data on ${_}:`,j.data);A.current?.[q]?.(j.data)}),B.on("subscribed",(j)=>{if(gJ(j))console.warn(`[PieCard] Centrifuge channel ${_} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(mJ(j)){if(D)console.log(`[PieCard] Centrifuge recovery gap on ${_}; requesting resync`);y.current?.({channel:_,reason:"gap"})}}),B.subscribe(),B});return()=>{F.forEach((q)=>{if(D)console.log("[PieCard] Centrifuge unsubscribing from channel");q.unsubscribe(),E.removeSubscription(q)})}},[E,z,J.name,W]),x.useEffect(()=>{if(!V||!Y||!J.name){if(D&&Y)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!V,useMittSupport:Y,hasMethods:!!A.current,hasDataName:!!J?.name});return}let K=Object.keys(A.current??{}),F={};return K.forEach((q)=>{let _=`pie${q}_${J.name}`,B=(j)=>{if(D)console.log(`[PieCard] Mitt registering event: ${_}`);A.current?.[q]?.(j)};F[_]=B,V.on(_,B)}),()=>{Object.entries(F).forEach(([q,_])=>{if(D)console.log(`[PieCard] Mitt unregistering event: ${q}`);V.off(q,_)})}},[V,J.name,Y]),D)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return i.jsxs(i.Fragment,{children:[i.jsx("input",{type:"hidden",name:J.name,value:JSON.stringify(G)}),Z]});return Z},U=xZ;var W$=require("react");var pJ=require("react");var A$=require("react/jsx-runtime"),SZ=T("@swarm.ing/pieui:context:fallback",()=>pJ.createContext(A$.jsx(A$.Fragment,{}))),N=SZ;var cJ=require("react");var fZ=T("@swarm.ing/pieui:context:lazyError",()=>cJ.createContext(void 0)),m=fZ;var L$=require("react"),uJ=require("react/jsx-runtime"),CZ=2,vZ=400;class n extends L$.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch($){if(this.props.onError?.($),this.state.attempt<CZ){let J=vZ*(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 uJ.jsx(L$.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var P$=require("react/jsx-runtime");function hZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=W$.useContext(N),X=W$.useContext(m),W=h();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 Y=s($.card);if(!Y?.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:Y.name,isLazy:Y.isLazy,hasMetadata:!!Y.metadata});let z=Y.component,Q=P$.jsx(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J});if(Y.isLazy){if(W)console.log("[UI] Rendering lazy component with Suspense:",Y.name);return P$.jsx(n,{name:Y.name,fallback:Y.fallback?P$.jsx(Y.fallback,{}):Z,onError:X,children:Q})}if(W)console.log("[UI] Rendering component directly:",Y.name);return Q}var P=W$.memo(hZ);var dJ=require("react");var mZ=T("@swarm.ing/pieui:context:navigate",()=>dJ.createContext(void 0)),v=mZ;var lJ=require("react");var gZ=T("@swarm.ing/pieui:context:uiRenderer",()=>lJ.createContext(null)),k=gZ;var z$=require("react/jsx-runtime"),pZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),cZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,url:W,sx:Y}=$,z=QJ.useContext(v),Q=QJ.useContext(k)??P,G=()=>{if(!W)return;if(pZ(W))r.Linking.openURL(W).catch(()=>{});else z?.(W)},H=z$.jsx(Q,{setUiAjaxConfiguration:Z,uiConfig:J});return z$.jsx(U,{card:X,data:$,children:W?z$.jsx(r.Pressable,{onPress:G,style:Y,children:H}):z$.jsx(r.View,{style:Y,children:H})})},w$=cZ;var sJ=require("react"),oJ=require("react-native");var R$=require("react/jsx-runtime"),uZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,sx:W}=$,Y=sJ.useContext(k)??P;return R$.jsx(U,{card:X,data:$,children:R$.jsx(oJ.View,{style:W,children:J.map((z,Q)=>R$.jsx(Y,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},E$=uZ;var iJ=require("react"),nJ=require("react-native");var j$=require("react/jsx-runtime"),dZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,sx:W}=$,Y=iJ.useContext(k)??P;return j$.jsx(U,{card:X,data:$,children:j$.jsx(nJ.View,{style:W,children:J.map((z,Q)=>j$.jsx(Y,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},N$=dZ;var Q$=require("react");var k$=new Map,g=($,J)=>{k$.set($,J)},p=($)=>{k$.delete($)},y$=($)=>{return k$.has($)?k$.get($):null};var rJ=require("react/jsx-runtime"),lZ=({data:$})=>{let{name:J,value:Z,useSocketioSupport:X,useCentrifugeSupport:W,useMittSupport:Y,centrifugeChannel:z}=$,[Q,G]=Q$.useState(Z);return Q$.useEffect(()=>{G(Z)},[Z]),Q$.useEffect(()=>{return g(J,[Q]),()=>p(J)},[J,Q]),rJ.jsx(U,{card:"HiddenCard",data:$,useSocketioSupport:X,useCentrifugeSupport:W,useMittSupport:Y,centrifugeChannel:z,methods:{update:({value:H})=>{G(H)}}})},b$=lZ;var G$=require("react");var x$={};function aJ($){x$={...x$,...$}}function w(){return x$}function tJ(){x$={}}var eJ=require("react/jsx-runtime"),sZ=({data:$})=>{let{name:J,key:Z,value:X,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q}=$,[G,H]=G$.useState(X);return G$.useEffect(()=>{H(X)},[X]),G$.useEffect(()=>{return w().storage?.setItem?.(Z,G),g(J,[G]),()=>p(J)},[Z,J,G]),eJ.jsx(U,{card:"DeviceStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:D})=>{H(D)},remove:()=>{w().storage?.removeItem?.(Z),H("")}}})},S$=sZ;var H$=require("react");var $Z=require("react/jsx-runtime"),oZ=({data:$})=>{let{name:J,key:Z,value:X,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q}=$,[G,H]=H$.useState(X);return H$.useEffect(()=>{H(X)},[X]),H$.useEffect(()=>{return w().sessionStorage?.setItem?.(Z,G),g(J,[G]),()=>p(J)},[Z,J,G]),$Z.jsx(U,{card:"SessionStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:D})=>{H(D)},remove:()=>{w().sessionStorage?.removeItem?.(Z),H("")}}})},f$=oZ;var a=require("react"),C$=require("react-native");var JZ=require("react/jsx-runtime"),iZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),nZ=({data:$})=>{let{useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:X,centrifugeChannel:W}=$,Y=a.useContext(v),z=a.useRef(Y);z.current=Y;let Q=a.useMemo(()=>{let G=(H)=>{if(!H)return;if(iZ(H))C$.Linking.openURL(H).catch(()=>{});else z.current?.(H)};return{alert:(H)=>C$.Alert.alert(String(H.title??""),String(H.message??"")),log:(H)=>console.log("Log event",H),push:(H)=>console.warn("[IOEventsCard] push notifications are not supported on native",H?.title),redirect:(H)=>G(H.to),reload:(H)=>G(H.to)}},[]);return JZ.jsx(U,{card:"IOEventsCard",data:$,useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:X,centrifugeChannel:W,methods:Q})},v$=nZ;var h$=require("react"),ZZ=require("react-native");var GJ=require("react/jsx-runtime"),rZ=($)=>($??"").replace(/<[^>]*>/g,"").replace(/&nbsp;/g," ").replace(/\s+/g," ").trim(),aZ=({data:$})=>{let{html:J,useSocketioSupport:Z,useCentrifugeSupport:X,useMittSupport:W,centrifugeChannel:Y}=$,[z,Q]=h$.useState(J);return h$.useEffect(()=>{Q(J)},[J]),GJ.jsx(U,{card:"HTMLEmbedCard",data:$,methods:{update:(G)=>Q(G.value)},useCentrifugeSupport:X,useSocketioSupport:Z,useMittSupport:W,centrifugeChannel:Y,children:GJ.jsx(ZZ.Text,{children:rZ(z)})})},m$=aZ;var _$=require("react"),XZ=require("react-native");var p$=require("react/jsx-runtime"),tZ=({data:$})=>{let{url:J}=$,Z=_$.useContext(v),X=_$.useContext(N);return _$.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(J))XZ.Linking.openURL(J).catch(()=>{});else Z?.(J)},[J,Z]),p$.jsx(p$.Fragment,{children:X})},g$=tZ;var YZ=require("react");var HJ=require("react/jsx-runtime"),eZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X}=$,W=YZ.useContext(k)??P;return HJ.jsx(U,{card:X,data:$,children:J.map((Y,z)=>{return HJ.jsx(W,{uiConfig:Y,setUiAjaxConfiguration:Z},`children-${z}`)})})},c$=eZ;var R=require("react");var _J=require("react/jsx-runtime"),$0=({data:$,content:J})=>{let{useLoader:Z,noReturn:X,returnType:W,useSocketioSupport:Y,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G}=$,H=R.useContext(N),D=R.useContext(k)??P,[A,y]=R.useState(!1),[I,E]=R.useState(null),V=R.useRef(J),K=R.useContext(C),F=R.useCallback((B)=>{if(B===null)y(!0);else if(y(!1),!X)V.current=B;if(!X)E(B)},[X]),q=R.useCallback((B)=>{V.current=B.content,E(B.content)},[]),_=R.useCallback((B)=>{if(B===null)y(!0);else if(y(!1),!X)for(let j of B)K?.emit(j.name,j.data)},[X,K]);if(R.useEffect(()=>{E(J),y(!1)},[J]),!I&&Z)return H;return _J.jsx(U,{card:"AjaxGroupCard",data:$,methods:{changeContent:q},useSocketioSupport:Y,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G,children:_J.jsx(D,{uiConfig:I??V.current,setUiAjaxConfiguration:W==="events"?_:F})})},u$=$0;var J0=[{name:"BoxCard",component:w$},{name:"SequenceCard",component:E$},{name:"OneOfCard",component:N$},{name:"HiddenCard",component:b$},{name:"DeviceStorageCard",component:S$},{name:"SessionStorageCard",component:f$},{name:"IOEventsCard",component:v$},{name:"HTMLEmbedCard",component:m$},{name:"AutoRedirectCard",component:g$},{name:"UnionCard",component:c$},{name:"AjaxGroupCard",component:u$}];for(let $ of J0)Z$($);var t=require("react"),t$=require("@tanstack/react-query");var i$=require("react");var s$=require("react"),d$=new Map,l$=new Map;function o$($,J){let Z=`${$}::${J}`,X=$?d$.get(Z):void 0,[W,Y]=s$.useState(X??null);return s$.useEffect(()=>{if(!$)return;if(d$.has(Z)){Y(d$.get(Z));return}let z=l$.get(Z);if(!z)z=fetch($+`api/support/${J}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return d$.set(Z,G),l$.delete(Z),G}).catch((G)=>{throw l$.delete(Z),G}),l$.set(Z,z);let Q=!1;return z.then((G)=>{if(!Q)Y(G)}).catch(()=>{}),()=>{Q=!0}},[$,J,Z]),W}var Z0=($)=>{let J=document.cookie?document.cookie.split(";"):[];for(let Z of J){let X=Z.indexOf("=");if((X===-1?Z:Z.slice(0,X)).trim()===$){let Y=X===-1?"":Z.slice(X+1).trim();try{return decodeURIComponent(Y)}catch{return Y}}}return null},X0={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:Z0,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()}},WZ=X0;var zZ,Y0={isClient(){return!0},readSid(){return zZ},setSid($){zZ=$},readWebStorage($,J){let Z=w(),X=$==="local"?Z.storage:Z.sessionStorage;return X?X.getItem(J):null},async readWebStorageAsync($,J){let Z=w(),X=$==="local"?Z.asyncStorage:Z.asyncSessionStorage;if(X)return X.getItem(J);let W=$==="local"?Z.storage:Z.sessionStorage;return W?W.getItem(J):null},readCookie($){let J=w();return J.getCookie?J.getCookie($):null},readUrlParams($){let J=w();return J.getRouteParams?J.getRouteParams($):[]},readDomInput($){let J=w();return J.getInput?J.getInput($):y$($)},submitGlobalForm(){w().submitForm?.()}},QZ=Y0;var W0=typeof navigator<"u"&&navigator.product==="ReactNative",z0=W0?QZ:WZ,O=z0;var q$=T("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function GZ(){q$.resolve?.()}function qJ(){if(!O.isClient())return Promise.resolve();if(O.readSid()!==void 0)return Promise.resolve();if(!q$.promise)q$.promise=new Promise(($)=>{q$.resolve=()=>{$()}});return q$.promise}var Q0=({children:$})=>{let J=i$.useContext(f),Z=V$(),X=o$(Z,"socketIO"),W=(Y)=>{if(O.isClient())O.setSid(Y.sid),GZ(),console.log(`SocketIO initialized: ${O.readSid()}`)};return i$.useEffect(()=>{if(!J)return;let Y=()=>{console.log("SocketIO connected")},z=(Q)=>{console.log(`SocketIO disconnected: ${Q}`),J.connect()};if(X)J.on("pieinit",W),J.on("connect",Y),J.on("disconnect",z),J.connect();return()=>{if(X)J.off("pieinit",W),J.off("connect",Y),J.off("disconnect",z),J.disconnect()}},[J,X]),$},n$=Q0;var r$=require("react");var G0=({children:$})=>{let J=r$.useContext(S),Z=V$(),X=o$(Z,"centrifuge");return r$.useEffect(()=>{if(!J)return;let W=()=>{console.log("Centrifuge connected")},Y=(z)=>{console.log("Centrifuge disconnected:",z)};if(X)J.on("connected",W),J.on("disconnected",Y),J.connect();return()=>{if(X)J.disconnect()}},[J,X]),$},a$=G0;var L=require("react/jsx-runtime"),H0=({location:$,fallback:J,children:Z,disableGlobalForm:X})=>{let W=Y$(),Y=F$(),z=h(),Q=t.useMemo(()=>d(),[]),G=t.useMemo(()=>W?M$(W):null,[W]),H=t.useMemo(()=>W?O$(W,Y):null,[W,Y]);if(z)console.log("[PieRoot] Rendering with location:",$),console.log("[PieRoot] API_SERVER:",W),console.log("[PieRoot] CENTRIFUGE_SERVER:",Y),console.log("[PieRoot] Fallback provided:",!!J);return L.jsx(C.Provider,{value:Q,children:L.jsx(f.Provider,{value:G,children:L.jsx(S.Provider,{value:H,children:L.jsx(N.Provider,{value:J??L.jsx(L.Fragment,{}),children:L.jsx(n$,{children:L.jsx(a$,{children:X?Z:L.jsx("form",{id:"piedata_global_form",action:W+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},_0=($)=>{let[J]=t.useState(()=>new t$.QueryClient),Z=$.queryClient??J;return L.jsx(v.Provider,{value:$.onNavigate,children:L.jsx(u.Provider,{value:$.config,children:L.jsx(m.Provider,{value:$.onError,children:L.jsx(t$.QueryClientProvider,{client:Z,children:L.jsx(H0,{...$})})})})})},e$=_0;var _Z=require("react/jsx-runtime"),q0=($)=>{return _Z.jsx(e$,{...$,disableGlobalForm:!0})},HZ=q0;var e=require("react"),$$=require("@tanstack/react-query");var BZ=require("axios-date-transformer");var DJ=require("react");var D$=require("react/jsx-runtime");function qZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=DJ.useContext(N),X=DJ.useContext(m),W=h();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 Y=s($.card);if(!Y?.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:Y.name,isLazy:Y.isLazy,hasMetadata:!!Y.metadata,hasFallback:!!Y.fallback});if(Y.fallback){if(W)console.log("[UILoading] Rendering fallback for:",Y.name);let G=Y.fallback;return D$.jsx(G,{})}if(W)console.log("[UILoading] No fallback, rendering full component:",Y.name);let z=Y.component,Q=D$.jsx(k.Provider,{value:qZ,children:D$.jsx(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J})});if(Y.isLazy)return D$.jsx(n,{name:Y.name,fallback:Z,onError:X,children:Q});return Q}var $J=qZ;var KZ=require("react/jsx-runtime");function DZ($,J,Z){if(!J)return Z;let X=$.replace(/^\//,""),W=J[X];if(!W)return Z;return KZ.jsx($J,{uiConfig:W})}var M=require("react/jsx-runtime"),D0=({location:$,fallback:J,piecache:Z,onError:X,queryOptions:W,disableGlobalForm:Y})=>{let z=Y$(),Q=F$(),G=h(),H=e.useMemo(()=>BZ.createAxiosDateTransformer({baseURL:z||""}),[z]),D=e.useMemo(()=>d(),[]),A=e.useMemo(()=>z?M$(z):null,[z]),y=e.useMemo(()=>z?O$(z,Q):null,[z,Q]),{data:I,isLoading:E,error:V}=$$.useQuery({queryKey:["uiConfig",$.pathname+$.search,z],enabled:!!z,queryFn:async()=>{let F=new URLSearchParams($.search);F.set("__pieroot","web");let q="/api/content"+$.pathname+"?"+F.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",q);let _=await H.get(q,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",_.data);return _.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(F)=>Math.min(1000*2**F,30000),...W}),K=DZ($.pathname,Z,J);if(!z)return K??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(V){if(G)console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data});return X?.(V),K}if(E||!I){if(G)console.log("[PieRoot] Loading state:",{isLoading:E,hasUiConfiguration:!!I});return K}if(G)console.log("[PieRoot] UI configuration loaded successfully:",I),console.log("[PieRoot] Rendering UI with configuration");return M.jsx(C.Provider,{value:D,children:M.jsx(f.Provider,{value:A,children:M.jsx(S.Provider,{value:y,children:M.jsx(N.Provider,{value:J??M.jsx(M.Fragment,{}),children:M.jsx(n$,{children:M.jsx(a$,{children:Y?M.jsx(P,{uiConfig:I}):M.jsx("form",{id:"piedata_global_form",action:z+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:M.jsx(P,{uiConfig:I})})})})})})})})},K0=($)=>{let J=e.useMemo(()=>new $$.QueryClient,[]),Z=$.queryClient??J;return M.jsx(v.Provider,{value:$.onNavigate,children:M.jsx(u.Provider,{value:$.config,children:M.jsx(m.Provider,{value:$.onError,children:M.jsx($$.QueryClientProvider,{client:Z,children:M.jsx(D0,{...$})})})})})},TZ=K0;var UZ=require("react");var B0=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],T0=new Set(["telegram:cloud","telegram:secure"]),K$=($)=>{if($==="sid")return{source:"sid",key:"sid"};for(let J of B0){let Z=J+":";if($.startsWith(Z))return{source:J,key:$.slice(Z.length)}}return{source:"dom",key:$}},KJ=($,J=!1)=>{let{source:Z,key:X}=K$($);if(Z==="sid"){let Y=O.readSid();if(!Y)throw Error("SocketIO isn't initialized properly");return[Y]}if(Z==="localStorage"||Z==="sessionStorage")try{let Y=O.readWebStorage(Z==="localStorage"?"local":"session",X);if(Y===null){if(J)console.warn(`No ${Z} value found for key ${X}`);return[]}return[Y]}catch(Y){if(J)console.warn(`Failed to read ${Z} key ${X}:`,Y);return[]}if(Z==="cookie"){let Y=O.readCookie(X);if(Y===null){if(J)console.warn(`No cookie found for key ${X}`);return[]}return[Y]}if(Z==="url"){let Y=O.readUrlParams(X);if(!Y.length&&J)console.warn(`No URL query param found for key ${X}`);return Y}if(T0.has(Z)){if(J)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let W=O.readDomInput(X);if(W===null){if(J)console.warn(`No input found with name ${X}`);return[]}return W},U0=($,J,Z)=>{let X=window.Telegram?.WebApp,W=$==="telegram:cloud"?X?.CloudStorage:X?.SecureStorage,Y=$==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!W){if(Z)console.warn(`${Y} 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 ${Y} key ${J}:`,Q);z([]);return}if(G==null||G===""){if(Z)console.warn(`No ${Y} value found for key ${J}`);z([]);return}z([G])})}catch(Q){if(Z)console.warn(`Failed to read ${Y} key ${J}:`,Q);z([])}})},BJ=async($,J=!1)=>{let{source:Z,key:X}=K$($);if(Z==="telegram:cloud"||Z==="telegram:secure")return U0(Z,X,J);if((Z==="localStorage"||Z==="sessionStorage")&&O.readWebStorageAsync)try{let W=await O.readWebStorageAsync(Z==="localStorage"?"local":"session",X);if(W===null){if(J)console.warn(`No ${Z} value found for key ${X}`);return[]}return[W]}catch(W){if(J)console.warn(`Failed to read ${Z} key ${X}:`,W);return[]}return KJ($,J)},V0=($,J={},Z=[],X,W)=>{let Y=W?.renderingLogEnabled??!1,z=W?.timeout,Q=W?.retryPolicy,G=Q?.maxRetries??0,H=Q?.baseDelay??1000,D=Q?.retryOn??[502,503,504];if(Y)console.log("Registering AJAX: ",X,J,Z);return async(A={})=>{if(!O.isClient()){if(Y)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let y=W?.apiServer;if(!y){if(Y)console.warn("AJAX skipped: apiServer is missing");return}if(!X||!$){if(Y)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await qJ();let I=new FormData;for(let[K,F]of Object.entries({...J,...A}))I.append(K,F);for(let K of Z){let{key:F}=K$(K);for(let q of await BJ(K,Y))I.append(F,q)}let E=y+"api/ajax_content"+X;$(null);let V;for(let K=0;K<=G;K++){if(K>0){let _=H*2**(K-1);if(Y)console.log(`AJAX retry ${K}/${G} after ${_}ms`);await new Promise((B)=>setTimeout(B,_))}let F=z!=null?new AbortController:null,q=F&&setTimeout(()=>F.abort(),z);try{let _=await fetch(E,{method:"POST",body:I,signal:F?.signal});if(q)clearTimeout(q);if(!_.ok&&D.includes(_.status)&&K<G){V=Error(`HTTP ${_.status}`);continue}let j=(_.headers.get("content-type")||"").includes("application/json");if(!!_.body?.getReader&&!j){let B$=_.body.getReader(),OZ=new TextDecoder,l="";while(!0){let{done:JJ,value:MZ}=await B$.read();if(JJ)break;l+=OZ.decode(MZ,{stream:!0});let TJ=l.split(`
3
- `);l=TJ.pop()??"";for(let AZ of TJ){let ZJ=AZ.trim();if(!ZJ)continue;try{let LZ=JSON.parse(ZJ);$([LZ])}catch{if(Y)console.warn("Failed to parse streamed line:",ZJ)}}}if(l.trim())try{let JJ=JSON.parse(l);$([JJ])}catch{if(Y)console.warn("Failed to parse final streamed line:",l)}return{}}else{let B$=await _.json();return $(B$),B$}}catch(_){if(q)clearTimeout(q);if(V=_,K<G)continue;if(Y)console.error("AJAX request failed:",_);return $(null),_}}if(Y)console.error("AJAX request failed after retries:",V);return $(null),V}},VZ=($,J={},Z=[],X,W)=>{let{apiServer:Y,enableRenderingLog:z}=X$(),Q=JSON.stringify(J),G=JSON.stringify(Z),H=JSON.stringify(W);return UZ.useMemo(()=>V0($,J,Z,X,{apiServer:Y,renderingLogEnabled:z,timeout:W?.timeout,retryPolicy:W?.retryPolicy}),[$,Q,G,X,Y,z,H])};var FZ=()=>{O.submitGlobalForm()};var IZ=($,J)=>`${$}${I$}${J}`;
2
+ var wZ=Object.create;var{getPrototypeOf:EZ,defineProperty:X$,getOwnPropertyNames:IJ,getOwnPropertyDescriptor:jZ}=Object,OJ=Object.prototype.hasOwnProperty;var NZ=($,J,Z)=>{Z=$!=null?wZ(EZ($)):{};let X=J||!$||!$.__esModule?X$(Z,"default",{value:$,enumerable:!0}):Z;for(let W of IJ($))if(!OJ.call(X,W))X$(X,W,{get:()=>$[W],enumerable:!0});return X},FJ=new WeakMap,kZ=($)=>{var J=FJ.get($),Z;if(J)return J;if(J=X$({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function")IJ($).map((X)=>!OJ.call(J,X)&&X$(J,X,{get:()=>$[X],enumerable:!(Z=jZ($,X))||Z.enumerable}));return FJ.set($,J),J};var yZ=($,J)=>{for(var Z in J)X$($,Z,{get:J[Z],enumerable:!0,configurable:!0,set:(X)=>J[Z]=()=>X})};var O0={};yZ(O0,{usePieEmit:()=>gJ,useAjaxSubmit:()=>OZ,unregisterComponent:()=>wJ,trackLazy:()=>U$,submitGlobalForm:()=>MZ,setNativeField:()=>g,resetNativeClientSources:()=>JZ,registry:()=>x,registerPieComponent:()=>Y$,registerMultipleComponents:()=>RJ,readNativeField:()=>x$,readAjaxKeyAsync:()=>UJ,readAjaxKey:()=>TJ,preloadComponent:()=>QJ,prefetchLazyComponents:()=>yJ,pieName:()=>AZ,parseDepName:()=>T$,hasComponent:()=>EJ,getRegistrySize:()=>kJ,getRegistryEntry:()=>i,getNativeClientConfig:()=>R,getLazyComponentNames:()=>zJ,getEmitter:()=>s,getComponentMeta:()=>jJ,getAllRegisteredComponents:()=>NJ,configureNativeClientSources:()=>$Z,clearNativeField:()=>p,UnionCard:()=>u$,UIRendererContext:()=>N,UILoading:()=>JJ,UI:()=>P,SocketIOContext:()=>f,SessionStorageCard:()=>C$,SequenceCard:()=>j$,PieRoot:()=>FZ,PieNativeRoot:()=>HZ,PieConfigContext:()=>l,PieCard:()=>U,PieBaseRoot:()=>$J,PIEBREAK:()=>O$,OneOfCard:()=>k$,MittContext:()=>C,IOEventsCard:()=>h$,HiddenCard:()=>S$,HTMLEmbedCard:()=>g$,FallbackContext:()=>j,DeviceStorageCard:()=>f$,CentrifugeIOContext:()=>b,BoxCard:()=>w$,AutoRedirectCard:()=>p$,AjaxGroupCard:()=>d$});module.exports=kZ(O0);var MJ=require("react"),d=new Map;function AJ($,J){return J.catch(()=>{if(d.get($)===J)d.delete($)}),d.set($,J),J}function U$($,J){return MJ.lazy(()=>{if(d.has(J))return d.get(J);return AJ(J,$().then((Z)=>Z))})}var LJ=async($,J)=>{if(!J)return;if(d.has($))return d.get($);return AJ($,J().then((Z)=>Z))};var WJ=globalThis,T=($,J)=>{let Z=Symbol.for($);if(!(Z in WJ))WJ[Z]=J();return WJ[Z]};var x=T("@swarm.ing/pieui:component-registry",()=>new Map),xZ=($)=>{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 Y$($){let J=xZ($);return x.set(J.name,J),J.component}var RJ=($)=>{$.forEach((J)=>Y$(J))},wJ=($)=>{x.delete($)},EJ=($)=>{return x.has($)},jJ=($)=>{return x.get($)?.metadata},i=($)=>{return x.get($)},NJ=()=>{return Array.from(x.keys())},kJ=()=>{return x.size},zJ=()=>Array.from(x.values()).filter(($)=>$.isLazy&&typeof $.loader==="function").map(($)=>$.name),QJ=($)=>{let J=x.get($);if(!J?.isLazy||typeof J.loader!=="function")return;return LJ($,J.loader)},PJ=!1,yJ=()=>{if(PJ||typeof window>"u")return;PJ=!0;let $=navigator.connection;if($?.saveData)return;if($?.effectiveType&&["slow-2g","2g"].includes($.effectiveType))return;let J=zJ(),Z="requestIdleCallback"in window?(W)=>window.requestIdleCallback(W,{timeout:2000}):(W)=>window.setTimeout(W,300),X=(W)=>{if(W>=J.length)return;Z(()=>{Promise.resolve().then(()=>QJ(J[W])).catch(()=>{}).finally(()=>X(W+1))})};X(0)};var _J=require("react"),t=require("react-native");var S=require("react");var V$=require("react");var l=T("@swarm.ing/pieui:context:pieConfig",()=>V$.createContext(null)),W$=()=>{let $=V$.useContext(l);if(!$)throw Error("usePieConfig must be used within PieConfigProvider");return $},z$=()=>{let{apiServer:$}=W$();return $},F$=z$,I$=()=>{let{centrifugeServer:$}=W$();return $};var h=()=>{let{enableRenderingLog:$}=W$();return $},xJ=h;var O$="__piedemo__";var bJ=require("react"),GJ=require("centrifuge");var SJ=T("@swarm.ing/pieui:centrifuge-cache",()=>new Map),M$=($,J)=>{if(!J)return null;let Z=`${$}::${J}`,X=SJ.get(Z);if(X)return X;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 GJ.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let Y=new GJ.Centrifuge(J,{getToken:W});return SJ.set(Z,Y),Y},SZ=T("@swarm.ing/pieui:context:centrifuge",()=>bJ.createContext(null)),b=SZ;var CJ=require("socket.io-client"),vJ=require("react");var fJ=T("@swarm.ing/pieui:socket-cache",()=>new Map),A$=($)=>{let J=fJ.get($);if(J)return J;let Z=CJ.io($,{autoConnect:!1,transports:["websocket"]});return fJ.set($,Z),Z},bZ=T("@swarm.ing/pieui:context:socket",()=>vJ.createContext(null)),f=bZ;var hJ=NZ(require("mitt")),n=require("react");function s(){return T("@swarm.ing/pieui:mitt-emitter",()=>hJ.default())}var mJ=T("@swarm.ing/pieui:context:mitt",()=>n.createContext(null));function gJ($){let J=n.useContext(mJ);return n.useCallback((Z,X)=>{(J??s()).emit(`pie${Z}_${$}`,X)},[$,J])}var C=mJ;function pJ($){return $.wasRecovering===!0&&$.recovered===!1}function cJ($){return $.recoverable===!1}function uJ($,J,Z){let X=$.getSubscription(J);if(X)return{subscription:X,createdHere:!1};return{subscription:$.newSubscription(J,Z),createdHere:!0}}var r=require("react/jsx-runtime"),fZ=({card:$,data:J,children:Z,useSocketioSupport:X=!1,useCentrifugeSupport:W=!1,useMittSupport:Y=!1,centrifugeChannel:z=void 0,methods:Q=void 0,stored:G=void 0,onResync:_=void 0})=>{let K=xJ(),A=S.useRef(Q);A.current=Q;let k=S.useRef(_);if(k.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:X,centrifuge:W,mitt:Y,centrifugeChannel:z}),console.log("[PieCard] Methods:",Q?Object.keys(Q):"none"),console.log("[PieCard] Has children:",!!Z);let I=S.useContext(f),E=S.useContext(b),V=S.useContext(C);if(S.useEffect(()=>{if(!I||!X||!A.current||!J.name){if(K&&X)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!I,useSocketioSupport:X,hasMethods:!!A.current,hasDataName:!!J?.name});return}let F=Object.keys(A.current??{}).map((D)=>{let q=`pie${D}_${J.name}`;if(K)console.log(`[PieCard] Socket.IO registering event: ${q}`);let H=(y)=>{A.current?.[D]?.(y)};return I.on(q,H),[q,H]});return()=>{F.forEach(([D,q])=>{if(K)console.log(`[PieCard] Socket.IO unregistering event: ${D}`);I.off(D,q)})}},[I,J.name,X]),S.useEffect(()=>{if(!E||!W||!z||!J.name){if(K&&W)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!E,useCentrifugeSupport:W,hasCentrifugeChannel:!!z,hasMethods:!!A.current,hasDataName:!!J?.name});return}let F=Object.keys(A.current??{}).map((D)=>{let q=`pie${D}_${J.name}_${z}`;if(K)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let{subscription:H,createdHere:y}=uJ(E,q,{recoverable:!0,positioned:!0}),ZJ=(u)=>{if(K)console.log(`[PieCard] Centrifuge received data on ${q}:`,u.data);A.current?.[D]?.(u.data)},c=(u)=>{if(cJ(u))console.warn(`[PieCard] Centrifuge channel ${q} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(pJ(u)){if(K)console.log(`[PieCard] Centrifuge recovery gap on ${q}; requesting resync`);k.current?.({channel:q,reason:"gap"})}};return H.on("publication",ZJ),H.on("subscribed",c),H.subscribe(),{subscription:H,createdHere:y,onPublication:ZJ,onSubscribed:c}});return()=>{F.forEach(({subscription:D,createdHere:q,onPublication:H,onSubscribed:y})=>{if(K)console.log("[PieCard] Centrifuge unsubscribing from channel");if(D.off("publication",H),D.off("subscribed",y),q)D.unsubscribe(),E.removeSubscription(D)})}},[E,z,J.name,W]),S.useEffect(()=>{if(!V||!Y||!J.name){if(K&&Y)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!V,useMittSupport:Y,hasMethods:!!A.current,hasDataName:!!J?.name});return}let B=Object.keys(A.current??{}),F={};return B.forEach((D)=>{let q=`pie${D}_${J.name}`,H=(y)=>{if(K)console.log(`[PieCard] Mitt registering event: ${q}`);A.current?.[D]?.(y)};F[q]=H,V.on(q,H)}),()=>{Object.entries(F).forEach(([D,q])=>{if(K)console.log(`[PieCard] Mitt unregistering event: ${D}`);V.off(D,q)})}},[V,J.name,Y]),K)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return r.jsxs(r.Fragment,{children:[r.jsx("input",{type:"hidden",name:J.name,value:JSON.stringify(G)}),Z]});return Z},U=fZ;var Q$=require("react");var dJ=require("react");var L$=require("react/jsx-runtime"),CZ=T("@swarm.ing/pieui:context:fallback",()=>dJ.createContext(L$.jsx(L$.Fragment,{}))),j=CZ;var lJ=require("react");var vZ=T("@swarm.ing/pieui:context:lazyError",()=>lJ.createContext(void 0)),m=vZ;var P$=require("react"),sJ=require("react/jsx-runtime"),hZ=2,mZ=400;class a extends P$.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch($){if(this.props.onError?.($),this.state.attempt<hZ){let J=mZ*(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 sJ.jsx(P$.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var R$=require("react/jsx-runtime");function gZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=Q$.useContext(j),X=Q$.useContext(m),W=h();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 Y=i($.card);if(!Y?.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:Y.name,isLazy:Y.isLazy,hasMetadata:!!Y.metadata});let z=Y.component,Q=R$.jsx(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J});if(Y.isLazy){if(W)console.log("[UI] Rendering lazy component with Suspense:",Y.name);return R$.jsx(a,{name:Y.name,fallback:Y.fallback?R$.jsx(Y.fallback,{}):Z,onError:X,children:Q})}if(W)console.log("[UI] Rendering component directly:",Y.name);return Q}var P=Q$.memo(gZ);var oJ=require("react");var pZ=T("@swarm.ing/pieui:context:navigate",()=>oJ.createContext(void 0)),v=pZ;var iJ=require("react");var cZ=T("@swarm.ing/pieui:context:uiRenderer",()=>iJ.createContext(null)),N=cZ;var G$=require("react/jsx-runtime"),uZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),dZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,url:W,sx:Y}=$,z=_J.useContext(v),Q=_J.useContext(N)??P,G=()=>{if(!W)return;if(uZ(W))t.Linking.openURL(W).catch(()=>{});else z?.(W)},_=G$.jsx(Q,{setUiAjaxConfiguration:Z,uiConfig:J});return G$.jsx(U,{card:X,data:$,children:W?G$.jsx(t.Pressable,{onPress:G,style:Y,children:_}):G$.jsx(t.View,{style:Y,children:_})})},w$=dZ;var nJ=require("react"),rJ=require("react-native");var E$=require("react/jsx-runtime"),lZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,sx:W}=$,Y=nJ.useContext(N)??P;return E$.jsx(U,{card:X,data:$,children:E$.jsx(rJ.View,{style:W,children:J.map((z,Q)=>E$.jsx(Y,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},j$=lZ;var aJ=require("react"),tJ=require("react-native");var N$=require("react/jsx-runtime"),sZ=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X,sx:W}=$,Y=aJ.useContext(N)??P;return N$.jsx(U,{card:X,data:$,children:N$.jsx(tJ.View,{style:W,children:J.map((z,Q)=>N$.jsx(Y,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${Q}`))})})},k$=sZ;var _$=require("react");var y$=new Map,g=($,J)=>{y$.set($,J)},p=($)=>{y$.delete($)},x$=($)=>{return y$.has($)?y$.get($):null};var eJ=require("react/jsx-runtime"),oZ=({data:$})=>{let{name:J,value:Z,useSocketioSupport:X,useCentrifugeSupport:W,useMittSupport:Y,centrifugeChannel:z}=$,[Q,G]=_$.useState(Z);return _$.useEffect(()=>{G(Z)},[Z]),_$.useEffect(()=>{return g(J,[Q]),()=>p(J)},[J,Q]),eJ.jsx(U,{card:"HiddenCard",data:$,useSocketioSupport:X,useCentrifugeSupport:W,useMittSupport:Y,centrifugeChannel:z,methods:{update:({value:_})=>{G(_)}}})},S$=oZ;var q$=require("react");var b$={};function $Z($){b$={...b$,...$}}function R(){return b$}function JZ(){b$={}}var ZZ=require("react/jsx-runtime"),iZ=({data:$})=>{let{name:J,key:Z,value:X,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q}=$,[G,_]=q$.useState(X);return q$.useEffect(()=>{_(X)},[X]),q$.useEffect(()=>{return R().storage?.setItem?.(Z,G),g(J,[G]),()=>p(J)},[Z,J,G]),ZZ.jsx(U,{card:"DeviceStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:K})=>{_(K)},remove:()=>{R().storage?.removeItem?.(Z),_("")}}})},f$=iZ;var D$=require("react");var XZ=require("react/jsx-runtime"),nZ=({data:$})=>{let{name:J,key:Z,value:X,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q}=$,[G,_]=D$.useState(X);return D$.useEffect(()=>{_(X)},[X]),D$.useEffect(()=>{return R().sessionStorage?.setItem?.(Z,G),g(J,[G]),()=>p(J)},[Z,J,G]),XZ.jsx(U,{card:"SessionStorageCard",data:$,useSocketioSupport:W,useCentrifugeSupport:Y,useMittSupport:z,centrifugeChannel:Q,methods:{update:({value:K})=>{_(K)},remove:()=>{R().sessionStorage?.removeItem?.(Z),_("")}}})},C$=nZ;var e=require("react"),v$=require("react-native");var YZ=require("react/jsx-runtime"),rZ=($)=>/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($),aZ=({data:$})=>{let{useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:X,centrifugeChannel:W}=$,Y=e.useContext(v),z=e.useRef(Y);z.current=Y;let Q=e.useMemo(()=>{let G=(_)=>{if(!_)return;if(rZ(_))v$.Linking.openURL(_).catch(()=>{});else z.current?.(_)};return{alert:(_)=>v$.Alert.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 YZ.jsx(U,{card:"IOEventsCard",data:$,useCentrifugeSupport:J,useSocketioSupport:Z,useMittSupport:X,centrifugeChannel:W,methods:Q})},h$=aZ;var m$=require("react"),WZ=require("react-native");var qJ=require("react/jsx-runtime"),tZ=($)=>($??"").replace(/<[^>]*>/g,"").replace(/&nbsp;/g," ").replace(/\s+/g," ").trim(),eZ=({data:$})=>{let{html:J,useSocketioSupport:Z,useCentrifugeSupport:X,useMittSupport:W,centrifugeChannel:Y}=$,[z,Q]=m$.useState(J);return m$.useEffect(()=>{Q(J)},[J]),qJ.jsx(U,{card:"HTMLEmbedCard",data:$,methods:{update:(G)=>Q(G.value)},useCentrifugeSupport:X,useSocketioSupport:Z,useMittSupport:W,centrifugeChannel:Y,children:qJ.jsx(WZ.Text,{children:tZ(z)})})},g$=eZ;var H$=require("react"),zZ=require("react-native");var c$=require("react/jsx-runtime"),$0=({data:$})=>{let{url:J}=$,Z=H$.useContext(v),X=H$.useContext(j);return H$.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(J))zZ.Linking.openURL(J).catch(()=>{});else Z?.(J)},[J,Z]),c$.jsx(c$.Fragment,{children:X})},p$=$0;var QZ=require("react");var DJ=require("react/jsx-runtime"),J0=({data:$,content:J,setUiAjaxConfiguration:Z})=>{let{name:X}=$,W=QZ.useContext(N)??P;return DJ.jsx(U,{card:X,data:$,children:J.map((Y,z)=>{return DJ.jsx(W,{uiConfig:Y,setUiAjaxConfiguration:Z},`children-${z}`)})})},u$=J0;var w=require("react");var HJ=require("react/jsx-runtime"),Z0=({data:$,content:J})=>{let{useLoader:Z,noReturn:X,returnType:W,useSocketioSupport:Y,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G}=$,_=w.useContext(j),K=w.useContext(N)??P,[A,k]=w.useState(!1),[I,E]=w.useState(null),V=w.useRef(J),B=w.useContext(C),F=w.useCallback((H)=>{if(H===null)k(!0);else if(k(!1),!X)V.current=H;if(!X)E(H)},[X]),D=w.useCallback((H)=>{V.current=H.content,E(H.content)},[]),q=w.useCallback((H)=>{if(H===null)k(!0);else if(k(!1),!X)for(let y of H)B?.emit(y.name,y.data)},[X,B]);if(w.useEffect(()=>{E(J),k(!1)},[J]),!I&&Z)return _;return HJ.jsx(U,{card:"AjaxGroupCard",data:$,methods:{changeContent:D},useSocketioSupport:Y,useCentrifugeSupport:z,useMittSupport:Q,centrifugeChannel:G,children:HJ.jsx(K,{uiConfig:I??V.current,setUiAjaxConfiguration:W==="events"?q:F})})},d$=Z0;var X0=[{name:"BoxCard",component:w$},{name:"SequenceCard",component:j$},{name:"OneOfCard",component:k$},{name:"HiddenCard",component:S$},{name:"DeviceStorageCard",component:f$},{name:"SessionStorageCard",component:C$},{name:"IOEventsCard",component:h$},{name:"HTMLEmbedCard",component:g$},{name:"AutoRedirectCard",component:p$},{name:"UnionCard",component:u$},{name:"AjaxGroupCard",component:d$}];for(let $ of X0)Y$($);var $$=require("react"),e$=require("@tanstack/react-query");var n$=require("react");var o$=require("react"),l$=new Map,s$=new Map;function i$($,J){let Z=`${$}::${J}`,X=$?l$.get(Z):void 0,[W,Y]=o$.useState(X??null);return o$.useEffect(()=>{if(!$)return;if(l$.has(Z)){Y(l$.get(Z));return}let z=s$.get(Z);if(!z)z=fetch($+`api/support/${J}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return l$.set(Z,G),s$.delete(Z),G}).catch((G)=>{throw s$.delete(Z),G}),s$.set(Z,z);let Q=!1;return z.then((G)=>{if(!Q)Y(G)}).catch(()=>{}),()=>{Q=!0}},[$,J,Z]),W}var Y0=($)=>{let J=document.cookie?document.cookie.split(";"):[];for(let Z of J){let X=Z.indexOf("=");if((X===-1?Z:Z.slice(0,X)).trim()===$){let Y=X===-1?"":Z.slice(X+1).trim();try{return decodeURIComponent(Y)}catch{return Y}}}return null},W0={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:Y0,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()}},GZ=W0;var _Z,z0={isClient(){return!0},readSid(){return _Z},setSid($){_Z=$},readWebStorage($,J){let Z=R(),X=$==="local"?Z.storage:Z.sessionStorage;return X?X.getItem(J):null},async readWebStorageAsync($,J){let Z=R(),X=$==="local"?Z.asyncStorage:Z.asyncSessionStorage;if(X)return X.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($):x$($)},submitGlobalForm(){R().submitForm?.()}},qZ=z0;var Q0=typeof navigator<"u"&&navigator.product==="ReactNative",G0=Q0?qZ:GZ,O=G0;var K$=T("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function DZ(){K$.resolve?.()}function KJ(){if(!O.isClient())return Promise.resolve();if(O.readSid()!==void 0)return Promise.resolve();if(!K$.promise)K$.promise=new Promise(($)=>{K$.resolve=()=>{$()}});return K$.promise}var _0=({children:$})=>{let J=n$.useContext(f),Z=F$(),X=i$(Z,"socketIO"),W=(Y)=>{if(O.isClient())O.setSid(Y.sid),DZ(),console.log(`SocketIO initialized: ${O.readSid()}`)};return n$.useEffect(()=>{if(!J)return;let Y=()=>{console.log("SocketIO connected")},z=(Q)=>{console.log(`SocketIO disconnected: ${Q}`),J.connect()};if(X)J.on("pieinit",W),J.on("connect",Y),J.on("disconnect",z),J.connect();return()=>{if(X)J.off("pieinit",W),J.off("connect",Y),J.off("disconnect",z),J.disconnect()}},[J,X]),$},r$=_0;var a$=require("react");var q0=({children:$})=>{let J=a$.useContext(b),Z=F$(),X=i$(Z,"centrifuge");return a$.useEffect(()=>{if(!J)return;let W=()=>{console.log("Centrifuge connected")},Y=(z)=>{console.log("Centrifuge disconnected:",z)};if(X)J.on("connected",W),J.on("disconnected",Y),J.connect();return()=>{if(X)J.disconnect()}},[J,X]),$},t$=q0;var L=require("react/jsx-runtime"),D0=({location:$,fallback:J,children:Z,disableGlobalForm:X})=>{let W=z$(),Y=I$(),z=h(),Q=$$.useMemo(()=>s(),[]),G=$$.useMemo(()=>W?A$(W):null,[W]),_=$$.useMemo(()=>W?M$(W,Y):null,[W,Y]);if(z)console.log("[PieRoot] Rendering with location:",$),console.log("[PieRoot] API_SERVER:",W),console.log("[PieRoot] CENTRIFUGE_SERVER:",Y),console.log("[PieRoot] Fallback provided:",!!J);return L.jsx(C.Provider,{value:Q,children:L.jsx(f.Provider,{value:G,children:L.jsx(b.Provider,{value:_,children:L.jsx(j.Provider,{value:J??L.jsx(L.Fragment,{}),children:L.jsx(r$,{children:L.jsx(t$,{children:X?Z:L.jsx("form",{id:"piedata_global_form",action:W+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},H0=($)=>{let[J]=$$.useState(()=>new e$.QueryClient),Z=$.queryClient??J;return L.jsx(v.Provider,{value:$.onNavigate,children:L.jsx(l.Provider,{value:$.config,children:L.jsx(m.Provider,{value:$.onError,children:L.jsx(e$.QueryClientProvider,{client:Z,children:L.jsx(D0,{...$})})})})})},$J=H0;var KZ=require("react/jsx-runtime"),K0=($)=>{return KZ.jsx($J,{...$,disableGlobalForm:!0})},HZ=K0;var J$=require("react"),Z$=require("@tanstack/react-query");var VZ=require("axios-date-transformer");var BJ=require("react");var B$=require("react/jsx-runtime");function BZ({uiConfig:$,setUiAjaxConfiguration:J}){let Z=BJ.useContext(j),X=BJ.useContext(m),W=h();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 Y=i($.card);if(!Y?.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:Y.name,isLazy:Y.isLazy,hasMetadata:!!Y.metadata,hasFallback:!!Y.fallback});if(Y.fallback){if(W)console.log("[UILoading] Rendering fallback for:",Y.name);let G=Y.fallback;return B$.jsx(G,{})}if(W)console.log("[UILoading] No fallback, rendering full component:",Y.name);let z=Y.component,Q=B$.jsx(N.Provider,{value:BZ,children:B$.jsx(z,{data:$.data,content:$.content,setUiAjaxConfiguration:J})});if(Y.isLazy)return B$.jsx(a,{name:Y.name,fallback:Z,onError:X,children:Q});return Q}var JJ=BZ;var UZ=require("react/jsx-runtime");function TZ($,J,Z){if(!J)return Z;let X=$.replace(/^\//,""),W=J[X];if(!W)return Z;return UZ.jsx(JJ,{uiConfig:W})}var M=require("react/jsx-runtime"),B0=({location:$,fallback:J,piecache:Z,onError:X,queryOptions:W,disableGlobalForm:Y})=>{let z=z$(),Q=I$(),G=h(),_=J$.useMemo(()=>VZ.createAxiosDateTransformer({baseURL:z||""}),[z]),K=J$.useMemo(()=>s(),[]),A=J$.useMemo(()=>z?A$(z):null,[z]),k=J$.useMemo(()=>z?M$(z,Q):null,[z,Q]),{data:I,isLoading:E,error:V}=Z$.useQuery({queryKey:["uiConfig",$.pathname+$.search,z],enabled:!!z,queryFn:async()=>{let F=new URLSearchParams($.search);F.set("__pieroot","web");let D="/api/content"+$.pathname+"?"+F.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:(F)=>Math.min(1000*2**F,30000),...W}),B=TZ($.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(V){if(G)console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data});return X?.(V),B}if(E||!I){if(G)console.log("[PieRoot] Loading state:",{isLoading:E,hasUiConfiguration:!!I});return B}if(G)console.log("[PieRoot] UI configuration loaded successfully:",I),console.log("[PieRoot] Rendering UI with configuration");return M.jsx(C.Provider,{value:K,children:M.jsx(f.Provider,{value:A,children:M.jsx(b.Provider,{value:k,children:M.jsx(j.Provider,{value:J??M.jsx(M.Fragment,{}),children:M.jsx(r$,{children:M.jsx(t$,{children:Y?M.jsx(P,{uiConfig:I}):M.jsx("form",{id:"piedata_global_form",action:z+"api/process"+$.pathname,method:"post",encType:"multipart/form-data",children:M.jsx(P,{uiConfig:I})})})})})})})})},T0=($)=>{let J=J$.useMemo(()=>new Z$.QueryClient,[]),Z=$.queryClient??J;return M.jsx(v.Provider,{value:$.onNavigate,children:M.jsx(l.Provider,{value:$.config,children:M.jsx(m.Provider,{value:$.onError,children:M.jsx(Z$.QueryClientProvider,{client:Z,children:M.jsx(B0,{...$})})})})})},FZ=T0;var IZ=require("react");var U0=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],V0=new Set(["telegram:cloud","telegram:secure"]),T$=($)=>{if($==="sid")return{source:"sid",key:"sid"};for(let J of U0){let Z=J+":";if($.startsWith(Z))return{source:J,key:$.slice(Z.length)}}return{source:"dom",key:$}},TJ=($,J=!1)=>{let{source:Z,key:X}=T$($);if(Z==="sid"){let Y=O.readSid();if(!Y)throw Error("SocketIO isn't initialized properly");return[Y]}if(Z==="localStorage"||Z==="sessionStorage")try{let Y=O.readWebStorage(Z==="localStorage"?"local":"session",X);if(Y===null){if(J)console.warn(`No ${Z} value found for key ${X}`);return[]}return[Y]}catch(Y){if(J)console.warn(`Failed to read ${Z} key ${X}:`,Y);return[]}if(Z==="cookie"){let Y=O.readCookie(X);if(Y===null){if(J)console.warn(`No cookie found for key ${X}`);return[]}return[Y]}if(Z==="url"){let Y=O.readUrlParams(X);if(!Y.length&&J)console.warn(`No URL query param found for key ${X}`);return Y}if(V0.has(Z)){if(J)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let W=O.readDomInput(X);if(W===null){if(J)console.warn(`No input found with name ${X}`);return[]}return W},F0=($,J,Z)=>{let X=window.Telegram?.WebApp,W=$==="telegram:cloud"?X?.CloudStorage:X?.SecureStorage,Y=$==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!W){if(Z)console.warn(`${Y} 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 ${Y} key ${J}:`,Q);z([]);return}if(G==null||G===""){if(Z)console.warn(`No ${Y} value found for key ${J}`);z([]);return}z([G])})}catch(Q){if(Z)console.warn(`Failed to read ${Y} key ${J}:`,Q);z([])}})},UJ=async($,J=!1)=>{let{source:Z,key:X}=T$($);if(Z==="telegram:cloud"||Z==="telegram:secure")return F0(Z,X,J);if((Z==="localStorage"||Z==="sessionStorage")&&O.readWebStorageAsync)try{let W=await O.readWebStorageAsync(Z==="localStorage"?"local":"session",X);if(W===null){if(J)console.warn(`No ${Z} value found for key ${X}`);return[]}return[W]}catch(W){if(J)console.warn(`Failed to read ${Z} key ${X}:`,W);return[]}return TJ($,J)},I0=($,J={},Z=[],X,W)=>{let Y=W?.renderingLogEnabled??!1,z=W?.timeout,Q=W?.retryPolicy,G=Q?.maxRetries??0,_=Q?.baseDelay??1000,K=Q?.retryOn??[502,503,504];if(Y)console.log("Registering AJAX: ",X,J,Z);return async(A={})=>{if(!O.isClient()){if(Y)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let k=W?.apiServer;if(!k){if(Y)console.warn("AJAX skipped: apiServer is missing");return}if(!X||!$){if(Y)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await KJ();let I=new FormData;for(let[B,F]of Object.entries({...J,...A}))I.append(B,F);for(let B of Z){let{key:F}=T$(B);for(let D of await UJ(B,Y))I.append(F,D)}let E=k+"api/ajax_content"+X;$(null);let V;for(let B=0;B<=G;B++){if(B>0){let q=_*2**(B-1);if(Y)console.log(`AJAX retry ${B}/${G} after ${q}ms`);await new Promise((H)=>setTimeout(H,q))}let F=z!=null?new AbortController:null,D=F&&setTimeout(()=>F.abort(),z);try{let q=await fetch(E,{method:"POST",body:I,signal:F?.signal});if(D)clearTimeout(D);if(!q.ok&&K.includes(q.status)&&B<G){V=Error(`HTTP ${q.status}`);continue}let y=(q.headers.get("content-type")||"").includes("application/json");if(!!q.body?.getReader&&!y){let c=q.body.getReader(),u=new TextDecoder,o="";while(!0){let{done:XJ,value:LZ}=await c.read();if(XJ)break;o+=u.decode(LZ,{stream:!0});let VJ=o.split(`
3
+ `);o=VJ.pop()??"";for(let PZ of VJ){let YJ=PZ.trim();if(!YJ)continue;try{let RZ=JSON.parse(YJ);$([RZ])}catch{if(Y)console.warn("Failed to parse streamed line:",YJ)}}}if(o.trim())try{let XJ=JSON.parse(o);$([XJ])}catch{if(Y)console.warn("Failed to parse final streamed line:",o)}return{}}else{let c=await q.json();return $(c),c}}catch(q){if(D)clearTimeout(D);if(V=q,B<G)continue;if(Y)console.error("AJAX request failed:",q);return $(null),q}}if(Y)console.error("AJAX request failed after retries:",V);return $(null),V}},OZ=($,J={},Z=[],X,W)=>{let{apiServer:Y,enableRenderingLog:z}=W$(),Q=JSON.stringify(J),G=JSON.stringify(Z),_=JSON.stringify(W);return IZ.useMemo(()=>I0($,J,Z,X,{apiServer:Y,renderingLogEnabled:z,timeout:W?.timeout,retryPolicy:W?.retryPolicy}),[$,Q,G,X,Y,z,_])};var MZ=()=>{O.submitGlobalForm()};var AZ=($,J)=>`${$}${O$}${J}`;
@@ -0,0 +1,28 @@
1
+ import type { SocketIOEvent } from './types';
2
+ /**
3
+ * Base card. A server card mirrors its frontend counterpart 1:1: parameterise
4
+ * it with the component's `*Data` interface and pass those fields (plus any
5
+ * child `Card`s) to the constructor — no per-card constructor needed.
6
+ *
7
+ * `generate()` splits own properties into `data` (scalars) vs children (values
8
+ * that are `instanceof Card`). Field names are used verbatim — TS fields are
9
+ * already camelCase, so no key transformation is applied.
10
+ */
11
+ export declare class Card<D extends object = Record<string, never>> {
12
+ /** Registered frontend component name; defaults to the class name. */
13
+ card: string;
14
+ constructor(props?: Partial<D>);
15
+ /** Serialise to the PieUI `{ ...children, card, data }` wire format. */
16
+ generate(): Record<string, unknown>;
17
+ /** Recursively collect named InputCard descendants (incl. self). */
18
+ inputChildLoc(): Record<string, InputCard>;
19
+ /** Assign values to named input children by name, then generate. */
20
+ fill(data: Record<string, unknown>): Record<string, unknown>;
21
+ /** Build a realtime event named `pie{method}_{name}`. */
22
+ createEvent(method: string, data?: Record<string, unknown>): SocketIOEvent;
23
+ }
24
+ /** Input-bearing card (form field). `parse` validates a raw submitted value. */
25
+ export declare class InputCard<D extends object = Record<string, never>> extends Card<D> {
26
+ parse(raw: unknown): unknown;
27
+ }
28
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/server/card.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAQ5C;;;;;;;;GAQG;AACH,qBAAa,IAAI,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IACtD,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAwB;gBAExB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAI9B,wEAAwE;IACxE,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA4BnC,oEAAoE;IACpE,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;IAsB1C,oEAAoE;IACpE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAU5D,yDAAyD;IACzD,WAAW,CACP,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,aAAa;CAiBnB;AAED,gFAAgF;AAChF,qBAAa,SAAS,CAClB,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAC1C,SAAQ,IAAI,CAAC,CAAC,CAAC;IACb,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;CAG/B"}
@@ -0,0 +1,8 @@
1
+ import { Card } from '../card';
2
+ import type { AjaxGroupCardData } from '../../components/Containers/AjaxGroupCard/types';
3
+ /** AJAX-enabled container (single child) — 1:1 with the frontend AjaxGroupCard. */
4
+ export declare class AjaxGroupCard extends Card<AjaxGroupCardData & {
5
+ content: Card;
6
+ }> {
7
+ }
8
+ //# sourceMappingURL=AjaxGroupCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AjaxGroupCard.d.ts","sourceRoot":"","sources":["../../../src/server/cards/AjaxGroupCard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAA;AAExF,mFAAmF;AACnF,qBAAa,aAAc,SAAQ,IAAI,CAAC,iBAAiB,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC;CAAG"}
@@ -0,0 +1,6 @@
1
+ import { Card } from '../card';
2
+ import type { HTMLEmbedCardData } from '../../components/Common/HTMLEmbedCard/types';
3
+ /** Raw HTML injection — 1:1 with the frontend HTMLEmbedCard. */
4
+ export declare class HTMLEmbedCard extends Card<HTMLEmbedCardData> {
5
+ }
6
+ //# sourceMappingURL=HTMLEmbedCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTMLEmbedCard.d.ts","sourceRoot":"","sources":["../../../src/server/cards/HTMLEmbedCard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAA;AAEpF,gEAAgE;AAChE,qBAAa,aAAc,SAAQ,IAAI,CAAC,iBAAiB,CAAC;CAAG"}
@@ -0,0 +1,6 @@
1
+ import { InputCard } from '../card';
2
+ import type { HiddenCardData } from '../../components/Common/HiddenCard/types';
3
+ /** Hidden input field — 1:1 with the frontend HiddenCard. */
4
+ export declare class HiddenCard extends InputCard<HiddenCardData> {
5
+ }
6
+ //# sourceMappingURL=HiddenCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HiddenCard.d.ts","sourceRoot":"","sources":["../../../src/server/cards/HiddenCard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AAE9E,6DAA6D;AAC7D,qBAAa,UAAW,SAAQ,SAAS,CAAC,cAAc,CAAC;CAAG"}
@@ -0,0 +1,8 @@
1
+ import { Card } from '../card';
2
+ import type { OneOfCardData } from '../../components/Containers/OneOfCard/types';
3
+ /** One-of-N alternative container — 1:1 with the frontend OneOfCard. */
4
+ export declare class OneOfCard extends Card<OneOfCardData & {
5
+ content: Card[];
6
+ }> {
7
+ }
8
+ //# sourceMappingURL=OneOfCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OneOfCard.d.ts","sourceRoot":"","sources":["../../../src/server/cards/OneOfCard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAA;AAEhF,wEAAwE;AACxE,qBAAa,SAAU,SAAQ,IAAI,CAAC,aAAa,GAAG;IAAE,OAAO,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC;CAAG"}
@@ -0,0 +1,8 @@
1
+ import { Card } from '../card';
2
+ import type { UnionCardData } from '../../components/Containers/UnionCard/types';
3
+ /** Container of child cards — 1:1 with the frontend UnionCard. */
4
+ export declare class UnionCard extends Card<UnionCardData & {
5
+ content: Card[];
6
+ }> {
7
+ }
8
+ //# sourceMappingURL=UnionCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnionCard.d.ts","sourceRoot":"","sources":["../../../src/server/cards/UnionCard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAA;AAEhF,kEAAkE;AAClE,qBAAa,SAAU,SAAQ,IAAI,CAAC,aAAa,GAAG;IAAE,OAAO,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC;CAAG"}
@@ -0,0 +1,6 @@
1
+ export { HiddenCard } from './HiddenCard';
2
+ export { UnionCard } from './UnionCard';
3
+ export { AjaxGroupCard } from './AjaxGroupCard';
4
+ export { OneOfCard } from './OneOfCard';
5
+ export { HTMLEmbedCard } from './HTMLEmbedCard';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/cards/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,5 @@
1
+ /** Normalise a parsed form body: a single-element array collapses to a scalar. */
2
+ export declare function form2dict(body: Record<string, unknown>): Record<string, unknown>;
3
+ /** Optional `by_underscore` nesting: `addr__city` → `addr.city`. Mirrors pie aggregate. */
4
+ export declare function aggregate(data: Record<string, unknown>, rule?: 'by_underscore'): Record<string, unknown>;
5
+ //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/server/form.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,wBAAgB,SAAS,CACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED,2FAA2F;AAC3F,wBAAgB,SAAS,CACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,CAAC,EAAE,eAAe,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB"}
@@ -0,0 +1,9 @@
1
+ export { Card, InputCard } from './card';
2
+ export { AsyncPage } from './page';
3
+ export { Web } from './web';
4
+ export { publishToCentrifuge } from './realtime';
5
+ export * from './cards';
6
+ export { form2dict, aggregate } from './form';
7
+ export type { Publisher } from './realtime';
8
+ export type { SocketIOEvent, WebOptions, PageContext, UIConfigType, } from './types';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC7C,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,YAAY,EACR,aAAa,EACb,UAAU,EACV,WAAW,EACX,YAAY,GACf,MAAM,SAAS,CAAA"}