@swarm.ing/pieui 2.2.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +17 -19
- package/dist/code/introspection/cardMetadata.d.ts.map +1 -1
- package/dist/code/templates/componentTypes.d.ts.map +1 -1
- package/dist/code/templates/pages/components/shared.d.ts.map +1 -1
- package/dist/components/PieCard/index.d.ts.map +1 -1
- package/dist/components/PieCard/types/index.d.ts +6 -4
- package/dist/components/PieCard/types/index.d.ts.map +1 -1
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +2 -2
- package/dist/index.js +2 -2
- package/dist/native/PieNativeRoot.d.ts +10 -9
- package/dist/native/PieNativeRoot.d.ts.map +1 -1
- package/dist/native/index.d.ts +2 -2
- package/dist/native/index.d.ts.map +1 -1
- package/dist/native/index.esm.js +2 -2
- package/dist/native/index.js +2 -2
- package/dist/telegram/index.esm.js +1 -1
- package/dist/telegram/index.js +1 -1
- package/dist/tests/ajaxStoredResolver.test.d.ts +8 -0
- package/dist/tests/ajaxStoredResolver.test.d.ts.map +1 -0
- package/dist/tests/discoverAjaxEndpoints.test.d.ts +7 -0
- package/dist/tests/discoverAjaxEndpoints.test.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/util/ajaxCommonUtils.d.ts +38 -0
- package/dist/util/ajaxCommonUtils.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -190913,7 +190913,10 @@ var ioFields = ` useSocketioSupport?: boolean
|
|
|
190913
190913
|
centrifugeChannel?: string`;
|
|
190914
190914
|
var ajaxFields = ` pathname?: string
|
|
190915
190915
|
depsNames: string[]
|
|
190916
|
-
kwargs: Record<string, string | number | boolean
|
|
190916
|
+
kwargs: Record<string, string | number | boolean>
|
|
190917
|
+
// Additional endpoints follow the same convention, e.g.
|
|
190918
|
+
// searchPathname?: string; searchDepsNames: string[]; searchKwargs: ...
|
|
190919
|
+
// and are read by useAjaxSubmits(data) as ajaxSubmits.search`;
|
|
190917
190920
|
var storedInterfaceFor = (componentName) => `export interface ${componentName}Stored {
|
|
190918
190921
|
// Add the fields you want submitted as the form value (\`stored\` prop)
|
|
190919
190922
|
}`;
|
|
@@ -191061,16 +191064,16 @@ export default nextConfig;
|
|
|
191061
191064
|
|
|
191062
191065
|
// src/code/templates/pages/components/shared.ts
|
|
191063
191066
|
var dataDestructureFor = (options = {}) => {
|
|
191064
|
-
if (!options.io
|
|
191067
|
+
if (!options.io) {
|
|
191065
191068
|
return "const { name } = data";
|
|
191066
191069
|
}
|
|
191067
|
-
const fields = [
|
|
191068
|
-
|
|
191069
|
-
|
|
191070
|
-
|
|
191071
|
-
|
|
191072
|
-
|
|
191073
|
-
|
|
191070
|
+
const fields = [
|
|
191071
|
+
"name",
|
|
191072
|
+
"useSocketioSupport",
|
|
191073
|
+
"useCentrifugeSupport",
|
|
191074
|
+
"useMittSupport",
|
|
191075
|
+
"centrifugeChannel"
|
|
191076
|
+
];
|
|
191074
191077
|
return `const {
|
|
191075
191078
|
${fields.join(`,
|
|
191076
191079
|
`)},
|
|
@@ -191099,12 +191102,7 @@ var ajaxSubmitDeclarationFor = (options = {}) => {
|
|
|
191099
191102
|
return "";
|
|
191100
191103
|
}
|
|
191101
191104
|
return `
|
|
191102
|
-
const
|
|
191103
|
-
setUiAjaxConfiguration,
|
|
191104
|
-
kwargs,
|
|
191105
|
-
depsNames,
|
|
191106
|
-
pathname
|
|
191107
|
-
)`;
|
|
191105
|
+
const ajaxSubmits = useAjaxSubmits(data, setUiAjaxConfiguration)`;
|
|
191108
191106
|
};
|
|
191109
191107
|
|
|
191110
191108
|
// src/code/templates/pages/components/simpleComponent.ts
|
|
@@ -191112,7 +191110,7 @@ var simpleComponentTemplate = (componentName, options = {}) => {
|
|
|
191112
191110
|
const propsDestructure = options.input ? `{ data, stored${options.ajax ? ", setUiAjaxConfiguration" : ""} }` : `{ data${options.ajax ? ", setUiAjaxConfiguration" : ""} }`;
|
|
191113
191111
|
const propsAnnotation = options.ajax ? `${componentName}Props & { setUiAjaxConfiguration?: SetUiAjaxConfigurationType }` : `${componentName}Props`;
|
|
191114
191112
|
return `import React from 'react'
|
|
191115
|
-
import { PieCard${options.ajax ? ",
|
|
191113
|
+
import { PieCard${options.ajax ? ", useAjaxSubmits, type SetUiAjaxConfigurationType" : ""} } from '@swarm.ing/pieui'
|
|
191116
191114
|
import { ${componentName}Props } from '../types'
|
|
191117
191115
|
|
|
191118
191116
|
const ${componentName} = (${propsDestructure}: ${propsAnnotation}) => {
|
|
@@ -191136,7 +191134,7 @@ export default ${componentName}
|
|
|
191136
191134
|
var complexComponentTemplate = (componentName, options = {}) => {
|
|
191137
191135
|
const propsDestructure = options.input ? `{ data, stored${options.ajax ? ", setUiAjaxConfiguration" : ""} }` : `{ data${options.ajax ? ", setUiAjaxConfiguration" : ""} }`;
|
|
191138
191136
|
return `import React from 'react'
|
|
191139
|
-
import { PieCard${options.ajax ? ",
|
|
191137
|
+
import { PieCard${options.ajax ? ", useAjaxSubmits" : ""} } from '@swarm.ing/pieui'
|
|
191140
191138
|
import { ${componentName}Props } from '../types'
|
|
191141
191139
|
|
|
191142
191140
|
const ${componentName} = (${propsDestructure}: ${componentName}Props) => {
|
|
@@ -191169,7 +191167,7 @@ var simpleContainerComponentTemplate = (componentName, options = {}) => {
|
|
|
191169
191167
|
setUiAjaxConfiguration,
|
|
191170
191168
|
}`;
|
|
191171
191169
|
return `import React, { useContext } from 'react'
|
|
191172
|
-
import { PieCard, UI, UIRendererContext${options.ajax ? ",
|
|
191170
|
+
import { PieCard, UI, UIRendererContext${options.ajax ? ", useAjaxSubmits" : ""} } from '@swarm.ing/pieui'
|
|
191173
191171
|
import { ${componentName}Props } from '../types'
|
|
191174
191172
|
|
|
191175
191173
|
const ${componentName} = (${propsDestructure}: ${componentName}Props) => {
|
|
@@ -191209,7 +191207,7 @@ var complexContainerComponentTemplate = (componentName, options = {}) => {
|
|
|
191209
191207
|
setUiAjaxConfiguration,
|
|
191210
191208
|
}`;
|
|
191211
191209
|
return `import React, { useContext } from 'react'
|
|
191212
|
-
import { PieCard, UI, UIRendererContext${options.ajax ? ",
|
|
191210
|
+
import { PieCard, UI, UIRendererContext${options.ajax ? ", useAjaxSubmits" : ""} } from '@swarm.ing/pieui'
|
|
191213
191211
|
import { ${componentName}Props } from '../types'
|
|
191214
191212
|
|
|
191215
191213
|
const ${componentName} = (${propsDestructure}: ${componentName}Props) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cardMetadata.d.ts","sourceRoot":"","sources":["../../../src/code/introspection/cardMetadata.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;IACb,EAAE,EAAE,OAAO,CAAA;CACd,CAAA;
|
|
1
|
+
{"version":3,"file":"cardMetadata.d.ts","sourceRoot":"","sources":["../../../src/code/introspection/cardMetadata.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;IACb,EAAE,EAAE,OAAO,CAAA;CACd,CAAA;AAoBD,eAAO,MAAM,mBAAmB,GAC5B,eAAe,MAAM,EACrB,QAAQ,MAAM,GAAG,SAAS,KAC3B,YAiBF,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,MAAM,YAAY,KAAG,UAM1D,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentTypes.d.ts","sourceRoot":"","sources":["../../../src/code/templates/componentTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"componentTypes.d.ts","sourceRoot":"","sources":["../../../src/code/templates/componentTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAmBnD,eAAO,MAAM,sBAAsB,GAC/B,eAAe,MAAM,EACrB,eAAe,MAAM,EACrB,UAAS,mBAAwB,KAClC,MA0BF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../../src/code/templates/pages/components/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEzD,eAAO,MAAM,kBAAkB,GAC3B,UAAS,mBAAwB,KAClC,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../../src/code/templates/pages/components/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEzD,eAAO,MAAM,kBAAkB,GAC3B,UAAS,mBAAwB,KAClC,MAkBF,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC7B,eAAe,MAAM,EACrB,UAAS,mBAAwB,KAClC,MAiBF,CAAA;AAED,eAAO,MAAM,wBAAwB,GACjC,UAAS,mBAAwB,KAClC,MASF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieCard/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieCard/index.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC;;;;;;;;;;;;;;;;;GAiBG;AACH,QAAA,MAAM,OAAO,GAAI,OAAO,GAAG,OAAO,EAAG,mIAWlC,YAAY,CAAC,OAAO,CAAC,gWAgQvB,CAAA;AAED,eAAe,OAAO,CAAA"}
|
|
@@ -58,11 +58,13 @@ export interface PieCardProps<TStored = unknown> {
|
|
|
58
58
|
*/
|
|
59
59
|
methods?: Record<string, (data: any) => void>;
|
|
60
60
|
/**
|
|
61
|
-
* When provided,
|
|
62
|
-
*
|
|
63
|
-
*
|
|
61
|
+
* When provided, exposes a value for `name={data.name}` to a surrounding
|
|
62
|
+
* ajax submit. A plain `TStored` renders a hidden input with
|
|
63
|
+
* `value={JSON.stringify(stored)}`. A `() => TStored` instead registers a
|
|
64
|
+
* resolver so the submit reads the *current* value at submit time (no
|
|
65
|
+
* static hidden input is rendered).
|
|
64
66
|
*/
|
|
65
|
-
stored?: TStored;
|
|
67
|
+
stored?: TStored | (() => TStored);
|
|
66
68
|
/**
|
|
67
69
|
* Invoked when a Centrifuge subscription reconnects but cannot recover
|
|
68
70
|
* the full stream of missed publications (the disconnect outlived the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/PieCard/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IACxB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,sCAAsC;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY,CAAC,OAAO,GAAG,OAAO;IAC3C,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAA;IACZ,+DAA+D;IAC/D,IAAI,EAAE,WAAW,CAAA;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,CAAA;IAC7C
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/PieCard/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IACxB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,sCAAsC;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY,CAAC,OAAO,GAAG,OAAO;IAC3C,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAA;IACZ,+DAA+D;IAC/D,IAAI,EAAE,WAAW,CAAA;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,CAAA;IAC7C;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAA;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAA;CAChE"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useContext as S,useEffect as g,useRef as oU}from"react";import{createContext as NU,useContext as yU}from"react";var b=globalThis,X=(U,f)=>{let o=Symbol.for(U);if(!(o in b))b[o]=f();return b[o]};var jU=X("@swarm.ing/pieui:context:pieConfig",()=>NU(null)),kU=()=>{let U=yU(jU);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U};var N=()=>{let{enableRenderingLog:U}=kU();return U},t=N;import{createContext as mU}from"react";import{Centrifuge as XI}from"centrifuge";var YI=X("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var pU=X("@swarm.ing/pieui:context:centrifuge",()=>mU(null)),e=pU;import{io as KI}from"socket.io-client";import{createContext as xU}from"react";var RI=X("@swarm.ing/pieui:socket-cache",()=>new Map);var bU=X("@swarm.ing/pieui:context:socket",()=>xU(null)),UU=bU;import yI from"mitt";import{createContext as SU,useCallback as mI,useContext as pI}from"react";var gU=X("@swarm.ing/pieui:context:mitt",()=>SU(null));var j=gU;function fU(U){return U.wasRecovering===!0&&U.recovered===!1}function IU(U){return U.recoverable===!1}function TU(U,f,o){let T=U.getSubscription(f);if(T)return{subscription:T,createdHere:!1};return{subscription:U.newSubscription(f,o),createdHere:!0}}import{jsx as dU,jsxs as rU,Fragment as lU}from"react/jsx-runtime";var vU=({card:U,data:f,children:o,useSocketioSupport:T=!1,useCentrifugeSupport:z=!1,useMittSupport:I=!1,centrifugeChannel:Z=void 0,methods:A=void 0,stored:P=void 0,onResync:$=void 0})=>{let L=t(),B=oU(A);B.current=A;let Q=oU($);if(Q.current=$,L)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",f),console.log("[PieCard] Component name:",f?.name),console.log("[PieCard] Real-time support:",{socketio:T,centrifuge:z,mitt:I,centrifugeChannel:Z}),console.log("[PieCard] Methods:",A?Object.keys(A):"none"),console.log("[PieCard] Has children:",!!o);let q=S(UU),O=S(e),w=S(j);if(g(()=>{if(!q||!T||!B.current||!f.name){if(L&&T)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!q,useSocketioSupport:T,hasMethods:!!B.current,hasDataName:!!f?.name});return}let K=Object.keys(B.current??{}).map((J)=>{let G=`pie${J}_${f.name}`;if(L)console.log(`[PieCard] Socket.IO registering event: ${G}`);let H=(_)=>{B.current?.[J]?.(_)};return q.on(G,H),[G,H]});return()=>{K.forEach(([J,G])=>{if(L)console.log(`[PieCard] Socket.IO unregistering event: ${J}`);q.off(J,G)})}},[q,f.name,T]),g(()=>{if(!O||!z||!Z||!f.name){if(L&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!B.current,hasDataName:!!f?.name});return}let K=Object.keys(B.current??{}).map((J)=>{let G=`pie${J}_${f.name}_${Z}`;if(L)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let{subscription:H,createdHere:_}=TU(O,G,{recoverable:!0,positioned:!0}),s=(E)=>{if(L)console.log(`[PieCard] Centrifuge received data on ${G}:`,E.data);B.current?.[J]?.(E.data)},a=(E)=>{if(IU(E))console.warn(`[PieCard] Centrifuge channel ${G} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(fU(E)){if(L)console.log(`[PieCard] Centrifuge recovery gap on ${G}; requesting resync`);Q.current?.({channel:G,reason:"gap"})}};return H.on("publication",s),H.on("subscribed",a),H.subscribe(),{subscription:H,createdHere:_,onPublication:s,onSubscribed:a}});return()=>{K.forEach(({subscription:J,createdHere:G,onPublication:H,onSubscribed:_})=>{if(L)console.log("[PieCard] Centrifuge unsubscribing from channel");if(J.off("publication",H),J.off("subscribed",_),G)J.unsubscribe(),O.removeSubscription(J)})}},[O,Z,f.name,z]),g(()=>{if(!w||!I||!f.name){if(L&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:I,hasMethods:!!B.current,hasDataName:!!f?.name});return}let C=Object.keys(B.current??{}),K={};return C.forEach((J)=>{let G=`pie${J}_${f.name}`,H=(_)=>{if(L)console.log(`[PieCard] Mitt registering event: ${G}`);B.current?.[J]?.(_)};K[G]=H,w.on(G,H)}),()=>{Object.entries(K).forEach(([J,G])=>{if(L)console.log(`[PieCard] Mitt unregistering event: ${J}`);w.off(J,G)})}},[w,f.name,I]),L)console.log("[PieCard] Rendering complete, returning children");if(P!==void 0)return rU(lU,{children:[dU("input",{type:"hidden",name:f.name,value:JSON.stringify(P)}),o]});return o},D=vU;import{lazy as uU}from"react";var y=new Map;function cU(U,f){return f.catch(()=>{if(y.get(U)===f)y.delete(U)}),y.set(U,f),f}function zU(U,f){return uU(()=>{if(y.has(f))return y.get(f);return cU(f,U().then((o)=>o))})}var ZU=X("@swarm.ing/pieui:component-registry",()=>new Map),hU=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let f={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!f.component&&f.loader)f.component=zU(f.loader,U.name),f.isLazy=!0;return f};function F(U){let f=hU(U);return ZU.set(f.name,f),f.component}var k=(U)=>{return ZU.get(U)};import{useContext as OU,memo as zf}from"react";import{createContext as iU}from"react";import{jsx as aU,Fragment as sU}from"react/jsx-runtime";var nU=X("@swarm.ing/pieui:context:fallback",()=>iU(aU(sU,{}))),V=nU;import{createContext as tU}from"react";var eU=X("@swarm.ing/pieui:context:lazyError",()=>tU(void 0)),m=eU;import{Component as Uf,Suspense as ff}from"react";import{jsx as of}from"react/jsx-runtime";var If=2,Tf=400;class M extends Uf{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<If){let f=Tf*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((o)=>({failed:!1,attempt:o.attempt+1}))},f)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return of(ff,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as v}from"react/jsx-runtime";function Zf({uiConfig:U,setUiAjaxConfiguration:f}){let o=OU(V),T=OU(m),z=N();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!f);let I=k(U.card);if(!I?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return o}if(z)console.log("[UI] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let Z=I.component,A=v(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f});if(I.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",I.name);return v(M,{name:I.name,fallback:I.fallback?v(I.fallback,{}):o,onError:T,children:A})}if(z)console.log("[UI] Rendering component directly:",I.name);return A}var W=zf(Zf);import{useContext as AU}from"react";import{createContext as Of}from"react";var Af=X("@swarm.ing/pieui:context:uiRenderer",()=>Of(null)),Y=Af;import{jsx as p}from"react/jsx-runtime";function BU({uiConfig:U,setUiAjaxConfiguration:f}){let o=AU(V),T=AU(m),z=N();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!f);let I=k(U.card);if(!I?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return o}if(z)console.log("[UILoading] Found component in registry:",{name:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata,hasFallback:!!I.fallback});if(I.fallback){if(z)console.log("[UILoading] Rendering fallback for:",I.name);let P=I.fallback;return p(P,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let Z=I.component,A=p(Y.Provider,{value:BU,children:p(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f})});if(I.isLazy)return p(M,{name:I.name,fallback:o,onError:T,children:A});return A}var Bf=BU;import{useContext as Hf}from"react";import{jsx as l}from"react/jsx-runtime";var Pf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:T,sx:z}=U,I=Hf(Y)??W;return l(D,{card:T,data:U,children:l("div",{style:z,id:T,children:f.map((Z,A)=>{return l(I,{uiConfig:Z,setUiAjaxConfiguration:o},`children-${A}`)})})})},HU=Pf;var $f=F({name:"SequenceCard",component:HU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as qf}from"react";import{jsx as PU}from"react/jsx-runtime";var Lf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:T}=U,z=qf(Y)??W;return PU(D,{card:T,data:U,children:f.map((I,Z)=>{return PU(z,{uiConfig:I,setUiAjaxConfiguration:o},`children-${Z}`)})})},$U=Lf;var Gf=F({name:"UnionCard",component:$U,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as Qf,useState as Xf}from"react";import wf from"html-react-parser";import{useCallback as x,useEffect as Jf,useRef as d,useState as Ff}from"react";function Df(){let U=new AudioContext,f=U.createOscillator(),o=f.connect(U.createMediaStreamDestination());f.start();let T=o.stream.getAudioTracks()[0];return T.enabled=!1,T}function r(U=null,f){let[o,T]=Ff(!1),z=d(null),I=d(null),Z=d(null),A=x(async(B,Q=!0)=>{if(z.current)P();let q=new RTCPeerConnection;if(q.onconnectionstatechange=()=>{if(q.connectionState==="connected")T(!0);else if(["disconnected","failed","closed"].includes(q.connectionState))T(!1)},q.ontrack=(H)=>{if(U)U.srcObject=H.streams[0]},Q){let H=await navigator.mediaDevices.getUserMedia({audio:!0});q.addTrack(H.getTracks()[0],H)}else{let H=Df();q.addTrack(H)}let O=q.createDataChannel("oai-events");I.current=O,Z.current=new Promise((H)=>{O.addEventListener("open",()=>{H()})});let w=await q.createOffer();await q.setLocalDescription(w);let G=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:w.sdp,headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/sdp"}})).text();await q.setRemoteDescription({type:"answer",sdp:G}),z.current=q,await Z.current},[U]),P=x(()=>{let B=I.current;if(B)B.close();z.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),z.current?.close(),T(!1),z.current=null,I.current=null,Z.current=null},[U]),$=x((B)=>{let Q=I.current;if(!Q){console.error("Data channel is not ready",B);return}let q=new Date().toLocaleTimeString();if(B.event_id=B.event_id||crypto.randomUUID(),Q.send(JSON.stringify(B)),!B.timestamp)B.timestamp=q;f?.(B)},[f,U]),L=x((B)=>{if(!I.current){console.error("Data channel is not ready");return}let q=()=>{$({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:B}]}}),$({type:"response.create"})};if(Z.current)Z.current.then(q);else q()},[f,U]);return Jf(()=>{let B=I.current;if(!B)return;let Q=(q)=>{let O=JSON.parse(q.data);if(!O.timestamp)O.timestamp=new Date().toLocaleTimeString();f?.(O)};return B.addEventListener("message",Q),()=>{B.removeEventListener("message",Q)}},[f,U]),{isSessionActive:o,startSession:A,stopSession:P,sendTextMessage:L}}import{jsx as Wf}from"react/jsx-runtime";var Yf=({data:U})=>{let{html:f,useSocketioSupport:o,useCentrifugeSupport:T,useMittSupport:z,centrifugeChannel:I}=U,[Z,A]=Xf(f),{isSessionActive:P,startSession:$,sendTextMessage:L}=r(null,(O)=>{if(console.log(O.type,O.type==="response.output_text.delta"&&O.delta),O.type==="response.output_text.delta"&&O.delta)A((w)=>w+O.delta)});return Qf(()=>{A(f)},[f]),Wf(D,{card:"HTMLEmbedCard",data:U,methods:{update:(O)=>{A(O.value)},generateUsingAI:async(O)=>{try{if(!P&&O.token)await $(O.token,!1);L(O.prompt)}catch(w){console.error("Failed to generate using AI",w)}},initializeAI:async(O)=>{if(!P&&O.token)await $(O.token,!1)}},useCentrifugeSupport:T,useSocketioSupport:o,useMittSupport:z,centrifugeChannel:I,children:wf(Z)})},qU=Yf;var _f=F({name:"HTMLEmbedCard",component:qU,metadata:{author:"Swarm.ing"}});import{useEffect as Kf,useState as Vf}from"react";import{jsx as LU}from"react/jsx-runtime";var Cf=({data:U})=>{let{name:f,value:o,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:I,centrifugeChannel:Z}=U,[A,P]=Vf(o);return Kf(()=>{P(o)},[o]),LU(D,{card:"HiddenCard",data:U,useSocketioSupport:T,useCentrifugeSupport:z,useMittSupport:I,centrifugeChannel:Z,methods:{update:({value:$})=>{P($)}},children:LU("input",{type:"hidden",id:f,name:f,value:A})})},GU=Cf;var Mf=F({name:"HiddenCard",component:GU,metadata:{author:"Swarm.ing"}});import{useContext as JU,useEffect as Nf}from"react";import{createContext as Rf}from"react";var Ef=X("@swarm.ing/pieui:context:navigate",()=>Rf(void 0)),R=Ef;import{jsx as kf,Fragment as jf}from"react/jsx-runtime";var yf=({data:U})=>{let{url:f}=U,o=JU(R),T=JU(V);return Nf(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(f))window.location.href=f;else o?.(f)},[f,o]),kf(jf,{children:T})},FU=yf;var mf=F({name:"AutoRedirectCard",component:FU,metadata:{author:"Swarm.ing"}});import{Bounce as pf,Slide as xf,Zoom as bf,Flip as Sf}from"react-toastify";import{toast as gf,ToastContainer as vf}from"react-toastify";import{useContext as lf,useMemo as df,useRef as rf}from"react";import{jsx as u,Fragment as af}from"react/jsx-runtime";var uf={bounce:pf,slide:xf,zoom:bf,flip:Sf},cf=(U)=>{let f={...U,type:U.alertType,transition:U.transition?uf[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};gf(U.message,f)},hf=(U)=>{console.log("Log event",U)},nf=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let f=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(T){console.error("[IOEventsCard] Failed to show notification",T)}},o=window.Notification.permission;if(o==="granted"){f();return}if(o==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((T)=>{if(T==="granted")f()})},sf=({data:U})=>{let{useCentrifugeSupport:f,useSocketioSupport:o,useMittSupport:T,centrifugeChannel:z}=U,I=lf(R),Z=rf(I);Z.current=I;let A=df(()=>({alert:cf,log:hf,push:nf,redirect:(P)=>{if(P.to){let $=P.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($))window.location.href=$;else Z.current?.($)}else window.location.reload()},reload:(P)=>{if(P.to){let $=P.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($))window.location.href=$;else Z.current?.($)}else window.location.reload()}}),[]);return u(af,{children:u(D,{card:"IOEventsCard",data:U,useCentrifugeSupport:f,useSocketioSupport:o,useMittSupport:T,centrifugeChannel:z,methods:A,children:u(vf,{})})})},DU=sf;var tf=F({name:"IOEventsCard",component:DU,metadata:{author:"Swarm.ing"}});import{useEffect as QU,useState as ef}from"react";import{jsx as XU}from"react/jsx-runtime";var UI=({data:U})=>{let{name:f,key:o,value:T,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:A}=U,[P,$]=ef(T);return QU(()=>{$(T)},[T]),QU(()=>{if(typeof window>"u")return;sessionStorage.setItem(o,P)},[o,P]),XU(D,{card:"SessionStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:A,methods:{update:({value:L})=>{$(L)},remove:()=>{sessionStorage.removeItem(o),$("")}},children:XU("input",{type:"hidden",id:f,name:f,value:P})})},wU=UI;var fI=F({name:"SessionStorageCard",component:wU,metadata:{author:"PieData"}});import{useEffect as YU,useState as II}from"react";import{jsx as WU}from"react/jsx-runtime";var TI=({data:U})=>{let{name:f,key:o,value:T,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:A}=U,[P,$]=II(T);return YU(()=>{$(T)},[T]),YU(()=>{if(typeof window>"u")return;localStorage.setItem(o,P)},[o,P]),WU(D,{card:"DeviceStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:A,methods:{update:({value:L})=>{$(L)},remove:()=>{localStorage.removeItem(o),$("")}},children:WU("input",{type:"hidden",id:f,name:f,value:P})})},_U=TI;var oI=F({name:"DeviceStorageCard",component:_U,metadata:{author:"PieData"}});import{useCallback as c,useContext as h,useEffect as zI,useRef as ZI,useState as KU}from"react";import{jsx as VU}from"react/jsx-runtime";var OI=({data:U,content:f})=>{let{useLoader:o,noReturn:T,returnType:z,useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:A,centrifugeChannel:P}=U,$=h(V),L=h(Y)??W,[B,Q]=KU(!1),[q,O]=KU(null),w=ZI(f),C=h(j),K=c((H)=>{if(H===null)Q(!0);else if(Q(!1),!T)w.current=H;if(!T)O(H)},[T]),J=c((H)=>{w.current=H.content,O(H.content)},[]),G=c((H)=>{if(H===null)Q(!0);else if(Q(!1),!T)for(let _ of H)C?.emit(_.name,_.data)},[T,C]);if(zI(()=>{O(f),Q(!1)},[f]),!q&&o)return $;return VU(D,{card:"AjaxGroupCard",data:U,methods:{changeContent:J},useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:A,centrifugeChannel:P,children:VU(L,{uiConfig:q??w.current,setUiAjaxConfiguration:z==="events"?G:K})})},CU=OI;var AI=F({name:"AjaxGroupCard",component:CU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as MU}from"react";import{jsx as i}from"react/jsx-runtime";var BI=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:T,url:z,sx:I}=U,Z=MU(R),A=MU(Y)??W;return i(D,{card:T,data:U,children:i("div",{style:I,id:T,onClick:($)=>{if(z)if($.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else Z?.(z)},children:i(A,{setUiAjaxConfiguration:o,uiConfig:f})})})},RU=BI;var HI=F({name:"BoxCard",component:RU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as PI}from"react";import{jsx as n}from"react/jsx-runtime";var $I=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:T,sx:z}=U,I=PI(Y)??W;return n(D,{card:T,data:U,children:n("div",{style:z,id:T,children:f.map((Z,A)=>{return n(I,{uiConfig:Z,setUiAjaxConfiguration:o},`children-${A}`)})})})},EU=$I;var qI=F({name:"OneOfCard",component:EU,metadata:{author:"Swarm.ing",description:"Different variants"}});export{Gf as UnionCard,Bf as UILoading,W as UI,fI as SessionStorageCard,$f as SequenceCard,D as PieCard,qI as OneOfCard,tf as IOEventsCard,Mf as HiddenCard,_f as HTMLEmbedCard,oI as DeviceStorageCard,HI as BoxCard,mf as AutoRedirectCard,AI as AjaxGroupCard};
|
|
2
|
+
import{useContext as o,useEffect as m,useRef as c}from"react";import{createContext as mI,useContext as bI}from"react";var g=globalThis,_=(I,U)=>{let Z=Symbol.for(I);if(!(Z in g))g[Z]=U();return g[Z]};var pI=_("@swarm.ing/pieui:context:pieConfig",()=>mI(null)),vI=()=>{let I=bI(pI);if(!I)throw Error("usePieConfig must be used within PieConfigProvider");return I};var y=()=>{let{enableRenderingLog:I}=vI();return I},UI=y;import{createContext as hI}from"react";import{Centrifuge as MT}from"centrifuge";var LT=_("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var gI=_("@swarm.ing/pieui:context:centrifuge",()=>hI(null)),TI=gI;import{io as NT}from"socket.io-client";import{createContext as oI}from"react";var yT=_("@swarm.ing/pieui:socket-cache",()=>new Map);var cI=_("@swarm.ing/pieui:context:socket",()=>oI(null)),zI=cI;import mT from"mitt";import{createContext as lI,useCallback as vT,useContext as hT}from"react";var uI=_("@swarm.ing/pieui:context:mitt",()=>lI(null));var S=uI;function ZI(I){return I.wasRecovering===!0&&I.recovered===!1}function BI(I){return I.recoverable===!1}function HI(I,U,Z){let z=I.getSubscription(U);if(z)return{subscription:z,createdHere:!1};return{subscription:I.newSubscription(U,Z),createdHere:!0}}import{useMemo as dT}from"react";var $I=new Map,qI=(I,U)=>{$I.set(I,U)},OI=(I)=>{$I.delete(I)};import{jsx as rI,jsxs as sI,Fragment as iI}from"react/jsx-runtime";var dI=({card:I,data:U,children:Z,useSocketioSupport:z=!1,useCentrifugeSupport:B=!1,useMittSupport:T=!1,centrifugeChannel:$=void 0,methods:O=void 0,stored:q=void 0,onResync:Q=void 0})=>{let X=UI(),G=c(O);G.current=O;let D=c(Q);D.current=Q;let Y=c(q);Y.current=q;let J=typeof q==="function";if(m(()=>{if(!J)return;let L=U.name;return qI(L,()=>[JSON.stringify(Y.current())]),()=>OI(L)},[J,U.name]),X)console.log("[PieCard] Rendering card:",I),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:B,mitt:T,centrifugeChannel:$}),console.log("[PieCard] Methods:",O?Object.keys(O):"none"),console.log("[PieCard] Has children:",!!Z);let V=o(zI),A=o(TI),R=o(S);if(m(()=>{if(!V||!z||!G.current||!U.name){if(X&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!V,useSocketioSupport:z,hasMethods:!!G.current,hasDataName:!!U?.name});return}let M=Object.keys(G.current??{}).map((H)=>{let P=`pie${H}_${U.name}`;if(X)console.log(`[PieCard] Socket.IO registering event: ${P}`);let w=(N)=>{G.current?.[H]?.(N)};return V.on(P,w),[P,w]});return()=>{M.forEach(([H,P])=>{if(X)console.log(`[PieCard] Socket.IO unregistering event: ${H}`);V.off(H,P)})}},[V,U.name,z]),m(()=>{if(!A||!B||!$||!U.name){if(X&&B)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!A,useCentrifugeSupport:B,hasCentrifugeChannel:!!$,hasMethods:!!G.current,hasDataName:!!U?.name});return}let M=Object.keys(G.current??{}).map((H)=>{let P=`pie${H}_${U.name}_${$}`;if(X)console.log(`[PieCard] Centrifuge subscribing to channel: ${P}`);let{subscription:w,createdHere:N}=HI(A,P,{recoverable:!0,positioned:!0}),e=(k)=>{if(X)console.log(`[PieCard] Centrifuge received data on ${P}:`,k.data);G.current?.[H]?.(k.data)},II=(k)=>{if(BI(k))console.warn(`[PieCard] Centrifuge channel ${P} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(ZI(k)){if(X)console.log(`[PieCard] Centrifuge recovery gap on ${P}; requesting resync`);D.current?.({channel:P,reason:"gap"})}};return w.on("publication",e),w.on("subscribed",II),w.subscribe(),{subscription:w,createdHere:N,onPublication:e,onSubscribed:II}});return()=>{M.forEach(({subscription:H,createdHere:P,onPublication:w,onSubscribed:N})=>{if(X)console.log("[PieCard] Centrifuge unsubscribing from channel");if(H.off("publication",w),H.off("subscribed",N),P)H.unsubscribe(),A.removeSubscription(H)})}},[A,$,U.name,B]),m(()=>{if(!R||!T||!U.name){if(X&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!R,useMittSupport:T,hasMethods:!!G.current,hasDataName:!!U?.name});return}let L=Object.keys(G.current??{}),M={};return L.forEach((H)=>{let P=`pie${H}_${U.name}`,w=(N)=>{if(X)console.log(`[PieCard] Mitt registering event: ${P}`);G.current?.[H]?.(N)};M[P]=w,R.on(P,w)}),()=>{Object.entries(M).forEach(([H,P])=>{if(X)console.log(`[PieCard] Mitt unregistering event: ${H}`);R.off(H,P)})}},[R,U.name,T]),X)console.log("[PieCard] Rendering complete, returning children");if(q!==void 0&&!J)return sI(iI,{children:[rI("input",{type:"hidden",name:U.name,value:JSON.stringify(q)}),Z]});return Z},F=dI;import{lazy as nI}from"react";var x=new Map;function aI(I,U){return U.catch(()=>{if(x.get(I)===U)x.delete(I)}),x.set(I,U),U}function GI(I,U){return nI(()=>{if(x.has(U))return x.get(U);return aI(U,I().then((Z)=>Z))})}var JI=_("@swarm.ing/pieui:component-registry",()=>new Map),tI=(I)=>{if(!I.name)throw Error("Component registration requires a name");if(!I.component&&!I.loader)throw Error(`Component "${I.name}" requires component or loader`);let U={name:I.name,component:I.component,loader:I.loader,metadata:I.metadata,fallback:I.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=GI(U.loader,I.name),U.isLazy=!0;return U};function W(I){let U=tI(I);return JI.set(U.name,U),U.component}var b=(I)=>{return JI.get(I)};import{useContext as QI,memo as GU}from"react";import{createContext as eI}from"react";import{jsx as TU,Fragment as UU}from"react/jsx-runtime";var IU=_("@swarm.ing/pieui:context:fallback",()=>eI(TU(UU,{}))),C=IU;import{createContext as zU}from"react";var ZU=_("@swarm.ing/pieui:context:lazyError",()=>zU(void 0)),p=ZU;import{Component as BU,Suspense as HU}from"react";import{jsx as OU}from"react/jsx-runtime";var $U=2,qU=400;class j extends BU{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(I){if(this.props.onError?.(I),this.state.attempt<$U){let U=qU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((Z)=>({failed:!1,attempt:Z.attempt+1}))},U)}}componentDidUpdate(I){if(I.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return OU(HU,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as l}from"react/jsx-runtime";function JU({uiConfig:I,setUiAjaxConfiguration:U}){let Z=QI(C),z=QI(p),B=y();if(B)console.log("[UI] Rendering component:",I.card),console.log("[UI] Component data:",I.data),console.log("[UI] Component content:",I.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let T=b(I.card);if(!T?.component){if(B)console.warn(`[UI] Component not found in registry: ${I.card}`),console.log("[UI] Returning fallback component");return Z}if(B)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let $=T.component,O=l($,{data:I.data,content:I.content,setUiAjaxConfiguration:U});if(T.isLazy){if(B)console.log("[UI] Rendering lazy component with Suspense:",T.name);return l(j,{name:T.name,fallback:T.fallback?l(T.fallback,{}):Z,onError:z,children:O})}if(B)console.log("[UI] Rendering component directly:",T.name);return O}var K=GU(JU);import{useContext as XI}from"react";import{createContext as QU}from"react";var XU=_("@swarm.ing/pieui:context:uiRenderer",()=>QU(null)),f=XU;import{jsx as v}from"react/jsx-runtime";function YI({uiConfig:I,setUiAjaxConfiguration:U}){let Z=XI(C),z=XI(p),B=y();if(B)console.log("[UILoading] Rendering fallback for:",I.card),console.log("[UILoading] Component data:",I.data),console.log("[UILoading] Component content:",I.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let T=b(I.card);if(!T?.component){if(B)console.warn(`[UILoading] Component not found in registry: ${I.card}`),console.log("[UILoading] Returning fallback component");return Z}if(B)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(B)console.log("[UILoading] Rendering fallback for:",T.name);let q=T.fallback;return v(q,{})}if(B)console.log("[UILoading] No fallback, rendering full component:",T.name);let $=T.component,O=v(f.Provider,{value:YI,children:v($,{data:I.data,content:I.content,setUiAjaxConfiguration:U})});if(T.isLazy)return v(j,{name:T.name,fallback:Z,onError:z,children:O});return O}var YU=YI;import{useContext as PU}from"react";import{jsx as u}from"react/jsx-runtime";var WU=({data:I,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:B}=I,T=PU(f)??K;return u(F,{card:z,data:I,children:u("div",{style:B,id:z,children:U.map(($,O)=>{return u(T,{uiConfig:$,setUiAjaxConfiguration:Z},`children-${O}`)})})})},PI=WU;var FU=W({name:"SequenceCard",component:PI,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as DU}from"react";import{jsx as WI}from"react/jsx-runtime";var _U=({data:I,content:U,setUiAjaxConfiguration:Z})=>{let{name:z}=I,B=DU(f)??K;return WI(F,{card:z,data:I,children:U.map((T,$)=>{return WI(B,{uiConfig:T,setUiAjaxConfiguration:Z},`children-${$}`)})})},FI=_U;var VU=W({name:"UnionCard",component:FI,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as MU,useState as AU}from"react";import LU from"html-react-parser";import{useCallback as h,useEffect as wU,useRef as d,useState as fU}from"react";function KU(){let I=new AudioContext,U=I.createOscillator(),Z=U.connect(I.createMediaStreamDestination());U.start();let z=Z.stream.getAudioTracks()[0];return z.enabled=!1,z}function i(I=null,U){let[Z,z]=fU(!1),B=d(null),T=d(null),$=d(null),O=h(async(G,D=!0)=>{if(B.current)q();let Y=new RTCPeerConnection;if(Y.onconnectionstatechange=()=>{if(Y.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(Y.connectionState))z(!1)},Y.ontrack=(H)=>{if(I)I.srcObject=H.streams[0]},D){let H=await navigator.mediaDevices.getUserMedia({audio:!0});Y.addTrack(H.getTracks()[0],H)}else{let H=KU();Y.addTrack(H)}let J=Y.createDataChannel("oai-events");T.current=J,$.current=new Promise((H)=>{J.addEventListener("open",()=>{H()})});let V=await Y.createOffer();await Y.setLocalDescription(V);let M=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:V.sdp,headers:{Authorization:`Bearer ${G}`,"Content-Type":"application/sdp"}})).text();await Y.setRemoteDescription({type:"answer",sdp:M}),B.current=Y,await $.current},[I]),q=h(()=>{let G=T.current;if(G)G.close();B.current?.getSenders()?.forEach((D)=>D.track?.stop()),B.current?.close(),z(!1),B.current=null,T.current=null,$.current=null},[I]),Q=h((G)=>{let D=T.current;if(!D){console.error("Data channel is not ready",G);return}let Y=new Date().toLocaleTimeString();if(G.event_id=G.event_id||crypto.randomUUID(),D.send(JSON.stringify(G)),!G.timestamp)G.timestamp=Y;U?.(G)},[U,I]),X=h((G)=>{if(!T.current){console.error("Data channel is not ready");return}let Y=()=>{Q({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:G}]}}),Q({type:"response.create"})};if($.current)$.current.then(Y);else Y()},[U,I]);return wU(()=>{let G=T.current;if(!G)return;let D=(Y)=>{let J=JSON.parse(Y.data);if(!J.timestamp)J.timestamp=new Date().toLocaleTimeString();U?.(J)};return G.addEventListener("message",D),()=>{G.removeEventListener("message",D)}},[U,I]),{isSessionActive:Z,startSession:O,stopSession:q,sendTextMessage:X}}import{jsx as CU}from"react/jsx-runtime";var RU=({data:I})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:z,useMittSupport:B,centrifugeChannel:T}=I,[$,O]=AU(U),{isSessionActive:q,startSession:Q,sendTextMessage:X}=i(null,(J)=>{if(console.log(J.type,J.type==="response.output_text.delta"&&J.delta),J.type==="response.output_text.delta"&&J.delta)O((V)=>V+J.delta)});return MU(()=>{O(U)},[U]),CU(F,{card:"HTMLEmbedCard",data:I,methods:{update:(J)=>{O(J.value)},generateUsingAI:async(J)=>{try{if(!q&&J.token)await Q(J.token,!1);X(J.prompt)}catch(V){console.error("Failed to generate using AI",V)}},initializeAI:async(J)=>{if(!q&&J.token)await Q(J.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:Z,useMittSupport:B,centrifugeChannel:T,children:LU($)})},DI=RU;var NU=W({name:"HTMLEmbedCard",component:DI,metadata:{author:"Swarm.ing"}});import{useEffect as jU,useState as EU}from"react";import{jsx as _I}from"react/jsx-runtime";var kU=({data:I})=>{let{name:U,value:Z,useSocketioSupport:z,useCentrifugeSupport:B,useMittSupport:T,centrifugeChannel:$}=I,[O,q]=EU(Z);return jU(()=>{q(Z)},[Z]),_I(F,{card:"HiddenCard",data:I,useSocketioSupport:z,useCentrifugeSupport:B,useMittSupport:T,centrifugeChannel:$,methods:{update:({value:Q})=>{q(Q)}},children:_I("input",{type:"hidden",id:U,name:U,value:O})})},VI=kU;var yU=W({name:"HiddenCard",component:VI,metadata:{author:"Swarm.ing"}});import{useContext as wI,useEffect as mU}from"react";import{createContext as xU}from"react";var SU=_("@swarm.ing/pieui:context:navigate",()=>xU(void 0)),E=SU;import{jsx as vU,Fragment as pU}from"react/jsx-runtime";var bU=({data:I})=>{let{url:U}=I,Z=wI(E),z=wI(C);return mU(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),vU(pU,{children:z})},fI=bU;var hU=W({name:"AutoRedirectCard",component:fI,metadata:{author:"Swarm.ing"}});import{Bounce as gU,Slide as oU,Zoom as cU,Flip as lU}from"react-toastify";import{toast as uU,ToastContainer as dU}from"react-toastify";import{useContext as iU,useMemo as rU,useRef as sU}from"react";import{jsx as r,Fragment as UT}from"react/jsx-runtime";var nU={bounce:gU,slide:oU,zoom:cU,flip:lU},aU=(I)=>{let U={...I,type:I.alertType,transition:I.transition?nU[I.transition]:void 0,position:I.position??"bottom-right",autoClose:I.autoClose??3000,style:{backgroundColor:"black",...I.sx}};uU(I.message,U)},tU=(I)=>{console.log("Log event",I)},eU=(I)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(I.title,{body:I.message??I.subtitle,icon:I.icon,silent:I.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")U()})},IT=({data:I})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:B}=I,T=iU(E),$=sU(T);$.current=T;let O=rU(()=>({alert:aU,log:tU,push:eU,redirect:(q)=>{if(q.to){let Q=q.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Q))window.location.href=Q;else $.current?.(Q)}else window.location.reload()},reload:(q)=>{if(q.to){let Q=q.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Q))window.location.href=Q;else $.current?.(Q)}else window.location.reload()}}),[]);return r(UT,{children:r(F,{card:"IOEventsCard",data:I,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:z,centrifugeChannel:B,methods:O,children:r(dU,{})})})},KI=IT;var TT=W({name:"IOEventsCard",component:KI,metadata:{author:"Swarm.ing"}});import{useEffect as MI,useState as zT}from"react";import{jsx as AI}from"react/jsx-runtime";var ZT=({data:I})=>{let{name:U,key:Z,value:z,useSocketioSupport:B,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:O}=I,[q,Q]=zT(z);return MI(()=>{Q(z)},[z]),MI(()=>{if(typeof window>"u")return;sessionStorage.setItem(Z,q)},[Z,q]),AI(F,{card:"SessionStorageCard",data:I,useSocketioSupport:B,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:O,methods:{update:({value:X})=>{Q(X)},remove:()=>{sessionStorage.removeItem(Z),Q("")}},children:AI("input",{type:"hidden",id:U,name:U,value:q})})},LI=ZT;var BT=W({name:"SessionStorageCard",component:LI,metadata:{author:"PieData"}});import{useEffect as RI,useState as HT}from"react";import{jsx as CI}from"react/jsx-runtime";var $T=({data:I})=>{let{name:U,key:Z,value:z,useSocketioSupport:B,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:O}=I,[q,Q]=HT(z);return RI(()=>{Q(z)},[z]),RI(()=>{if(typeof window>"u")return;localStorage.setItem(Z,q)},[Z,q]),CI(F,{card:"DeviceStorageCard",data:I,useSocketioSupport:B,useCentrifugeSupport:T,useMittSupport:$,centrifugeChannel:O,methods:{update:({value:X})=>{Q(X)},remove:()=>{localStorage.removeItem(Z),Q("")}},children:CI("input",{type:"hidden",id:U,name:U,value:q})})},NI=$T;var qT=W({name:"DeviceStorageCard",component:NI,metadata:{author:"PieData"}});import{useCallback as s,useContext as n,useEffect as OT,useRef as GT,useState as jI}from"react";import{jsx as EI}from"react/jsx-runtime";var JT=({data:I,content:U})=>{let{useLoader:Z,noReturn:z,returnType:B,useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:O,centrifugeChannel:q}=I,Q=n(C),X=n(f)??K,[G,D]=jI(!1),[Y,J]=jI(null),V=GT(U),A=n(S),R=s((H)=>{if(H===null)D(!0);else if(D(!1),!z)V.current=H;if(!z)J(H)},[z]),L=s((H)=>{V.current=H.content,J(H.content)},[]),M=s((H)=>{if(H===null)D(!0);else if(D(!1),!z)for(let P of H)A?.emit(P.name,P.data)},[z,A]);if(OT(()=>{J(U),D(!1)},[U]),!Y&&Z)return Q;return EI(F,{card:"AjaxGroupCard",data:I,methods:{changeContent:L},useSocketioSupport:T,useCentrifugeSupport:$,useMittSupport:O,centrifugeChannel:q,children:EI(X,{uiConfig:Y??V.current,setUiAjaxConfiguration:B==="events"?M:R})})},kI=JT;var QT=W({name:"AjaxGroupCard",component:kI,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as yI}from"react";import{jsx as a}from"react/jsx-runtime";var XT=({data:I,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,url:B,sx:T}=I,$=yI(E),O=yI(f)??K;return a(F,{card:z,data:I,children:a("div",{style:T,id:z,onClick:(Q)=>{if(B)if(Q.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(B))window.location.href=B;else $?.(B)},children:a(O,{setUiAjaxConfiguration:Z,uiConfig:U})})})},xI=XT;var YT=W({name:"BoxCard",component:xI,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as PT}from"react";import{jsx as t}from"react/jsx-runtime";var WT=({data:I,content:U,setUiAjaxConfiguration:Z})=>{let{name:z,sx:B}=I,T=PT(f)??K;return t(F,{card:z,data:I,children:t("div",{style:B,id:z,children:U.map(($,O)=>{return t(T,{uiConfig:$,setUiAjaxConfiguration:Z},`children-${O}`)})})})},SI=WT;var FT=W({name:"OneOfCard",component:SI,metadata:{author:"Swarm.ing",description:"Different variants"}});export{VU as UnionCard,YU as UILoading,K as UI,BT as SessionStorageCard,FU as SequenceCard,F as PieCard,FT as OneOfCard,TT as IOEventsCard,yU as HiddenCard,NU as HTMLEmbedCard,qT as DeviceStorageCard,YT as BoxCard,hU as AutoRedirectCard,QT as AjaxGroupCard};
|
package/dist/components/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var qf=Object.create;var{getPrototypeOf:Lf,defineProperty:b,getOwnPropertyNames:QU,getOwnPropertyDescriptor:Gf}=Object,XU=Object.prototype.hasOwnProperty;var wU=(U,f,T)=>{T=U!=null?qf(Lf(U)):{};let I=f||!U||!U.__esModule?b(T,"default",{value:U,enumerable:!0}):T;for(let z of QU(U))if(!XU.call(I,z))b(I,z,{get:()=>U[z],enumerable:!0});return I},DU=new WeakMap,Jf=(U)=>{var f=DU.get(U),T;if(f)return f;if(f=b({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function")QU(U).map((I)=>!XU.call(f,I)&&b(f,I,{get:()=>U[I],enumerable:!(T=Gf(U,I))||T.enumerable}));return DU.set(U,f),f};var Ff=(U,f)=>{for(var T in f)b(U,T,{get:f[T],enumerable:!0,configurable:!0,set:(I)=>f[T]=()=>I})};var ef={};Ff(ef,{UnionCard:()=>rU,UILoading:()=>bU,UI:()=>_,SessionStorageCard:()=>Tf,SequenceCard:()=>vU,PieCard:()=>F,OneOfCard:()=>$f,IOEventsCard:()=>ff,HiddenCard:()=>sU,HTMLEmbedCard:()=>iU,DeviceStorageCard:()=>zf,BoxCard:()=>Bf,AutoRedirectCard:()=>eU,AjaxGroupCard:()=>Of});module.exports=Jf(ef);var V=require("react");var c=require("react");var OU=globalThis,X=(U,f)=>{let T=Symbol.for(U);if(!(T in OU))OU[T]=f();return OU[T]};var Df=X("@swarm.ing/pieui:context:pieConfig",()=>c.createContext(null)),Qf=()=>{let U=c.useContext(Df);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U};var S=()=>{let{enableRenderingLog:U}=Qf();return U},YU=S;var WU=require("react"),Xf=require("centrifuge");var zI=X("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var wf=X("@swarm.ing/pieui:context:centrifuge",()=>WU.createContext(null)),_U=wf;var Yf=require("socket.io-client"),KU=require("react");var BI=X("@swarm.ing/pieui:socket-cache",()=>new Map);var Wf=X("@swarm.ing/pieui:context:socket",()=>KU.createContext(null)),VU=Wf;var _f=wU(require("mitt")),h=require("react");var Kf=X("@swarm.ing/pieui:context:mitt",()=>h.createContext(null));var i=Kf;function CU(U){return U.wasRecovering===!0&&U.recovered===!1}function MU(U){return U.recoverable===!1}function RU(U,f,T){let I=U.getSubscription(f);if(I)return{subscription:I,createdHere:!1};return{subscription:U.newSubscription(f,T),createdHere:!0}}var y=require("react/jsx-runtime"),Vf=({card:U,data:f,children:T,useSocketioSupport:I=!1,useCentrifugeSupport:z=!1,useMittSupport:o=!1,centrifugeChannel:Z=void 0,methods:A=void 0,stored:P=void 0,onResync:$=void 0})=>{let L=YU(),B=V.useRef(A);B.current=A;let Q=V.useRef($);if(Q.current=$,L)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",f),console.log("[PieCard] Component name:",f?.name),console.log("[PieCard] Real-time support:",{socketio:I,centrifuge:z,mitt:o,centrifugeChannel:Z}),console.log("[PieCard] Methods:",A?Object.keys(A):"none"),console.log("[PieCard] Has children:",!!T);let q=V.useContext(VU),O=V.useContext(_U),w=V.useContext(i);if(V.useEffect(()=>{if(!q||!I||!B.current||!f.name){if(L&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!q,useSocketioSupport:I,hasMethods:!!B.current,hasDataName:!!f?.name});return}let M=Object.keys(B.current??{}).map((J)=>{let G=`pie${J}_${f.name}`;if(L)console.log(`[PieCard] Socket.IO registering event: ${G}`);let H=(C)=>{B.current?.[J]?.(C)};return q.on(G,H),[G,H]});return()=>{M.forEach(([J,G])=>{if(L)console.log(`[PieCard] Socket.IO unregistering event: ${J}`);q.off(J,G)})}},[q,f.name,I]),V.useEffect(()=>{if(!O||!z||!Z||!f.name){if(L&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!B.current,hasDataName:!!f?.name});return}let M=Object.keys(B.current??{}).map((J)=>{let G=`pie${J}_${f.name}_${Z}`;if(L)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let{subscription:H,createdHere:C}=RU(O,G,{recoverable:!0,positioned:!0}),JU=(x)=>{if(L)console.log(`[PieCard] Centrifuge received data on ${G}:`,x.data);B.current?.[J]?.(x.data)},FU=(x)=>{if(MU(x))console.warn(`[PieCard] Centrifuge channel ${G} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(CU(x)){if(L)console.log(`[PieCard] Centrifuge recovery gap on ${G}; requesting resync`);Q.current?.({channel:G,reason:"gap"})}};return H.on("publication",JU),H.on("subscribed",FU),H.subscribe(),{subscription:H,createdHere:C,onPublication:JU,onSubscribed:FU}});return()=>{M.forEach(({subscription:J,createdHere:G,onPublication:H,onSubscribed:C})=>{if(L)console.log("[PieCard] Centrifuge unsubscribing from channel");if(J.off("publication",H),J.off("subscribed",C),G)J.unsubscribe(),O.removeSubscription(J)})}},[O,Z,f.name,z]),V.useEffect(()=>{if(!w||!o||!f.name){if(L&&o)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:o,hasMethods:!!B.current,hasDataName:!!f?.name});return}let N=Object.keys(B.current??{}),M={};return N.forEach((J)=>{let G=`pie${J}_${f.name}`,H=(C)=>{if(L)console.log(`[PieCard] Mitt registering event: ${G}`);B.current?.[J]?.(C)};M[G]=H,w.on(G,H)}),()=>{Object.entries(M).forEach(([J,G])=>{if(L)console.log(`[PieCard] Mitt unregistering event: ${J}`);w.off(J,G)})}},[w,f.name,o]),L)console.log("[PieCard] Rendering complete, returning children");if(P!==void 0)return y.jsxs(y.Fragment,{children:[y.jsx("input",{type:"hidden",name:f.name,value:JSON.stringify(P)}),T]});return T},F=Vf;var EU=require("react"),g=new Map;function Cf(U,f){return f.catch(()=>{if(g.get(U)===f)g.delete(U)}),g.set(U,f),f}function NU(U,f){return EU.lazy(()=>{if(g.has(f))return g.get(f);return Cf(f,U().then((T)=>T))})}var yU=X("@swarm.ing/pieui:component-registry",()=>new Map),Mf=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let f={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!f.component&&f.loader)f.component=NU(f.loader,U.name),f.isLazy=!0;return f};function D(U){let f=Mf(U);return yU.set(f.name,f),f.component}var n=(U)=>{return yU.get(U)};var v=require("react");var jU=require("react");var s=require("react/jsx-runtime"),Rf=X("@swarm.ing/pieui:context:fallback",()=>jU.createContext(s.jsx(s.Fragment,{}))),R=Rf;var kU=require("react");var Ef=X("@swarm.ing/pieui:context:lazyError",()=>kU.createContext(void 0)),a=Ef;var t=require("react"),mU=require("react/jsx-runtime"),Nf=2,yf=400;class j extends t.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<Nf){let f=yf*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((T)=>({failed:!1,attempt:T.attempt+1}))},f)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return mU.jsx(t.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var e=require("react/jsx-runtime");function jf({uiConfig:U,setUiAjaxConfiguration:f}){let T=v.useContext(R),I=v.useContext(a),z=S();if(z)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!f);let o=n(U.card);if(!o?.component){if(z)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return T}if(z)console.log("[UI] Found component in registry:",{name:o.name,isLazy:o.isLazy,hasMetadata:!!o.metadata});let Z=o.component,A=e.jsx(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f});if(o.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",o.name);return e.jsx(j,{name:o.name,fallback:o.fallback?e.jsx(o.fallback,{}):T,onError:I,children:A})}if(z)console.log("[UI] Rendering component directly:",o.name);return A}var _=v.memo(jf);var AU=require("react");var pU=require("react");var kf=X("@swarm.ing/pieui:context:uiRenderer",()=>pU.createContext(null)),K=kf;var l=require("react/jsx-runtime");function xU({uiConfig:U,setUiAjaxConfiguration:f}){let T=AU.useContext(R),I=AU.useContext(a),z=S();if(z)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!f);let o=n(U.card);if(!o?.component){if(z)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return T}if(z)console.log("[UILoading] Found component in registry:",{name:o.name,isLazy:o.isLazy,hasMetadata:!!o.metadata,hasFallback:!!o.fallback});if(o.fallback){if(z)console.log("[UILoading] Rendering fallback for:",o.name);let P=o.fallback;return l.jsx(P,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",o.name);let Z=o.component,A=l.jsx(K.Provider,{value:xU,children:l.jsx(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f})});if(o.isLazy)return l.jsx(j,{name:o.name,fallback:T,onError:I,children:A});return A}var bU=xU;var SU=require("react");var UU=require("react/jsx-runtime"),mf=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:I,sx:z}=U,o=SU.useContext(K)??_;return UU.jsx(F,{card:I,data:U,children:UU.jsx("div",{style:z,id:I,children:f.map((Z,A)=>{return UU.jsx(o,{uiConfig:Z,setUiAjaxConfiguration:T},`children-${A}`)})})})},gU=mf;var vU=D({name:"SequenceCard",component:gU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var lU=require("react");var BU=require("react/jsx-runtime"),pf=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:I}=U,z=lU.useContext(K)??_;return BU.jsx(F,{card:I,data:U,children:f.map((o,Z)=>{return BU.jsx(z,{uiConfig:o,setUiAjaxConfiguration:T},`children-${Z}`)})})},dU=pf;var rU=D({name:"UnionCard",component:dU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var fU=require("react"),uU=wU(require("html-react-parser"));var W=require("react");function xf(){let U=new AudioContext,f=U.createOscillator(),T=f.connect(U.createMediaStreamDestination());f.start();let I=T.stream.getAudioTracks()[0];return I.enabled=!1,I}function HU(U=null,f){let[T,I]=W.useState(!1),z=W.useRef(null),o=W.useRef(null),Z=W.useRef(null),A=W.useCallback(async(B,Q=!0)=>{if(z.current)P();let q=new RTCPeerConnection;if(q.onconnectionstatechange=()=>{if(q.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes(q.connectionState))I(!1)},q.ontrack=(H)=>{if(U)U.srcObject=H.streams[0]},Q){let H=await navigator.mediaDevices.getUserMedia({audio:!0});q.addTrack(H.getTracks()[0],H)}else{let H=xf();q.addTrack(H)}let O=q.createDataChannel("oai-events");o.current=O,Z.current=new Promise((H)=>{O.addEventListener("open",()=>{H()})});let w=await q.createOffer();await q.setLocalDescription(w);let G=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:w.sdp,headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/sdp"}})).text();await q.setRemoteDescription({type:"answer",sdp:G}),z.current=q,await Z.current},[U]),P=W.useCallback(()=>{let B=o.current;if(B)B.close();z.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),z.current?.close(),I(!1),z.current=null,o.current=null,Z.current=null},[U]),$=W.useCallback((B)=>{let Q=o.current;if(!Q){console.error("Data channel is not ready",B);return}let q=new Date().toLocaleTimeString();if(B.event_id=B.event_id||crypto.randomUUID(),Q.send(JSON.stringify(B)),!B.timestamp)B.timestamp=q;f?.(B)},[f,U]),L=W.useCallback((B)=>{if(!o.current){console.error("Data channel is not ready");return}let q=()=>{$({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:B}]}}),$({type:"response.create"})};if(Z.current)Z.current.then(q);else q()},[f,U]);return W.useEffect(()=>{let B=o.current;if(!B)return;let Q=(q)=>{let O=JSON.parse(q.data);if(!O.timestamp)O.timestamp=new Date().toLocaleTimeString();f?.(O)};return B.addEventListener("message",Q),()=>{B.removeEventListener("message",Q)}},[f,U]),{isSessionActive:T,startSession:A,stopSession:P,sendTextMessage:L}}var hU=require("react/jsx-runtime"),bf=({data:U})=>{let{html:f,useSocketioSupport:T,useCentrifugeSupport:I,useMittSupport:z,centrifugeChannel:o}=U,[Z,A]=fU.useState(f),{isSessionActive:P,startSession:$,sendTextMessage:L}=HU(null,(O)=>{if(console.log(O.type,O.type==="response.output_text.delta"&&O.delta),O.type==="response.output_text.delta"&&O.delta)A((w)=>w+O.delta)});return fU.useEffect(()=>{A(f)},[f]),hU.jsx(F,{card:"HTMLEmbedCard",data:U,methods:{update:(O)=>{A(O.value)},generateUsingAI:async(O)=>{try{if(!P&&O.token)await $(O.token,!1);L(O.prompt)}catch(w){console.error("Failed to generate using AI",w)}},initializeAI:async(O)=>{if(!P&&O.token)await $(O.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:T,useMittSupport:z,centrifugeChannel:o,children:uU.default(Z)})},cU=bf;var iU=D({name:"HTMLEmbedCard",component:cU,metadata:{author:"Swarm.ing"}});var IU=require("react");var PU=require("react/jsx-runtime"),Sf=({data:U})=>{let{name:f,value:T,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:o,centrifugeChannel:Z}=U,[A,P]=IU.useState(T);return IU.useEffect(()=>{P(T)},[T]),PU.jsx(F,{card:"HiddenCard",data:U,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:o,centrifugeChannel:Z,methods:{update:({value:$})=>{P($)}},children:PU.jsx("input",{type:"hidden",id:f,name:f,value:A})})},nU=Sf;var sU=D({name:"HiddenCard",component:nU,metadata:{author:"Swarm.ing"}});var d=require("react");var aU=require("react");var gf=X("@swarm.ing/pieui:context:navigate",()=>aU.createContext(void 0)),k=gf;var TU=require("react/jsx-runtime"),vf=({data:U})=>{let{url:f}=U,T=d.useContext(k),I=d.useContext(R);return d.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(f))window.location.href=f;else T?.(f)},[f,T]),TU.jsx(TU.Fragment,{children:I})},tU=vf;var eU=D({name:"AutoRedirectCard",component:tU,metadata:{author:"Swarm.ing"}});var E=require("react-toastify"),oU=require("react-toastify");var p=require("react");var m=require("react/jsx-runtime"),lf={bounce:E.Bounce,slide:E.Slide,zoom:E.Zoom,flip:E.Flip},df=(U)=>{let f={...U,type:U.alertType,transition:U.transition?lf[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};oU.toast(U.message,f)},rf=(U)=>{console.log("Log event",U)},uf=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let f=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(I){console.error("[IOEventsCard] Failed to show notification",I)}},T=window.Notification.permission;if(T==="granted"){f();return}if(T==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")f()})},cf=({data:U})=>{let{useCentrifugeSupport:f,useSocketioSupport:T,useMittSupport:I,centrifugeChannel:z}=U,o=p.useContext(k),Z=p.useRef(o);Z.current=o;let A=p.useMemo(()=>({alert:df,log:rf,push:uf,redirect:(P)=>{if(P.to){let $=P.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($))window.location.href=$;else Z.current?.($)}else window.location.reload()},reload:(P)=>{if(P.to){let $=P.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test($))window.location.href=$;else Z.current?.($)}else window.location.reload()}}),[]);return m.jsx(m.Fragment,{children:m.jsx(F,{card:"IOEventsCard",data:U,useCentrifugeSupport:f,useSocketioSupport:T,useMittSupport:I,centrifugeChannel:z,methods:A,children:m.jsx(oU.ToastContainer,{})})})},Uf=cf;var ff=D({name:"IOEventsCard",component:Uf,metadata:{author:"Swarm.ing"}});var r=require("react");var $U=require("react/jsx-runtime"),hf=({data:U})=>{let{name:f,key:T,value:I,useSocketioSupport:z,useCentrifugeSupport:o,useMittSupport:Z,centrifugeChannel:A}=U,[P,$]=r.useState(I);return r.useEffect(()=>{$(I)},[I]),r.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(T,P)},[T,P]),$U.jsx(F,{card:"SessionStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:o,useMittSupport:Z,centrifugeChannel:A,methods:{update:({value:L})=>{$(L)},remove:()=>{sessionStorage.removeItem(T),$("")}},children:$U.jsx("input",{type:"hidden",id:f,name:f,value:P})})},If=hf;var Tf=D({name:"SessionStorageCard",component:If,metadata:{author:"PieData"}});var u=require("react");var qU=require("react/jsx-runtime"),nf=({data:U})=>{let{name:f,key:T,value:I,useSocketioSupport:z,useCentrifugeSupport:o,useMittSupport:Z,centrifugeChannel:A}=U,[P,$]=u.useState(I);return u.useEffect(()=>{$(I)},[I]),u.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(T,P)},[T,P]),qU.jsx(F,{card:"DeviceStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:o,useMittSupport:Z,centrifugeChannel:A,methods:{update:({value:L})=>{$(L)},remove:()=>{localStorage.removeItem(T),$("")}},children:qU.jsx("input",{type:"hidden",id:f,name:f,value:P})})},of=nf;var zf=D({name:"DeviceStorageCard",component:of,metadata:{author:"PieData"}});var Y=require("react");var LU=require("react/jsx-runtime"),sf=({data:U,content:f})=>{let{useLoader:T,noReturn:I,returnType:z,useSocketioSupport:o,useCentrifugeSupport:Z,useMittSupport:A,centrifugeChannel:P}=U,$=Y.useContext(R),L=Y.useContext(K)??_,[B,Q]=Y.useState(!1),[q,O]=Y.useState(null),w=Y.useRef(f),N=Y.useContext(i),M=Y.useCallback((H)=>{if(H===null)Q(!0);else if(Q(!1),!I)w.current=H;if(!I)O(H)},[I]),J=Y.useCallback((H)=>{w.current=H.content,O(H.content)},[]),G=Y.useCallback((H)=>{if(H===null)Q(!0);else if(Q(!1),!I)for(let C of H)N?.emit(C.name,C.data)},[I,N]);if(Y.useEffect(()=>{O(f),Q(!1)},[f]),!q&&T)return $;return LU.jsx(F,{card:"AjaxGroupCard",data:U,methods:{changeContent:J},useSocketioSupport:o,useCentrifugeSupport:Z,useMittSupport:A,centrifugeChannel:P,children:LU.jsx(L,{uiConfig:q??w.current,setUiAjaxConfiguration:z==="events"?G:M})})},Zf=sf;var Of=D({name:"AjaxGroupCard",component:Zf,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var GU=require("react");var zU=require("react/jsx-runtime"),af=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:I,url:z,sx:o}=U,Z=GU.useContext(k),A=GU.useContext(K)??_;return zU.jsx(F,{card:I,data:U,children:zU.jsx("div",{style:o,id:I,onClick:($)=>{if(z)if($.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else Z?.(z)},children:zU.jsx(A,{setUiAjaxConfiguration:T,uiConfig:f})})})},Af=af;var Bf=D({name:"BoxCard",component:Af,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Hf=require("react");var ZU=require("react/jsx-runtime"),tf=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:I,sx:z}=U,o=Hf.useContext(K)??_;return ZU.jsx(F,{card:I,data:U,children:ZU.jsx("div",{style:z,id:I,children:f.map((Z,A)=>{return ZU.jsx(o,{uiConfig:Z,setUiAjaxConfiguration:T},`children-${A}`)})})})},Pf=tf;var $f=D({name:"OneOfCard",component:Pf,metadata:{author:"Swarm.ing",description:"Different variants"}});
|
|
2
|
+
var DU=Object.create;var{getPrototypeOf:_U,defineProperty:h,getOwnPropertyNames:wI,getOwnPropertyDescriptor:VU}=Object,fI=Object.prototype.hasOwnProperty;var KI=(I,U,z)=>{z=I!=null?DU(_U(I)):{};let T=U||!I||!I.__esModule?h(z,"default",{value:I,enumerable:!0}):z;for(let B of wI(I))if(!fI.call(T,B))h(T,B,{get:()=>I[B],enumerable:!0});return T},VI=new WeakMap,wU=(I)=>{var U=VI.get(I),z;if(U)return U;if(U=h({},"__esModule",{value:!0}),I&&typeof I==="object"||typeof I==="function")wI(I).map((T)=>!fI.call(U,T)&&h(U,T,{get:()=>I[T],enumerable:!(z=VU(I,T))||z.enumerable}));return VI.set(I,U),U};var fU=(I,U)=>{for(var z in U)h(I,z,{get:U[z],enumerable:!0,configurable:!0,set:(T)=>U[z]=()=>T})};var ZT={};fU(ZT,{UnionCard:()=>sI,UILoading:()=>cI,UI:()=>A,SessionStorageCard:()=>qU,SequenceCard:()=>dI,PieCard:()=>W,OneOfCard:()=>FU,IOEventsCard:()=>HU,HiddenCard:()=>UU,HTMLEmbedCard:()=>eI,DeviceStorageCard:()=>GU,BoxCard:()=>YU,AutoRedirectCard:()=>ZU,AjaxGroupCard:()=>QU});module.exports=wU(ZT);var f=require("react");var r=require("react");var OI=globalThis,_=(I,U)=>{let z=Symbol.for(I);if(!(z in OI))OI[z]=U();return OI[z]};var KU=_("@swarm.ing/pieui:context:pieConfig",()=>r.createContext(null)),MU=()=>{let I=r.useContext(KU);if(!I)throw Error("usePieConfig must be used within PieConfigProvider");return I};var g=()=>{let{enableRenderingLog:I}=MU();return I},MI=g;var AI=require("react"),AU=require("centrifuge");var GT=_("@swarm.ing/pieui:centrifuge-cache",()=>new Map);var LU=_("@swarm.ing/pieui:context:centrifuge",()=>AI.createContext(null)),LI=LU;var RU=require("socket.io-client"),RI=require("react");var YT=_("@swarm.ing/pieui:socket-cache",()=>new Map);var CU=_("@swarm.ing/pieui:context:socket",()=>RI.createContext(null)),CI=CU;var NU=KI(require("mitt")),s=require("react");var jU=_("@swarm.ing/pieui:context:mitt",()=>s.createContext(null));var n=jU;function NI(I){return I.wasRecovering===!0&&I.recovered===!1}function jI(I){return I.recoverable===!1}function EI(I,U,z){let T=I.getSubscription(U);if(T)return{subscription:T,createdHere:!1};return{subscription:I.newSubscription(U,z),createdHere:!0}}var EU=require("react");var kI=new Map,yI=(I,U)=>{kI.set(I,U)},xI=(I)=>{kI.delete(I)};var x=require("react/jsx-runtime"),kU=({card:I,data:U,children:z,useSocketioSupport:T=!1,useCentrifugeSupport:B=!1,useMittSupport:Z=!1,centrifugeChannel:$=void 0,methods:O=void 0,stored:q=void 0,onResync:Q=void 0})=>{let X=MI(),G=f.useRef(O);G.current=O;let D=f.useRef(Q);D.current=Q;let Y=f.useRef(q);Y.current=q;let J=typeof q==="function";if(f.useEffect(()=>{if(!J)return;let N=U.name;return yI(N,()=>[JSON.stringify(Y.current())]),()=>xI(N)},[J,U.name]),X)console.log("[PieCard] Rendering card:",I),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:T,centrifuge:B,mitt:Z,centrifugeChannel:$}),console.log("[PieCard] Methods:",O?Object.keys(O):"none"),console.log("[PieCard] Has children:",!!z);let V=f.useContext(CI),C=f.useContext(LI),j=f.useContext(n);if(f.useEffect(()=>{if(!V||!T||!G.current||!U.name){if(X&&T)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!V,useSocketioSupport:T,hasMethods:!!G.current,hasDataName:!!U?.name});return}let R=Object.keys(G.current??{}).map((H)=>{let P=`pie${H}_${U.name}`;if(X)console.log(`[PieCard] Socket.IO registering event: ${P}`);let M=(y)=>{G.current?.[H]?.(y)};return V.on(P,M),[P,M]});return()=>{R.forEach(([H,P])=>{if(X)console.log(`[PieCard] Socket.IO unregistering event: ${H}`);V.off(H,P)})}},[V,U.name,T]),f.useEffect(()=>{if(!C||!B||!$||!U.name){if(X&&B)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!C,useCentrifugeSupport:B,hasCentrifugeChannel:!!$,hasMethods:!!G.current,hasDataName:!!U?.name});return}let R=Object.keys(G.current??{}).map((H)=>{let P=`pie${H}_${U.name}_${$}`;if(X)console.log(`[PieCard] Centrifuge subscribing to channel: ${P}`);let{subscription:M,createdHere:y}=EI(C,P,{recoverable:!0,positioned:!0}),DI=(v)=>{if(X)console.log(`[PieCard] Centrifuge received data on ${P}:`,v.data);G.current?.[H]?.(v.data)},_I=(v)=>{if(jI(v))console.warn(`[PieCard] Centrifuge channel ${P} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(NI(v)){if(X)console.log(`[PieCard] Centrifuge recovery gap on ${P}; requesting resync`);D.current?.({channel:P,reason:"gap"})}};return M.on("publication",DI),M.on("subscribed",_I),M.subscribe(),{subscription:M,createdHere:y,onPublication:DI,onSubscribed:_I}});return()=>{R.forEach(({subscription:H,createdHere:P,onPublication:M,onSubscribed:y})=>{if(X)console.log("[PieCard] Centrifuge unsubscribing from channel");if(H.off("publication",M),H.off("subscribed",y),P)H.unsubscribe(),C.removeSubscription(H)})}},[C,$,U.name,B]),f.useEffect(()=>{if(!j||!Z||!U.name){if(X&&Z)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!j,useMittSupport:Z,hasMethods:!!G.current,hasDataName:!!U?.name});return}let N=Object.keys(G.current??{}),R={};return N.forEach((H)=>{let P=`pie${H}_${U.name}`,M=(y)=>{if(X)console.log(`[PieCard] Mitt registering event: ${P}`);G.current?.[H]?.(y)};R[P]=M,j.on(P,M)}),()=>{Object.entries(R).forEach(([H,P])=>{if(X)console.log(`[PieCard] Mitt unregistering event: ${H}`);j.off(H,P)})}},[j,U.name,Z]),X)console.log("[PieCard] Rendering complete, returning children");if(q!==void 0&&!J)return x.jsxs(x.Fragment,{children:[x.jsx("input",{type:"hidden",name:U.name,value:JSON.stringify(q)}),z]});return z},W=kU;var SI=require("react"),o=new Map;function yU(I,U){return U.catch(()=>{if(o.get(I)===U)o.delete(I)}),o.set(I,U),U}function mI(I,U){return SI.lazy(()=>{if(o.has(U))return o.get(U);return yU(U,I().then((z)=>z))})}var bI=_("@swarm.ing/pieui:component-registry",()=>new Map),xU=(I)=>{if(!I.name)throw Error("Component registration requires a name");if(!I.component&&!I.loader)throw Error(`Component "${I.name}" requires component or loader`);let U={name:I.name,component:I.component,loader:I.loader,metadata:I.metadata,fallback:I.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=mI(U.loader,I.name),U.isLazy=!0;return U};function F(I){let U=xU(I);return bI.set(U.name,U),U.component}var a=(I)=>{return bI.get(I)};var c=require("react");var pI=require("react");var t=require("react/jsx-runtime"),SU=_("@swarm.ing/pieui:context:fallback",()=>pI.createContext(t.jsx(t.Fragment,{}))),E=SU;var vI=require("react");var mU=_("@swarm.ing/pieui:context:lazyError",()=>vI.createContext(void 0)),e=mU;var II=require("react"),hI=require("react/jsx-runtime"),bU=2,pU=400;class S extends II.Component{state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(I){if(this.props.onError?.(I),this.state.attempt<bU){let U=pU*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState((z)=>({failed:!1,attempt:z.attempt+1}))},U)}}componentDidUpdate(I){if(I.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return hI.jsx(II.Suspense,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}var UI=require("react/jsx-runtime");function vU({uiConfig:I,setUiAjaxConfiguration:U}){let z=c.useContext(E),T=c.useContext(e),B=g();if(B)console.log("[UI] Rendering component:",I.card),console.log("[UI] Component data:",I.data),console.log("[UI] Component content:",I.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let Z=a(I.card);if(!Z?.component){if(B)console.warn(`[UI] Component not found in registry: ${I.card}`),console.log("[UI] Returning fallback component");return z}if(B)console.log("[UI] Found component in registry:",{name:Z.name,isLazy:Z.isLazy,hasMetadata:!!Z.metadata});let $=Z.component,O=UI.jsx($,{data:I.data,content:I.content,setUiAjaxConfiguration:U});if(Z.isLazy){if(B)console.log("[UI] Rendering lazy component with Suspense:",Z.name);return UI.jsx(S,{name:Z.name,fallback:Z.fallback?UI.jsx(Z.fallback,{}):z,onError:T,children:O})}if(B)console.log("[UI] Rendering component directly:",Z.name);return O}var A=c.memo(vU);var GI=require("react");var gI=require("react");var hU=_("@swarm.ing/pieui:context:uiRenderer",()=>gI.createContext(null)),L=hU;var l=require("react/jsx-runtime");function oI({uiConfig:I,setUiAjaxConfiguration:U}){let z=GI.useContext(E),T=GI.useContext(e),B=g();if(B)console.log("[UILoading] Rendering fallback for:",I.card),console.log("[UILoading] Component data:",I.data),console.log("[UILoading] Component content:",I.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let Z=a(I.card);if(!Z?.component){if(B)console.warn(`[UILoading] Component not found in registry: ${I.card}`),console.log("[UILoading] Returning fallback component");return z}if(B)console.log("[UILoading] Found component in registry:",{name:Z.name,isLazy:Z.isLazy,hasMetadata:!!Z.metadata,hasFallback:!!Z.fallback});if(Z.fallback){if(B)console.log("[UILoading] Rendering fallback for:",Z.name);let q=Z.fallback;return l.jsx(q,{})}if(B)console.log("[UILoading] No fallback, rendering full component:",Z.name);let $=Z.component,O=l.jsx(L.Provider,{value:oI,children:l.jsx($,{data:I.data,content:I.content,setUiAjaxConfiguration:U})});if(Z.isLazy)return l.jsx(S,{name:Z.name,fallback:z,onError:T,children:O});return O}var cI=oI;var lI=require("react");var TI=require("react/jsx-runtime"),gU=({data:I,content:U,setUiAjaxConfiguration:z})=>{let{name:T,sx:B}=I,Z=lI.useContext(L)??A;return TI.jsx(W,{card:T,data:I,children:TI.jsx("div",{style:B,id:T,children:U.map(($,O)=>{return TI.jsx(Z,{uiConfig:$,setUiAjaxConfiguration:z},`children-${O}`)})})})},uI=gU;var dI=F({name:"SequenceCard",component:uI,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var iI=require("react");var JI=require("react/jsx-runtime"),oU=({data:I,content:U,setUiAjaxConfiguration:z})=>{let{name:T}=I,B=iI.useContext(L)??A;return JI.jsx(W,{card:T,data:I,children:U.map((Z,$)=>{return JI.jsx(B,{uiConfig:Z,setUiAjaxConfiguration:z},`children-${$}`)})})},rI=oU;var sI=F({name:"UnionCard",component:rI,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});var zI=require("react"),nI=KI(require("html-react-parser"));var K=require("react");function cU(){let I=new AudioContext,U=I.createOscillator(),z=U.connect(I.createMediaStreamDestination());U.start();let T=z.stream.getAudioTracks()[0];return T.enabled=!1,T}function QI(I=null,U){let[z,T]=K.useState(!1),B=K.useRef(null),Z=K.useRef(null),$=K.useRef(null),O=K.useCallback(async(G,D=!0)=>{if(B.current)q();let Y=new RTCPeerConnection;if(Y.onconnectionstatechange=()=>{if(Y.connectionState==="connected")T(!0);else if(["disconnected","failed","closed"].includes(Y.connectionState))T(!1)},Y.ontrack=(H)=>{if(I)I.srcObject=H.streams[0]},D){let H=await navigator.mediaDevices.getUserMedia({audio:!0});Y.addTrack(H.getTracks()[0],H)}else{let H=cU();Y.addTrack(H)}let J=Y.createDataChannel("oai-events");Z.current=J,$.current=new Promise((H)=>{J.addEventListener("open",()=>{H()})});let V=await Y.createOffer();await Y.setLocalDescription(V);let R=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:V.sdp,headers:{Authorization:`Bearer ${G}`,"Content-Type":"application/sdp"}})).text();await Y.setRemoteDescription({type:"answer",sdp:R}),B.current=Y,await $.current},[I]),q=K.useCallback(()=>{let G=Z.current;if(G)G.close();B.current?.getSenders()?.forEach((D)=>D.track?.stop()),B.current?.close(),T(!1),B.current=null,Z.current=null,$.current=null},[I]),Q=K.useCallback((G)=>{let D=Z.current;if(!D){console.error("Data channel is not ready",G);return}let Y=new Date().toLocaleTimeString();if(G.event_id=G.event_id||crypto.randomUUID(),D.send(JSON.stringify(G)),!G.timestamp)G.timestamp=Y;U?.(G)},[U,I]),X=K.useCallback((G)=>{if(!Z.current){console.error("Data channel is not ready");return}let Y=()=>{Q({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:G}]}}),Q({type:"response.create"})};if($.current)$.current.then(Y);else Y()},[U,I]);return K.useEffect(()=>{let G=Z.current;if(!G)return;let D=(Y)=>{let J=JSON.parse(Y.data);if(!J.timestamp)J.timestamp=new Date().toLocaleTimeString();U?.(J)};return G.addEventListener("message",D),()=>{G.removeEventListener("message",D)}},[U,I]),{isSessionActive:z,startSession:O,stopSession:q,sendTextMessage:X}}var tI=require("react/jsx-runtime"),lU=({data:I})=>{let{html:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:B,centrifugeChannel:Z}=I,[$,O]=zI.useState(U),{isSessionActive:q,startSession:Q,sendTextMessage:X}=QI(null,(J)=>{if(console.log(J.type,J.type==="response.output_text.delta"&&J.delta),J.type==="response.output_text.delta"&&J.delta)O((V)=>V+J.delta)});return zI.useEffect(()=>{O(U)},[U]),tI.jsx(W,{card:"HTMLEmbedCard",data:I,methods:{update:(J)=>{O(J.value)},generateUsingAI:async(J)=>{try{if(!q&&J.token)await Q(J.token,!1);X(J.prompt)}catch(V){console.error("Failed to generate using AI",V)}},initializeAI:async(J)=>{if(!q&&J.token)await Q(J.token,!1)}},useCentrifugeSupport:T,useSocketioSupport:z,useMittSupport:B,centrifugeChannel:Z,children:nI.default($)})},aI=lU;var eI=F({name:"HTMLEmbedCard",component:aI,metadata:{author:"Swarm.ing"}});var ZI=require("react");var XI=require("react/jsx-runtime"),uU=({data:I})=>{let{name:U,value:z,useSocketioSupport:T,useCentrifugeSupport:B,useMittSupport:Z,centrifugeChannel:$}=I,[O,q]=ZI.useState(z);return ZI.useEffect(()=>{q(z)},[z]),XI.jsx(W,{card:"HiddenCard",data:I,useSocketioSupport:T,useCentrifugeSupport:B,useMittSupport:Z,centrifugeChannel:$,methods:{update:({value:Q})=>{q(Q)}},children:XI.jsx("input",{type:"hidden",id:U,name:U,value:O})})},IU=uU;var UU=F({name:"HiddenCard",component:IU,metadata:{author:"Swarm.ing"}});var u=require("react");var TU=require("react");var dU=_("@swarm.ing/pieui:context:navigate",()=>TU.createContext(void 0)),m=dU;var BI=require("react/jsx-runtime"),iU=({data:I})=>{let{url:U}=I,z=u.useContext(m),T=u.useContext(E);return u.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else z?.(U)},[U,z]),BI.jsx(BI.Fragment,{children:T})},zU=iU;var ZU=F({name:"AutoRedirectCard",component:zU,metadata:{author:"Swarm.ing"}});var k=require("react-toastify"),HI=require("react-toastify");var p=require("react");var b=require("react/jsx-runtime"),rU={bounce:k.Bounce,slide:k.Slide,zoom:k.Zoom,flip:k.Flip},sU=(I)=>{let U={...I,type:I.alertType,transition:I.transition?rU[I.transition]:void 0,position:I.position??"bottom-right",autoClose:I.autoClose??3000,style:{backgroundColor:"black",...I.sx}};HI.toast(I.message,U)},nU=(I)=>{console.log("Log event",I)},aU=(I)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(I.title,{body:I.message??I.subtitle,icon:I.icon,silent:I.silent})}catch(T){console.error("[IOEventsCard] Failed to show notification",T)}},z=window.Notification.permission;if(z==="granted"){U();return}if(z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((T)=>{if(T==="granted")U()})},tU=({data:I})=>{let{useCentrifugeSupport:U,useSocketioSupport:z,useMittSupport:T,centrifugeChannel:B}=I,Z=p.useContext(m),$=p.useRef(Z);$.current=Z;let O=p.useMemo(()=>({alert:sU,log:nU,push:aU,redirect:(q)=>{if(q.to){let Q=q.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Q))window.location.href=Q;else $.current?.(Q)}else window.location.reload()},reload:(q)=>{if(q.to){let Q=q.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Q))window.location.href=Q;else $.current?.(Q)}else window.location.reload()}}),[]);return b.jsx(b.Fragment,{children:b.jsx(W,{card:"IOEventsCard",data:I,useCentrifugeSupport:U,useSocketioSupport:z,useMittSupport:T,centrifugeChannel:B,methods:O,children:b.jsx(HI.ToastContainer,{})})})},BU=tU;var HU=F({name:"IOEventsCard",component:BU,metadata:{author:"Swarm.ing"}});var d=require("react");var YI=require("react/jsx-runtime"),eU=({data:I})=>{let{name:U,key:z,value:T,useSocketioSupport:B,useCentrifugeSupport:Z,useMittSupport:$,centrifugeChannel:O}=I,[q,Q]=d.useState(T);return d.useEffect(()=>{Q(T)},[T]),d.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(z,q)},[z,q]),YI.jsx(W,{card:"SessionStorageCard",data:I,useSocketioSupport:B,useCentrifugeSupport:Z,useMittSupport:$,centrifugeChannel:O,methods:{update:({value:X})=>{Q(X)},remove:()=>{sessionStorage.removeItem(z),Q("")}},children:YI.jsx("input",{type:"hidden",id:U,name:U,value:q})})},$U=eU;var qU=F({name:"SessionStorageCard",component:$U,metadata:{author:"PieData"}});var i=require("react");var PI=require("react/jsx-runtime"),IT=({data:I})=>{let{name:U,key:z,value:T,useSocketioSupport:B,useCentrifugeSupport:Z,useMittSupport:$,centrifugeChannel:O}=I,[q,Q]=i.useState(T);return i.useEffect(()=>{Q(T)},[T]),i.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(z,q)},[z,q]),PI.jsx(W,{card:"DeviceStorageCard",data:I,useSocketioSupport:B,useCentrifugeSupport:Z,useMittSupport:$,centrifugeChannel:O,methods:{update:({value:X})=>{Q(X)},remove:()=>{localStorage.removeItem(z),Q("")}},children:PI.jsx("input",{type:"hidden",id:U,name:U,value:q})})},OU=IT;var GU=F({name:"DeviceStorageCard",component:OU,metadata:{author:"PieData"}});var w=require("react");var WI=require("react/jsx-runtime"),UT=({data:I,content:U})=>{let{useLoader:z,noReturn:T,returnType:B,useSocketioSupport:Z,useCentrifugeSupport:$,useMittSupport:O,centrifugeChannel:q}=I,Q=w.useContext(E),X=w.useContext(L)??A,[G,D]=w.useState(!1),[Y,J]=w.useState(null),V=w.useRef(U),C=w.useContext(n),j=w.useCallback((H)=>{if(H===null)D(!0);else if(D(!1),!T)V.current=H;if(!T)J(H)},[T]),N=w.useCallback((H)=>{V.current=H.content,J(H.content)},[]),R=w.useCallback((H)=>{if(H===null)D(!0);else if(D(!1),!T)for(let P of H)C?.emit(P.name,P.data)},[T,C]);if(w.useEffect(()=>{J(U),D(!1)},[U]),!Y&&z)return Q;return WI.jsx(W,{card:"AjaxGroupCard",data:I,methods:{changeContent:N},useSocketioSupport:Z,useCentrifugeSupport:$,useMittSupport:O,centrifugeChannel:q,children:WI.jsx(X,{uiConfig:Y??V.current,setUiAjaxConfiguration:B==="events"?R:j})})},JU=UT;var QU=F({name:"AjaxGroupCard",component:JU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});var FI=require("react");var $I=require("react/jsx-runtime"),TT=({data:I,content:U,setUiAjaxConfiguration:z})=>{let{name:T,url:B,sx:Z}=I,$=FI.useContext(m),O=FI.useContext(L)??A;return $I.jsx(W,{card:T,data:I,children:$I.jsx("div",{style:Z,id:T,onClick:(Q)=>{if(B)if(Q.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(B))window.location.href=B;else $?.(B)},children:$I.jsx(O,{setUiAjaxConfiguration:z,uiConfig:U})})})},XU=TT;var YU=F({name:"BoxCard",component:XU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var PU=require("react");var qI=require("react/jsx-runtime"),zT=({data:I,content:U,setUiAjaxConfiguration:z})=>{let{name:T,sx:B}=I,Z=PU.useContext(L)??A;return qI.jsx(W,{card:T,data:I,children:qI.jsx("div",{style:B,id:T,children:U.map(($,O)=>{return qI.jsx(Z,{uiConfig:$,setUiAjaxConfiguration:z},`children-${O}`)})})})},WU=zT;var FU=F({name:"OneOfCard",component:WU,metadata:{author:"Swarm.ing",description:"Different variants"}});
|
package/dist/index.d.ts
CHANGED
|
@@ -11,8 +11,8 @@ export { registerPieComponent, getAllRegisteredComponents, getRegistrySize, regi
|
|
|
11
11
|
export { trackLazy } from './util/lazy';
|
|
12
12
|
export type { PieComponentProps, PieSimpleComponentProps, PieComplexComponentProps, PieContainerComponentProps, PieComplexContainerComponentProps, InputPieSimpleComponentProps, InputPieComplexComponentProps, InputPieContainerComponentProps, InputPieComplexContainerComponentProps, PieConfig, PieLinkSource, UIConfigType, SetUiAjaxConfigurationType, } from './types';
|
|
13
13
|
export type { PieQueryOptions } from './components/PieRoot/types';
|
|
14
|
-
export { useAjaxSubmit, readAjaxKey, readAjaxKeyAsync, parseDepName, } from './util/ajaxCommonUtils';
|
|
15
|
-
export type { RetryPolicy, DepSource } from './util/ajaxCommonUtils';
|
|
14
|
+
export { useAjaxSubmit, useAjaxSubmits, discoverAjaxEndpoints, readAjaxKey, readAjaxKeyAsync, parseDepName, } from './util/ajaxCommonUtils';
|
|
15
|
+
export type { RetryPolicy, DepSource, AjaxEndpointConfig } from './util/ajaxCommonUtils';
|
|
16
16
|
export { usePieEmit } from './util/mitt';
|
|
17
17
|
export { default as MittContext, getEmitter } from './util/mitt';
|
|
18
18
|
export { default as SocketIOContext } from './util/socket';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACH,OAAO,IAAI,iBAAiB,EAC5B,KAAK,eAAe,GACvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAMtE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EACH,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,GACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EACR,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,sCAAsC,EACtC,SAAS,EACT,aAAa,EACb,YAAY,EACZ,0BAA0B,GAC7B,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EACH,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,YAAY,GACf,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACH,OAAO,IAAI,iBAAiB,EAC5B,KAAK,eAAe,GACvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAMtE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EACH,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,GACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EACR,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,sCAAsC,EACtC,SAAS,EACT,aAAa,EACb,YAAY,EACZ,0BAA0B,GAC7B,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EACH,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,YAAY,GACf,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EACH,gBAAgB,EAChB,aAAa,EACb,iBAAiB,GACpB,MAAM,kBAAkB,CAAA;AAMzB,OAAO,EAAE,EAAE,EAAE,MAAM,4BAA4B,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/index.esm.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useContext as KU,useEffect as FU,useRef as cU}from"react";import{createContext as fZ,useContext as bZ}from"react";var VU=globalThis,M=(U,Z)=>{let $=Symbol.for(U);if(!($ in VU))VU[$]=Z();return VU[$]};var c=M("@swarm.ing/pieui:context:pieConfig",()=>fZ(null)),p=()=>{let U=bZ(c);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},i=()=>{let{apiServer:U}=p();return U},UU=i,ZU=()=>{let{centrifugeServer:U}=p();return U};var f=()=>{let{enableRenderingLog:U}=p();return U},SU=f;var r=()=>{let{onLinkLost:U}=p();return U},a=()=>{let{onLinkRestored:U}=p();return U},DU="__piedemo__";import{createContext as kZ}from"react";import{Centrifuge as mU}from"centrifuge";var vU=M("@swarm.ing/pieui:centrifuge-cache",()=>new Map),$U=(U,Z)=>{if(!Z)return null;let $=`${U}::${Z}`,z=vU.get($);if(z)return z;async function T(){let J=await fetch(U+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new mU.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let H=new mU(Z,{getToken:T});return vU.set($,H),H},SZ=M("@swarm.ing/pieui:context:centrifuge",()=>kZ(null)),b=SZ;import{io as mZ}from"socket.io-client";import{createContext as vZ}from"react";var hU=M("@swarm.ing/pieui:socket-cache",()=>new Map),zU=(U)=>{let Z=hU.get(U);if(Z)return Z;let $=mZ(U,{autoConnect:!1,transports:["websocket"]});return hU.set(U,$),$},hZ=M("@swarm.ing/pieui:context:socket",()=>vZ(null)),k=hZ;import pZ from"mitt";import{createContext as gZ,useCallback as dZ,useContext as uZ}from"react";function l(){return M("@swarm.ing/pieui:mitt-emitter",()=>pZ())}var pU=M("@swarm.ing/pieui:context:mitt",()=>gZ(null));function cZ(U){let Z=uZ(pU);return dZ(($,z)=>{(Z??l()).emit(`pie${$}_${U}`,z)},[U,Z])}var S=pU;function gU(U){return U.wasRecovering===!0&&U.recovered===!1}function dU(U){return U.recoverable===!1}function uU(U,Z,$){let z=U.getSubscription(Z);if(z)return{subscription:z,createdHere:!1};return{subscription:U.newSubscription(Z,$),createdHere:!0}}import{jsx as sZ,jsxs as iZ,Fragment as oZ}from"react/jsx-runtime";var lZ=({card:U,data:Z,children:$,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:H=!1,centrifugeChannel:J=void 0,methods:X=void 0,stored:G=void 0,onResync:Y=void 0})=>{let _=SU(),q=cU(X);q.current=X;let V=cU(Y);if(V.current=Y,_)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:T,mitt:H,centrifugeChannel:J}),console.log("[PieCard] Methods:",X?Object.keys(X):"none"),console.log("[PieCard] Has children:",!!$);let B=KU(k),Q=KU(b),F=KU(S);if(FU(()=>{if(!B||!z||!q.current||!Z.name){if(_&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:z,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let A=Object.keys(q.current??{}).map((K)=>{let W=`pie${K}_${Z.name}`;if(_)console.log(`[PieCard] Socket.IO registering event: ${W}`);let D=(C)=>{q.current?.[K]?.(C)};return B.on(W,D),[W,D]});return()=>{A.forEach(([K,W])=>{if(_)console.log(`[PieCard] Socket.IO unregistering event: ${K}`);B.off(K,W)})}},[B,Z.name,z]),FU(()=>{if(!Q||!T||!J||!Z.name){if(_&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!Q,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let A=Object.keys(q.current??{}).map((K)=>{let W=`pie${K}_${Z.name}_${J}`;if(_)console.log(`[PieCard] Centrifuge subscribing to channel: ${W}`);let{subscription:D,createdHere:C}=uU(Q,W,{recoverable:!0,positioned:!0}),QU=(h)=>{if(_)console.log(`[PieCard] Centrifuge received data on ${W}:`,h.data);q.current?.[K]?.(h.data)},v=(h)=>{if(dU(h))console.warn(`[PieCard] Centrifuge channel ${W} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(gU(h)){if(_)console.log(`[PieCard] Centrifuge recovery gap on ${W}; requesting resync`);V.current?.({channel:W,reason:"gap"})}};return D.on("publication",QU),D.on("subscribed",v),D.subscribe(),{subscription:D,createdHere:C,onPublication:QU,onSubscribed:v}});return()=>{A.forEach(({subscription:K,createdHere:W,onPublication:D,onSubscribed:C})=>{if(_)console.log("[PieCard] Centrifuge unsubscribing from channel");if(K.off("publication",D),K.off("subscribed",C),W)K.unsubscribe(),Q.removeSubscription(K)})}},[Q,J,Z.name,T]),FU(()=>{if(!F||!H||!Z.name){if(_&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!F,useMittSupport:H,hasMethods:!!q.current,hasDataName:!!Z?.name});return}let O=Object.keys(q.current??{}),A={};return O.forEach((K)=>{let W=`pie${K}_${Z.name}`,D=(C)=>{if(_)console.log(`[PieCard] Mitt registering event: ${W}`);q.current?.[K]?.(C)};A[W]=D,F.on(W,D)}),()=>{Object.entries(A).forEach(([K,W])=>{if(_)console.log(`[PieCard] Mitt unregistering event: ${K}`);F.off(K,W)})}},[F,Z.name,H]),_)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0)return iZ(oZ,{children:[sZ("input",{type:"hidden",name:Z.name,value:JSON.stringify(G)}),$]});return $},P=lZ;import{lazy as rZ}from"react";var g=new Map;function lU(U,Z){return Z.catch(()=>{if(g.get(U)===Z)g.delete(U)}),g.set(U,Z),Z}function OU(U,Z){return rZ(()=>{if(g.has(Z))return g.get(Z);return lU(Z,U().then(($)=>$))})}var oU=async(U,Z)=>{if(!Z)return;if(g.has(U))return g.get(U);return lU(U,Z().then(($)=>$))};var y=M("@swarm.ing/pieui:component-registry",()=>new Map),aZ=(U)=>{if(!U.name)throw Error("Component registration requires a name");if(!U.component&&!U.loader)throw Error(`Component "${U.name}" requires component or loader`);let Z={name:U.name,component:U.component,loader:U.loader,metadata:U.metadata,fallback:U.fallback,isLazy:!1};if(!Z.component&&Z.loader)Z.component=OU(Z.loader,U.name),Z.isLazy=!0;return Z};function I(U){let Z=aZ(U);return y.set(Z.name,Z),Z.component}var nZ=(U)=>{U.forEach((Z)=>I(Z))},tZ=(U)=>{y.delete(U)},eZ=(U)=>{return y.has(U)},U$=(U)=>{return y.get(U)?.metadata},n=(U)=>{return y.get(U)},Z$=()=>{return Array.from(y.keys())},$$=()=>{return y.size},iU=()=>Array.from(y.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),rU=(U)=>{let Z=y.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return oU(U,Z.loader)},sU=!1,z$=()=>{if(sU||typeof window>"u")return;sU=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=iU(),$="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=Z.length)return;$(()=>{Promise.resolve().then(()=>rU(Z[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};import{useContext as aU,memo as V$}from"react";import{createContext as H$}from"react";import{jsx as G$,Fragment as J$}from"react/jsx-runtime";var T$=M("@swarm.ing/pieui:context:fallback",()=>H$(G$(J$,{}))),L=T$;import{createContext as X$}from"react";var Y$=M("@swarm.ing/pieui:context:lazyError",()=>X$(void 0)),m=Y$;import{Component as B$,Suspense as q$}from"react";import{jsx as _$}from"react/jsx-runtime";var Q$=2,W$=400;class o extends B${state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<Q$){let Z=W$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},Z)}}componentDidUpdate(U){if(U.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return _$(q$,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as IU}from"react/jsx-runtime";function D$({uiConfig:U,setUiAjaxConfiguration:Z}){let $=aU(L),z=aU(m),T=f();if(T)console.log("[UI] Rendering component:",U.card),console.log("[UI] Component data:",U.data),console.log("[UI] Component content:",U.content),console.log("[UI] Has setUiAjaxConfiguration:",!!Z);let H=n(U.card);if(!H?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(T)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let J=H.component,X=IU(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z});if(H.isLazy){if(T)console.log("[UI] Rendering lazy component with Suspense:",H.name);return IU(o,{name:H.name,fallback:H.fallback?IU(H.fallback,{}):$,onError:z,children:X})}if(T)console.log("[UI] Rendering component directly:",H.name);return X}var R=V$(D$);import{useContext as nU}from"react";import{createContext as K$}from"react";var F$=M("@swarm.ing/pieui:context:uiRenderer",()=>K$(null)),j=F$;import{jsx as HU}from"react/jsx-runtime";function tU({uiConfig:U,setUiAjaxConfiguration:Z}){let $=nU(L),z=nU(m),T=f();if(T)console.log("[UILoading] Rendering fallback for:",U.card),console.log("[UILoading] Component data:",U.data),console.log("[UILoading] Component content:",U.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!Z);let H=n(U.card);if(!H?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(T)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(T)console.log("[UILoading] Rendering fallback for:",H.name);let G=H.fallback;return HU(G,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",H.name);let J=H.component,X=HU(j.Provider,{value:tU,children:HU(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(H.isLazy)return HU(o,{name:H.name,fallback:$,onError:z,children:X});return X}var MU=tU;import{useContext as O$}from"react";import{jsx as AU}from"react/jsx-runtime";var I$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=O$(j)??R;return AU(P,{card:z,data:U,children:AU("div",{style:T,id:z,children:Z.map((J,X)=>{return AU(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${X}`)})})})},eU=I$;var M$=I({name:"SequenceCard",component:eU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as A$}from"react";import{jsx as UZ}from"react/jsx-runtime";var P$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z}=U,T=A$(j)??R;return UZ(P,{card:z,data:U,children:Z.map((H,J)=>{return UZ(T,{uiConfig:H,setUiAjaxConfiguration:$},`children-${J}`)})})},ZZ=P$;var w$=I({name:"UnionCard",component:ZZ,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as j$,useState as E$}from"react";import C$ from"html-react-parser";import{useCallback as TU,useEffect as N$,useRef as PU,useState as R$}from"react";function L$(){let U=new AudioContext,Z=U.createOscillator(),$=Z.connect(U.createMediaStreamDestination());Z.start();let z=$.stream.getAudioTracks()[0];return z.enabled=!1,z}function wU(U=null,Z){let[$,z]=R$(!1),T=PU(null),H=PU(null),J=PU(null),X=TU(async(q,V=!0)=>{if(T.current)G();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))z(!1)},B.ontrack=(D)=>{if(U)U.srcObject=D.streams[0]},V){let D=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(D.getTracks()[0],D)}else{let D=L$();B.addTrack(D)}let Q=B.createDataChannel("oai-events");H.current=Q,J.current=new Promise((D)=>{Q.addEventListener("open",()=>{D()})});let F=await B.createOffer();await B.setLocalDescription(F);let W=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:F.sdp,headers:{Authorization:`Bearer ${q}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:W}),T.current=B,await J.current},[U]),G=TU(()=>{let q=H.current;if(q)q.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,H.current=null,J.current=null},[U]),Y=TU((q)=>{let V=H.current;if(!V){console.error("Data channel is not ready",q);return}let B=new Date().toLocaleTimeString();if(q.event_id=q.event_id||crypto.randomUUID(),V.send(JSON.stringify(q)),!q.timestamp)q.timestamp=B;Z?.(q)},[Z,U]),_=TU((q)=>{if(!H.current){console.error("Data channel is not ready");return}let B=()=>{Y({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:q}]}}),Y({type:"response.create"})};if(J.current)J.current.then(B);else B()},[Z,U]);return N$(()=>{let q=H.current;if(!q)return;let V=(B)=>{let Q=JSON.parse(B.data);if(!Q.timestamp)Q.timestamp=new Date().toLocaleTimeString();Z?.(Q)};return q.addEventListener("message",V),()=>{q.removeEventListener("message",V)}},[Z,U]),{isSessionActive:$,startSession:X,stopSession:G,sendTextMessage:_}}import{jsx as x$}from"react/jsx-runtime";var y$=({data:U})=>{let{html:Z,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:H}=U,[J,X]=E$(Z),{isSessionActive:G,startSession:Y,sendTextMessage:_}=wU(null,(Q)=>{if(console.log(Q.type,Q.type==="response.output_text.delta"&&Q.delta),Q.type==="response.output_text.delta"&&Q.delta)X((F)=>F+Q.delta)});return j$(()=>{X(Z)},[Z]),x$(P,{card:"HTMLEmbedCard",data:U,methods:{update:(Q)=>{X(Q.value)},generateUsingAI:async(Q)=>{try{if(!G&&Q.token)await Y(Q.token,!1);_(Q.prompt)}catch(F){console.error("Failed to generate using AI",F)}},initializeAI:async(Q)=>{if(!G&&Q.token)await Y(Q.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:$,useMittSupport:T,centrifugeChannel:H,children:C$(J)})},$Z=y$;var f$=I({name:"HTMLEmbedCard",component:$Z,metadata:{author:"Swarm.ing"}});import{useEffect as b$,useState as k$}from"react";import{jsx as zZ}from"react/jsx-runtime";var S$=({data:U})=>{let{name:Z,value:$,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J}=U,[X,G]=k$($);return b$(()=>{G($)},[$]),zZ(P,{card:"HiddenCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J,methods:{update:({value:Y})=>{G(Y)}},children:zZ("input",{type:"hidden",id:Z,name:Z,value:X})})},HZ=S$;var m$=I({name:"HiddenCard",component:HZ,metadata:{author:"Swarm.ing"}});import{useContext as TZ,useEffect as p$}from"react";import{createContext as v$}from"react";var h$=M("@swarm.ing/pieui:context:navigate",()=>v$(void 0)),x=h$;import{jsx as u$,Fragment as d$}from"react/jsx-runtime";var g$=({data:U})=>{let{url:Z}=U,$=TZ(x),z=TZ(L);return p$(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else $?.(Z)},[Z,$]),u$(d$,{children:z})},JZ=g$;var c$=I({name:"AutoRedirectCard",component:JZ,metadata:{author:"Swarm.ing"}});import{Bounce as l$,Slide as o$,Zoom as s$,Flip as i$}from"react-toastify";import{toast as r$,ToastContainer as a$}from"react-toastify";import{useContext as n$,useMemo as t$,useRef as e$}from"react";import{jsx as NU,Fragment as Tz}from"react/jsx-runtime";var Uz={bounce:l$,slide:o$,zoom:s$,flip:i$},Zz=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?Uz[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};r$(U.message,Z)},$z=(U)=>{console.log("Log event",U)},zz=(U)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let Z=()=>{try{new window.Notification(U.title,{body:U.message??U.subtitle,icon:U.icon,silent:U.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},$=window.Notification.permission;if($==="granted"){Z();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")Z()})},Hz=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T}=U,H=n$(x),J=e$(H);J.current=H;let X=t$(()=>({alert:Zz,log:$z,push:zz,redirect:(G)=>{if(G.to){let Y=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()},reload:(G)=>{if(G.to){let Y=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()}}),[]);return NU(Tz,{children:NU(P,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T,methods:X,children:NU(a$,{})})})},GZ=Hz;var Jz=I({name:"IOEventsCard",component:GZ,metadata:{author:"Swarm.ing"}});import{useEffect as XZ,useState as Gz}from"react";import{jsx as YZ}from"react/jsx-runtime";var Xz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:X}=U,[G,Y]=Gz(z);return XZ(()=>{Y(z)},[z]),XZ(()=>{if(typeof window>"u")return;sessionStorage.setItem($,G)},[$,G]),YZ(P,{card:"SessionStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:X,methods:{update:({value:_})=>{Y(_)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:YZ("input",{type:"hidden",id:Z,name:Z,value:G})})},BZ=Xz;var Yz=I({name:"SessionStorageCard",component:BZ,metadata:{author:"PieData"}});import{useEffect as qZ,useState as Bz}from"react";import{jsx as QZ}from"react/jsx-runtime";var qz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:X}=U,[G,Y]=Bz(z);return qZ(()=>{Y(z)},[z]),qZ(()=>{if(typeof window>"u")return;localStorage.setItem($,G)},[$,G]),QZ(P,{card:"DeviceStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:X,methods:{update:({value:_})=>{Y(_)},remove:()=>{localStorage.removeItem($),Y("")}},children:QZ("input",{type:"hidden",id:Z,name:Z,value:G})})},WZ=qz;var Qz=I({name:"DeviceStorageCard",component:WZ,metadata:{author:"PieData"}});import{useCallback as RU,useContext as LU,useEffect as Wz,useRef as _z,useState as _Z}from"react";import{jsx as VZ}from"react/jsx-runtime";var Vz=({data:U,content:Z})=>{let{useLoader:$,noReturn:z,returnType:T,useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G}=U,Y=LU(L),_=LU(j)??R,[q,V]=_Z(!1),[B,Q]=_Z(null),F=_z(Z),O=LU(S),A=RU((D)=>{if(D===null)V(!0);else if(V(!1),!z)F.current=D;if(!z)Q(D)},[z]),K=RU((D)=>{F.current=D.content,Q(D.content)},[]),W=RU((D)=>{if(D===null)V(!0);else if(V(!1),!z)for(let C of D)O?.emit(C.name,C.data)},[z,O]);if(Wz(()=>{Q(Z),V(!1)},[Z]),!B&&$)return Y;return VZ(P,{card:"AjaxGroupCard",data:U,methods:{changeContent:K},useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G,children:VZ(_,{uiConfig:B??F.current,setUiAjaxConfiguration:T==="events"?W:A})})},DZ=Vz;var Dz=I({name:"AjaxGroupCard",component:DZ,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as KZ}from"react";import{jsx as jU}from"react/jsx-runtime";var Kz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,url:T,sx:H}=U,J=KZ(x),X=KZ(j)??R;return jU(P,{card:z,data:U,children:jU("div",{style:H,id:z,onClick:(Y)=>{if(T)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(T))window.location.href=T;else J?.(T)},children:jU(X,{setUiAjaxConfiguration:$,uiConfig:Z})})})},FZ=Kz;var Fz=I({name:"BoxCard",component:FZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Oz}from"react";import{jsx as EU}from"react/jsx-runtime";var Iz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=Oz(j)??R;return EU(P,{card:z,data:U,children:EU("div",{style:T,id:z,children:Z.map((J,X)=>{return EU(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${X}`)})})})},OZ=Iz;var Mz=I({name:"OneOfCard",component:OZ,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as e}from"react";import{QueryClient as mz,QueryClientProvider as vz,useQuery as hz}from"@tanstack/react-query";import{useContext as Cz,useEffect as yz,useRef as yU}from"react";import{useEffect as Az,useState as Pz}from"react";var JU=new Map,GU=new Map;function XU(U,Z){let $=`${U}::${Z}`,z=U?JU.get($):void 0,[T,H]=Pz(z??null);return Az(()=>{if(!U)return;if(JU.has($)){H(JU.get($));return}let J=GU.get($);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return JU.set($,G),GU.delete($),G}).catch((G)=>{throw GU.delete($),G}),GU.set($,J);let X=!1;return J.then((G)=>{if(!X)H(G)}).catch(()=>{}),()=>{X=!0}},[U,Z,$]),T}var wz=(U)=>{let Z=document.cookie?document.cookie.split(";"):[];for(let $ of Z){let z=$.indexOf("=");if((z===-1?$:$.slice(0,z)).trim()===U){let H=z===-1?"":$.slice(z+1).trim();try{return decodeURIComponent(H)}catch{return H}}}return null},Nz={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(U){if(typeof window<"u")window.sid=U},readWebStorage(U,Z){return(U==="local"?window.localStorage:window.sessionStorage).getItem(Z)},readCookie:wz,readUrlParams(U){return new URLSearchParams(window.location.search).getAll(U)},readDomInput(U){let Z=document.getElementsByName(U);if(!Z.length)return null;let $=Z[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let U=document.getElementById("piedata_global_form");U&&U.submit()}},IZ=Nz;var Rz={};function d(){return Rz}var MZ=new Map;var AZ=(U)=>{return MZ.has(U)?MZ.get(U):null};var PZ,Lz={isClient(){return!0},readSid(){return PZ},setSid(U){PZ=U},readWebStorage(U,Z){let $=d(),z=U==="local"?$.storage:$.sessionStorage;return z?z.getItem(Z):null},async readWebStorageAsync(U,Z){let $=d(),z=U==="local"?$.asyncStorage:$.asyncSessionStorage;if(z)return z.getItem(Z);let T=U==="local"?$.storage:$.sessionStorage;return T?T.getItem(Z):null},readCookie(U){let Z=d();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=d();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=d();return Z.getInput?Z.getInput(U):AZ(U)},submitGlobalForm(){d().submitForm?.()}},wZ=Lz;var jz=typeof navigator<"u"&&navigator.product==="ReactNative",Ez=jz?wZ:IZ,w=Ez;var t=M("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function NZ(){t.resolve?.()}function CU(){if(!w.isClient())return Promise.resolve();if(w.readSid()!==void 0)return Promise.resolve();if(!t.promise)t.promise=new Promise((U)=>{t.resolve=()=>{U()}});return t.promise}function s(U,Z){if(Z==="up")return{state:"up",signal:U==="down"?"restored":null};return{state:"down",signal:U==="up"?"lost":null}}var xz=({children:U})=>{let Z=Cz(k),$=UU(),z=XU($,"socketIO"),T=r(),H=a(),J=yU(T);J.current=T;let X=yU(H);X.current=H;let G=yU("initial"),Y=(_)=>{if(w.isClient())w.setSid(_.sid),NZ(),console.log(`SocketIO initialized: ${w.readSid()}`)};return yz(()=>{if(!Z||!z)return;let _=()=>{let{state:V,signal:B}=s(G.current,"up");if(G.current=V,B==="restored")X.current?.("socketio");console.log("SocketIO connected")},q=(V)=>{if(console.log(`SocketIO disconnected: ${V}`),Z.connect(),V==="io client disconnect")return;let{state:B,signal:Q}=s(G.current,"down");if(G.current=B,Q==="lost")J.current?.("socketio",V)};return Z.on("pieinit",Y),Z.on("connect",_),Z.on("disconnect",q),Z.connect(),()=>{Z.off("pieinit",Y),Z.off("connect",_),Z.off("disconnect",q),Z.disconnect()}},[Z,z]),U},YU=xz;import{useContext as fz,useEffect as bz,useRef as xU}from"react";var kz=({children:U})=>{let Z=fz(b),$=UU(),z=XU($,"centrifuge"),T=r(),H=a(),J=xU(T);J.current=T;let X=xU(H);X.current=H;let G=xU("initial");return bz(()=>{if(!Z||!z)return;let Y=(V)=>{let{state:B,signal:Q}=s(G.current,"down");if(G.current=B,Q==="lost")J.current?.("centrifuge",V)},_=()=>{let{state:V,signal:B}=s(G.current,"up");if(G.current=V,B==="restored")X.current?.("centrifuge");console.log("Centrifuge connected")},q=(V)=>{console.log("Centrifuge disconnected:",V),Y(V)};return Z.on("connecting",Y),Z.on("connected",_),Z.on("disconnected",q),Z.connect(),()=>{Z.off("connecting",Y),Z.off("connected",_),Z.off("disconnected",q),Z.disconnect()}},[Z,z]),U},BU=kz;import{createAxiosDateTransformer as pz}from"axios-date-transformer";import{jsx as Sz}from"react/jsx-runtime";function RZ(U,Z,$){if(!Z)return $;let z=U.replace(/^\//,""),T=Z[z];if(!T)return $;return Sz(MU,{uiConfig:T})}import{jsx as N,Fragment as uz}from"react/jsx-runtime";var gz=({location:U,fallback:Z,piecache:$,onError:z,queryOptions:T,disableGlobalForm:H})=>{let J=i(),X=ZU(),G=f(),Y=e(()=>pz({baseURL:J||""}),[J]),_=e(()=>l(),[]),q=e(()=>J?zU(J):null,[J]),V=e(()=>J?$U(J,X):null,[J,X]),{data:B,isLoading:Q,error:F}=hz({queryKey:["uiConfig",U.pathname+U.search,J],enabled:!!J,queryFn:async()=>{let A=new URLSearchParams(U.search);A.set("__pieroot","web");let K="/api/content"+U.pathname+"?"+A.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",K);let W=await Y.get(K,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",W.data);return W.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(A)=>Math.min(1000*2**A,30000),...T}),O=RZ(U.pathname,$,Z);if(!J)return O??null;if(G)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",X),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!$);if(F){if(G)console.error("[PieRoot] Error fetching UI configuration:",F),console.error("[PieRoot] Error details:",{message:F.message,status:F.response?.status,data:F.response?.data});return z?.(F),O}if(Q||!B){if(G)console.log("[PieRoot] Loading state:",{isLoading:Q,hasUiConfiguration:!!B});return O}if(G)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return N(S.Provider,{value:_,children:N(k.Provider,{value:q,children:N(b.Provider,{value:V,children:N(L.Provider,{value:Z??N(uz,{}),children:N(YU,{children:N(BU,{children:H?N(R,{uiConfig:B}):N("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:N(R,{uiConfig:B})})})})})})})})},dz=(U)=>{let Z=e(()=>new mz,[]),$=U.queryClient??Z;return N(x.Provider,{value:U.onNavigate,children:N(c.Provider,{value:U.config,children:N(m.Provider,{value:U.onError,children:N(vz,{client:$,children:N(gz,{...U})})})})})},fU=dz;import{useMemo as bU,useState as cz}from"react";import{QueryClient as lz,QueryClientProvider as oz}from"@tanstack/react-query";import{jsx as E,Fragment as rz}from"react/jsx-runtime";var sz=({location:U,fallback:Z,children:$,disableGlobalForm:z})=>{let T=i(),H=ZU(),J=f(),X=bU(()=>l(),[]),G=bU(()=>T?zU(T):null,[T]),Y=bU(()=>T?$U(T,H):null,[T,H]);if(J)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",T),console.log("[PieRoot] CENTRIFUGE_SERVER:",H),console.log("[PieRoot] Fallback provided:",!!Z);return E(S.Provider,{value:X,children:E(k.Provider,{value:G,children:E(b.Provider,{value:Y,children:E(L.Provider,{value:Z??E(rz,{}),children:E(YU,{children:E(BU,{children:z?$:E("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},iz=(U)=>{let[Z]=cz(()=>new lz),$=U.queryClient??Z;return E(x.Provider,{value:U.onNavigate,children:E(c.Provider,{value:U.config,children:E(m.Provider,{value:U.onError,children:E(oz,{client:$,children:E(sz,{...U})})})})})},az=iz;import{useMemo as nz}from"react";import{jsx as LZ}from"react/jsx-runtime";var tz=LZ("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),ez=({apiServer:U,pathname:Z="/",search:$="",centrifugeServer:z,fallback:T,enableRenderingLog:H=!1})=>{let J=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",X=nz(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:H,pageProcessor:"web"}),[J,z,H]);return LZ(fU,{location:{pathname:Z,search:$},config:X,fallback:T??tz,onNavigate:(Y)=>{if(typeof window<"u")window.history.pushState(null,"",Y)}})},UH=ez;import{useMemo as ZH}from"react";var $H=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],zH=new Set(["telegram:cloud","telegram:secure"]),qU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of $H){let $=Z+":";if(U.startsWith($))return{source:Z,key:U.slice($.length)}}return{source:"dom",key:U}},jZ=(U,Z=!1)=>{let{source:$,key:z}=qU(U);if($==="sid"){let H=w.readSid();if(!H)throw Error("SocketIO isn't initialized properly");return[H]}if($==="localStorage"||$==="sessionStorage")try{let H=w.readWebStorage($==="localStorage"?"local":"session",z);if(H===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[H]}catch(H){if(Z)console.warn(`Failed to read ${$} key ${z}:`,H);return[]}if($==="cookie"){let H=w.readCookie(z);if(H===null){if(Z)console.warn(`No cookie found for key ${z}`);return[]}return[H]}if($==="url"){let H=w.readUrlParams(z);if(!H.length&&Z)console.warn(`No URL query param found for key ${z}`);return H}if(zH.has($)){if(Z)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=w.readDomInput(z);if(T===null){if(Z)console.warn(`No input found with name ${z}`);return[]}return T},HH=(U,Z,$)=>{let z=window.Telegram?.WebApp,T=U==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,H=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if($)console.warn(`${H} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(Z,(X,G)=>{if(X){if($)console.warn(`Failed to read ${H} key ${Z}:`,X);J([]);return}if(G==null||G===""){if($)console.warn(`No ${H} value found for key ${Z}`);J([]);return}J([G])})}catch(X){if($)console.warn(`Failed to read ${H} key ${Z}:`,X);J([])}})},EZ=async(U,Z=!1)=>{let{source:$,key:z}=qU(U);if($==="telegram:cloud"||$==="telegram:secure")return HH($,z,Z);if(($==="localStorage"||$==="sessionStorage")&&w.readWebStorageAsync)try{let T=await w.readWebStorageAsync($==="localStorage"?"local":"session",z);if(T===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[T]}catch(T){if(Z)console.warn(`Failed to read ${$} key ${z}:`,T);return[]}return jZ(U,Z)},TH=(U,Z={},$=[],z,T)=>{let H=T?.renderingLogEnabled??!1,J=T?.timeout,X=T?.retryPolicy,G=X?.maxRetries??0,Y=X?.baseDelay??1000,_=X?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",z,Z,$);return async(q={})=>{if(!w.isClient()){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!U){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await CU();let B=new FormData;for(let[O,A]of Object.entries({...Z,...q}))B.append(O,A);for(let O of $){let{key:A}=qU(O);for(let K of await EZ(O,H))B.append(A,K)}let Q=V+"api/ajax_content"+z;U(null);let F;for(let O=0;O<=G;O++){if(O>0){let W=Y*2**(O-1);if(H)console.log(`AJAX retry ${O}/${G} after ${W}ms`);await new Promise((D)=>setTimeout(D,W))}let A=J!=null?new AbortController:null,K=A&&setTimeout(()=>A.abort(),J);try{let W=await fetch(Q,{method:"POST",body:B,signal:A?.signal});if(K)clearTimeout(K);if(!W.ok&&_.includes(W.status)&&O<G){F=Error(`HTTP ${W.status}`);continue}let C=(W.headers.get("content-type")||"").includes("application/json");if(!!W.body?.getReader&&!C){let v=W.body.getReader(),h=new TextDecoder,u="";while(!0){let{done:WU,value:CZ}=await v.read();if(WU)break;u+=h.decode(CZ,{stream:!0});let kU=u.split(`
|
|
3
|
-
`);u=kU.pop()??"";for(let yZ of kU){let _U=yZ.trim();if(!_U)continue;try{let xZ=JSON.parse(_U);U([xZ])}catch{if(H)console.warn("Failed to parse streamed line:",_U)}}}if(u.trim())try{let WU=JSON.parse(u);U([WU])}catch{if(H)console.warn("Failed to parse final streamed line:",u)}return{}}else{let v=await W.json();return U(v),v}}catch(W){if(K)clearTimeout(K);if(F=W,O<G)continue;if(H)console.error("AJAX request failed:",W);return U(null),W}}if(H)console.error("AJAX request failed after retries:",F);return U(null),F}},JH=(U,Z={},$=[],z,T)=>{let{apiServer:H,enableRenderingLog:J}=p(),X=JSON.stringify(Z),G=JSON.stringify($),Y=JSON.stringify(T);return ZH(()=>TH(U,Z,$,z,{apiServer:H,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[U,X,G,z,H,J,Y])};import{clsx as GH}from"clsx";import{twMerge as XH}from"tailwind-merge";function YH(...U){return XH(GH(U))}var BH=()=>{w.submitGlobalForm()};var qH=(U,Z)=>`${U}${DU}${Z}`;export{cZ as usePieEmit,a as useOnLinkRestored,r as useOnLinkLost,JH as useAjaxSubmit,tZ as unregisterComponent,OU as trackLazy,BH as submitGlobalForm,y as registry,I as registerPieComponent,nZ as registerMultipleComponents,EZ as readAjaxKeyAsync,jZ as readAjaxKey,rU as preloadComponent,z$ as prefetchLazyComponents,qH as pieName,qU as parseDepName,eZ as hasComponent,$$ as getRegistrySize,n as getRegistryEntry,iU as getLazyComponentNames,l as getEmitter,U$ as getComponentMeta,Z$ as getAllRegisteredComponents,YH as cn,w$ as UnionCard,j as UIRendererContext,MU as UILoading,R as UI,k as SocketIOContext,Yz as SessionStorageCard,M$ as SequenceCard,fU as PieRoot,UH as PiePreviewRoot,c as PieConfigContext,P as PieCard,az as PieBaseRoot,DU as PIEBREAK,Mz as OneOfCard,S as MittContext,Jz as IOEventsCard,m$ as HiddenCard,f$ as HTMLEmbedCard,L as FallbackContext,Qz as DeviceStorageCard,b as CentrifugeIOContext,Fz as BoxCard,c$ as AutoRedirectCard,Dz as AjaxGroupCard};
|
|
2
|
+
import{useContext as IZ,useEffect as XZ,useRef as MZ}from"react";import{createContext as hU,useContext as gU}from"react";var KZ=globalThis,M=(Z,U)=>{let $=Symbol.for(Z);if(!($ in KZ))KZ[$]=U();return KZ[$]};var l=M("@swarm.ing/pieui:context:pieConfig",()=>hU(null)),p=()=>{let Z=gU(l);if(!Z)throw Error("usePieConfig must be used within PieConfigProvider");return Z},r=()=>{let{apiServer:Z}=p();return Z},$Z=r,zZ=()=>{let{centrifugeServer:Z}=p();return Z};var m=()=>{let{enableRenderingLog:Z}=p();return Z},vZ=m;var a=()=>{let{onLinkLost:Z}=p();return Z},n=()=>{let{onLinkRestored:Z}=p();return Z},OZ="__piedemo__";import{createContext as pU}from"react";import{Centrifuge as hZ}from"centrifuge";var gZ=M("@swarm.ing/pieui:centrifuge-cache",()=>new Map),HZ=(Z,U)=>{if(!U)return null;let $=`${Z}::${U}`,z=gZ.get($);if(z)return z;async function H(){let J=await fetch(Z+"api/centrifuge/gen_token",{credentials:"include"});if(!J.ok){if(J.status===401||J.status===403)throw new hZ.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let T=new hZ(U,{getToken:H});return gZ.set($,T),T},uU=M("@swarm.ing/pieui:context:centrifuge",()=>pU(null)),v=uU;import{io as dU}from"socket.io-client";import{createContext as cU}from"react";var pZ=M("@swarm.ing/pieui:socket-cache",()=>new Map),TZ=(Z)=>{let U=pZ.get(Z);if(U)return U;let $=dU(Z,{autoConnect:!1,transports:["websocket"]});return pZ.set(Z,$),$},lU=M("@swarm.ing/pieui:context:socket",()=>cU(null)),h=lU;import oU from"mitt";import{createContext as sU,useCallback as iU,useContext as rU}from"react";function o(){return M("@swarm.ing/pieui:mitt-emitter",()=>oU())}var uZ=M("@swarm.ing/pieui:context:mitt",()=>sU(null));function aU(Z){let U=rU(uZ);return iU(($,z)=>{(U??o()).emit(`pie${$}_${Z}`,z)},[Z,U])}var g=uZ;function dZ(Z){return Z.wasRecovering===!0&&Z.recovered===!1}function cZ(Z){return Z.recoverable===!1}function lZ(Z,U,$){let z=Z.getSubscription(U);if(z)return{subscription:z,createdHere:!1};return{subscription:Z.newSubscription(U,$),createdHere:!0}}var nU=(Z)=>{let U=document.cookie?document.cookie.split(";"):[];for(let $ of U){let z=$.indexOf("=");if((z===-1?$:$.slice(0,z)).trim()===Z){let T=z===-1?"":$.slice(z+1).trim();try{return decodeURIComponent(T)}catch{return T}}}return null},tU={isClient(){return typeof window<"u"&&typeof document<"u"},readSid(){return typeof window>"u"?void 0:window.sid},setSid(Z){if(typeof window<"u")window.sid=Z},readWebStorage(Z,U){return(Z==="local"?window.localStorage:window.sessionStorage).getItem(U)},readCookie:nU,readUrlParams(Z){return new URLSearchParams(window.location.search).getAll(Z)},readDomInput(Z){let U=document.getElementsByName(Z);if(!U.length)return null;let $=U[0];if($ instanceof HTMLInputElement){if($.type==="file"&&$.files)return Array.from($.files);return[$.value]}if($ instanceof HTMLTextAreaElement)return[$.value];return[]},submitGlobalForm(){if(typeof document>"u")return;let Z=document.getElementById("piedata_global_form");Z&&Z.submit()}},oZ=tU;var eU={};function d(){return eU}var sZ=new Map;var iZ=(Z)=>{return sZ.has(Z)?sZ.get(Z):null};var rZ,Z$={isClient(){return!0},readSid(){return rZ},setSid(Z){rZ=Z},readWebStorage(Z,U){let $=d(),z=Z==="local"?$.storage:$.sessionStorage;return z?z.getItem(U):null},async readWebStorageAsync(Z,U){let $=d(),z=Z==="local"?$.asyncStorage:$.asyncSessionStorage;if(z)return z.getItem(U);let H=Z==="local"?$.storage:$.sessionStorage;return H?H.getItem(U):null},readCookie(Z){let U=d();return U.getCookie?U.getCookie(Z):null},readUrlParams(Z){let U=d();return U.getRouteParams?U.getRouteParams(Z):[]},readDomInput(Z){let U=d();return U.getInput?U.getInput(Z):iZ(Z)},submitGlobalForm(){d().submitForm?.()}},aZ=Z$;var U$=typeof navigator<"u"&&navigator.product==="ReactNative",$$=U$?aZ:oZ,N=$$;var t=M("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function nZ(){t.resolve?.()}function FZ(){if(!N.isClient())return Promise.resolve();if(N.readSid()!==void 0)return Promise.resolve();if(!t.promise)t.promise=new Promise((Z)=>{t.resolve=()=>{Z()}});return t.promise}import{useMemo as tZ}from"react";var z$=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],H$=new Set(["telegram:cloud","telegram:secure"]),JZ=new Map,eZ=(Z,U)=>{JZ.set(Z,U)},ZU=(Z)=>{JZ.delete(Z)},GZ=(Z)=>{if(Z==="sid")return{source:"sid",key:"sid"};for(let U of z$){let $=U+":";if(Z.startsWith($))return{source:U,key:Z.slice($.length)}}return{source:"dom",key:Z}},UU=(Z,U=!1)=>{let{source:$,key:z}=GZ(Z);if($==="sid"){let J=N.readSid();if(!J)throw Error("SocketIO isn't initialized properly");return[J]}if($==="localStorage"||$==="sessionStorage")try{let J=N.readWebStorage($==="localStorage"?"local":"session",z);if(J===null){if(U)console.warn(`No ${$} value found for key ${z}`);return[]}return[J]}catch(J){if(U)console.warn(`Failed to read ${$} key ${z}:`,J);return[]}if($==="cookie"){let J=N.readCookie(z);if(J===null){if(U)console.warn(`No cookie found for key ${z}`);return[]}return[J]}if($==="url"){let J=N.readUrlParams(z);if(!J.length&&U)console.warn(`No URL query param found for key ${z}`);return J}if(H$.has($)){if(U)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let H=JZ.get(z);if(H){let J=H();if(J instanceof Promise){if(U)console.warn(`stored resolver for ${z} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}return J}let T=N.readDomInput(z);if(T===null){if(U)console.warn(`No input found with name ${z}`);return[]}return T},T$=(Z,U,$)=>{let z=window.Telegram?.WebApp,H=Z==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,T=Z==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!H){if($)console.warn(`${T} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{H.getItem(U,(X,G)=>{if(X){if($)console.warn(`Failed to read ${T} key ${U}:`,X);J([]);return}if(G==null||G===""){if($)console.warn(`No ${T} value found for key ${U}`);J([]);return}J([G])})}catch(X){if($)console.warn(`Failed to read ${T} key ${U}:`,X);J([])}})},$U=async(Z,U=!1)=>{let{source:$,key:z}=GZ(Z);if($==="telegram:cloud"||$==="telegram:secure")return T$($,z,U);if(($==="localStorage"||$==="sessionStorage")&&N.readWebStorageAsync)try{let H=await N.readWebStorageAsync($==="localStorage"?"local":"session",z);if(H===null){if(U)console.warn(`No ${$} value found for key ${z}`);return[]}return[H]}catch(H){if(U)console.warn(`Failed to read ${$} key ${z}:`,H);return[]}if($==="dom"){let H=JZ.get(z);if(H)return H()}return UU(Z,U)},zU=(Z,U={},$=[],z,H)=>{let T=H?.renderingLogEnabled??!1,J=H?.timeout,X=H?.retryPolicy,G=X?.maxRetries??0,Y=X?.baseDelay??1000,_=X?.retryOn??[502,503,504];if(T)console.log("Registering AJAX: ",z,U,$);return async(q={})=>{if(!N.isClient()){if(T)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=H?.apiServer;if(!V){if(T)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!Z){if(T)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await FZ();let B=new FormData;for(let[O,P]of Object.entries({...U,...q}))B.append(O,P);for(let O of $){let{key:P}=GZ(O);for(let w of await $U(O,T))B.append(P,w)}let W=V+"api/ajax_content"+z;Z(null);let D;for(let O=0;O<=G;O++){if(O>0){let K=Y*2**(O-1);if(T)console.log(`AJAX retry ${O}/${G} after ${K}ms`);await new Promise((Q)=>setTimeout(Q,K))}let P=J!=null?new AbortController:null,w=P&&setTimeout(()=>P.abort(),J);try{let K=await fetch(W,{method:"POST",body:B,signal:P?.signal});if(w)clearTimeout(w);if(!K.ok&&_.includes(K.status)&&O<G){D=Error(`HTTP ${K.status}`);continue}let F=(K.headers.get("content-type")||"").includes("application/json");if(!!K.body?.getReader&&!F){let x=K.body.getReader(),UZ=new TextDecoder,k="";while(!0){let{done:S,value:SU}=await x.read();if(S)break;k+=UZ.decode(SU,{stream:!0});let mZ=k.split(`
|
|
3
|
+
`);k=mZ.pop()??"";for(let mU of mZ){let DZ=mU.trim();if(!DZ)continue;try{let vU=JSON.parse(DZ);Z([vU])}catch{if(T)console.warn("Failed to parse streamed line:",DZ)}}}if(k.trim())try{let S=JSON.parse(k);Z([S])}catch{if(T)console.warn("Failed to parse final streamed line:",k)}return{}}else{let x=await K.json();return Z(x),x}}catch(K){if(w)clearTimeout(w);if(D=K,O<G)continue;if(T)console.error("AJAX request failed:",K);return Z(null),K}}if(T)console.error("AJAX request failed after retries:",D);return Z(null),D}},J$=(Z,U={},$=[],z,H)=>{let{apiServer:T,enableRenderingLog:J}=p(),X=JSON.stringify(U),G=JSON.stringify($),Y=JSON.stringify(H);return tZ(()=>zU(Z,U,$,z,{apiServer:T,renderingLogEnabled:J,timeout:H?.timeout,retryPolicy:H?.retryPolicy}),[Z,X,G,z,T,J,Y])},HU=(Z={})=>{let U=[];for(let $ of Object.keys(Z??{})){let z=null;if($==="pathname")z="default";else if($.endsWith("Pathname"))z=$.slice(0,-8);if(z===null)continue;let H=z==="default"?"":z;U.push({key:z,pathname:Z[$],depsNames:Z[H?`${H}DepsNames`:"depsNames"]??[],kwargs:Z[H?`${H}Kwargs`:"kwargs"]??{}})}return U},G$=(Z={},U,$)=>{let{apiServer:z,enableRenderingLog:H}=p(),T=JSON.stringify(Z??{}),J=JSON.stringify($);return tZ(()=>{let X={};for(let G of HU(Z??{}))X[G.key]=zU(U,G.kwargs,G.depsNames,G.pathname,{apiServer:z,renderingLogEnabled:H,timeout:$?.timeout,retryPolicy:$?.retryPolicy});return X},[T,U,z,H,J])};import{jsx as B$,jsxs as q$,Fragment as Y$}from"react/jsx-runtime";var X$=({card:Z,data:U,children:$,useSocketioSupport:z=!1,useCentrifugeSupport:H=!1,useMittSupport:T=!1,centrifugeChannel:J=void 0,methods:X=void 0,stored:G=void 0,onResync:Y=void 0})=>{let _=vZ(),q=MZ(X);q.current=X;let V=MZ(Y);V.current=Y;let B=MZ(G);B.current=G;let W=typeof G==="function";if(XZ(()=>{if(!W)return;let w=U.name;return eZ(w,()=>[JSON.stringify(B.current())]),()=>ZU(w)},[W,U.name]),_)console.log("[PieCard] Rendering card:",Z),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:H,mitt:T,centrifugeChannel:J}),console.log("[PieCard] Methods:",X?Object.keys(X):"none"),console.log("[PieCard] Has children:",!!$);let D=IZ(h),O=IZ(v),P=IZ(g);if(XZ(()=>{if(!D||!z||!q.current||!U.name){if(_&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!D,useSocketioSupport:z,hasMethods:!!q.current,hasDataName:!!U?.name});return}let K=Object.keys(q.current??{}).map((Q)=>{let F=`pie${Q}_${U.name}`;if(_)console.log(`[PieCard] Socket.IO registering event: ${F}`);let j=(x)=>{q.current?.[Q]?.(x)};return D.on(F,j),[F,j]});return()=>{K.forEach(([Q,F])=>{if(_)console.log(`[PieCard] Socket.IO unregistering event: ${Q}`);D.off(Q,F)})}},[D,U.name,z]),XZ(()=>{if(!O||!H||!J||!U.name){if(_&&H)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!O,useCentrifugeSupport:H,hasCentrifugeChannel:!!J,hasMethods:!!q.current,hasDataName:!!U?.name});return}let K=Object.keys(q.current??{}).map((Q)=>{let F=`pie${Q}_${U.name}_${J}`;if(_)console.log(`[PieCard] Centrifuge subscribing to channel: ${F}`);let{subscription:j,createdHere:x}=lZ(O,F,{recoverable:!0,positioned:!0}),UZ=(S)=>{if(_)console.log(`[PieCard] Centrifuge received data on ${F}:`,S.data);q.current?.[Q]?.(S.data)},k=(S)=>{if(cZ(S))console.warn(`[PieCard] Centrifuge channel ${F} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(dZ(S)){if(_)console.log(`[PieCard] Centrifuge recovery gap on ${F}; requesting resync`);V.current?.({channel:F,reason:"gap"})}};return j.on("publication",UZ),j.on("subscribed",k),j.subscribe(),{subscription:j,createdHere:x,onPublication:UZ,onSubscribed:k}});return()=>{K.forEach(({subscription:Q,createdHere:F,onPublication:j,onSubscribed:x})=>{if(_)console.log("[PieCard] Centrifuge unsubscribing from channel");if(Q.off("publication",j),Q.off("subscribed",x),F)Q.unsubscribe(),O.removeSubscription(Q)})}},[O,J,U.name,H]),XZ(()=>{if(!P||!T||!U.name){if(_&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!P,useMittSupport:T,hasMethods:!!q.current,hasDataName:!!U?.name});return}let w=Object.keys(q.current??{}),K={};return w.forEach((Q)=>{let F=`pie${Q}_${U.name}`,j=(x)=>{if(_)console.log(`[PieCard] Mitt registering event: ${F}`);q.current?.[Q]?.(x)};K[F]=j,P.on(F,j)}),()=>{Object.entries(K).forEach(([Q,F])=>{if(_)console.log(`[PieCard] Mitt unregistering event: ${Q}`);P.off(Q,F)})}},[P,U.name,T]),_)console.log("[PieCard] Rendering complete, returning children");if(G!==void 0&&!W)return q$(Y$,{children:[B$("input",{type:"hidden",name:U.name,value:JSON.stringify(G)}),$]});return $},A=X$;import{lazy as Q$}from"react";var c=new Map;function TU(Z,U){return U.catch(()=>{if(c.get(Z)===U)c.delete(Z)}),c.set(Z,U),U}function PZ(Z,U){return Q$(()=>{if(c.has(U))return c.get(U);return TU(U,Z().then(($)=>$))})}var JU=async(Z,U)=>{if(!U)return;if(c.has(Z))return c.get(Z);return TU(Z,U().then(($)=>$))};var f=M("@swarm.ing/pieui:component-registry",()=>new Map),W$=(Z)=>{if(!Z.name)throw Error("Component registration requires a name");if(!Z.component&&!Z.loader)throw Error(`Component "${Z.name}" requires component or loader`);let U={name:Z.name,component:Z.component,loader:Z.loader,metadata:Z.metadata,fallback:Z.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=PZ(U.loader,Z.name),U.isLazy=!0;return U};function I(Z){let U=W$(Z);return f.set(U.name,U),U.component}var _$=(Z)=>{Z.forEach((U)=>I(U))},V$=(Z)=>{f.delete(Z)},D$=(Z)=>{return f.has(Z)},K$=(Z)=>{return f.get(Z)?.metadata},e=(Z)=>{return f.get(Z)},O$=()=>{return Array.from(f.keys())},F$=()=>{return f.size},XU=()=>Array.from(f.values()).filter((Z)=>Z.isLazy&&typeof Z.loader==="function").map((Z)=>Z.name),YU=(Z)=>{let U=f.get(Z);if(!U?.isLazy||typeof U.loader!=="function")return;return JU(Z,U.loader)},GU=!1,I$=()=>{if(GU||typeof window>"u")return;GU=!0;let Z=navigator.connection;if(Z?.saveData)return;if(Z?.effectiveType&&["slow-2g","2g"].includes(Z.effectiveType))return;let U=XU(),$="requestIdleCallback"in window?(H)=>window.requestIdleCallback(H,{timeout:2000}):(H)=>window.setTimeout(H,300),z=(H)=>{if(H>=U.length)return;$(()=>{Promise.resolve().then(()=>YU(U[H])).catch(()=>{}).finally(()=>z(H+1))})};z(0)};import{useContext as BU,memo as x$}from"react";import{createContext as M$}from"react";import{jsx as w$,Fragment as A$}from"react/jsx-runtime";var P$=M("@swarm.ing/pieui:context:fallback",()=>M$(w$(A$,{}))),E=P$;import{createContext as N$}from"react";var L$=M("@swarm.ing/pieui:context:lazyError",()=>N$(void 0)),u=L$;import{Component as R$,Suspense as j$}from"react";import{jsx as y$}from"react/jsx-runtime";var E$=2,C$=400;class s extends R${state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(Z){if(this.props.onError?.(Z),this.state.attempt<E$){let U=C$*(this.state.attempt+1);this.timer=setTimeout(()=>{this.setState(($)=>({failed:!1,attempt:$.attempt+1}))},U)}}componentDidUpdate(Z){if(Z.name!==this.props.name&&this.state.attempt!==0)this.setState({failed:!1,attempt:0})}componentWillUnmount(){if(this.timer)clearTimeout(this.timer)}render(){if(this.state.failed)return this.props.fallback;return y$(j$,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as AZ}from"react/jsx-runtime";function f$({uiConfig:Z,setUiAjaxConfiguration:U}){let $=BU(E),z=BU(u),H=m();if(H)console.log("[UI] Rendering component:",Z.card),console.log("[UI] Component data:",Z.data),console.log("[UI] Component content:",Z.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let T=e(Z.card);if(!T?.component){if(H)console.warn(`[UI] Component not found in registry: ${Z.card}`),console.log("[UI] Returning fallback component");return $}if(H)console.log("[UI] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let J=T.component,X=AZ(J,{data:Z.data,content:Z.content,setUiAjaxConfiguration:U});if(T.isLazy){if(H)console.log("[UI] Rendering lazy component with Suspense:",T.name);return AZ(s,{name:T.name,fallback:T.fallback?AZ(T.fallback,{}):$,onError:z,children:X})}if(H)console.log("[UI] Rendering component directly:",T.name);return X}var R=x$(f$);import{useContext as qU}from"react";import{createContext as b$}from"react";var k$=M("@swarm.ing/pieui:context:uiRenderer",()=>b$(null)),C=k$;import{jsx as YZ}from"react/jsx-runtime";function QU({uiConfig:Z,setUiAjaxConfiguration:U}){let $=qU(E),z=qU(u),H=m();if(H)console.log("[UILoading] Rendering fallback for:",Z.card),console.log("[UILoading] Component data:",Z.data),console.log("[UILoading] Component content:",Z.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let T=e(Z.card);if(!T?.component){if(H)console.warn(`[UILoading] Component not found in registry: ${Z.card}`),console.log("[UILoading] Returning fallback component");return $}if(H)console.log("[UILoading] Found component in registry:",{name:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(H)console.log("[UILoading] Rendering fallback for:",T.name);let G=T.fallback;return YZ(G,{})}if(H)console.log("[UILoading] No fallback, rendering full component:",T.name);let J=T.component,X=YZ(C.Provider,{value:QU,children:YZ(J,{data:Z.data,content:Z.content,setUiAjaxConfiguration:U})});if(T.isLazy)return YZ(s,{name:T.name,fallback:$,onError:z,children:X});return X}var wZ=QU;import{useContext as S$}from"react";import{jsx as NZ}from"react/jsx-runtime";var m$=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:z,sx:H}=Z,T=S$(C)??R;return NZ(A,{card:z,data:Z,children:NZ("div",{style:H,id:z,children:U.map((J,X)=>{return NZ(T,{uiConfig:J,setUiAjaxConfiguration:$},`children-${X}`)})})})},WU=m$;var v$=I({name:"SequenceCard",component:WU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as h$}from"react";import{jsx as _U}from"react/jsx-runtime";var g$=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:z}=Z,H=h$(C)??R;return _U(A,{card:z,data:Z,children:U.map((T,J)=>{return _U(H,{uiConfig:T,setUiAjaxConfiguration:$},`children-${J}`)})})},VU=g$;var p$=I({name:"UnionCard",component:VU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as l$,useState as o$}from"react";import s$ from"html-react-parser";import{useCallback as BZ,useEffect as u$,useRef as LZ,useState as d$}from"react";function c$(){let Z=new AudioContext,U=Z.createOscillator(),$=U.connect(Z.createMediaStreamDestination());U.start();let z=$.stream.getAudioTracks()[0];return z.enabled=!1,z}function RZ(Z=null,U){let[$,z]=d$(!1),H=LZ(null),T=LZ(null),J=LZ(null),X=BZ(async(q,V=!0)=>{if(H.current)G();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))z(!1)},B.ontrack=(Q)=>{if(Z)Z.srcObject=Q.streams[0]},V){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(Q.getTracks()[0],Q)}else{let Q=c$();B.addTrack(Q)}let W=B.createDataChannel("oai-events");T.current=W,J.current=new Promise((Q)=>{W.addEventListener("open",()=>{Q()})});let D=await B.createOffer();await B.setLocalDescription(D);let K=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:D.sdp,headers:{Authorization:`Bearer ${q}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:K}),H.current=B,await J.current},[Z]),G=BZ(()=>{let q=T.current;if(q)q.close();H.current?.getSenders()?.forEach((V)=>V.track?.stop()),H.current?.close(),z(!1),H.current=null,T.current=null,J.current=null},[Z]),Y=BZ((q)=>{let V=T.current;if(!V){console.error("Data channel is not ready",q);return}let B=new Date().toLocaleTimeString();if(q.event_id=q.event_id||crypto.randomUUID(),V.send(JSON.stringify(q)),!q.timestamp)q.timestamp=B;U?.(q)},[U,Z]),_=BZ((q)=>{if(!T.current){console.error("Data channel is not ready");return}let B=()=>{Y({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:q}]}}),Y({type:"response.create"})};if(J.current)J.current.then(B);else B()},[U,Z]);return u$(()=>{let q=T.current;if(!q)return;let V=(B)=>{let W=JSON.parse(B.data);if(!W.timestamp)W.timestamp=new Date().toLocaleTimeString();U?.(W)};return q.addEventListener("message",V),()=>{q.removeEventListener("message",V)}},[U,Z]),{isSessionActive:$,startSession:X,stopSession:G,sendTextMessage:_}}import{jsx as r$}from"react/jsx-runtime";var i$=({data:Z})=>{let{html:U,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:H,centrifugeChannel:T}=Z,[J,X]=o$(U),{isSessionActive:G,startSession:Y,sendTextMessage:_}=RZ(null,(W)=>{if(console.log(W.type,W.type==="response.output_text.delta"&&W.delta),W.type==="response.output_text.delta"&&W.delta)X((D)=>D+W.delta)});return l$(()=>{X(U)},[U]),r$(A,{card:"HTMLEmbedCard",data:Z,methods:{update:(W)=>{X(W.value)},generateUsingAI:async(W)=>{try{if(!G&&W.token)await Y(W.token,!1);_(W.prompt)}catch(D){console.error("Failed to generate using AI",D)}},initializeAI:async(W)=>{if(!G&&W.token)await Y(W.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:$,useMittSupport:H,centrifugeChannel:T,children:s$(J)})},DU=i$;var a$=I({name:"HTMLEmbedCard",component:DU,metadata:{author:"Swarm.ing"}});import{useEffect as n$,useState as t$}from"react";import{jsx as KU}from"react/jsx-runtime";var e$=({data:Z})=>{let{name:U,value:$,useSocketioSupport:z,useCentrifugeSupport:H,useMittSupport:T,centrifugeChannel:J}=Z,[X,G]=t$($);return n$(()=>{G($)},[$]),KU(A,{card:"HiddenCard",data:Z,useSocketioSupport:z,useCentrifugeSupport:H,useMittSupport:T,centrifugeChannel:J,methods:{update:({value:Y})=>{G(Y)}},children:KU("input",{type:"hidden",id:U,name:U,value:X})})},OU=e$;var Zz=I({name:"HiddenCard",component:OU,metadata:{author:"Swarm.ing"}});import{useContext as FU,useEffect as zz}from"react";import{createContext as Uz}from"react";var $z=M("@swarm.ing/pieui:context:navigate",()=>Uz(void 0)),b=$z;import{jsx as Jz,Fragment as Tz}from"react/jsx-runtime";var Hz=({data:Z})=>{let{url:U}=Z,$=FU(b),z=FU(E);return zz(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else $?.(U)},[U,$]),Jz(Tz,{children:z})},IU=Hz;var Gz=I({name:"AutoRedirectCard",component:IU,metadata:{author:"Swarm.ing"}});import{Bounce as Xz,Slide as Yz,Zoom as Bz,Flip as qz}from"react-toastify";import{toast as Qz,ToastContainer as Wz}from"react-toastify";import{useContext as _z,useMemo as Vz,useRef as Dz}from"react";import{jsx as jZ,Fragment as Pz}from"react/jsx-runtime";var Kz={bounce:Xz,slide:Yz,zoom:Bz,flip:qz},Oz=(Z)=>{let U={...Z,type:Z.alertType,transition:Z.transition?Kz[Z.transition]:void 0,position:Z.position??"bottom-right",autoClose:Z.autoClose??3000,style:{backgroundColor:"black",...Z.sx}};Qz(Z.message,U)},Fz=(Z)=>{console.log("Log event",Z)},Iz=(Z)=>{if(typeof window>"u"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(Z.title,{body:Z.message??Z.subtitle,icon:Z.icon,silent:Z.silent})}catch(z){console.error("[IOEventsCard] Failed to show notification",z)}},$=window.Notification.permission;if($==="granted"){U();return}if($==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((z)=>{if(z==="granted")U()})},Mz=({data:Z})=>{let{useCentrifugeSupport:U,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:H}=Z,T=_z(b),J=Dz(T);J.current=T;let X=Vz(()=>({alert:Oz,log:Fz,push:Iz,redirect:(G)=>{if(G.to){let Y=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()},reload:(G)=>{if(G.to){let Y=G.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()}}),[]);return jZ(Pz,{children:jZ(A,{card:"IOEventsCard",data:Z,useCentrifugeSupport:U,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:H,methods:X,children:jZ(Wz,{})})})},MU=Mz;var Az=I({name:"IOEventsCard",component:MU,metadata:{author:"Swarm.ing"}});import{useEffect as PU,useState as wz}from"react";import{jsx as AU}from"react/jsx-runtime";var Nz=({data:Z})=>{let{name:U,key:$,value:z,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:J,centrifugeChannel:X}=Z,[G,Y]=wz(z);return PU(()=>{Y(z)},[z]),PU(()=>{if(typeof window>"u")return;sessionStorage.setItem($,G)},[$,G]),AU(A,{card:"SessionStorageCard",data:Z,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:J,centrifugeChannel:X,methods:{update:({value:_})=>{Y(_)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:AU("input",{type:"hidden",id:U,name:U,value:G})})},wU=Nz;var Lz=I({name:"SessionStorageCard",component:wU,metadata:{author:"PieData"}});import{useEffect as NU,useState as Rz}from"react";import{jsx as LU}from"react/jsx-runtime";var jz=({data:Z})=>{let{name:U,key:$,value:z,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:J,centrifugeChannel:X}=Z,[G,Y]=Rz(z);return NU(()=>{Y(z)},[z]),NU(()=>{if(typeof window>"u")return;localStorage.setItem($,G)},[$,G]),LU(A,{card:"DeviceStorageCard",data:Z,useSocketioSupport:H,useCentrifugeSupport:T,useMittSupport:J,centrifugeChannel:X,methods:{update:({value:_})=>{Y(_)},remove:()=>{localStorage.removeItem($),Y("")}},children:LU("input",{type:"hidden",id:U,name:U,value:G})})},RU=jz;var Ez=I({name:"DeviceStorageCard",component:RU,metadata:{author:"PieData"}});import{useCallback as EZ,useContext as CZ,useEffect as Cz,useRef as yz,useState as jU}from"react";import{jsx as EU}from"react/jsx-runtime";var xz=({data:Z,content:U})=>{let{useLoader:$,noReturn:z,returnType:H,useSocketioSupport:T,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G}=Z,Y=CZ(E),_=CZ(C)??R,[q,V]=jU(!1),[B,W]=jU(null),D=yz(U),O=CZ(g),P=EZ((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)D.current=Q;if(!z)W(Q)},[z]),w=EZ((Q)=>{D.current=Q.content,W(Q.content)},[]),K=EZ((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)for(let F of Q)O?.emit(F.name,F.data)},[z,O]);if(Cz(()=>{W(U),V(!1)},[U]),!B&&$)return Y;return EU(A,{card:"AjaxGroupCard",data:Z,methods:{changeContent:w},useSocketioSupport:T,useCentrifugeSupport:J,useMittSupport:X,centrifugeChannel:G,children:EU(_,{uiConfig:B??D.current,setUiAjaxConfiguration:H==="events"?K:P})})},CU=xz;var fz=I({name:"AjaxGroupCard",component:CU,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as yU}from"react";import{jsx as yZ}from"react/jsx-runtime";var bz=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:z,url:H,sx:T}=Z,J=yU(b),X=yU(C)??R;return yZ(A,{card:z,data:Z,children:yZ("div",{style:T,id:z,onClick:(Y)=>{if(H)if(Y.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else J?.(H)},children:yZ(X,{setUiAjaxConfiguration:$,uiConfig:U})})})},xU=bz;var kz=I({name:"BoxCard",component:xU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Sz}from"react";import{jsx as xZ}from"react/jsx-runtime";var mz=({data:Z,content:U,setUiAjaxConfiguration:$})=>{let{name:z,sx:H}=Z,T=Sz(C)??R;return xZ(A,{card:z,data:Z,children:xZ("div",{style:H,id:z,children:U.map((J,X)=>{return xZ(T,{uiConfig:J,setUiAjaxConfiguration:$},`children-${X}`)})})})},fU=mz;var vz=I({name:"OneOfCard",component:fU,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as ZZ}from"react";import{QueryClient as iz,QueryClientProvider as rz,useQuery as az}from"@tanstack/react-query";import{useContext as pz,useEffect as uz,useRef as fZ}from"react";import{useEffect as hz,useState as gz}from"react";var qZ=new Map,QZ=new Map;function WZ(Z,U){let $=`${Z}::${U}`,z=Z?qZ.get($):void 0,[H,T]=gz(z??null);return hz(()=>{if(!Z)return;if(qZ.has($)){T(qZ.get($));return}let J=QZ.get($);if(!J)J=fetch(Z+`api/support/${U}`,{method:"GET"}).then((G)=>G.json()).then((G)=>{return qZ.set($,G),QZ.delete($),G}).catch((G)=>{throw QZ.delete($),G}),QZ.set($,J);let X=!1;return J.then((G)=>{if(!X)T(G)}).catch(()=>{}),()=>{X=!0}},[Z,U,$]),H}function i(Z,U){if(U==="up")return{state:"up",signal:Z==="down"?"restored":null};return{state:"down",signal:Z==="up"?"lost":null}}var dz=({children:Z})=>{let U=pz(h),$=$Z(),z=WZ($,"socketIO"),H=a(),T=n(),J=fZ(H);J.current=H;let X=fZ(T);X.current=T;let G=fZ("initial"),Y=(_)=>{if(N.isClient())N.setSid(_.sid),nZ(),console.log(`SocketIO initialized: ${N.readSid()}`)};return uz(()=>{if(!U||!z)return;let _=()=>{let{state:V,signal:B}=i(G.current,"up");if(G.current=V,B==="restored")X.current?.("socketio");console.log("SocketIO connected")},q=(V)=>{if(console.log(`SocketIO disconnected: ${V}`),U.connect(),V==="io client disconnect")return;let{state:B,signal:W}=i(G.current,"down");if(G.current=B,W==="lost")J.current?.("socketio",V)};return U.on("pieinit",Y),U.on("connect",_),U.on("disconnect",q),U.connect(),()=>{U.off("pieinit",Y),U.off("connect",_),U.off("disconnect",q),U.disconnect()}},[U,z]),Z},_Z=dz;import{useContext as cz,useEffect as lz,useRef as bZ}from"react";var oz=({children:Z})=>{let U=cz(v),$=$Z(),z=WZ($,"centrifuge"),H=a(),T=n(),J=bZ(H);J.current=H;let X=bZ(T);X.current=T;let G=bZ("initial");return lz(()=>{if(!U||!z)return;let Y=(V)=>{let{state:B,signal:W}=i(G.current,"down");if(G.current=B,W==="lost")J.current?.("centrifuge",V)},_=()=>{let{state:V,signal:B}=i(G.current,"up");if(G.current=V,B==="restored")X.current?.("centrifuge");console.log("Centrifuge connected")},q=(V)=>{console.log("Centrifuge disconnected:",V),Y(V)};return U.on("connecting",Y),U.on("connected",_),U.on("disconnected",q),U.connect(),()=>{U.off("connecting",Y),U.off("connected",_),U.off("disconnected",q),U.disconnect()}},[U,z]),Z},VZ=oz;import{createAxiosDateTransformer as nz}from"axios-date-transformer";import{jsx as sz}from"react/jsx-runtime";function bU(Z,U,$){if(!U)return $;let z=Z.replace(/^\//,""),H=U[z];if(!H)return $;return sz(wZ,{uiConfig:H})}import{jsx as L,Fragment as ZH}from"react/jsx-runtime";var tz=({location:Z,fallback:U,piecache:$,onError:z,queryOptions:H,disableGlobalForm:T})=>{let J=r(),X=zZ(),G=m(),Y=ZZ(()=>nz({baseURL:J||""}),[J]),_=ZZ(()=>o(),[]),q=ZZ(()=>J?TZ(J):null,[J]),V=ZZ(()=>J?HZ(J,X):null,[J,X]),{data:B,isLoading:W,error:D}=az({queryKey:["uiConfig",Z.pathname+Z.search,J],enabled:!!J,queryFn:async()=>{let P=new URLSearchParams(Z.search);P.set("__pieroot","web");let w="/api/content"+Z.pathname+"?"+P.toString();if(G)console.log("[PieRoot] Fetching UI configuration from:",w);let K=await Y.get(w,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(G)console.log("[PieRoot] Received UI configuration:",K.data);return K.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(P)=>Math.min(1000*2**P,30000),...H}),O=bU(Z.pathname,$,U);if(!J)return O??null;if(G)console.log("[PieRoot] Rendering with location:",Z),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",X),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!$);if(D){if(G)console.error("[PieRoot] Error fetching UI configuration:",D),console.error("[PieRoot] Error details:",{message:D.message,status:D.response?.status,data:D.response?.data});return z?.(D),O}if(W||!B){if(G)console.log("[PieRoot] Loading state:",{isLoading:W,hasUiConfiguration:!!B});return O}if(G)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L(g.Provider,{value:_,children:L(h.Provider,{value:q,children:L(v.Provider,{value:V,children:L(E.Provider,{value:U??L(ZH,{}),children:L(_Z,{children:L(VZ,{children:T?L(R,{uiConfig:B}):L("form",{id:"piedata_global_form",action:J+"api/process"+Z.pathname,method:"post",encType:"multipart/form-data",children:L(R,{uiConfig:B})})})})})})})})},ez=(Z)=>{let U=ZZ(()=>new iz,[]),$=Z.queryClient??U;return L(b.Provider,{value:Z.onNavigate,children:L(l.Provider,{value:Z.config,children:L(u.Provider,{value:Z.onError,children:L(rz,{client:$,children:L(tz,{...Z})})})})})},kZ=ez;import{useMemo as SZ,useState as UH}from"react";import{QueryClient as $H,QueryClientProvider as zH}from"@tanstack/react-query";import{jsx as y,Fragment as JH}from"react/jsx-runtime";var HH=({location:Z,fallback:U,children:$,disableGlobalForm:z})=>{let H=r(),T=zZ(),J=m(),X=SZ(()=>o(),[]),G=SZ(()=>H?TZ(H):null,[H]),Y=SZ(()=>H?HZ(H,T):null,[H,T]);if(J)console.log("[PieRoot] Rendering with location:",Z),console.log("[PieRoot] API_SERVER:",H),console.log("[PieRoot] CENTRIFUGE_SERVER:",T),console.log("[PieRoot] Fallback provided:",!!U);return y(g.Provider,{value:X,children:y(h.Provider,{value:G,children:y(v.Provider,{value:Y,children:y(E.Provider,{value:U??y(JH,{}),children:y(_Z,{children:y(VZ,{children:z?$:y("form",{id:"piedata_global_form",action:H+"api/process"+Z.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},TH=(Z)=>{let[U]=UH(()=>new $H),$=Z.queryClient??U;return y(b.Provider,{value:Z.onNavigate,children:y(l.Provider,{value:Z.config,children:y(u.Provider,{value:Z.onError,children:y(zH,{client:$,children:y(HH,{...Z})})})})})},GH=TH;import{useMemo as XH}from"react";import{jsx as kU}from"react/jsx-runtime";var YH=kU("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),BH=({apiServer:Z,pathname:U="/",search:$="",centrifugeServer:z,fallback:H,enableRenderingLog:T=!1})=>{let J=Z??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",X=XH(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:T,pageProcessor:"web"}),[J,z,T]);return kU(kZ,{location:{pathname:U,search:$},config:X,fallback:H??YH,onNavigate:(Y)=>{if(typeof window<"u")window.history.pushState(null,"",Y)}})},qH=BH;import{clsx as QH}from"clsx";import{twMerge as WH}from"tailwind-merge";function _H(...Z){return WH(QH(Z))}var VH=()=>{N.submitGlobalForm()};var DH=(Z,U)=>`${Z}${OZ}${U}`;export{aU as usePieEmit,n as useOnLinkRestored,a as useOnLinkLost,G$ as useAjaxSubmits,J$ as useAjaxSubmit,V$ as unregisterComponent,PZ as trackLazy,VH as submitGlobalForm,f as registry,I as registerPieComponent,_$ as registerMultipleComponents,$U as readAjaxKeyAsync,UU as readAjaxKey,YU as preloadComponent,I$ as prefetchLazyComponents,DH as pieName,GZ as parseDepName,D$ as hasComponent,F$ as getRegistrySize,e as getRegistryEntry,XU as getLazyComponentNames,o as getEmitter,K$ as getComponentMeta,O$ as getAllRegisteredComponents,HU as discoverAjaxEndpoints,_H as cn,p$ as UnionCard,C as UIRendererContext,wZ as UILoading,R as UI,h as SocketIOContext,Lz as SessionStorageCard,v$ as SequenceCard,kZ as PieRoot,qH as PiePreviewRoot,l as PieConfigContext,A as PieCard,GH as PieBaseRoot,OZ as PIEBREAK,vz as OneOfCard,g as MittContext,Az as IOEventsCard,Zz as HiddenCard,a$ as HTMLEmbedCard,E as FallbackContext,Ez as DeviceStorageCard,v as CentrifugeIOContext,kz as BoxCard,Gz as AutoRedirectCard,fz as AjaxGroupCard};
|