@swarm.ing/pieui 2.0.31 → 2.0.33

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/dist/cli.js CHANGED
@@ -4,29 +4,15 @@ var __getProtoOf = Object.getPrototypeOf;
4
4
  var __defProp = Object.defineProperty;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- function __accessProp(key) {
8
- return this[key];
9
- }
10
- var __toESMCache_node;
11
- var __toESMCache_esm;
12
7
  var __toESM = (mod, isNodeMode, target) => {
13
- var canCache = mod != null && typeof mod === "object";
14
- if (canCache) {
15
- var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
16
- var cached = cache.get(mod);
17
- if (cached)
18
- return cached;
19
- }
20
8
  target = mod != null ? __create(__getProtoOf(mod)) : {};
21
9
  const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
22
10
  for (let key of __getOwnPropNames(mod))
23
11
  if (!__hasOwnProp.call(to, key))
24
12
  __defProp(to, key, {
25
- get: __accessProp.bind(mod, key),
13
+ get: () => mod[key],
26
14
  enumerable: true
27
15
  });
28
- if (canCache)
29
- cache.set(mod, to);
30
16
  return to;
31
17
  };
32
18
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
@@ -188749,6 +188735,7 @@ export default function LoadingScreen() {
188749
188735
  );
188750
188736
  }
188751
188737
  `;
188738
+
188752
188739
  // src/code/templates/rootLayout.ts
188753
188740
  var rootLayoutTemplate = `import type { Metadata } from "next";
188754
188741
  import "./globals.css";
@@ -194605,77 +194592,7 @@ ${detail}` : `${opts.method} ${opts.url} failed: ${response.status}`;
194605
194592
  // src/code/commands/cardDumpMetadata.ts
194606
194593
  var import_node_fs6 = __toESM(require("node:fs"));
194607
194594
  var import_node_path8 = __toESM(require("node:path"));
194608
- // src/code/introspection/schemaContext.ts
194609
- var import_node_path5 = __toESM(require("node:path"));
194610
- var __dirname = "/home/runner/work/pieui/pieui/src/code/introspection";
194611
- var DEFAULT_COMPILER_OPTIONS = () => ({
194612
- allowJs: true,
194613
- jsx: ts2.JsxEmit.ReactJSX,
194614
- target: ts2.ScriptTarget.ES2020,
194615
- module: ts2.ModuleKind.NodeNext,
194616
- moduleResolution: ts2.ModuleResolutionKind.NodeNext,
194617
- esModuleInterop: true,
194618
- allowSyntheticDefaultImports: true,
194619
- skipLibCheck: true
194620
- });
194621
- var createSchemaContext = (files) => {
194622
- const cliSchemaPath = import_node_path5.default.join(__dirname, "..", "commands", "cli-schema.d.ts");
194623
- const uniqueFiles = Array.from(new Set([cliSchemaPath, ...files]));
194624
- const program = TJS.getProgramFromFiles(uniqueFiles, DEFAULT_COMPILER_OPTIONS());
194625
- const checker = program.getTypeChecker();
194626
- const generator = TJS.buildGenerator(program, {
194627
- required: true,
194628
- strictNullChecks: true,
194629
- excludePrivate: true,
194630
- ref: false,
194631
- aliasRef: false,
194632
- topRef: false,
194633
- noExtraProps: true,
194634
- ignoreErrors: true
194635
- });
194636
- if (!generator) {
194637
- throw new Error("Failed to create JSON Schema generator");
194638
- }
194639
- return { program, checker, generator };
194640
- };
194641
- var findTypeDeclaration = (program, checker, typeName) => {
194642
- for (const sourceFile of program.getSourceFiles()) {
194643
- if (sourceFile.isDeclarationFile)
194644
- continue;
194645
- let found = null;
194646
- const visit = (node) => {
194647
- if (found)
194648
- return;
194649
- if ((ts2.isInterfaceDeclaration(node) || ts2.isTypeAliasDeclaration(node)) && node.name.text === typeName) {
194650
- const symbol = checker.getSymbolAtLocation(node.name);
194651
- if (symbol) {
194652
- found = { symbol, declaration: node };
194653
- }
194654
- return;
194655
- }
194656
- ts2.forEachChild(node, visit);
194657
- };
194658
- visit(sourceFile);
194659
- if (found)
194660
- return found;
194661
- }
194662
- return null;
194663
- };
194664
- var buildSchemaForType = (ctx, typeName) => {
194665
- try {
194666
- const schema = ctx.generator.getSchemaForSymbol(typeName);
194667
- if (!schema)
194668
- return null;
194669
- const decl = findTypeDeclaration(ctx.program, ctx.checker, typeName);
194670
- if (decl) {
194671
- const declaredType = ctx.checker.getDeclaredTypeOfSymbol(decl.symbol);
194672
- patchSchemaForType(declaredType, schema, ctx.checker);
194673
- }
194674
- return schema;
194675
- } catch {
194676
- return null;
194677
- }
194678
- };
194595
+
194679
194596
  // src/code/introspection/errors.ts
194680
194597
  class IntrospectionError extends Error {
194681
194598
  sourceFile;
@@ -194750,6 +194667,77 @@ var errorOptsFromNode = (sourceFile, node) => ({
194750
194667
  ...lineCol(sourceFile, node)
194751
194668
  });
194752
194669
 
194670
+ // src/code/introspection/schemaContext.ts
194671
+ var import_node_path5 = __toESM(require("node:path"));
194672
+ var __dirname = "/home/runner/work/pieui/pieui/src/code/introspection";
194673
+ var DEFAULT_COMPILER_OPTIONS = () => ({
194674
+ allowJs: true,
194675
+ jsx: ts2.JsxEmit.ReactJSX,
194676
+ target: ts2.ScriptTarget.ES2020,
194677
+ module: ts2.ModuleKind.NodeNext,
194678
+ moduleResolution: ts2.ModuleResolutionKind.NodeNext,
194679
+ esModuleInterop: true,
194680
+ allowSyntheticDefaultImports: true,
194681
+ skipLibCheck: true
194682
+ });
194683
+ var createSchemaContext = (files) => {
194684
+ const cliSchemaPath = import_node_path5.default.join(__dirname, "..", "commands", "cli-schema.d.ts");
194685
+ const uniqueFiles = Array.from(new Set([cliSchemaPath, ...files]));
194686
+ const program = TJS.getProgramFromFiles(uniqueFiles, DEFAULT_COMPILER_OPTIONS());
194687
+ const checker = program.getTypeChecker();
194688
+ const generator = TJS.buildGenerator(program, {
194689
+ required: true,
194690
+ strictNullChecks: true,
194691
+ excludePrivate: true,
194692
+ ref: false,
194693
+ aliasRef: false,
194694
+ topRef: false,
194695
+ noExtraProps: true,
194696
+ ignoreErrors: true
194697
+ });
194698
+ if (!generator) {
194699
+ throw new Error("Failed to create JSON Schema generator");
194700
+ }
194701
+ return { program, checker, generator };
194702
+ };
194703
+ var findTypeDeclaration = (program, checker, typeName) => {
194704
+ for (const sourceFile of program.getSourceFiles()) {
194705
+ if (sourceFile.isDeclarationFile)
194706
+ continue;
194707
+ let found = null;
194708
+ const visit = (node) => {
194709
+ if (found)
194710
+ return;
194711
+ if ((ts2.isInterfaceDeclaration(node) || ts2.isTypeAliasDeclaration(node)) && node.name.text === typeName) {
194712
+ const symbol = checker.getSymbolAtLocation(node.name);
194713
+ if (symbol) {
194714
+ found = { symbol, declaration: node };
194715
+ }
194716
+ return;
194717
+ }
194718
+ ts2.forEachChild(node, visit);
194719
+ };
194720
+ visit(sourceFile);
194721
+ if (found)
194722
+ return found;
194723
+ }
194724
+ return null;
194725
+ };
194726
+ var buildSchemaForType = (ctx, typeName) => {
194727
+ try {
194728
+ const schema = ctx.generator.getSchemaForSymbol(typeName);
194729
+ if (!schema)
194730
+ return null;
194731
+ const decl = findTypeDeclaration(ctx.program, ctx.checker, typeName);
194732
+ if (decl) {
194733
+ const declaredType = ctx.checker.getDeclaredTypeOfSymbol(decl.symbol);
194734
+ patchSchemaForType(declaredType, schema, ctx.checker);
194735
+ }
194736
+ return schema;
194737
+ } catch {
194738
+ return null;
194739
+ }
194740
+ };
194753
194741
  // src/code/introspection/typeToSchema.ts
194754
194742
  var MAX_DEPTH = 12;
194755
194743
  var isOptionalProperty = (sym) => {
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{l as UnionCard,f as UILoading,t as UI,O as SessionStorageCard,s as SequenceCard,L as SecureStorageCard,e as PieCard,G as OneOfCard,c as IOEventsCard,n as HiddenCard,p as HTMLEmbedCard,v as DeviceStorageCard,E as CloudStorageCard,B as BoxCard,S as AutoRedirectCard,j as AjaxGroupCard};
2
+ import{useContext as J,useEffect as X,useRef as Wo}from"react";import{createContext as Bo,useContext as Vo}from"react";var $o=Bo(null),ao=()=>{let o=Vo($o);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var $=()=>{let{enableRenderingLog:o}=ao();return o},E=$;import{createContext as qo}from"react";import{Centrifuge as Af}from"centrifuge";var Go=qo(null),b=Go;import{io as Tf}from"socket.io-client";import{createContext as Fo}from"react";var Jo=Fo(null),N=Jo;import Lf from"mitt";import{createContext as Xo,useCallback as Vf,useContext as $f}from"react";var Qo=Xo(null);var a=Qo;import{jsx as Mo,jsxs as Ro,Fragment as yo}from"react/jsx-runtime";var Yo=({card:o,data:r,children:C,useSocketioSupport:f=!1,useCentrifugeSupport:p=!1,useMittSupport:i=!1,centrifugeChannel:d=void 0,methods:S=void 0,stored:U=void 0})=>{let m=E(),u=Wo(S);if(u.current=S,m)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:f,centrifuge:p,mitt:i,centrifugeChannel:d}),console.log("[PieCard] Methods:",S?Object.keys(S):"none"),console.log("[PieCard] Has children:",!!C);let P=J(N),n=J(b),l=J(a);if(X(()=>{if(!P||!f||!u.current||!r.name){if(m&&f)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!P,useSocketioSupport:f,hasMethods:!!u.current,hasDataName:!!r?.name});return}let O=Object.keys(u.current??{}).map((g)=>{let T=`pie${g}_${r.name}`;if(m)console.log(`[PieCard] Socket.IO registering event: ${T}`);let D=(z)=>{u.current?.[g]?.(z)};return P.on(T,D),[T,D]});return()=>{O.forEach(([g,T])=>{if(m)console.log(`[PieCard] Socket.IO unregistering event: ${g}`);P.off(g,T)})}},[P,r.name,f]),X(()=>{if(!n||!p||!d||!r.name){if(m&&p)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!n,useCentrifugeSupport:p,hasCentrifugeChannel:!!d,hasMethods:!!u.current,hasDataName:!!r?.name});return}let O=Object.keys(u.current??{}).map((g)=>{let T=`pie${g}_${r.name}_${d}`;if(m)console.log(`[PieCard] Centrifuge subscribing to channel: ${T}`);let D=n.newSubscription(T);return D.on("publication",(z)=>{if(m)console.log(`[PieCard] Centrifuge received data on ${T}:`,z.data);u.current?.[g]?.(z.data)}),D.subscribe(),D});return()=>{O.forEach((g)=>{if(m)console.log("[PieCard] Centrifuge unsubscribing from channel");g.unsubscribe(),n.removeSubscription(g)})}},[n,d,r.name,p]),X(()=>{if(!l||!i||!r.name){if(m&&i)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!l,useMittSupport:i,hasMethods:!!u.current,hasDataName:!!r?.name});return}let I=Object.keys(u.current??{}),O={};return I.forEach((g)=>{let T=`pie${g}_${r.name}`,D=(z)=>{if(m)console.log(`[PieCard] Mitt registering event: ${T}`);u.current?.[g]?.(z)};O[T]=D,l.on(T,D)}),()=>{Object.entries(O).forEach(([g,T])=>{if(m)console.log(`[PieCard] Mitt unregistering event: ${g}`);l.off(g,T)})}},[l,r.name,i]),m)console.log("[PieCard] Rendering complete, returning children");if(U!==void 0)return Ro(yo,{children:[Mo("input",{type:"hidden",name:r.name,value:JSON.stringify(U)}),C]});return C},A=Yo;import{lazy as Ko}from"react";var Q=new Map;function c(o,r){return Ko(()=>{if(Q.has(r))return Q.get(r);let C=o().then((f)=>f);return Q.set(r,C),C})}var j=new Map,_o=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=c(r.loader,o.name),r.loader=void 0,r.isLazy=!0;return r};function w(o){let r=_o(o);return j.set(r.name,r),r.component}var q=(o)=>{return j.get(o)};import{Suspense as bo,useContext as No,memo as co}from"react";import{createContext as ko}from"react";import{jsx as Eo,Fragment as xo}from"react/jsx-runtime";var to=ko(Eo(xo,{})),B=to;import{jsx as W}from"react/jsx-runtime";function jo({uiConfig:o,setUiAjaxConfiguration:r}){let C=No(B),f=$();if(f)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let p=q(o.card);if(!p?.component){if(f)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return C}if(f)console.log("[UI] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata});let i=p.component,d=W(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(p.isLazy){if(f)console.log("[UI] Rendering lazy component with Suspense:",p.name);return W(bo,{fallback:p.fallback?W(p.fallback,{}):C,children:d},`${p.name}`)}if(f)console.log("[UI] Rendering component directly:",p.name);return d}var L=co(jo);import{Suspense as ho,useContext as eo}from"react";import{createContext as vo}from"react";var so=vo(null),Z=so;import{jsx as G}from"react/jsx-runtime";function v({uiConfig:o,setUiAjaxConfiguration:r}){let C=eo(B),f=$();if(f)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let p=q(o.card);if(!p?.component){if(f)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return C}if(f)console.log("[UILoading] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata,hasFallback:!!p.fallback});if(p.fallback){if(f)console.log("[UILoading] Rendering fallback for:",p.name);let S=p.fallback;return G(S,{})}if(f)console.log("[UILoading] No fallback, rendering full component:",p.name);let i=p.component,d=G(Z.Provider,{value:v,children:G(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(p.isLazy)return G(ho,{fallback:C,children:d},`${p.name}`);return d}var or=v;import{useContext as rr}from"react";import{jsx as Y}from"react/jsx-runtime";var fr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,sx:p}=o,i=rr(Z)??L;return Y(A,{card:f,data:o,children:Y("div",{style:p,id:f,children:r.map((d,S)=>{return Y(i,{uiConfig:d,setUiAjaxConfiguration:C},`children-${S}`)})})})},s=fr;var pr=w({name:"SequenceCard",component:s,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Cr}from"react";import{jsx as h}from"react/jsx-runtime";var mr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f}=o,p=Cr(Z)??L;return h(A,{card:f,data:o,children:r.map((i,d)=>{return h(p,{uiConfig:i,setUiAjaxConfiguration:C},`children-${d}`)})})},e=mr;var dr=w({name:"UnionCard",component:e,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as Sr,useState as Ir}from"react";import lr from"html-react-parser";import{useCallback as F,useEffect as ir,useRef as y,useState as ur}from"react";function Ur(){let o=new AudioContext,r=o.createOscillator(),C=r.connect(o.createMediaStreamDestination());r.start();let f=C.stream.getAudioTracks()[0];return f.enabled=!1,f}function M(o=null,r){let[C,f]=ur(!1),p=y(null),i=y(null),d=y(null),S=F(async(P,n=!0)=>{if(p.current)U();let l=new RTCPeerConnection;if(l.onconnectionstatechange=()=>{if(l.connectionState==="connected")f(!0);else if(["disconnected","failed","closed"].includes(l.connectionState))f(!1)},l.ontrack=(H)=>{if(o)o.srcObject=H.streams[0]},n){let H=await navigator.mediaDevices.getUserMedia({audio:!0});l.addTrack(H.getTracks()[0],H)}else{let H=Ur();l.addTrack(H)}let I=l.createDataChannel("oai-events");i.current=I,d.current=new Promise((H)=>{I.addEventListener("open",()=>{H()})});let O=await l.createOffer();await l.setLocalDescription(O);let z=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:O.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await l.setRemoteDescription({type:"answer",sdp:z}),p.current=l,await d.current},[o]),U=F(()=>{let P=i.current;if(P)P.close();p.current?.getSenders()?.forEach((n)=>n.track?.stop()),p.current?.close(),f(!1),p.current=null,i.current=null,d.current=null},[o]),m=F((P)=>{let n=i.current;if(!n){console.error("Data channel is not ready",P);return}let l=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),n.send(JSON.stringify(P)),!P.timestamp)P.timestamp=l;r?.(P)},[r,o]),u=F((P)=>{if(!i.current){console.error("Data channel is not ready");return}let l=()=>{m({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),m({type:"response.create"})};if(d.current)d.current.then(l);else l()},[r,o]);return ir(()=>{let P=i.current;if(!P)return;let n=(l)=>{let I=JSON.parse(l.data);if(!I.timestamp)I.timestamp=new Date().toLocaleTimeString();r?.(I)};return P.addEventListener("message",n),()=>{P.removeEventListener("message",n)}},[r,o]),{isSessionActive:C,startSession:S,stopSession:U,sendTextMessage:u}}import{jsx as wr}from"react/jsx-runtime";var Pr=({data:o})=>{let{html:r,useSocketioSupport:C,useCentrifugeSupport:f,useMittSupport:p,centrifugeChannel:i}=o,[d,S]=Ir(r),{isSessionActive:U,startSession:m,sendTextMessage:u}=M(null,(I)=>{if(console.log(I.type,I.type==="response.output_text.delta"&&I.delta),I.type==="response.output_text.delta"&&I.delta)S((O)=>O+I.delta)});return Sr(()=>{S(r)},[r]),wr(A,{card:"HTMLEmbedCard",data:o,methods:{update:(I)=>{S(I.value)},generateUsingAI:async(I)=>{try{if(!U&&I.token)await m(I.token,!1);u(I.prompt)}catch(O){console.error("Failed to generate using AI",O)}},initializeAI:async(I)=>{if(!U&&I.token)await m(I.token,!1)}},useCentrifugeSupport:f,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:i,children:lr(d)})},oo=Pr;var Ar=w({name:"HTMLEmbedCard",component:oo,metadata:{author:"Swarm.ing"}});import{useEffect as nr,useState as gr}from"react";import{jsx as ro}from"react/jsx-runtime";var Tr=({data:o})=>{let{name:r,value:C,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:d}=o,[S,U]=gr(C);return nr(()=>{U(C)},[C]),ro(A,{card:"HiddenCard",data:o,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:d,methods:{update:({value:m})=>{U(m)}},children:ro("input",{type:"hidden",id:r,name:r,value:S})})},fo=Tr;var Hr=w({name:"HiddenCard",component:fo,metadata:{author:"Swarm.ing"}});import{useContext as po,useEffect as Zr}from"react";import{createContext as Or}from"react";var Dr=Or(void 0),V=Dr;import{jsx as Br,Fragment as zr}from"react/jsx-runtime";var Lr=({data:o})=>{let{url:r}=o,C=po(V),f=po(B);return Zr(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else C?.(r)},[r,C]),Br(zr,{children:f})},Co=Lr;var Vr=w({name:"AutoRedirectCard",component:Co,metadata:{author:"Swarm.ing"}});import{Bounce as $r,Slide as ar,Zoom as qr,Flip as Gr}from"react-toastify";import{toast as Fr,ToastContainer as Jr}from"react-toastify";import{useContext as Xr,useMemo as Qr,useRef as Wr}from"react";import{jsx as R,Fragment as _r}from"react/jsx-runtime";var Yr={bounce:$r,slide:ar,zoom:qr,flip:Gr},yr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?Yr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};Fr(o.message,r)},Mr=(o)=>{console.log("Log event",o)},Rr=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(f){console.error("[IOEventsCard] Failed to show notification",f)}},C=window.Notification.permission;if(C==="granted"){r();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((f)=>{if(f==="granted")r()})},Kr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p}=o,i=Xr(V),d=Wr(i);d.current=i;let S=Qr(()=>({alert:yr,log:Mr,push:Rr,redirect:(U)=>{if(U.to){let m=U.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()},reload:(U)=>{if(U.to){let m=U.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()}}),[]);return R(_r,{children:R(A,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p,methods:S,children:R(Jr,{})})})},mo=Kr;var kr=w({name:"IOEventsCard",component:mo,metadata:{author:"Swarm.ing"}});import{useEffect as io,useState as tr}from"react";import{jsx as uo}from"react/jsx-runtime";var xr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=tr(f);return io(()=>{m(f)},[f]),io(()=>{if(typeof window>"u")return;sessionStorage.setItem(C,U)},[C,U]),uo(A,{card:"SessionStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{sessionStorage.removeItem(C),m("")}},children:uo("input",{type:"hidden",id:r,name:r,value:U})})},Uo=xr;var Er=w({name:"SessionStorageCard",component:Uo,metadata:{author:"PieData"}});import{useEffect as So,useState as br}from"react";import{jsx as Io}from"react/jsx-runtime";var Nr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=br(f);return So(()=>{m(f)},[f]),So(()=>{if(typeof window>"u")return;localStorage.setItem(C,U)},[C,U]),Io(A,{card:"DeviceStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{localStorage.removeItem(C),m("")}},children:Io("input",{type:"hidden",id:r,name:r,value:U})})},lo=Nr;var cr=w({name:"DeviceStorageCard",component:lo,metadata:{author:"PieData"}});import{useEffect as Po,useState as jr}from"react";import{jsx as wo}from"react/jsx-runtime";var vr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=jr(f);return Po(()=>{m(f)},[f]),Po(()=>{if(typeof window>"u")return;let u=window.Telegram?.WebApp?.CloudStorage;if(!u)return;u.setItem(C,U)},[C,U]),wo(A,{card:"CloudStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{let u=window.Telegram?.WebApp?.CloudStorage;if(u)u.removeItem(C);m("")}},children:wo("input",{type:"hidden",id:r,name:r,value:U})})},Ao=vr;var sr=w({name:"CloudStorageCard",component:Ao,metadata:{author:"PieData"}});import{useEffect as no,useState as hr}from"react";import{jsx as go}from"react/jsx-runtime";var er=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=hr(f);return no(()=>{m(f)},[f]),no(()=>{if(typeof window>"u")return;let u=window.Telegram?.WebApp?.SecureStorage;if(!u)return;u.setItem(C,U)},[C,U]),go(A,{card:"SecureStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{let u=window.Telegram?.WebApp?.SecureStorage;if(u)u.removeItem(C);m("")}},children:go("input",{type:"hidden",id:r,name:r,value:U})})},To=er;var of=w({name:"SecureStorageCard",component:To,metadata:{author:"PieData"}});import{useCallback as K,useContext as _,useEffect as rf,useRef as ff,useState as Ho}from"react";import{jsx as Oo}from"react/jsx-runtime";var pf=({data:o,content:r})=>{let{useLoader:C,noReturn:f,returnType:p,useSocketioSupport:i,useCentrifugeSupport:d,useMittSupport:S,centrifugeChannel:U}=o,m=_(B),u=_(Z)??L,[P,n]=Ho(!1),[l,I]=Ho(null),O=ff(r),g=_(a),T=K((H)=>{if(H===null)n(!0);else if(n(!1),!f)O.current=H;if(!f)I(H)},[f]),D=K((H)=>{O.current=H.content,I(H.content)},[]),z=K((H)=>{if(H===null)n(!0);else if(n(!1),!f)for(let x of H)g?.emit(x.name,x.data)},[f,g]);if(rf(()=>{I(r),n(!1)},[r]),!l&&C)return m;return Oo(A,{card:"AjaxGroupCard",data:o,methods:{changeContent:D},useSocketioSupport:i,useCentrifugeSupport:d,useMittSupport:S,centrifugeChannel:U,children:Oo(u,{uiConfig:l??O.current,setUiAjaxConfiguration:p==="events"?z:T})})},Do=pf;var Cf=w({name:"AjaxGroupCard",component:Do,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as Zo}from"react";import{jsx as k}from"react/jsx-runtime";var mf=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,url:p,sx:i}=o,d=Zo(V),S=Zo(Z)??L;return k(A,{card:f,data:o,children:k("div",{style:i,id:f,onClick:(m)=>{if(p)if(m.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(p))window.location.href=p;else d?.(p)},children:k(S,{setUiAjaxConfiguration:C,uiConfig:r})})})},Lo=mf;var df=w({name:"BoxCard",component:Lo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as uf}from"react";import{jsx as t}from"react/jsx-runtime";var Uf=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,sx:p}=o,i=uf(Z)??L;return t(A,{card:f,data:o,children:t("div",{style:p,id:f,children:r.map((d,S)=>{return t(i,{uiConfig:d,setUiAjaxConfiguration:C},`children-${S}`)})})})},zo=Uf;var Sf=w({name:"OneOfCard",component:zo,metadata:{author:"Swarm.ing",description:"Different variants"}});export{dr as UnionCard,or as UILoading,L as UI,Er as SessionStorageCard,pr as SequenceCard,of as SecureStorageCard,A as PieCard,Sf as OneOfCard,kr as IOEventsCard,Hr as HiddenCard,Ar as HTMLEmbedCard,cr as DeviceStorageCard,sr as CloudStorageCard,df as BoxCard,Vr as AutoRedirectCard,Cf as AjaxGroupCard};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var B=Object.create;var{getPrototypeOf:D,defineProperty:d,getOwnPropertyNames:m,getOwnPropertyDescriptor:G}=Object,p=Object.prototype.hasOwnProperty;function C(r){return this[r]}var M,P,e=(r,a,o)=>{var t=r!=null&&typeof r==="object";if(t){var s=a?M??=new WeakMap:P??=new WeakMap,x=s.get(r);if(x)return x}o=r!=null?B(D(r)):{};let f=a||!r||!r.__esModule?d(o,"default",{value:r,enumerable:!0}):o;for(let u of m(r))if(!p.call(f,u))d(f,u,{get:C.bind(r,u),enumerable:!0});if(t)s.set(r,f);return f},R=(r)=>{var a=(l??=new WeakMap).get(r),o;if(a)return a;if(a=d({},"__esModule",{value:!0}),r&&typeof r==="object"||typeof r==="function"){for(var t of m(r))if(!p.call(a,t))d(a,t,{get:C.bind(r,t),enumerable:!(o=G(r,t))||o.enumerable})}return l.set(r,a),a},l;var T=(r)=>r;function h(r,a){this[r]=T.bind(null,a)}var k=(r,a)=>{for(var o in a)d(r,o,{get:a[o],enumerable:!0,configurable:!0,set:h.bind(a,o)})};var w={};k(w,{UnionCard:()=>c.default,UILoading:()=>S.default,UI:()=>i.default,SessionStorageCard:()=>A.default,SequenceCard:()=>g.default,SecureStorageCard:()=>L.default,PieCard:()=>n.default,OneOfCard:()=>q.default,IOEventsCard:()=>v.default,HiddenCard:()=>O.default,HTMLEmbedCard:()=>I.default,DeviceStorageCard:()=>E.default,CloudStorageCard:()=>H.default,BoxCard:()=>j.default,AutoRedirectCard:()=>U.default,AjaxGroupCard:()=>b.default});module.exports=R(w);
2
+ var Ur=Object.create;var{getPrototypeOf:Sr,defineProperty:W,getOwnPropertyNames:no,getOwnPropertyDescriptor:Ir}=Object,go=Object.prototype.hasOwnProperty;var To=(o,r,C)=>{C=o!=null?Ur(Sr(o)):{};let f=r||!o||!o.__esModule?W(C,"default",{value:o,enumerable:!0}):C;for(let p of no(o))if(!go.call(f,p))W(f,p,{get:()=>o[p],enumerable:!0});return f},Ao=new WeakMap,lr=(o)=>{var r=Ao.get(o),C;if(r)return r;if(r=W({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")no(o).map((f)=>!go.call(r,f)&&W(r,f,{get:()=>o[f],enumerable:!(C=Ir(o,f))||C.enumerable}));return Ao.set(o,r),r};var Pr=(o,r)=>{for(var C in r)W(o,C,{get:r[C],enumerable:!0,configurable:!0,set:(f)=>r[C]=()=>f})};var br={};Pr(br,{UnionCard:()=>Yo,UILoading:()=>Go,UI:()=>z,SessionStorageCard:()=>jo,SequenceCard:()=>Xo,SecureStorageCard:()=>rr,PieCard:()=>w,OneOfCard:()=>ur,IOEventsCard:()=>No,HiddenCard:()=>ko,HTMLEmbedCard:()=>Ko,DeviceStorageCard:()=>so,CloudStorageCard:()=>eo,BoxCard:()=>mr,AutoRedirectCard:()=>Eo,AjaxGroupCard:()=>pr});module.exports=lr(br);var $=require("react");var t=require("react"),wr=t.createContext(null),Ar=()=>{let o=t.useContext(wr);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var Y=()=>{let{enableRenderingLog:o}=Ar();return o},Ho=Y;var Oo=require("react"),nr=require("centrifuge");var gr=Oo.createContext(null),Do=gr;var Tr=require("socket.io-client"),Zo=require("react");var Hr=Zo.createContext(null),Lo=Hr;var Or=To(require("mitt")),x=require("react");var Dr=x.createContext(null);var E=Dr;var G=require("react/jsx-runtime"),Zr=({card:o,data:r,children:C,useSocketioSupport:f=!1,useCentrifugeSupport:p=!1,useMittSupport:i=!1,centrifugeChannel:d=void 0,methods:S=void 0,stored:U=void 0})=>{let m=Ho(),u=$.useRef(S);if(u.current=S,m)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:f,centrifuge:p,mitt:i,centrifugeChannel:d}),console.log("[PieCard] Methods:",S?Object.keys(S):"none"),console.log("[PieCard] Has children:",!!C);let P=$.useContext(Lo),n=$.useContext(Do),l=$.useContext(E);if($.useEffect(()=>{if(!P||!f||!u.current||!r.name){if(m&&f)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!P,useSocketioSupport:f,hasMethods:!!u.current,hasDataName:!!r?.name});return}let O=Object.keys(u.current??{}).map((g)=>{let T=`pie${g}_${r.name}`;if(m)console.log(`[PieCard] Socket.IO registering event: ${T}`);let L=(V)=>{u.current?.[g]?.(V)};return P.on(T,L),[T,L]});return()=>{O.forEach(([g,T])=>{if(m)console.log(`[PieCard] Socket.IO unregistering event: ${g}`);P.off(g,T)})}},[P,r.name,f]),$.useEffect(()=>{if(!n||!p||!d||!r.name){if(m&&p)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!n,useCentrifugeSupport:p,hasCentrifugeChannel:!!d,hasMethods:!!u.current,hasDataName:!!r?.name});return}let O=Object.keys(u.current??{}).map((g)=>{let T=`pie${g}_${r.name}_${d}`;if(m)console.log(`[PieCard] Centrifuge subscribing to channel: ${T}`);let L=n.newSubscription(T);return L.on("publication",(V)=>{if(m)console.log(`[PieCard] Centrifuge received data on ${T}:`,V.data);u.current?.[g]?.(V.data)}),L.subscribe(),L});return()=>{O.forEach((g)=>{if(m)console.log("[PieCard] Centrifuge unsubscribing from channel");g.unsubscribe(),n.removeSubscription(g)})}},[n,d,r.name,p]),$.useEffect(()=>{if(!l||!i||!r.name){if(m&&i)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!l,useMittSupport:i,hasMethods:!!u.current,hasDataName:!!r?.name});return}let I=Object.keys(u.current??{}),O={};return I.forEach((g)=>{let T=`pie${g}_${r.name}`,L=(V)=>{if(m)console.log(`[PieCard] Mitt registering event: ${T}`);u.current?.[g]?.(V)};O[T]=L,l.on(T,L)}),()=>{Object.entries(O).forEach(([g,T])=>{if(m)console.log(`[PieCard] Mitt unregistering event: ${g}`);l.off(g,T)})}},[l,r.name,i]),m)console.log("[PieCard] Rendering complete, returning children");if(U!==void 0)return G.jsxs(G.Fragment,{children:[G.jsx("input",{type:"hidden",name:r.name,value:JSON.stringify(U)}),C]});return C},w=Zr;var zo=require("react"),po=new Map;function Bo(o,r){return zo.lazy(()=>{if(po.has(r))return po.get(r);let C=o().then((f)=>f);return po.set(r,C),C})}var Vo=new Map,Lr=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=Bo(r.loader,o.name),r.loader=void 0,r.isLazy=!0;return r};function A(o){let r=Lr(o);return Vo.set(r.name,r),r.component}var b=(o)=>{return Vo.get(o)};var F=require("react");var $o=require("react"),N=require("react/jsx-runtime"),zr=$o.createContext(N.jsx(N.Fragment,{})),a=zr;var c=require("react/jsx-runtime");function Br({uiConfig:o,setUiAjaxConfiguration:r}){let C=F.useContext(a),f=Y();if(f)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let p=b(o.card);if(!p?.component){if(f)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return C}if(f)console.log("[UI] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata});let i=p.component,d=c.jsx(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(p.isLazy){if(f)console.log("[UI] Rendering lazy component with Suspense:",p.name);return c.jsx(F.Suspense,{fallback:p.fallback?c.jsx(p.fallback,{}):C,children:d},`${p.name}`)}if(f)console.log("[UI] Rendering component directly:",p.name);return d}var z=F.memo(Br);var j=require("react");var ao=require("react"),Vr=ao.createContext(null),B=Vr;var y=require("react/jsx-runtime");function qo({uiConfig:o,setUiAjaxConfiguration:r}){let C=j.useContext(a),f=Y();if(f)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let p=b(o.card);if(!p?.component){if(f)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return C}if(f)console.log("[UILoading] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata,hasFallback:!!p.fallback});if(p.fallback){if(f)console.log("[UILoading] Rendering fallback for:",p.name);let S=p.fallback;return y.jsx(S,{})}if(f)console.log("[UILoading] No fallback, rendering full component:",p.name);let i=p.component,d=y.jsx(B.Provider,{value:qo,children:y.jsx(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(p.isLazy)return y.jsx(j.Suspense,{fallback:C,children:d},`${p.name}`);return d}var Go=qo;var Fo=require("react");var v=require("react/jsx-runtime"),$r=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,sx:p}=o,i=Fo.useContext(B)??z;return v.jsx(w,{card:f,data:o,children:v.jsx("div",{style:p,id:f,children:r.map((d,S)=>{return v.jsx(i,{uiConfig:d,setUiAjaxConfiguration:C},`children-${S}`)})})})},Jo=$r;var Xo=A({name:"SequenceCard",component:Jo,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Qo=require("react");var Co=require("react/jsx-runtime"),ar=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f}=o,p=Qo.useContext(B)??z;return Co.jsx(w,{card:f,data:o,children:r.map((i,d)=>{return Co.jsx(p,{uiConfig:i,setUiAjaxConfiguration:C},`children-${d}`)})})},Wo=ar;var Yo=A({name:"UnionCard",component:Wo,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var s=require("react"),yo=To(require("html-react-parser"));var Z=require("react");function qr(){let o=new AudioContext,r=o.createOscillator(),C=r.connect(o.createMediaStreamDestination());r.start();let f=C.stream.getAudioTracks()[0];return f.enabled=!1,f}function mo(o=null,r){let[C,f]=Z.useState(!1),p=Z.useRef(null),i=Z.useRef(null),d=Z.useRef(null),S=Z.useCallback(async(P,n=!0)=>{if(p.current)U();let l=new RTCPeerConnection;if(l.onconnectionstatechange=()=>{if(l.connectionState==="connected")f(!0);else if(["disconnected","failed","closed"].includes(l.connectionState))f(!1)},l.ontrack=(H)=>{if(o)o.srcObject=H.streams[0]},n){let H=await navigator.mediaDevices.getUserMedia({audio:!0});l.addTrack(H.getTracks()[0],H)}else{let H=qr();l.addTrack(H)}let I=l.createDataChannel("oai-events");i.current=I,d.current=new Promise((H)=>{I.addEventListener("open",()=>{H()})});let O=await l.createOffer();await l.setLocalDescription(O);let V=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:O.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await l.setRemoteDescription({type:"answer",sdp:V}),p.current=l,await d.current},[o]),U=Z.useCallback(()=>{let P=i.current;if(P)P.close();p.current?.getSenders()?.forEach((n)=>n.track?.stop()),p.current?.close(),f(!1),p.current=null,i.current=null,d.current=null},[o]),m=Z.useCallback((P)=>{let n=i.current;if(!n){console.error("Data channel is not ready",P);return}let l=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),n.send(JSON.stringify(P)),!P.timestamp)P.timestamp=l;r?.(P)},[r,o]),u=Z.useCallback((P)=>{if(!i.current){console.error("Data channel is not ready");return}let l=()=>{m({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),m({type:"response.create"})};if(d.current)d.current.then(l);else l()},[r,o]);return Z.useEffect(()=>{let P=i.current;if(!P)return;let n=(l)=>{let I=JSON.parse(l.data);if(!I.timestamp)I.timestamp=new Date().toLocaleTimeString();r?.(I)};return P.addEventListener("message",n),()=>{P.removeEventListener("message",n)}},[r,o]),{isSessionActive:C,startSession:S,stopSession:U,sendTextMessage:u}}var Ro=require("react/jsx-runtime"),Gr=({data:o})=>{let{html:r,useSocketioSupport:C,useCentrifugeSupport:f,useMittSupport:p,centrifugeChannel:i}=o,[d,S]=s.useState(r),{isSessionActive:U,startSession:m,sendTextMessage:u}=mo(null,(I)=>{if(console.log(I.type,I.type==="response.output_text.delta"&&I.delta),I.type==="response.output_text.delta"&&I.delta)S((O)=>O+I.delta)});return s.useEffect(()=>{S(r)},[r]),Ro.jsx(w,{card:"HTMLEmbedCard",data:o,methods:{update:(I)=>{S(I.value)},generateUsingAI:async(I)=>{try{if(!U&&I.token)await m(I.token,!1);u(I.prompt)}catch(O){console.error("Failed to generate using AI",O)}},initializeAI:async(I)=>{if(!U&&I.token)await m(I.token,!1)}},useCentrifugeSupport:f,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:i,children:yo.default(d)})},Mo=Gr;var Ko=A({name:"HTMLEmbedCard",component:Mo,metadata:{author:"Swarm.ing"}});var h=require("react");var io=require("react/jsx-runtime"),Fr=({data:o})=>{let{name:r,value:C,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:d}=o,[S,U]=h.useState(C);return h.useEffect(()=>{U(C)},[C]),io.jsx(w,{card:"HiddenCard",data:o,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:d,methods:{update:({value:m})=>{U(m)}},children:io.jsx("input",{type:"hidden",id:r,name:r,value:S})})},_o=Fr;var ko=A({name:"HiddenCard",component:_o,metadata:{author:"Swarm.ing"}});var M=require("react");var to=require("react"),Jr=to.createContext(void 0),J=Jr;var e=require("react/jsx-runtime"),Xr=({data:o})=>{let{url:r}=o,C=M.useContext(J),f=M.useContext(a);return M.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else C?.(r)},[r,C]),e.jsx(e.Fragment,{children:f})},xo=Xr;var Eo=A({name:"AutoRedirectCard",component:xo,metadata:{author:"Swarm.ing"}});var q=require("react-toastify"),oo=require("react-toastify");var Q=require("react");var X=require("react/jsx-runtime"),Qr={bounce:q.Bounce,slide:q.Slide,zoom:q.Zoom,flip:q.Flip},Wr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?Qr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};oo.toast(o.message,r)},Yr=(o)=>{console.log("Log event",o)},yr=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(f){console.error("[IOEventsCard] Failed to show notification",f)}},C=window.Notification.permission;if(C==="granted"){r();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((f)=>{if(f==="granted")r()})},Mr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p}=o,i=Q.useContext(J),d=Q.useRef(i);d.current=i;let S=Q.useMemo(()=>({alert:Wr,log:Yr,push:yr,redirect:(U)=>{if(U.to){let m=U.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()},reload:(U)=>{if(U.to){let m=U.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else d.current?.(m)}else window.location.reload()}}),[]);return X.jsx(X.Fragment,{children:X.jsx(w,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p,methods:S,children:X.jsx(oo.ToastContainer,{})})})},bo=Mr;var No=A({name:"IOEventsCard",component:bo,metadata:{author:"Swarm.ing"}});var R=require("react");var uo=require("react/jsx-runtime"),Rr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=R.useState(f);return R.useEffect(()=>{m(f)},[f]),R.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(C,U)},[C,U]),uo.jsx(w,{card:"SessionStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{sessionStorage.removeItem(C),m("")}},children:uo.jsx("input",{type:"hidden",id:r,name:r,value:U})})},co=Rr;var jo=A({name:"SessionStorageCard",component:co,metadata:{author:"PieData"}});var K=require("react");var Uo=require("react/jsx-runtime"),Kr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=K.useState(f);return K.useEffect(()=>{m(f)},[f]),K.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(C,U)},[C,U]),Uo.jsx(w,{card:"DeviceStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{localStorage.removeItem(C),m("")}},children:Uo.jsx("input",{type:"hidden",id:r,name:r,value:U})})},vo=Kr;var so=A({name:"DeviceStorageCard",component:vo,metadata:{author:"PieData"}});var _=require("react");var So=require("react/jsx-runtime"),_r=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=_.useState(f);return _.useEffect(()=>{m(f)},[f]),_.useEffect(()=>{if(typeof window>"u")return;let u=window.Telegram?.WebApp?.CloudStorage;if(!u)return;u.setItem(C,U)},[C,U]),So.jsx(w,{card:"CloudStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{let u=window.Telegram?.WebApp?.CloudStorage;if(u)u.removeItem(C);m("")}},children:So.jsx("input",{type:"hidden",id:r,name:r,value:U})})},ho=_r;var eo=A({name:"CloudStorageCard",component:ho,metadata:{author:"PieData"}});var k=require("react");var Io=require("react/jsx-runtime"),kr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S}=o,[U,m]=k.useState(f);return k.useEffect(()=>{m(f)},[f]),k.useEffect(()=>{if(typeof window>"u")return;let u=window.Telegram?.WebApp?.SecureStorage;if(!u)return;u.setItem(C,U)},[C,U]),Io.jsx(w,{card:"SecureStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{let u=window.Telegram?.WebApp?.SecureStorage;if(u)u.removeItem(C);m("")}},children:Io.jsx("input",{type:"hidden",id:r,name:r,value:U})})},or=kr;var rr=A({name:"SecureStorageCard",component:or,metadata:{author:"PieData"}});var D=require("react");var lo=require("react/jsx-runtime"),tr=({data:o,content:r})=>{let{useLoader:C,noReturn:f,returnType:p,useSocketioSupport:i,useCentrifugeSupport:d,useMittSupport:S,centrifugeChannel:U}=o,m=D.useContext(a),u=D.useContext(B)??z,[P,n]=D.useState(!1),[l,I]=D.useState(null),O=D.useRef(r),g=D.useContext(E),T=D.useCallback((H)=>{if(H===null)n(!0);else if(n(!1),!f)O.current=H;if(!f)I(H)},[f]),L=D.useCallback((H)=>{O.current=H.content,I(H.content)},[]),V=D.useCallback((H)=>{if(H===null)n(!0);else if(n(!1),!f)for(let wo of H)g?.emit(wo.name,wo.data)},[f,g]);if(D.useEffect(()=>{I(r),n(!1)},[r]),!l&&C)return m;return lo.jsx(w,{card:"AjaxGroupCard",data:o,methods:{changeContent:L},useSocketioSupport:i,useCentrifugeSupport:d,useMittSupport:S,centrifugeChannel:U,children:lo.jsx(u,{uiConfig:l??O.current,setUiAjaxConfiguration:p==="events"?V:T})})},fr=tr;var pr=A({name:"AjaxGroupCard",component:fr,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var Po=require("react");var ro=require("react/jsx-runtime"),xr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,url:p,sx:i}=o,d=Po.useContext(J),S=Po.useContext(B)??z;return ro.jsx(w,{card:f,data:o,children:ro.jsx("div",{style:i,id:f,onClick:(m)=>{if(p)if(m.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(p))window.location.href=p;else d?.(p)},children:ro.jsx(S,{setUiAjaxConfiguration:C,uiConfig:r})})})},Cr=xr;var mr=A({name:"BoxCard",component:Cr,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var dr=require("react");var fo=require("react/jsx-runtime"),Er=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,sx:p}=o,i=dr.useContext(B)??z;return fo.jsx(w,{card:f,data:o,children:fo.jsx("div",{style:p,id:f,children:r.map((d,S)=>{return fo.jsx(i,{uiConfig:d,setUiAjaxConfiguration:C},`children-${S}`)})})})},ir=Er;var ur=A({name:"OneOfCard",component:ir,metadata:{author:"Swarm.ing",description:"Different variants"}});
package/dist/index.esm.js CHANGED
@@ -1,2 +1,3 @@
1
1
  "use client";
2
- import{useContext as $,useEffect as y,useRef as Ro}from"react";import{createContext as Bo,useContext as Zo}from"react";var Vo=Bo(null),qo=()=>{let o=Zo(Vo);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var M=()=>{let{enableRenderingLog:o}=qo();return o},E=M;import{createContext as zo}from"react";import{Centrifuge as tp}from"centrifuge";var Go=zo(null),a=Go;import{io as Ip}from"socket.io-client";import{createContext as Mo}from"react";var $o=Mo(null),b=$o;import xp from"mitt";import{createContext as yo,useCallback as gp,useContext as Dp}from"react";var Wo=yo(null);var z=Wo;import{jsx as Qo,jsxs as Xo,Fragment as Jo}from"react/jsx-runtime";var no=({card:o,data:r,children:f,useSocketioSupport:p=!1,useCentrifugeSupport:C=!1,useMittSupport:P=!1,centrifugeChannel:i=void 0,methods:S=void 0,stored:t=void 0})=>{let m=E(),u=Ro(S);if(u.current=S,m)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:p,centrifuge:C,mitt:P,centrifugeChannel:i}),console.log("[PieCard] Methods:",S?Object.keys(S):"none"),console.log("[PieCard] Has children:",!!f);let U=$(b),l=$(a),I=$(z);if(y(()=>{if(!U||!p||!u.current||!r.name){if(m&&p)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!U,useSocketioSupport:p,hasMethods:!!u.current,hasDataName:!!r?.name});return}let g=Object.keys(u.current??{}).map((x)=>{let T=`pie${x}_${r.name}`;if(m)console.log(`[PieCard] Socket.IO registering event: ${T}`);let D=(H)=>{u.current?.[x]?.(H)};return U.on(T,D),[T,D]});return()=>{g.forEach(([x,T])=>{if(m)console.log(`[PieCard] Socket.IO unregistering event: ${x}`);U.off(x,T)})}},[U,r.name,p]),y(()=>{if(!l||!C||!i||!r.name){if(m&&C)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!l,useCentrifugeSupport:C,hasCentrifugeChannel:!!i,hasMethods:!!u.current,hasDataName:!!r?.name});return}let g=Object.keys(u.current??{}).map((x)=>{let T=`pie${x}_${r.name}_${i}`;if(m)console.log(`[PieCard] Centrifuge subscribing to channel: ${T}`);let D=l.newSubscription(T);return D.on("publication",(H)=>{if(m)console.log(`[PieCard] Centrifuge received data on ${T}:`,H.data);u.current?.[x]?.(H.data)}),D.subscribe(),D});return()=>{g.forEach((x)=>{if(m)console.log("[PieCard] Centrifuge unsubscribing from channel");x.unsubscribe(),l.removeSubscription(x)})}},[l,i,r.name,C]),y(()=>{if(!I||!P||!r.name){if(m&&P)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!I,useMittSupport:P,hasMethods:!!u.current,hasDataName:!!r?.name});return}let d=Object.keys(u.current??{}),g={};return d.forEach((x)=>{let T=`pie${x}_${r.name}`,D=(H)=>{if(m)console.log(`[PieCard] Mitt registering event: ${T}`);u.current?.[x]?.(H)};g[T]=D,I.on(T,D)}),()=>{Object.entries(g).forEach(([x,T])=>{if(m)console.log(`[PieCard] Mitt unregistering event: ${x}`);I.off(x,T)})}},[I,r.name,P]),m)console.log("[PieCard] Rendering complete, returning children");if(t!==void 0)return Xo(Jo,{children:[Qo("input",{type:"hidden",name:r.name,value:JSON.stringify(t)}),f]});return f},w=no;import{lazy as Yo}from"react";var W=new Map;function k(o,r){return Yo(()=>{if(W.has(r))return W.get(r);let f=o().then((p)=>p);return W.set(r,f),f})}var N=new Map,Fo=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=k(r.loader,o.name),r.loader=void 0,r.isLazy=!0;return r};function A(o){let r=Fo(o);return N.set(r.name,r),r.component}var j=(o)=>{return N.get(o)};import{Suspense as ao,useContext as bo,memo as ko}from"react";import{createContext as Ko}from"react";import{jsx as Eo,Fragment as _o}from"react/jsx-runtime";var Lo=Ko(Eo(_o,{})),V=Lo;import{jsx as R}from"react/jsx-runtime";function No({uiConfig:o,setUiAjaxConfiguration:r}){let f=bo(V),p=M();if(p)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let C=j(o.card);if(!C?.component){if(p)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return f}if(p)console.log("[UI] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata});let P=C.component,i=R(P,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(C.isLazy){if(p)console.log("[UI] Rendering lazy component with Suspense:",C.name);return R(ao,{fallback:C.fallback?R(C.fallback,{}):f,children:i},`${C.name}`)}if(p)console.log("[UI] Rendering component directly:",C.name);return i}var B=ko(No);import{createContext as jo}from"react";var co=jo(null),Z=co;import{useContext as vo}from"react";import{jsx as n}from"react/jsx-runtime";var so=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p,sx:C}=o,P=vo(Z)??B;return n(w,{card:p,data:o,children:n("div",{style:C,id:p,children:r.map((i,S)=>{return n(P,{uiConfig:i,setUiAjaxConfiguration:f},`children-${S}`)})})})},c=so;var ho=A({name:"SequenceCard",component:c,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as eo}from"react";import{jsx as v}from"react/jsx-runtime";var or=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p}=o,C=eo(Z)??B;return v(w,{card:p,data:o,children:r.map((P,i)=>{return v(C,{uiConfig:P,setUiAjaxConfiguration:f},`children-${i}`)})})},s=or;var rr=A({name:"UnionCard",component:s,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as mr,useState as ir}from"react";import ur from"html-react-parser";import{useCallback as G,useEffect as pr,useRef as J,useState as fr}from"react";function Cr(){let o=new AudioContext,r=o.createOscillator(),f=r.connect(o.createMediaStreamDestination());r.start();let p=f.stream.getAudioTracks()[0];return p.enabled=!1,p}function Q(o=null,r){let[f,p]=fr(!1),C=J(null),P=J(null),i=J(null),S=G(async(U,l=!0)=>{if(C.current)t();let I=new RTCPeerConnection;if(I.onconnectionstatechange=()=>{if(I.connectionState==="connected")p(!0);else if(["disconnected","failed","closed"].includes(I.connectionState))p(!1)},I.ontrack=(O)=>{if(o)o.srcObject=O.streams[0]},l){let O=await navigator.mediaDevices.getUserMedia({audio:!0});I.addTrack(O.getTracks()[0],O)}else{let O=Cr();I.addTrack(O)}let d=I.createDataChannel("oai-events");P.current=d,i.current=new Promise((O)=>{d.addEventListener("open",()=>{O()})});let g=await I.createOffer();await I.setLocalDescription(g);let H=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:g.sdp,headers:{Authorization:`Bearer ${U}`,"Content-Type":"application/sdp"}})).text();await I.setRemoteDescription({type:"answer",sdp:H}),C.current=I,await i.current},[o]),t=G(()=>{let U=P.current;if(U)U.close();C.current?.getSenders()?.forEach((l)=>l.track?.stop()),C.current?.close(),p(!1),C.current=null,P.current=null,i.current=null},[o]),m=G((U)=>{let l=P.current;if(!l){console.error("Data channel is not ready",U);return}let I=new Date().toLocaleTimeString();if(U.event_id=U.event_id||crypto.randomUUID(),l.send(JSON.stringify(U)),!U.timestamp)U.timestamp=I;r?.(U)},[r,o]),u=G((U)=>{if(!P.current){console.error("Data channel is not ready");return}let I=()=>{m({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:U}]}}),m({type:"response.create"})};if(i.current)i.current.then(I);else I()},[r,o]);return pr(()=>{let U=P.current;if(!U)return;let l=(I)=>{let d=JSON.parse(I.data);if(!d.timestamp)d.timestamp=new Date().toLocaleTimeString();r?.(d)};return U.addEventListener("message",l),()=>{U.removeEventListener("message",l)}},[r,o]),{isSessionActive:f,startSession:S,stopSession:t,sendTextMessage:u}}import{jsx as tr}from"react/jsx-runtime";var Pr=({data:o})=>{let{html:r,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:C,centrifugeChannel:P}=o,[i,S]=ir(r),{isSessionActive:t,startSession:m,sendTextMessage:u}=Q(null,(d)=>{if(console.log(d.type,d.type==="response.output_text.delta"&&d.delta),d.type==="response.output_text.delta"&&d.delta)S((g)=>g+d.delta)});return mr(()=>{S(r)},[r]),tr(w,{card:"HTMLEmbedCard",data:o,methods:{update:(d)=>{S(d.value)},generateUsingAI:async(d)=>{try{if(!t&&d.token)await m(d.token,!1);u(d.prompt)}catch(g){console.error("Failed to generate using AI",g)}},initializeAI:async(d)=>{if(!t&&d.token)await m(d.token,!1)}},useCentrifugeSupport:p,useSocketioSupport:f,useMittSupport:C,centrifugeChannel:P,children:ur(i)})},h=Pr;var dr=A({name:"HTMLEmbedCard",component:h,metadata:{author:"Swarm.ing"}});import{useEffect as Sr,useState as Ir}from"react";import{jsx as e}from"react/jsx-runtime";var Ur=({data:o})=>{let{name:r,value:f,useSocketioSupport:p,useCentrifugeSupport:C,useMittSupport:P,centrifugeChannel:i}=o,[S,t]=Ir(f);return Sr(()=>{t(f)},[f]),e(w,{card:"HiddenCard",data:o,useSocketioSupport:p,useCentrifugeSupport:C,useMittSupport:P,centrifugeChannel:i,methods:{update:({value:m})=>{t(m)}},children:e("input",{type:"hidden",id:r,name:r,value:S})})},oo=Ur;var Ar=A({name:"HiddenCard",component:oo,metadata:{author:"Swarm.ing"}});import{useContext as ro,useEffect as xr}from"react";import{createContext as wr}from"react";var lr=wr(void 0),q=lr;import{jsx as gr,Fragment as Or}from"react/jsx-runtime";var Tr=({data:o})=>{let{url:r}=o,f=ro(q),p=ro(V);return xr(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else f?.(r)},[r,f]),gr(Or,{children:p})},po=Tr;var Dr=A({name:"AutoRedirectCard",component:po,metadata:{author:"Swarm.ing"}});import{Bounce as Hr,Slide as Br,Zoom as Zr,Flip as Vr}from"react-toastify";import{toast as qr,ToastContainer as zr}from"react-toastify";import{useContext as Gr,useMemo as Mr,useRef as $r}from"react";import{jsx as X,Fragment as Qr}from"react/jsx-runtime";var yr={bounce:Hr,slide:Br,zoom:Zr,flip:Vr},Wr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?yr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};qr(o.message,r)},Rr=(o)=>{console.log("Log event",o)},nr=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(p){console.error("[IOEventsCard] Failed to show notification",p)}},f=window.Notification.permission;if(f==="granted"){r();return}if(f==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((p)=>{if(p==="granted")r()})},Jr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:f,useMittSupport:p,centrifugeChannel:C}=o,P=Gr(q),i=$r(P);i.current=P;let S=Mr(()=>({alert:Wr,log:Rr,push:nr,redirect:(t)=>{if(t.to){let m=t.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else i.current?.(m)}else window.location.reload()},reload:(t)=>{if(t.to){let m=t.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else i.current?.(m)}else window.location.reload()}}),[]);return X(Qr,{children:X(w,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:f,useMittSupport:p,centrifugeChannel:C,methods:S,children:X(zr,{})})})},fo=Jr;var Xr=A({name:"IOEventsCard",component:fo,metadata:{author:"Swarm.ing"}});import{useEffect as Co,useState as Yr}from"react";import{jsx as mo}from"react/jsx-runtime";var Fr=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:C,useCentrifugeSupport:P,useMittSupport:i,centrifugeChannel:S}=o,[t,m]=Yr(p);return Co(()=>{m(p)},[p]),Co(()=>{if(typeof window>"u")return;sessionStorage.setItem(f,t)},[f,t]),mo(w,{card:"SessionStorageCard",data:o,useSocketioSupport:C,useCentrifugeSupport:P,useMittSupport:i,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{sessionStorage.removeItem(f),m("")}},children:mo("input",{type:"hidden",id:r,name:r,value:t})})},io=Fr;var Kr=A({name:"SessionStorageCard",component:io,metadata:{author:"PieData"}});import{useEffect as uo,useState as Lr}from"react";import{jsx as Po}from"react/jsx-runtime";var _r=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:C,useCentrifugeSupport:P,useMittSupport:i,centrifugeChannel:S}=o,[t,m]=Lr(p);return uo(()=>{m(p)},[p]),uo(()=>{if(typeof window>"u")return;localStorage.setItem(f,t)},[f,t]),Po(w,{card:"DeviceStorageCard",data:o,useSocketioSupport:C,useCentrifugeSupport:P,useMittSupport:i,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{localStorage.removeItem(f),m("")}},children:Po("input",{type:"hidden",id:r,name:r,value:t})})},to=_r;var Er=A({name:"DeviceStorageCard",component:to,metadata:{author:"PieData"}});import{useEffect as So,useState as ar}from"react";import{jsx as Io}from"react/jsx-runtime";var br=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:C,useCentrifugeSupport:P,useMittSupport:i,centrifugeChannel:S}=o,[t,m]=ar(p);return So(()=>{m(p)},[p]),So(()=>{if(typeof window>"u")return;let u=window.Telegram?.WebApp?.CloudStorage;if(!u)return;u.setItem(f,t)},[f,t]),Io(w,{card:"CloudStorageCard",data:o,useSocketioSupport:C,useCentrifugeSupport:P,useMittSupport:i,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{let u=window.Telegram?.WebApp?.CloudStorage;if(u)u.removeItem(f);m("")}},children:Io("input",{type:"hidden",id:r,name:r,value:t})})},Uo=br;var kr=A({name:"CloudStorageCard",component:Uo,metadata:{author:"PieData"}});import{useEffect as Ao,useState as Nr}from"react";import{jsx as wo}from"react/jsx-runtime";var jr=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:C,useCentrifugeSupport:P,useMittSupport:i,centrifugeChannel:S}=o,[t,m]=Nr(p);return Ao(()=>{m(p)},[p]),Ao(()=>{if(typeof window>"u")return;let u=window.Telegram?.WebApp?.SecureStorage;if(!u)return;u.setItem(f,t)},[f,t]),wo(w,{card:"SecureStorageCard",data:o,useSocketioSupport:C,useCentrifugeSupport:P,useMittSupport:i,centrifugeChannel:S,methods:{update:({value:u})=>{m(u)},remove:()=>{let u=window.Telegram?.WebApp?.SecureStorage;if(u)u.removeItem(f);m("")}},children:wo("input",{type:"hidden",id:r,name:r,value:t})})},lo=jr;var cr=A({name:"SecureStorageCard",component:lo,metadata:{author:"PieData"}});import{useCallback as Y,useContext as F,useEffect as vr,useRef as sr,useState as xo}from"react";import{jsx as To}from"react/jsx-runtime";var hr=({data:o,content:r})=>{let{useLoader:f,noReturn:p,returnType:C,useSocketioSupport:P,useCentrifugeSupport:i,useMittSupport:S,centrifugeChannel:t}=o,m=F(V),u=F(Z)??B,[U,l]=xo(!1),[I,d]=xo(null),g=sr(r),x=F(z),T=Y((O)=>{if(O===null)l(!0);else if(l(!1),!p)g.current=O;if(!p)d(O)},[p]),D=Y((O)=>{g.current=O.content,d(O.content)},[]),H=Y((O)=>{if(O===null)l(!0);else if(l(!1),!p)for(let _ of O)x?.emit(_.name,_.data)},[p,x]);if(vr(()=>{d(r),l(!1)},[r]),!I&&f)return m;return To(w,{card:"AjaxGroupCard",data:o,methods:{changeContent:D},useSocketioSupport:P,useCentrifugeSupport:i,useMittSupport:S,centrifugeChannel:t,children:To(u,{uiConfig:I??g.current,setUiAjaxConfiguration:C==="events"?H:T})})},Oo=hr;var er=A({name:"AjaxGroupCard",component:Oo,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as go}from"react";import{jsx as K}from"react/jsx-runtime";var op=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p,url:C,sx:P}=o,i=go(q),S=go(Z)??B;return K(w,{card:p,data:o,children:K("div",{style:P,id:p,onClick:(m)=>{if(C)if(m.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(C))window.location.href=C;else i?.(C)},children:K(S,{setUiAjaxConfiguration:f,uiConfig:r})})})},Do=op;var rp=A({name:"BoxCard",component:Do,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as pp}from"react";import{jsx as L}from"react/jsx-runtime";var fp=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p,sx:C}=o,P=pp(Z)??B;return L(w,{card:p,data:o,children:L("div",{style:C,id:p,children:r.map((i,S)=>{return L(P,{uiConfig:i,setUiAjaxConfiguration:f},`children-${S}`)})})})},Ho=fp;var Cp=A({name:"OneOfCard",component:Ho,metadata:{author:"Swarm.ing",description:"Different variants"}});export{Vi as useWebApp,Ui as usePieMittAgentTools,em as usePieEmit,wi as useOpenAIWebRTC,zi as useMaxWebApp,vm as useAjaxSubmit,jm as unregisterComponent,Di as submitGlobalForm,Em as registry,Km as registerPieComponent,Nm as registerMultipleComponents,sm as readAjaxKey,Bi as pieName,am as hasComponent,_m as getRegistrySize,bm as getRegistryEntry,Ii as getMittAgentTools,pi as getEmitter,km as getComponentMeta,Lm as getAllRegisteredComponents,xi as cn,rr as UnionCard,Gm as UIRendererContext,qm as UILoading,Zm as UI,Ci as SocketIOContext,Kr as SessionStorageCard,ho as SequenceCard,cr as SecureStorageCard,Wm as PieTelegramRoot,$m as PieRoot,Qm as PieMaxRoot,di as PieConfigContext,Ym as PieCard,nm as PieBaseRoot,Oi as PIEBREAK,Cp as OneOfCard,ri as MittContext,Xr as IOEventsCard,Ar as HiddenCard,dr as HTMLEmbedCard,Pi as FallbackContext,Er as DeviceStorageCard,kr as CloudStorageCard,ii as CentrifugeIOContext,rp as BoxCard,Dr as AutoRedirectCard,er as AjaxGroupCard};
2
+ import{useContext as Tf,useEffect as Vf,useRef as NU}from"react";import{createContext as WU,useContext as QU}from"react";var x=WU(null),h=()=>{let f=QU(x);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},j=()=>{let{apiServer:f}=h();return f},e=j,u=()=>{let{centrifugeServer:f}=h();return f};var A=()=>{let{enableRenderingLog:f}=h();return f},Mf=A,Lf=()=>{let{pageProcessor:f}=h();return f};var zf="__piedemo__";import{createContext as RU}from"react";import{Centrifuge as Af}from"centrifuge";var Nf=new Map,d=(f,U)=>{if(!U)return null;let H=`${f}::${U}`,P=Nf.get(H);if(P)return P;async function C(){let D=await fetch(f+"api/centrifuge/gen_token");if(!D.ok){if(D.status===403)throw new Af.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${D.status}`)}return(await D.json()).token}let Z=new Af(U,{getToken:C});return Nf.set(H,Z),Z},_U=RU(null),N=_U;import{io as wU}from"socket.io-client";import{createContext as KU}from"react";var yf=new Map,b=(f)=>{let U=yf.get(f);if(U)return U;let H=wU(f,{autoConnect:!1,transports:["websocket"]});return yf.set(f,H),H},SU=KU(null),y=SU;import oU from"mitt";import{createContext as FU,useCallback as MU,useContext as LU}from"react";var If=null;function m(){if(!If)If=oU();return If}var mf=FU(null);function AU(f){let U=LU(mf);return MU((H,P)=>{(U??m()).emit(`pie${H}_${f}`,P)},[f,U])}var S=mf;import{jsx as EU,jsxs as kU,Fragment as mU}from"react/jsx-runtime";var yU=({card:f,data:U,children:H,useSocketioSupport:P=!1,useCentrifugeSupport:C=!1,useMittSupport:Z=!1,centrifugeChannel:D=void 0,methods:I=void 0,stored:$=void 0})=>{let z=Mf(),T=NU(I);if(T.current=I,z)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:P,centrifuge:C,mitt:Z,centrifugeChannel:D}),console.log("[PieCard] Methods:",I?Object.keys(I):"none"),console.log("[PieCard] Has children:",!!H);let X=Tf(y),G=Tf(N),O=Tf(S);if(Vf(()=>{if(!X||!P||!T.current||!U.name){if(z&&P)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!X,useSocketioSupport:P,hasMethods:!!T.current,hasDataName:!!U?.name});return}let q=Object.keys(T.current??{}).map((V)=>{let Y=`pie${V}_${U.name}`;if(z)console.log(`[PieCard] Socket.IO registering event: ${Y}`);let W=(B)=>{T.current?.[V]?.(B)};return X.on(Y,W),[Y,W]});return()=>{q.forEach(([V,Y])=>{if(z)console.log(`[PieCard] Socket.IO unregistering event: ${V}`);X.off(V,Y)})}},[X,U.name,P]),Vf(()=>{if(!G||!C||!D||!U.name){if(z&&C)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!G,useCentrifugeSupport:C,hasCentrifugeChannel:!!D,hasMethods:!!T.current,hasDataName:!!U?.name});return}let q=Object.keys(T.current??{}).map((V)=>{let Y=`pie${V}_${U.name}_${D}`;if(z)console.log(`[PieCard] Centrifuge subscribing to channel: ${Y}`);let W=G.newSubscription(Y);return W.on("publication",(B)=>{if(z)console.log(`[PieCard] Centrifuge received data on ${Y}:`,B.data);T.current?.[V]?.(B.data)}),W.subscribe(),W});return()=>{q.forEach((V)=>{if(z)console.log("[PieCard] Centrifuge unsubscribing from channel");V.unsubscribe(),G.removeSubscription(V)})}},[G,D,U.name,C]),Vf(()=>{if(!O||!Z||!U.name){if(z&&Z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!O,useMittSupport:Z,hasMethods:!!T.current,hasDataName:!!U?.name});return}let J=Object.keys(T.current??{}),q={};return J.forEach((V)=>{let Y=`pie${V}_${U.name}`,W=(B)=>{if(z)console.log(`[PieCard] Mitt registering event: ${Y}`);T.current?.[V]?.(B)};q[Y]=W,O.on(Y,W)}),()=>{Object.entries(q).forEach(([V,Y])=>{if(z)console.log(`[PieCard] Mitt unregistering event: ${V}`);O.off(V,Y)})}},[O,U.name,Z]),z)console.log("[PieCard] Rendering complete, returning children");if($!==void 0)return kU(mU,{children:[EU("input",{type:"hidden",name:U.name,value:JSON.stringify($)}),H]});return H},_=yU;import{lazy as xU}from"react";var Of=new Map;function Ef(f,U){return xU(()=>{if(Of.has(U))return Of.get(U);let H=f().then((P)=>P);return Of.set(U,H),H})}var p=new Map,jU=(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 U={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=Ef(U.loader,f.name),U.loader=void 0,U.isLazy=!0;return U};function Q(f){let U=jU(f);return p.set(U.name,U),U.component}var uU=(f)=>{f.forEach((U)=>Q(U))},dU=(f)=>{p.delete(f)},bU=(f)=>{return p.has(f)},pU=(f)=>{return p.get(f)?.metadata},r=(f)=>{return p.get(f)},gU=()=>{return Array.from(p.keys())},vU=()=>{return p.size};import{Suspense as nU,useContext as tU,memo as iU}from"react";import{createContext as cU}from"react";import{jsx as rU,Fragment as lU}from"react/jsx-runtime";var hU=cU(rU(lU,{})),K=hU;import{jsx as Jf}from"react/jsx-runtime";function sU({uiConfig:f,setUiAjaxConfiguration:U}){let H=tU(K),P=A();if(P)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:",!!U);let C=r(f.card);if(!C?.component){if(P)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return H}if(P)console.log("[UI] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata});let Z=C.component,D=Jf(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(C.isLazy){if(P)console.log("[UI] Rendering lazy component with Suspense:",C.name);return Jf(nU,{fallback:C.fallback?Jf(C.fallback,{}):H,children:D},`${C.name}`)}if(P)console.log("[UI] Rendering component directly:",C.name);return D}var w=iU(sU);import{Suspense as fP,useContext as UP}from"react";import{createContext as aU}from"react";var eU=aU(null),E=eU;import{jsx as ff}from"react/jsx-runtime";function kf({uiConfig:f,setUiAjaxConfiguration:U}){let H=UP(K),P=A();if(P)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:",!!U);let C=r(f.card);if(!C?.component){if(P)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return H}if(P)console.log("[UILoading] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata,hasFallback:!!C.fallback});if(C.fallback){if(P)console.log("[UILoading] Rendering fallback for:",C.name);let I=C.fallback;return ff(I,{})}if(P)console.log("[UILoading] No fallback, rendering full component:",C.name);let Z=C.component,D=ff(E.Provider,{value:kf,children:ff(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(C.isLazy)return ff(fP,{fallback:H,children:D},`${C.name}`);return D}var Yf=kf;import{useContext as PP}from"react";import{jsx as Xf}from"react/jsx-runtime";var CP=({data:f,content:U,setUiAjaxConfiguration:H})=>{let{name:P,sx:C}=f,Z=PP(E)??w;return Xf(_,{card:P,data:f,children:Xf("div",{style:C,id:P,children:U.map((D,I)=>{return Xf(Z,{uiConfig:D,setUiAjaxConfiguration:H},`children-${I}`)})})})},xf=CP;var HP=Q({name:"SequenceCard",component:xf,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as DP}from"react";import{jsx as jf}from"react/jsx-runtime";var ZP=({data:f,content:U,setUiAjaxConfiguration:H})=>{let{name:P}=f,C=DP(E)??w;return jf(_,{card:P,data:f,children:U.map((Z,D)=>{return jf(C,{uiConfig:Z,setUiAjaxConfiguration:H},`children-${D}`)})})},uf=ZP;var $P=Q({name:"UnionCard",component:uf,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as VP,useState as OP}from"react";import JP from"html-react-parser";import{useCallback as Uf,useEffect as zP,useRef as Gf,useState as IP}from"react";function TP(){let f=new AudioContext,U=f.createOscillator(),H=U.connect(f.createMediaStreamDestination());U.start();let P=H.stream.getAudioTracks()[0];return P.enabled=!1,P}function Pf(f=null,U){let[H,P]=IP(!1),C=Gf(null),Z=Gf(null),D=Gf(null),I=Uf(async(X,G=!0)=>{if(C.current)$();let O=new RTCPeerConnection;if(O.onconnectionstatechange=()=>{if(O.connectionState==="connected")P(!0);else if(["disconnected","failed","closed"].includes(O.connectionState))P(!1)},O.ontrack=(R)=>{if(f)f.srcObject=R.streams[0]},G){let R=await navigator.mediaDevices.getUserMedia({audio:!0});O.addTrack(R.getTracks()[0],R)}else{let R=TP();O.addTrack(R)}let J=O.createDataChannel("oai-events");Z.current=J,D.current=new Promise((R)=>{J.addEventListener("open",()=>{R()})});let q=await O.createOffer();await O.setLocalDescription(q);let B=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:q.sdp,headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/sdp"}})).text();await O.setRemoteDescription({type:"answer",sdp:B}),C.current=O,await D.current},[f]),$=Uf(()=>{let X=Z.current;if(X)X.close();C.current?.getSenders()?.forEach((G)=>G.track?.stop()),C.current?.close(),P(!1),C.current=null,Z.current=null,D.current=null},[f]),z=Uf((X)=>{let G=Z.current;if(!G){console.error("Data channel is not ready",X);return}let O=new Date().toLocaleTimeString();if(X.event_id=X.event_id||crypto.randomUUID(),G.send(JSON.stringify(X)),!X.timestamp)X.timestamp=O;U?.(X)},[U,f]),T=Uf((X)=>{if(!Z.current){console.error("Data channel is not ready");return}let O=()=>{z({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:X}]}}),z({type:"response.create"})};if(D.current)D.current.then(O);else O()},[U,f]);return zP(()=>{let X=Z.current;if(!X)return;let G=(O)=>{let J=JSON.parse(O.data);if(!J.timestamp)J.timestamp=new Date().toLocaleTimeString();U?.(J)};return X.addEventListener("message",G),()=>{X.removeEventListener("message",G)}},[U,f]),{isSessionActive:H,startSession:I,stopSession:$,sendTextMessage:T}}import{jsx as XP}from"react/jsx-runtime";var YP=({data:f})=>{let{html:U,useSocketioSupport:H,useCentrifugeSupport:P,useMittSupport:C,centrifugeChannel:Z}=f,[D,I]=OP(U),{isSessionActive:$,startSession:z,sendTextMessage:T}=Pf(null,(J)=>{if(console.log(J.type,J.type==="response.output_text.delta"&&J.delta),J.type==="response.output_text.delta"&&J.delta)I((q)=>q+J.delta)});return VP(()=>{I(U)},[U]),XP(_,{card:"HTMLEmbedCard",data:f,methods:{update:(J)=>{I(J.value)},generateUsingAI:async(J)=>{try{if(!$&&J.token)await z(J.token,!1);T(J.prompt)}catch(q){console.error("Failed to generate using AI",q)}},initializeAI:async(J)=>{if(!$&&J.token)await z(J.token,!1)}},useCentrifugeSupport:P,useSocketioSupport:H,useMittSupport:C,centrifugeChannel:Z,children:JP(D)})},df=YP;var GP=Q({name:"HTMLEmbedCard",component:df,metadata:{author:"Swarm.ing"}});import{useEffect as qP,useState as BP}from"react";import{jsx as bf}from"react/jsx-runtime";var WP=({data:f})=>{let{name:U,value:H,useSocketioSupport:P,useCentrifugeSupport:C,useMittSupport:Z,centrifugeChannel:D}=f,[I,$]=BP(H);return qP(()=>{$(H)},[H]),bf(_,{card:"HiddenCard",data:f,useSocketioSupport:P,useCentrifugeSupport:C,useMittSupport:Z,centrifugeChannel:D,methods:{update:({value:z})=>{$(z)}},children:bf("input",{type:"hidden",id:U,name:U,value:I})})},pf=WP;var QP=Q({name:"HiddenCard",component:pf,metadata:{author:"Swarm.ing"}});import{useContext as gf,useEffect as wP}from"react";import{createContext as RP}from"react";var _P=RP(void 0),o=_P;import{jsx as oP,Fragment as SP}from"react/jsx-runtime";var KP=({data:f})=>{let{url:U}=f,H=gf(o),P=gf(K);return wP(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else H?.(U)},[U,H]),oP(SP,{children:P})},vf=KP;var FP=Q({name:"AutoRedirectCard",component:vf,metadata:{author:"Swarm.ing"}});import{Bounce as MP,Slide as LP,Zoom as AP,Flip as NP}from"react-toastify";import{toast as yP,ToastContainer as mP}from"react-toastify";import{useContext as EP,useMemo as kP,useRef as xP}from"react";import{jsx as qf,Fragment as gP}from"react/jsx-runtime";var jP={bounce:MP,slide:LP,zoom:AP,flip:NP},uP=(f)=>{let U={...f,type:f.alertType,transition:f.transition?jP[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};yP(f.message,U)},dP=(f)=>{console.log("Log event",f)},bP=(f)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(P){console.error("[IOEventsCard] Failed to show notification",P)}},H=window.Notification.permission;if(H==="granted"){U();return}if(H==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((P)=>{if(P==="granted")U()})},pP=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:H,useMittSupport:P,centrifugeChannel:C}=f,Z=EP(o),D=xP(Z);D.current=Z;let I=kP(()=>({alert:uP,log:dP,push:bP,redirect:($)=>{if($.to){let z=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else D.current?.(z)}else window.location.reload()},reload:($)=>{if($.to){let z=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else D.current?.(z)}else window.location.reload()}}),[]);return qf(gP,{children:qf(_,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:H,useMittSupport:P,centrifugeChannel:C,methods:I,children:qf(mP,{})})})},cf=pP;var vP=Q({name:"IOEventsCard",component:cf,metadata:{author:"Swarm.ing"}});import{useEffect as hf,useState as cP}from"react";import{jsx as lf}from"react/jsx-runtime";var hP=({data:f})=>{let{name:U,key:H,value:P,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=cP(P);return hf(()=>{z(P)},[P]),hf(()=>{if(typeof window>"u")return;sessionStorage.setItem(H,$)},[H,$]),lf(_,{card:"SessionStorageCard",data:f,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{sessionStorage.removeItem(H),z("")}},children:lf("input",{type:"hidden",id:U,name:U,value:$})})},rf=hP;var lP=Q({name:"SessionStorageCard",component:rf,metadata:{author:"PieData"}});import{useEffect as nf,useState as rP}from"react";import{jsx as tf}from"react/jsx-runtime";var nP=({data:f})=>{let{name:U,key:H,value:P,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=rP(P);return nf(()=>{z(P)},[P]),nf(()=>{if(typeof window>"u")return;localStorage.setItem(H,$)},[H,$]),tf(_,{card:"DeviceStorageCard",data:f,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{localStorage.removeItem(H),z("")}},children:tf("input",{type:"hidden",id:U,name:U,value:$})})},sf=nP;var tP=Q({name:"DeviceStorageCard",component:sf,metadata:{author:"PieData"}});import{useEffect as af,useState as iP}from"react";import{jsx as ef}from"react/jsx-runtime";var sP=({data:f})=>{let{name:U,key:H,value:P,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=iP(P);return af(()=>{z(P)},[P]),af(()=>{if(typeof window>"u")return;let T=window.Telegram?.WebApp?.CloudStorage;if(!T)return;T.setItem(H,$)},[H,$]),ef(_,{card:"CloudStorageCard",data:f,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{let T=window.Telegram?.WebApp?.CloudStorage;if(T)T.removeItem(H);z("")}},children:ef("input",{type:"hidden",id:U,name:U,value:$})})},fU=sP;var aP=Q({name:"CloudStorageCard",component:fU,metadata:{author:"PieData"}});import{useEffect as UU,useState as eP}from"react";import{jsx as PU}from"react/jsx-runtime";var fC=({data:f})=>{let{name:U,key:H,value:P,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=eP(P);return UU(()=>{z(P)},[P]),UU(()=>{if(typeof window>"u")return;let T=window.Telegram?.WebApp?.SecureStorage;if(!T)return;T.setItem(H,$)},[H,$]),PU(_,{card:"SecureStorageCard",data:f,useSocketioSupport:C,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{let T=window.Telegram?.WebApp?.SecureStorage;if(T)T.removeItem(H);z("")}},children:PU("input",{type:"hidden",id:U,name:U,value:$})})},CU=fC;var UC=Q({name:"SecureStorageCard",component:CU,metadata:{author:"PieData"}});import{useCallback as Bf,useContext as Wf,useEffect as PC,useRef as CC,useState as HU}from"react";import{jsx as DU}from"react/jsx-runtime";var HC=({data:f,content:U})=>{let{useLoader:H,noReturn:P,returnType:C,useSocketioSupport:Z,useCentrifugeSupport:D,useMittSupport:I,centrifugeChannel:$}=f,z=Wf(K),T=Wf(E)??w,[X,G]=HU(!1),[O,J]=HU(null),q=CC(U),V=Wf(S),Y=Bf((R)=>{if(R===null)G(!0);else if(G(!1),!P)q.current=R;if(!P)J(R)},[P]),W=Bf((R)=>{q.current=R.content,J(R.content)},[]),B=Bf((R)=>{if(R===null)G(!0);else if(G(!1),!P)for(let s of R)V?.emit(s.name,s.data)},[P,V]);if(PC(()=>{J(U),G(!1)},[U]),!O&&H)return z;return DU(_,{card:"AjaxGroupCard",data:f,methods:{changeContent:W},useSocketioSupport:Z,useCentrifugeSupport:D,useMittSupport:I,centrifugeChannel:$,children:DU(T,{uiConfig:O??q.current,setUiAjaxConfiguration:C==="events"?B:Y})})},ZU=HC;var DC=Q({name:"AjaxGroupCard",component:ZU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as $U}from"react";import{jsx as Qf}from"react/jsx-runtime";var ZC=({data:f,content:U,setUiAjaxConfiguration:H})=>{let{name:P,url:C,sx:Z}=f,D=$U(o),I=$U(E)??w;return Qf(_,{card:P,data:f,children:Qf("div",{style:Z,id:P,onClick:(z)=>{if(C)if(z.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(C))window.location.href=C;else D?.(C)},children:Qf(I,{setUiAjaxConfiguration:H,uiConfig:U})})})},zU=ZC;var $C=Q({name:"BoxCard",component:zU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as zC}from"react";import{jsx as Rf}from"react/jsx-runtime";var IC=({data:f,content:U,setUiAjaxConfiguration:H})=>{let{name:P,sx:C}=f,Z=zC(E)??w;return Rf(_,{card:P,data:f,children:Rf("div",{style:C,id:P,children:U.map((D,I)=>{return Rf(Z,{uiConfig:D,setUiAjaxConfiguration:H},`children-${I}`)})})})},IU=IC;var TC=Q({name:"OneOfCard",component:IU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as n}from"react";import{QueryClient as QC,QueryClientProvider as RC,useQuery as _C}from"@tanstack/react-query";import{useContext as JC,useEffect as YC}from"react";import{useEffect as VC,useState as OC}from"react";var Cf=new Map,Hf=new Map;function Df(f,U){let H=`${f}::${U}`,P=f?Cf.get(H):void 0,[C,Z]=OC(P??null);return VC(()=>{if(!f)return;if(Cf.has(H)){Z(Cf.get(H));return}let D=Hf.get(H);if(!D)D=fetch(f+`api/support/${U}`,{method:"GET"}).then(($)=>$.json()).then(($)=>{return Cf.set(H,$),Hf.delete(H),$}).catch(($)=>{throw Hf.delete(H),$}),Hf.set(H,D);let I=!1;return D.then(($)=>{if(!I)Z($)}).catch(()=>{}),()=>{I=!0}},[f,U,H]),C}var _f=null,TU=null;function VU(){TU?.()}function wf(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!_f)_f=new Promise((f)=>{TU=()=>{f()}});return _f}var XC=({children:f})=>{let U=JC(y),H=e(),P=Df(H,"socketIO"),C=(Z)=>{if(typeof window<"u")window.sid=Z.sid,VU(),console.log(`SocketIO initialized: ${window.sid}`)};return YC(()=>{if(!U)return;let Z=()=>{console.log("SocketIO connected")},D=(I)=>{console.log(`SocketIO disconnected: ${I}`),U.connect()};if(P)U.on("pieinit",C),U.on("connect",Z),U.on("disconnect",D),U.connect();return()=>{if(P)U.off("pieinit",C),U.off("connect",Z),U.off("disconnect",D),U.disconnect()}},[U,P]),f},g=XC;import{useContext as GC,useEffect as qC}from"react";var BC=({children:f})=>{let U=GC(N),H=e(),P=Df(H,"centrifuge");return qC(()=>{if(!U)return;let C=()=>{console.log("Centrifuge connected")},Z=(D)=>{console.log("Centrifuge disconnected:",D)};if(P)U.on("connected",C),U.on("disconnected",Z),U.connect();return()=>{if(P)U.disconnect()}},[U,P]),f},v=BC;import{createAxiosDateTransformer as wC}from"axios-date-transformer";import{jsx as WC}from"react/jsx-runtime";function l(f,U,H){if(!U)return H;let P=f.replace(/^\//,""),C=U[P];if(!C)return H;return WC(Yf,{uiConfig:C})}import{jsx as F,Fragment as oC}from"react/jsx-runtime";var KC=({location:f,fallback:U,piecache:H,onError:P,queryOptions:C,disableGlobalForm:Z})=>{let D=j(),I=u(),$=A(),z=n(()=>wC({baseURL:D||""}),[D]),T=n(()=>m(),[]),X=n(()=>D?b(D):null,[D]),G=n(()=>D?d(D,I):null,[D,I]),{data:O,isLoading:J,error:q}=_C({queryKey:["uiConfig",f.pathname+f.search,D],enabled:!!D,queryFn:async()=>{let Y=new URLSearchParams(f.search);Y.set("__pieroot","web");let W="/api/content"+f.pathname+"?"+Y.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",W);let B=await z.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",B.data);return B.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Y)=>Math.min(1000*2**Y,30000),...C}),V=l(f.pathname,H,U);if(!D)return V??null;if($)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",I),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!H);if(q){if($)console.error("[PieRoot] Error fetching UI configuration:",q),console.error("[PieRoot] Error details:",{message:q.message,status:q.response?.status,data:q.response?.data});return P?.(),V}if(J||!O){if($)console.log("[PieRoot] Loading state:",{isLoading:J,hasUiConfiguration:!!O});return V}if($)console.log("[PieRoot] UI configuration loaded successfully:",O),console.log("[PieRoot] Rendering UI with configuration");return F(S.Provider,{value:T,children:F(y.Provider,{value:X,children:F(N.Provider,{value:G,children:F(K.Provider,{value:U??F(oC,{}),children:F(g,{children:F(v,{children:Z?F(w,{uiConfig:O}):F("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:F(w,{uiConfig:O})})})})})})})})},SC=(f)=>{let U=n(()=>new QC,[]);return F(o.Provider,{value:f.onNavigate,children:F(x.Provider,{value:f.config,children:F(RC,{client:U,children:F(KC,{...f})})})})},FC=SC;import{useMemo as t}from"react";import{QueryClient as AC,QueryClientProvider as NC,useQuery as yC}from"@tanstack/react-query";import{createAxiosDateTransformer as mC}from"axios-date-transformer";import{useEffect as MC,useState as LC}from"react";var Kf=({onError:f}={})=>{let[U,H]=LC(null),P=Lf();return MC(()=>{if(typeof window>"u")return;let C=window.Telegram?.WebApp;if(!C)return;try{C.ready?.()}catch(Z){f?.()}if(P==="telegram_expanded"&&(C.platform==="ios"||C.platform==="android"))C.expand();H(C)},[]),U};import{jsx as M,Fragment as xC}from"react/jsx-runtime";var EC=({location:f,fallback:U,piecache:H,onError:P,queryOptions:C,disableGlobalForm:Z})=>{let D=j(),I=u(),$=A(),z=t(()=>mC({baseURL:D}),[D]),T=t(()=>m(),[]),X=t(()=>D?b(D):null,[D]),G=t(()=>D?d(D,I):null,[D,I]),O=Kf({onError:P}),{data:J,isLoading:q,error:V}=yC({queryKey:["uiConfig",f.pathname+f.search,O?.initData],enabled:!!O?.initData,queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","telegram"),O?.initData)W.set("initData",O.initData);let B="/api/content"+f.pathname+"?"+W.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await z.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...C}),Y=l(f.pathname,H,U);if(!D)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&$)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),P?.(),Y;if(q||!J){if($)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!J});return Y}if($)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return M(S.Provider,{value:T,children:M(y.Provider,{value:X,children:M(N.Provider,{value:G,children:M(K.Provider,{value:U??M(xC,{}),children:M(g,{children:M(v,{children:Z?M(w,{uiConfig:J}):M("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:M(w,{uiConfig:J})})})})})})})})},kC=(f)=>{let U=t(()=>new AC,[]);return M(o.Provider,{value:f.onNavigate,children:M(x.Provider,{value:f.config,children:M(NC,{client:U,children:M(EC,{...f})})})})},jC=kC;import{useMemo as Sf,useState as uC}from"react";import{QueryClient as dC,QueryClientProvider as bC}from"@tanstack/react-query";import{jsx as k,Fragment as vC}from"react/jsx-runtime";var pC=({location:f,fallback:U,children:H,disableGlobalForm:P})=>{let C=j(),Z=u(),D=A(),I=Sf(()=>m(),[]),$=Sf(()=>C?b(C):null,[C]),z=Sf(()=>C?d(C,Z):null,[C,Z]);if(D)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",C),console.log("[PieRoot] CENTRIFUGE_SERVER:",Z),console.log("[PieRoot] Fallback provided:",!!U);return k(S.Provider,{value:I,children:k(y.Provider,{value:$,children:k(N.Provider,{value:z,children:k(K.Provider,{value:U??k(vC,{}),children:k(g,{children:k(v,{children:P?H:k("form",{id:"piedata_global_form",action:C+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:H})})})})})})})},gC=(f)=>{let[U]=uC(()=>new dC);return k(o.Provider,{value:f.onNavigate,children:k(x.Provider,{value:f.config,children:k(bC,{client:U,children:k(pC,{...f})})})})},cC=gC;import{useMemo as i}from"react";import{QueryClient as rC,QueryClientProvider as nC,useQuery as tC}from"@tanstack/react-query";import{createAxiosDateTransformer as iC}from"axios-date-transformer";import{useEffect as hC,useState as lC}from"react";var of=()=>{let[f,U]=lC(null);return hC(()=>{if(typeof window>"u")return;let H=window.WebApp;if(!H)return;H.ready(),U(H)},[]),f};import{jsx as L,Fragment as eC}from"react/jsx-runtime";var sC=({location:f,fallback:U,piecache:H,onError:P,queryOptions:C,disableGlobalForm:Z})=>{let D=j(),I=u(),$=A(),z=i(()=>iC({baseURL:D}),[D]),T=i(()=>m(),[]),X=i(()=>D?b(D):null,[D]),G=i(()=>D?d(D,I):null,[D,I]),O=of(),{data:J,isLoading:q,error:V}=tC({queryKey:["uiConfig",f.pathname+f.search,O?.initData],queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","max"),O?.initData)W.set("initData",O.initData);let B="/api/content"+f.pathname+"?"+W.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await z.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},enabled:!!O?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...C}),Y=l(f.pathname,H,U);if(!D)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&$)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),P?.(),Y;if(q||!J){if($)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!J});return Y}if($)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return L(S.Provider,{value:T,children:L(y.Provider,{value:X,children:L(N.Provider,{value:G,children:L(K.Provider,{value:U??L(eC,{}),children:L(g,{children:L(v,{children:Z?L(w,{uiConfig:J}):L("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:L(w,{uiConfig:J})})})})})})})})},aC=(f)=>{let U=i(()=>new rC,[]);return L(o.Provider,{value:f.onNavigate,children:L(x.Provider,{value:f.config,children:L(nC,{client:U,children:L(sC,{...f})})})})},fH=aC;import{useMemo as UH}from"react";var OU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let H=document.getElementsByName(f);if(!H.length){if(U)console.warn(`No input found with name ${f}`);return[]}let P=H[0];if(P instanceof HTMLInputElement){if(P.type==="file"&&P.files)return Array.from(P.files);return[P.value]}if(P instanceof HTMLTextAreaElement)return[P.value];return[]},PH=(f,U={},H=[],P,C)=>{let Z=C?.renderingLogEnabled??!1,D=C?.timeout,I=C?.retryPolicy,$=I?.maxRetries??0,z=I?.baseDelay??1000,T=I?.retryOn??[502,503,504];if(Z)console.log("Registering AJAX: ",P,U,H);return async(X={})=>{if(typeof window>"u"||typeof document>"u"){if(Z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let G=C?.apiServer;if(!G){if(Z)console.warn("AJAX skipped: apiServer is missing");return}if(!P||!f){if(Z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(H.includes("sid"))await wf();let O=new FormData;for(let[V,Y]of Object.entries({...U,...X}))O.append(V,Y);for(let V of H)for(let Y of OU(V,Z))O.append(V,Y);let J=G+"api/ajax_content"+P;f(null);let q;for(let V=0;V<=$;V++){if(V>0){let B=z*2**(V-1);if(Z)console.log(`AJAX retry ${V}/${$} after ${B}ms`);await new Promise((R)=>setTimeout(R,B))}let Y=D!=null?new AbortController:null,W=Y&&setTimeout(()=>Y.abort(),D);try{let B=await fetch(J,{method:"POST",body:O,signal:Y?.signal});if(W)clearTimeout(W);if(!B.ok&&T.includes(B.status)&&V<$){q=Error(`HTTP ${B.status}`);continue}let s=(B.headers.get("content-type")||"").includes("application/json");if(!!B.body?.getReader&&!s){let a=B.body.getReader(),XU=new TextDecoder,c="";while(!0){let{done:Zf,value:GU}=await a.read();if(Zf)break;c+=XU.decode(GU,{stream:!0});let Ff=c.split(`
3
+ `);c=Ff.pop()??"";for(let qU of Ff){let $f=qU.trim();if(!$f)continue;try{let BU=JSON.parse($f);f([BU])}catch{if(Z)console.warn("Failed to parse streamed line:",$f)}}}if(c.trim())try{let Zf=JSON.parse(c);f([Zf])}catch{if(Z)console.warn("Failed to parse final streamed line:",c)}return{}}else{let a=await B.json();return f(a),a}}catch(B){if(W)clearTimeout(W);if(q=B,V<$)continue;if(Z)console.error("AJAX request failed:",B);return f(null),B}}if(Z)console.error("AJAX request failed after retries:",q);return f(null),q}},CH=(f,U={},H=[],P,C)=>{let{apiServer:Z,enableRenderingLog:D}=h(),I=JSON.stringify(U),$=JSON.stringify(H),z=JSON.stringify(C);return UH(()=>PH(f,U,H,P,{apiServer:Z,renderingLogEnabled:D,timeout:C?.timeout,retryPolicy:C?.retryPolicy}),[f,I,$,P,Z,D,z])};import{tool as HH}from"@openai/agents";import{useContext as DH,useMemo as ZH}from"react";var JU=/^pie(.+?)_(.+)$/;function YU(f=m(),U={}){let H=[],P=new Set;for(let C of f.all.keys()){if(typeof C!=="string")continue;let Z=C.match(JU);if(!Z)continue;let[,D,I]=Z,$={methodName:D,cardName:I,eventName:C};if(U.filter&&!U.filter($))continue;let z=U.nameFor?.($)??`${I}_${D}`;if(P.has(z))continue;P.add(z);let T=U.describe?.($)??`Invokes the "${D}" method on the PieCard "${I}" by emitting the in-process mitt event "${C}". The optional "payload" argument is forwarded verbatim to the card's handler.`;H.push(HH({name:z,description:T,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(X)=>{let G=X?.payload;return f.emit(C,G),`Emitted "${C}"`}}))}return H}function $H(f={}){let H=DH(S)??m(),P=[];for(let $ of H.all.keys())if(typeof $==="string"&&JU.test($))P.push($);P.sort();let C=P.join("|"),{filter:Z,describe:D,nameFor:I}=f;return ZH(()=>YU(H,{filter:Z,describe:D,nameFor:I}),[H,C,Z,D,I])}import{clsx as zH}from"clsx";import{twMerge as IH}from"tailwind-merge";function TH(...f){return IH(zH(f))}var VH=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var OH=(f,U)=>`${f}${zf}${U}`;export{Kf as useWebApp,$H as usePieMittAgentTools,AU as usePieEmit,Pf as useOpenAIWebRTC,of as useMaxWebApp,CH as useAjaxSubmit,dU as unregisterComponent,VH as submitGlobalForm,p as registry,Q as registerPieComponent,uU as registerMultipleComponents,OU as readAjaxKey,OH as pieName,bU as hasComponent,vU as getRegistrySize,r as getRegistryEntry,YU as getMittAgentTools,m as getEmitter,pU as getComponentMeta,gU as getAllRegisteredComponents,TH as cn,$P as UnionCard,E as UIRendererContext,Yf as UILoading,w as UI,y as SocketIOContext,lP as SessionStorageCard,HP as SequenceCard,UC as SecureStorageCard,jC as PieTelegramRoot,FC as PieRoot,fH as PieMaxRoot,x as PieConfigContext,_ as PieCard,cC as PieBaseRoot,zf as PIEBREAK,TC as OneOfCard,S as MittContext,vP as IOEventsCard,QP as HiddenCard,GP as HTMLEmbedCard,K as FallbackContext,tP as DeviceStorageCard,aP as CloudStorageCard,N as CentrifugeIOContext,$C as BoxCard,FP as AutoRedirectCard,DC as AjaxGroupCard};
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  "use client";
2
- var $r=Object.create;var{getPrototypeOf:yr,defineProperty:X,getOwnPropertyNames:To,getOwnPropertyDescriptor:Wr}=Object,Oo=Object.prototype.hasOwnProperty;function go(o){return this[o]}var Rr,nr,H=(o,r,f)=>{var p=o!=null&&typeof o==="object";if(p){var C=r?Rr??=new WeakMap:nr??=new WeakMap,u=C.get(o);if(u)return u}f=o!=null?$r(yr(o)):{};let i=r||!o||!o.__esModule?X(f,"default",{value:o,enumerable:!0}):f;for(let d of To(o))if(!Oo.call(i,d))X(i,d,{get:go.bind(o,d),enumerable:!0});if(p)C.set(o,i);return i},Jr=(o)=>{var r=(xo??=new WeakMap).get(o),f;if(r)return r;if(r=X({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function"){for(var p of To(o))if(!Oo.call(r,p))X(r,p,{get:go.bind(o,p),enumerable:!(f=Wr(o,p))||f.enumerable})}return xo.set(o,r),r},xo;var Qr=(o)=>o;function Xr(o,r){this[o]=Qr.bind(null,r)}var Yr=(o,r)=>{for(var f in r)X(o,f,{get:r[f],enumerable:!0,configurable:!0,set:Xr.bind(r,f)})};var xp={};Yr(xp,{useWebApp:()=>Gr.useWebApp,usePieMittAgentTools:()=>fo.usePieMittAgentTools,usePieEmit:()=>Tr.usePieEmit,useOpenAIWebRTC:()=>Br.default,useMaxWebApp:()=>Mr.useMaxWebApp,useAjaxSubmit:()=>ro.useAjaxSubmit,unregisterComponent:()=>g.unregisterComponent,submitGlobalForm:()=>qr.submitGlobalForm,registry:()=>g.registry,registerPieComponent:()=>g.registerPieComponent,registerMultipleComponents:()=>g.registerMultipleComponents,readAjaxKey:()=>ro.readAjaxKey,pieName:()=>zr.pieName,hasComponent:()=>g.hasComponent,getRegistrySize:()=>g.getRegistrySize,getRegistryEntry:()=>g.getRegistryEntry,getMittAgentTools:()=>fo.getMittAgentTools,getEmitter:()=>po.getEmitter,getComponentMeta:()=>g.getComponentMeta,getAllRegisteredComponents:()=>g.getAllRegisteredComponents,cn:()=>Zr.cn,UnionCard:()=>Xo,UIRendererContext:()=>Ir.default,UILoading:()=>Sr.default,UI:()=>dr.default,SocketIOContext:()=>Or.default,SessionStorageCard:()=>vo,SequenceCard:()=>no,SecureStorageCard:()=>pr,PieTelegramRoot:()=>Ar.default,PieRoot:()=>Ur.default,PieMaxRoot:()=>lr.default,PieConfigContext:()=>Hr.PieConfigContext,PieCard:()=>xr.default,PieBaseRoot:()=>wr.default,PIEBREAK:()=>Vr.PIEBREAK,OneOfCard:()=>tr,MittContext:()=>po.default,IOEventsCard:()=>jo,HiddenCard:()=>Eo,HTMLEmbedCard:()=>Lo,FallbackContext:()=>Dr.default,DeviceStorageCard:()=>ho,CloudStorageCard:()=>or,CentrifugeIOContext:()=>gr.default,BoxCard:()=>ir,AutoRedirectCard:()=>ko,AjaxGroupCard:()=>Cr});module.exports=Jr(xp);var z=require("react");var E=require("react"),Fr=E.createContext(null),Kr=()=>{let o=E.useContext(Fr);if(!o)throw Error("usePieConfig must be used within PieConfigProvider");return o};var Co=()=>{let{enableRenderingLog:o}=Kr();return o},Do=Co;var Ho=require("react"),Lr=require("centrifuge");var _r=Ho.createContext(null),Bo=_r;var Er=require("socket.io-client"),Zo=require("react");var ar=Zo.createContext(null),Vo=ar;var br=H(require("mitt")),a=require("react");var kr=a.createContext(null);var b=kr;var y=require("react/jsx-runtime"),Nr=({card:o,data:r,children:f,useSocketioSupport:p=!1,useCentrifugeSupport:C=!1,useMittSupport:u=!1,centrifugeChannel:i=void 0,methods:d=void 0,stored:t=void 0})=>{let m=Do(),P=z.useRef(d);if(P.current=d,m)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:p,centrifuge:C,mitt:u,centrifugeChannel:i}),console.log("[PieCard] Methods:",d?Object.keys(d):"none"),console.log("[PieCard] Has children:",!!f);let U=z.useContext(Vo),l=z.useContext(Bo),I=z.useContext(b);if(z.useEffect(()=>{if(!U||!p||!P.current||!r.name){if(m&&p)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!U,useSocketioSupport:p,hasMethods:!!P.current,hasDataName:!!r?.name});return}let D=Object.keys(P.current??{}).map((x)=>{let T=`pie${x}_${r.name}`;if(m)console.log(`[PieCard] Socket.IO registering event: ${T}`);let V=(q)=>{P.current?.[x]?.(q)};return U.on(T,V),[T,V]});return()=>{D.forEach(([x,T])=>{if(m)console.log(`[PieCard] Socket.IO unregistering event: ${x}`);U.off(x,T)})}},[U,r.name,p]),z.useEffect(()=>{if(!l||!C||!i||!r.name){if(m&&C)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!l,useCentrifugeSupport:C,hasCentrifugeChannel:!!i,hasMethods:!!P.current,hasDataName:!!r?.name});return}let D=Object.keys(P.current??{}).map((x)=>{let T=`pie${x}_${r.name}_${i}`;if(m)console.log(`[PieCard] Centrifuge subscribing to channel: ${T}`);let V=l.newSubscription(T);return V.on("publication",(q)=>{if(m)console.log(`[PieCard] Centrifuge received data on ${T}:`,q.data);P.current?.[x]?.(q.data)}),V.subscribe(),V});return()=>{D.forEach((x)=>{if(m)console.log("[PieCard] Centrifuge unsubscribing from channel");x.unsubscribe(),l.removeSubscription(x)})}},[l,i,r.name,C]),z.useEffect(()=>{if(!I||!u||!r.name){if(m&&u)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!I,useMittSupport:u,hasMethods:!!P.current,hasDataName:!!r?.name});return}let S=Object.keys(P.current??{}),D={};return S.forEach((x)=>{let T=`pie${x}_${r.name}`,V=(q)=>{if(m)console.log(`[PieCard] Mitt registering event: ${T}`);P.current?.[x]?.(q)};D[T]=V,I.on(T,V)}),()=>{Object.entries(D).forEach(([x,T])=>{if(m)console.log(`[PieCard] Mitt unregistering event: ${x}`);I.off(x,T)})}},[I,r.name,u]),m)console.log("[PieCard] Rendering complete, returning children");if(t!==void 0)return y.jsxs(y.Fragment,{children:[y.jsx("input",{type:"hidden",name:r.name,value:JSON.stringify(t)}),f]});return f},w=Nr;var qo=require("react"),mo=new Map;function zo(o,r){return qo.lazy(()=>{if(mo.has(r))return mo.get(r);let f=o().then((p)=>p);return mo.set(r,f),f})}var Go=new Map,jr=(o)=>{if(!o.name)throw Error("Component registration requires a name");if(!o.component&&!o.loader)throw Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=zo(r.loader,o.name),r.loader=void 0,r.isLazy=!0;return r};function A(o){let r=jr(o);return Go.set(r.name,r),r.component}var Mo=(o)=>{return Go.get(o)};var R=require("react");var $o=require("react"),k=require("react/jsx-runtime"),cr=$o.createContext(k.jsx(k.Fragment,{})),W=cr;var N=require("react/jsx-runtime");function vr({uiConfig:o,setUiAjaxConfiguration:r}){let f=R.useContext(W),p=Co();if(p)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let C=Mo(o.card);if(!C?.component){if(p)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return f}if(p)console.log("[UI] Found component in registry:",{name:C.name,isLazy:C.isLazy,hasMetadata:!!C.metadata});let u=C.component,i=N.jsx(u,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(C.isLazy){if(p)console.log("[UI] Rendering lazy component with Suspense:",C.name);return N.jsx(R.Suspense,{fallback:C.fallback?N.jsx(C.fallback,{}):f,children:i},`${C.name}`)}if(p)console.log("[UI] Rendering component directly:",C.name);return i}var G=R.memo(vr);var yo=require("react"),sr=yo.createContext(null),M=sr;var Wo=require("react");var j=require("react/jsx-runtime"),hr=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p,sx:C}=o,u=Wo.useContext(M)??G;return j.jsx(w,{card:p,data:o,children:j.jsx("div",{style:C,id:p,children:r.map((i,d)=>{return j.jsx(u,{uiConfig:i,setUiAjaxConfiguration:f},`children-${d}`)})})})},Ro=hr;var no=A({name:"SequenceCard",component:Ro,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Jo=require("react");var io=require("react/jsx-runtime"),er=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p}=o,C=Jo.useContext(M)??G;return io.jsx(w,{card:p,data:o,children:r.map((u,i)=>{return io.jsx(C,{uiConfig:u,setUiAjaxConfiguration:f},`children-${i}`)})})},Qo=er;var Xo=A({name:"UnionCard",component:Qo,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var c=require("react"),Yo=H(require("html-react-parser"));var Z=require("react");function op(){let o=new AudioContext,r=o.createOscillator(),f=r.connect(o.createMediaStreamDestination());r.start();let p=f.stream.getAudioTracks()[0];return p.enabled=!1,p}function uo(o=null,r){let[f,p]=Z.useState(!1),C=Z.useRef(null),u=Z.useRef(null),i=Z.useRef(null),d=Z.useCallback(async(U,l=!0)=>{if(C.current)t();let I=new RTCPeerConnection;if(I.onconnectionstatechange=()=>{if(I.connectionState==="connected")p(!0);else if(["disconnected","failed","closed"].includes(I.connectionState))p(!1)},I.ontrack=(O)=>{if(o)o.srcObject=O.streams[0]},l){let O=await navigator.mediaDevices.getUserMedia({audio:!0});I.addTrack(O.getTracks()[0],O)}else{let O=op();I.addTrack(O)}let S=I.createDataChannel("oai-events");u.current=S,i.current=new Promise((O)=>{S.addEventListener("open",()=>{O()})});let D=await I.createOffer();await I.setLocalDescription(D);let q=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:D.sdp,headers:{Authorization:`Bearer ${U}`,"Content-Type":"application/sdp"}})).text();await I.setRemoteDescription({type:"answer",sdp:q}),C.current=I,await i.current},[o]),t=Z.useCallback(()=>{let U=u.current;if(U)U.close();C.current?.getSenders()?.forEach((l)=>l.track?.stop()),C.current?.close(),p(!1),C.current=null,u.current=null,i.current=null},[o]),m=Z.useCallback((U)=>{let l=u.current;if(!l){console.error("Data channel is not ready",U);return}let I=new Date().toLocaleTimeString();if(U.event_id=U.event_id||crypto.randomUUID(),l.send(JSON.stringify(U)),!U.timestamp)U.timestamp=I;r?.(U)},[r,o]),P=Z.useCallback((U)=>{if(!u.current){console.error("Data channel is not ready");return}let I=()=>{m({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:U}]}}),m({type:"response.create"})};if(i.current)i.current.then(I);else I()},[r,o]);return Z.useEffect(()=>{let U=u.current;if(!U)return;let l=(I)=>{let S=JSON.parse(I.data);if(!S.timestamp)S.timestamp=new Date().toLocaleTimeString();r?.(S)};return U.addEventListener("message",l),()=>{U.removeEventListener("message",l)}},[r,o]),{isSessionActive:f,startSession:d,stopSession:t,sendTextMessage:P}}var Ko=require("react/jsx-runtime"),rp=({data:o})=>{let{html:r,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:C,centrifugeChannel:u}=o,[i,d]=c.useState(r),{isSessionActive:t,startSession:m,sendTextMessage:P}=uo(null,(S)=>{if(console.log(S.type,S.type==="response.output_text.delta"&&S.delta),S.type==="response.output_text.delta"&&S.delta)d((D)=>D+S.delta)});return c.useEffect(()=>{d(r)},[r]),Ko.jsx(w,{card:"HTMLEmbedCard",data:o,methods:{update:(S)=>{d(S.value)},generateUsingAI:async(S)=>{try{if(!t&&S.token)await m(S.token,!1);P(S.prompt)}catch(D){console.error("Failed to generate using AI",D)}},initializeAI:async(S)=>{if(!t&&S.token)await m(S.token,!1)}},useCentrifugeSupport:p,useSocketioSupport:f,useMittSupport:C,centrifugeChannel:u,children:Yo.default(i)})},Fo=rp;var Lo=A({name:"HTMLEmbedCard",component:Fo,metadata:{author:"Swarm.ing"}});var v=require("react");var Po=require("react/jsx-runtime"),pp=({data:o})=>{let{name:r,value:f,useSocketioSupport:p,useCentrifugeSupport:C,useMittSupport:u,centrifugeChannel:i}=o,[d,t]=v.useState(f);return v.useEffect(()=>{t(f)},[f]),Po.jsx(w,{card:"HiddenCard",data:o,useSocketioSupport:p,useCentrifugeSupport:C,useMittSupport:u,centrifugeChannel:i,methods:{update:({value:m})=>{t(m)}},children:Po.jsx("input",{type:"hidden",id:r,name:r,value:d})})},_o=pp;var Eo=A({name:"HiddenCard",component:_o,metadata:{author:"Swarm.ing"}});var Y=require("react");var ao=require("react"),fp=ao.createContext(void 0),n=fp;var s=require("react/jsx-runtime"),Cp=({data:o})=>{let{url:r}=o,f=Y.useContext(n),p=Y.useContext(W);return Y.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else f?.(r)},[r,f]),s.jsx(s.Fragment,{children:p})},bo=Cp;var ko=A({name:"AutoRedirectCard",component:bo,metadata:{author:"Swarm.ing"}});var $=require("react-toastify"),h=require("react-toastify");var Q=require("react");var J=require("react/jsx-runtime"),mp={bounce:$.Bounce,slide:$.Slide,zoom:$.Zoom,flip:$.Flip},ip=(o)=>{let r={...o,type:o.alertType,transition:o.transition?mp[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};h.toast(o.message,r)},up=(o)=>{console.log("Log event",o)},Pp=(o)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(p){console.error("[IOEventsCard] Failed to show notification",p)}},f=window.Notification.permission;if(f==="granted"){r();return}if(f==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((p)=>{if(p==="granted")r()})},tp=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:f,useMittSupport:p,centrifugeChannel:C}=o,u=Q.useContext(n),i=Q.useRef(u);i.current=u;let d=Q.useMemo(()=>({alert:ip,log:up,push:Pp,redirect:(t)=>{if(t.to){let m=t.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else i.current?.(m)}else window.location.reload()},reload:(t)=>{if(t.to){let m=t.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else i.current?.(m)}else window.location.reload()}}),[]);return J.jsx(J.Fragment,{children:J.jsx(w,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:f,useMittSupport:p,centrifugeChannel:C,methods:d,children:J.jsx(h.ToastContainer,{})})})},No=tp;var jo=A({name:"IOEventsCard",component:No,metadata:{author:"Swarm.ing"}});var F=require("react");var to=require("react/jsx-runtime"),dp=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:C,useCentrifugeSupport:u,useMittSupport:i,centrifugeChannel:d}=o,[t,m]=F.useState(p);return F.useEffect(()=>{m(p)},[p]),F.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(f,t)},[f,t]),to.jsx(w,{card:"SessionStorageCard",data:o,useSocketioSupport:C,useCentrifugeSupport:u,useMittSupport:i,centrifugeChannel:d,methods:{update:({value:P})=>{m(P)},remove:()=>{sessionStorage.removeItem(f),m("")}},children:to.jsx("input",{type:"hidden",id:r,name:r,value:t})})},co=dp;var vo=A({name:"SessionStorageCard",component:co,metadata:{author:"PieData"}});var K=require("react");var So=require("react/jsx-runtime"),Sp=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:C,useCentrifugeSupport:u,useMittSupport:i,centrifugeChannel:d}=o,[t,m]=K.useState(p);return K.useEffect(()=>{m(p)},[p]),K.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(f,t)},[f,t]),So.jsx(w,{card:"DeviceStorageCard",data:o,useSocketioSupport:C,useCentrifugeSupport:u,useMittSupport:i,centrifugeChannel:d,methods:{update:({value:P})=>{m(P)},remove:()=>{localStorage.removeItem(f),m("")}},children:So.jsx("input",{type:"hidden",id:r,name:r,value:t})})},so=Sp;var ho=A({name:"DeviceStorageCard",component:so,metadata:{author:"PieData"}});var L=require("react");var Io=require("react/jsx-runtime"),Ip=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:C,useCentrifugeSupport:u,useMittSupport:i,centrifugeChannel:d}=o,[t,m]=L.useState(p);return L.useEffect(()=>{m(p)},[p]),L.useEffect(()=>{if(typeof window>"u")return;let P=window.Telegram?.WebApp?.CloudStorage;if(!P)return;P.setItem(f,t)},[f,t]),Io.jsx(w,{card:"CloudStorageCard",data:o,useSocketioSupport:C,useCentrifugeSupport:u,useMittSupport:i,centrifugeChannel:d,methods:{update:({value:P})=>{m(P)},remove:()=>{let P=window.Telegram?.WebApp?.CloudStorage;if(P)P.removeItem(f);m("")}},children:Io.jsx("input",{type:"hidden",id:r,name:r,value:t})})},eo=Ip;var or=A({name:"CloudStorageCard",component:eo,metadata:{author:"PieData"}});var _=require("react");var Uo=require("react/jsx-runtime"),Up=({data:o})=>{let{name:r,key:f,value:p,useSocketioSupport:C,useCentrifugeSupport:u,useMittSupport:i,centrifugeChannel:d}=o,[t,m]=_.useState(p);return _.useEffect(()=>{m(p)},[p]),_.useEffect(()=>{if(typeof window>"u")return;let P=window.Telegram?.WebApp?.SecureStorage;if(!P)return;P.setItem(f,t)},[f,t]),Uo.jsx(w,{card:"SecureStorageCard",data:o,useSocketioSupport:C,useCentrifugeSupport:u,useMittSupport:i,centrifugeChannel:d,methods:{update:({value:P})=>{m(P)},remove:()=>{let P=window.Telegram?.WebApp?.SecureStorage;if(P)P.removeItem(f);m("")}},children:Uo.jsx("input",{type:"hidden",id:r,name:r,value:t})})},rr=Up;var pr=A({name:"SecureStorageCard",component:rr,metadata:{author:"PieData"}});var B=require("react");var Ao=require("react/jsx-runtime"),Ap=({data:o,content:r})=>{let{useLoader:f,noReturn:p,returnType:C,useSocketioSupport:u,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:t}=o,m=B.useContext(W),P=B.useContext(M)??G,[U,l]=B.useState(!1),[I,S]=B.useState(null),D=B.useRef(r),x=B.useContext(b),T=B.useCallback((O)=>{if(O===null)l(!0);else if(l(!1),!p)D.current=O;if(!p)S(O)},[p]),V=B.useCallback((O)=>{D.current=O.content,S(O.content)},[]),q=B.useCallback((O)=>{if(O===null)l(!0);else if(l(!1),!p)for(let lo of O)x?.emit(lo.name,lo.data)},[p,x]);if(B.useEffect(()=>{S(r),l(!1)},[r]),!I&&f)return m;return Ao.jsx(w,{card:"AjaxGroupCard",data:o,methods:{changeContent:V},useSocketioSupport:u,useCentrifugeSupport:i,useMittSupport:d,centrifugeChannel:t,children:Ao.jsx(P,{uiConfig:I??D.current,setUiAjaxConfiguration:C==="events"?q:T})})},fr=Ap;var Cr=A({name:"AjaxGroupCard",component:fr,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var wo=require("react");var e=require("react/jsx-runtime"),wp=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p,url:C,sx:u}=o,i=wo.useContext(n),d=wo.useContext(M)??G;return e.jsx(w,{card:p,data:o,children:e.jsx("div",{style:u,id:p,onClick:(m)=>{if(C)if(m.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(C))window.location.href=C;else i?.(C)},children:e.jsx(d,{setUiAjaxConfiguration:f,uiConfig:r})})})},mr=wp;var ir=A({name:"BoxCard",component:mr,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var ur=require("react");var oo=require("react/jsx-runtime"),lp=({data:o,content:r,setUiAjaxConfiguration:f})=>{let{name:p,sx:C}=o,u=ur.useContext(M)??G;return oo.jsx(w,{card:p,data:o,children:oo.jsx("div",{style:C,id:p,children:r.map((i,d)=>{return oo.jsx(u,{uiConfig:i,setUiAjaxConfiguration:f},`children-${d}`)})})})},Pr=lp;var tr=A({name:"OneOfCard",component:Pr,metadata:{author:"Swarm.ing",description:"Different variants"}});
2
+ var uP=Object.create;var{getPrototypeOf:dP,defineProperty:Tf,getOwnPropertyNames:OU,getOwnPropertyDescriptor:bP}=Object,JU=Object.prototype.hasOwnProperty;var YU=(f,U,C)=>{C=f!=null?uP(dP(f)):{};let P=U||!f||!f.__esModule?Tf(C,"default",{value:f,enumerable:!0}):C;for(let H of OU(f))if(!JU.call(P,H))Tf(P,H,{get:()=>f[H],enumerable:!0});return P},VU=new WeakMap,pP=(f)=>{var U=VU.get(f),C;if(U)return U;if(U=Tf({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")OU(f).map((P)=>!JU.call(U,P)&&Tf(U,P,{get:()=>f[P],enumerable:!(C=bP(f,P))||C.enumerable}));return VU.set(f,U),U};var gP=(f,U)=>{for(var C in U)Tf(f,C,{get:U[C],enumerable:!0,configurable:!0,set:(P)=>U[C]=()=>P})};var oC={};gP(oC,{useWebApp:()=>pf,usePieMittAgentTools:()=>MP,usePieEmit:()=>KU,useOpenAIWebRTC:()=>Of,useMaxWebApp:()=>cf,useAjaxSubmit:()=>SP,unregisterComponent:()=>MU,submitGlobalForm:()=>yP,registry:()=>p,registerPieComponent:()=>Q,registerMultipleComponents:()=>FU,readAjaxKey:()=>zU,pieName:()=>mP,hasComponent:()=>LU,getRegistrySize:()=>yU,getRegistryEntry:()=>a,getMittAgentTools:()=>IU,getEmitter:()=>m,getComponentMeta:()=>AU,getAllRegisteredComponents:()=>NU,cn:()=>NP,UnionCard:()=>pU,UIRendererContext:()=>E,UILoading:()=>of,UI:()=>w,SocketIOContext:()=>y,SessionStorageCard:()=>fP,SequenceCard:()=>uU,SecureStorageCard:()=>ZP,PieTelegramRoot:()=>QP,PieRoot:()=>BP,PieMaxRoot:()=>wP,PieConfigContext:()=>u,PieCard:()=>_,PieBaseRoot:()=>RP,PIEBREAK:()=>_f,OneOfCard:()=>JP,MittContext:()=>M,IOEventsCard:()=>aU,HiddenCard:()=>rU,HTMLEmbedCard:()=>hU,FallbackContext:()=>K,DeviceStorageCard:()=>PP,CloudStorageCard:()=>HP,CentrifugeIOContext:()=>N,BoxCard:()=>TP,AutoRedirectCard:()=>iU,AjaxGroupCard:()=>zP});module.exports=pP(oC);var d=require("react");var Qf=require("react"),u=Qf.createContext(null),t=()=>{let f=Qf.useContext(u);if(!f)throw Error("usePieConfig must be used within PieConfigProvider");return f},b=()=>{let{apiServer:f}=t();return f},Rf=b,g=()=>{let{centrifugeServer:f}=t();return f};var x=()=>{let{enableRenderingLog:f}=t();return f},XU=x,GU=()=>{let{pageProcessor:f}=t();return f};var _f="__piedemo__";var BU=require("react"),nf=require("centrifuge"),qU=new Map,v=(f,U)=>{if(!U)return null;let C=`${f}::${U}`,P=qU.get(C);if(P)return P;async function H(){let D=await fetch(f+"api/centrifuge/gen_token");if(!D.ok){if(D.status===403)throw new nf.Centrifuge.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${D.status}`)}return(await D.json()).token}let Z=new nf.Centrifuge(U,{getToken:H});return qU.set(C,Z),Z},vP=BU.createContext(null),N=vP;var QU=require("socket.io-client"),RU=require("react"),WU=new Map,c=(f)=>{let U=WU.get(f);if(U)return U;let C=QU.io(f,{autoConnect:!1,transports:["websocket"]});return WU.set(f,C),C},cP=RU.createContext(null),y=cP;var _U=YU(require("mitt")),i=require("react"),tf=null;function m(){if(!tf)tf=_U.default();return tf}var wU=i.createContext(null);function KU(f){let U=i.useContext(wU);return i.useCallback((C,P)=>{(U??m()).emit(`pie${C}_${f}`,P)},[f,U])}var M=wU;var s=require("react/jsx-runtime"),hP=({card:f,data:U,children:C,useSocketioSupport:P=!1,useCentrifugeSupport:H=!1,useMittSupport:Z=!1,centrifugeChannel:D=void 0,methods:I=void 0,stored:$=void 0})=>{let z=XU(),T=d.useRef(I);if(T.current=I,z)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:P,centrifuge:H,mitt:Z,centrifugeChannel:D}),console.log("[PieCard] Methods:",I?Object.keys(I):"none"),console.log("[PieCard] Has children:",!!C);let X=d.useContext(y),G=d.useContext(N),O=d.useContext(M);if(d.useEffect(()=>{if(!X||!P||!T.current||!U.name){if(z&&P)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!X,useSocketioSupport:P,hasMethods:!!T.current,hasDataName:!!U?.name});return}let q=Object.keys(T.current??{}).map((V)=>{let Y=`pie${V}_${U.name}`;if(z)console.log(`[PieCard] Socket.IO registering event: ${Y}`);let W=(B)=>{T.current?.[V]?.(B)};return X.on(Y,W),[Y,W]});return()=>{q.forEach(([V,Y])=>{if(z)console.log(`[PieCard] Socket.IO unregistering event: ${V}`);X.off(V,Y)})}},[X,U.name,P]),d.useEffect(()=>{if(!G||!H||!D||!U.name){if(z&&H)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!G,useCentrifugeSupport:H,hasCentrifugeChannel:!!D,hasMethods:!!T.current,hasDataName:!!U?.name});return}let q=Object.keys(T.current??{}).map((V)=>{let Y=`pie${V}_${U.name}_${D}`;if(z)console.log(`[PieCard] Centrifuge subscribing to channel: ${Y}`);let W=G.newSubscription(Y);return W.on("publication",(B)=>{if(z)console.log(`[PieCard] Centrifuge received data on ${Y}:`,B.data);T.current?.[V]?.(B.data)}),W.subscribe(),W});return()=>{q.forEach((V)=>{if(z)console.log("[PieCard] Centrifuge unsubscribing from channel");V.unsubscribe(),G.removeSubscription(V)})}},[G,D,U.name,H]),d.useEffect(()=>{if(!O||!Z||!U.name){if(z&&Z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!O,useMittSupport:Z,hasMethods:!!T.current,hasDataName:!!U?.name});return}let J=Object.keys(T.current??{}),q={};return J.forEach((V)=>{let Y=`pie${V}_${U.name}`,W=(B)=>{if(z)console.log(`[PieCard] Mitt registering event: ${Y}`);T.current?.[V]?.(B)};q[Y]=W,O.on(Y,W)}),()=>{Object.entries(q).forEach(([V,Y])=>{if(z)console.log(`[PieCard] Mitt unregistering event: ${V}`);O.off(V,Y)})}},[O,U.name,Z]),z)console.log("[PieCard] Rendering complete, returning children");if($!==void 0)return s.jsxs(s.Fragment,{children:[s.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify($)}),C]});return C},_=hP;var SU=require("react"),sf=new Map;function oU(f,U){return SU.lazy(()=>{if(sf.has(U))return sf.get(U);let C=f().then((P)=>P);return sf.set(U,C),C})}var p=new Map,lP=(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 U={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=oU(U.loader,f.name),U.loader=void 0,U.isLazy=!0;return U};function Q(f){let U=lP(f);return p.set(U.name,U),U.component}var FU=(f)=>{f.forEach((U)=>Q(U))},MU=(f)=>{p.delete(f)},LU=(f)=>{return p.has(f)},AU=(f)=>{return p.get(f)?.metadata},a=(f)=>{return p.get(f)},NU=()=>{return Array.from(p.keys())},yU=()=>{return p.size};var e=require("react");var mU=require("react"),wf=require("react/jsx-runtime"),rP=mU.createContext(wf.jsx(wf.Fragment,{})),K=rP;var Kf=require("react/jsx-runtime");function nP({uiConfig:f,setUiAjaxConfiguration:U}){let C=e.useContext(K),P=x();if(P)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:",!!U);let H=a(f.card);if(!H?.component){if(P)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return C}if(P)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let Z=H.component,D=Kf.jsx(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(H.isLazy){if(P)console.log("[UI] Rendering lazy component with Suspense:",H.name);return Kf.jsx(e.Suspense,{fallback:H.fallback?Kf.jsx(H.fallback,{}):C,children:D},`${H.name}`)}if(P)console.log("[UI] Rendering component directly:",H.name);return D}var w=e.memo(nP);var Sf=require("react");var EU=require("react"),tP=EU.createContext(null),E=tP;var Vf=require("react/jsx-runtime");function kU({uiConfig:f,setUiAjaxConfiguration:U}){let C=Sf.useContext(K),P=x();if(P)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:",!!U);let H=a(f.card);if(!H?.component){if(P)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return C}if(P)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(P)console.log("[UILoading] Rendering fallback for:",H.name);let I=H.fallback;return Vf.jsx(I,{})}if(P)console.log("[UILoading] No fallback, rendering full component:",H.name);let Z=H.component,D=Vf.jsx(E.Provider,{value:kU,children:Vf.jsx(Z,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(H.isLazy)return Vf.jsx(Sf.Suspense,{fallback:C,children:D},`${H.name}`);return D}var of=kU;var xU=require("react");var Ff=require("react/jsx-runtime"),iP=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:P,sx:H}=f,Z=xU.useContext(E)??w;return Ff.jsx(_,{card:P,data:f,children:Ff.jsx("div",{style:H,id:P,children:U.map((D,I)=>{return Ff.jsx(Z,{uiConfig:D,setUiAjaxConfiguration:C},`children-${I}`)})})})},jU=iP;var uU=Q({name:"SequenceCard",component:jU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var dU=require("react");var af=require("react/jsx-runtime"),sP=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:P}=f,H=dU.useContext(E)??w;return af.jsx(_,{card:P,data:f,children:U.map((Z,D)=>{return af.jsx(H,{uiConfig:Z,setUiAjaxConfiguration:C},`children-${D}`)})})},bU=sP;var pU=Q({name:"UnionCard",component:bU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var Mf=require("react"),gU=YU(require("html-react-parser"));var j=require("react");function aP(){let f=new AudioContext,U=f.createOscillator(),C=U.connect(f.createMediaStreamDestination());U.start();let P=C.stream.getAudioTracks()[0];return P.enabled=!1,P}function Of(f=null,U){let[C,P]=j.useState(!1),H=j.useRef(null),Z=j.useRef(null),D=j.useRef(null),I=j.useCallback(async(X,G=!0)=>{if(H.current)$();let O=new RTCPeerConnection;if(O.onconnectionstatechange=()=>{if(O.connectionState==="connected")P(!0);else if(["disconnected","failed","closed"].includes(O.connectionState))P(!1)},O.ontrack=(R)=>{if(f)f.srcObject=R.streams[0]},G){let R=await navigator.mediaDevices.getUserMedia({audio:!0});O.addTrack(R.getTracks()[0],R)}else{let R=aP();O.addTrack(R)}let J=O.createDataChannel("oai-events");Z.current=J,D.current=new Promise((R)=>{J.addEventListener("open",()=>{R()})});let q=await O.createOffer();await O.setLocalDescription(q);let B=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:q.sdp,headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/sdp"}})).text();await O.setRemoteDescription({type:"answer",sdp:B}),H.current=O,await D.current},[f]),$=j.useCallback(()=>{let X=Z.current;if(X)X.close();H.current?.getSenders()?.forEach((G)=>G.track?.stop()),H.current?.close(),P(!1),H.current=null,Z.current=null,D.current=null},[f]),z=j.useCallback((X)=>{let G=Z.current;if(!G){console.error("Data channel is not ready",X);return}let O=new Date().toLocaleTimeString();if(X.event_id=X.event_id||crypto.randomUUID(),G.send(JSON.stringify(X)),!X.timestamp)X.timestamp=O;U?.(X)},[U,f]),T=j.useCallback((X)=>{if(!Z.current){console.error("Data channel is not ready");return}let O=()=>{z({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:X}]}}),z({type:"response.create"})};if(D.current)D.current.then(O);else O()},[U,f]);return j.useEffect(()=>{let X=Z.current;if(!X)return;let G=(O)=>{let J=JSON.parse(O.data);if(!J.timestamp)J.timestamp=new Date().toLocaleTimeString();U?.(J)};return X.addEventListener("message",G),()=>{X.removeEventListener("message",G)}},[U,f]),{isSessionActive:C,startSession:I,stopSession:$,sendTextMessage:T}}var cU=require("react/jsx-runtime"),eP=({data:f})=>{let{html:U,useSocketioSupport:C,useCentrifugeSupport:P,useMittSupport:H,centrifugeChannel:Z}=f,[D,I]=Mf.useState(U),{isSessionActive:$,startSession:z,sendTextMessage:T}=Of(null,(J)=>{if(console.log(J.type,J.type==="response.output_text.delta"&&J.delta),J.type==="response.output_text.delta"&&J.delta)I((q)=>q+J.delta)});return Mf.useEffect(()=>{I(U)},[U]),cU.jsx(_,{card:"HTMLEmbedCard",data:f,methods:{update:(J)=>{I(J.value)},generateUsingAI:async(J)=>{try{if(!$&&J.token)await z(J.token,!1);T(J.prompt)}catch(q){console.error("Failed to generate using AI",q)}},initializeAI:async(J)=>{if(!$&&J.token)await z(J.token,!1)}},useCentrifugeSupport:P,useSocketioSupport:C,useMittSupport:H,centrifugeChannel:Z,children:gU.default(D)})},vU=eP;var hU=Q({name:"HTMLEmbedCard",component:vU,metadata:{author:"Swarm.ing"}});var Lf=require("react");var ef=require("react/jsx-runtime"),fC=({data:f})=>{let{name:U,value:C,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:D}=f,[I,$]=Lf.useState(C);return Lf.useEffect(()=>{$(C)},[C]),ef.jsx(_,{card:"HiddenCard",data:f,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:Z,centrifugeChannel:D,methods:{update:({value:z})=>{$(z)}},children:ef.jsx("input",{type:"hidden",id:U,name:U,value:I})})},lU=fC;var rU=Q({name:"HiddenCard",component:lU,metadata:{author:"Swarm.ing"}});var Jf=require("react");var nU=require("react"),UC=nU.createContext(void 0),k=UC;var Af=require("react/jsx-runtime"),PC=({data:f})=>{let{url:U}=f,C=Jf.useContext(k),P=Jf.useContext(K);return Jf.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else C?.(U)},[U,C]),Af.jsx(Af.Fragment,{children:P})},tU=PC;var iU=Q({name:"AutoRedirectCard",component:tU,metadata:{author:"Swarm.ing"}});var h=require("react-toastify"),Nf=require("react-toastify");var Uf=require("react");var ff=require("react/jsx-runtime"),CC={bounce:h.Bounce,slide:h.Slide,zoom:h.Zoom,flip:h.Flip},HC=(f)=>{let U={...f,type:f.alertType,transition:f.transition?CC[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};Nf.toast(f.message,U)},DC=(f)=>{console.log("Log event",f)},ZC=(f)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(P){console.error("[IOEventsCard] Failed to show notification",P)}},C=window.Notification.permission;if(C==="granted"){U();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((P)=>{if(P==="granted")U()})},$C=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:C,useMittSupport:P,centrifugeChannel:H}=f,Z=Uf.useContext(k),D=Uf.useRef(Z);D.current=Z;let I=Uf.useMemo(()=>({alert:HC,log:DC,push:ZC,redirect:($)=>{if($.to){let z=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else D.current?.(z)}else window.location.reload()},reload:($)=>{if($.to){let z=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else D.current?.(z)}else window.location.reload()}}),[]);return ff.jsx(ff.Fragment,{children:ff.jsx(_,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:C,useMittSupport:P,centrifugeChannel:H,methods:I,children:ff.jsx(Nf.ToastContainer,{})})})},sU=$C;var aU=Q({name:"IOEventsCard",component:sU,metadata:{author:"Swarm.ing"}});var Yf=require("react");var fU=require("react/jsx-runtime"),zC=({data:f})=>{let{name:U,key:C,value:P,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=Yf.useState(P);return Yf.useEffect(()=>{z(P)},[P]),Yf.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(C,$)},[C,$]),fU.jsx(_,{card:"SessionStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{sessionStorage.removeItem(C),z("")}},children:fU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},eU=zC;var fP=Q({name:"SessionStorageCard",component:eU,metadata:{author:"PieData"}});var Xf=require("react");var UU=require("react/jsx-runtime"),IC=({data:f})=>{let{name:U,key:C,value:P,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=Xf.useState(P);return Xf.useEffect(()=>{z(P)},[P]),Xf.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(C,$)},[C,$]),UU.jsx(_,{card:"DeviceStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{localStorage.removeItem(C),z("")}},children:UU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},UP=IC;var PP=Q({name:"DeviceStorageCard",component:UP,metadata:{author:"PieData"}});var Gf=require("react");var PU=require("react/jsx-runtime"),TC=({data:f})=>{let{name:U,key:C,value:P,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=Gf.useState(P);return Gf.useEffect(()=>{z(P)},[P]),Gf.useEffect(()=>{if(typeof window>"u")return;let T=window.Telegram?.WebApp?.CloudStorage;if(!T)return;T.setItem(C,$)},[C,$]),PU.jsx(_,{card:"CloudStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{let T=window.Telegram?.WebApp?.CloudStorage;if(T)T.removeItem(C);z("")}},children:PU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},CP=TC;var HP=Q({name:"CloudStorageCard",component:CP,metadata:{author:"PieData"}});var qf=require("react");var CU=require("react/jsx-runtime"),VC=({data:f})=>{let{name:U,key:C,value:P,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I}=f,[$,z]=qf.useState(P);return qf.useEffect(()=>{z(P)},[P]),qf.useEffect(()=>{if(typeof window>"u")return;let T=window.Telegram?.WebApp?.SecureStorage;if(!T)return;T.setItem(C,$)},[C,$]),CU.jsx(_,{card:"SecureStorageCard",data:f,useSocketioSupport:H,useCentrifugeSupport:Z,useMittSupport:D,centrifugeChannel:I,methods:{update:({value:T})=>{z(T)},remove:()=>{let T=window.Telegram?.WebApp?.SecureStorage;if(T)T.removeItem(C);z("")}},children:CU.jsx("input",{type:"hidden",id:U,name:U,value:$})})},DP=VC;var ZP=Q({name:"SecureStorageCard",component:DP,metadata:{author:"PieData"}});var L=require("react");var HU=require("react/jsx-runtime"),OC=({data:f,content:U})=>{let{useLoader:C,noReturn:P,returnType:H,useSocketioSupport:Z,useCentrifugeSupport:D,useMittSupport:I,centrifugeChannel:$}=f,z=L.useContext(K),T=L.useContext(E)??w,[X,G]=L.useState(!1),[O,J]=L.useState(null),q=L.useRef(U),V=L.useContext(M),Y=L.useCallback((R)=>{if(R===null)G(!0);else if(G(!1),!P)q.current=R;if(!P)J(R)},[P]),W=L.useCallback((R)=>{q.current=R.content,J(R.content)},[]),B=L.useCallback((R)=>{if(R===null)G(!0);else if(G(!1),!P)for(let Bf of R)V?.emit(Bf.name,Bf.data)},[P,V]);if(L.useEffect(()=>{J(U),G(!1)},[U]),!O&&C)return z;return HU.jsx(_,{card:"AjaxGroupCard",data:f,methods:{changeContent:W},useSocketioSupport:Z,useCentrifugeSupport:D,useMittSupport:I,centrifugeChannel:$,children:HU.jsx(T,{uiConfig:O??q.current,setUiAjaxConfiguration:H==="events"?B:Y})})},$P=OC;var zP=Q({name:"AjaxGroupCard",component:$P,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var DU=require("react");var yf=require("react/jsx-runtime"),JC=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:P,url:H,sx:Z}=f,D=DU.useContext(k),I=DU.useContext(E)??w;return yf.jsx(_,{card:P,data:f,children:yf.jsx("div",{style:Z,id:P,onClick:(z)=>{if(H)if(z.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else D?.(H)},children:yf.jsx(I,{setUiAjaxConfiguration:C,uiConfig:U})})})},IP=JC;var TP=Q({name:"BoxCard",component:IP,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var VP=require("react");var mf=require("react/jsx-runtime"),YC=({data:f,content:U,setUiAjaxConfiguration:C})=>{let{name:P,sx:H}=f,Z=VP.useContext(E)??w;return mf.jsx(_,{card:P,data:f,children:mf.jsx("div",{style:H,id:P,children:U.map((D,I)=>{return mf.jsx(Z,{uiConfig:D,setUiAjaxConfiguration:C},`children-${I}`)})})})},OP=YC;var JP=Q({name:"OneOfCard",component:OP,metadata:{author:"Swarm.ing",description:"Different variants"}});var Cf=require("react"),Hf=require("@tanstack/react-query");var uf=require("react");var xf=require("react"),Ef=new Map,kf=new Map;function jf(f,U){let C=`${f}::${U}`,P=f?Ef.get(C):void 0,[H,Z]=xf.useState(P??null);return xf.useEffect(()=>{if(!f)return;if(Ef.has(C)){Z(Ef.get(C));return}let D=kf.get(C);if(!D)D=fetch(f+`api/support/${U}`,{method:"GET"}).then(($)=>$.json()).then(($)=>{return Ef.set(C,$),kf.delete(C),$}).catch(($)=>{throw kf.delete(C),$}),kf.set(C,D);let I=!1;return D.then(($)=>{if(!I)Z($)}).catch(()=>{}),()=>{I=!0}},[f,U,C]),H}var ZU=null,YP=null;function XP(){YP?.()}function $U(){if(typeof window>"u")return Promise.resolve();if(typeof window.sid<"u")return Promise.resolve();if(!ZU)ZU=new Promise((f)=>{YP=()=>{f()}});return ZU}var XC=({children:f})=>{let U=uf.useContext(y),C=Rf(),P=jf(C,"socketIO"),H=(Z)=>{if(typeof window<"u")window.sid=Z.sid,XP(),console.log(`SocketIO initialized: ${window.sid}`)};return uf.useEffect(()=>{if(!U)return;let Z=()=>{console.log("SocketIO connected")},D=(I)=>{console.log(`SocketIO disconnected: ${I}`),U.connect()};if(P)U.on("pieinit",H),U.on("connect",Z),U.on("disconnect",D),U.connect();return()=>{if(P)U.off("pieinit",H),U.off("connect",Z),U.off("disconnect",D),U.disconnect()}},[U,P]),f},l=XC;var df=require("react");var GC=({children:f})=>{let U=df.useContext(N),C=Rf(),P=jf(C,"centrifuge");return df.useEffect(()=>{if(!U)return;let H=()=>{console.log("Centrifuge connected")},Z=(D)=>{console.log("Centrifuge disconnected:",D)};if(P)U.on("connected",H),U.on("disconnected",Z),U.connect();return()=>{if(P)U.disconnect()}},[U,P]),f},r=GC;var qP=require("axios-date-transformer");var GP=require("react/jsx-runtime");function Pf(f,U,C){if(!U)return C;let P=f.replace(/^\//,""),H=U[P];if(!H)return C;return GP.jsx(of,{uiConfig:H})}var S=require("react/jsx-runtime"),qC=({location:f,fallback:U,piecache:C,onError:P,queryOptions:H,disableGlobalForm:Z})=>{let D=b(),I=g(),$=x(),z=Cf.useMemo(()=>qP.createAxiosDateTransformer({baseURL:D||""}),[D]),T=Cf.useMemo(()=>m(),[]),X=Cf.useMemo(()=>D?c(D):null,[D]),G=Cf.useMemo(()=>D?v(D,I):null,[D,I]),{data:O,isLoading:J,error:q}=Hf.useQuery({queryKey:["uiConfig",f.pathname+f.search,D],enabled:!!D,queryFn:async()=>{let Y=new URLSearchParams(f.search);Y.set("__pieroot","web");let W="/api/content"+f.pathname+"?"+Y.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",W);let B=await z.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",B.data);return B.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Y)=>Math.min(1000*2**Y,30000),...H}),V=Pf(f.pathname,C,U);if(!D)return V??null;if($)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",I),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!C);if(q){if($)console.error("[PieRoot] Error fetching UI configuration:",q),console.error("[PieRoot] Error details:",{message:q.message,status:q.response?.status,data:q.response?.data});return P?.(),V}if(J||!O){if($)console.log("[PieRoot] Loading state:",{isLoading:J,hasUiConfiguration:!!O});return V}if($)console.log("[PieRoot] UI configuration loaded successfully:",O),console.log("[PieRoot] Rendering UI with configuration");return S.jsx(M.Provider,{value:T,children:S.jsx(y.Provider,{value:X,children:S.jsx(N.Provider,{value:G,children:S.jsx(K.Provider,{value:U??S.jsx(S.Fragment,{}),children:S.jsx(l,{children:S.jsx(r,{children:Z?S.jsx(w,{uiConfig:O}):S.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:S.jsx(w,{uiConfig:O})})})})})})})})},BC=(f)=>{let U=Cf.useMemo(()=>new Hf.QueryClient,[]);return S.jsx(k.Provider,{value:f.onNavigate,children:S.jsx(u.Provider,{value:f.config,children:S.jsx(Hf.QueryClientProvider,{client:U,children:S.jsx(qC,{...f})})})})},BP=BC;var Df=require("react"),Zf=require("@tanstack/react-query");var WP=require("axios-date-transformer");var bf=require("react");var pf=({onError:f}={})=>{let[U,C]=bf.useState(null),P=GU();return bf.useEffect(()=>{if(typeof window>"u")return;let H=window.Telegram?.WebApp;if(!H)return;try{H.ready?.()}catch(Z){f?.()}if(P==="telegram_expanded"&&(H.platform==="ios"||H.platform==="android"))H.expand();C(H)},[]),U};var o=require("react/jsx-runtime"),WC=({location:f,fallback:U,piecache:C,onError:P,queryOptions:H,disableGlobalForm:Z})=>{let D=b(),I=g(),$=x(),z=Df.useMemo(()=>WP.createAxiosDateTransformer({baseURL:D}),[D]),T=Df.useMemo(()=>m(),[]),X=Df.useMemo(()=>D?c(D):null,[D]),G=Df.useMemo(()=>D?v(D,I):null,[D,I]),O=pf({onError:P}),{data:J,isLoading:q,error:V}=Zf.useQuery({queryKey:["uiConfig",f.pathname+f.search,O?.initData],enabled:!!O?.initData,queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","telegram"),O?.initData)W.set("initData",O.initData);let B="/api/content"+f.pathname+"?"+W.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await z.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...H}),Y=Pf(f.pathname,C,U);if(!D)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&$)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),P?.(),Y;if(q||!J){if($)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!J});return Y}if($)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return o.jsx(M.Provider,{value:T,children:o.jsx(y.Provider,{value:X,children:o.jsx(N.Provider,{value:G,children:o.jsx(K.Provider,{value:U??o.jsx(o.Fragment,{}),children:o.jsx(l,{children:o.jsx(r,{children:Z?o.jsx(w,{uiConfig:J}):o.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:o.jsx(w,{uiConfig:J})})})})})})})})},QC=(f)=>{let U=Df.useMemo(()=>new Zf.QueryClient,[]);return o.jsx(k.Provider,{value:f.onNavigate,children:o.jsx(u.Provider,{value:f.config,children:o.jsx(Zf.QueryClientProvider,{client:U,children:o.jsx(WC,{...f})})})})},QP=QC;var $f=require("react"),gf=require("@tanstack/react-query");var A=require("react/jsx-runtime"),RC=({location:f,fallback:U,children:C,disableGlobalForm:P})=>{let H=b(),Z=g(),D=x(),I=$f.useMemo(()=>m(),[]),$=$f.useMemo(()=>H?c(H):null,[H]),z=$f.useMemo(()=>H?v(H,Z):null,[H,Z]);if(D)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",H),console.log("[PieRoot] CENTRIFUGE_SERVER:",Z),console.log("[PieRoot] Fallback provided:",!!U);return A.jsx(M.Provider,{value:I,children:A.jsx(y.Provider,{value:$,children:A.jsx(N.Provider,{value:z,children:A.jsx(K.Provider,{value:U??A.jsx(A.Fragment,{}),children:A.jsx(l,{children:A.jsx(r,{children:P?C:A.jsx("form",{id:"piedata_global_form",action:H+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:C})})})})})})})},_C=(f)=>{let[U]=$f.useState(()=>new gf.QueryClient);return A.jsx(k.Provider,{value:f.onNavigate,children:A.jsx(u.Provider,{value:f.config,children:A.jsx(gf.QueryClientProvider,{client:U,children:A.jsx(RC,{...f})})})})},RP=_C;var zf=require("react"),If=require("@tanstack/react-query");var _P=require("axios-date-transformer");var vf=require("react"),cf=()=>{let[f,U]=vf.useState(null);return vf.useEffect(()=>{if(typeof window>"u")return;let C=window.WebApp;if(!C)return;C.ready(),U(C)},[]),f};var F=require("react/jsx-runtime"),wC=({location:f,fallback:U,piecache:C,onError:P,queryOptions:H,disableGlobalForm:Z})=>{let D=b(),I=g(),$=x(),z=zf.useMemo(()=>_P.createAxiosDateTransformer({baseURL:D}),[D]),T=zf.useMemo(()=>m(),[]),X=zf.useMemo(()=>D?c(D):null,[D]),G=zf.useMemo(()=>D?v(D,I):null,[D,I]),O=cf(),{data:J,isLoading:q,error:V}=If.useQuery({queryKey:["uiConfig",f.pathname+f.search,O?.initData],queryFn:async()=>{let W=new URLSearchParams(f.search);if(W.set("__pieroot","max"),O?.initData)W.set("initData",O.initData);let B="/api/content"+f.pathname+"?"+W.toString();if($)console.log("[PieRoot] Fetching UI configuration from:",B);let R=await z.get(B,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if($)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},enabled:!!O?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(W)=>Math.min(1000*2**W,30000),...H}),Y=Pf(f.pathname,C,U);if(!D)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&$)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),P?.(),Y;if(q||!J){if($)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!J});return Y}if($)console.log("[PieRoot] UI configuration loaded successfully:",J),console.log("[PieRoot] Rendering UI with configuration");return F.jsx(M.Provider,{value:T,children:F.jsx(y.Provider,{value:X,children:F.jsx(N.Provider,{value:G,children:F.jsx(K.Provider,{value:U??F.jsx(F.Fragment,{}),children:F.jsx(l,{children:F.jsx(r,{children:Z?F.jsx(w,{uiConfig:J}):F.jsx("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:F.jsx(w,{uiConfig:J})})})})})})})})},KC=(f)=>{let U=zf.useMemo(()=>new If.QueryClient,[]);return F.jsx(k.Provider,{value:f.onNavigate,children:F.jsx(u.Provider,{value:f.config,children:F.jsx(If.QueryClientProvider,{client:U,children:F.jsx(wC,{...f})})})})},wP=KC;var KP=require("react"),zU=(f,U=!1)=>{if(f==="sid"){if(!window.sid)throw Error("SocketIO isn't initialized properly");return[window.sid]}let C=document.getElementsByName(f);if(!C.length){if(U)console.warn(`No input found with name ${f}`);return[]}let P=C[0];if(P instanceof HTMLInputElement){if(P.type==="file"&&P.files)return Array.from(P.files);return[P.value]}if(P instanceof HTMLTextAreaElement)return[P.value];return[]},SC=(f,U={},C=[],P,H)=>{let Z=H?.renderingLogEnabled??!1,D=H?.timeout,I=H?.retryPolicy,$=I?.maxRetries??0,z=I?.baseDelay??1000,T=I?.retryOn??[502,503,504];if(Z)console.log("Registering AJAX: ",P,U,C);return async(X={})=>{if(typeof window>"u"||typeof document>"u"){if(Z)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let G=H?.apiServer;if(!G){if(Z)console.warn("AJAX skipped: apiServer is missing");return}if(!P||!f){if(Z)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(C.includes("sid"))await $U();let O=new FormData;for(let[V,Y]of Object.entries({...U,...X}))O.append(V,Y);for(let V of C)for(let Y of zU(V,Z))O.append(V,Y);let J=G+"api/ajax_content"+P;f(null);let q;for(let V=0;V<=$;V++){if(V>0){let B=z*2**(V-1);if(Z)console.log(`AJAX retry ${V}/${$} after ${B}ms`);await new Promise((R)=>setTimeout(R,B))}let Y=D!=null?new AbortController:null,W=Y&&setTimeout(()=>Y.abort(),D);try{let B=await fetch(J,{method:"POST",body:O,signal:Y?.signal});if(W)clearTimeout(W);if(!B.ok&&T.includes(B.status)&&V<$){q=Error(`HTTP ${B.status}`);continue}let Bf=(B.headers.get("content-type")||"").includes("application/json");if(!!B.body?.getReader&&!Bf){let Wf=B.body.getReader(),EP=new TextDecoder,n="";while(!0){let{done:lf,value:kP}=await Wf.read();if(lf)break;n+=EP.decode(kP,{stream:!0});let TU=n.split(`
3
+ `);n=TU.pop()??"";for(let xP of TU){let rf=xP.trim();if(!rf)continue;try{let jP=JSON.parse(rf);f([jP])}catch{if(Z)console.warn("Failed to parse streamed line:",rf)}}}if(n.trim())try{let lf=JSON.parse(n);f([lf])}catch{if(Z)console.warn("Failed to parse final streamed line:",n)}return{}}else{let Wf=await B.json();return f(Wf),Wf}}catch(B){if(W)clearTimeout(W);if(q=B,V<$)continue;if(Z)console.error("AJAX request failed:",B);return f(null),B}}if(Z)console.error("AJAX request failed after retries:",q);return f(null),q}},SP=(f,U={},C=[],P,H)=>{let{apiServer:Z,enableRenderingLog:D}=t(),I=JSON.stringify(U),$=JSON.stringify(C),z=JSON.stringify(H);return KP.useMemo(()=>SC(f,U,C,P,{apiServer:Z,renderingLogEnabled:D,timeout:H?.timeout,retryPolicy:H?.retryPolicy}),[f,I,$,P,Z,D,z])};var oP=require("@openai/agents"),hf=require("react");var FP=/^pie(.+?)_(.+)$/;function IU(f=m(),U={}){let C=[],P=new Set;for(let H of f.all.keys()){if(typeof H!=="string")continue;let Z=H.match(FP);if(!Z)continue;let[,D,I]=Z,$={methodName:D,cardName:I,eventName:H};if(U.filter&&!U.filter($))continue;let z=U.nameFor?.($)??`${I}_${D}`;if(P.has(z))continue;P.add(z);let T=U.describe?.($)??`Invokes the "${D}" method on the PieCard "${I}" by emitting the in-process mitt event "${H}". The optional "payload" argument is forwarded verbatim to the card's handler.`;C.push(oP.tool({name:z,description:T,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(X)=>{let G=X?.payload;return f.emit(H,G),`Emitted "${H}"`}}))}return C}function MP(f={}){let C=hf.useContext(M)??m(),P=[];for(let $ of C.all.keys())if(typeof $==="string"&&FP.test($))P.push($);P.sort();let H=P.join("|"),{filter:Z,describe:D,nameFor:I}=f;return hf.useMemo(()=>IU(C,{filter:Z,describe:D,nameFor:I}),[C,H,Z,D,I])}var LP=require("clsx"),AP=require("tailwind-merge");function NP(...f){return AP.twMerge(LP.clsx(f))}var yP=()=>{if(typeof document>"u")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var mP=(f,U)=>`${f}${_f}${U}`;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{r as withPieCard,d as usePieStorybookEmitter,P as firePieMethod,i as PieStorybookProviders,t as PieStorybookChannelBridge,s as PieMethodTrigger,p as PIE_STORYBOOK_FIRE_EVENT,a as PIECARD_PARAM_KEY};
2
+ import{createContext as D,useContext as _,useEffect as K,useMemo as I,useRef as Y}from"react";import{QueryClient as z,QueryClientProvider as J}from"@tanstack/react-query";import U from"mitt";import{MittContext as V,SocketIOContext as W,CentrifugeIOContext as X,FallbackContext as Z,PieConfigContext as $}from"@swarm.ing/pieui";var h="piecard",A="piecard/fire";import{jsx as P,jsxs as L,Fragment as H}from"react/jsx-runtime";var g={apiServer:"",centrifugeServer:"",enableRenderingLog:!1,pageProcessor:""},M={current:null},q=()=>{if(!M.current)M.current=new z({defaultOptions:{queries:{retry:!1,staleTime:1/0}}});return M.current},R=D(null),k=()=>{let p=_(R);if(!p)throw Error("usePieStorybookEmitter must be used inside <PieStorybookProviders />");return p},b=({children:p,emitter:o,pieConfig:r})=>{let s=I(()=>o??U(),[o]),d=I(()=>({...g,...r??{}}),[r]);return P(J,{client:q(),children:P($.Provider,{value:d,children:P(Z.Provider,{value:P(H,{}),children:P(R.Provider,{value:s,children:P(V.Provider,{value:s,children:P(W.Provider,{value:null,children:P(X.Provider,{value:null,children:p})})})})})})})},G=(p)=>L(b,{children:[P(y,{}),P(p,{})]}),c=(p,o)=>`pie${o}_${p}`,T=(p,o,r,s)=>{p.emit(c(o,r),s)},i=({card:p,method:o,payload:r,label:s})=>{let d=k();return P("button",{type:"button",onClick:()=>T(d,p,o,r),style:{padding:"6px 12px",marginRight:8,marginBottom:8,fontSize:12,border:"1px solid #ccc",borderRadius:4,cursor:"pointer",background:"#f7f7f7"},children:s??`${p}.${o}`})},v=()=>{return globalThis.__STORYBOOK_ADDONS_CHANNEL__??null},y=()=>{let p=k(),o=Y(p);return o.current=p,K(()=>{let r=v();if(!r)return;let s=(...d)=>{let w=d[0];if(!w||!w.card||!w.method)return;T(o.current,w.card,w.method,w.payload)};return r.on(A,s),()=>r.off(A,s)},[]),null};export{G as withPieCard,k as usePieStorybookEmitter,T as firePieMethod,b as PieStorybookProviders,y as PieStorybookChannelBridge,i as PieMethodTrigger,A as PIE_STORYBOOK_FIRE_EVENT,h as PIECARD_PARAM_KEY};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var{defineProperty:P,getOwnPropertyNames:s,getOwnPropertyDescriptor:a}=Object,p=Object.prototype.hasOwnProperty;function h(e){return this[e]}var n=(e)=>{var r=(d??=new WeakMap).get(e),i;if(r)return r;if(r=P({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function"){for(var t of s(e))if(!p.call(r,t))P(r,t,{get:h.bind(e,t),enumerable:!(i=a(e,t))||i.enumerable})}return d.set(e,r),r},d;var f=(e)=>e;function m(e,r){this[e]=f.bind(null,r)}var g=(e,r)=>{for(var i in r)P(e,i,{get:r[i],enumerable:!0,configurable:!0,set:m.bind(r,i)})};var y={};g(y,{withPieCard:()=>o.withPieCard,usePieStorybookEmitter:()=>o.usePieStorybookEmitter,firePieMethod:()=>o.firePieMethod,PieStorybookProviders:()=>o.PieStorybookProviders,PieStorybookChannelBridge:()=>o.PieStorybookChannelBridge,PieMethodTrigger:()=>o.PieMethodTrigger,PIE_STORYBOOK_FIRE_EVENT:()=>o.PIE_STORYBOOK_FIRE_EVENT,PIECARD_PARAM_KEY:()=>o.PIECARD_PARAM_KEY});module.exports=n(y);
2
+ var X=Object.create;var{getPrototypeOf:Z,defineProperty:T,getOwnPropertyNames:Y,getOwnPropertyDescriptor:$}=Object,z=Object.prototype.hasOwnProperty;var g=(p,o,P)=>{P=p!=null?X(Z(p)):{};let r=o||!p||!p.__esModule?T(P,"default",{value:p,enumerable:!0}):P;for(let A of Y(p))if(!z.call(r,A))T(r,A,{get:()=>p[A],enumerable:!0});return r},K=new WeakMap,q=(p)=>{var o=K.get(p),P;if(o)return o;if(o=T({},"__esModule",{value:!0}),p&&typeof p==="object"||typeof p==="function")Y(p).map((r)=>!z.call(o,r)&&T(o,r,{get:()=>p[r],enumerable:!(P=$(p,r))||P.enumerable}));return K.set(p,o),o};var G=(p,o)=>{for(var P in o)T(p,P,{get:o[P],enumerable:!0,configurable:!0,set:(r)=>o[P]=()=>r})};var L={};G(L,{withPieCard:()=>V,usePieStorybookEmitter:()=>I,firePieMethod:()=>R,PieStorybookProviders:()=>D,PieStorybookChannelBridge:()=>_,PieMethodTrigger:()=>W,PIE_STORYBOOK_FIRE_EVENT:()=>k,PIECARD_PARAM_KEY:()=>b});module.exports=q(L);var w=require("react"),h=require("@tanstack/react-query"),J=g(require("mitt")),d=require("@swarm.ing/pieui");var b="piecard",k="piecard/fire";var s=require("react/jsx-runtime"),c={apiServer:"",centrifugeServer:"",enableRenderingLog:!1,pageProcessor:""},y={current:null},i=()=>{if(!y.current)y.current=new h.QueryClient({defaultOptions:{queries:{retry:!1,staleTime:1/0}}});return y.current},U=w.createContext(null),I=()=>{let p=w.useContext(U);if(!p)throw Error("usePieStorybookEmitter must be used inside <PieStorybookProviders />");return p},D=({children:p,emitter:o,pieConfig:P})=>{let r=w.useMemo(()=>o??J.default(),[o]),A=w.useMemo(()=>({...c,...P??{}}),[P]);return s.jsx(h.QueryClientProvider,{client:i(),children:s.jsx(d.PieConfigContext.Provider,{value:A,children:s.jsx(d.FallbackContext.Provider,{value:s.jsx(s.Fragment,{}),children:s.jsx(U.Provider,{value:r,children:s.jsx(d.MittContext.Provider,{value:r,children:s.jsx(d.SocketIOContext.Provider,{value:null,children:s.jsx(d.CentrifugeIOContext.Provider,{value:null,children:p})})})})})})})},V=(p)=>s.jsxs(D,{children:[s.jsx(_,{}),s.jsx(p,{})]}),v=(p,o)=>`pie${o}_${p}`,R=(p,o,P,r)=>{p.emit(v(o,P),r)},W=({card:p,method:o,payload:P,label:r})=>{let A=I();return s.jsx("button",{type:"button",onClick:()=>R(A,p,o,P),style:{padding:"6px 12px",marginRight:8,marginBottom:8,fontSize:12,border:"1px solid #ccc",borderRadius:4,cursor:"pointer",background:"#f7f7f7"},children:r??`${p}.${o}`})},H=()=>{return globalThis.__STORYBOOK_ADDONS_CHANNEL__??null},_=()=>{let p=I(),o=w.useRef(p);return o.current=p,w.useEffect(()=>{let P=H();if(!P)return;let r=(...A)=>{let M=A[0];if(!M||!M.card||!M.method)return;R(o.current,M.card,M.method,M.payload)};return P.on(k,r),()=>P.off(k,r)},[]),null};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var F=Object.create;var{getPrototypeOf:b,defineProperty:X,getOwnPropertyNames:Y,getOwnPropertyDescriptor:s}=Object,k=Object.prototype.hasOwnProperty;function H(p){return this[p]}var y,O,Q=(p,w,A)=>{var D=p!=null&&typeof p==="object";if(D){var W=w?y??=new WeakMap:O??=new WeakMap,U=W.get(p);if(U)return U}A=p!=null?F(b(p)):{};let $=w||!p||!p.__esModule?X(A,"default",{value:p,enumerable:!0}):A;for(let G of Y(p))if(!k.call($,G))X($,G,{get:H.bind(p,G),enumerable:!0});if(D)W.set(p,$);return $},c=(p)=>{var w=(V??=new WeakMap).get(p),A;if(w)return w;if(w=X({},"__esModule",{value:!0}),p&&typeof p==="object"||typeof p==="function"){for(var D of Y(p))if(!k.call(w,D))X(w,D,{get:H.bind(p,D),enumerable:!(A=s(p,D))||A.enumerable})}return V.set(p,w),w},V;var h=(p)=>p;function B(p,w){this[p]=h.bind(null,w)}var g=(p,w)=>{for(var A in w)X(p,A,{get:w[A],enumerable:!0,configurable:!0,set:B.bind(w,A)})};var f={};g(f,{withPieCard:()=>E,usePieStorybookEmitter:()=>K,firePieMethod:()=>M,PieStorybookProviders:()=>_,PieStorybookChannelBridge:()=>v,PieMethodTrigger:()=>j,PIE_STORYBOOK_FIRE_EVENT:()=>Z,PIECARD_PARAM_KEY:()=>L});module.exports=c(f);var J=require("react"),q=require("@tanstack/react-query"),R=Q(require("mitt")),T=require("@swarm.ing/pieui");var L="piecard",Z="piecard/fire";var z=require("react/jsx-runtime"),u={apiServer:"",centrifugeServer:"",enableRenderingLog:!1,pageProcessor:""},I={current:null},S=()=>{if(!I.current)I.current=new q.QueryClient({defaultOptions:{queries:{retry:!1,staleTime:1/0}}});return I.current},P=J.createContext(null),K=()=>{let p=J.useContext(P);if(!p)throw Error("usePieStorybookEmitter must be used inside <PieStorybookProviders />");return p},_=({children:p,emitter:w,pieConfig:A})=>{let D=J.useMemo(()=>w??R.default(),[w]),W=J.useMemo(()=>({...u,...A??{}}),[A]);return z.jsx(q.QueryClientProvider,{client:S(),children:z.jsx(T.PieConfigContext.Provider,{value:W,children:z.jsx(T.FallbackContext.Provider,{value:z.jsx(z.Fragment,{}),children:z.jsx(P.Provider,{value:D,children:z.jsx(T.MittContext.Provider,{value:D,children:z.jsx(T.SocketIOContext.Provider,{value:null,children:z.jsx(T.CentrifugeIOContext.Provider,{value:null,children:p})})})})})})})},E=(p)=>z.jsxs(_,{children:[z.jsx(v,{}),z.jsx(p,{})]}),d=(p,w)=>`pie${w}_${p}`,M=(p,w,A,D)=>{p.emit(d(w,A),D)},j=({card:p,method:w,payload:A,label:D})=>{let W=K();return z.jsx("button",{type:"button",onClick:()=>M(W,p,w,A),style:{padding:"6px 12px",marginRight:8,marginBottom:8,fontSize:12,border:"1px solid #ccc",borderRadius:4,cursor:"pointer",background:"#f7f7f7"},children:D??`${p}.${w}`})},N=()=>{return globalThis.__STORYBOOK_ADDONS_CHANNEL__??null},v=()=>{let p=K(),w=J.useRef(p);return w.current=p,J.useEffect(()=>{let A=N();if(!A)return;let D=(...W)=>{let U=W[0];if(!U||!U.card||!U.method)return;M(w.current,U.card,U.method,U.payload)};return A.on(Z,D),()=>A.off(Z,D)},[]),null};
2
+ var P=Object.create;var{getPrototypeOf:_,defineProperty:X,getOwnPropertyNames:M,getOwnPropertyDescriptor:v}=Object,V=Object.prototype.hasOwnProperty;var F=(p,w,A)=>{A=p!=null?P(_(p)):{};let D=w||!p||!p.__esModule?X(A,"default",{value:p,enumerable:!0}):A;for(let U of M(p))if(!V.call(D,U))X(D,U,{get:()=>p[U],enumerable:!0});return D},K=new WeakMap,b=(p)=>{var w=K.get(p),A;if(w)return w;if(w=X({},"__esModule",{value:!0}),p&&typeof p==="object"||typeof p==="function")M(p).map((D)=>!V.call(w,D)&&X(w,D,{get:()=>p[D],enumerable:!(A=v(p,D))||A.enumerable}));return K.set(p,w),w};var s=(p,w)=>{for(var A in w)X(p,A,{get:w[A],enumerable:!0,configurable:!0,set:(D)=>w[A]=()=>D})};var g={};s(g,{withPieCard:()=>Q,usePieStorybookEmitter:()=>G,firePieMethod:()=>I,PieStorybookProviders:()=>L,PieStorybookChannelBridge:()=>R,PieMethodTrigger:()=>h,PIE_STORYBOOK_FIRE_EVENT:()=>Z,PIECARD_PARAM_KEY:()=>Y});module.exports=b(g);var J=require("react"),$=require("@tanstack/react-query"),k=F(require("mitt")),T=require("@swarm.ing/pieui");var Y="piecard",Z="piecard/fire";var z=require("react/jsx-runtime"),y={apiServer:"",centrifugeServer:"",enableRenderingLog:!1,pageProcessor:""},q={current:null},O=()=>{if(!q.current)q.current=new $.QueryClient({defaultOptions:{queries:{retry:!1,staleTime:1/0}}});return q.current},H=J.createContext(null),G=()=>{let p=J.useContext(H);if(!p)throw Error("usePieStorybookEmitter must be used inside <PieStorybookProviders />");return p},L=({children:p,emitter:w,pieConfig:A})=>{let D=J.useMemo(()=>w??k.default(),[w]),U=J.useMemo(()=>({...y,...A??{}}),[A]);return z.jsx($.QueryClientProvider,{client:O(),children:z.jsx(T.PieConfigContext.Provider,{value:U,children:z.jsx(T.FallbackContext.Provider,{value:z.jsx(z.Fragment,{}),children:z.jsx(H.Provider,{value:D,children:z.jsx(T.MittContext.Provider,{value:D,children:z.jsx(T.SocketIOContext.Provider,{value:null,children:z.jsx(T.CentrifugeIOContext.Provider,{value:null,children:p})})})})})})})},Q=(p)=>z.jsxs(L,{children:[z.jsx(R,{}),z.jsx(p,{})]}),c=(p,w)=>`pie${w}_${p}`,I=(p,w,A,D)=>{p.emit(c(w,A),D)},h=({card:p,method:w,payload:A,label:D})=>{let U=G();return z.jsx("button",{type:"button",onClick:()=>I(U,p,w,A),style:{padding:"6px 12px",marginRight:8,marginBottom:8,fontSize:12,border:"1px solid #ccc",borderRadius:4,cursor:"pointer",background:"#f7f7f7"},children:D??`${p}.${w}`})},B=()=>{return globalThis.__STORYBOOK_ADDONS_CHANNEL__??null},R=()=>{let p=G(),w=J.useRef(p);return w.current=p,J.useEffect(()=>{let A=B();if(!A)return;let D=(...U)=>{let W=U[0];if(!W||!W.card||!W.method)return;I(w.current,W.card,W.method,W.payload)};return A.on(Z,D),()=>A.off(Z,D)},[]),null};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swarm.ing/pieui",
3
- "version": "2.0.31",
3
+ "version": "2.0.33",
4
4
  "description": "A React component library featuring PieCard component",
5
5
  "repository": {
6
6
  "type": "git",
@@ -46,8 +46,8 @@
46
46
  }
47
47
  },
48
48
  "scripts": {
49
- "build": "rm -rf ./dist && rm -rf pieui-*.tgz && bun run build:clean && NODE_ENV=production bun run build:esm && NODE_ENV=production bun run build:cjs && NODE_ENV=production bun run build:components:esm && NODE_ENV=production bun run build:components:cjs && NODE_ENV=production bun run build:storybook:esm && NODE_ENV=production bun run build:storybook:cjs && NODE_ENV=production bun run build:storybook:addon:esm && NODE_ENV=production bun run build:storybook:addon:cjs && NODE_ENV=production bun run build:storybook:addon:preset && NODE_ENV=production bun run build:storybook:addon:manager:esm && NODE_ENV=production bun run build:storybook:addon:manager:cjs && bun run build:banner && NODE_ENV=production bun run build:types && NODE_ENV=production bun run build:cli && bun src/cli.ts postbuild --src-dir src --out-dir dist && bun pm pack",
50
- "build:banner": "node -e \"const fs=require('fs');['dist/index.esm.js','dist/index.js','dist/components/index.esm.js','dist/components/index.js','dist/storybook/index.esm.js','dist/storybook/index.js','dist/storybook/addon/index.esm.js','dist/storybook/addon/index.js','dist/storybook/addon/manager.esm.js','dist/storybook/addon/manager.js'].forEach(f=>{if(fs.existsSync(f)){fs.writeFileSync(f,'\\\"use client\\\";\\n'+fs.readFileSync(f,'utf8'))}})\"",
49
+ "build": "rm -rf ./dist && rm -rf pieui-*.tgz && bun run build:clean && NODE_ENV=production bun run build:esm && NODE_ENV=production bun run build:cjs && NODE_ENV=production bun run build:components:esm && NODE_ENV=production bun run build:components:cjs && NODE_ENV=production bun run build:storybook:esm && NODE_ENV=production bun run build:storybook:cjs && NODE_ENV=production bun run build:storybook:addon:esm && NODE_ENV=production bun run build:storybook:addon:cjs && NODE_ENV=production bun run build:storybook:addon:preset && bun run build:banner && NODE_ENV=production bun run build:types && NODE_ENV=production bun run build:cli && bun src/cli.ts postbuild --src-dir src --out-dir dist && bun pm pack",
50
+ "build:banner": "node -e \"const fs=require('fs');['dist/index.esm.js','dist/index.js','dist/components/index.esm.js','dist/components/index.js','dist/storybook/index.esm.js','dist/storybook/index.js','dist/storybook/addon/index.esm.js','dist/storybook/addon/index.js'].forEach(f=>{if(fs.existsSync(f)){fs.writeFileSync(f,'\\\"use client\\\";\\n'+fs.readFileSync(f,'utf8'))}})\"",
51
51
  "build:clean": "rm -rf dist",
52
52
  "build:esm": "bun build src/index.ts --outfile dist/index.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --minify --packages=external",
53
53
  "build:cjs": "bun build src/index.ts --outfile dist/index.js --format cjs --target node --jsx=automatic --jsx-import-source=react --minify --packages=external",
@@ -58,8 +58,8 @@
58
58
  "build:storybook:addon:esm": "bun build src/storybook/addon/index.tsx --outfile dist/storybook/addon/index.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --minify --packages=external",
59
59
  "build:storybook:addon:cjs": "bun build src/storybook/addon/index.tsx --outfile dist/storybook/addon/index.js --format cjs --target node --jsx=automatic --jsx-import-source=react --minify --packages=external",
60
60
  "build:storybook:addon:preset": "mkdir -p dist/storybook/addon && cp src/storybook/addon/preset.cjs dist/storybook/addon/preset.js",
61
- "build:storybook:addon:manager:esm": "bun build src/storybook/addon/manager.tsx --outfile dist/storybook/addon/manager.esm.js --format esm --target browser --jsx-runtime=classic --minify --packages=external",
62
- "build:storybook:addon:manager:cjs": "bun build src/storybook/addon/manager.tsx --outfile dist/storybook/addon/manager.js --format cjs --target node --jsx-runtime=classic --minify --packages=external",
61
+ "build:storybook:addon:manager:esm": "bun build src/storybook/addon/manager.tsx --outfile dist/storybook/addon/manager.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --minify --packages=external",
62
+ "build:storybook:addon:manager:cjs": "bun build src/storybook/addon/manager.tsx --outfile dist/storybook/addon/manager.js --format cjs --target node --jsx=automatic --jsx-import-source=react --minify --packages=external",
63
63
  "build:esm:debug": "bun build src/index.ts --outfile dist/index.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --packages=external",
64
64
  "build:cjs:debug": "bun build src/index.ts --outfile dist/index.js --format cjs --target node --jsx=automatic --jsx-import-source=react --packages=external",
65
65
  "build:components:esm:debug": "bun build src/components/index.ts --outfile dist/components/index.esm.js --format esm --target browser --jsx=automatic --jsx-import-source=react --packages=external",
@@ -1,3 +0,0 @@
1
- "use client";
2
- import"react";import{addons as Q,types as f}from"storybook/manager-api";import*as n from"react";import{useEffect as X,useMemo as Z,useState as q}from"react";import{addons as $,useParameter as j}from"storybook/manager-api";var S="piecard",H="piecard/fire";var u=({children:i,style:x})=>n.createElement("pre",{style:{margin:0,padding:8,fontSize:11,background:"#f5f5f5",border:"1px solid #e0e0e0",borderRadius:4,overflow:"auto",...x??{}}},i),K=(i)=>{if(i.samplePayload!==void 0)try{return JSON.stringify(i.samplePayload,null,2)}catch{}let x=i.payloadSchema;if(!x||typeof x!=="object")return"{}";let T=x.properties??{};if(!Object.keys(T).length)return"{}";let C={};for(let[b,g]of Object.entries(T)){if(typeof g!=="object"||g===null)continue;let w=g.type;if(w==="string")C[b]="";else if(w==="number"||w==="integer")C[b]=0;else if(w==="boolean")C[b]=!1;else if(w==="array")C[b]=[];else if(w==="object")C[b]={};else C[b]=null}return JSON.stringify(C,null,2)},Y=({card:i,method:x})=>{let T=Z(()=>K(x),[x]),[C,b]=q(T),[g,w]=q(null),[z,V]=q(null),W=()=>{let O=void 0,B=C.trim();if(B.length>0)try{O=JSON.parse(B)}catch(G){w(G instanceof Error?G.message:"Invalid JSON payload");return}w(null),$.getChannel().emit(H,{card:i,method:x.name,payload:O}),V(Date.now())};return n.createElement("div",{style:{padding:12,borderBottom:"1px solid #eee",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'}},n.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:6}},n.createElement("code",{style:{fontSize:13,fontWeight:600}},i,".",x.name),n.createElement("button",{type:"button",onClick:W,style:{marginLeft:"auto",padding:"4px 10px",fontSize:12,background:"#1ea7fd",color:"white",border:"none",borderRadius:4,cursor:"pointer"}},"Fire")),x.payloadCode?n.createElement("details",{style:{marginBottom:6}},n.createElement("summary",{style:{fontSize:11,cursor:"pointer"}},"Payload type"),n.createElement(u,null,x.payloadCode)):null,n.createElement("textarea",{value:C,onChange:(O)=>b(O.target.value),rows:Math.min(10,Math.max(2,C.split(`
3
- `).length)),style:{width:"100%",fontFamily:"monospace",fontSize:12,padding:6,border:"1px solid #ddd",borderRadius:4,boxSizing:"border-box"}}),g?n.createElement("div",{style:{marginTop:4,color:"#c00",fontSize:11}},g):null,z?n.createElement("div",{style:{marginTop:4,color:"#666",fontSize:11}},"Fired at ",new Date(z).toLocaleTimeString()):null)},J=({active:i})=>{let x=j(S,null);if(X(()=>{},[x]),!i)return null;if(!x||!x.card)return n.createElement("div",{style:{padding:16,fontSize:13,color:"#666"}},n.createElement("strong",null,"No PieCard parameters on this story."),n.createElement("p",{style:{marginTop:8}},"Add"," ",n.createElement("code",null,"parameters.",S," = ","{"," card, methods"," ","}")," ","to your story to surface method triggers here."));let T=x.methods??[];if(T.length===0)return n.createElement("div",{style:{padding:16,fontSize:13,color:"#666"}},"No methods declared for ",n.createElement("code",null,x.card),".");return n.createElement("div",null,T.map((C)=>n.createElement(Y,{key:C.name,card:x.card,method:C})))};var U="piecard",k=`${U}/panel`;Q.register(U,()=>{Q.add(k,{type:f.PANEL,title:"PieCard Methods",match:({viewMode:i})=>i==="story",render:({active:i})=>J({active:i})})});
@@ -1,3 +0,0 @@
1
- "use client";
2
- var $=Object.create;var{getPrototypeOf:j,defineProperty:Q,getOwnPropertyNames:u}=Object;var K=Object.prototype.hasOwnProperty;function Y(x){return this[x]}var f,k,I=(x,i,b)=>{var C=x!=null&&typeof x==="object";if(C){var T=i?f??=new WeakMap:k??=new WeakMap,g=T.get(x);if(g)return g}b=x!=null?$(j(x)):{};let w=i||!x||!x.__esModule?Q(b,"default",{value:x,enumerable:!0}):b;for(let S of u(x))if(!K.call(w,S))Q(w,S,{get:Y.bind(x,S),enumerable:!0});if(C)T.set(x,w);return w};var v=require("react"),q=require("storybook/manager-api");var n=I(require("react")),O=require("react"),B=require("storybook/manager-api");var G="piecard",U="piecard/fire";var L=({children:x,style:i})=>n.createElement("pre",{style:{margin:0,padding:8,fontSize:11,background:"#f5f5f5",border:"1px solid #e0e0e0",borderRadius:4,overflow:"auto",...i??{}}},x),M=(x)=>{if(x.samplePayload!==void 0)try{return JSON.stringify(x.samplePayload,null,2)}catch{}let i=x.payloadSchema;if(!i||typeof i!=="object")return"{}";let b=i.properties??{};if(!Object.keys(b).length)return"{}";let C={};for(let[T,g]of Object.entries(b)){if(typeof g!=="object"||g===null)continue;let w=g.type;if(w==="string")C[T]="";else if(w==="number"||w==="integer")C[T]=0;else if(w==="boolean")C[T]=!1;else if(w==="array")C[T]=[];else if(w==="object")C[T]={};else C[T]=null}return JSON.stringify(C,null,2)},N=({card:x,method:i})=>{let b=O.useMemo(()=>M(i),[i]),[C,T]=O.useState(b),[g,w]=O.useState(null),[S,X]=O.useState(null),Z=()=>{let z=void 0,H=C.trim();if(H.length>0)try{z=JSON.parse(H)}catch(J){w(J instanceof Error?J.message:"Invalid JSON payload");return}w(null),B.addons.getChannel().emit(U,{card:x,method:i.name,payload:z}),X(Date.now())};return n.createElement("div",{style:{padding:12,borderBottom:"1px solid #eee",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'}},n.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:6}},n.createElement("code",{style:{fontSize:13,fontWeight:600}},x,".",i.name),n.createElement("button",{type:"button",onClick:Z,style:{marginLeft:"auto",padding:"4px 10px",fontSize:12,background:"#1ea7fd",color:"white",border:"none",borderRadius:4,cursor:"pointer"}},"Fire")),i.payloadCode?n.createElement("details",{style:{marginBottom:6}},n.createElement("summary",{style:{fontSize:11,cursor:"pointer"}},"Payload type"),n.createElement(L,null,i.payloadCode)):null,n.createElement("textarea",{value:C,onChange:(z)=>T(z.target.value),rows:Math.min(10,Math.max(2,C.split(`
3
- `).length)),style:{width:"100%",fontFamily:"monospace",fontSize:12,padding:6,border:"1px solid #ddd",borderRadius:4,boxSizing:"border-box"}}),g?n.createElement("div",{style:{marginTop:4,color:"#c00",fontSize:11}},g):null,S?n.createElement("div",{style:{marginTop:4,color:"#666",fontSize:11}},"Fired at ",new Date(S).toLocaleTimeString()):null)},V=({active:x})=>{let i=B.useParameter(G,null);if(O.useEffect(()=>{},[i]),!x)return null;if(!i||!i.card)return n.createElement("div",{style:{padding:16,fontSize:13,color:"#666"}},n.createElement("strong",null,"No PieCard parameters on this story."),n.createElement("p",{style:{marginTop:8}},"Add"," ",n.createElement("code",null,"parameters.",G," = ","{"," card, methods"," ","}")," ","to your story to surface method triggers here."));let b=i.methods??[];if(b.length===0)return n.createElement("div",{style:{padding:16,fontSize:13,color:"#666"}},"No methods declared for ",n.createElement("code",null,i.card),".");return n.createElement("div",null,b.map((C)=>n.createElement(N,{key:C.name,card:i.card,method:C})))};var W="piecard",P=`${W}/panel`;q.addons.register(W,()=>{q.addons.add(P,{type:q.types.PANEL,title:"PieCard Methods",match:({viewMode:x})=>x==="story",render:({active:x})=>V({active:x})})});