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