@swarm.ing/pieui 2.2.0 → 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 +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +2 -2
- package/dist/index.js +2 -2
- package/dist/max/index.esm.js +1 -1
- package/dist/max/index.js +1 -1
- 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/providers/CentrifugeIOInitProvider.d.ts.map +1 -1
- package/dist/providers/SocketIOInitProvider.d.ts.map +1 -1
- 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/tests/linkStatus.test.d.ts +2 -0
- package/dist/tests/linkStatus.test.d.ts.map +1 -0
- package/dist/types/index.d.ts +19 -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/dist/util/linkStatus.d.ts +33 -0
- package/dist/util/linkStatus.d.ts.map +1 -0
- package/dist/util/pieConfig.d.ts +11 -0
- package/dist/util/pieConfig.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 TU}from"react";import{createContext as NU,useContext as kU}from"react";var b=globalThis,X=(U,f)=>{let T=Symbol.for(U);if(!(T in b))b[T]=f();return b[T]};var yU=X("@swarm.ing/pieui:context:pieConfig",()=>NU(null)),jU=()=>{let U=kU(yU);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U};var N=()=>{let{enableRenderingLog:U}=jU();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 kI 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 y=gU;function fU(U){return U.wasRecovering===!0&&U.recovered===!1}function IU(U){return U.recoverable===!1}function oU(U,f,T){let o=U.getSubscription(f);if(o)return{subscription:o,createdHere:!1};return{subscription:U.newSubscription(f,T),createdHere:!0}}import{jsx as dU,jsxs as rU,Fragment as lU}from"react/jsx-runtime";var vU=({card:U,data:f,children:T,useSocketioSupport:o=!1,useCentrifugeSupport:z=!1,useMittSupport:I=!1,centrifugeChannel:Z=void 0,methods:O=void 0,stored:B=void 0,onResync:H=void 0})=>{let q=t(),P=TU(O);P.current=O;let Q=TU(H);if(Q.current=H,q)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:o,centrifuge:z,mitt:I,centrifugeChannel:Z}),console.log("[PieCard] Methods:",O?Object.keys(O):"none"),console.log("[PieCard] Has children:",!!T);let $=S(UU),L=S(e),w=S(y);if(g(()=>{if(!$||!o||!P.current||!f.name){if(q&&o)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!$,useSocketioSupport:o,hasMethods:!!P.current,hasDataName:!!f?.name});return}let K=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}`;if(q)console.log(`[PieCard] Socket.IO registering event: ${G}`);let A=(_)=>{P.current?.[J]?.(_)};return $.on(G,A),[G,A]});return()=>{K.forEach(([J,G])=>{if(q)console.log(`[PieCard] Socket.IO unregistering event: ${J}`);$.off(J,G)})}},[$,f.name,o]),g(()=>{if(!L||!z||!Z||!f.name){if(q&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!P.current,hasDataName:!!f?.name});return}let K=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}_${Z}`;if(q)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let{subscription:A,createdHere:_}=oU(L,G,{recoverable:!0,positioned:!0}),s=(E)=>{if(q)console.log(`[PieCard] Centrifuge received data on ${G}:`,E.data);P.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(q)console.log(`[PieCard] Centrifuge recovery gap on ${G}; requesting resync`);Q.current?.({channel:G,reason:"gap"})}};return A.on("publication",s),A.on("subscribed",a),A.subscribe(),{subscription:A,createdHere:_,onPublication:s,onSubscribed:a}});return()=>{K.forEach(({subscription:J,createdHere:G,onPublication:A,onSubscribed:_})=>{if(q)console.log("[PieCard] Centrifuge unsubscribing from channel");if(J.off("publication",A),J.off("subscribed",_),G)J.unsubscribe(),L.removeSubscription(J)})}},[L,Z,f.name,z]),g(()=>{if(!w||!I||!f.name){if(q&&I)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:I,hasMethods:!!P.current,hasDataName:!!f?.name});return}let V=Object.keys(P.current??{}),K={};return V.forEach((J)=>{let G=`pie${J}_${f.name}`,A=(_)=>{if(q)console.log(`[PieCard] Mitt registering event: ${G}`);P.current?.[J]?.(_)};K[G]=A,w.on(G,A)}),()=>{Object.entries(K).forEach(([J,G])=>{if(q)console.log(`[PieCard] Mitt unregistering event: ${J}`);w.off(J,G)})}},[w,f.name,I]),q)console.log("[PieCard] Rendering complete, returning children");if(B!==void 0)return rU(lU,{children:[dU("input",{type:"hidden",name:f.name,value:JSON.stringify(B)}),T]});return T},D=vU;import{lazy as uU}from"react";var k=new Map;function cU(U,f){return f.catch(()=>{if(k.get(U)===f)k.delete(U)}),k.set(U,f),f}function zU(U,f){return uU(()=>{if(k.has(f))return k.get(f);return cU(f,U().then((T)=>T))})}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 j=(U)=>{return ZU.get(U)};import{useContext as LU,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,{}))),C=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 Tf}from"react/jsx-runtime";var If=2,of=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=of*(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 Tf(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 T=LU(C),o=LU(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=j(U.card);if(!I?.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:I.name,isLazy:I.isLazy,hasMetadata:!!I.metadata});let Z=I.component,O=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,{}):T,onError:o,children:O})}if(z)console.log("[UI] Rendering component directly:",I.name);return O}var W=zf(Zf);import{useContext as OU}from"react";import{createContext as Lf}from"react";var Of=X("@swarm.ing/pieui:context:uiRenderer",()=>Lf(null)),Y=Of;import{jsx as p}from"react/jsx-runtime";function PU({uiConfig:U,setUiAjaxConfiguration:f}){let T=OU(C),o=OU(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=j(U.card);if(!I?.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: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 B=I.fallback;return p(B,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",I.name);let Z=I.component,O=p(Y.Provider,{value:PU,children:p(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f})});if(I.isLazy)return p(M,{name:I.name,fallback:T,onError:o,children:O});return O}var Pf=PU;import{useContext as Af}from"react";import{jsx as l}from"react/jsx-runtime";var Bf=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o,sx:z}=U,I=Af(Y)??W;return l(D,{card:o,data:U,children:l("div",{style:z,id:o,children:f.map((Z,O)=>{return l(I,{uiConfig:Z,setUiAjaxConfiguration:T},`children-${O}`)})})})},AU=Bf;var Hf=F({name:"SequenceCard",component:AU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as $f}from"react";import{jsx as BU}from"react/jsx-runtime";var qf=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o}=U,z=$f(Y)??W;return BU(D,{card:o,data:U,children:f.map((I,Z)=>{return BU(z,{uiConfig:I,setUiAjaxConfiguration:T},`children-${Z}`)})})},HU=qf;var Gf=F({name:"UnionCard",component:HU,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(),T=f.connect(U.createMediaStreamDestination());f.start();let o=T.stream.getAudioTracks()[0];return o.enabled=!1,o}function r(U=null,f){let[T,o]=Ff(!1),z=d(null),I=d(null),Z=d(null),O=x(async(P,Q=!0)=>{if(z.current)B();let $=new RTCPeerConnection;if($.onconnectionstatechange=()=>{if($.connectionState==="connected")o(!0);else if(["disconnected","failed","closed"].includes($.connectionState))o(!1)},$.ontrack=(A)=>{if(U)U.srcObject=A.streams[0]},Q){let A=await navigator.mediaDevices.getUserMedia({audio:!0});$.addTrack(A.getTracks()[0],A)}else{let A=Df();$.addTrack(A)}let L=$.createDataChannel("oai-events");I.current=L,Z.current=new Promise((A)=>{L.addEventListener("open",()=>{A()})});let w=await $.createOffer();await $.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 ${P}`,"Content-Type":"application/sdp"}})).text();await $.setRemoteDescription({type:"answer",sdp:G}),z.current=$,await Z.current},[U]),B=x(()=>{let P=I.current;if(P)P.close();z.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),z.current?.close(),o(!1),z.current=null,I.current=null,Z.current=null},[U]),H=x((P)=>{let Q=I.current;if(!Q){console.error("Data channel is not ready",P);return}let $=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),Q.send(JSON.stringify(P)),!P.timestamp)P.timestamp=$;f?.(P)},[f,U]),q=x((P)=>{if(!I.current){console.error("Data channel is not ready");return}let $=()=>{H({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),H({type:"response.create"})};if(Z.current)Z.current.then($);else $()},[f,U]);return Jf(()=>{let P=I.current;if(!P)return;let Q=($)=>{let L=JSON.parse($.data);if(!L.timestamp)L.timestamp=new Date().toLocaleTimeString();f?.(L)};return P.addEventListener("message",Q),()=>{P.removeEventListener("message",Q)}},[f,U]),{isSessionActive:T,startSession:O,stopSession:B,sendTextMessage:q}}import{jsx as Wf}from"react/jsx-runtime";var Yf=({data:U})=>{let{html:f,useSocketioSupport:T,useCentrifugeSupport:o,useMittSupport:z,centrifugeChannel:I}=U,[Z,O]=Xf(f),{isSessionActive:B,startSession:H,sendTextMessage:q}=r(null,(L)=>{if(console.log(L.type,L.type==="response.output_text.delta"&&L.delta),L.type==="response.output_text.delta"&&L.delta)O((w)=>w+L.delta)});return Qf(()=>{O(f)},[f]),Wf(D,{card:"HTMLEmbedCard",data:U,methods:{update:(L)=>{O(L.value)},generateUsingAI:async(L)=>{try{if(!B&&L.token)await H(L.token,!1);q(L.prompt)}catch(w){console.error("Failed to generate using AI",w)}},initializeAI:async(L)=>{if(!B&&L.token)await H(L.token,!1)}},useCentrifugeSupport:o,useSocketioSupport:T,useMittSupport:z,centrifugeChannel:I,children:wf(Z)})},$U=Yf;var _f=F({name:"HTMLEmbedCard",component:$U,metadata:{author:"Swarm.ing"}});import{useEffect as Kf,useState as Cf}from"react";import{jsx as qU}from"react/jsx-runtime";var Vf=({data:U})=>{let{name:f,value:T,useSocketioSupport:o,useCentrifugeSupport:z,useMittSupport:I,centrifugeChannel:Z}=U,[O,B]=Cf(T);return Kf(()=>{B(T)},[T]),qU(D,{card:"HiddenCard",data:U,useSocketioSupport:o,useCentrifugeSupport:z,useMittSupport:I,centrifugeChannel:Z,methods:{update:({value:H})=>{B(H)}},children:qU("input",{type:"hidden",id:f,name:f,value:O})})},GU=Vf;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 jf,Fragment as yf}from"react/jsx-runtime";var kf=({data:U})=>{let{url:f}=U,T=JU(R),o=JU(C);return Nf(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(f))window.location.href=f;else T?.(f)},[f,T]),jf(yf,{children:o})},FU=kf;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(o){console.error("[IOEventsCard] Failed to show notification",o)}},T=window.Notification.permission;if(T==="granted"){f();return}if(T==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((o)=>{if(o==="granted")f()})},sf=({data:U})=>{let{useCentrifugeSupport:f,useSocketioSupport:T,useMittSupport:o,centrifugeChannel:z}=U,I=lf(R),Z=rf(I);Z.current=I;let O=df(()=>({alert:cf,log:hf,push:nf,redirect:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()},reload:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()}}),[]);return u(af,{children:u(D,{card:"IOEventsCard",data:U,useCentrifugeSupport:f,useSocketioSupport:T,useMittSupport:o,centrifugeChannel:z,methods:O,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:T,value:o,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=ef(o);return QU(()=>{H(o)},[o]),QU(()=>{if(typeof window>"u")return;sessionStorage.setItem(T,B)},[T,B]),XU(D,{card:"SessionStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{sessionStorage.removeItem(T),H("")}},children:XU("input",{type:"hidden",id:f,name:f,value:B})})},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 oI=({data:U})=>{let{name:f,key:T,value:o,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=II(o);return YU(()=>{H(o)},[o]),YU(()=>{if(typeof window>"u")return;localStorage.setItem(T,B)},[T,B]),WU(D,{card:"DeviceStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:I,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{localStorage.removeItem(T),H("")}},children:WU("input",{type:"hidden",id:f,name:f,value:B})})},_U=oI;var TI=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 CU}from"react/jsx-runtime";var LI=({data:U,content:f})=>{let{useLoader:T,noReturn:o,returnType:z,useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B}=U,H=h(C),q=h(Y)??W,[P,Q]=KU(!1),[$,L]=KU(null),w=ZI(f),V=h(y),K=c((A)=>{if(A===null)Q(!0);else if(Q(!1),!o)w.current=A;if(!o)L(A)},[o]),J=c((A)=>{w.current=A.content,L(A.content)},[]),G=c((A)=>{if(A===null)Q(!0);else if(Q(!1),!o)for(let _ of A)V?.emit(_.name,_.data)},[o,V]);if(zI(()=>{L(f),Q(!1)},[f]),!$&&T)return H;return CU(D,{card:"AjaxGroupCard",data:U,methods:{changeContent:J},useSocketioSupport:I,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B,children:CU(q,{uiConfig:$??w.current,setUiAjaxConfiguration:z==="events"?G:K})})},VU=LI;var OI=F({name:"AjaxGroupCard",component:VU,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 PI=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o,url:z,sx:I}=U,Z=MU(R),O=MU(Y)??W;return i(D,{card:o,data:U,children:i("div",{style:I,id:o,onClick:(H)=>{if(z)if(H.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else Z?.(z)},children:i(O,{setUiAjaxConfiguration:T,uiConfig:f})})})},RU=PI;var AI=F({name:"BoxCard",component:RU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as BI}from"react";import{jsx as n}from"react/jsx-runtime";var HI=({data:U,content:f,setUiAjaxConfiguration:T})=>{let{name:o,sx:z}=U,I=BI(Y)??W;return n(D,{card:o,data:U,children:n("div",{style:z,id:o,children:f.map((Z,O)=>{return n(I,{uiConfig:Z,setUiAjaxConfiguration:T},`children-${O}`)})})})},EU=HI;var $I=F({name:"OneOfCard",component:EU,metadata:{author:"Swarm.ing",description:"Different variants"}});export{Gf as UnionCard,Pf as UILoading,W as UI,fI as SessionStorageCard,Hf as SequenceCard,D as PieCard,$I as OneOfCard,tf as IOEventsCard,Mf as HiddenCard,_f as HTMLEmbedCard,TI as DeviceStorageCard,AI as BoxCard,mf as AutoRedirectCard,OI 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 $f=Object.create;var{getPrototypeOf:qf,defineProperty:b,getOwnPropertyNames:QU,getOwnPropertyDescriptor:Gf}=Object,XU=Object.prototype.hasOwnProperty;var wU=(U,f,o)=>{o=U!=null?$f(qf(U)):{};let I=f||!U||!U.__esModule?b(o,"default",{value:U,enumerable:!0}):o;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),o;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:!(o=Gf(U,I))||o.enumerable}));return DU.set(U,f),f};var Ff=(U,f)=>{for(var o in f)b(U,o,{get:f[o],enumerable:!0,configurable:!0,set:(I)=>f[o]=()=>I})};var ef={};Ff(ef,{UnionCard:()=>rU,UILoading:()=>bU,UI:()=>_,SessionStorageCard:()=>of,SequenceCard:()=>vU,PieCard:()=>F,OneOfCard:()=>Hf,IOEventsCard:()=>ff,HiddenCard:()=>sU,HTMLEmbedCard:()=>iU,DeviceStorageCard:()=>zf,BoxCard:()=>Pf,AutoRedirectCard:()=>eU,AjaxGroupCard:()=>Lf});module.exports=Jf(ef);var C=require("react");var c=require("react");var LU=globalThis,X=(U,f)=>{let o=Symbol.for(U);if(!(o in LU))LU[o]=f();return LU[o]};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 PI=X("@swarm.ing/pieui:socket-cache",()=>new Map);var Wf=X("@swarm.ing/pieui:context:socket",()=>KU.createContext(null)),CU=Wf;var _f=wU(require("mitt")),h=require("react");var Kf=X("@swarm.ing/pieui:context:mitt",()=>h.createContext(null));var i=Kf;function VU(U){return U.wasRecovering===!0&&U.recovered===!1}function MU(U){return U.recoverable===!1}function RU(U,f,o){let I=U.getSubscription(f);if(I)return{subscription:I,createdHere:!1};return{subscription:U.newSubscription(f,o),createdHere:!0}}var k=require("react/jsx-runtime"),Cf=({card:U,data:f,children:o,useSocketioSupport:I=!1,useCentrifugeSupport:z=!1,useMittSupport:T=!1,centrifugeChannel:Z=void 0,methods:O=void 0,stored:B=void 0,onResync:H=void 0})=>{let q=YU(),P=C.useRef(O);P.current=O;let Q=C.useRef(H);if(Q.current=H,q)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:T,centrifugeChannel:Z}),console.log("[PieCard] Methods:",O?Object.keys(O):"none"),console.log("[PieCard] Has children:",!!o);let $=C.useContext(CU),L=C.useContext(_U),w=C.useContext(i);if(C.useEffect(()=>{if(!$||!I||!P.current||!f.name){if(q&&I)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!$,useSocketioSupport:I,hasMethods:!!P.current,hasDataName:!!f?.name});return}let M=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}`;if(q)console.log(`[PieCard] Socket.IO registering event: ${G}`);let A=(V)=>{P.current?.[J]?.(V)};return $.on(G,A),[G,A]});return()=>{M.forEach(([J,G])=>{if(q)console.log(`[PieCard] Socket.IO unregistering event: ${J}`);$.off(J,G)})}},[$,f.name,I]),C.useEffect(()=>{if(!L||!z||!Z||!f.name){if(q&&z)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!L,useCentrifugeSupport:z,hasCentrifugeChannel:!!Z,hasMethods:!!P.current,hasDataName:!!f?.name});return}let M=Object.keys(P.current??{}).map((J)=>{let G=`pie${J}_${f.name}_${Z}`;if(q)console.log(`[PieCard] Centrifuge subscribing to channel: ${G}`);let{subscription:A,createdHere:V}=RU(L,G,{recoverable:!0,positioned:!0}),JU=(x)=>{if(q)console.log(`[PieCard] Centrifuge received data on ${G}:`,x.data);P.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(VU(x)){if(q)console.log(`[PieCard] Centrifuge recovery gap on ${G}; requesting resync`);Q.current?.({channel:G,reason:"gap"})}};return A.on("publication",JU),A.on("subscribed",FU),A.subscribe(),{subscription:A,createdHere:V,onPublication:JU,onSubscribed:FU}});return()=>{M.forEach(({subscription:J,createdHere:G,onPublication:A,onSubscribed:V})=>{if(q)console.log("[PieCard] Centrifuge unsubscribing from channel");if(J.off("publication",A),J.off("subscribed",V),G)J.unsubscribe(),L.removeSubscription(J)})}},[L,Z,f.name,z]),C.useEffect(()=>{if(!w||!T||!f.name){if(q&&T)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!w,useMittSupport:T,hasMethods:!!P.current,hasDataName:!!f?.name});return}let N=Object.keys(P.current??{}),M={};return N.forEach((J)=>{let G=`pie${J}_${f.name}`,A=(V)=>{if(q)console.log(`[PieCard] Mitt registering event: ${G}`);P.current?.[J]?.(V)};M[G]=A,w.on(G,A)}),()=>{Object.entries(M).forEach(([J,G])=>{if(q)console.log(`[PieCard] Mitt unregistering event: ${J}`);w.off(J,G)})}},[w,f.name,T]),q)console.log("[PieCard] Rendering complete, returning children");if(B!==void 0)return k.jsxs(k.Fragment,{children:[k.jsx("input",{type:"hidden",name:f.name,value:JSON.stringify(B)}),o]});return o},F=Cf;var EU=require("react"),g=new Map;function Vf(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 Vf(f,U().then((o)=>o))})}var kU=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 kU.set(f.name,f),f.component}var n=(U)=>{return kU.get(U)};var v=require("react");var yU=require("react");var s=require("react/jsx-runtime"),Rf=X("@swarm.ing/pieui:context:fallback",()=>yU.createContext(s.jsx(s.Fragment,{}))),R=Rf;var jU=require("react");var Ef=X("@swarm.ing/pieui:context:lazyError",()=>jU.createContext(void 0)),a=Ef;var t=require("react"),mU=require("react/jsx-runtime"),Nf=2,kf=400;class y 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=kf*(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 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 yf({uiConfig:U,setUiAjaxConfiguration:f}){let o=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 T=n(U.card);if(!T?.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:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata});let Z=T.component,O=e.jsx(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f});if(T.isLazy){if(z)console.log("[UI] Rendering lazy component with Suspense:",T.name);return e.jsx(y,{name:T.name,fallback:T.fallback?e.jsx(T.fallback,{}):o,onError:I,children:O})}if(z)console.log("[UI] Rendering component directly:",T.name);return O}var _=v.memo(yf);var OU=require("react");var pU=require("react");var jf=X("@swarm.ing/pieui:context:uiRenderer",()=>pU.createContext(null)),K=jf;var l=require("react/jsx-runtime");function xU({uiConfig:U,setUiAjaxConfiguration:f}){let o=OU.useContext(R),I=OU.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 T=n(U.card);if(!T?.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:T.name,isLazy:T.isLazy,hasMetadata:!!T.metadata,hasFallback:!!T.fallback});if(T.fallback){if(z)console.log("[UILoading] Rendering fallback for:",T.name);let B=T.fallback;return l.jsx(B,{})}if(z)console.log("[UILoading] No fallback, rendering full component:",T.name);let Z=T.component,O=l.jsx(K.Provider,{value:xU,children:l.jsx(Z,{data:U.data,content:U.content,setUiAjaxConfiguration:f})});if(T.isLazy)return l.jsx(y,{name:T.name,fallback:o,onError:I,children:O});return O}var bU=xU;var SU=require("react");var UU=require("react/jsx-runtime"),mf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I,sx:z}=U,T=SU.useContext(K)??_;return UU.jsx(F,{card:I,data:U,children:UU.jsx("div",{style:z,id:I,children:f.map((Z,O)=>{return UU.jsx(T,{uiConfig:Z,setUiAjaxConfiguration:o},`children-${O}`)})})})},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 PU=require("react/jsx-runtime"),pf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I}=U,z=lU.useContext(K)??_;return PU.jsx(F,{card:I,data:U,children:f.map((T,Z)=>{return PU.jsx(z,{uiConfig:T,setUiAjaxConfiguration:o},`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(),o=f.connect(U.createMediaStreamDestination());f.start();let I=o.stream.getAudioTracks()[0];return I.enabled=!1,I}function AU(U=null,f){let[o,I]=W.useState(!1),z=W.useRef(null),T=W.useRef(null),Z=W.useRef(null),O=W.useCallback(async(P,Q=!0)=>{if(z.current)B();let $=new RTCPeerConnection;if($.onconnectionstatechange=()=>{if($.connectionState==="connected")I(!0);else if(["disconnected","failed","closed"].includes($.connectionState))I(!1)},$.ontrack=(A)=>{if(U)U.srcObject=A.streams[0]},Q){let A=await navigator.mediaDevices.getUserMedia({audio:!0});$.addTrack(A.getTracks()[0],A)}else{let A=xf();$.addTrack(A)}let L=$.createDataChannel("oai-events");T.current=L,Z.current=new Promise((A)=>{L.addEventListener("open",()=>{A()})});let w=await $.createOffer();await $.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 ${P}`,"Content-Type":"application/sdp"}})).text();await $.setRemoteDescription({type:"answer",sdp:G}),z.current=$,await Z.current},[U]),B=W.useCallback(()=>{let P=T.current;if(P)P.close();z.current?.getSenders()?.forEach((Q)=>Q.track?.stop()),z.current?.close(),I(!1),z.current=null,T.current=null,Z.current=null},[U]),H=W.useCallback((P)=>{let Q=T.current;if(!Q){console.error("Data channel is not ready",P);return}let $=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),Q.send(JSON.stringify(P)),!P.timestamp)P.timestamp=$;f?.(P)},[f,U]),q=W.useCallback((P)=>{if(!T.current){console.error("Data channel is not ready");return}let $=()=>{H({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),H({type:"response.create"})};if(Z.current)Z.current.then($);else $()},[f,U]);return W.useEffect(()=>{let P=T.current;if(!P)return;let Q=($)=>{let L=JSON.parse($.data);if(!L.timestamp)L.timestamp=new Date().toLocaleTimeString();f?.(L)};return P.addEventListener("message",Q),()=>{P.removeEventListener("message",Q)}},[f,U]),{isSessionActive:o,startSession:O,stopSession:B,sendTextMessage:q}}var hU=require("react/jsx-runtime"),bf=({data:U})=>{let{html:f,useSocketioSupport:o,useCentrifugeSupport:I,useMittSupport:z,centrifugeChannel:T}=U,[Z,O]=fU.useState(f),{isSessionActive:B,startSession:H,sendTextMessage:q}=AU(null,(L)=>{if(console.log(L.type,L.type==="response.output_text.delta"&&L.delta),L.type==="response.output_text.delta"&&L.delta)O((w)=>w+L.delta)});return fU.useEffect(()=>{O(f)},[f]),hU.jsx(F,{card:"HTMLEmbedCard",data:U,methods:{update:(L)=>{O(L.value)},generateUsingAI:async(L)=>{try{if(!B&&L.token)await H(L.token,!1);q(L.prompt)}catch(w){console.error("Failed to generate using AI",w)}},initializeAI:async(L)=>{if(!B&&L.token)await H(L.token,!1)}},useCentrifugeSupport:I,useSocketioSupport:o,useMittSupport:z,centrifugeChannel:T,children:uU.default(Z)})},cU=bf;var iU=D({name:"HTMLEmbedCard",component:cU,metadata:{author:"Swarm.ing"}});var IU=require("react");var BU=require("react/jsx-runtime"),Sf=({data:U})=>{let{name:f,value:o,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:Z}=U,[O,B]=IU.useState(o);return IU.useEffect(()=>{B(o)},[o]),BU.jsx(F,{card:"HiddenCard",data:U,useSocketioSupport:I,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:Z,methods:{update:({value:H})=>{B(H)}},children:BU.jsx("input",{type:"hidden",id:f,name:f,value:O})})},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)),j=gf;var oU=require("react/jsx-runtime"),vf=({data:U})=>{let{url:f}=U,o=d.useContext(j),I=d.useContext(R);return d.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(f))window.location.href=f;else o?.(f)},[f,o]),oU.jsx(oU.Fragment,{children:I})},tU=vf;var eU=D({name:"AutoRedirectCard",component:tU,metadata:{author:"Swarm.ing"}});var E=require("react-toastify"),TU=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}};TU.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)}},o=window.Notification.permission;if(o==="granted"){f();return}if(o==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((I)=>{if(I==="granted")f()})},cf=({data:U})=>{let{useCentrifugeSupport:f,useSocketioSupport:o,useMittSupport:I,centrifugeChannel:z}=U,T=p.useContext(j),Z=p.useRef(T);Z.current=T;let O=p.useMemo(()=>({alert:df,log:rf,push:uf,redirect:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()},reload:(B)=>{if(B.to){let H=B.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(H))window.location.href=H;else Z.current?.(H)}else window.location.reload()}}),[]);return m.jsx(m.Fragment,{children:m.jsx(F,{card:"IOEventsCard",data:U,useCentrifugeSupport:f,useSocketioSupport:o,useMittSupport:I,centrifugeChannel:z,methods:O,children:m.jsx(TU.ToastContainer,{})})})},Uf=cf;var ff=D({name:"IOEventsCard",component:Uf,metadata:{author:"Swarm.ing"}});var r=require("react");var HU=require("react/jsx-runtime"),hf=({data:U})=>{let{name:f,key:o,value:I,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=r.useState(I);return r.useEffect(()=>{H(I)},[I]),r.useEffect(()=>{if(typeof window>"u")return;sessionStorage.setItem(o,B)},[o,B]),HU.jsx(F,{card:"SessionStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{sessionStorage.removeItem(o),H("")}},children:HU.jsx("input",{type:"hidden",id:f,name:f,value:B})})},If=hf;var of=D({name:"SessionStorageCard",component:If,metadata:{author:"PieData"}});var u=require("react");var $U=require("react/jsx-runtime"),nf=({data:U})=>{let{name:f,key:o,value:I,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O}=U,[B,H]=u.useState(I);return u.useEffect(()=>{H(I)},[I]),u.useEffect(()=>{if(typeof window>"u")return;localStorage.setItem(o,B)},[o,B]),$U.jsx(F,{card:"DeviceStorageCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:Z,centrifugeChannel:O,methods:{update:({value:q})=>{H(q)},remove:()=>{localStorage.removeItem(o),H("")}},children:$U.jsx("input",{type:"hidden",id:f,name:f,value:B})})},Tf=nf;var zf=D({name:"DeviceStorageCard",component:Tf,metadata:{author:"PieData"}});var Y=require("react");var qU=require("react/jsx-runtime"),sf=({data:U,content:f})=>{let{useLoader:o,noReturn:I,returnType:z,useSocketioSupport:T,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B}=U,H=Y.useContext(R),q=Y.useContext(K)??_,[P,Q]=Y.useState(!1),[$,L]=Y.useState(null),w=Y.useRef(f),N=Y.useContext(i),M=Y.useCallback((A)=>{if(A===null)Q(!0);else if(Q(!1),!I)w.current=A;if(!I)L(A)},[I]),J=Y.useCallback((A)=>{w.current=A.content,L(A.content)},[]),G=Y.useCallback((A)=>{if(A===null)Q(!0);else if(Q(!1),!I)for(let V of A)N?.emit(V.name,V.data)},[I,N]);if(Y.useEffect(()=>{L(f),Q(!1)},[f]),!$&&o)return H;return qU.jsx(F,{card:"AjaxGroupCard",data:U,methods:{changeContent:J},useSocketioSupport:T,useCentrifugeSupport:Z,useMittSupport:O,centrifugeChannel:B,children:qU.jsx(q,{uiConfig:$??w.current,setUiAjaxConfiguration:z==="events"?G:M})})},Zf=sf;var Lf=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:o})=>{let{name:I,url:z,sx:T}=U,Z=GU.useContext(j),O=GU.useContext(K)??_;return zU.jsx(F,{card:I,data:U,children:zU.jsx("div",{style:T,id:I,onClick:(H)=>{if(z)if(H.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(z))window.location.href=z;else Z?.(z)},children:zU.jsx(O,{setUiAjaxConfiguration:o,uiConfig:f})})})},Of=af;var Pf=D({name:"BoxCard",component:Of,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});var Af=require("react");var ZU=require("react/jsx-runtime"),tf=({data:U,content:f,setUiAjaxConfiguration:o})=>{let{name:I,sx:z}=U,T=Af.useContext(K)??_;return ZU.jsx(F,{card:I,data:U,children:ZU.jsx("div",{style:z,id:I,children:f.map((Z,O)=>{return ZU.jsx(T,{uiConfig:Z,setUiAjaxConfiguration:o},`children-${O}`)})})})},Bf=tf;var Hf=D({name:"OneOfCard",component:Bf,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
|
@@ -9,16 +9,16 @@ export type { PiePreviewRootProps } from './components/PiePreviewRoot';
|
|
|
9
9
|
export { default as PieCard } from './components/PieCard';
|
|
10
10
|
export { registerPieComponent, getAllRegisteredComponents, getRegistrySize, registry, hasComponent, getRegistryEntry, getComponentMeta, registerMultipleComponents, unregisterComponent, getLazyComponentNames, preloadComponent, prefetchLazyComponents, } from './util/registry';
|
|
11
11
|
export { trackLazy } from './util/lazy';
|
|
12
|
-
export type { PieComponentProps, PieSimpleComponentProps, PieComplexComponentProps, PieContainerComponentProps, PieComplexContainerComponentProps, InputPieSimpleComponentProps, InputPieComplexComponentProps, InputPieContainerComponentProps, InputPieComplexContainerComponentProps, PieConfig, UIConfigType, SetUiAjaxConfigurationType, } from './types';
|
|
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';
|
|
19
19
|
export { default as CentrifugeIOContext } from './util/centrifuge';
|
|
20
20
|
export { default as FallbackContext } from './util/fallback';
|
|
21
|
-
export { PieConfigContext } from './util/pieConfig';
|
|
21
|
+
export { PieConfigContext, useOnLinkLost, useOnLinkRestored, } from './util/pieConfig';
|
|
22
22
|
export { cn } from './util/tailwindCommonUtils';
|
|
23
23
|
export { PIEBREAK } from './util/pieConfig';
|
|
24
24
|
export { submitGlobalForm } from './util/globalForm.ts';
|
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,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 QU,useEffect as WU,useRef as pU}from"react";import{createContext as EZ,useContext as jZ}from"react";var qU=globalThis,A=(U,Z)=>{let $=Symbol.for(U);if(!($ in qU))qU[$]=Z();return qU[$]};var d=A("@swarm.ing/pieui:context:pieConfig",()=>EZ(null)),l=()=>{let U=jZ(d);if(!U)throw Error("usePieConfig must be used within PieConfigProvider");return U},i=()=>{let{apiServer:U}=l();return U},t=i,a=()=>{let{centrifugeServer:U}=l();return U};var k=()=>{let{enableRenderingLog:U}=l();return U},fU=k;var OU="__piedemo__";import{createContext as CZ}from"react";import{Centrifuge as xU}from"centrifuge";var kU=A("@swarm.ing/pieui:centrifuge-cache",()=>new Map),e=(U,Z)=>{if(!Z)return null;let $=`${U}::${Z}`,z=kU.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 xU.UnauthorizedError("Backend is not answering");throw Error(`Unexpected status code ${J.status}`)}return(await J.json()).token}let H=new xU(Z,{getToken:T});return kU.set($,H),H},fZ=A("@swarm.ing/pieui:context:centrifuge",()=>CZ(null)),y=fZ;import{io as xZ}from"socket.io-client";import{createContext as kZ}from"react";var yU=A("@swarm.ing/pieui:socket-cache",()=>new Map),UU=(U)=>{let Z=yU.get(U);if(Z)return Z;let $=xZ(U,{autoConnect:!1,transports:["websocket"]});return yU.set(U,$),$},yZ=A("@swarm.ing/pieui:context:socket",()=>kZ(null)),S=yZ;import SZ from"mitt";import{createContext as bZ,useCallback as vZ,useContext as mZ}from"react";function c(){return A("@swarm.ing/pieui:mitt-emitter",()=>SZ())}var SU=A("@swarm.ing/pieui:context:mitt",()=>bZ(null));function pZ(U){let Z=mZ(SU);return vZ(($,z)=>{(Z??c()).emit(`pie${$}_${U}`,z)},[U,Z])}var b=SU;function bU(U){return U.wasRecovering===!0&&U.recovered===!1}function vU(U){return U.recoverable===!1}function mU(U,Z,$){let z=U.getSubscription(Z);if(z)return{subscription:z,createdHere:!1};return{subscription:U.newSubscription(Z,$),createdHere:!0}}import{jsx as uZ,jsxs as dZ,Fragment as gZ}from"react/jsx-runtime";var hZ=({card:U,data:Z,children:$,useSocketioSupport:z=!1,useCentrifugeSupport:T=!1,useMittSupport:H=!1,centrifugeChannel:J=void 0,methods:G=void 0,stored:I=void 0,onResync:Y=void 0})=>{let D=fU(),O=pU(G);O.current=G;let V=pU(Y);if(V.current=Y,D)console.log("[PieCard] Rendering card:",U),console.log("[PieCard] Card data:",Z),console.log("[PieCard] Component name:",Z?.name),console.log("[PieCard] Real-time support:",{socketio:z,centrifuge:T,mitt:H,centrifugeChannel:J}),console.log("[PieCard] Methods:",G?Object.keys(G):"none"),console.log("[PieCard] Has children:",!!$);let B=QU(S),q=QU(y),_=QU(b);if(WU(()=>{if(!B||!z||!O.current||!Z.name){if(D&&z)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!B,useSocketioSupport:z,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let P=Object.keys(O.current??{}).map((W)=>{let X=`pie${W}_${Z.name}`;if(D)console.log(`[PieCard] Socket.IO registering event: ${X}`);let Q=(C)=>{O.current?.[W]?.(C)};return B.on(X,Q),[X,Q]});return()=>{P.forEach(([W,X])=>{if(D)console.log(`[PieCard] Socket.IO unregistering event: ${W}`);B.off(W,X)})}},[B,Z.name,z]),WU(()=>{if(!q||!T||!J||!Z.name){if(D&&T)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!q,useCentrifugeSupport:T,hasCentrifugeChannel:!!J,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let P=Object.keys(O.current??{}).map((W)=>{let X=`pie${W}_${Z.name}_${J}`;if(D)console.log(`[PieCard] Centrifuge subscribing to channel: ${X}`);let{subscription:Q,createdHere:C}=mU(q,X,{recoverable:!0,positioned:!0}),XU=(p)=>{if(D)console.log(`[PieCard] Centrifuge received data on ${X}:`,p.data);O.current?.[W]?.(p.data)},m=(p)=>{if(vU(p))console.warn(`[PieCard] Centrifuge channel ${X} is not `+"recoverable — enable history on the server "+"namespace for exact replay; relying on resync fallback only.");if(bU(p)){if(D)console.log(`[PieCard] Centrifuge recovery gap on ${X}; requesting resync`);V.current?.({channel:X,reason:"gap"})}};return Q.on("publication",XU),Q.on("subscribed",m),Q.subscribe(),{subscription:Q,createdHere:C,onPublication:XU,onSubscribed:m}});return()=>{P.forEach(({subscription:W,createdHere:X,onPublication:Q,onSubscribed:C})=>{if(D)console.log("[PieCard] Centrifuge unsubscribing from channel");if(W.off("publication",Q),W.off("subscribed",C),X)W.unsubscribe(),q.removeSubscription(W)})}},[q,J,Z.name,T]),WU(()=>{if(!_||!H||!Z.name){if(D&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!_,useMittSupport:H,hasMethods:!!O.current,hasDataName:!!Z?.name});return}let F=Object.keys(O.current??{}),P={};return F.forEach((W)=>{let X=`pie${W}_${Z.name}`,Q=(C)=>{if(D)console.log(`[PieCard] Mitt registering event: ${X}`);O.current?.[W]?.(C)};P[X]=Q,_.on(X,Q)}),()=>{Object.entries(P).forEach(([W,X])=>{if(D)console.log(`[PieCard] Mitt unregistering event: ${W}`);_.off(W,X)})}},[_,Z.name,H]),D)console.log("[PieCard] Rendering complete, returning children");if(I!==void 0)return dZ(gZ,{children:[uZ("input",{type:"hidden",name:Z.name,value:JSON.stringify(I)}),$]});return $},M=hZ;import{lazy as cZ}from"react";var h=new Map;function hU(U,Z){return Z.catch(()=>{if(h.get(U)===Z)h.delete(U)}),h.set(U,Z),Z}function DU(U,Z){return cZ(()=>{if(h.has(Z))return h.get(Z);return hU(Z,U().then(($)=>$))})}var gU=async(U,Z)=>{if(!Z)return;if(h.has(U))return h.get(U);return hU(U,Z().then(($)=>$))};var f=A("@swarm.ing/pieui:component-registry",()=>new Map),oZ=(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=DU(Z.loader,U.name),Z.isLazy=!0;return Z};function K(U){let Z=oZ(U);return f.set(Z.name,Z),Z.component}var lZ=(U)=>{U.forEach((Z)=>K(Z))},iZ=(U)=>{f.delete(U)},sZ=(U)=>{return f.has(U)},rZ=(U)=>{return f.get(U)?.metadata},s=(U)=>{return f.get(U)},nZ=()=>{return Array.from(f.keys())},tZ=()=>{return f.size},dU=()=>Array.from(f.values()).filter((U)=>U.isLazy&&typeof U.loader==="function").map((U)=>U.name),cU=(U)=>{let Z=f.get(U);if(!Z?.isLazy||typeof Z.loader!=="function")return;return gU(U,Z.loader)},uU=!1,aZ=()=>{if(uU||typeof window>"u")return;uU=!0;let U=navigator.connection;if(U?.saveData)return;if(U?.effectiveType&&["slow-2g","2g"].includes(U.effectiveType))return;let Z=dU(),$="requestIdleCallback"in window?(T)=>window.requestIdleCallback(T,{timeout:2000}):(T)=>window.setTimeout(T,300),z=(T)=>{if(T>=Z.length)return;$(()=>{Promise.resolve().then(()=>cU(Z[T])).catch(()=>{}).finally(()=>z(T+1))})};z(0)};import{useContext as oU,memo as Y$}from"react";import{createContext as eZ}from"react";import{jsx as $$,Fragment as Z$}from"react/jsx-runtime";var U$=A("@swarm.ing/pieui:context:fallback",()=>eZ($$(Z$,{}))),N=U$;import{createContext as z$}from"react";var H$=A("@swarm.ing/pieui:context:lazyError",()=>z$(void 0)),v=H$;import{Component as T$,Suspense as J$}from"react";import{jsx as X$}from"react/jsx-runtime";var I$=2,G$=400;class o extends T${state={failed:!1,attempt:0};timer;static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(U){if(this.props.onError?.(U),this.state.attempt<I$){let Z=G$*(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 X$(J$,{fallback:this.props.fallback,children:this.props.children},`${this.props.name}:${this.state.attempt}`)}}import{jsx as _U}from"react/jsx-runtime";function B$({uiConfig:U,setUiAjaxConfiguration:Z}){let $=oU(N),z=oU(v),T=k();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=s(U.card);if(!H?.component){if(T)console.warn(`[UI] Component not found in registry: ${U.card}`),console.log("[UI] Returning fallback component");return $}if(T)console.log("[UI] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata});let J=H.component,G=_U(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 _U(o,{name:H.name,fallback:H.fallback?_U(H.fallback,{}):$,onError:z,children:G})}if(T)console.log("[UI] Rendering component directly:",H.name);return G}var w=Y$(B$);import{useContext as lU}from"react";import{createContext as q$}from"react";var O$=A("@swarm.ing/pieui:context:uiRenderer",()=>q$(null)),E=O$;import{jsx as ZU}from"react/jsx-runtime";function iU({uiConfig:U,setUiAjaxConfiguration:Z}){let $=lU(N),z=lU(v),T=k();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=s(U.card);if(!H?.component){if(T)console.warn(`[UILoading] Component not found in registry: ${U.card}`),console.log("[UILoading] Returning fallback component");return $}if(T)console.log("[UILoading] Found component in registry:",{name:H.name,isLazy:H.isLazy,hasMetadata:!!H.metadata,hasFallback:!!H.fallback});if(H.fallback){if(T)console.log("[UILoading] Rendering fallback for:",H.name);let I=H.fallback;return ZU(I,{})}if(T)console.log("[UILoading] No fallback, rendering full component:",H.name);let J=H.component,G=ZU(E.Provider,{value:iU,children:ZU(J,{data:U.data,content:U.content,setUiAjaxConfiguration:Z})});if(H.isLazy)return ZU(o,{name:H.name,fallback:$,onError:z,children:G});return G}var VU=iU;import{useContext as Q$}from"react";import{jsx as FU}from"react/jsx-runtime";var W$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=Q$(E)??w;return FU(M,{card:z,data:U,children:FU("div",{style:T,id:z,children:Z.map((J,G)=>{return FU(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${G}`)})})})},sU=W$;var D$=K({name:"SequenceCard",component:sU,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as _$}from"react";import{jsx as rU}from"react/jsx-runtime";var V$=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z}=U,T=_$(E)??w;return rU(M,{card:z,data:U,children:Z.map((H,J)=>{return rU(T,{uiConfig:H,setUiAjaxConfiguration:$},`children-${J}`)})})},nU=V$;var F$=K({name:"UnionCard",component:nU,metadata:{author:"Swarm.ing",description:"Renders one of many components"}});import{useEffect as M$,useState as R$}from"react";import L$ from"html-react-parser";import{useCallback as $U,useEffect as K$,useRef as KU,useState as A$}from"react";function P$(){let U=new AudioContext,Z=U.createOscillator(),$=Z.connect(U.createMediaStreamDestination());Z.start();let z=$.stream.getAudioTracks()[0];return z.enabled=!1,z}function AU(U=null,Z){let[$,z]=A$(!1),T=KU(null),H=KU(null),J=KU(null),G=$U(async(O,V=!0)=>{if(T.current)I();let B=new RTCPeerConnection;if(B.onconnectionstatechange=()=>{if(B.connectionState==="connected")z(!0);else if(["disconnected","failed","closed"].includes(B.connectionState))z(!1)},B.ontrack=(Q)=>{if(U)U.srcObject=Q.streams[0]},V){let Q=await navigator.mediaDevices.getUserMedia({audio:!0});B.addTrack(Q.getTracks()[0],Q)}else{let Q=P$();B.addTrack(Q)}let q=B.createDataChannel("oai-events");H.current=q,J.current=new Promise((Q)=>{q.addEventListener("open",()=>{Q()})});let _=await B.createOffer();await B.setLocalDescription(_);let X=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:_.sdp,headers:{Authorization:`Bearer ${O}`,"Content-Type":"application/sdp"}})).text();await B.setRemoteDescription({type:"answer",sdp:X}),T.current=B,await J.current},[U]),I=$U(()=>{let O=H.current;if(O)O.close();T.current?.getSenders()?.forEach((V)=>V.track?.stop()),T.current?.close(),z(!1),T.current=null,H.current=null,J.current=null},[U]),Y=$U((O)=>{let V=H.current;if(!V){console.error("Data channel is not ready",O);return}let B=new Date().toLocaleTimeString();if(O.event_id=O.event_id||crypto.randomUUID(),V.send(JSON.stringify(O)),!O.timestamp)O.timestamp=B;Z?.(O)},[Z,U]),D=$U((O)=>{if(!H.current){console.error("Data channel is not ready");return}let B=()=>{Y({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:O}]}}),Y({type:"response.create"})};if(J.current)J.current.then(B);else B()},[Z,U]);return K$(()=>{let O=H.current;if(!O)return;let V=(B)=>{let q=JSON.parse(B.data);if(!q.timestamp)q.timestamp=new Date().toLocaleTimeString();Z?.(q)};return O.addEventListener("message",V),()=>{O.removeEventListener("message",V)}},[Z,U]),{isSessionActive:$,startSession:G,stopSession:I,sendTextMessage:D}}import{jsx as N$}from"react/jsx-runtime";var w$=({data:U})=>{let{html:Z,useSocketioSupport:$,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:H}=U,[J,G]=R$(Z),{isSessionActive:I,startSession:Y,sendTextMessage:D}=AU(null,(q)=>{if(console.log(q.type,q.type==="response.output_text.delta"&&q.delta),q.type==="response.output_text.delta"&&q.delta)G((_)=>_+q.delta)});return M$(()=>{G(Z)},[Z]),N$(M,{card:"HTMLEmbedCard",data:U,methods:{update:(q)=>{G(q.value)},generateUsingAI:async(q)=>{try{if(!I&&q.token)await Y(q.token,!1);D(q.prompt)}catch(_){console.error("Failed to generate using AI",_)}},initializeAI:async(q)=>{if(!I&&q.token)await Y(q.token,!1)}},useCentrifugeSupport:z,useSocketioSupport:$,useMittSupport:T,centrifugeChannel:H,children:L$(J)})},tU=w$;var E$=K({name:"HTMLEmbedCard",component:tU,metadata:{author:"Swarm.ing"}});import{useEffect as j$,useState as C$}from"react";import{jsx as aU}from"react/jsx-runtime";var f$=({data:U})=>{let{name:Z,value:$,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J}=U,[G,I]=C$($);return j$(()=>{I($)},[$]),aU(M,{card:"HiddenCard",data:U,useSocketioSupport:z,useCentrifugeSupport:T,useMittSupport:H,centrifugeChannel:J,methods:{update:({value:Y})=>{I(Y)}},children:aU("input",{type:"hidden",id:Z,name:Z,value:G})})},eU=f$;var x$=K({name:"HiddenCard",component:eU,metadata:{author:"Swarm.ing"}});import{useContext as UZ,useEffect as S$}from"react";import{createContext as k$}from"react";var y$=A("@swarm.ing/pieui:context:navigate",()=>k$(void 0)),x=y$;import{jsx as m$,Fragment as v$}from"react/jsx-runtime";var b$=({data:U})=>{let{url:Z}=U,$=UZ(x),z=UZ(N);return S$(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Z))window.location.href=Z;else $?.(Z)},[Z,$]),m$(v$,{children:z})},ZZ=b$;var p$=K({name:"AutoRedirectCard",component:ZZ,metadata:{author:"Swarm.ing"}});import{Bounce as h$,Slide as g$,Zoom as u$,Flip as d$}from"react-toastify";import{toast as c$,ToastContainer as o$}from"react-toastify";import{useContext as l$,useMemo as i$,useRef as s$}from"react";import{jsx as PU,Fragment as Uz}from"react/jsx-runtime";var r$={bounce:h$,slide:g$,zoom:u$,flip:d$},n$=(U)=>{let Z={...U,type:U.alertType,transition:U.transition?r$[U.transition]:void 0,position:U.position??"bottom-right",autoClose:U.autoClose??3000,style:{backgroundColor:"black",...U.sx}};c$(U.message,Z)},t$=(U)=>{console.log("Log event",U)},a$=(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()})},e$=({data:U})=>{let{useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T}=U,H=l$(x),J=s$(H);J.current=H;let G=i$(()=>({alert:n$,log:t$,push:a$,redirect:(I)=>{if(I.to){let Y=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()},reload:(I)=>{if(I.to){let Y=I.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(Y))window.location.href=Y;else J.current?.(Y)}else window.location.reload()}}),[]);return PU(Uz,{children:PU(M,{card:"IOEventsCard",data:U,useCentrifugeSupport:Z,useSocketioSupport:$,useMittSupport:z,centrifugeChannel:T,methods:G,children:PU(o$,{})})})},$Z=e$;var Zz=K({name:"IOEventsCard",component:$Z,metadata:{author:"Swarm.ing"}});import{useEffect as zZ,useState as $z}from"react";import{jsx as HZ}from"react/jsx-runtime";var zz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G}=U,[I,Y]=$z(z);return zZ(()=>{Y(z)},[z]),zZ(()=>{if(typeof window>"u")return;sessionStorage.setItem($,I)},[$,I]),HZ(M,{card:"SessionStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:D})=>{Y(D)},remove:()=>{sessionStorage.removeItem($),Y("")}},children:HZ("input",{type:"hidden",id:Z,name:Z,value:I})})},TZ=zz;var Hz=K({name:"SessionStorageCard",component:TZ,metadata:{author:"PieData"}});import{useEffect as JZ,useState as Tz}from"react";import{jsx as IZ}from"react/jsx-runtime";var Jz=({data:U})=>{let{name:Z,key:$,value:z,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G}=U,[I,Y]=Tz(z);return JZ(()=>{Y(z)},[z]),JZ(()=>{if(typeof window>"u")return;localStorage.setItem($,I)},[$,I]),IZ(M,{card:"DeviceStorageCard",data:U,useSocketioSupport:T,useCentrifugeSupport:H,useMittSupport:J,centrifugeChannel:G,methods:{update:({value:D})=>{Y(D)},remove:()=>{localStorage.removeItem($),Y("")}},children:IZ("input",{type:"hidden",id:Z,name:Z,value:I})})},GZ=Jz;var Iz=K({name:"DeviceStorageCard",component:GZ,metadata:{author:"PieData"}});import{useCallback as MU,useContext as RU,useEffect as Gz,useRef as Xz,useState as XZ}from"react";import{jsx as YZ}from"react/jsx-runtime";var Yz=({data:U,content:Z})=>{let{useLoader:$,noReturn:z,returnType:T,useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I}=U,Y=RU(N),D=RU(E)??w,[O,V]=XZ(!1),[B,q]=XZ(null),_=Xz(Z),F=RU(b),P=MU((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)_.current=Q;if(!z)q(Q)},[z]),W=MU((Q)=>{_.current=Q.content,q(Q.content)},[]),X=MU((Q)=>{if(Q===null)V(!0);else if(V(!1),!z)for(let C of Q)F?.emit(C.name,C.data)},[z,F]);if(Gz(()=>{q(Z),V(!1)},[Z]),!B&&$)return Y;return YZ(M,{card:"AjaxGroupCard",data:U,methods:{changeContent:W},useSocketioSupport:H,useCentrifugeSupport:J,useMittSupport:G,centrifugeChannel:I,children:YZ(D,{uiConfig:B??_.current,setUiAjaxConfiguration:T==="events"?X:P})})},BZ=Yz;var Bz=K({name:"AjaxGroupCard",component:BZ,metadata:{author:"Swarm.ing",description:"Group card with AJAX support"}});import{useContext as qZ}from"react";import{jsx as LU}from"react/jsx-runtime";var qz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,url:T,sx:H}=U,J=qZ(x),G=qZ(E)??w;return LU(M,{card:z,data:U,children:LU("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:LU(G,{setUiAjaxConfiguration:$,uiConfig:Z})})})},OZ=qz;var Oz=K({name:"BoxCard",component:OZ,metadata:{author:"Swarm.ing",description:"Simple div with styles joining few components"}});import{useContext as Qz}from"react";import{jsx as wU}from"react/jsx-runtime";var Wz=({data:U,content:Z,setUiAjaxConfiguration:$})=>{let{name:z,sx:T}=U,H=Qz(E)??w;return wU(M,{card:z,data:U,children:wU("div",{style:T,id:z,children:Z.map((J,G)=>{return wU(H,{uiConfig:J,setUiAjaxConfiguration:$},`children-${G}`)})})})},QZ=Wz;var Dz=K({name:"OneOfCard",component:QZ,metadata:{author:"Swarm.ing",description:"Different variants"}});import{useMemo as n}from"react";import{QueryClient as xz,QueryClientProvider as kz,useQuery as yz}from"@tanstack/react-query";import{useContext as Lz,useEffect as wz}from"react";import{useEffect as _z,useState as Vz}from"react";var zU=new Map,HU=new Map;function TU(U,Z){let $=`${U}::${Z}`,z=U?zU.get($):void 0,[T,H]=Vz(z??null);return _z(()=>{if(!U)return;if(zU.has($)){H(zU.get($));return}let J=HU.get($);if(!J)J=fetch(U+`api/support/${Z}`,{method:"GET"}).then((I)=>I.json()).then((I)=>{return zU.set($,I),HU.delete($),I}).catch((I)=>{throw HU.delete($),I}),HU.set($,J);let G=!1;return J.then((I)=>{if(!G)H(I)}).catch(()=>{}),()=>{G=!0}},[U,Z,$]),T}var Fz=(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},Kz={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:Fz,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()}},WZ=Kz;var Az={};function g(){return Az}var DZ=new Map;var _Z=(U)=>{return DZ.has(U)?DZ.get(U):null};var VZ,Pz={isClient(){return!0},readSid(){return VZ},setSid(U){VZ=U},readWebStorage(U,Z){let $=g(),z=U==="local"?$.storage:$.sessionStorage;return z?z.getItem(Z):null},async readWebStorageAsync(U,Z){let $=g(),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=g();return Z.getCookie?Z.getCookie(U):null},readUrlParams(U){let Z=g();return Z.getRouteParams?Z.getRouteParams(U):[]},readDomInput(U){let Z=g();return Z.getInput?Z.getInput(U):_Z(U)},submitGlobalForm(){g().submitForm?.()}},FZ=Pz;var Mz=typeof navigator<"u"&&navigator.product==="ReactNative",Rz=Mz?FZ:WZ,R=Rz;var r=A("@swarm.ing/pieui:sid-state",()=>({promise:null,resolve:null}));function KZ(){r.resolve?.()}function NU(){if(!R.isClient())return Promise.resolve();if(R.readSid()!==void 0)return Promise.resolve();if(!r.promise)r.promise=new Promise((U)=>{r.resolve=()=>{U()}});return r.promise}var Nz=({children:U})=>{let Z=Lz(S),$=t(),z=TU($,"socketIO"),T=(H)=>{if(R.isClient())R.setSid(H.sid),KZ(),console.log(`SocketIO initialized: ${R.readSid()}`)};return wz(()=>{if(!Z)return;let H=()=>{console.log("SocketIO connected")},J=(G)=>{console.log(`SocketIO disconnected: ${G}`),Z.connect()};if(z)Z.on("pieinit",T),Z.on("connect",H),Z.on("disconnect",J),Z.connect();return()=>{if(z)Z.off("pieinit",T),Z.off("connect",H),Z.off("disconnect",J),Z.disconnect()}},[Z,z]),U},JU=Nz;import{useContext as Ez,useEffect as jz}from"react";var Cz=({children:U})=>{let Z=Ez(y),$=t(),z=TU($,"centrifuge");return jz(()=>{if(!Z)return;let T=()=>{console.log("Centrifuge connected")},H=(J)=>{console.log("Centrifuge disconnected:",J)};if(z)Z.on("connected",T),Z.on("disconnected",H),Z.connect();return()=>{if(z)Z.disconnect()}},[Z,z]),U},IU=Cz;import{createAxiosDateTransformer as Sz}from"axios-date-transformer";import{jsx as fz}from"react/jsx-runtime";function AZ(U,Z,$){if(!Z)return $;let z=U.replace(/^\//,""),T=Z[z];if(!T)return $;return fz(VU,{uiConfig:T})}import{jsx as L,Fragment as mz}from"react/jsx-runtime";var bz=({location:U,fallback:Z,piecache:$,onError:z,queryOptions:T,disableGlobalForm:H})=>{let J=i(),G=a(),I=k(),Y=n(()=>Sz({baseURL:J||""}),[J]),D=n(()=>c(),[]),O=n(()=>J?UU(J):null,[J]),V=n(()=>J?e(J,G):null,[J,G]),{data:B,isLoading:q,error:_}=yz({queryKey:["uiConfig",U.pathname+U.search,J],enabled:!!J,queryFn:async()=>{let P=new URLSearchParams(U.search);P.set("__pieroot","web");let W="/api/content"+U.pathname+"?"+P.toString();if(I)console.log("[PieRoot] Fetching UI configuration from:",W);let X=await Y.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(I)console.log("[PieRoot] Received UI configuration:",X.data);return X.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(P)=>Math.min(1000*2**P,30000),...T}),F=AZ(U.pathname,$,Z);if(!J)return F??null;if(I)console.log("[PieRoot] Rendering with location:",U),console.log("[PieRoot] API_SERVER:",J),console.log("[PieRoot] CENTRIFUGE_SERVER:",G),console.log("[PieRoot] Fallback provided:",!!Z),console.log("[PieRoot] Piecache provided:",!!$);if(_){if(I)console.error("[PieRoot] Error fetching UI configuration:",_),console.error("[PieRoot] Error details:",{message:_.message,status:_.response?.status,data:_.response?.data});return z?.(_),F}if(q||!B){if(I)console.log("[PieRoot] Loading state:",{isLoading:q,hasUiConfiguration:!!B});return F}if(I)console.log("[PieRoot] UI configuration loaded successfully:",B),console.log("[PieRoot] Rendering UI with configuration");return L(b.Provider,{value:D,children:L(S.Provider,{value:O,children:L(y.Provider,{value:V,children:L(N.Provider,{value:Z??L(mz,{}),children:L(JU,{children:L(IU,{children:H?L(w,{uiConfig:B}):L("form",{id:"piedata_global_form",action:J+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:L(w,{uiConfig:B})})})})})})})})},vz=(U)=>{let Z=n(()=>new xz,[]),$=U.queryClient??Z;return L(x.Provider,{value:U.onNavigate,children:L(d.Provider,{value:U.config,children:L(v.Provider,{value:U.onError,children:L(kz,{client:$,children:L(bz,{...U})})})})})},EU=vz;import{useMemo as jU,useState as pz}from"react";import{QueryClient as hz,QueryClientProvider as gz}from"@tanstack/react-query";import{jsx as j,Fragment as cz}from"react/jsx-runtime";var uz=({location:U,fallback:Z,children:$,disableGlobalForm:z})=>{let T=i(),H=a(),J=k(),G=jU(()=>c(),[]),I=jU(()=>T?UU(T):null,[T]),Y=jU(()=>T?e(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 j(b.Provider,{value:G,children:j(S.Provider,{value:I,children:j(y.Provider,{value:Y,children:j(N.Provider,{value:Z??j(cz,{}),children:j(JU,{children:j(IU,{children:z?$:j("form",{id:"piedata_global_form",action:T+"api/process"+U.pathname,method:"post",encType:"multipart/form-data",children:$})})})})})})})},dz=(U)=>{let[Z]=pz(()=>new hz),$=U.queryClient??Z;return j(x.Provider,{value:U.onNavigate,children:j(d.Provider,{value:U.config,children:j(v.Provider,{value:U.onError,children:j(gz,{client:$,children:j(uz,{...U})})})})})},oz=dz;import{useMemo as lz}from"react";import{jsx as PZ}from"react/jsx-runtime";var iz=PZ("div",{style:{padding:16,fontFamily:"system-ui, sans-serif",color:"#888"},children:"Loading card…"}),sz=({apiServer:U,pathname:Z="/",search:$="",centrifugeServer:z,fallback:T,enableRenderingLog:H=!1})=>{let J=U??(typeof process<"u"?process.env.PIE_API_SERVER:void 0)??"",G=lz(()=>({apiServer:J,centrifugeServer:z,enableRenderingLog:H,pageProcessor:"web"}),[J,z,H]);return PZ(EU,{location:{pathname:Z,search:$},config:G,fallback:T??iz,onNavigate:(Y)=>{if(typeof window<"u")window.history.pushState(null,"",Y)}})},rz=sz;import{useMemo as nz}from"react";var tz=["localStorage","sessionStorage","cookie","url","telegram:cloud","telegram:secure"],az=new Set(["telegram:cloud","telegram:secure"]),GU=(U)=>{if(U==="sid")return{source:"sid",key:"sid"};for(let Z of tz){let $=Z+":";if(U.startsWith($))return{source:Z,key:U.slice($.length)}}return{source:"dom",key:U}},MZ=(U,Z=!1)=>{let{source:$,key:z}=GU(U);if($==="sid"){let H=R.readSid();if(!H)throw Error("SocketIO isn't initialized properly");return[H]}if($==="localStorage"||$==="sessionStorage")try{let H=R.readWebStorage($==="localStorage"?"local":"session",z);if(H===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[H]}catch(H){if(Z)console.warn(`Failed to read ${$} key ${z}:`,H);return[]}if($==="cookie"){let H=R.readCookie(z);if(H===null){if(Z)console.warn(`No cookie found for key ${z}`);return[]}return[H]}if($==="url"){let H=R.readUrlParams(z);if(!H.length&&Z)console.warn(`No URL query param found for key ${z}`);return H}if(az.has($)){if(Z)console.warn(`Source ${$} is async; use readAjaxKeyAsync (readAjaxKey returns [])`);return[]}let T=R.readDomInput(z);if(T===null){if(Z)console.warn(`No input found with name ${z}`);return[]}return T},ez=(U,Z,$)=>{let z=window.Telegram?.WebApp,T=U==="telegram:cloud"?z?.CloudStorage:z?.SecureStorage,H=U==="telegram:cloud"?"Telegram CloudStorage":"Telegram SecureStorage";if(!T){if($)console.warn(`${H} is not available`);return Promise.resolve([])}return new Promise((J)=>{try{T.getItem(Z,(G,I)=>{if(G){if($)console.warn(`Failed to read ${H} key ${Z}:`,G);J([]);return}if(I==null||I===""){if($)console.warn(`No ${H} value found for key ${Z}`);J([]);return}J([I])})}catch(G){if($)console.warn(`Failed to read ${H} key ${Z}:`,G);J([])}})},RZ=async(U,Z=!1)=>{let{source:$,key:z}=GU(U);if($==="telegram:cloud"||$==="telegram:secure")return ez($,z,Z);if(($==="localStorage"||$==="sessionStorage")&&R.readWebStorageAsync)try{let T=await R.readWebStorageAsync($==="localStorage"?"local":"session",z);if(T===null){if(Z)console.warn(`No ${$} value found for key ${z}`);return[]}return[T]}catch(T){if(Z)console.warn(`Failed to read ${$} key ${z}:`,T);return[]}return MZ(U,Z)},UH=(U,Z={},$=[],z,T)=>{let H=T?.renderingLogEnabled??!1,J=T?.timeout,G=T?.retryPolicy,I=G?.maxRetries??0,Y=G?.baseDelay??1000,D=G?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",z,Z,$);return async(O={})=>{if(!R.isClient()){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let V=T?.apiServer;if(!V){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!z||!U){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if($.includes("sid"))await NU();let B=new FormData;for(let[F,P]of Object.entries({...Z,...O}))B.append(F,P);for(let F of $){let{key:P}=GU(F);for(let W of await RZ(F,H))B.append(P,W)}let q=V+"api/ajax_content"+z;U(null);let _;for(let F=0;F<=I;F++){if(F>0){let X=Y*2**(F-1);if(H)console.log(`AJAX retry ${F}/${I} after ${X}ms`);await new Promise((Q)=>setTimeout(Q,X))}let P=J!=null?new AbortController:null,W=P&&setTimeout(()=>P.abort(),J);try{let X=await fetch(q,{method:"POST",body:B,signal:P?.signal});if(W)clearTimeout(W);if(!X.ok&&D.includes(X.status)&&F<I){_=Error(`HTTP ${X.status}`);continue}let C=(X.headers.get("content-type")||"").includes("application/json");if(!!X.body?.getReader&&!C){let m=X.body.getReader(),p=new TextDecoder,u="";while(!0){let{done:YU,value:LZ}=await m.read();if(YU)break;u+=p.decode(LZ,{stream:!0});let CU=u.split(`
|
|
3
|
-
`);u=CU.pop()??"";for(let wZ of CU){let BU=wZ.trim();if(!BU)continue;try{let NZ=JSON.parse(BU);U([NZ])}catch{if(H)console.warn("Failed to parse streamed line:",BU)}}}if(u.trim())try{let YU=JSON.parse(u);U([YU])}catch{if(H)console.warn("Failed to parse final streamed line:",u)}return{}}else{let m=await X.json();return U(m),m}}catch(X){if(W)clearTimeout(W);if(_=X,F<I)continue;if(H)console.error("AJAX request failed:",X);return U(null),X}}if(H)console.error("AJAX request failed after retries:",_);return U(null),_}},ZH=(U,Z={},$=[],z,T)=>{let{apiServer:H,enableRenderingLog:J}=l(),G=JSON.stringify(Z),I=JSON.stringify($),Y=JSON.stringify(T);return nz(()=>UH(U,Z,$,z,{apiServer:H,renderingLogEnabled:J,timeout:T?.timeout,retryPolicy:T?.retryPolicy}),[U,G,I,z,H,J,Y])};import{clsx as $H}from"clsx";import{twMerge as zH}from"tailwind-merge";function HH(...U){return zH($H(U))}var TH=()=>{R.submitGlobalForm()};var JH=(U,Z)=>`${U}${OU}${Z}`;export{pZ as usePieEmit,ZH as useAjaxSubmit,iZ as unregisterComponent,DU as trackLazy,TH as submitGlobalForm,f as registry,K as registerPieComponent,lZ as registerMultipleComponents,RZ as readAjaxKeyAsync,MZ as readAjaxKey,cU as preloadComponent,aZ as prefetchLazyComponents,JH as pieName,GU as parseDepName,sZ as hasComponent,tZ as getRegistrySize,s as getRegistryEntry,dU as getLazyComponentNames,c as getEmitter,rZ as getComponentMeta,nZ as getAllRegisteredComponents,HH as cn,F$ as UnionCard,E as UIRendererContext,VU as UILoading,w as UI,S as SocketIOContext,Hz as SessionStorageCard,D$ as SequenceCard,EU as PieRoot,rz as PiePreviewRoot,d as PieConfigContext,M as PieCard,oz as PieBaseRoot,OU as PIEBREAK,Dz as OneOfCard,b as MittContext,Zz as IOEventsCard,x$ as HiddenCard,E$ as HTMLEmbedCard,N as FallbackContext,Iz as DeviceStorageCard,y as CentrifugeIOContext,Oz as BoxCard,p$ as AutoRedirectCard,Bz 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};
|