@swarm.ing/pieui 2.1.2 → 2.1.3
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 +52 -0
- package/dist/components/Common/DeviceStorageCard/ui/DeviceStorageCard.d.ts +15 -0
- package/dist/components/Common/DeviceStorageCard/ui/DeviceStorageCard.d.ts.map +1 -1
- package/dist/components/Common/SessionStorageCard/ui/SessionStorageCard.d.ts +15 -0
- package/dist/components/Common/SessionStorageCard/ui/SessionStorageCard.d.ts.map +1 -1
- package/dist/components/index.d.ts +0 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +2 -2
- package/dist/index.js +2 -2
- package/dist/pieui.components.json +62 -62
- package/dist/storybook/addon/manager.esm.js +2 -0
- package/dist/storybook/addon/manager.js +2 -0
- package/dist/telegram/components/CloudStorageCard/index.d.ts.map +1 -0
- package/dist/telegram/components/CloudStorageCard/types/index.d.ts.map +1 -0
- package/dist/telegram/components/CloudStorageCard/ui/CloudStorageCard.d.ts +15 -0
- package/dist/telegram/components/CloudStorageCard/ui/CloudStorageCard.d.ts.map +1 -0
- package/dist/telegram/components/SecureStorageCard/index.d.ts.map +1 -0
- package/dist/telegram/components/SecureStorageCard/types/index.d.ts.map +1 -0
- package/dist/telegram/components/SecureStorageCard/ui/SecureStorageCard.d.ts +15 -0
- package/dist/telegram/components/SecureStorageCard/ui/SecureStorageCard.d.ts.map +1 -0
- package/dist/telegram/index.d.ts +4 -0
- package/dist/telegram/index.d.ts.map +1 -1
- package/dist/telegram/index.esm.js +1 -1
- package/dist/telegram/index.js +1 -1
- package/dist/util/ajaxCommonUtils.d.ts +60 -13
- package/dist/util/ajaxCommonUtils.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/components/Common/CloudStorageCard/index.d.ts.map +0 -1
- package/dist/components/Common/CloudStorageCard/types/index.d.ts.map +0 -1
- package/dist/components/Common/CloudStorageCard/ui/CloudStorageCard.d.ts +0 -4
- package/dist/components/Common/CloudStorageCard/ui/CloudStorageCard.d.ts.map +0 -1
- package/dist/components/Common/SecureStorageCard/index.d.ts.map +0 -1
- package/dist/components/Common/SecureStorageCard/types/index.d.ts.map +0 -1
- package/dist/components/Common/SecureStorageCard/ui/SecureStorageCard.d.ts +0 -4
- package/dist/components/Common/SecureStorageCard/ui/SecureStorageCard.d.ts.map +0 -1
- /package/dist/{components/Common → telegram/components}/CloudStorageCard/index.d.ts +0 -0
- /package/dist/{components/Common → telegram/components}/CloudStorageCard/types/index.d.ts +0 -0
- /package/dist/{components/Common → telegram/components}/SecureStorageCard/index.d.ts +0 -0
- /package/dist/{components/Common → telegram/components}/SecureStorageCard/types/index.d.ts +0 -0
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var EU=Object.create;var{getPrototypeOf:yU,defineProperty:e,getOwnPropertyNames:OC,getOwnPropertyDescriptor:mU}=Object,VC=Object.prototype.hasOwnProperty;var $C=(f,C,U)=>{U=f!=null?EU(yU(f)):{};let I=C||!f||!f.__esModule?e(U,"default",{value:f,enumerable:!0}):U;for(let H of OC(f))if(!VC.call(I,H))e(I,H,{get:()=>f[H],enumerable:!0});return I},ZC=new WeakMap,kU=(f)=>{var C=ZC.get(f),U;if(C)return C;if(C=e({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")OC(f).map((I)=>!VC.call(C,I)&&e(C,I,{get:()=>f[I],enumerable:!(U=mU(f,I))||U.enumerable}));return ZC.set(f,C),C};var uU=(f,C)=>{for(var U in C)e(f,U,{get:C[U],enumerable:!0,configurable:!0,set:(I)=>C[U]=()=>I})};var QI={};uU(QI,{usePieEmit:()=>WC,useAjaxSubmit:()=>wU,unregisterComponent:()=>FC,trackLazy:()=>Yf,submitGlobalForm:()=>KU,registry:()=>N,registerPieComponent:()=>X,registerMultipleComponents:()=>_C,readAjaxKey:()=>HC,preloadComponent:()=>hf,prefetchLazyComponents:()=>SC,pieName:()=>MU,hasComponent:()=>KC,getRegistrySize:()=>RC,getRegistryEntry:()=>r,getLazyComponentNames:()=>gf,getEmitter:()=>p,getComponentMeta:()=>MC,getAllRegisteredComponents:()=>LC,cn:()=>FU,UnionCard:()=>pC,UIRendererContext:()=>R,UILoading:()=>wf,UI:()=>K,SocketIOContext:()=>y,SessionStorageCard:()=>fU,SequenceCard:()=>jC,SecureStorageCard:()=>DU,PieRoot:()=>jf,PiePreviewRoot:()=>PU,PieConfigContext:()=>b,PieCard:()=>P,PieBaseRoot:()=>YU,PIEBREAK:()=>Jf,OneOfCard:()=>qU,MittContext:()=>m,IOEventsCard:()=>aC,HiddenCard:()=>lC,HTMLEmbedCard:()=>hC,FallbackContext:()=>L,DeviceStorageCard:()=>UU,CloudStorageCard:()=>TU,CentrifugeIOContext:()=>E,BoxCard:()=>$U,AutoRedirectCard:()=>sC,AjaxGroupCard:()=>OU});module.exports=kU(QI);var k=require("react");var of=require("react");var vf=globalThis,Q=(f,C)=>{let U=Symbol.for(f);if(!(U in vf))vf[U]=C();return vf[U]};var b=Q("@swarm.ing/pieui:context:pieConfig",()=>of.createContext(null)),ff=()=>{let f=of.useContext(b);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},Cf=()=>{let{apiServer:f}=ff();return f},qf=Cf,Bf=()=>{let{centrifugeServer:f}=ff();return f};var x=()=>{let{enableRenderingLog:f}=ff();return f},zC=x;var Jf="__piedemo__";var qC=require("react"),cf=require("centrifuge");var oC=Q("@swarm.ing/pieui:centrifuge-cache",()=>new Map),Gf=(f,C)=>{if(!C)return null;let U=`${f}::${C}`,I=oC.get(U);if(I)return I;async function H(){let D=await fetch(f+"api/centrifuge/gen_token");if(!D.ok){if(D.status===403)throw new cf.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${D.status}`)}return(await D.json()).token}let T=new cf.Centrifuge(C,{getToken:H});return oC.set(U,T),T},xU=Q("@swarm.ing/pieui:context:centrifuge",()=>qC.createContext(null)),E=xU;var JC=require("socket.io-client"),GC=require("react");var BC=Q("@swarm.ing/pieui:socket-cache",()=>new Map),Xf=(f)=>{let C=BC.get(f);if(C)return C;let U=JC.io(f,{autoConnect:!1,transports:["websocket"]});return BC.set(f,U),U},jU=Q("@swarm.ing/pieui:context:socket",()=>GC.createContext(null)),y=jU;var XC=$C(require("mitt")),g=require("react");function p(){return Q("@swarm.ing/pieui:mitt-emitter",()=>XC.default())}var YC=Q("@swarm.ing/pieui:context:mitt",()=>g.createContext(null));function WC(f){let C=g.useContext(YC);return g.useCallback((U,I)=>{(C??p()).emit(`pie${U}_${f}`,I)},[f,C])}var m=YC;var h=require("react/jsx-runtime"),dU=({card:f,data:C,children:U,useSocketioSupport:I=!1,useCentrifugeSupport:H=!1,useMittSupport:T=!1,centrifugeChannel:D=void 0,methods:V=void 0,stored:Z=void 0})=>{let O=zC(),$=k.useRef(V);if($.current=V,O)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",C),console.log("[PieCard] Component name:",C?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:H,mitt:T,centrifugeChannel:D}),console.log("[PieCard] Methods:",V?Object.keys(V):"none"),console.log("[PieCard] Has children:",!!U);let J=k.useContext(y),Y=k.useContext(E),z=k.useContext(m);if(k.useEffect(()=>{if(!J||!I||!$.current||!C.name){if(O&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!J,useSocketioSupport:I,hasMethods:!!$.current,hasDataName:!!C?.name});return}let G=Object.keys($.current??{}).map((o)=>{let B=`pie${o}_${C.name}`;if(O)console.log(`[PieCard] Socket.IO registering event: ${B}`);let A=(W)=>{$.current?.[o]?.(W)};return J.on(B,A),[B,A]});return()=>{G.forEach(([o,B])=>{if(O)console.log(`[PieCard] Socket.IO unregistering event: ${o}`);J.off(o,B)})}},[J,C.name,I]),k.useEffect(()=>{if(!Y||!H||!D||!C.name){if(O&&H)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!Y,useCentrifugeSupport:H,hasCentrifugeChannel:!!D,hasMethods:!!$.current,hasDataName:!!C?.name});return}let G=Object.keys($.current??{}).map((o)=>{let B=`pie${o}_${C.name}_${D}`;if(O)console.log(`[PieCard] Centrifuge subscribing to channel: ${B}`);let A=Y.newSubscription(B);return A.on("publication",(W)=>{if(O)console.log(`[PieCard] Centrifuge received data on ${B}:`,W.data);$.current?.[o]?.(W.data)}),A.subscribe(),A});return()=>{G.forEach((o)=>{if(O)console.log("[PieCard] Centrifuge unsubscribing from channel");o.unsubscribe(),Y.removeSubscription(o)})}},[Y,D,C.name,H]),k.useEffect(()=>{if(!z||!T||!C.name){if(O&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!z,useMittSupport:T,hasMethods:!!$.current,hasDataName:!!C?.name});return}let q=Object.keys($.current??{}),G={};return q.forEach((o)=>{let B=`pie${o}_${C.name}`,A=(W)=>{if(O)console.log(`[PieCard] Mitt registering event: ${B}`);$.current?.[o]?.(W)};G[B]=A,z.on(B,A)}),()=>{Object.entries(G).forEach(([o,B])=>{if(O)console.log(`[PieCard] Mitt unregistering event: ${o}`);z.off(o,B)})}},[z,C.name,T]),O)console.log("[PieCard] Rendering complete, returning children");if(Z!==void 0)return h.jsxs(h.Fragment,{children:[h.jsx("input",{type:"hidden",name:C.name,value:JSON.stringify(Z)}),U]});return U},P=dU;var PC=require("react"),v=new Map;function QC(f,C){return C.catch(()=>{if(v.get(f)===C)v.delete(f)}),v.set(f,C),C}function Yf(f,C){return PC.lazy(()=>{if(v.has(C))return v.get(C);return QC(C,f().then((U)=>U))})}var wC=async(f,C)=>{if(!C)return;if(v.has(f))return v.get(f);return QC(f,C().then((U)=>U))};var N=Q("@swarm.ing/pieui:component-registry",()=>new Map),bU=(f)=>{if(!f.name)throw Error("Component registration requires a name");if(!f.component&&!f.loader)throw Error(`Component "${f.name}" requires component or loader`);let C={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!C.component&&C.loader)C.component=Yf(C.loader,f.name),C.isLazy=!0;return C};function X(f){let C=bU(f);return N.set(C.name,C),C.component}var _C=(f)=>{f.forEach((C)=>X(C))},FC=(f)=>{N.delete(f)},KC=(f)=>{return N.has(f)},MC=(f)=>{return N.get(f)?.metadata},r=(f)=>{return N.get(f)},LC=()=>{return Array.from(N.keys())},RC=()=>{return N.size},gf=()=>Array.from(N.values()).filter((f)=>f.isLazy&&typeof f.loader==="function").map((f)=>f.name),hf=(f)=>{let C=N.get(f);if(!C?.isLazy||typeof C.loader!=="function")return;return wC(f,C.loader)},AC=!1,SC=()=>{if(AC||typeof window>"u")return;AC=!0;let f=navigator.connection;if(f?.saveData)return;if(f?.effectiveType&&["slow-2g","2g"].includes(f.effectiveType))return;let C=gf(),U="requestIdleCallback"in window?(H)=>window.requestIdleCallback(H,{timeout:2000}):(H)=>window.setTimeout(H,300),I=(H)=>{if(H>=C.length)return;U(()=>{Promise.resolve().then(()=>hf(C[H])).catch(()=>{}).finally(()=>I(H+1))})};I(0)};var Uf=require("react");var NC=require("react");var Wf=require("react/jsx-runtime"),pU=Q("@swarm.ing/pieui:context:fallback",()=>NC.createContext(Wf.jsx(Wf.Fragment,{}))),L=pU;var EC=require("react");var vU=Q("@swarm.ing/pieui:context:lazyError",()=>EC.createContext(void 0)),j=vU;var Pf=require("react"),yC=require("react/jsx-runtime"),cU=2,gU=400;class l extends Pf.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(f){if(this.props.onError?.(f),this.state.attempt<cU){let C=gU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((U)=>({failed:!1,attempt:U.attempt+1}))},C)}}componentDidUpdate(f){if(f.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 yC.jsx(Pf.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var Qf=require("react/jsx-runtime");function hU({uiConfig:f,setUiAjaxConfiguration:C}){let U=Uf.useContext(L),I=Uf.useContext(j),H=x();if(H)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!C);let T=r(f.card);if(!T?.component){if(H)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return U}if(H)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let D=T.component,V=Qf.jsx(D,{data:f.data,content:f.content,setUiAjaxConfiguration:C});if(T.isLazy){if(H)console.log("[UI] Rendering lazy component with Suspense:",T.name);return Qf.jsx(l,{name:T.name,fallback:T.fallback?Qf.jsx(T.fallback,{}):U,onError:I,children:V})}if(H)console.log("[UI] Rendering component directly:",T.name);return V}var K=Uf.memo(hU);var rf=require("react");var mC=require("react");var rU=Q("@swarm.ing/pieui:context:uiRenderer",()=>mC.createContext(null)),R=rU;var If=require("react/jsx-runtime");function kC({uiConfig:f,setUiAjaxConfiguration:C}){let U=rf.useContext(L),I=rf.useContext(j),H=x();if(H)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!C);let T=r(f.card);if(!T?.component){if(H)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return U}if(H)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(H)console.log("[UILoading] Rendering fallback for:",T.name);let Z=T.fallback;return If.jsx(Z,{})}if(H)console.log("[UILoading] No fallback, rendering full component:",T.name);let D=T.component,V=If.jsx(R.Provider,{value:kC,children:If.jsx(D,{data:f.data,content:f.content,setUiAjaxConfiguration:C})});if(T.isLazy)return If.jsx(l,{name:T.name,fallback:U,onError:I,children:V});return V}var wf=kC;var uC=require("react");var Af=require("react/jsx-runtime"),lU=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I,sx:H}=f,T=uC.useContext(R)??K;return Af.jsx(P,{card:I,data:f,children:Af.jsx("div",{style:H,id:I,children:C.map((D,V)=>{return Af.jsx(T,{uiConfig:D,setUiAjaxConfiguration:U},`children-${V}`)})})})},xC=lU;var jC=X({name:"SequenceCard",component:xC,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var dC=require("react");var lf=require("react/jsx-runtime"),nU=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I}=f,H=dC.useContext(R)??K;return lf.jsx(P,{card:I,data:f,children:C.map((T,D)=>{return lf.jsx(H,{uiConfig:T,setUiAjaxConfiguration:U},`children-${D}`)})})},bC=nU;var pC=X({name:"UnionCard",component:bC,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var _f=require("react"),vC=$C(require("html-react-parser"));var S=require("react");function iU(){let f=new AudioContext,C=f.createOscillator(),U=C.connect(f.createMediaStreamDestination());C.start();let I=U.stream.getAudioTracks()[0];return I.enabled=!1,I}function nf(f=null,C){let[U,I]=S.useState(!1),H=S.useRef(null),T=S.useRef(null),D=S.useRef(null),V=S.useCallback(async(J,Y=!0)=>{if(H.current)Z();let z=new RTCPeerConnection;if(z.onconnectionstatechange=()=>{if(z.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes(z.connectionState))I(!1)},z.ontrack=(w)=>{if(f)f.srcObject=w.streams[0]},Y){let w=await navigator.mediaDevices.getUserMedia({audio:!0});z.addTrack(w.getTracks()[0],w)}else{let w=iU();z.addTrack(w)}let q=z.createDataChannel("oai-events");T.current=q,D.current=new Promise((w)=>{q.addEventListener("open",()=>{w()})});let G=await z.createOffer();await z.setLocalDescription(G);let W=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:G.sdp,headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/sdp"}})).text();await z.setRemoteDescription({type:"answer",sdp:W}),H.current=z,await D.current},[f]),Z=S.useCallback(()=>{let J=T.current;if(J)J.close();H.current?.getSenders()?.forEach((Y)=>Y.track?.stop()),H.current?.close(),I(!1),H.current=null,T.current=null,D.current=null},[f]),O=S.useCallback((J)=>{let Y=T.current;if(!Y){console.error("Data channel is not ready",J);return}let z=new Date().toLocaleTimeString();if(J.event_id=J.event_id||crypto.randomUUID(),Y.send(JSON.stringify(J)),!J.timestamp)J.timestamp=z;C?.(J)},[C,f]),$=S.useCallback((J)=>{if(!T.current){console.error("Data channel is not ready");return}let z=()=>{O({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:J}]}}),O({type:"response.create"})};if(D.current)D.current.then(z);else z()},[C,f]);return S.useEffect(()=>{let J=T.current;if(!J)return;let Y=(z)=>{let q=JSON.parse(z.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();C?.(q)};return J.addEventListener("message",Y),()=>{J.removeEventListener("message",Y)}},[C,f]),{isSessionActive:U,startSession:V,stopSession:Z,sendTextMessage:$}}var gC=require("react/jsx-runtime"),sU=({data:f})=>{let{html:C,useSocketioSupport:U,useCentrifugeSupport:I,useMittSupport:H,centrifugeChannel:T}=f,[D,V]=_f.useState(C),{isSessionActive:Z,startSession:O,sendTextMessage:$}=nf(null,(q)=>{if(console.log(q.type,q.type==="response.output_text.delta"&&q.delta),q.type==="response.output_text.delta"&&q.delta)V((G)=>G+q.delta)});return _f.useEffect(()=>{V(C)},[C]),gC.jsx(P,{card:"HTMLEmbedCard",data:f,methods:{update:(q)=>{V(q.value)},generateUsingAI:async(q)=>{try{if(!Z&&q.token)await O(q.token,!1);$(q.prompt)}catch(G){console.error("Failed to generate using AI",G)}},initializeAI:async(q)=>{if(!Z&&q.token)await O(q.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:U,useMittSupport:H,centrifugeChannel:T,children:vC.default(D)})},cC=sU;var hC=X({name:"HTMLEmbedCard",component:cC,metadata:{author:"Swarm.ing"}});var Ff=require("react");var sf=require("react/jsx-runtime"),tU=({data:f})=>{let{name:C,value:U,useSocketioSupport:I,useCentrifugeSupport:H,useMittSupport:T,centrifugeChannel:D}=f,[V,Z]=Ff.useState(U);return Ff.useEffect(()=>{Z(U)},[U]),sf.jsx(P,{card:"HiddenCard",data:f,useSocketioSupport:I,useCentrifugeSupport:H,useMittSupport:T,centrifugeChannel:D,methods:{update:({value:O})=>{Z(O)}},children:sf.jsx("input",{type:"hidden",id:C,name:C,value:V})})},rC=tU;var lC=X({name:"HiddenCard",component:rC,metadata:{author:"Swarm.ing"}});var Tf=require("react");var nC=require("react");var aU=Q("@swarm.ing/pieui:context:navigate",()=>nC.createContext(void 0)),u=aU;var Kf=require("react/jsx-runtime"),eU=({data:f})=>{let{url:C}=f,U=Tf.useContext(u),I=Tf.useContext(L);return Tf.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(C))window.location.href=C;else U?.(C)},[C,U]),Kf.jsx(Kf.Fragment,{children:I})},iC=eU;var sC=X({name:"AutoRedirectCard",component:iC,metadata:{author:"Swarm.ing"}});var d=require("react-toastify"),Mf=require("react-toastify");var i=require("react");var n=require("react/jsx-runtime"),fI={bounce:d.Bounce,slide:d.Slide,zoom:d.Zoom,flip:d.Flip},CI=(f)=>{let C={...f,type:f.alertType,transition:f.transition?fI[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};Mf.toast(f.message,C)},UI=(f)=>{console.log("Log event",f)},II=(f)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let C=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(I){console.error("[IOEventsCard] Failed to show notification",I)}},U=window.Notification.permission;if(U==="granted"){C();return}if(U==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")C()})},TI=({data:f})=>{let{useCentrifugeSupport:C,useSocketioSupport:U,useMittSupport:I,centrifugeChannel:H}=f,T=i.useContext(u),D=i.useRef(T);D.current=T;let V=i.useMemo(()=>({alert:CI,log:UI,push:II,redirect:(Z)=>{if(Z.to){let O=Z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else D.current?.(O)}else window.location.reload()},reload:(Z)=>{if(Z.to){let O=Z.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else D.current?.(O)}else window.location.reload()}}),[]);return n.jsx(n.Fragment,{children:n.jsx(P,{card:"IOEventsCard",data:f,useCentrifugeSupport:C,useSocketioSupport:U,useMittSupport:I,centrifugeChannel:H,methods:V,children:n.jsx(Mf.ToastContainer,{})})})},tC=TI;var aC=X({name:"IOEventsCard",component:tC,metadata:{author:"Swarm.ing"}});var Hf=require("react");var tf=require("react/jsx-runtime"),HI=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=Hf.useState(I);return Hf.useEffect(()=>{O(I)},[I]),Hf.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(U,Z)},[U,Z]),tf.jsx(P,{card:"SessionStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{sessionStorage.removeItem(U),O("")}},children:tf.jsx("input",{type:"hidden",id:C,name:C,value:Z})})},eC=HI;var fU=X({name:"SessionStorageCard",component:eC,metadata:{author:"PieData"}});var Df=require("react");var af=require("react/jsx-runtime"),DI=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=Df.useState(I);return Df.useEffect(()=>{O(I)},[I]),Df.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(U,Z)},[U,Z]),af.jsx(P,{card:"DeviceStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{localStorage.removeItem(U),O("")}},children:af.jsx("input",{type:"hidden",id:C,name:C,value:Z})})},CU=DI;var UU=X({name:"DeviceStorageCard",component:CU,metadata:{author:"PieData"}});var Zf=require("react");var ef=require("react/jsx-runtime"),ZI=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=Zf.useState(I);return Zf.useEffect(()=>{O(I)},[I]),Zf.useEffect(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.CloudStorage;if(!$)return;$.setItem(U,Z)},[U,Z]),ef.jsx(P,{card:"CloudStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{let $=window.Telegram?.WebApp?.CloudStorage;if($)$.removeItem(U);O("")}},children:ef.jsx("input",{type:"hidden",id:C,name:C,value:Z})})},IU=ZI;var TU=X({name:"CloudStorageCard",component:IU,metadata:{author:"PieData"}});var Of=require("react");var fC=require("react/jsx-runtime"),OI=({data:f})=>{let{name:C,key:U,value:I,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V}=f,[Z,O]=Of.useState(I);return Of.useEffect(()=>{O(I)},[I]),Of.useEffect(()=>{if(typeof window>"u")return;let $=window.Telegram?.WebApp?.SecureStorage;if(!$)return;$.setItem(U,Z)},[U,Z]),fC.jsx(P,{card:"SecureStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:D,centrifugeChannel:V,methods:{update:({value:$})=>{O($)},remove:()=>{let $=window.Telegram?.WebApp?.SecureStorage;if($)$.removeItem(U);O("")}},children:fC.jsx("input",{type:"hidden",id:C,name:C,value:Z})})},HU=OI;var DU=X({name:"SecureStorageCard",component:HU,metadata:{author:"PieData"}});var M=require("react");var CC=require("react/jsx-runtime"),VI=({data:f,content:C})=>{let{useLoader:U,noReturn:I,returnType:H,useSocketioSupport:T,useCentrifugeSupport:D,useMittSupport:V,centrifugeChannel:Z}=f,O=M.useContext(L),$=M.useContext(R)??K,[J,Y]=M.useState(!1),[z,q]=M.useState(null),G=M.useRef(C),o=M.useContext(m),B=M.useCallback((w)=>{if(w===null)Y(!0);else if(Y(!1),!I)G.current=w;if(!I)q(w)},[I]),A=M.useCallback((w)=>{G.current=w.content,q(w.content)},[]),W=M.useCallback((w)=>{if(w===null)Y(!0);else if(Y(!1),!I)for(let $f of w)o?.emit($f.name,$f.data)},[I,o]);if(M.useEffect(()=>{q(C),Y(!1)},[C]),!z&&U)return O;return CC.jsx(P,{card:"AjaxGroupCard",data:f,methods:{changeContent:A},useSocketioSupport:T,useCentrifugeSupport:D,useMittSupport:V,centrifugeChannel:Z,children:CC.jsx($,{uiConfig:z??G.current,setUiAjaxConfiguration:H==="events"?W:B})})},ZU=VI;var OU=X({name:"AjaxGroupCard",component:ZU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var UC=require("react");var Lf=require("react/jsx-runtime"),$I=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I,url:H,sx:T}=f,D=UC.useContext(u),V=UC.useContext(R)??K;return Lf.jsx(P,{card:I,data:f,children:Lf.jsx("div",{style:T,id:I,onClick:(O)=>{if(H)if(O.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else D?.(H)},children:Lf.jsx(V,{setUiAjaxConfiguration:U,uiConfig:C})})})},VU=$I;var $U=X({name:"BoxCard",component:VU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var zU=require("react");var Rf=require("react/jsx-runtime"),zI=({data:f,content:C,setUiAjaxConfiguration:U})=>{let{name:I,sx:H}=f,T=zU.useContext(R)??K;return Rf.jsx(P,{card:I,data:f,children:Rf.jsx("div",{style:H,id:I,children:C.map((D,V)=>{return Rf.jsx(T,{uiConfig:D,setUiAjaxConfiguration:U},`children-${V}`)})})})},oU=zI;var qU=X({name:"OneOfCard",component:oU,metadata:{author:"Swarm.ing",description:"Different variants"}});var s=require("react"),t=require("@tanstack/react-query");var mf=require("react");var Ef=require("react"),Sf=new Map,Nf=new Map;function yf(f,C){let U=`${f}::${C}`,I=f?Sf.get(U):void 0,[H,T]=Ef.useState(I??null);return Ef.useEffect(()=>{if(!f)return;if(Sf.has(U)){T(Sf.get(U));return}let D=Nf.get(U);if(!D)D=fetch(f+`api/support/${C}`,{method:"GET"}).then((Z)=>Z.json()).then((Z)=>{return Sf.set(U,Z),Nf.delete(U),Z}).catch((Z)=>{throw Nf.delete(U),Z}),Nf.set(U,D);let V=!1;return D.then((Z)=>{if(!V)T(Z)}).catch(()=>{}),()=>{V=!0}},[f,C,U]),H}var Vf=Q("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function BU(){Vf.resolve?.()}function IC(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!Vf.promise)Vf.promise=new Promise((f)=>{Vf.resolve=()=>{f()}});return Vf.promise}var oI=({children:f})=>{let C=mf.useContext(y),U=qf(),I=yf(U,"socketIO"),H=(T)=>{if(typeof window<"u")window.sid=T.sid,BU(),console.log(`SocketIO initialized: ${window.sid}`)};return mf.useEffect(()=>{if(!C)return;let T=()=>{console.log("SocketIO connected")},D=(V)=>{console.log(`SocketIO disconnected: ${V}`),C.connect()};if(I)C.on("pieinit",H),C.on("connect",T),C.on("disconnect",D),C.connect();return()=>{if(I)C.off("pieinit",H),C.off("connect",T),C.off("disconnect",D),C.disconnect()}},[C,I]),f},kf=oI;var uf=require("react");var qI=({children:f})=>{let C=uf.useContext(E),U=qf(),I=yf(U,"centrifuge");return uf.useEffect(()=>{if(!C)return;let H=()=>{console.log("Centrifuge connected")},T=(D)=>{console.log("Centrifuge disconnected:",D)};if(I)C.on("connected",H),C.on("disconnected",T),C.connect();return()=>{if(I)C.disconnect()}},[C,I]),f},xf=qI;var XU=require("axios-date-transformer");var GU=require("react/jsx-runtime");function JU(f,C,U){if(!C)return U;let I=f.replace(/^\//,""),H=C[I];if(!H)return U;return GU.jsx(wf,{uiConfig:H})}var _=require("react/jsx-runtime"),BI=({location:f,fallback:C,piecache:U,onError:I,queryOptions:H,disableGlobalForm:T})=>{let D=Cf(),V=Bf(),Z=x(),O=s.useMemo(()=>XU.createAxiosDateTransformer({baseURL:D||""}),[D]),$=s.useMemo(()=>p(),[]),J=s.useMemo(()=>D?Xf(D):null,[D]),Y=s.useMemo(()=>D?Gf(D,V):null,[D,V]),{data:z,isLoading:q,error:G}=t.useQuery({queryKey:["uiConfig",f.pathname+f.search,D],enabled:!!D,queryFn:async()=>{let B=new URLSearchParams(f.search);B.set("__pieroot","web");let A="/api/content"+f.pathname+"?"+B.toString();if(Z)console.log("[PieRoot] Fetching UI configuration from:",A);let W=await O.get(A,{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:",W.data);return W.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(B)=>Math.min(1000*2**B,30000),...H}),o=JU(f.pathname,U,C);if(!D)return o??null;if(Z)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",V),console.log("[PieRoot] Fallback provided:",!!C),console.log("[PieRoot] Piecache provided:",!!U);if(G){if(Z)console.error("[PieRoot] Error fetching UI configuration:",G),console.error("[PieRoot] Error details:",{message:G.message,status:G.response?.status,data:G.response?.data});return I?.(G),o}if(q||!z){if(Z)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!z});return o}if(Z)console.log("[PieRoot] UI configuration loaded successfully:",z),console.log("[PieRoot] Rendering UI with configuration");return _.jsx(m.Provider,{value:$,children:_.jsx(y.Provider,{value:J,children:_.jsx(E.Provider,{value:Y,children:_.jsx(L.Provider,{value:C??_.jsx(_.Fragment,{}),children:_.jsx(kf,{children:_.jsx(xf,{children:T?_.jsx(K,{uiConfig:z}):_.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:_.jsx(K,{uiConfig:z})})})})})})})})},JI=(f)=>{let C=s.useMemo(()=>new t.QueryClient,[]),U=f.queryClient??C;return _.jsx(u.Provider,{value:f.onNavigate,children:_.jsx(b.Provider,{value:f.config,children:_.jsx(j.Provider,{value:f.onError,children:_.jsx(t.QueryClientProvider,{client:U,children:_.jsx(BI,{...f})})})})})},jf=JI;var a=require("react"),df=require("@tanstack/react-query");var F=require("react/jsx-runtime"),GI=({location:f,fallback:C,children:U,disableGlobalForm:I})=>{let H=Cf(),T=Bf(),D=x(),V=a.useMemo(()=>p(),[]),Z=a.useMemo(()=>H?Xf(H):null,[H]),O=a.useMemo(()=>H?Gf(H,T):null,[H,T]);if(D)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",H),console.log("[PieRoot] CENTRIFUGE_SERVER:",T),console.log("[PieRoot] Fallback provided:",!!C);return F.jsx(m.Provider,{value:V,children:F.jsx(y.Provider,{value:Z,children:F.jsx(E.Provider,{value:O,children:F.jsx(L.Provider,{value:C??F.jsx(F.Fragment,{}),children:F.jsx(kf,{children:F.jsx(xf,{children:I?U:F.jsx("form",{id:"piedata_global_form",action:H+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:U})})})})})})})},XI=(f)=>{let[C]=a.useState(()=>new df.QueryClient),U=f.queryClient??C;return F.jsx(u.Provider,{value:f.onNavigate,children:F.jsx(b.Provider,{value:f.config,children:F.jsx(j.Provider,{value:f.onError,children:F.jsx(df.QueryClientProvider,{client:U,children:F.jsx(GI,{...f})})})})})},YU=XI;var WU=require("react");var TC=require("react/jsx-runtime"),YI=TC.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),WI=({apiServer:f,pathname:C="/",search:U="",centrifugeServer:I,fallback:H,enableRenderingLog:T=!1})=>{let D=f??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",V=WU.useMemo(()=>({apiServer:D,centrifugeServer:I,enableRenderingLog:T,pageProcessor:"web"}),[D,I,T]);return TC.jsx(jf,{location:{pathname:C,search:U},config:V,fallback:H??YI,onNavigate:(O)=>{if(typeof window<"u")window.history.pushState(null,"",O)}})},PU=WI;var QU=require("react"),HC=(f,C=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let U=document.getElementsByName(f);if(!U.length){if(C)console.warn(`No input found with name ${f}`);return[]}let I=U[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[]},PI=(f,C={},U=[],I,H)=>{let T=H?.renderingLogEnabled??!1,D=H?.timeout,V=H?.retryPolicy,Z=V?.maxRetries??0,O=V?.baseDelay??1000,$=V?.retryOn??[502,503,504];if(T)console.log("Registering AJAX: ",I,C,U);return async(J={})=>{if(typeof window>"u"||typeof document>"u"){if(T)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let Y=H?.apiServer;if(!Y){if(T)console.warn("AJAX skipped: apiServer is missing");return}if(!I||!f){if(T)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(U.includes("sid"))await IC();let z=new FormData;for(let[o,B]of Object.entries({...C,...J}))z.append(o,B);for(let o of U)for(let B of HC(o,T))z.append(o,B);let q=Y+"api/ajax_content"+I;f(null);let G;for(let o=0;o<=Z;o++){if(o>0){let W=O*2**(o-1);if(T)console.log(`AJAX retry ${o}/${Z} after ${W}ms`);await new Promise((w)=>setTimeout(w,W))}let B=D!=null?new AbortController:null,A=B&&setTimeout(()=>B.abort(),D);try{let W=await fetch(q,{method:"POST",body:z,signal:B?.signal});if(A)clearTimeout(A);if(!W.ok&&$.includes(W.status)&&o<Z){G=Error(`HTTP ${W.status}`);continue}let $f=(W.headers.get("content-type")||"").includes("application/json");if(!!W.body?.getReader&&!$f){let zf=W.body.getReader(),LU=new TextDecoder,c="";while(!0){let{done:bf,value:RU}=await zf.read();if(bf)break;c+=LU.decode(RU,{stream:!0});let DC=c.split(`
|
|
3
|
-
`);
|
|
2
|
+
var wZ=Object.create;var{getPrototypeOf:LZ,defineProperty:e,getOwnPropertyNames:TU,getOwnPropertyDescriptor:NZ}=Object,JU=Object.prototype.hasOwnProperty;var BU=(H,U,Z)=>{Z=H!=null?wZ(LZ(H)):{};let $=U||!H||!H.__esModule?e(Z,"default",{value:H,enumerable:!0}):Z;for(let T of TU(H))if(!JU.call($,T))e($,T,{get:()=>H[T],enumerable:!0});return $},zU=new WeakMap,fZ=(H)=>{var U=zU.get(H),Z;if(U)return U;if(U=e({},"__esModule",{value:!0}),H&&typeof H==="object"||typeof H==="function")TU(H).map(($)=>!JU.call(U,$)&&e(U,$,{get:()=>H[$],enumerable:!(Z=NZ(H,$))||Z.enumerable}));return zU.set(H,U),U};var EZ=(H,U)=>{for(var Z in U)e(H,Z,{get:U[Z],enumerable:!0,configurable:!0,set:($)=>U[Z]=()=>$})};var D$={};EZ(D$,{usePieEmit:()=>DU,useAjaxSubmit:()=>WZ,unregisterComponent:()=>AU,trackLazy:()=>VH,submitGlobalForm:()=>_Z,registry:()=>j,registerPieComponent:()=>_,registerMultipleComponents:()=>MU,readAjaxKeyAsync:()=>ZU,readAjaxKey:()=>UU,preloadComponent:()=>dH,prefetchLazyComponents:()=>NU,pieName:()=>KZ,parseDepName:()=>IH,hasComponent:()=>PU,getRegistrySize:()=>LU,getRegistryEntry:()=>l,getLazyComponentNames:()=>uH,getEmitter:()=>p,getComponentMeta:()=>RU,getAllRegisteredComponents:()=>wU,cn:()=>FZ,UnionCard:()=>mU,UIRendererContext:()=>E,UILoading:()=>MH,UI:()=>L,SocketIOContext:()=>k,SessionStorageCard:()=>tU,SequenceCard:()=>SU,PieRoot:()=>vH,PiePreviewRoot:()=>qZ,PieConfigContext:()=>h,PieCard:()=>A,PieBaseRoot:()=>XZ,PIEBREAK:()=>QH,OneOfCard:()=>JZ,MittContext:()=>x,IOEventsCard:()=>nU,HiddenCard:()=>dU,HTMLEmbedCard:()=>gU,FallbackContext:()=>f,DeviceStorageCard:()=>eU,CentrifugeIOContext:()=>y,BoxCard:()=>$Z,AutoRedirectCard:()=>iU,AjaxGroupCard:()=>UZ});module.exports=fZ(D$);var S=require("react");var XH=require("react");var pH=globalThis,K=(H,U)=>{let Z=Symbol.for(H);if(!(Z in pH))pH[Z]=U();return pH[Z]};var h=K("@swarm.ing/pieui:context:pieConfig",()=>XH.createContext(null)),HH=()=>{let H=XH.useContext(h);if(!H)throw Error("usePieConfig must be used within PieConfigProvider");return H},UH=()=>{let{apiServer:H}=HH();return H},YH=UH,qH=()=>{let{centrifugeServer:H}=HH();return H};var v=()=>{let{enableRenderingLog:H}=HH();return H},IU=v;var QH="__piedemo__";var GU=require("react"),gH=require("centrifuge");var OU=K("@swarm.ing/pieui:centrifuge-cache",()=>new Map),WH=(H,U)=>{if(!U)return null;let Z=`${H}::${U}`,$=OU.get(Z);if($)return $;async function T(){let J=await fetch(H+"api/centrifuge/gen_token");if(!J.ok){if(J.status===403)throw new gH.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let z=new gH.Centrifuge(U,{getToken:T});return OU.set(Z,z),z},CZ=K("@swarm.ing/pieui:context:centrifuge",()=>GU.createContext(null)),y=CZ;var YU=require("socket.io-client"),qU=require("react");var XU=K("@swarm.ing/pieui:socket-cache",()=>new Map),DH=(H)=>{let U=XU.get(H);if(U)return U;let Z=YU.io(H,{autoConnect:!1,transports:["websocket"]});return XU.set(H,Z),Z},jZ=K("@swarm.ing/pieui:context:socket",()=>qU.createContext(null)),k=jZ;var QU=BU(require("mitt")),d=require("react");function p(){return K("@swarm.ing/pieui:mitt-emitter",()=>QU.default())}var WU=K("@swarm.ing/pieui:context:mitt",()=>d.createContext(null));function DU(H){let U=d.useContext(WU);return d.useCallback((Z,$)=>{(U??p()).emit(`pie${Z}_${H}`,$)},[H,U])}var x=WU;var o=require("react/jsx-runtime"),yZ=({card:H,data:U,children:Z,useSocketioSupport:$=!1,useCentrifugeSupport:T=!1,useMittSupport:z=!1,centrifugeChannel:J=void 0,methods:B=void 0,stored:I=void 0})=>{let O=IU(),D=S.useRef(B);if(D.current=B,O)console.log("[PieCard] Rendering card:",H),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:$,centrifuge:T,mitt:z,centrifugeChannel:J}),console.log("[PieCard] Methods:",B?Object.keys(B):"none"),console.log("[PieCard] Has children:",!!Z);let Q=S.useContext(k),V=S.useContext(y),G=S.useContext(x);if(S.useEffect(()=>{if(!Q||!$||!D.current||!U.name){if(O&&$)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!Q,useSocketioSupport:$,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}`;if(O)console.log(`[PieCard] Socket.IO registering event: ${q}`);let M=(F)=>{D.current?.[X]?.(F)};return Q.on(q,M),[q,M]});return()=>{W.forEach(([X,q])=>{if(O)console.log(`[PieCard] Socket.IO unregistering event: ${X}`);Q.off(X,q)})}},[Q,U.name,$]),S.useEffect(()=>{if(!V||!T||!J||!U.name){if(O&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!D.current,hasDataName:!!U?.name});return}let W=Object.keys(D.current??{}).map((X)=>{let q=`pie${X}_${U.name}_${J}`;if(O)console.log(`[PieCard] Centrifuge subscribing to channel: ${q}`);let M=V.newSubscription(q);return M.on("publication",(F)=>{if(O)console.log(`[PieCard] Centrifuge received data on ${q}:`,F.data);D.current?.[X]?.(F.data)}),M.subscribe(),M});return()=>{W.forEach((X)=>{if(O)console.log("[PieCard] Centrifuge unsubscribing from channel");X.unsubscribe(),V.removeSubscription(X)})}},[V,J,U.name,T]),S.useEffect(()=>{if(!G||!z||!U.name){if(O&&z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!G,useMittSupport:z,hasMethods:!!D.current,hasDataName:!!U?.name});return}let Y=Object.keys(D.current??{}),W={};return Y.forEach((X)=>{let q=`pie${X}_${U.name}`,M=(F)=>{if(O)console.log(`[PieCard] Mitt registering event: ${q}`);D.current?.[X]?.(F)};W[q]=M,G.on(q,M)}),()=>{Object.entries(W).forEach(([X,q])=>{if(O)console.log(`[PieCard] Mitt unregistering event: ${X}`);G.off(X,q)})}},[G,U.name,z]),O)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return o.jsxs(o.Fragment,{children:[o.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(I)}),Z]});return Z},A=yZ;var VU=require("react"),g=new Map;function FU(H,U){return U.catch(()=>{if(g.get(H)===U)g.delete(H)}),g.set(H,U),U}function VH(H,U){return VU.lazy(()=>{if(g.has(U))return g.get(U);return FU(U,H().then((Z)=>Z))})}var _U=async(H,U)=>{if(!U)return;if(g.has(H))return g.get(H);return FU(H,U().then((Z)=>Z))};var j=K("@swarm.ing/pieui:component-registry",()=>new Map),kZ=(H)=>{if(!H.name)throw Error("Component registration requires a name");if(!H.component&&!H.loader)throw Error(`Component "${H.name}" requires component or loader`);let U={name:H.name,component:H.component,loader:H.loader,metadata:H.metadata,fallback:H.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=VH(U.loader,H.name),U.isLazy=!0;return U};function _(H){let U=kZ(H);return j.set(U.name,U),U.component}var MU=(H)=>{H.forEach((U)=>_(U))},AU=(H)=>{j.delete(H)},PU=(H)=>{return j.has(H)},RU=(H)=>{return j.get(H)?.metadata},l=(H)=>{return j.get(H)},wU=()=>{return Array.from(j.keys())},LU=()=>{return j.size},uH=()=>Array.from(j.values()).filter((H)=>H.isLazy&&typeof H.loader==="function").map((H)=>H.name),dH=(H)=>{let U=j.get(H);if(!U?.isLazy||typeof U.loader!=="function")return;return _U(H,U.loader)},KU=!1,NU=()=>{if(KU||typeof window>"u")return;KU=!0;let H=navigator.connection;if(H?.saveData)return;if(H?.effectiveType&&["slow-2g","2g"].includes(H.effectiveType))return;let U=uH(),Z="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),$=(T)=>{if(T>=U.length)return;Z(()=>{Promise.resolve().then(()=>dH(U[T])).catch(()=>{}).finally(()=>$(T+1))})};$(0)};var ZH=require("react");var fU=require("react");var FH=require("react/jsx-runtime"),xZ=K("@swarm.ing/pieui:context:fallback",()=>fU.createContext(FH.jsx(FH.Fragment,{}))),f=xZ;var EU=require("react");var SZ=K("@swarm.ing/pieui:context:lazyError",()=>EU.createContext(void 0)),m=SZ;var _H=require("react"),CU=require("react/jsx-runtime"),bZ=2,vZ=400;class i extends _H.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(H){if(this.props.onError?.(H),this.state.attempt<bZ){let U=vZ*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},U)}}componentDidUpdate(H){if(H.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return CU.jsx(_H.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var KH=require("react/jsx-runtime");function mZ({uiConfig:H,setUiAjaxConfiguration:U}){let Z=ZH.useContext(f),$=ZH.useContext(m),T=v();if(T)console.log("[UI] Rendering component:",H.card),console.log("[UI] Component data:",H.data),console.log("[UI] Component content:",H.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let z=l(H.card);if(!z?.component){if(T)console.warn(`[UI] Component not found in registry: ${H.card}`),console.log("[UI] Returning fallback component");return Z}if(T)console.log("[UI] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata});let J=z.component,B=KH.jsx(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U});if(z.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",z.name);return KH.jsx(i,{name:z.name,fallback:z.fallback?KH.jsx(z.fallback,{}):Z,onError:$,children:B})}if(T)console.log("[UI] Rendering component directly:",z.name);return B}var L=ZH.memo(mZ);var oH=require("react");var jU=require("react");var cZ=K("@swarm.ing/pieui:context:uiRenderer",()=>jU.createContext(null)),E=cZ;var $H=require("react/jsx-runtime");function yU({uiConfig:H,setUiAjaxConfiguration:U}){let Z=oH.useContext(f),$=oH.useContext(m),T=v();if(T)console.log("[UILoading] Rendering fallback for:",H.card),console.log("[UILoading] Component data:",H.data),console.log("[UILoading] Component content:",H.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let z=l(H.card);if(!z?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${H.card}`),console.log("[UILoading] Returning fallback component");return Z}if(T)console.log("[UILoading] Found component in registry:",{name:z.name,isLazy:z.isLazy,hasMetadata:!!z.metadata,hasFallback:!!z.fallback});if(z.fallback){if(T)console.log("[UILoading] Rendering fallback for:",z.name);let I=z.fallback;return $H.jsx(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",z.name);let J=z.component,B=$H.jsx(E.Provider,{value:yU,children:$H.jsx(J,{data:H.data,content:H.content,setUiAjaxConfiguration:U})});if(z.isLazy)return $H.jsx(i,{name:z.name,fallback:Z,onError:$,children:B});return B}var MH=yU;var kU=require("react");var AH=require("react/jsx-runtime"),hZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$,sx:T}=H,z=kU.useContext(E)??L;return AH.jsx(A,{card:$,data:H,children:AH.jsx("div",{style:T,id:$,children:U.map((J,B)=>{return AH.jsx(z,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},xU=hZ;var SU=_({name:"SequenceCard",component:xU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var bU=require("react");var lH=require("react/jsx-runtime"),pZ=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$}=H,T=bU.useContext(E)??L;return lH.jsx(A,{card:$,data:H,children:U.map((z,J)=>{return lH.jsx(T,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${J}`)})})},vU=pZ;var mU=_({name:"UnionCard",component:vU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var PH=require("react"),cU=BU(require("html-react-parser"));var C=require("react");function gZ(){let H=new AudioContext,U=H.createOscillator(),Z=U.connect(H.createMediaStreamDestination());U.start();let $=Z.stream.getAudioTracks()[0];return $.enabled=!1,$}function iH(H=null,U){let[Z,$]=C.useState(!1),T=C.useRef(null),z=C.useRef(null),J=C.useRef(null),B=C.useCallback(async(Q,V=!0)=>{if(T.current)I();let G=new RTCPeerConnection;if(G.onconnectionstatechange=()=>{if(G.connectionState==="connected")$(!0);else if(["disconnected","failed","closed"].includes(G.connectionState))$(!1)},G.ontrack=(P)=>{if(H)H.srcObject=P.streams[0]},V){let P=await navigator.mediaDevices.getUserMedia({audio:!0});G.addTrack(P.getTracks()[0],P)}else{let P=gZ();G.addTrack(P)}let Y=G.createDataChannel("oai-events");z.current=Y,J.current=new Promise((P)=>{Y.addEventListener("open",()=>{P()})});let W=await G.createOffer();await G.setLocalDescription(W);let F=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:W.sdp,headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/sdp"}})).text();await G.setRemoteDescription({type:"answer",sdp:F}),T.current=G,await J.current},[H]),I=C.useCallback(()=>{let Q=z.current;if(Q)Q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),$(!1),T.current=null,z.current=null,J.current=null},[H]),O=C.useCallback((Q)=>{let V=z.current;if(!V){console.error("Data channel is not ready",Q);return}let G=new Date().toLocaleTimeString();if(Q.event_id=Q.event_id||crypto.randomUUID(),V.send(JSON.stringify(Q)),!Q.timestamp)Q.timestamp=G;U?.(Q)},[U,H]),D=C.useCallback((Q)=>{if(!z.current){console.error("Data channel is not ready");return}let G=()=>{O({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:Q}]}}),O({type:"response.create"})};if(J.current)J.current.then(G);else G()},[U,H]);return C.useEffect(()=>{let Q=z.current;if(!Q)return;let V=(G)=>{let Y=JSON.parse(G.data);if(!Y.timestamp)Y.timestamp=new Date().toLocaleTimeString();U?.(Y)};return Q.addEventListener("message",V),()=>{Q.removeEventListener("message",V)}},[U,H]),{isSessionActive:Z,startSession:B,stopSession:I,sendTextMessage:D}}var pU=require("react/jsx-runtime"),uZ=({data:H})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:$,useMittSupport:T,centrifugeChannel:z}=H,[J,B]=PH.useState(U),{isSessionActive:I,startSession:O,sendTextMessage:D}=iH(null,(Y)=>{if(console.log(Y.type,Y.type==="response.output_text.delta"&&Y.delta),Y.type==="response.output_text.delta"&&Y.delta)B((W)=>W+Y.delta)});return PH.useEffect(()=>{B(U)},[U]),pU.jsx(A,{card:"HTMLEmbedCard",data:H,methods:{update:(Y)=>{B(Y.value)},generateUsingAI:async(Y)=>{try{if(!I&&Y.token)await O(Y.token,!1);D(Y.prompt)}catch(W){console.error("Failed to generate using AI",W)}},initializeAI:async(Y)=>{if(!I&&Y.token)await O(Y.token,!1)}},useCentrifugeSupport:$,useSocketioSupport:Z,useMittSupport:T,centrifugeChannel:z,children:cU.default(J)})},hU=uZ;var gU=_({name:"HTMLEmbedCard",component:hU,metadata:{author:"Swarm.ing"}});var RH=require("react");var sH=require("react/jsx-runtime"),dZ=({data:H})=>{let{name:U,value:Z,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J}=H,[B,I]=RH.useState(Z);return RH.useEffect(()=>{I(Z)},[Z]),sH.jsx(A,{card:"HiddenCard",data:H,useSocketioSupport:$,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:J,methods:{update:({value:O})=>{I(O)}},children:sH.jsx("input",{type:"hidden",id:U,name:U,value:B})})},uU=dZ;var dU=_({name:"HiddenCard",component:uU,metadata:{author:"Swarm.ing"}});var zH=require("react");var oU=require("react");var oZ=K("@swarm.ing/pieui:context:navigate",()=>oU.createContext(void 0)),b=oZ;var wH=require("react/jsx-runtime"),lZ=({data:H})=>{let{url:U}=H,Z=zH.useContext(b),$=zH.useContext(f);return zH.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),wH.jsx(wH.Fragment,{children:$})},lU=lZ;var iU=_({name:"AutoRedirectCard",component:lU,metadata:{author:"Swarm.ing"}});var c=require("react-toastify"),LH=require("react-toastify");var n=require("react");var s=require("react/jsx-runtime"),iZ={bounce:c.Bounce,slide:c.Slide,zoom:c.Zoom,flip:c.Flip},sZ=(H)=>{let U={...H,type:H.alertType,transition:H.transition?iZ[H.transition]:void 0,position:H.position??"bottom-right",autoClose:H.autoClose??3000,style:{backgroundColor:"black",...H.sx}};LH.toast(H.message,U)},nZ=(H)=>{console.log("Log event",H)},rZ=(H)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(H.title,{body:H.message??H.subtitle,icon:H.icon,silent:H.silent})}catch($){console.error("[IOEventsCard] Failed to show notification",$)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then(($)=>{if($==="granted")U()})},tZ=({data:H})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:$,centrifugeChannel:T}=H,z=n.useContext(b),J=n.useRef(z);J.current=z;let B=n.useMemo(()=>({alert:sZ,log:nZ,push:rZ,redirect:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()},reload:(I)=>{if(I.to){let O=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(O))window.location.href=O;else J.current?.(O)}else window.location.reload()}}),[]);return s.jsx(s.Fragment,{children:s.jsx(A,{card:"IOEventsCard",data:H,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:$,centrifugeChannel:T,methods:B,children:s.jsx(LH.ToastContainer,{})})})},sU=tZ;var nU=_({name:"IOEventsCard",component:sU,metadata:{author:"Swarm.ing"}});var TH=require("react");var nH=require("react/jsx-runtime"),aZ=({data:H})=>{let{name:U,key:Z,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=TH.useState($);return TH.useEffect(()=>{O($)},[$]),TH.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(Z,I)},[Z,I]),nH.jsx(A,{card:"SessionStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{sessionStorage.removeItem(Z),O("")}},children:nH.jsx("input",{type:"hidden",id:U,name:U,value:I})})},rU=aZ;var tU=_({name:"SessionStorageCard",component:rU,metadata:{author:"PieData"}});var JH=require("react");var rH=require("react/jsx-runtime"),eZ=({data:H})=>{let{name:U,key:Z,value:$,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B}=H,[I,O]=JH.useState($);return JH.useEffect(()=>{O($)},[$]),JH.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(Z,I)},[Z,I]),rH.jsx(A,{card:"DeviceStorageCard",data:H,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:J,centrifugeChannel:B,methods:{update:({value:D})=>{O(D)},remove:()=>{localStorage.removeItem(Z),O("")}},children:rH.jsx("input",{type:"hidden",id:U,name:U,value:I})})},aU=eZ;var eU=_({name:"DeviceStorageCard",component:aU,metadata:{author:"PieData"}});var N=require("react");var tH=require("react/jsx-runtime"),H$=({data:H,content:U})=>{let{useLoader:Z,noReturn:$,returnType:T,useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I}=H,O=N.useContext(f),D=N.useContext(E)??L,[Q,V]=N.useState(!1),[G,Y]=N.useState(null),W=N.useRef(U),X=N.useContext(x),q=N.useCallback((P)=>{if(P===null)V(!0);else if(V(!1),!$)W.current=P;if(!$)Y(P)},[$]),M=N.useCallback((P)=>{W.current=P.content,Y(P.content)},[]),F=N.useCallback((P)=>{if(P===null)V(!0);else if(V(!1),!$)for(let OH of P)X?.emit(OH.name,OH.data)},[$,X]);if(N.useEffect(()=>{Y(U),V(!1)},[U]),!G&&Z)return O;return tH.jsx(A,{card:"AjaxGroupCard",data:H,methods:{changeContent:M},useSocketioSupport:z,useCentrifugeSupport:J,useMittSupport:B,centrifugeChannel:I,children:tH.jsx(D,{uiConfig:G??W.current,setUiAjaxConfiguration:T==="events"?F:q})})},HZ=H$;var UZ=_({name:"AjaxGroupCard",component:HZ,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var aH=require("react");var NH=require("react/jsx-runtime"),U$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$,url:T,sx:z}=H,J=aH.useContext(b),B=aH.useContext(E)??L;return NH.jsx(A,{card:$,data:H,children:NH.jsx("div",{style:z,id:$,onClick:(O)=>{if(T)if(O.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:NH.jsx(B,{setUiAjaxConfiguration:Z,uiConfig:U})})})},ZZ=U$;var $Z=_({name:"BoxCard",component:ZZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var zZ=require("react");var fH=require("react/jsx-runtime"),Z$=({data:H,content:U,setUiAjaxConfiguration:Z})=>{let{name:$,sx:T}=H,z=zZ.useContext(E)??L;return fH.jsx(A,{card:$,data:H,children:fH.jsx("div",{style:T,id:$,children:U.map((J,B)=>{return fH.jsx(z,{uiConfig:J,setUiAjaxConfiguration:Z},`children-${B}`)})})})},TZ=Z$;var JZ=_({name:"OneOfCard",component:TZ,metadata:{author:"Swarm.ing",description:"Different variants"}});var r=require("react"),t=require("@tanstack/react-query");var kH=require("react");var jH=require("react"),EH=new Map,CH=new Map;function yH(H,U){let Z=`${H}::${U}`,$=H?EH.get(Z):void 0,[T,z]=jH.useState($??null);return jH.useEffect(()=>{if(!H)return;if(EH.has(Z)){z(EH.get(Z));return}let J=CH.get(Z);if(!J)J=fetch(H+`api/support/${U}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return EH.set(Z,I),CH.delete(Z),I}).catch((I)=>{throw CH.delete(Z),I}),CH.set(Z,J);let B=!1;return J.then((I)=>{if(!B)z(I)}).catch(()=>{}),()=>{B=!0}},[H,U,Z]),T}var BH=K("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function BZ(){BH.resolve?.()}function eH(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!BH.promise)BH.promise=new Promise((H)=>{BH.resolve=()=>{H()}});return BH.promise}var $$=({children:H})=>{let U=kH.useContext(k),Z=YH(),$=yH(Z,"socketIO"),T=(z)=>{if(typeof window<"u")window.sid=z.sid,BZ(),console.log(`SocketIO initialized: ${window.sid}`)};return kH.useEffect(()=>{if(!U)return;let z=()=>{console.log("SocketIO connected")},J=(B)=>{console.log(`SocketIO disconnected: ${B}`),U.connect()};if($)U.on("pieinit",T),U.on("connect",z),U.on("disconnect",J),U.connect();return()=>{if($)U.off("pieinit",T),U.off("connect",z),U.off("disconnect",J),U.disconnect()}},[U,$]),H},xH=$$;var SH=require("react");var z$=({children:H})=>{let U=SH.useContext(y),Z=YH(),$=yH(Z,"centrifuge");return SH.useEffect(()=>{if(!U)return;let T=()=>{console.log("Centrifuge connected")},z=(J)=>{console.log("Centrifuge disconnected:",J)};if($)U.on("connected",T),U.on("disconnected",z),U.connect();return()=>{if($)U.disconnect()}},[U,$]),H},bH=z$;var GZ=require("axios-date-transformer");var OZ=require("react/jsx-runtime");function IZ(H,U,Z){if(!U)return Z;let $=H.replace(/^\//,""),T=U[$];if(!T)return Z;return OZ.jsx(MH,{uiConfig:T})}var R=require("react/jsx-runtime"),T$=({location:H,fallback:U,piecache:Z,onError:$,queryOptions:T,disableGlobalForm:z})=>{let J=UH(),B=qH(),I=v(),O=r.useMemo(()=>GZ.createAxiosDateTransformer({baseURL:J||""}),[J]),D=r.useMemo(()=>p(),[]),Q=r.useMemo(()=>J?DH(J):null,[J]),V=r.useMemo(()=>J?WH(J,B):null,[J,B]),{data:G,isLoading:Y,error:W}=t.useQuery({queryKey:["uiConfig",H.pathname+H.search,J],enabled:!!J,queryFn:async()=>{let q=new URLSearchParams(H.search);q.set("__pieroot","web");let M="/api/content"+H.pathname+"?"+q.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",M);let F=await O.get(M,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",F.data);return F.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...T}),X=IZ(H.pathname,Z,U);if(!J)return X??null;if(I)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",B),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!Z);if(W){if(I)console.error("[PieRoot] Error fetching UI configuration:",W),console.error("[PieRoot] Error details:",{message:W.message,status:W.response?.status,data:W.response?.data});return $?.(W),X}if(Y||!G){if(I)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!G});return X}if(I)console.log("[PieRoot] UI configuration loaded successfully:",G),console.log("[PieRoot] Rendering UI with configuration");return R.jsx(x.Provider,{value:D,children:R.jsx(k.Provider,{value:Q,children:R.jsx(y.Provider,{value:V,children:R.jsx(f.Provider,{value:U??R.jsx(R.Fragment,{}),children:R.jsx(xH,{children:R.jsx(bH,{children:z?R.jsx(L,{uiConfig:G}):R.jsx("form",{id:"piedata_global_form",action:J+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:R.jsx(L,{uiConfig:G})})})})})})})})},J$=(H)=>{let U=r.useMemo(()=>new t.QueryClient,[]),Z=H.queryClient??U;return R.jsx(b.Provider,{value:H.onNavigate,children:R.jsx(h.Provider,{value:H.config,children:R.jsx(m.Provider,{value:H.onError,children:R.jsx(t.QueryClientProvider,{client:Z,children:R.jsx(T$,{...H})})})})})},vH=J$;var a=require("react"),mH=require("@tanstack/react-query");var w=require("react/jsx-runtime"),B$=({location:H,fallback:U,children:Z,disableGlobalForm:$})=>{let T=UH(),z=qH(),J=v(),B=a.useMemo(()=>p(),[]),I=a.useMemo(()=>T?DH(T):null,[T]),O=a.useMemo(()=>T?WH(T,z):null,[T,z]);if(J)console.log("[PieRoot] Rendering with location:",H),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!U);return w.jsx(x.Provider,{value:B,children:w.jsx(k.Provider,{value:I,children:w.jsx(y.Provider,{value:O,children:w.jsx(f.Provider,{value:U??w.jsx(w.Fragment,{}),children:w.jsx(xH,{children:w.jsx(bH,{children:$?Z:w.jsx("form",{id:"piedata_global_form",action:T+"api/process"+H.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},I$=(H)=>{let[U]=a.useState(()=>new mH.QueryClient),Z=H.queryClient??U;return w.jsx(b.Provider,{value:H.onNavigate,children:w.jsx(h.Provider,{value:H.config,children:w.jsx(m.Provider,{value:H.onError,children:w.jsx(mH.QueryClientProvider,{client:Z,children:w.jsx(B$,{...H})})})})})},XZ=I$;var YZ=require("react");var HU=require("react/jsx-runtime"),O$=HU.jsx("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),G$=({apiServer:H,pathname:U="/",search:Z="",centrifugeServer:$,fallback:T,enableRenderingLog:z=!1})=>{let J=H??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",B=YZ.useMemo(()=>({apiServer:J,centrifugeServer:$,enableRenderingLog:z,pageProcessor:"web"}),[J,$,z]);return HU.jsx(vH,{location:{pathname:U,search:Z},config:B,fallback:T??O$,onNavigate:(O)=>{if(typeof window<"u")window.history.pushState(null,"",O)}})},qZ=G$;var QZ=require("react"),X$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],Y$=new Set(["telegram:cloud","telegram:secure"]),IH=(H)=>{if(H==="sid")return{source:"sid",key:"sid"};for(let U of X$){let Z=U+":";if(H.startsWith(Z))return{source:U,key:H.slice(Z.length)}}return{source:"dom",key:H}},UU=(H,U=!1)=>{let{source:Z,key:$}=IH(H);if(Z==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}if(Z==="localStorage"||Z==="sessionStorage")try{let B=(Z==="localStorage"?window.localStorage:window.sessionStorage).getItem($);if(B===null){if(U)console.warn(`No ${Z} value found for key ${$}`);return[]}return[B]}catch(J){if(U)console.warn(`Failed to read ${Z} key ${$}:`,J);return[]}if(Z==="cookie"){let J=q$($);if(J===null){if(U)console.warn(`No cookie found for key ${$}`);return[]}return[J]}if(Z==="url"){let J=new URLSearchParams(window.location.search).getAll($);if(!J.length&&U)console.warn(`No URL query param found for key ${$}`);return J}if(Y$.has(Z)){if(U)console.warn(`Source ${Z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=document.getElementsByName($);if(!T.length){if(U)console.warn(`No input found with name ${$}`);return[]}let z=T[0];if(z instanceof HTMLInputElement){if(z.type==="file"&&z.files)return Array.from(z.files);return[z.value]}if(z instanceof HTMLTextAreaElement)return[z.value];return[]},q$=(H)=>{let U=document.cookie?document.cookie.split(";"):[];for(let Z of U){let $=Z.indexOf("=");if(($===-1?Z:Z.slice(0,$)).trim()===H){let z=$===-1?"":Z.slice($+1).trim();try{return decodeURIComponent(z)}catch{return z}}}return null},Q$=(H,U,Z)=>{let $=window.Telegram?.WebApp,T=H==="telegram:cloud"?$?.CloudStorage:$?.SecureStorage,z=H==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if(Z)console.warn(`${z} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(U,(B,I)=>{if(B){if(Z)console.warn(`Failed to read ${z} key ${U}:`,B);J([]);return}if(I==null||I===""){if(Z)console.warn(`No ${z} value found for key ${U}`);J([]);return}J([I])})}catch(B){if(Z)console.warn(`Failed to read ${z} key ${U}:`,B);J([])}})},ZU=async(H,U=!1)=>{let{source:Z,key:$}=IH(H);if(Z==="telegram:cloud"||Z==="telegram:secure")return Q$(Z,$,U);return UU(H,U)},W$=(H,U={},Z=[],$,T)=>{let z=T?.renderingLogEnabled??!1,J=T?.timeout,B=T?.retryPolicy,I=B?.maxRetries??0,O=B?.baseDelay??1000,D=B?.retryOn??[502,503,504];if(z)console.log("Registering AJAX: ",$,U,Z);return async(Q={})=>{if(typeof window>"u"||typeof document>"u"){if(z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(z)console.warn("AJAX skipped: apiServer is missing");return}if(!$||!H){if(z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await eH();let G=new FormData;for(let[X,q]of Object.entries({...U,...Q}))G.append(X,q);for(let X of Z){let{key:q}=IH(X);for(let M of await ZU(X,z))G.append(q,M)}let Y=V+"api/ajax_content"+$;H(null);let W;for(let X=0;X<=I;X++){if(X>0){let F=O*2**(X-1);if(z)console.log(`AJAX retry ${X}/${I} after ${F}ms`);await new Promise((P)=>setTimeout(P,F))}let q=J!=null?new AbortController:null,M=q&&setTimeout(()=>q.abort(),J);try{let F=await fetch(Y,{method:"POST",body:G,signal:q?.signal});if(M)clearTimeout(M);if(!F.ok&&D.includes(F.status)&&X<I){W=Error(`HTTP ${F.status}`);continue}let OH=(F.headers.get("content-type")||"").includes("application/json");if(!!F.body?.getReader&&!OH){let GH=F.body.getReader(),MZ=new TextDecoder,u="";while(!0){let{done:cH,value:AZ}=await GH.read();if(cH)break;u+=MZ.decode(AZ,{stream:!0});let $U=u.split(`
|
|
3
|
+
`);u=$U.pop()??"";for(let PZ of $U){let hH=PZ.trim();if(!hH)continue;try{let RZ=JSON.parse(hH);H([RZ])}catch{if(z)console.warn("Failed to parse streamed line:",hH)}}}if(u.trim())try{let cH=JSON.parse(u);H([cH])}catch{if(z)console.warn("Failed to parse final streamed line:",u)}return{}}else{let GH=await F.json();return H(GH),GH}}catch(F){if(M)clearTimeout(M);if(W=F,X<I)continue;if(z)console.error("AJAX request failed:",F);return H(null),F}}if(z)console.error("AJAX request failed after retries:",W);return H(null),W}},WZ=(H,U={},Z=[],$,T)=>{let{apiServer:z,enableRenderingLog:J}=HH(),B=JSON.stringify(U),I=JSON.stringify(Z),O=JSON.stringify(T);return QZ.useMemo(()=>W$(H,U,Z,$,{apiServer:z,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[H,B,I,$,z,J,O])};var DZ=require("clsx"),VZ=require("tailwind-merge");function FZ(...H){return VZ.twMerge(DZ.clsx(H))}var _Z=()=>{if(typeof document>"u")return;let H=document.getElementById("piedata_global_form");H&&H.submit()};var KZ=(H,U)=>`${H}${QH}${U}`;
|
|
@@ -222,19 +222,26 @@
|
|
|
222
222
|
}
|
|
223
223
|
},
|
|
224
224
|
{
|
|
225
|
-
"card": "
|
|
225
|
+
"card": "AjaxGroupCard",
|
|
226
226
|
"data": {
|
|
227
227
|
"type": "object",
|
|
228
228
|
"properties": {
|
|
229
229
|
"name": {
|
|
230
230
|
"type": "string"
|
|
231
231
|
},
|
|
232
|
-
"
|
|
233
|
-
"type": "
|
|
232
|
+
"noReturn": {
|
|
233
|
+
"type": "boolean"
|
|
234
234
|
},
|
|
235
|
-
"
|
|
235
|
+
"returnType": {
|
|
236
|
+
"enum": [
|
|
237
|
+
"content",
|
|
238
|
+
"events"
|
|
239
|
+
],
|
|
236
240
|
"type": "string"
|
|
237
241
|
},
|
|
242
|
+
"useLoader": {
|
|
243
|
+
"type": "boolean"
|
|
244
|
+
},
|
|
238
245
|
"useSocketioSupport": {
|
|
239
246
|
"type": "boolean"
|
|
240
247
|
},
|
|
@@ -250,69 +257,73 @@
|
|
|
250
257
|
},
|
|
251
258
|
"additionalProperties": false,
|
|
252
259
|
"required": [
|
|
253
|
-
"key",
|
|
254
260
|
"name",
|
|
255
|
-
"
|
|
261
|
+
"noReturn",
|
|
262
|
+
"returnType",
|
|
263
|
+
"useLoader"
|
|
256
264
|
],
|
|
257
265
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
258
266
|
}
|
|
259
267
|
},
|
|
260
268
|
{
|
|
261
|
-
"card": "
|
|
269
|
+
"card": "BoxCard",
|
|
262
270
|
"data": {
|
|
263
271
|
"type": "object",
|
|
264
272
|
"properties": {
|
|
265
273
|
"name": {
|
|
266
274
|
"type": "string"
|
|
267
275
|
},
|
|
268
|
-
"
|
|
276
|
+
"url": {
|
|
269
277
|
"type": "string"
|
|
270
278
|
},
|
|
271
|
-
"
|
|
279
|
+
"sx": {
|
|
280
|
+
"type": "object",
|
|
281
|
+
"additionalProperties": {}
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
"additionalProperties": false,
|
|
285
|
+
"required": [
|
|
286
|
+
"name",
|
|
287
|
+
"sx",
|
|
288
|
+
"url"
|
|
289
|
+
],
|
|
290
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"card": "OneOfCard",
|
|
295
|
+
"data": {
|
|
296
|
+
"type": "object",
|
|
297
|
+
"properties": {
|
|
298
|
+
"name": {
|
|
272
299
|
"type": "string"
|
|
273
300
|
},
|
|
274
|
-
"
|
|
275
|
-
"type": "
|
|
276
|
-
|
|
277
|
-
"useCentrifugeSupport": {
|
|
278
|
-
"type": "boolean"
|
|
279
|
-
},
|
|
280
|
-
"useMittSupport": {
|
|
281
|
-
"type": "boolean"
|
|
282
|
-
},
|
|
283
|
-
"centrifugeChannel": {
|
|
284
|
-
"type": "string"
|
|
301
|
+
"sx": {
|
|
302
|
+
"type": "object",
|
|
303
|
+
"additionalProperties": {}
|
|
285
304
|
}
|
|
286
305
|
},
|
|
287
306
|
"additionalProperties": false,
|
|
288
307
|
"required": [
|
|
289
|
-
"key",
|
|
290
308
|
"name",
|
|
291
|
-
"
|
|
309
|
+
"sx"
|
|
292
310
|
],
|
|
293
311
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
294
312
|
}
|
|
295
313
|
},
|
|
296
314
|
{
|
|
297
|
-
"card": "
|
|
315
|
+
"card": "CloudStorageCard",
|
|
298
316
|
"data": {
|
|
299
317
|
"type": "object",
|
|
300
318
|
"properties": {
|
|
301
319
|
"name": {
|
|
302
320
|
"type": "string"
|
|
303
321
|
},
|
|
304
|
-
"
|
|
305
|
-
"type": "boolean"
|
|
306
|
-
},
|
|
307
|
-
"returnType": {
|
|
308
|
-
"enum": [
|
|
309
|
-
"content",
|
|
310
|
-
"events"
|
|
311
|
-
],
|
|
322
|
+
"key": {
|
|
312
323
|
"type": "string"
|
|
313
324
|
},
|
|
314
|
-
"
|
|
315
|
-
"type": "
|
|
325
|
+
"value": {
|
|
326
|
+
"type": "string"
|
|
316
327
|
},
|
|
317
328
|
"useSocketioSupport": {
|
|
318
329
|
"type": "boolean"
|
|
@@ -329,56 +340,45 @@
|
|
|
329
340
|
},
|
|
330
341
|
"additionalProperties": false,
|
|
331
342
|
"required": [
|
|
343
|
+
"key",
|
|
332
344
|
"name",
|
|
333
|
-
"
|
|
334
|
-
"returnType",
|
|
335
|
-
"useLoader"
|
|
345
|
+
"value"
|
|
336
346
|
],
|
|
337
347
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
338
348
|
}
|
|
339
349
|
},
|
|
340
350
|
{
|
|
341
|
-
"card": "
|
|
351
|
+
"card": "SecureStorageCard",
|
|
342
352
|
"data": {
|
|
343
353
|
"type": "object",
|
|
344
354
|
"properties": {
|
|
345
355
|
"name": {
|
|
346
356
|
"type": "string"
|
|
347
357
|
},
|
|
348
|
-
"
|
|
358
|
+
"key": {
|
|
349
359
|
"type": "string"
|
|
350
360
|
},
|
|
351
|
-
"
|
|
352
|
-
"type": "object",
|
|
353
|
-
"additionalProperties": {}
|
|
354
|
-
}
|
|
355
|
-
},
|
|
356
|
-
"additionalProperties": false,
|
|
357
|
-
"required": [
|
|
358
|
-
"name",
|
|
359
|
-
"sx",
|
|
360
|
-
"url"
|
|
361
|
-
],
|
|
362
|
-
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
363
|
-
}
|
|
364
|
-
},
|
|
365
|
-
{
|
|
366
|
-
"card": "OneOfCard",
|
|
367
|
-
"data": {
|
|
368
|
-
"type": "object",
|
|
369
|
-
"properties": {
|
|
370
|
-
"name": {
|
|
361
|
+
"value": {
|
|
371
362
|
"type": "string"
|
|
372
363
|
},
|
|
373
|
-
"
|
|
374
|
-
"type": "
|
|
375
|
-
|
|
364
|
+
"useSocketioSupport": {
|
|
365
|
+
"type": "boolean"
|
|
366
|
+
},
|
|
367
|
+
"useCentrifugeSupport": {
|
|
368
|
+
"type": "boolean"
|
|
369
|
+
},
|
|
370
|
+
"useMittSupport": {
|
|
371
|
+
"type": "boolean"
|
|
372
|
+
},
|
|
373
|
+
"centrifugeChannel": {
|
|
374
|
+
"type": "string"
|
|
376
375
|
}
|
|
377
376
|
},
|
|
378
377
|
"additionalProperties": false,
|
|
379
378
|
"required": [
|
|
379
|
+
"key",
|
|
380
380
|
"name",
|
|
381
|
-
"
|
|
381
|
+
"value"
|
|
382
382
|
],
|
|
383
383
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
384
384
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"react";import{addons as U,types as I}from"storybook/manager-api";import"react";import{useEffect as Z,useMemo as $,useState as z}from"react";import{addons as K,useParameter as Y}from"storybook/manager-api";var q="piecard",J="piecard/fire";import{jsx as w,jsxs as R}from"react/jsx-runtime";var f=({children:i,style:n})=>w("pre",{style:{margin:0,padding:8,fontSize:11,background:"#f5f5f5",border:"1px solid #e0e0e0",borderRadius:4,overflow:"auto",...n??{}},children:i}),k=(i)=>{if(i.samplePayload!==void 0)try{return JSON.stringify(i.samplePayload,null,2)}catch{}let n=i.payloadSchema;if(!n||typeof n!=="object")return"{}";let g=n.properties??{};if(!Object.keys(g).length)return"{}";let C={};for(let[T,O]of Object.entries(g)){if(typeof O!=="object"||O===null)continue;let b=O.type;if(b==="string")C[T]="";else if(b==="number"||b==="integer")C[T]=0;else if(b==="boolean")C[T]=!1;else if(b==="array")C[T]=[];else if(b==="object")C[T]={};else C[T]=null}return JSON.stringify(C,null,2)},u=({card:i,method:n})=>{let g=$(()=>k(n),[n]),[C,T]=z(g),[O,b]=z(null),[B,W]=z(null),X=()=>{let S=void 0,G=C.trim();if(G.length>0)try{S=JSON.parse(G)}catch(H){b(H instanceof Error?H.message:"Invalid JSON payload");return}b(null),K.getChannel().emit(J,{card:i,method:n.name,payload:S}),W(Date.now())};return R("div",{style:{padding:12,borderBottom:"1px solid #eee",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'},children:[R("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:6},children:[R("code",{style:{fontSize:13,fontWeight:600},children:[i,".",n.name]}),w("button",{type:"button",onClick:X,style:{marginLeft:"auto",padding:"4px 10px",fontSize:12,background:"#1ea7fd",color:"white",border:"none",borderRadius:4,cursor:"pointer"},children:"Fire"})]}),n.payloadCode?R("details",{style:{marginBottom:6},children:[w("summary",{style:{fontSize:11,cursor:"pointer"},children:"Payload type"}),w(f,{children:n.payloadCode})]}):null,w("textarea",{value:C,onChange:(S)=>T(S.target.value),rows:Math.min(10,Math.max(2,C.split(`
|
|
2
|
+
`).length)),style:{width:"100%",fontFamily:"monospace",fontSize:12,padding:6,border:"1px solid #ddd",borderRadius:4,boxSizing:"border-box"}}),O?w("div",{style:{marginTop:4,color:"#c00",fontSize:11},children:O}):null,B?R("div",{style:{marginTop:4,color:"#666",fontSize:11},children:["Fired at ",new Date(B).toLocaleTimeString()]}):null]})},Q=({active:i})=>{let n=Y(q,null);if(Z(()=>{},[n]),!i)return null;if(!n||!n.card)return R("div",{style:{padding:16,fontSize:13,color:"#666"},children:[w("strong",{children:"No PieCard parameters on this story."}),R("p",{style:{marginTop:8},children:["Add"," ",R("code",{children:["parameters.",q," = ","{"," card, methods"," ","}"]})," ","to your story to surface method triggers here."]})]});let g=n.methods??[];if(g.length===0)return R("div",{style:{padding:16,fontSize:13,color:"#666"},children:["No methods declared for ",w("code",{children:n.card}),"."]});return w("div",{children:g.map((C)=>w(u,{card:n.card,method:C},C.name))})};var V="piecard",L=`${V}/panel`;U.register(V,()=>{U.add(L,{type:I.PANEL,title:"PieCard Methods",match:({viewMode:i})=>i==="story",render:({active:i})=>Q({active:i})})});
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var c=require("react"),S=require("storybook/manager-api");var k=require("react"),T=require("react"),z=require("storybook/manager-api");var B="piecard",Q="piecard/fire";var n=require("react/jsx-runtime"),Z=({children:C,style:i})=>n.jsx("pre",{style:{margin:0,padding:8,fontSize:11,background:"#f5f5f5",border:"1px solid #e0e0e0",borderRadius:4,overflow:"auto",...i??{}},children:C}),$=(C)=>{if(C.samplePayload!==void 0)try{return JSON.stringify(C.samplePayload,null,2)}catch{}let i=C.payloadSchema;if(!i||typeof i!=="object")return"{}";let g=i.properties??{};if(!Object.keys(g).length)return"{}";let w={};for(let[R,O]of Object.entries(g)){if(typeof O!=="object"||O===null)continue;let b=O.type;if(b==="string")w[R]="";else if(b==="number"||b==="integer")w[R]=0;else if(b==="boolean")w[R]=!1;else if(b==="array")w[R]=[];else if(b==="object")w[R]={};else w[R]=null}return JSON.stringify(w,null,2)},K=({card:C,method:i})=>{let g=T.useMemo(()=>$(i),[i]),[w,R]=T.useState(g),[O,b]=T.useState(null),[G,W]=T.useState(null),X=()=>{let q=void 0,H=w.trim();if(H.length>0)try{q=JSON.parse(H)}catch(J){b(J instanceof Error?J.message:"Invalid JSON payload");return}b(null),z.addons.getChannel().emit(Q,{card:C,method:i.name,payload:q}),W(Date.now())};return n.jsxs("div",{style:{padding:12,borderBottom:"1px solid #eee",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'},children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:6},children:[n.jsxs("code",{style:{fontSize:13,fontWeight:600},children:[C,".",i.name]}),n.jsx("button",{type:"button",onClick:X,style:{marginLeft:"auto",padding:"4px 10px",fontSize:12,background:"#1ea7fd",color:"white",border:"none",borderRadius:4,cursor:"pointer"},children:"Fire"})]}),i.payloadCode?n.jsxs("details",{style:{marginBottom:6},children:[n.jsx("summary",{style:{fontSize:11,cursor:"pointer"},children:"Payload type"}),n.jsx(Z,{children:i.payloadCode})]}):null,n.jsx("textarea",{value:w,onChange:(q)=>R(q.target.value),rows:Math.min(10,Math.max(2,w.split(`
|
|
2
|
+
`).length)),style:{width:"100%",fontFamily:"monospace",fontSize:12,padding:6,border:"1px solid #ddd",borderRadius:4,boxSizing:"border-box"}}),O?n.jsx("div",{style:{marginTop:4,color:"#c00",fontSize:11},children:O}):null,G?n.jsxs("div",{style:{marginTop:4,color:"#666",fontSize:11},children:["Fired at ",new Date(G).toLocaleTimeString()]}):null]})},U=({active:C})=>{let i=z.useParameter(B,null);if(T.useEffect(()=>{},[i]),!C)return null;if(!i||!i.card)return n.jsxs("div",{style:{padding:16,fontSize:13,color:"#666"},children:[n.jsx("strong",{children:"No PieCard parameters on this story."}),n.jsxs("p",{style:{marginTop:8},children:["Add"," ",n.jsxs("code",{children:["parameters.",B," = ","{"," card, methods"," ","}"]})," ","to your story to surface method triggers here."]})]});let g=i.methods??[];if(g.length===0)return n.jsxs("div",{style:{padding:16,fontSize:13,color:"#666"},children:["No methods declared for ",n.jsx("code",{children:i.card}),"."]});return n.jsx("div",{children:g.map((w)=>n.jsx(K,{card:i.card,method:w},w.name))})};var V="piecard",Y=`${V}/panel`;S.addons.register(V,()=>{S.addons.add(Y,{type:S.types.PANEL,title:"PieCard Methods",match:({viewMode:C})=>C==="story",render:({active:C})=>U({active:C})})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/telegram/components/CloudStorageCard/index.ts"],"names":[],"mappings":";AAGA,wBAIE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/telegram/components/CloudStorageCard/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAE3D,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IAEb,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,qBAAsB,SAAQ,uBAAuB,CAAC,oBAAoB,CAAC;CAAG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CloudStorageCardProps } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Persists `data.value` to Telegram `WebApp.CloudStorage` under `data.key` and
|
|
4
|
+
* mirrors it into a hidden input named `data.name`.
|
|
5
|
+
*
|
|
6
|
+
* Sending the value with an Ajax submit — two options:
|
|
7
|
+
* - **Direct:** add `'telegram:cloud:<key>'` to the Ajax card's `depsNames`.
|
|
8
|
+
* `readAjaxKeyAsync` reads it straight from CloudStorage (async) and submits
|
|
9
|
+
* it under the bare `<key>`.
|
|
10
|
+
* - **Via the hidden input:** add this card's `data.name` to `depsNames`; the
|
|
11
|
+
* value is read synchronously from the rendered hidden input by name.
|
|
12
|
+
*/
|
|
13
|
+
declare const CloudStorageCard: ({ data }: CloudStorageCardProps) => import("react").JSX.Element;
|
|
14
|
+
export default CloudStorageCard;
|
|
15
|
+
//# sourceMappingURL=CloudStorageCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CloudStorageCard.d.ts","sourceRoot":"","sources":["../../../../../src/telegram/components/CloudStorageCard/ui/CloudStorageCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAGhD;;;;;;;;;;GAUG;AACH,QAAA,MAAM,gBAAgB,GAAI,UAAU,qBAAqB,gCA6CxD,CAAA;AAED,eAAe,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/telegram/components/SecureStorageCard/index.ts"],"names":[],"mappings":";AAGA,wBAIE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/telegram/components/SecureStorageCard/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAE3D,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IAEb,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,sBAAuB,SAAQ,uBAAuB,CAAC,qBAAqB,CAAC;CAAG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SecureStorageCardProps } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Persists `data.value` to Telegram `WebApp.SecureStorage` under `data.key` and
|
|
4
|
+
* mirrors it into a hidden input named `data.name`.
|
|
5
|
+
*
|
|
6
|
+
* Sending the value with an Ajax submit — two options:
|
|
7
|
+
* - **Direct:** add `'telegram:secure:<key>'` to the Ajax card's `depsNames`.
|
|
8
|
+
* `readAjaxKeyAsync` reads it straight from SecureStorage (async) and submits
|
|
9
|
+
* it under the bare `<key>`.
|
|
10
|
+
* - **Via the hidden input:** add this card's `data.name` to `depsNames`; the
|
|
11
|
+
* value is read synchronously from the rendered hidden input by name.
|
|
12
|
+
*/
|
|
13
|
+
declare const SecureStorageCard: ({ data }: SecureStorageCardProps) => import("react").JSX.Element;
|
|
14
|
+
export default SecureStorageCard;
|
|
15
|
+
//# sourceMappingURL=SecureStorageCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecureStorageCard.d.ts","sourceRoot":"","sources":["../../../../../src/telegram/components/SecureStorageCard/ui/SecureStorageCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAGjD;;;;;;;;;;GAUG;AACH,QAAA,MAAM,iBAAiB,GAAI,UAAU,sBAAsB,gCA6C1D,CAAA;AAED,eAAe,iBAAiB,CAAA"}
|
package/dist/telegram/index.d.ts
CHANGED
|
@@ -8,5 +8,9 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export { default as PieTelegramRoot } from '../components/PieTelegramRoot';
|
|
10
10
|
export { useWebApp, useInitData } from '../util/useWebApp';
|
|
11
|
+
export { default as CloudStorageCard } from './components/CloudStorageCard';
|
|
12
|
+
export { default as SecureStorageCard } from './components/SecureStorageCard';
|
|
13
|
+
export type { CloudStorageCardData } from './components/CloudStorageCard/types';
|
|
14
|
+
export type { SecureStorageCardData } from './components/SecureStorageCard/types';
|
|
11
15
|
export type { WebApp, Telegram, InitData, InitDataUnsafe, WebAppUser, WebAppInitData, } from '../types';
|
|
12
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/telegram/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/telegram/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAI1D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAE7E,YAAY,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAC/E,YAAY,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAEjF,YAAY,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,UAAU,EACV,cAAc,GACjB,MAAM,UAAU,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useMemo as R}from"react";import{QueryClient as iU,QueryClientProvider as rU,useQuery as aU}from"@tanstack/react-query";import VU from"mitt";import{createContext as ZU,useCallback as NL,useContext as VL}from"react";var P=globalThis,N=(U,L)=>{let I=Symbol.for(U);if(!(I in P))P[I]=L();return P[I]};function v(){return N("@swarm.ing/pieui:mitt-emitter",()=>VU())}var BU=N("@swarm.ing/pieui:context:mitt",()=>ZU(null));var u=BU;import{io as FU}from"socket.io-client";import{createContext as XU}from"react";var c=N("@swarm.ing/pieui:socket-cache",()=>new Map),o=(U)=>{let L=c.get(U);if(L)return L;let I=FU(U,{autoConnect:!1,transports:["websocket"]});return c.set(U,I),I},YU=N("@swarm.ing/pieui:context:socket",()=>XU(null)),_=YU;import{createContext as DU}from"react";import{Centrifuge as h}from"centrifuge";var g=N("@swarm.ing/pieui:centrifuge-cache",()=>new Map),l=(U,L)=>{if(!L)return null;let I=`${U}::${L}`,J=g.get(I);if(J)return J;async function z(){let H=await fetch(U+"api/centrifuge/gen_token");if(!H.ok){if(H.status===403)throw new h.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${H.status}`)}return(await H.json()).token}let $=new h(L,{getToken:z});return g.set(I,$),$},GU=N("@swarm.ing/pieui:context:centrifuge",()=>DU(null)),q=GU;import{useContext as qU,useEffect as KU}from"react";import{useEffect as OU,useState as QU}from"react";var K=new Map,W=new Map;function E(U,L){let I=`${U}::${L}`,J=U?K.get(I):void 0,[z,$]=QU(J??null);return OU(()=>{if(!U)return;if(K.has(I)){$(K.get(I));return}let H=W.get(I);if(!H)H=fetch(U+`api/support/${L}`,{method:"GET"}).then((V)=>V.json()).then((V)=>{return K.set(I,V),W.delete(I),V}).catch((V)=>{throw W.delete(I),V}),W.set(I,H);let B=!1;return H.then((V)=>{if(!B)$(V)}).catch(()=>{}),()=>{B=!0}},[U,L,I]),z}import{createContext as RU,useContext as TU}from"react";var w=N("@swarm.ing/pieui:context:pieConfig",()=>RU(null)),M=()=>{let U=TU(w);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},y=()=>{let{apiServer:U}=M();return U},f=y,p=()=>{let{centrifugeServer:U}=M();return U};var X=()=>{let{enableRenderingLog:U}=M();return U};var n=()=>{let{pageProcessor:U}=M();return U};var _U=N("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function s(){_U.resolve?.()}var WU=({children:U})=>{let L=qU(_),I=f(),J=E(I,"socketIO"),z=($)=>{if(typeof window<"u")window.sid=$.sid,s(),console.log(`SocketIO initialized: ${window.sid}`)};return KU(()=>{if(!L)return;let $=()=>{console.log("SocketIO connected")},H=(B)=>{console.log(`SocketIO disconnected: ${B}`),L.connect()};if(J)L.on("pieinit",z),L.on("connect",$),L.on("disconnect",H),L.connect();return()=>{if(J)L.off("pieinit",z),L.off("connect",$),L.off("disconnect",H),L.disconnect()}},[L,J]),U},i=WU;import{useContext as EU,useEffect as MU}from"react";var fU=({children:U})=>{let L=EU(q),I=f(),J=E(I,"centrifuge");return MU(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},$=(H)=>{console.log("Centrifuge disconnected:",H)};if(J)L.on("connected",z),L.on("disconnected",$),L.connect();return()=>{if(J)L.disconnect()}},[L,J]),U},r=fU;import{createContext as AU}from"react";import{jsx as PU,Fragment as kU}from"react/jsx-runtime";var jU=N("@swarm.ing/pieui:context:fallback",()=>AU(PU(kU,{}))),Y=jU;import{createContext as wU}from"react";var yU=N("@swarm.ing/pieui:context:lazyError",()=>wU(void 0)),D=yU;var mU=N("@swarm.ing/pieui:component-registry",()=>new Map);var A=(U)=>{return mU.get(U)};import{useContext as a,memo as vU}from"react";import{Component as CU,Suspense as xU}from"react";import{jsx as SU}from"react/jsx-runtime";var bU=2,dU=400;class G extends CU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<bU){let L=dU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return SU(xU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as m}from"react/jsx-runtime";function uU({uiConfig:U,setUiAjaxConfiguration:L}){let I=a(Y),J=a(D),z=X();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let $=A(U.card);if(!$?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return I}if(z)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let H=$.component,B=m(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if($.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",$.name);return m(G,{name:$.name,fallback:$.fallback?m($.fallback,{}):I,onError:J,children:B})}if(z)console.log("[UI] Rendering component directly:",$.name);return B}var C=vU(uU);import{createAxiosDateTransformer as tU}from"axios-date-transformer";import{useEffect as cU,useState as oU}from"react";var j=({onError:U}={})=>{let[L,I]=oU(null),J=n();return cU(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp;if(!z)return;try{z.ready?.()}catch($){U?.()}if(J==="telegram_expanded"&&(z.platform==="ios"||z.platform==="android"))z.expand();I(z)},[]),L},hU=()=>{let U=j();return[U?.initDataUnsafe,U?.initData]};import{createContext as gU}from"react";var lU=N("@swarm.ing/pieui:context:navigate",()=>gU(void 0)),t=lU;import{useContext as UU}from"react";import{createContext as pU}from"react";var nU=N("@swarm.ing/pieui:context:uiRenderer",()=>pU(null)),e=nU;import{jsx as k}from"react/jsx-runtime";function LU({uiConfig:U,setUiAjaxConfiguration:L}){let I=UU(Y),J=UU(D),z=X();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let $=A(U.card);if(!$?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return I}if(z)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(z)console.log("[UILoading] Rendering fallback for:",$.name);let V=$.fallback;return k(V,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",$.name);let H=$.component,B=k(e.Provider,{value:LU,children:k(H,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if($.isLazy)return k(G,{name:$.name,fallback:I,onError:J,children:B});return B}var IU=LU;import{jsx as sU}from"react/jsx-runtime";function $U(U,L,I){if(!L)return I;let J=U.replace(/^\//,""),z=L[J];if(!z)return I;return sU(IU,{uiConfig:z})}import{jsx as Z,Fragment as LL}from"react/jsx-runtime";var eU=({location:U,fallback:L,piecache:I,onError:J,queryOptions:z,disableGlobalForm:$})=>{let H=y(),B=p(),V=X(),zU=R(()=>tU({baseURL:H}),[H]),HU=R(()=>v(),[]),JU=R(()=>H?o(H):null,[H]),NU=R(()=>H?l(H,B):null,[H,B]),T=j({onError:J}),{data:O,isLoading:x,error:F}=aU({queryKey:["uiConfig",U.pathname+U.search,T?.initData],enabled:!!T?.initData,queryFn:async()=>{let Q=new URLSearchParams(U.search);if(Q.set("__pieroot","telegram"),T?.initData)Q.set("initData",T.initData);let d="/api/content"+U.pathname+"?"+Q.toString();if(V)console.log("[PieRoot] Fetching UI configuration from:",d);let S=await zU.get(d,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(V)console.log("[PieRoot] Received UI configuration:",S.data);return S.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Q)=>Math.min(1000*2**Q,30000),...z}),b=$U(U.pathname,I,L);if(!H)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(F&&V)return console.error("[PieRoot] Error fetching UI configuration:",F),console.error("[PieRoot] Error details:",{message:F.message,status:F.response?.status,data:F.response?.data}),J?.(F),b;if(x||!O){if(V)console.log("[PieRoot] Loading state:",{isLoading:x,hasUiConfiguration:!!O});return b}if(V)console.log("[PieRoot] UI configuration loaded successfully:",O),console.log("[PieRoot] Rendering UI with configuration");return Z(u.Provider,{value:HU,children:Z(_.Provider,{value:JU,children:Z(q.Provider,{value:NU,children:Z(Y.Provider,{value:L??Z(LL,{}),children:Z(i,{children:Z(r,{children:$?Z(C,{uiConfig:O}):Z("form",{id:"piedata_global_form",action:H+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:Z(C,{uiConfig:O})})})})})})})})},UL=(U)=>{let L=R(()=>new iU,[]),I=U.queryClient??L;return Z(t.Provider,{value:U.onNavigate,children:Z(w.Provider,{value:U.config,children:Z(D.Provider,{value:U.onError,children:Z(rU,{client:I,children:Z(eU,{...U})})})})})},IL=UL;export{j as useWebApp,hU as useInitData,IL as PieTelegramRoot};
|
|
2
|
+
import{useMemo as w}from"react";import{QueryClient as F$,QueryClientProvider as G$,useQuery as Q$}from"@tanstack/react-query";import RU from"mitt";import{createContext as MU,useCallback as b$,useContext as v$}from"react";var h=globalThis,F=(U,$)=>{let H=Symbol.for(U);if(!(H in h))h[H]=$();return h[H]};function i(){return F("@swarm.ing/pieui:mitt-emitter",()=>RU())}var AU=F("@swarm.ing/pieui:context:mitt",()=>MU(null));var k=AU;import{io as EU}from"socket.io-client";import{createContext as NU}from"react";var r=F("@swarm.ing/pieui:socket-cache",()=>new Map),a=(U)=>{let $=r.get(U);if($)return $;let H=EU(U,{autoConnect:!1,transports:["websocket"]});return r.set(U,H),H},PU=F("@swarm.ing/pieui:context:socket",()=>NU(null)),M=PU;import{createContext as jU}from"react";import{Centrifuge as t}from"centrifuge";var e=F("@swarm.ing/pieui:centrifuge-cache",()=>new Map),UU=(U,$)=>{if(!$)return null;let H=`${U}::${$}`,B=e.get(H);if(B)return B;async function J(){let Z=await fetch(U+"api/centrifuge/gen_token");if(!Z.ok){if(Z.status===403)throw new t.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${Z.status}`)}return(await Z.json()).token}let I=new t($,{getToken:J});return e.set(H,I),I},wU=F("@swarm.ing/pieui:context:centrifuge",()=>jU(null)),A=wU;import{useContext as vU,useEffect as CU}from"react";import{useEffect as kU,useState as xU}from"react";var x=new Map,f=new Map;function y(U,$){let H=`${U}::${$}`,B=U?x.get(H):void 0,[J,I]=xU(B??null);return kU(()=>{if(!U)return;if(x.has(H)){I(x.get(H));return}let Z=f.get(H);if(!Z)Z=fetch(U+`api/support/${$}`,{method:"GET"}).then((Y)=>Y.json()).then((Y)=>{return x.set(H,Y),f.delete(H),Y}).catch((Y)=>{throw f.delete(H),Y}),f.set(H,Z);let D=!1;return Z.then((Y)=>{if(!D)I(Y)}).catch(()=>{}),()=>{D=!0}},[U,$,H]),J}import{createContext as fU,useContext as yU}from"react";var l=F("@swarm.ing/pieui:context:pieConfig",()=>fU(null)),b=()=>{let U=yU(l);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},p=()=>{let{apiServer:U}=b();return U},v=p,$U=()=>{let{centrifugeServer:U}=b();return U};var R=()=>{let{enableRenderingLog:U}=b();return U},HU=R,IU=()=>{let{pageProcessor:U}=b();return U};var bU=F("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function JU(){bU.resolve?.()}var SU=({children:U})=>{let $=vU(M),H=v(),B=y(H,"socketIO"),J=(I)=>{if(typeof window<"u")window.sid=I.sid,JU(),console.log(`SocketIO initialized: ${window.sid}`)};return CU(()=>{if(!$)return;let I=()=>{console.log("SocketIO connected")},Z=(D)=>{console.log(`SocketIO disconnected: ${D}`),$.connect()};if(B)$.on("pieinit",J),$.on("connect",I),$.on("disconnect",Z),$.connect();return()=>{if(B)$.off("pieinit",J),$.off("connect",I),$.off("disconnect",Z),$.disconnect()}},[$,B]),U},ZU=SU;import{useContext as mU,useEffect as gU}from"react";var cU=({children:U})=>{let $=mU(A),H=v(),B=y(H,"centrifuge");return gU(()=>{if(!$)return;let J=()=>{console.log("Centrifuge connected")},I=(Z)=>{console.log("Centrifuge disconnected:",Z)};if(B)$.on("connected",J),$.on("disconnected",I),$.connect();return()=>{if(B)$.disconnect()}},[$,B]),U},BU=cU;import{createContext as hU}from"react";import{jsx as dU,Fragment as pU}from"react/jsx-runtime";var lU=F("@swarm.ing/pieui:context:fallback",()=>hU(dU(pU,{}))),E=lU;import{createContext as uU}from"react";var oU=F("@swarm.ing/pieui:context:lazyError",()=>uU(void 0)),N=oU;import{lazy as nU}from"react";var j=new Map;function sU(U,$){return $.catch(()=>{if(j.get(U)===$)j.delete(U)}),j.set(U,$),$}function XU(U,$){return nU(()=>{if(j.has($))return j.get($);return sU($,U().then((H)=>H))})}var YU=F("@swarm.ing/pieui:component-registry",()=>new Map),iU=(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=XU($.loader,U.name),$.isLazy=!0;return $};function C(U){let $=iU(U);return YU.set($.name,$),$.component}var S=(U)=>{return YU.get(U)};import{useContext as zU,memo as $$}from"react";import{Component as rU,Suspense as aU}from"react";import{jsx as U$}from"react/jsx-runtime";var tU=2,eU=400;class P extends rU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<tU){let $=eU*(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 U$(aU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as d}from"react/jsx-runtime";function H$({uiConfig:U,setUiAjaxConfiguration:$}){let H=zU(E),B=zU(N),J=R();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:",!!$);let I=S(U.card);if(!I?.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:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let Z=I.component,D=d(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:$});if(I.isLazy){if(J)console.log("[UI] Rendering lazy component with Suspense:",I.name);return d(P,{name:I.name,fallback:I.fallback?d(I.fallback,{}):H,onError:B,children:D})}if(J)console.log("[UI] Rendering component directly:",I.name);return D}var u=$$(H$);import{createAxiosDateTransformer as T$}from"axios-date-transformer";import{useEffect as I$,useState as J$}from"react";var m=({onError:U}={})=>{let[$,H]=J$(null),B=IU();return I$(()=>{if(typeof window>"u")return;let J=window.Telegram?.WebApp;if(!J)return;try{J.ready?.()}catch(I){U?.()}if(B==="telegram_expanded"&&(J.platform==="ios"||J.platform==="android"))J.expand();H(J)},[]),$},Z$=()=>{let U=m();return[U?.initDataUnsafe,U?.initData]};import{createContext as B$}from"react";var X$=F("@swarm.ing/pieui:context:navigate",()=>B$(void 0)),DU=X$;import{useContext as GU}from"react";import{createContext as Y$}from"react";var z$=F("@swarm.ing/pieui:context:uiRenderer",()=>Y$(null)),FU=z$;import{jsx as g}from"react/jsx-runtime";function QU({uiConfig:U,setUiAjaxConfiguration:$}){let H=GU(E),B=GU(N),J=R();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:",!!$);let I=S(U.card);if(!I?.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:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(J)console.log("[UILoading] Rendering fallback for:",I.name);let Y=I.fallback;return g(Y,{})}if(J)console.log("[UILoading] No fallback, rendering full component:",I.name);let Z=I.component,D=g(FU.Provider,{value:QU,children:g(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:$})});if(I.isLazy)return g(P,{name:I.name,fallback:H,onError:B,children:D});return D}var TU=QU;import{jsx as D$}from"react/jsx-runtime";function qU(U,$,H){if(!$)return H;let B=U.replace(/^\//,""),J=$[B];if(!J)return H;return D$(TU,{uiConfig:J})}import{jsx as q,Fragment as K$}from"react/jsx-runtime";var q$=({location:U,fallback:$,piecache:H,onError:B,queryOptions:J,disableGlobalForm:I})=>{let Z=p(),D=$U(),Y=R(),G=w(()=>T$({baseURL:Z}),[Z]),X=w(()=>i(),[]),W=w(()=>Z?a(Z):null,[Z]),V=w(()=>Z?UU(Z,D):null,[Z,D]),L=m({onError:B}),{data:K,isLoading:O,error:z}=Q$({queryKey:["uiConfig",U.pathname+U.search,L?.initData],enabled:!!L?.initData,queryFn:async()=>{let T=new URLSearchParams(U.search);if(T.set("__pieroot","telegram"),L?.initData)T.set("initData",L.initData);let _="/api/content"+U.pathname+"?"+T.toString();if(Y)console.log("[PieRoot] Fetching UI configuration from:",_);let s=await G.get(_,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(Y)console.log("[PieRoot] Received UI configuration:",s.data);return s.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(T)=>Math.min(1000*2**T,30000),...J}),Q=qU(U.pathname,H,$);if(!Z)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(z&&Y)return console.error("[PieRoot] Error fetching UI configuration:",z),console.error("[PieRoot] Error details:",{message:z.message,status:z.response?.status,data:z.response?.data}),B?.(z),Q;if(O||!K){if(Y)console.log("[PieRoot] Loading state:",{isLoading:O,hasUiConfiguration:!!K});return Q}if(Y)console.log("[PieRoot] UI configuration loaded successfully:",K),console.log("[PieRoot] Rendering UI with configuration");return q(k.Provider,{value:X,children:q(M.Provider,{value:W,children:q(A.Provider,{value:V,children:q(E.Provider,{value:$??q(K$,{}),children:q(ZU,{children:q(BU,{children:I?q(u,{uiConfig:K}):q("form",{id:"piedata_global_form",action:Z+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:q(u,{uiConfig:K})})})})})})})})},L$=(U)=>{let $=w(()=>new F$,[]),H=U.queryClient??$;return q(DU.Provider,{value:U.onNavigate,children:q(l.Provider,{value:U.config,children:q(N.Provider,{value:U.onError,children:q(G$,{client:H,children:q(q$,{...U})})})})})},O$=L$;import{useEffect as LU,useState as A$}from"react";import{useContext as o,useEffect as n,useRef as _$}from"react";import{jsx as R$,jsxs as M$,Fragment as V$}from"react/jsx-runtime";var W$=({card:U,data:$,children:H,useSocketioSupport:B=!1,useCentrifugeSupport:J=!1,useMittSupport:I=!1,centrifugeChannel:Z=void 0,methods:D=void 0,stored:Y=void 0})=>{let G=HU(),X=_$(D);if(X.current=D,G)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",$),console.log("[PieCard] Component name:",$?.name),console.log("[PieCard] Real-time support:",{socketio:B,centrifuge:J,mitt:I,centrifugeChannel:Z}),console.log("[PieCard] Methods:",D?Object.keys(D):"none"),console.log("[PieCard] Has children:",!!H);let W=o(M),V=o(A),L=o(k);if(n(()=>{if(!W||!B||!X.current||!$.name){if(G&&B)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!W,useSocketioSupport:B,hasMethods:!!X.current,hasDataName:!!$?.name});return}let O=Object.keys(X.current??{}).map((z)=>{let Q=`pie${z}_${$.name}`;if(G)console.log(`[PieCard] Socket.IO registering event: ${Q}`);let T=(_)=>{X.current?.[z]?.(_)};return W.on(Q,T),[Q,T]});return()=>{O.forEach(([z,Q])=>{if(G)console.log(`[PieCard] Socket.IO unregistering event: ${z}`);W.off(z,Q)})}},[W,$.name,B]),n(()=>{if(!V||!J||!Z||!$.name){if(G&&J)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!V,useCentrifugeSupport:J,hasCentrifugeChannel:!!Z,hasMethods:!!X.current,hasDataName:!!$?.name});return}let O=Object.keys(X.current??{}).map((z)=>{let Q=`pie${z}_${$.name}_${Z}`;if(G)console.log(`[PieCard] Centrifuge subscribing to channel: ${Q}`);let T=V.newSubscription(Q);return T.on("publication",(_)=>{if(G)console.log(`[PieCard] Centrifuge received data on ${Q}:`,_.data);X.current?.[z]?.(_.data)}),T.subscribe(),T});return()=>{O.forEach((z)=>{if(G)console.log("[PieCard] Centrifuge unsubscribing from channel");z.unsubscribe(),V.removeSubscription(z)})}},[V,Z,$.name,J]),n(()=>{if(!L||!I||!$.name){if(G&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!L,useMittSupport:I,hasMethods:!!X.current,hasDataName:!!$?.name});return}let K=Object.keys(X.current??{}),O={};return K.forEach((z)=>{let Q=`pie${z}_${$.name}`,T=(_)=>{if(G)console.log(`[PieCard] Mitt registering event: ${Q}`);X.current?.[z]?.(_)};O[Q]=T,L.on(Q,T)}),()=>{Object.entries(O).forEach(([z,Q])=>{if(G)console.log(`[PieCard] Mitt unregistering event: ${z}`);L.off(z,Q)})}},[L,$.name,I]),G)console.log("[PieCard] Rendering complete, returning children");if(Y!==void 0)return M$(V$,{children:[R$("input",{type:"hidden",name:$.name,value:JSON.stringify(Y)}),H]});return H},c=W$;import{jsx as KU}from"react/jsx-runtime";var E$=({data:U})=>{let{name:$,key:H,value:B,useSocketioSupport:J,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:D}=U,[Y,G]=A$(B);return LU(()=>{G(B)},[B]),LU(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.CloudStorage;if(!X)return;X.setItem(H,Y)},[H,Y]),KU(c,{card:"CloudStorageCard",data:U,useSocketioSupport:J,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:D,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.CloudStorage;if(X)X.removeItem(H);G("")}},children:KU("input",{type:"hidden",id:$,name:$,value:Y})})},OU=E$;var N$=C({name:"CloudStorageCard",component:OU,metadata:{author:"PieData"}});import{useEffect as _U,useState as P$}from"react";import{jsx as WU}from"react/jsx-runtime";var j$=({data:U})=>{let{name:$,key:H,value:B,useSocketioSupport:J,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:D}=U,[Y,G]=P$(B);return _U(()=>{G(B)},[B]),_U(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.SecureStorage;if(!X)return;X.setItem(H,Y)},[H,Y]),WU(c,{card:"SecureStorageCard",data:U,useSocketioSupport:J,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:D,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.SecureStorage;if(X)X.removeItem(H);G("")}},children:WU("input",{type:"hidden",id:$,name:$,value:Y})})},VU=j$;var w$=C({name:"SecureStorageCard",component:VU,metadata:{author:"PieData"}});export{m as useWebApp,Z$ as useInitData,w$ as SecureStorageCard,O$ as PieTelegramRoot,N$ as CloudStorageCard};
|
package/dist/telegram/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var CU=Object.create;var{getPrototypeOf:xU,defineProperty:_,getOwnPropertyNames:e,getOwnPropertyDescriptor:bU}=Object,UU=Object.prototype.hasOwnProperty;var dU=(U,L,I)=>{I=U!=null?CU(xU(U)):{};let H=L||!U||!U.__esModule?_(I,"default",{value:U,enumerable:!0}):I;for(let z of e(U))if(!UU.call(H,z))_(H,z,{get:()=>U[z],enumerable:!0});return H},t=new WeakMap,SU=(U)=>{var L=t.get(U),I;if(L)return L;if(L=_({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")e(U).map((H)=>!UU.call(L,H)&&_(L,H,{get:()=>U[H],enumerable:!(I=bU(U,H))||I.enumerable}));return t.set(U,L),L};var vU=(U,L)=>{for(var I in L)_(U,I,{get:L[I],enumerable:!0,configurable:!0,set:(H)=>L[I]=()=>H})};var IL={};vU(IL,{useWebApp:()=>K,useInitData:()=>TU,PieTelegramRoot:()=>kU});module.exports=SU(IL);var O=require("react"),Q=require("@tanstack/react-query");var LU=dU(require("mitt")),M=require("react");var o=globalThis,N=(U,L)=>{let I=Symbol.for(U);if(!(I in o))o[I]=L();return o[I]};function IU(){return N("@swarm.ing/pieui:mitt-emitter",()=>LU.default())}var uU=N("@swarm.ing/pieui:context:mitt",()=>M.createContext(null));var $U=uU;var HU=require("socket.io-client"),JU=require("react");var zU=N("@swarm.ing/pieui:socket-cache",()=>new Map),NU=(U)=>{let L=zU.get(U);if(L)return L;let I=HU.io(U,{autoConnect:!1,transports:["websocket"]});return zU.set(U,I),I},cU=N("@swarm.ing/pieui:context:socket",()=>JU.createContext(null)),f=cU;var ZU=require("react"),h=require("centrifuge");var VU=N("@swarm.ing/pieui:centrifuge-cache",()=>new Map),BU=(U,L)=>{if(!L)return null;let I=`${U}::${L}`,H=VU.get(I);if(H)return H;async function z(){let J=await fetch(U+"api/centrifuge/gen_token");if(!J.ok){if(J.status===403)throw new h.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let $=new h.Centrifuge(L,{getToken:z});return VU.set(I,$),$},oU=N("@swarm.ing/pieui:context:centrifuge",()=>ZU.createContext(null)),A=oU;var x=require("react");var P=require("react"),j=new Map,k=new Map;function w(U,L){let I=`${U}::${L}`,H=U?j.get(I):void 0,[z,$]=P.useState(H??null);return P.useEffect(()=>{if(!U)return;if(j.has(I)){$(j.get(I));return}let J=k.get(I);if(!J)J=fetch(U+`api/support/${L}`,{method:"GET"}).then((Z)=>Z.json()).then((Z)=>{return j.set(I,Z),k.delete(I),Z}).catch((Z)=>{throw k.delete(I),Z}),k.set(I,J);let B=!1;return J.then((Z)=>{if(!B)$(Z)}).catch(()=>{}),()=>{B=!0}},[U,L,I]),z}var y=require("react");var g=N("@swarm.ing/pieui:context:pieConfig",()=>y.createContext(null)),m=()=>{let U=y.useContext(g);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},l=()=>{let{apiServer:U}=m();return U},C=l,FU=()=>{let{centrifugeServer:U}=m();return U};var X=()=>{let{enableRenderingLog:U}=m();return U};var XU=()=>{let{pageProcessor:U}=m();return U};var hU=N("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function YU(){hU.resolve?.()}var gU=({children:U})=>{let L=x.useContext(f),I=C(),H=w(I,"socketIO"),z=($)=>{if(typeof window<"u")window.sid=$.sid,YU(),console.log(`SocketIO initialized: ${window.sid}`)};return x.useEffect(()=>{if(!L)return;let $=()=>{console.log("SocketIO connected")},J=(B)=>{console.log(`SocketIO disconnected: ${B}`),L.connect()};if(H)L.on("pieinit",z),L.on("connect",$),L.on("disconnect",J),L.connect();return()=>{if(H)L.off("pieinit",z),L.off("connect",$),L.off("disconnect",J),L.disconnect()}},[L,H]),U},DU=gU;var b=require("react");var lU=({children:U})=>{let L=b.useContext(A),I=C(),H=w(I,"centrifuge");return b.useEffect(()=>{if(!L)return;let z=()=>{console.log("Centrifuge connected")},$=(J)=>{console.log("Centrifuge disconnected:",J)};if(H)L.on("connected",z),L.on("disconnected",$),L.connect();return()=>{if(H)L.disconnect()}},[L,H]),U},GU=lU;var OU=require("react");var d=require("react/jsx-runtime"),pU=N("@swarm.ing/pieui:context:fallback",()=>OU.createContext(d.jsx(d.Fragment,{}))),Y=pU;var QU=require("react");var nU=N("@swarm.ing/pieui:context:lazyError",()=>QU.createContext(void 0)),D=nU;var sU=N("@swarm.ing/pieui:component-registry",()=>new Map);var S=(U)=>{return sU.get(U)};var q=require("react");var v=require("react"),RU=require("react/jsx-runtime"),iU=2,rU=400;class G extends v.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<iU){let L=rU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((I)=>({failed:!1,attempt:I.attempt+1}))},L)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return RU.jsx(v.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var u=require("react/jsx-runtime");function aU({uiConfig:U,setUiAjaxConfiguration:L}){let I=q.useContext(Y),H=q.useContext(D),z=X();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!L);let $=S(U.card);if(!$?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return I}if(z)console.log("[UI] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata});let J=$.component,B=u.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L});if($.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",$.name);return u.jsx(G,{name:$.name,fallback:$.fallback?u.jsx($.fallback,{}):I,onError:H,children:B})}if(z)console.log("[UI] Rendering component directly:",$.name);return B}var p=q.memo(aU);var jU=require("axios-date-transformer");var c=require("react");var K=({onError:U}={})=>{let[L,I]=c.useState(null),H=XU();return c.useEffect(()=>{if(typeof window>"u")return;let z=window.Telegram?.WebApp;if(!z)return;try{z.ready?.()}catch($){U?.()}if(H==="telegram_expanded"&&(z.platform==="ios"||z.platform==="android"))z.expand();I(z)},[]),L},TU=()=>{let U=K();return[U?.initDataUnsafe,U?.initData]};var _U=require("react");var tU=N("@swarm.ing/pieui:context:navigate",()=>_U.createContext(void 0)),qU=tU;var n=require("react");var KU=require("react");var eU=N("@swarm.ing/pieui:context:uiRenderer",()=>KU.createContext(null)),WU=eU;var W=require("react/jsx-runtime");function EU({uiConfig:U,setUiAjaxConfiguration:L}){let I=n.useContext(Y),H=n.useContext(D),z=X();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!L);let $=S(U.card);if(!$?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return I}if(z)console.log("[UILoading] Found component in registry:",{name:$.name,isLazy:$.isLazy,hasMetadata:!!$.metadata,hasFallback:!!$.fallback});if($.fallback){if(z)console.log("[UILoading] Rendering fallback for:",$.name);let Z=$.fallback;return W.jsx(Z,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",$.name);let J=$.component,B=W.jsx(WU.Provider,{value:EU,children:W.jsx(J,{data:U.data,content:U.content,setUiAjaxConfiguration:L})});if($.isLazy)return W.jsx(G,{name:$.name,fallback:I,onError:H,children:B});return B}var MU=EU;var AU=require("react/jsx-runtime");function fU(U,L,I){if(!L)return I;let H=U.replace(/^\//,""),z=L[H];if(!z)return I;return AU.jsx(MU,{uiConfig:z})}var V=require("react/jsx-runtime"),UL=({location:U,fallback:L,piecache:I,onError:H,queryOptions:z,disableGlobalForm:$})=>{let J=l(),B=FU(),Z=X(),PU=O.useMemo(()=>jU.createAxiosDateTransformer({baseURL:J}),[J]),wU=O.useMemo(()=>IU(),[]),yU=O.useMemo(()=>J?NU(J):null,[J]),mU=O.useMemo(()=>J?BU(J,B):null,[J,B]),E=K({onError:H}),{data:R,isLoading:s,error:F}=Q.useQuery({queryKey:["uiConfig",U.pathname+U.search,E?.initData],enabled:!!E?.initData,queryFn:async()=>{let T=new URLSearchParams(U.search);if(T.set("__pieroot","telegram"),E?.initData)T.set("initData",E.initData);let r="/api/content"+U.pathname+"?"+T.toString();if(Z)console.log("[PieRoot] Fetching UI configuration from:",r);let a=await PU.get(r,{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:",a.data);return a.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(T)=>Math.min(1000*2**T,30000),...z}),i=fU(U.pathname,I,L);if(!J)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(F&&Z)return console.error("[PieRoot] Error fetching UI configuration:",F),console.error("[PieRoot] Error details:",{message:F.message,status:F.response?.status,data:F.response?.data}),H?.(F),i;if(s||!R){if(Z)console.log("[PieRoot] Loading state:",{isLoading:s,hasUiConfiguration:!!R});return i}if(Z)console.log("[PieRoot] UI configuration loaded successfully:",R),console.log("[PieRoot] Rendering UI with configuration");return V.jsx($U.Provider,{value:wU,children:V.jsx(f.Provider,{value:yU,children:V.jsx(A.Provider,{value:mU,children:V.jsx(Y.Provider,{value:L??V.jsx(V.Fragment,{}),children:V.jsx(DU,{children:V.jsx(GU,{children:$?V.jsx(p,{uiConfig:R}):V.jsx("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:V.jsx(p,{uiConfig:R})})})})})})})})},LL=(U)=>{let L=O.useMemo(()=>new Q.QueryClient,[]),I=U.queryClient??L;return V.jsx(qU.Provider,{value:U.onNavigate,children:V.jsx(g.Provider,{value:U.config,children:V.jsx(D.Provider,{value:U.onError,children:V.jsx(Q.QueryClientProvider,{client:I,children:V.jsx(UL,{...U})})})})})},kU=LL;
|
|
2
|
+
var aU=Object.create;var{getPrototypeOf:tU,defineProperty:f,getOwnPropertyNames:QU,getOwnPropertyDescriptor:eU}=Object,TU=Object.prototype.hasOwnProperty;var U$=(U,$,H)=>{H=U!=null?aU(tU(U)):{};let J=$||!U||!U.__esModule?f(H,"default",{value:U,enumerable:!0}):H;for(let Z of QU(U))if(!TU.call(J,Z))f(J,Z,{get:()=>U[Z],enumerable:!0});return J},GU=new WeakMap,$$=(U)=>{var $=GU.get(U),H;if($)return $;if($=f({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")QU(U).map((J)=>!TU.call($,J)&&f($,J,{get:()=>U[J],enumerable:!(H=eU(U,J))||H.enumerable}));return GU.set(U,$),$};var H$=(U,$)=>{for(var H in $)f(U,H,{get:$[H],enumerable:!0,configurable:!0,set:(J)=>$[H]=()=>J})};var M$={};H$(M$,{useWebApp:()=>v,useInitData:()=>CU,SecureStorageCard:()=>rU,PieTelegramRoot:()=>oU,CloudStorageCard:()=>sU});module.exports=$$(M$);var w=require("react"),k=require("@tanstack/react-query");var qU=U$(require("mitt")),g=require("react");var IU=globalThis,F=(U,$)=>{let H=Symbol.for(U);if(!(H in IU))IU[H]=$();return IU[H]};function LU(){return F("@swarm.ing/pieui:mitt-emitter",()=>qU.default())}var I$=F("@swarm.ing/pieui:context:mitt",()=>g.createContext(null));var c=I$;var OU=require("socket.io-client"),_U=require("react");var KU=F("@swarm.ing/pieui:socket-cache",()=>new Map),WU=(U)=>{let $=KU.get(U);if($)return $;let H=OU.io(U,{autoConnect:!1,transports:["websocket"]});return KU.set(U,H),H},J$=F("@swarm.ing/pieui:context:socket",()=>_U.createContext(null)),A=J$;var RU=require("react"),JU=require("centrifuge");var VU=F("@swarm.ing/pieui:centrifuge-cache",()=>new Map),MU=(U,$)=>{if(!$)return null;let H=`${U}::${$}`,J=VU.get(H);if(J)return J;async function Z(){let B=await fetch(U+"api/centrifuge/gen_token");if(!B.ok){if(B.status===403)throw new JU.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${B.status}`)}return(await B.json()).token}let I=new JU.Centrifuge($,{getToken:Z});return VU.set(H,I),I},Z$=F("@swarm.ing/pieui:context:centrifuge",()=>RU.createContext(null)),E=Z$;var s=require("react");var p=require("react"),h=new Map,l=new Map;function d(U,$){let H=`${U}::${$}`,J=U?h.get(H):void 0,[Z,I]=p.useState(J??null);return p.useEffect(()=>{if(!U)return;if(h.has(H)){I(h.get(H));return}let B=l.get(H);if(!B)B=fetch(U+`api/support/${$}`,{method:"GET"}).then((Y)=>Y.json()).then((Y)=>{return h.set(H,Y),l.delete(H),Y}).catch((Y)=>{throw l.delete(H),Y}),l.set(H,B);let D=!1;return B.then((Y)=>{if(!D)I(Y)}).catch(()=>{}),()=>{D=!0}},[U,$,H]),Z}var u=require("react");var ZU=F("@swarm.ing/pieui:context:pieConfig",()=>u.createContext(null)),o=()=>{let U=u.useContext(ZU);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},BU=()=>{let{apiServer:U}=o();return U},n=BU,AU=()=>{let{centrifugeServer:U}=o();return U};var M=()=>{let{enableRenderingLog:U}=o();return U},EU=M,NU=()=>{let{pageProcessor:U}=o();return U};var B$=F("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function PU(){B$.resolve?.()}var X$=({children:U})=>{let $=s.useContext(A),H=n(),J=d(H,"socketIO"),Z=(I)=>{if(typeof window<"u")window.sid=I.sid,PU(),console.log(`SocketIO initialized: ${window.sid}`)};return s.useEffect(()=>{if(!$)return;let I=()=>{console.log("SocketIO connected")},B=(D)=>{console.log(`SocketIO disconnected: ${D}`),$.connect()};if(J)$.on("pieinit",Z),$.on("connect",I),$.on("disconnect",B),$.connect();return()=>{if(J)$.off("pieinit",Z),$.off("connect",I),$.off("disconnect",B),$.disconnect()}},[$,J]),U},jU=X$;var i=require("react");var Y$=({children:U})=>{let $=i.useContext(E),H=n(),J=d(H,"centrifuge");return i.useEffect(()=>{if(!$)return;let Z=()=>{console.log("Centrifuge connected")},I=(B)=>{console.log("Centrifuge disconnected:",B)};if(J)$.on("connected",Z),$.on("disconnected",I),$.connect();return()=>{if(J)$.disconnect()}},[$,J]),U},wU=Y$;var kU=require("react");var r=require("react/jsx-runtime"),z$=F("@swarm.ing/pieui:context:fallback",()=>kU.createContext(r.jsx(r.Fragment,{}))),N=z$;var xU=require("react");var D$=F("@swarm.ing/pieui:context:lazyError",()=>xU.createContext(void 0)),P=D$;var fU=require("react"),y=new Map;function F$(U,$){return $.catch(()=>{if(y.get(U)===$)y.delete(U)}),y.set(U,$),$}function yU(U,$){return fU.lazy(()=>{if(y.has($))return y.get($);return F$($,U().then((H)=>H))})}var bU=F("@swarm.ing/pieui:component-registry",()=>new Map),G$=(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=yU($.loader,U.name),$.isLazy=!0;return $};function a(U){let $=G$(U);return bU.set($.name,$),$.component}var t=(U)=>{return bU.get(U)};var b=require("react");var e=require("react"),vU=require("react/jsx-runtime"),Q$=2,T$=400;class j extends e.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<Q$){let $=T$*(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 vU.jsx(e.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var UU=require("react/jsx-runtime");function q$({uiConfig:U,setUiAjaxConfiguration:$}){let H=b.useContext(N),J=b.useContext(P),Z=M();if(Z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!$);let I=t(U.card);if(!I?.component){if(Z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return H}if(Z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let B=I.component,D=UU.jsx(B,{data:U.data,content:U.content,setUiAjaxConfiguration:$});if(I.isLazy){if(Z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return UU.jsx(j,{name:I.name,fallback:I.fallback?UU.jsx(I.fallback,{}):H,onError:J,children:D})}if(Z)console.log("[UI] Rendering component directly:",I.name);return D}var XU=b.memo(q$);var uU=require("axios-date-transformer");var $U=require("react");var v=({onError:U}={})=>{let[$,H]=$U.useState(null),J=NU();return $U.useEffect(()=>{if(typeof window>"u")return;let Z=window.Telegram?.WebApp;if(!Z)return;try{Z.ready?.()}catch(I){U?.()}if(J==="telegram_expanded"&&(Z.platform==="ios"||Z.platform==="android"))Z.expand();H(Z)},[]),$},CU=()=>{let U=v();return[U?.initDataUnsafe,U?.initData]};var SU=require("react");var L$=F("@swarm.ing/pieui:context:navigate",()=>SU.createContext(void 0)),mU=L$;var YU=require("react");var gU=require("react");var K$=F("@swarm.ing/pieui:context:uiRenderer",()=>gU.createContext(null)),cU=K$;var C=require("react/jsx-runtime");function hU({uiConfig:U,setUiAjaxConfiguration:$}){let H=YU.useContext(N),J=YU.useContext(P),Z=M();if(Z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!$);let I=t(U.card);if(!I?.component){if(Z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return H}if(Z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(Z)console.log("[UILoading] Rendering fallback for:",I.name);let Y=I.fallback;return C.jsx(Y,{})}if(Z)console.log("[UILoading] No fallback, rendering full component:",I.name);let B=I.component,D=C.jsx(cU.Provider,{value:hU,children:C.jsx(B,{data:U.data,content:U.content,setUiAjaxConfiguration:$})});if(I.isLazy)return C.jsx(j,{name:I.name,fallback:H,onError:J,children:D});return D}var lU=hU;var dU=require("react/jsx-runtime");function pU(U,$,H){if(!$)return H;let J=U.replace(/^\//,""),Z=$[J];if(!Z)return H;return dU.jsx(lU,{uiConfig:Z})}var T=require("react/jsx-runtime"),O$=({location:U,fallback:$,piecache:H,onError:J,queryOptions:Z,disableGlobalForm:I})=>{let B=BU(),D=AU(),Y=M(),G=w.useMemo(()=>uU.createAxiosDateTransformer({baseURL:B}),[B]),X=w.useMemo(()=>LU(),[]),V=w.useMemo(()=>B?WU(B):null,[B]),R=w.useMemo(()=>B?MU(B,D):null,[B,D]),L=v({onError:J}),{data:O,isLoading:_,error:z}=k.useQuery({queryKey:["uiConfig",U.pathname+U.search,L?.initData],enabled:!!L?.initData,queryFn:async()=>{let q=new URLSearchParams(U.search);if(q.set("__pieroot","telegram"),L?.initData)q.set("initData",L.initData);let W="/api/content"+U.pathname+"?"+q.toString();if(Y)console.log("[PieRoot] Fetching UI configuration from:",W);let FU=await G.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(Y)console.log("[PieRoot] Received UI configuration:",FU.data);return FU.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(q)=>Math.min(1000*2**q,30000),...Z}),Q=pU(U.pathname,H,$);if(!B)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(z&&Y)return console.error("[PieRoot] Error fetching UI configuration:",z),console.error("[PieRoot] Error details:",{message:z.message,status:z.response?.status,data:z.response?.data}),J?.(z),Q;if(_||!O){if(Y)console.log("[PieRoot] Loading state:",{isLoading:_,hasUiConfiguration:!!O});return Q}if(Y)console.log("[PieRoot] UI configuration loaded successfully:",O),console.log("[PieRoot] Rendering UI with configuration");return T.jsx(c.Provider,{value:X,children:T.jsx(A.Provider,{value:V,children:T.jsx(E.Provider,{value:R,children:T.jsx(N.Provider,{value:$??T.jsx(T.Fragment,{}),children:T.jsx(jU,{children:T.jsx(wU,{children:I?T.jsx(XU,{uiConfig:O}):T.jsx("form",{id:"piedata_global_form",action:B+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:T.jsx(XU,{uiConfig:O})})})})})})})})},_$=(U)=>{let $=w.useMemo(()=>new k.QueryClient,[]),H=U.queryClient??$;return T.jsx(mU.Provider,{value:U.onNavigate,children:T.jsx(ZU.Provider,{value:U.config,children:T.jsx(P.Provider,{value:U.onError,children:T.jsx(k.QueryClientProvider,{client:H,children:T.jsx(O$,{...U})})})})})},oU=_$;var S=require("react");var K=require("react");var x=require("react/jsx-runtime"),W$=({card:U,data:$,children:H,useSocketioSupport:J=!1,useCentrifugeSupport:Z=!1,useMittSupport:I=!1,centrifugeChannel:B=void 0,methods:D=void 0,stored:Y=void 0})=>{let G=EU(),X=K.useRef(D);if(X.current=D,G)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",$),console.log("[PieCard] Component name:",$?.name),console.log("[PieCard] Real-time support:",{socketio:J,centrifuge:Z,mitt:I,centrifugeChannel:B}),console.log("[PieCard] Methods:",D?Object.keys(D):"none"),console.log("[PieCard] Has children:",!!H);let V=K.useContext(A),R=K.useContext(E),L=K.useContext(c);if(K.useEffect(()=>{if(!V||!J||!X.current||!$.name){if(G&&J)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!V,useSocketioSupport:J,hasMethods:!!X.current,hasDataName:!!$?.name});return}let _=Object.keys(X.current??{}).map((z)=>{let Q=`pie${z}_${$.name}`;if(G)console.log(`[PieCard] Socket.IO registering event: ${Q}`);let q=(W)=>{X.current?.[z]?.(W)};return V.on(Q,q),[Q,q]});return()=>{_.forEach(([z,Q])=>{if(G)console.log(`[PieCard] Socket.IO unregistering event: ${z}`);V.off(z,Q)})}},[V,$.name,J]),K.useEffect(()=>{if(!R||!Z||!B||!$.name){if(G&&Z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!R,useCentrifugeSupport:Z,hasCentrifugeChannel:!!B,hasMethods:!!X.current,hasDataName:!!$?.name});return}let _=Object.keys(X.current??{}).map((z)=>{let Q=`pie${z}_${$.name}_${B}`;if(G)console.log(`[PieCard] Centrifuge subscribing to channel: ${Q}`);let q=R.newSubscription(Q);return q.on("publication",(W)=>{if(G)console.log(`[PieCard] Centrifuge received data on ${Q}:`,W.data);X.current?.[z]?.(W.data)}),q.subscribe(),q});return()=>{_.forEach((z)=>{if(G)console.log("[PieCard] Centrifuge unsubscribing from channel");z.unsubscribe(),R.removeSubscription(z)})}},[R,B,$.name,Z]),K.useEffect(()=>{if(!L||!I||!$.name){if(G&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!L,useMittSupport:I,hasMethods:!!X.current,hasDataName:!!$?.name});return}let O=Object.keys(X.current??{}),_={};return O.forEach((z)=>{let Q=`pie${z}_${$.name}`,q=(W)=>{if(G)console.log(`[PieCard] Mitt registering event: ${Q}`);X.current?.[z]?.(W)};_[Q]=q,L.on(Q,q)}),()=>{Object.entries(_).forEach(([z,Q])=>{if(G)console.log(`[PieCard] Mitt unregistering event: ${z}`);L.off(z,Q)})}},[L,$.name,I]),G)console.log("[PieCard] Rendering complete, returning children");if(Y!==void 0)return x.jsxs(x.Fragment,{children:[x.jsx("input",{type:"hidden",name:$.name,value:JSON.stringify(Y)}),H]});return H},HU=W$;var zU=require("react/jsx-runtime"),V$=({data:U})=>{let{name:$,key:H,value:J,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:B,centrifugeChannel:D}=U,[Y,G]=S.useState(J);return S.useEffect(()=>{G(J)},[J]),S.useEffect(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.CloudStorage;if(!X)return;X.setItem(H,Y)},[H,Y]),zU.jsx(HU,{card:"CloudStorageCard",data:U,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:B,centrifugeChannel:D,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.CloudStorage;if(X)X.removeItem(H);G("")}},children:zU.jsx("input",{type:"hidden",id:$,name:$,value:Y})})},nU=V$;var sU=a({name:"CloudStorageCard",component:nU,metadata:{author:"PieData"}});var m=require("react");var DU=require("react/jsx-runtime"),R$=({data:U})=>{let{name:$,key:H,value:J,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:B,centrifugeChannel:D}=U,[Y,G]=m.useState(J);return m.useEffect(()=>{G(J)},[J]),m.useEffect(()=>{if(typeof window>"u")return;let X=window.Telegram?.WebApp?.SecureStorage;if(!X)return;X.setItem(H,Y)},[H,Y]),DU.jsx(HU,{card:"SecureStorageCard",data:U,useSocketioSupport:Z,useCentrifugeSupport:I,useMittSupport:B,centrifugeChannel:D,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.SecureStorage;if(X)X.removeItem(H);G("")}},children:DU.jsx("input",{type:"hidden",id:$,name:$,value:Y})})},iU=R$;var rU=a({name:"SecureStorageCard",component:iU,metadata:{author:"PieData"}});
|