@piedata/pieui 2.0.4 → 2.0.6
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 +223 -97
- package/dist/code/commands/init.d.ts.map +1 -1
- package/dist/code/templates/index.d.ts +2 -1
- package/dist/code/templates/index.d.ts.map +1 -1
- package/dist/code/templates/nextConfig.d.ts +3 -0
- package/dist/code/templates/nextConfig.d.ts.map +1 -0
- package/dist/components/Common/CloudStorageCard/index.d.ts +3 -0
- package/dist/components/Common/CloudStorageCard/index.d.ts.map +1 -0
- package/dist/components/Common/CloudStorageCard/types/index.d.ts +13 -0
- package/dist/components/Common/CloudStorageCard/types/index.d.ts.map +1 -0
- package/dist/components/Common/CloudStorageCard/ui/CloudStorageCard.d.ts +4 -0
- package/dist/components/Common/CloudStorageCard/ui/CloudStorageCard.d.ts.map +1 -0
- package/dist/components/Common/DeviceStorageCard/index.d.ts +3 -0
- package/dist/components/Common/DeviceStorageCard/index.d.ts.map +1 -0
- package/dist/components/Common/DeviceStorageCard/types/index.d.ts +13 -0
- package/dist/components/Common/DeviceStorageCard/types/index.d.ts.map +1 -0
- package/dist/components/Common/DeviceStorageCard/ui/DeviceStorageCard.d.ts +4 -0
- package/dist/components/Common/DeviceStorageCard/ui/DeviceStorageCard.d.ts.map +1 -0
- package/dist/components/Common/SecureStorageCard/index.d.ts +3 -0
- package/dist/components/Common/SecureStorageCard/index.d.ts.map +1 -0
- package/dist/components/Common/SecureStorageCard/types/index.d.ts +13 -0
- package/dist/components/Common/SecureStorageCard/types/index.d.ts.map +1 -0
- package/dist/components/Common/SecureStorageCard/ui/SecureStorageCard.d.ts +4 -0
- package/dist/components/Common/SecureStorageCard/ui/SecureStorageCard.d.ts.map +1 -0
- package/dist/components/Common/SessionStorageCard/index.d.ts +3 -0
- package/dist/components/Common/SessionStorageCard/index.d.ts.map +1 -0
- package/dist/components/Common/SessionStorageCard/types/index.d.ts +13 -0
- package/dist/components/Common/SessionStorageCard/types/index.d.ts.map +1 -0
- package/dist/components/Common/SessionStorageCard/ui/SessionStorageCard.d.ts +4 -0
- package/dist/components/Common/SessionStorageCard/ui/SessionStorageCard.d.ts.map +1 -0
- package/dist/components/PieBaseRoot/index.d.ts +11 -0
- package/dist/components/PieBaseRoot/index.d.ts.map +1 -1
- package/dist/components/PieBaseRoot/types/index.d.ts +6 -0
- package/dist/components/PieBaseRoot/types/index.d.ts.map +1 -1
- package/dist/components/PieCard/index.d.ts +18 -0
- package/dist/components/PieCard/index.d.ts.map +1 -1
- package/dist/components/PieCard/types/index.d.ts +36 -0
- package/dist/components/PieCard/types/index.d.ts.map +1 -1
- package/dist/components/PieMaxRoot/index.d.ts +12 -0
- package/dist/components/PieMaxRoot/index.d.ts.map +1 -1
- package/dist/components/PieRoot/index.d.ts +17 -0
- package/dist/components/PieRoot/index.d.ts.map +1 -1
- package/dist/components/PieRoot/types/index.d.ts +31 -0
- package/dist/components/PieRoot/types/index.d.ts.map +1 -1
- package/dist/components/PieTelegramRoot/index.d.ts +13 -0
- package/dist/components/PieTelegramRoot/index.d.ts.map +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +2 -2
- package/dist/index.js +2 -2
- package/dist/pieui.components.json +144 -0
- package/dist/tests/mittAgentTools.test.d.ts +2 -0
- package/dist/tests/mittAgentTools.test.d.ts.map +1 -0
- package/dist/util/ajaxCommonUtils.d.ts +69 -3
- package/dist/util/ajaxCommonUtils.d.ts.map +1 -1
- package/dist/util/centrifuge.d.ts +22 -0
- package/dist/util/centrifuge.d.ts.map +1 -1
- package/dist/util/fallback.d.ts +6 -0
- package/dist/util/fallback.d.ts.map +1 -1
- package/dist/util/globalForm.d.ts +8 -0
- package/dist/util/globalForm.d.ts.map +1 -1
- package/dist/util/lazy.d.ts +25 -0
- package/dist/util/lazy.d.ts.map +1 -1
- package/dist/util/mitt.d.ts +37 -0
- package/dist/util/mitt.d.ts.map +1 -1
- package/dist/util/mittAgentTools.d.ts +89 -0
- package/dist/util/mittAgentTools.d.ts.map +1 -0
- package/dist/util/navigate.d.ts +11 -0
- package/dist/util/navigate.d.ts.map +1 -1
- package/dist/util/pieConfig.d.ts +35 -0
- package/dist/util/pieConfig.d.ts.map +1 -1
- package/dist/util/pieName.d.ts +12 -0
- package/dist/util/pieName.d.ts.map +1 -1
- package/dist/util/piecache.d.ts +15 -0
- package/dist/util/piecache.d.ts.map +1 -1
- package/dist/util/registry.d.ts +49 -0
- package/dist/util/registry.d.ts.map +1 -1
- package/dist/util/socket.d.ts +22 -0
- package/dist/util/socket.d.ts.map +1 -1
- package/dist/util/tailwindCommonUtils.d.ts +14 -0
- package/dist/util/tailwindCommonUtils.d.ts.map +1 -1
- package/dist/util/uiRenderer.d.ts +14 -0
- package/dist/util/uiRenderer.d.ts.map +1 -1
- package/dist/util/useIsSupported.d.ts +18 -0
- package/dist/util/useIsSupported.d.ts.map +1 -1
- package/dist/util/useMaxWebApp.d.ts +27 -0
- package/dist/util/useMaxWebApp.d.ts.map +1 -1
- package/dist/util/useOpenAIWebRTC.d.ts +44 -0
- package/dist/util/useOpenAIWebRTC.d.ts.map +1 -1
- package/dist/util/useWebApp.d.ts +21 -0
- package/dist/util/useWebApp.d.ts.map +1 -1
- package/dist/util/webrtcClient.d.ts +61 -0
- package/dist/util/webrtcClient.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,16 +1,52 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Data object backing a single {@link PieCard}.
|
|
4
|
+
*
|
|
5
|
+
* The `name` field is mandatory because it is used to build realtime event
|
|
6
|
+
* channel names (`pie{methodName}_{name}`). Any other fields are treated as
|
|
7
|
+
* free-form props passed to the underlying card component.
|
|
8
|
+
*/
|
|
2
9
|
export interface PieCardData {
|
|
10
|
+
/** Unique identifier of the card within the UI tree. */
|
|
3
11
|
name: string;
|
|
12
|
+
/** Arbitrary, card-specific props. */
|
|
4
13
|
[key: string]: any;
|
|
5
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Props accepted by {@link PieCard}.
|
|
17
|
+
*/
|
|
6
18
|
export interface PieCardProps {
|
|
19
|
+
/** Registered name of the card component to render. */
|
|
7
20
|
card: string;
|
|
21
|
+
/** Card data; must include a `name` used for event routing. */
|
|
8
22
|
data: PieCardData;
|
|
23
|
+
/** Rendered children. PieCard does not mount any UI of its own. */
|
|
9
24
|
children: ReactNode;
|
|
25
|
+
/**
|
|
26
|
+
* Subscribe the card's `methods` to Socket.IO events of the form
|
|
27
|
+
* `pie{methodName}_{data.name}`.
|
|
28
|
+
*/
|
|
10
29
|
useSocketioSupport?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Subscribe the card's `methods` to Centrifuge channels of the form
|
|
32
|
+
* `pie{methodName}_{data.name}_{centrifugeChannel}`. Requires
|
|
33
|
+
* {@link centrifugeChannel}.
|
|
34
|
+
*/
|
|
11
35
|
useCentrifugeSupport?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Subscribe the card's `methods` to Mitt events of the form
|
|
38
|
+
* `pie{methodName}_{data.name}`. Used for in-process notifications
|
|
39
|
+
* dispatched via `usePieEmit`.
|
|
40
|
+
*/
|
|
12
41
|
useMittSupport?: boolean;
|
|
42
|
+
/** Channel suffix appended to Centrifuge subscriptions. */
|
|
13
43
|
centrifugeChannel?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Map of method name → handler. Keys become part of the realtime event
|
|
46
|
+
* names the card listens for; the handler receives the event payload.
|
|
47
|
+
* Handlers are accessed via a ref so updating the map between renders
|
|
48
|
+
* does not trigger re-subscription.
|
|
49
|
+
*/
|
|
14
50
|
methods?: Record<string, (data: any) => void>;
|
|
15
51
|
}
|
|
16
52
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,SAAS,CAAA;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,CAAA;CAChD"}
|
|
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;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAA;IACZ,+DAA+D;IAC/D,IAAI,EAAE,WAAW,CAAA;IACjB,mEAAmE;IACnE,QAAQ,EAAE,SAAS,CAAA;IACnB;;;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;CAChD"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { PieRootProps } from '../PieRoot/types';
|
|
3
|
+
/**
|
|
4
|
+
* PieUI root for MAX (VK Messenger) mini-apps.
|
|
5
|
+
*
|
|
6
|
+
* Behaves like {@link PieRoot} but waits for `window.WebApp` to be ready
|
|
7
|
+
* via {@link useMaxWebApp}, forwards `initData` to the backend as a query
|
|
8
|
+
* parameter, and identifies itself to the server with `__pieroot=max` so
|
|
9
|
+
* the UI configuration can be tailored to the MAX host.
|
|
10
|
+
*
|
|
11
|
+
* Throws when `apiServer` is missing because MAX mini-apps cannot fall
|
|
12
|
+
* back to SSR-style static rendering. Use `fallback`/`piecache` to show a
|
|
13
|
+
* loading shell while MAX finishes initialising.
|
|
14
|
+
*/
|
|
3
15
|
declare const PieMaxRoot: React.FC<PieRootProps>;
|
|
4
16
|
export default PieMaxRoot;
|
|
5
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieMaxRoot/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAOtC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AA8K/C,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAYtC,CAAA;AAED,eAAe,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieMaxRoot/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAOtC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AA8K/C;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAYtC,CAAA;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
import { PieRootProps } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Main PieUI root for regular web applications.
|
|
4
|
+
*
|
|
5
|
+
* Fetches a `UIConfigType` from `api/content{pathname}{search}` via
|
|
6
|
+
* react-query, renders it through the internal `UI` component, and wraps
|
|
7
|
+
* everything in the standard PieUI providers (QueryClient, Mitt, Socket.IO,
|
|
8
|
+
* Centrifuge, Fallback, Navigate, PieConfig).
|
|
9
|
+
*
|
|
10
|
+
* While the request is pending — or when `apiServer` has not been
|
|
11
|
+
* configured — the component renders the `piecache` shell (if any) or the
|
|
12
|
+
* caller-supplied `fallback`. On error it invokes `onError` and shows the
|
|
13
|
+
* same fallback UI.
|
|
14
|
+
*
|
|
15
|
+
* The UI configuration request is memoized forever by default
|
|
16
|
+
* (`staleTime: Infinity`); supply `queryOptions` to override the
|
|
17
|
+
* react-query behaviour.
|
|
18
|
+
*/
|
|
2
19
|
declare const PieRoot: (props: PieRootProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
20
|
export default PieRoot;
|
|
4
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieRoot/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AA8KtC,QAAA,MAAM,OAAO,GAAI,OAAO,YAAY,4CAYnC,CAAA;AAED,eAAe,OAAO,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieRoot/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AA8KtC;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,OAAO,GAAI,OAAO,YAAY,4CAYnC,CAAA;AAED,eAAe,OAAO,CAAA"}
|
|
@@ -2,17 +2,48 @@ import { ReactNode } from 'react';
|
|
|
2
2
|
import { PieConfig, UIConfigType } from '../../../types';
|
|
3
3
|
import { UseQueryOptions } from '@tanstack/react-query';
|
|
4
4
|
import { AxiosError } from 'axios';
|
|
5
|
+
/**
|
|
6
|
+
* Extra options merged into the internal `useQuery` call that fetches the
|
|
7
|
+
* UI configuration. `queryKey`, `queryFn` and `enabled` are managed by
|
|
8
|
+
* PieRoot itself and cannot be overridden.
|
|
9
|
+
*/
|
|
5
10
|
export type PieQueryOptions = Omit<UseQueryOptions<UIConfigType, AxiosError>, 'queryKey' | 'queryFn' | 'enabled'>;
|
|
11
|
+
/**
|
|
12
|
+
* Props common to every `Pie*Root` component.
|
|
13
|
+
*/
|
|
6
14
|
export interface PieRootProps {
|
|
15
|
+
/**
|
|
16
|
+
* Current route, typically forwarded from the host router
|
|
17
|
+
* (`window.location`, Next.js `usePathname`, React Router `useLocation`,
|
|
18
|
+
* etc.). Used to build the `api/content{pathname}{search}` request and
|
|
19
|
+
* as part of the react-query key.
|
|
20
|
+
*/
|
|
7
21
|
location: {
|
|
8
22
|
pathname: string;
|
|
9
23
|
search: string;
|
|
10
24
|
};
|
|
25
|
+
/**
|
|
26
|
+
* Fallback node rendered while the UI configuration is loading or when
|
|
27
|
+
* the fetch fails. Overridden per-pathname by {@link piecache}.
|
|
28
|
+
*/
|
|
11
29
|
fallback?: ReactNode;
|
|
30
|
+
/**
|
|
31
|
+
* Optional snapshot of known `UIConfigType`s keyed by pathname. When a
|
|
32
|
+
* cache entry exists for the current route the cached shell is rendered
|
|
33
|
+
* via `UILoading` instead of the plain `fallback`.
|
|
34
|
+
*/
|
|
12
35
|
piecache?: Record<string, UIConfigType>;
|
|
36
|
+
/** Invoked when the UI configuration request throws. */
|
|
13
37
|
onError?: () => void;
|
|
38
|
+
/**
|
|
39
|
+
* Navigation handler forwarded through `NavigateContext` so PieUI
|
|
40
|
+
* components can route via the host application (Next.js router,
|
|
41
|
+
* React Router, Telegram navigation, …) instead of reloading the page.
|
|
42
|
+
*/
|
|
14
43
|
onNavigate?: (url: string) => void;
|
|
44
|
+
/** Runtime configuration (API URLs, logging, page processor, …). */
|
|
15
45
|
config: PieConfig;
|
|
46
|
+
/** Optional react-query overrides; see {@link PieQueryOptions}. */
|
|
16
47
|
queryOptions?: PieQueryOptions;
|
|
17
48
|
}
|
|
18
49
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/PieRoot/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC,MAAM,MAAM,eAAe,GAAG,IAAI,CAC9B,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,EACzC,UAAU,GAAG,SAAS,GAAG,SAAS,CACrC,CAAA;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE;QACN,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACvC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,MAAM,EAAE,SAAS,CAAA;IACjB,YAAY,CAAC,EAAE,eAAe,CAAA;CACjC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/PieRoot/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,IAAI,CAC9B,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,EACzC,UAAU,GAAG,SAAS,GAAG,SAAS,CACrC,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB;;;;;OAKG;IACH,QAAQ,EAAE;QACN,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;KACjB,CAAA;IACD;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACvC,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,oEAAoE;IACpE,MAAM,EAAE,SAAS,CAAA;IACjB,mEAAmE;IACnE,YAAY,CAAC,EAAE,eAAe,CAAA;CACjC"}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { PieRootProps } from '../PieRoot/types';
|
|
3
|
+
/**
|
|
4
|
+
* PieUI root for Telegram Mini Apps.
|
|
5
|
+
*
|
|
6
|
+
* Behaves like {@link PieRoot} but waits for `window.Telegram.WebApp` via
|
|
7
|
+
* {@link useWebApp}, forwards the Telegram `initData` payload to the
|
|
8
|
+
* backend as a query parameter, and identifies itself to the server with
|
|
9
|
+
* `__pieroot=telegram`. Handles `ready()`/optional `expand()` based on the
|
|
10
|
+
* configured `pageProcessor`, so iOS/Android clients render full-screen
|
|
11
|
+
* when `pageProcessor === 'telegram_expanded'`.
|
|
12
|
+
*
|
|
13
|
+
* Throws when `apiServer` is missing. Errors raised inside `wApp.ready()`
|
|
14
|
+
* are forwarded to `onError`.
|
|
15
|
+
*/
|
|
3
16
|
declare const PieTelegramRoot: React.FC<PieRootProps>;
|
|
4
17
|
export default PieTelegramRoot;
|
|
5
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieTelegramRoot/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAOtC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAgL/C,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAY3C,CAAA;AAED,eAAe,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PieTelegramRoot/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAOtC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAgL/C;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAY3C,CAAA;AAED,eAAe,eAAe,CAAA"}
|
|
@@ -7,6 +7,10 @@ export { default as HTMLEmbedCard } from './Common/HTMLEmbedCard';
|
|
|
7
7
|
export { default as HiddenCard } from './Common/HiddenCard';
|
|
8
8
|
export { default as AutoRedirectCard } from './Common/AutoRedirectCard';
|
|
9
9
|
export { default as IOEventsCard } from './Common/IOEventsCard';
|
|
10
|
+
export { default as SessionStorageCard } from './Common/SessionStorageCard';
|
|
11
|
+
export { default as DeviceStorageCard } from './Common/DeviceStorageCard';
|
|
12
|
+
export { default as CloudStorageCard } from './Common/CloudStorageCard';
|
|
13
|
+
export { default as SecureStorageCard } from './Common/SecureStorageCard';
|
|
10
14
|
export { default as AjaxGroupCard } from './Containers/AjaxGroupCard';
|
|
11
15
|
export { default as BoxCard } from './Containers/BoxCard';
|
|
12
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACzE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACzE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useContext as $,useEffect as E,useRef as Io}from"react";import{createContext as po,useContext as fo}from"react";var lo=po(null),uo=()=>{let o=fo(lo);if(!o)throw new Error("usePieConfig must be used within PieConfigProvider");return o};var R=()=>{let{enableRenderingLog:o}=uo();return o},G=R;import{createContext as go}from"react";import{Centrifuge as Ht}from"centrifuge";var Co=go(null),J=Co;import{io as Bt}from"socket.io-client";import{createContext as yo}from"react";var xo=yo(null),X=xo;import Gt from"mitt";import{createContext as Uo}from"react";var Po=Uo(null),T=Po;var bo=({card:o,data:t,children:r,useSocketioSupport:e=!1,useCentrifugeSupport:n=!1,useMittSupport:s=!1,centrifugeChannel:a=void 0,methods:l=void 0})=>{let c=G(),m=Io(l);if(E(()=>{m.current=l},[l]),c)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",t),console.log("[PieCard] Component name:",t?.name),console.log("[PieCard] Real-time support:",{socketio:e,centrifuge:n,mitt:s,centrifugeChannel:a}),console.log("[PieCard] Methods:",l?Object.keys(l):"none"),console.log("[PieCard] Has children:",!!r);let U=$(X),f=$(J),u=$(T);if(E(()=>{if(!U||!e||!m.current||!t.name){if(c&&e)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!U,useSocketioSupport:e,hasMethods:!!m.current,hasDataName:!!t?.name});return}let p=Object.keys(m.current??{});return p.forEach((i)=>{let d=`pie${i}_${t.name}`;if(c)console.log(`[PieCard] Socket.IO registering event: ${d}`);U.on(d,(y)=>{m.current?.[i]?.(y)})}),()=>{p.forEach((i)=>{let d=`pie${i}_${t.name}`;if(c)console.log(`[PieCard] Socket.IO unregistering event: ${d}`);U.off(d)})}},[U,t.name,e]),E(()=>{if(!f||!n||!a||!t.name){if(c&&n)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!f,useCentrifugeSupport:n,hasCentrifugeChannel:!!a,hasMethods:!!m.current,hasDataName:!!t?.name});return}let i=Object.keys(m.current??{}).map((d)=>{let y=`pie${d}_${t.name}_${a}`;if(c)console.log(`[PieCard] Centrifuge subscribing to channel: ${y}`);let I=f.newSubscription(y);return I.on("publication",(k)=>{if(c)console.log(`[PieCard] Centrifuge received data on ${y}:`,k.data);m.current?.[d]?.(k.data)}),I.subscribe(),I});return()=>{i.forEach((d)=>{if(c)console.log("[PieCard] Centrifuge unsubscribing from channel");d.unsubscribe(),f.removeSubscription(d)})}},[f,a,t.name,n]),E(()=>{if(!u||!s||!t.name){if(c&&s)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!u,useMittSupport:s,hasMethods:!!m.current,hasDataName:!!t?.name});return}let p=Object.keys(m.current??{}),i={};return p.forEach((d)=>{let y=`pie${d}_${t.name}`,I=(k)=>{if(c)console.log(`[PieCard] Mitt registering event: ${y}`);m.current?.[d]?.(k)};i[y]=I,u.on(y,I)}),()=>{Object.entries(i).forEach(([d,y])=>{if(c)console.log(`[PieCard] Mitt unregistering event: ${d}`);u.off(d,y)})}},[u,t.name,s]),c)console.log("[PieCard] Rendering complete, returning children");return r},x=bo;import{lazy as ho}from"react";var M=new Map;function Q(o,t){return ho(()=>{if(M.has(t))return M.get(t);let r=o().then((e)=>e);return M.set(t,r),r})}var Y=new Map,ko=(o)=>{if(!o.name)throw new Error("Component registration requires a name");if(!o.component&&!o.loader)throw new Error(`Component "${o.name}" requires component or loader`);let t={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!t.component&&t.loader)t.component=Q(t.loader,o.name),t.loader=void 0,t.isLazy=!0;return t};function C(o){let t=ko(o);return Y.set(t.name,t),t.component}var L=(o)=>{return Y.get(o)};import{Suspense as Lo,useContext as Ao,memo as No}from"react";import{createContext as wo}from"react";import{jsx as Eo,Fragment as To}from"react/jsx-runtime";var Ro=wo(Eo(To,{})),h=Ro;import{jsx as O}from"react/jsx-runtime";function zo({uiConfig:o,setUiAjaxConfiguration:t}){let r=Ao(h),e=R();if(e)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!t);let n=L(o.card);if(!n?.component){if(e)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return r}if(e)console.log("[UI] Found component in registry:",{name:n.name,isLazy:n.isLazy,hasMetadata:!!n.metadata});let s=n.component,a=O(s,{data:o.data,content:o.content,setUiAjaxConfiguration:t});if(n.isLazy){if(e)console.log("[UI] Rendering lazy component with Suspense:",n.name);return O(Lo,{fallback:n.fallback?O(n.fallback,{}):r,children:a},`${n.name}`)}if(e)console.log("[UI] Rendering component directly:",n.name);return a}var b=No(zo);import{Suspense as Oo,useContext as Ho}from"react";import{createContext as $o}from"react";var Mo=$o(null),P=Mo;import{jsx as A}from"react/jsx-runtime";function K({uiConfig:o,setUiAjaxConfiguration:t}){let r=Ho(h),e=R();if(e)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!t);let n=L(o.card);if(!n?.component){if(e)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return r}if(e)console.log("[UILoading] Found component in registry:",{name:n.name,isLazy:n.isLazy,hasMetadata:!!n.metadata,hasFallback:!!n.fallback});if(n.fallback){if(e)console.log("[UILoading] Rendering fallback for:",n.name);let l=n.fallback;return A(l,{})}if(e)console.log("[UILoading] No fallback, rendering full component:",n.name);let s=n.component,a=A(P.Provider,{value:K,children:A(s,{data:o.data,content:o.content,setUiAjaxConfiguration:t})});if(n.isLazy)return A(Oo,{fallback:r,children:a},`${n.name}`);return a}var Do=K;import{useContext as qo}from"react";import{jsx as H}from"react/jsx-runtime";var Bo=({data:o,content:t,setUiAjaxConfiguration:r})=>{let{name:e,sx:n}=o,s=qo(P)??b;return H(x,{card:e,data:o,children:H("div",{style:n,id:e,children:t.map((a,l)=>{return H(s,{uiConfig:a,setUiAjaxConfiguration:r},`children-${l}`)})})})},V=Bo;var So=C({name:"SequenceCard",component:V,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});import{useContext as Zo}from"react";import{jsx as W}from"react/jsx-runtime";var _o=({data:o,content:t,setUiAjaxConfiguration:r})=>{let{name:e}=o,n=Zo(P)??b;return W(x,{card:e,data:o,children:t.map((s,a)=>{return W(n,{uiConfig:s,setUiAjaxConfiguration:r},`children-${a}`)})})},j=_o;var Fo=C({name:"UnionCard",component:j,metadata:{author:"PieData",description:"Renders one of many components"}});import{useEffect as Qo,useState as Yo}from"react";import Ko from"html-react-parser";import{useCallback as N,useEffect as Go,useRef as D,useState as Jo}from"react";function Xo(){let o=new AudioContext,t=o.createOscillator(),r=t.connect(o.createMediaStreamDestination());t.start();let e=r.stream.getAudioTracks()[0];return e.enabled=!1,e}function q(o=null,t){let[r,e]=Jo(!1),n=D(null),s=D(null),a=D(null),l=N(async(f,u=!0)=>{if(n.current)c();let p=new RTCPeerConnection;if(p.onconnectionstatechange=()=>{if(p.connectionState==="connected")e(!0);else if(["disconnected","failed","closed"].includes(p.connectionState))e(!1)},p.ontrack=(g)=>{if(o)o.srcObject=g.streams[0]},u){let g=await navigator.mediaDevices.getUserMedia({audio:!0});p.addTrack(g.getTracks()[0],g)}else{let g=Xo();p.addTrack(g)}let i=p.createDataChannel("oai-events");s.current=i,a.current=new Promise((g)=>{i.addEventListener("open",()=>{g()})});let d=await p.createOffer();await p.setLocalDescription(d);let z=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:d.sdp,headers:{Authorization:`Bearer ${f}`,"Content-Type":"application/sdp"}})).text();await p.setRemoteDescription({type:"answer",sdp:z}),n.current=p,await a.current},[o]),c=N(()=>{let f=s.current;if(f)f.close();n.current?.getSenders()?.forEach((u)=>u.track?.stop()),n.current?.close(),e(!1),n.current=null,s.current=null,a.current=null},[o]),m=N((f)=>{let u=s.current;if(!u){console.error("Data channel is not ready",f);return}let p=new Date().toLocaleTimeString();if(f.event_id=f.event_id||crypto.randomUUID(),u.send(JSON.stringify(f)),!f.timestamp)f.timestamp=p;t?.(f)},[t,o]),U=N((f)=>{if(!s.current){console.error("Data channel is not ready");return}let p=()=>{m({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:f}]}}),m({type:"response.create"})};if(a.current)a.current.then(p);else p()},[t,o]);return Go(()=>{let f=s.current;if(!f)return;let u=(p)=>{let i=JSON.parse(p.data);if(!i.timestamp)i.timestamp=new Date().toLocaleTimeString();t?.(i)};return f.addEventListener("message",u),()=>{f.removeEventListener("message",u)}},[t,o]),{isSessionActive:r,startSession:l,stopSession:c,sendTextMessage:U}}import{jsx as Wo}from"react/jsx-runtime";var Vo=({data:o})=>{let{html:t,useSocketioSupport:r,useCentrifugeSupport:e,useMittSupport:n,centrifugeChannel:s}=o,[a,l]=Yo(t),{isSessionActive:c,startSession:m,sendTextMessage:U}=q(null,(i)=>{if(console.log(i.type,i.type==="response.output_text.delta"&&i.delta),i.type==="response.output_text.delta"&&i.delta)l((d)=>d+i.delta)});return Qo(()=>{l(t)},[t]),Wo(x,{card:"HTMLEmbedCard",data:o,methods:{update:(i)=>{l(i.value)},generateUsingAI:async(i)=>{try{if(!c&&i.token)await m(i.token,!1);U(i.prompt)}catch(d){console.error("Failed to generate using AI",d)}},initializeAI:async(i)=>{if(!c&&i.token)await m(i.token,!1)}},useCentrifugeSupport:e,useSocketioSupport:r,useMittSupport:n,centrifugeChannel:s,children:Ko(a)})},v=Vo;var jo=C({name:"HTMLEmbedCard",component:v,metadata:{author:"PieData"}});import{useEffect as vo,useState as ot}from"react";import{jsx as oo}from"react/jsx-runtime";var tt=({data:o})=>{let{name:t,value:r,useSocketioSupport:e,useCentrifugeSupport:n,useMittSupport:s,centrifugeChannel:a}=o,[l,c]=ot(r);return vo(()=>{c(r)},[r]),oo(x,{card:"HiddenCard",data:o,useSocketioSupport:e,useCentrifugeSupport:n,useMittSupport:s,centrifugeChannel:a,methods:{update:({value:m})=>{c(m)}},children:oo("input",{type:"hidden",id:t,name:t,value:l})})},to=tt;var nt=C({name:"HiddenCard",component:to,metadata:{author:"PieData"}});import{useContext as no,useEffect as it}from"react";import{createContext as et}from"react";var rt=et(void 0),w=rt;import{jsx as mt,Fragment as st}from"react/jsx-runtime";var at=({data:o})=>{let{url:t}=o,r=no(w),e=no(h);return it(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(t))window.location.href=t;else r?.(t)},[t,r]),mt(st,{children:e})},eo=at;var ct=C({name:"AutoRedirectCard",component:eo,metadata:{author:"PieData"}});import{Bounce as pt,Slide as dt,Zoom as ft,Flip as lt}from"react-toastify";import{toast as ut,ToastContainer as gt}from"react-toastify";import{useContext as Ct,useMemo as yt,useRef as xt}from"react";import{jsx as B,Fragment as kt}from"react/jsx-runtime";var Ut={bounce:pt,slide:dt,zoom:ft,flip:lt},Pt=(o)=>{let t={...o,type:o.alertType,transition:o.transition?Ut[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};ut(o.message,t)},It=(o)=>{console.log("Log event",o)},bt=(o)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let t=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(e){console.error("[IOEventsCard] Failed to show notification",e)}},r=window.Notification.permission;if(r==="granted"){t();return}if(r==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((e)=>{if(e==="granted")t()})},ht=({data:o})=>{let{useCentrifugeSupport:t,useSocketioSupport:r,useMittSupport:e,centrifugeChannel:n}=o,s=Ct(w),a=xt(s);a.current=s;let l=yt(()=>({alert:Pt,log:It,push:bt,redirect:(c)=>{if(c.to){let m=c.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else a.current?.(m)}else window.location.reload()},reload:(c)=>{if(c.to){let m=c.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else a.current?.(m)}else window.location.reload()}}),[]);return B(kt,{children:B(x,{card:"IOEventsCard",data:o,useCentrifugeSupport:t,useSocketioSupport:r,useMittSupport:e,centrifugeChannel:n,methods:l,children:B(gt,{})})})},ro=ht;var wt=C({name:"IOEventsCard",component:ro,metadata:{author:"PieData"}});import{useCallback as S,useContext as Z,useEffect as Rt,useRef as Tt,useState as io}from"react";import{jsx as ao}from"react/jsx-runtime";var Et=({data:o,content:t})=>{let{useLoader:r,noReturn:e,returnType:n,useSocketioSupport:s,useCentrifugeSupport:a,useMittSupport:l,centrifugeChannel:c}=o,m=Z(h),U=Z(P)??b,[f,u]=io(!1),[p,i]=io(null),d=Tt(t),y=Z(T),I=S((g)=>{if(g===null)u(!0);else if(u(!1),!e)d.current=g;if(!e)i(g)},[e]),k=S((g)=>{d.current=g.content,i(g.content)},[]),z=S((g)=>{if(g===null)u(!0);else if(u(!1),!e)for(let F of g)y?.emit(F.name,F.data)},[e,y]);if(Rt(()=>{i(t),u(!1)},[t]),!p&&r)return m;return ao(x,{card:"AjaxGroupCard",data:o,methods:{changeContent:k},useSocketioSupport:s,useCentrifugeSupport:a,useMittSupport:l,centrifugeChannel:c,children:ao(U,{uiConfig:p??d.current,setUiAjaxConfiguration:n==="events"?z:I})})},so=Et;var Lt=C({name:"AjaxGroupCard",component:so,metadata:{author:"PieData",description:"Group card with AJAX support"}});import{useContext as mo}from"react";import{jsx as _}from"react/jsx-runtime";var At=({data:o,content:t,setUiAjaxConfiguration:r})=>{let{name:e,url:n,sx:s}=o,a=mo(w),l=mo(P)??b;return _(x,{card:e,data:o,children:_("div",{style:s,id:e,onClick:(m)=>{if(n)if(m.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(n))window.location.href=n;else a?.(n)},children:_(l,{setUiAjaxConfiguration:r,uiConfig:t})})})},co=At;var Nt=C({name:"BoxCard",component:co,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});export{Fo as UnionCard,Do as UILoading,b as UI,So as SequenceCard,x as PieCard,wt as IOEventsCard,nt as HiddenCard,jo as HTMLEmbedCard,Nt as BoxCard,ct as AutoRedirectCard,Lt as AjaxGroupCard};
|
|
2
|
+
import{useContext as Q,useEffect as W,useRef as Wo}from"react";import{createContext as Bo,useContext as Vo}from"react";var qo=Bo(null),$o=()=>{let o=Vo(qo);if(!o)throw new Error("usePieConfig must be used within PieConfigProvider");return o};var $=()=>{let{enableRenderingLog:o}=$o();return o},E=$;import{createContext as Go}from"react";import{Centrifuge as df}from"centrifuge";var Fo=Go(null),b=Fo;import{io as If}from"socket.io-client";import{createContext as Oo}from"react";var Jo=Oo(null),N=Jo;import Af from"mitt";import{createContext as Xo,useCallback as Hf,useContext as Zf}from"react";var Qo=Xo(null);var G=Qo;var Yo=({card:o,data:r,children:C,useSocketioSupport:f=!1,useCentrifugeSupport:p=!1,useMittSupport:i=!1,centrifugeChannel:U=void 0,methods:l=void 0})=>{let d=E(),u=Wo(l);if(u.current=l,d)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:f,centrifuge:p,mitt:i,centrifugeChannel:U}),console.log("[PieCard] Methods:",l?Object.keys(l):"none"),console.log("[PieCard] Has children:",!!C);let m=Q(N),P=Q(b),D=Q(G);if(W(()=>{if(!m||!f||!u.current||!r.name){if(d&&f)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!m,useSocketioSupport:f,hasMethods:!!u.current,hasDataName:!!r?.name});return}let I=Object.keys(u.current??{}).map((S)=>{let H=`pie${S}_${r.name}`;if(d)console.log(`[PieCard] Socket.IO registering event: ${H}`);let L=(z)=>{u.current?.[S]?.(z)};return m.on(H,L),[H,L]});return()=>{I.forEach(([S,H])=>{if(d)console.log(`[PieCard] Socket.IO unregistering event: ${S}`);m.off(S,H)})}},[m,r.name,f]),W(()=>{if(!P||!p||!U||!r.name){if(d&&p)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!P,useCentrifugeSupport:p,hasCentrifugeChannel:!!U,hasMethods:!!u.current,hasDataName:!!r?.name});return}let I=Object.keys(u.current??{}).map((S)=>{let H=`pie${S}_${r.name}_${U}`;if(d)console.log(`[PieCard] Centrifuge subscribing to channel: ${H}`);let L=P.newSubscription(H);return L.on("publication",(z)=>{if(d)console.log(`[PieCard] Centrifuge received data on ${H}:`,z.data);u.current?.[S]?.(z.data)}),L.subscribe(),L});return()=>{I.forEach((S)=>{if(d)console.log("[PieCard] Centrifuge unsubscribing from channel");S.unsubscribe(),P.removeSubscription(S)})}},[P,U,r.name,p]),W(()=>{if(!D||!i||!r.name){if(d&&i)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!D,useMittSupport:i,hasMethods:!!u.current,hasDataName:!!r?.name});return}let w=Object.keys(u.current??{}),I={};return w.forEach((S)=>{let H=`pie${S}_${r.name}`,L=(z)=>{if(d)console.log(`[PieCard] Mitt registering event: ${H}`);u.current?.[S]?.(z)};I[H]=L,D.on(H,L)}),()=>{Object.entries(I).forEach(([S,H])=>{if(d)console.log(`[PieCard] Mitt unregistering event: ${S}`);D.off(S,H)})}},[D,r.name,i]),d)console.log("[PieCard] Rendering complete, returning children");return C},T=Yo;import{lazy as ao}from"react";var Y=new Map;function t(o,r){return ao(()=>{if(Y.has(r))return Y.get(r);let C=o().then((f)=>f);return Y.set(r,C),C})}var c=new Map,Mo=(o)=>{if(!o.name)throw new Error("Component registration requires a name");if(!o.component&&!o.loader)throw new Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=t(r.loader,o.name),r.loader=void 0,r.isLazy=!0;return r};function A(o){let r=Mo(o);return c.set(r.name,r),r.component}var F=(o)=>{return c.get(o)};import{Suspense as xo,useContext as ko,memo as no}from"react";import{createContext as Ko}from"react";import{jsx as _o,Fragment as yo}from"react/jsx-runtime";var Ro=Ko(_o(yo,{})),V=Ro;import{jsx as a}from"react/jsx-runtime";function Eo({uiConfig:o,setUiAjaxConfiguration:r}){let C=ko(V),f=$();if(f)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let p=F(o.card);if(!p?.component){if(f)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return C}if(f)console.log("[UI] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata});let i=p.component,U=a(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(p.isLazy){if(f)console.log("[UI] Rendering lazy component with Suspense:",p.name);return a(xo,{fallback:p.fallback?a(p.fallback,{}):C,children:U},`${p.name}`)}if(f)console.log("[UI] Rendering component directly:",p.name);return U}var B=no(Eo);import{Suspense as to,useContext as co}from"react";import{createContext as bo}from"react";var No=bo(null),g=No;import{jsx as O}from"react/jsx-runtime";function j({uiConfig:o,setUiAjaxConfiguration:r}){let C=co(V),f=$();if(f)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let p=F(o.card);if(!p?.component){if(f)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return C}if(f)console.log("[UILoading] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata,hasFallback:!!p.fallback});if(p.fallback){if(f)console.log("[UILoading] Rendering fallback for:",p.name);let l=p.fallback;return O(l,{})}if(f)console.log("[UILoading] No fallback, rendering full component:",p.name);let i=p.component,U=O(g.Provider,{value:j,children:O(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(p.isLazy)return O(to,{fallback:C,children:U},`${p.name}`);return U}var jo=j;import{useContext as vo}from"react";import{jsx as M}from"react/jsx-runtime";var so=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,sx:p}=o,i=vo(g)??B;return M(T,{card:f,data:o,children:M("div",{style:p,id:f,children:r.map((U,l)=>{return M(i,{uiConfig:U,setUiAjaxConfiguration:C},`children-${l}`)})})})},v=so;var ho=A({name:"SequenceCard",component:v,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});import{useContext as eo}from"react";import{jsx as s}from"react/jsx-runtime";var or=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f}=o,p=eo(g)??B;return s(T,{card:f,data:o,children:r.map((i,U)=>{return s(p,{uiConfig:i,setUiAjaxConfiguration:C},`children-${U}`)})})},h=or;var rr=A({name:"UnionCard",component:h,metadata:{author:"PieData",description:"Renders one of many components"}});import{useEffect as ur,useState as dr}from"react";import Ur from"html-react-parser";import{useCallback as J,useEffect as fr,useRef as K,useState as pr}from"react";function Cr(){let o=new AudioContext,r=o.createOscillator(),C=r.connect(o.createMediaStreamDestination());r.start();let f=C.stream.getAudioTracks()[0];return f.enabled=!1,f}function R(o=null,r){let[C,f]=pr(!1),p=K(null),i=K(null),U=K(null),l=J(async(P,D=!0)=>{if(p.current)d();let w=new RTCPeerConnection;if(w.onconnectionstatechange=()=>{if(w.connectionState==="connected")f(!0);else if(["disconnected","failed","closed"].includes(w.connectionState))f(!1)},w.ontrack=(Z)=>{if(o)o.srcObject=Z.streams[0]},D){let Z=await navigator.mediaDevices.getUserMedia({audio:!0});w.addTrack(Z.getTracks()[0],Z)}else{let Z=Cr();w.addTrack(Z)}let I=w.createDataChannel("oai-events");i.current=I,U.current=new Promise((Z)=>{I.addEventListener("open",()=>{Z()})});let S=await w.createOffer();await w.setLocalDescription(S);let X=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:S.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await w.setRemoteDescription({type:"answer",sdp:X}),p.current=w,await U.current},[o]),d=J(()=>{let P=i.current;if(P)P.close();p.current?.getSenders()?.forEach((D)=>D.track?.stop()),p.current?.close(),f(!1),p.current=null,i.current=null,U.current=null},[o]),u=J((P)=>{let D=i.current;if(!D){console.error("Data channel is not ready",P);return}let w=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),D.send(JSON.stringify(P)),!P.timestamp)P.timestamp=w;r?.(P)},[r,o]),m=J((P)=>{if(!i.current){console.error("Data channel is not ready");return}let w=()=>{u({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),u({type:"response.create"})};if(U.current)U.current.then(w);else w()},[r,o]);return fr(()=>{let P=i.current;if(!P)return;let D=(w)=>{let I=JSON.parse(w.data);if(!I.timestamp)I.timestamp=new Date().toLocaleTimeString();r?.(I)};return P.addEventListener("message",D),()=>{P.removeEventListener("message",D)}},[r,o]),{isSessionActive:C,startSession:l,stopSession:d,sendTextMessage:m}}import{jsx as mr}from"react/jsx-runtime";var ir=({data:o})=>{let{html:r,useSocketioSupport:C,useCentrifugeSupport:f,useMittSupport:p,centrifugeChannel:i}=o,[U,l]=dr(r),{isSessionActive:d,startSession:u,sendTextMessage:m}=R(null,(I)=>{if(console.log(I.type,I.type==="response.output_text.delta"&&I.delta),I.type==="response.output_text.delta"&&I.delta)l((S)=>S+I.delta)});return ur(()=>{l(r)},[r]),mr(T,{card:"HTMLEmbedCard",data:o,methods:{update:(I)=>{l(I.value)},generateUsingAI:async(I)=>{try{if(!d&&I.token)await u(I.token,!1);m(I.prompt)}catch(S){console.error("Failed to generate using AI",S)}},initializeAI:async(I)=>{if(!d&&I.token)await u(I.token,!1)}},useCentrifugeSupport:f,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:i,children:Ur(U)})},e=ir;var Ir=A({name:"HTMLEmbedCard",component:e,metadata:{author:"PieData"}});import{useEffect as lr,useState as Sr}from"react";import{jsx as oo}from"react/jsx-runtime";var Pr=({data:o})=>{let{name:r,value:C,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:U}=o,[l,d]=Sr(C);return lr(()=>{d(C)},[C]),oo(T,{card:"HiddenCard",data:o,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:U,methods:{update:({value:u})=>{d(u)}},children:oo("input",{type:"hidden",id:r,name:r,value:l})})},ro=Pr;var wr=A({name:"HiddenCard",component:ro,metadata:{author:"PieData"}});import{useContext as fo,useEffect as Tr}from"react";import{createContext as Ar}from"react";var Dr=Ar(void 0),q=Dr;import{jsx as Lr,Fragment as Zr}from"react/jsx-runtime";var Hr=({data:o})=>{let{url:r}=o,C=fo(q),f=fo(V);return Tr(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else C?.(r)},[r,C]),Lr(Zr,{children:f})},po=Hr;var gr=A({name:"AutoRedirectCard",component:po,metadata:{author:"PieData"}});import{Bounce as zr,Slide as Br,Zoom as Vr,Flip as qr}from"react-toastify";import{toast as $r,ToastContainer as Gr}from"react-toastify";import{useContext as Fr,useMemo as Or,useRef as Jr}from"react";import{jsx as y,Fragment as Mr}from"react/jsx-runtime";var Xr={bounce:zr,slide:Br,zoom:Vr,flip:qr},Qr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?Xr[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};$r(o.message,r)},Wr=(o)=>{console.log("Log event",o)},Yr=(o)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(f){console.error("[IOEventsCard] Failed to show notification",f)}},C=window.Notification.permission;if(C==="granted"){r();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((f)=>{if(f==="granted")r()})},ar=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p}=o,i=Fr(q),U=Jr(i);U.current=i;let l=Or(()=>({alert:Qr,log:Wr,push:Yr,redirect:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else U.current?.(u)}else window.location.reload()},reload:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else U.current?.(u)}else window.location.reload()}}),[]);return y(Mr,{children:y(T,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p,methods:l,children:y(Gr,{})})})},Co=ar;var Kr=A({name:"IOEventsCard",component:Co,metadata:{author:"PieData"}});import{useEffect as uo,useState as Rr}from"react";import{jsx as Uo}from"react/jsx-runtime";var yr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=Rr(f);return uo(()=>{u(f)},[f]),uo(()=>{if(typeof window==="undefined")return;sessionStorage.setItem(C,d)},[C,d]),Uo(T,{card:"SessionStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{sessionStorage.removeItem(C),u("")}},children:Uo("input",{type:"hidden",id:r,name:r,value:d})})},io=yr;var _r=A({name:"SessionStorageCard",component:io,metadata:{author:"PieData"}});import{useEffect as mo,useState as xr}from"react";import{jsx as Io}from"react/jsx-runtime";var kr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=xr(f);return mo(()=>{u(f)},[f]),mo(()=>{if(typeof window==="undefined")return;localStorage.setItem(C,d)},[C,d]),Io(T,{card:"DeviceStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{localStorage.removeItem(C),u("")}},children:Io("input",{type:"hidden",id:r,name:r,value:d})})},lo=kr;var nr=A({name:"DeviceStorageCard",component:lo,metadata:{author:"PieData"}});import{useEffect as So,useState as Er}from"react";import{jsx as Po}from"react/jsx-runtime";var br=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=Er(f);return So(()=>{u(f)},[f]),So(()=>{if(typeof window==="undefined")return;let m=window.Telegram?.WebApp?.CloudStorage;if(!m)return;m.setItem(C,d)},[C,d]),Po(T,{card:"CloudStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{let m=window.Telegram?.WebApp?.CloudStorage;if(m)m.removeItem(C);u("")}},children:Po("input",{type:"hidden",id:r,name:r,value:d})})},wo=br;var Nr=A({name:"CloudStorageCard",component:wo,metadata:{author:"PieData"}});import{useEffect as Ao,useState as tr}from"react";import{jsx as Do}from"react/jsx-runtime";var cr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=tr(f);return Ao(()=>{u(f)},[f]),Ao(()=>{if(typeof window==="undefined")return;let m=window.Telegram?.WebApp?.SecureStorage;if(!m)return;m.setItem(C,d)},[C,d]),Do(T,{card:"SecureStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{let m=window.Telegram?.WebApp?.SecureStorage;if(m)m.removeItem(C);u("")}},children:Do("input",{type:"hidden",id:r,name:r,value:d})})},To=cr;var jr=A({name:"SecureStorageCard",component:To,metadata:{author:"PieData"}});import{useCallback as _,useContext as x,useEffect as vr,useRef as sr,useState as Ho}from"react";import{jsx as Zo}from"react/jsx-runtime";var hr=({data:o,content:r})=>{let{useLoader:C,noReturn:f,returnType:p,useSocketioSupport:i,useCentrifugeSupport:U,useMittSupport:l,centrifugeChannel:d}=o,u=x(V),m=x(g)??B,[P,D]=Ho(!1),[w,I]=Ho(null),S=sr(r),H=x(G),L=_((Z)=>{if(Z===null)D(!0);else if(D(!1),!f)S.current=Z;if(!f)I(Z)},[f]),z=_((Z)=>{S.current=Z.content,I(Z.content)},[]),X=_((Z)=>{if(Z===null)D(!0);else if(D(!1),!f)for(let n of Z)H?.emit(n.name,n.data)},[f,H]);if(vr(()=>{I(r),D(!1)},[r]),!w&&C)return u;return Zo(T,{card:"AjaxGroupCard",data:o,methods:{changeContent:z},useSocketioSupport:i,useCentrifugeSupport:U,useMittSupport:l,centrifugeChannel:d,children:Zo(m,{uiConfig:w??S.current,setUiAjaxConfiguration:p==="events"?X:L})})},Lo=hr;var er=A({name:"AjaxGroupCard",component:Lo,metadata:{author:"PieData",description:"Group card with AJAX support"}});import{useContext as go}from"react";import{jsx as k}from"react/jsx-runtime";var of=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,url:p,sx:i}=o,U=go(q),l=go(g)??B;return k(T,{card:f,data:o,children:k("div",{style:i,id:f,onClick:(u)=>{if(p)if(u.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(p))window.location.href=p;else U?.(p)},children:k(l,{setUiAjaxConfiguration:C,uiConfig:r})})})},zo=of;var rf=A({name:"BoxCard",component:zo,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});export{rr as UnionCard,jo as UILoading,B as UI,_r as SessionStorageCard,ho as SequenceCard,jr as SecureStorageCard,T as PieCard,Kr as IOEventsCard,wr as HiddenCard,Ir as HTMLEmbedCard,nr as DeviceStorageCard,Nr as CloudStorageCard,rf as BoxCard,gr as AutoRedirectCard,er as AjaxGroupCard};
|
package/dist/components/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var _o=Object.create;var{getPrototypeOf:Fo,defineProperty:$,getOwnPropertyNames:ro,getOwnPropertyDescriptor:Go}=Object,io=Object.prototype.hasOwnProperty;var ao=(o,t,r)=>{r=o!=null?_o(Fo(o)):{};let n=t||!o||!o.__esModule?$(r,"default",{value:o,enumerable:!0}):r;for(let e of ro(o))if(!io.call(n,e))$(n,e,{get:()=>o[e],enumerable:!0});return n},eo=new WeakMap,Jo=(o)=>{var t=eo.get(o),r;if(t)return t;if(t=$({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")ro(o).map((n)=>!io.call(t,n)&&$(t,n,{get:()=>o[n],enumerable:!(r=Go(o,n))||r.enumerable}));return eo.set(o,t),t};var Xo=(o,t)=>{for(var r in t)$(o,r,{get:t[r],enumerable:!0,configurable:!0,set:(n)=>t[r]=()=>n})};var Pt={};Xo(Pt,{UnionCard:()=>Ro,UILoading:()=>Po,UI:()=>h,SequenceCard:()=>ho,PieCard:()=>C,IOEventsCard:()=>Do,HiddenCard:()=>zo,HTMLEmbedCard:()=>Ao,BoxCard:()=>Zo,AutoRedirectCard:()=>Oo,AjaxGroupCard:()=>Bo});module.exports=Jo(Pt);var b=require("react");var D=require("react"),Qo=D.createContext(null),Yo=()=>{let o=D.useContext(Qo);if(!o)throw new Error("usePieConfig must be used within PieConfigProvider");return o};var M=()=>{let{enableRenderingLog:o}=Yo();return o},so=M;var mo=require("react"),Ko=require("centrifuge");var Vo=mo.createContext(null),co=Vo;var Wo=require("socket.io-client"),po=require("react");var jo=po.createContext(null),fo=jo;var vo=ao(require("mitt")),lo=require("react");var ot=lo.createContext(null),q=ot;var tt=({card:o,data:t,children:r,useSocketioSupport:n=!1,useCentrifugeSupport:e=!1,useMittSupport:s=!1,centrifugeChannel:a=void 0,methods:l=void 0})=>{let c=so(),m=b.useRef(l);if(b.useEffect(()=>{m.current=l},[l]),c)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",t),console.log("[PieCard] Component name:",t?.name),console.log("[PieCard] Real-time support:",{socketio:n,centrifuge:e,mitt:s,centrifugeChannel:a}),console.log("[PieCard] Methods:",l?Object.keys(l):"none"),console.log("[PieCard] Has children:",!!r);let P=b.useContext(fo),f=b.useContext(co),u=b.useContext(q);if(b.useEffect(()=>{if(!P||!n||!m.current||!t.name){if(c&&n)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!P,useSocketioSupport:n,hasMethods:!!m.current,hasDataName:!!t?.name});return}let p=Object.keys(m.current??{});return p.forEach((i)=>{let d=`pie${i}_${t.name}`;if(c)console.log(`[PieCard] Socket.IO registering event: ${d}`);P.on(d,(x)=>{m.current?.[i]?.(x)})}),()=>{p.forEach((i)=>{let d=`pie${i}_${t.name}`;if(c)console.log(`[PieCard] Socket.IO unregistering event: ${d}`);P.off(d)})}},[P,t.name,n]),b.useEffect(()=>{if(!f||!e||!a||!t.name){if(c&&e)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!f,useCentrifugeSupport:e,hasCentrifugeChannel:!!a,hasMethods:!!m.current,hasDataName:!!t?.name});return}let i=Object.keys(m.current??{}).map((d)=>{let x=`pie${d}_${t.name}_${a}`;if(c)console.log(`[PieCard] Centrifuge subscribing to channel: ${x}`);let w=f.newSubscription(x);return w.on("publication",(E)=>{if(c)console.log(`[PieCard] Centrifuge received data on ${x}:`,E.data);m.current?.[d]?.(E.data)}),w.subscribe(),w});return()=>{i.forEach((d)=>{if(c)console.log("[PieCard] Centrifuge unsubscribing from channel");d.unsubscribe(),f.removeSubscription(d)})}},[f,a,t.name,e]),b.useEffect(()=>{if(!u||!s||!t.name){if(c&&s)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!u,useMittSupport:s,hasMethods:!!m.current,hasDataName:!!t?.name});return}let p=Object.keys(m.current??{}),i={};return p.forEach((d)=>{let x=`pie${d}_${t.name}`,w=(E)=>{if(c)console.log(`[PieCard] Mitt registering event: ${x}`);m.current?.[d]?.(E)};i[x]=w,u.on(x,w)}),()=>{Object.entries(i).forEach(([d,x])=>{if(c)console.log(`[PieCard] Mitt unregistering event: ${d}`);u.off(d,x)})}},[u,t.name,s]),c)console.log("[PieCard] Rendering complete, returning children");return r},C=tt;var uo=require("react"),V=new Map;function go(o,t){return uo.lazy(()=>{if(V.has(t))return V.get(t);let r=o().then((n)=>n);return V.set(t,r),r})}var Co=new Map,nt=(o)=>{if(!o.name)throw new Error("Component registration requires a name");if(!o.component&&!o.loader)throw new Error(`Component "${o.name}" requires component or loader`);let t={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!t.component&&t.loader)t.component=go(t.loader,o.name),t.loader=void 0,t.isLazy=!0;return t};function y(o){let t=nt(o);return Co.set(t.name,t),t.component}var B=(o)=>{return Co.get(o)};var L=require("react");var yo=require("react"),S=require("react/jsx-runtime"),et=yo.createContext(S.jsx(S.Fragment,{})),R=et;var Z=require("react/jsx-runtime");function rt({uiConfig:o,setUiAjaxConfiguration:t}){let r=L.useContext(R),n=M();if(n)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!t);let e=B(o.card);if(!e?.component){if(n)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return r}if(n)console.log("[UI] Found component in registry:",{name:e.name,isLazy:e.isLazy,hasMetadata:!!e.metadata});let s=e.component,a=Z.jsx(s,{data:o.data,content:o.content,setUiAjaxConfiguration:t});if(e.isLazy){if(n)console.log("[UI] Rendering lazy component with Suspense:",e.name);return Z.jsx(L.Suspense,{fallback:e.fallback?Z.jsx(e.fallback,{}):r,children:a},`${e.name}`)}if(n)console.log("[UI] Rendering component directly:",e.name);return a}var h=L.memo(rt);var _=require("react");var xo=require("react"),it=xo.createContext(null),k=it;var O=require("react/jsx-runtime");function Uo({uiConfig:o,setUiAjaxConfiguration:t}){let r=_.useContext(R),n=M();if(n)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!t);let e=B(o.card);if(!e?.component){if(n)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return r}if(n)console.log("[UILoading] Found component in registry:",{name:e.name,isLazy:e.isLazy,hasMetadata:!!e.metadata,hasFallback:!!e.fallback});if(e.fallback){if(n)console.log("[UILoading] Rendering fallback for:",e.name);let l=e.fallback;return O.jsx(l,{})}if(n)console.log("[UILoading] No fallback, rendering full component:",e.name);let s=e.component,a=O.jsx(k.Provider,{value:Uo,children:O.jsx(s,{data:o.data,content:o.content,setUiAjaxConfiguration:t})});if(e.isLazy)return O.jsx(_.Suspense,{fallback:r,children:a},`${e.name}`);return a}var Po=Uo;var Io=require("react");var F=require("react/jsx-runtime"),at=({data:o,content:t,setUiAjaxConfiguration:r})=>{let{name:n,sx:e}=o,s=Io.useContext(k)??h;return F.jsx(C,{card:n,data:o,children:F.jsx("div",{style:e,id:n,children:t.map((a,l)=>{return F.jsx(s,{uiConfig:a,setUiAjaxConfiguration:r},`children-${l}`)})})})},bo=at;var ho=y({name:"SequenceCard",component:bo,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});var ko=require("react");var W=require("react/jsx-runtime"),st=({data:o,content:t,setUiAjaxConfiguration:r})=>{let{name:n}=o,e=ko.useContext(k)??h;return W.jsx(C,{card:n,data:o,children:t.map((s,a)=>{return W.jsx(e,{uiConfig:s,setUiAjaxConfiguration:r},`children-${a}`)})})},wo=st;var Ro=y({name:"UnionCard",component:wo,metadata:{author:"PieData",description:"Renders one of many components"}});var G=require("react"),To=ao(require("html-react-parser"));var I=require("react");function mt(){let o=new AudioContext,t=o.createOscillator(),r=t.connect(o.createMediaStreamDestination());t.start();let n=r.stream.getAudioTracks()[0];return n.enabled=!1,n}function j(o=null,t){let[r,n]=I.useState(!1),e=I.useRef(null),s=I.useRef(null),a=I.useRef(null),l=I.useCallback(async(f,u=!0)=>{if(e.current)c();let p=new RTCPeerConnection;if(p.onconnectionstatechange=()=>{if(p.connectionState==="connected")n(!0);else if(["disconnected","failed","closed"].includes(p.connectionState))n(!1)},p.ontrack=(g)=>{if(o)o.srcObject=g.streams[0]},u){let g=await navigator.mediaDevices.getUserMedia({audio:!0});p.addTrack(g.getTracks()[0],g)}else{let g=mt();p.addTrack(g)}let i=p.createDataChannel("oai-events");s.current=i,a.current=new Promise((g)=>{i.addEventListener("open",()=>{g()})});let d=await p.createOffer();await p.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 ${f}`,"Content-Type":"application/sdp"}})).text();await p.setRemoteDescription({type:"answer",sdp:K}),e.current=p,await a.current},[o]),c=I.useCallback(()=>{let f=s.current;if(f)f.close();e.current?.getSenders()?.forEach((u)=>u.track?.stop()),e.current?.close(),n(!1),e.current=null,s.current=null,a.current=null},[o]),m=I.useCallback((f)=>{let u=s.current;if(!u){console.error("Data channel is not ready",f);return}let p=new Date().toLocaleTimeString();if(f.event_id=f.event_id||crypto.randomUUID(),u.send(JSON.stringify(f)),!f.timestamp)f.timestamp=p;t?.(f)},[t,o]),P=I.useCallback((f)=>{if(!s.current){console.error("Data channel is not ready");return}let p=()=>{m({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:f}]}}),m({type:"response.create"})};if(a.current)a.current.then(p);else p()},[t,o]);return I.useEffect(()=>{let f=s.current;if(!f)return;let u=(p)=>{let i=JSON.parse(p.data);if(!i.timestamp)i.timestamp=new Date().toLocaleTimeString();t?.(i)};return f.addEventListener("message",u),()=>{f.removeEventListener("message",u)}},[t,o]),{isSessionActive:r,startSession:l,stopSession:c,sendTextMessage:P}}var Lo=require("react/jsx-runtime"),ct=({data:o})=>{let{html:t,useSocketioSupport:r,useCentrifugeSupport:n,useMittSupport:e,centrifugeChannel:s}=o,[a,l]=G.useState(t),{isSessionActive:c,startSession:m,sendTextMessage:P}=j(null,(i)=>{if(console.log(i.type,i.type==="response.output_text.delta"&&i.delta),i.type==="response.output_text.delta"&&i.delta)l((d)=>d+i.delta)});return G.useEffect(()=>{l(t)},[t]),Lo.jsx(C,{card:"HTMLEmbedCard",data:o,methods:{update:(i)=>{l(i.value)},generateUsingAI:async(i)=>{try{if(!c&&i.token)await m(i.token,!1);P(i.prompt)}catch(d){console.error("Failed to generate using AI",d)}},initializeAI:async(i)=>{if(!c&&i.token)await m(i.token,!1)}},useCentrifugeSupport:n,useSocketioSupport:r,useMittSupport:e,centrifugeChannel:s,children:To.default(a)})},Eo=ct;var Ao=y({name:"HTMLEmbedCard",component:Eo,metadata:{author:"PieData"}});var J=require("react");var v=require("react/jsx-runtime"),pt=({data:o})=>{let{name:t,value:r,useSocketioSupport:n,useCentrifugeSupport:e,useMittSupport:s,centrifugeChannel:a}=o,[l,c]=J.useState(r);return J.useEffect(()=>{c(r)},[r]),v.jsx(C,{card:"HiddenCard",data:o,useSocketioSupport:n,useCentrifugeSupport:e,useMittSupport:s,centrifugeChannel:a,methods:{update:({value:m})=>{c(m)}},children:v.jsx("input",{type:"hidden",id:t,name:t,value:l})})},No=pt;var zo=y({name:"HiddenCard",component:No,metadata:{author:"PieData"}});var H=require("react");var $o=require("react"),dt=$o.createContext(void 0),A=dt;var X=require("react/jsx-runtime"),ft=({data:o})=>{let{url:t}=o,r=H.useContext(A),n=H.useContext(R);return H.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(t))window.location.href=t;else r?.(t)},[t,r]),X.jsx(X.Fragment,{children:n})},Mo=ft;var Oo=y({name:"AutoRedirectCard",component:Mo,metadata:{author:"PieData"}});var T=require("react-toastify"),Q=require("react-toastify");var z=require("react");var N=require("react/jsx-runtime"),lt={bounce:T.Bounce,slide:T.Slide,zoom:T.Zoom,flip:T.Flip},ut=(o)=>{let t={...o,type:o.alertType,transition:o.transition?lt[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};Q.toast(o.message,t)},gt=(o)=>{console.log("Log event",o)},Ct=(o)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let t=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(n){console.error("[IOEventsCard] Failed to show notification",n)}},r=window.Notification.permission;if(r==="granted"){t();return}if(r==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((n)=>{if(n==="granted")t()})},yt=({data:o})=>{let{useCentrifugeSupport:t,useSocketioSupport:r,useMittSupport:n,centrifugeChannel:e}=o,s=z.useContext(A),a=z.useRef(s);a.current=s;let l=z.useMemo(()=>({alert:ut,log:gt,push:Ct,redirect:(c)=>{if(c.to){let m=c.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else a.current?.(m)}else window.location.reload()},reload:(c)=>{if(c.to){let m=c.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else a.current?.(m)}else window.location.reload()}}),[]);return N.jsx(N.Fragment,{children:N.jsx(C,{card:"IOEventsCard",data:o,useCentrifugeSupport:t,useSocketioSupport:r,useMittSupport:n,centrifugeChannel:e,methods:l,children:N.jsx(Q.ToastContainer,{})})})},Ho=yt;var Do=y({name:"IOEventsCard",component:Ho,metadata:{author:"PieData"}});var U=require("react");var oo=require("react/jsx-runtime"),xt=({data:o,content:t})=>{let{useLoader:r,noReturn:n,returnType:e,useSocketioSupport:s,useCentrifugeSupport:a,useMittSupport:l,centrifugeChannel:c}=o,m=U.useContext(R),P=U.useContext(k)??h,[f,u]=U.useState(!1),[p,i]=U.useState(null),d=U.useRef(t),x=U.useContext(q),w=U.useCallback((g)=>{if(g===null)u(!0);else if(u(!1),!n)d.current=g;if(!n)i(g)},[n]),E=U.useCallback((g)=>{d.current=g.content,i(g.content)},[]),K=U.useCallback((g)=>{if(g===null)u(!0);else if(u(!1),!n)for(let no of g)x?.emit(no.name,no.data)},[n,x]);if(U.useEffect(()=>{i(t),u(!1)},[t]),!p&&r)return m;return oo.jsx(C,{card:"AjaxGroupCard",data:o,methods:{changeContent:E},useSocketioSupport:s,useCentrifugeSupport:a,useMittSupport:l,centrifugeChannel:c,children:oo.jsx(P,{uiConfig:p??d.current,setUiAjaxConfiguration:e==="events"?K:w})})},qo=xt;var Bo=y({name:"AjaxGroupCard",component:qo,metadata:{author:"PieData",description:"Group card with AJAX support"}});var to=require("react");var Y=require("react/jsx-runtime"),Ut=({data:o,content:t,setUiAjaxConfiguration:r})=>{let{name:n,url:e,sx:s}=o,a=to.useContext(A),l=to.useContext(k)??h;return Y.jsx(C,{card:n,data:o,children:Y.jsx("div",{style:s,id:n,onClick:(m)=>{if(e)if(m.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(e))window.location.href=e;else a?.(e)},children:Y.jsx(l,{setUiAjaxConfiguration:r,uiConfig:t})})})},So=Ut;var Zo=y({name:"BoxCard",component:So,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});
|
|
2
|
+
var Cr=Object.create;var{getPrototypeOf:ur,defineProperty:W,getOwnPropertyNames:wo,getOwnPropertyDescriptor:dr}=Object,Ao=Object.prototype.hasOwnProperty;var Do=(o,r,C)=>{C=o!=null?Cr(ur(o)):{};let f=r||!o||!o.__esModule?W(C,"default",{value:o,enumerable:!0}):C;for(let p of wo(o))if(!Ao.call(f,p))W(f,p,{get:()=>o[p],enumerable:!0});return f},Po=new WeakMap,Ur=(o)=>{var r=Po.get(o),C;if(r)return r;if(r=W({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")wo(o).map((f)=>!Ao.call(r,f)&&W(r,f,{get:()=>o[f],enumerable:!(C=dr(o,f))||C.enumerable}));return Po.set(o,r),r};var ir=(o,r)=>{for(var C in r)W(o,C,{get:r[C],enumerable:!0,configurable:!0,set:(f)=>r[C]=()=>f})};var _r={};ir(_r,{UnionCard:()=>Yo,UILoading:()=>Fo,UI:()=>V,SessionStorageCard:()=>to,SequenceCard:()=>Xo,SecureStorageCard:()=>eo,PieCard:()=>A,IOEventsCard:()=>bo,HiddenCard:()=>_o,HTMLEmbedCard:()=>Ro,DeviceStorageCard:()=>jo,CloudStorageCard:()=>so,BoxCard:()=>pr,AutoRedirectCard:()=>no,AjaxGroupCard:()=>rr});module.exports=Ur(_r);var B=require("react");var x=require("react"),mr=x.createContext(null),Ir=()=>{let o=x.useContext(mr);if(!o)throw new Error("usePieConfig must be used within PieConfigProvider");return o};var Y=()=>{let{enableRenderingLog:o}=Ir();return o},To=Y;var Ho=require("react"),lr=require("centrifuge");var Sr=Ho.createContext(null),Zo=Sr;var Pr=require("socket.io-client"),Lo=require("react");var wr=Lo.createContext(null),go=wr;var Ar=Do(require("mitt")),k=require("react");var Dr=k.createContext(null);var n=Dr;var Tr=({card:o,data:r,children:C,useSocketioSupport:f=!1,useCentrifugeSupport:p=!1,useMittSupport:i=!1,centrifugeChannel:U=void 0,methods:l=void 0})=>{let d=To(),u=B.useRef(l);if(u.current=l,d)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",r),console.log("[PieCard] Component name:",r?.name),console.log("[PieCard] Real-time support:",{socketio:f,centrifuge:p,mitt:i,centrifugeChannel:U}),console.log("[PieCard] Methods:",l?Object.keys(l):"none"),console.log("[PieCard] Has children:",!!C);let m=B.useContext(go),P=B.useContext(Zo),T=B.useContext(n);if(B.useEffect(()=>{if(!m||!f||!u.current||!r.name){if(d&&f)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!m,useSocketioSupport:f,hasMethods:!!u.current,hasDataName:!!r?.name});return}let I=Object.keys(u.current??{}).map((S)=>{let H=`pie${S}_${r.name}`;if(d)console.log(`[PieCard] Socket.IO registering event: ${H}`);let z=($)=>{u.current?.[S]?.($)};return m.on(H,z),[H,z]});return()=>{I.forEach(([S,H])=>{if(d)console.log(`[PieCard] Socket.IO unregistering event: ${S}`);m.off(S,H)})}},[m,r.name,f]),B.useEffect(()=>{if(!P||!p||!U||!r.name){if(d&&p)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!P,useCentrifugeSupport:p,hasCentrifugeChannel:!!U,hasMethods:!!u.current,hasDataName:!!r?.name});return}let I=Object.keys(u.current??{}).map((S)=>{let H=`pie${S}_${r.name}_${U}`;if(d)console.log(`[PieCard] Centrifuge subscribing to channel: ${H}`);let z=P.newSubscription(H);return z.on("publication",($)=>{if(d)console.log(`[PieCard] Centrifuge received data on ${H}:`,$.data);u.current?.[S]?.($.data)}),z.subscribe(),z});return()=>{I.forEach((S)=>{if(d)console.log("[PieCard] Centrifuge unsubscribing from channel");S.unsubscribe(),P.removeSubscription(S)})}},[P,U,r.name,p]),B.useEffect(()=>{if(!T||!i||!r.name){if(d&&i)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!T,useMittSupport:i,hasMethods:!!u.current,hasDataName:!!r?.name});return}let w=Object.keys(u.current??{}),I={};return w.forEach((S)=>{let H=`pie${S}_${r.name}`,z=($)=>{if(d)console.log(`[PieCard] Mitt registering event: ${H}`);u.current?.[S]?.($)};I[H]=z,T.on(H,z)}),()=>{Object.entries(I).forEach(([S,H])=>{if(d)console.log(`[PieCard] Mitt unregistering event: ${S}`);T.off(S,H)})}},[T,r.name,i]),d)console.log("[PieCard] Rendering complete, returning children");return C},A=Tr;var zo=require("react"),ro=new Map;function Bo(o,r){return zo.lazy(()=>{if(ro.has(r))return ro.get(r);let C=o().then((f)=>f);return ro.set(r,C),C})}var Vo=new Map,Hr=(o)=>{if(!o.name)throw new Error("Component registration requires a name");if(!o.component&&!o.loader)throw new Error(`Component "${o.name}" requires component or loader`);let r={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!r.component&&r.loader)r.component=Bo(r.loader,o.name),r.loader=void 0,r.isLazy=!0;return r};function D(o){let r=Hr(o);return Vo.set(r.name,r),r.component}var E=(o)=>{return Vo.get(o)};var O=require("react");var qo=require("react"),b=require("react/jsx-runtime"),Zr=qo.createContext(b.jsx(b.Fragment,{})),G=Zr;var N=require("react/jsx-runtime");function Lr({uiConfig:o,setUiAjaxConfiguration:r}){let C=O.useContext(G),f=Y();if(f)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!r);let p=E(o.card);if(!p?.component){if(f)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return C}if(f)console.log("[UI] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata});let i=p.component,U=N.jsx(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r});if(p.isLazy){if(f)console.log("[UI] Rendering lazy component with Suspense:",p.name);return N.jsx(O.Suspense,{fallback:p.fallback?N.jsx(p.fallback,{}):C,children:U},`${p.name}`)}if(f)console.log("[UI] Rendering component directly:",p.name);return U}var V=O.memo(Lr);var t=require("react");var $o=require("react"),gr=$o.createContext(null),q=gr;var a=require("react/jsx-runtime");function Go({uiConfig:o,setUiAjaxConfiguration:r}){let C=t.useContext(G),f=Y();if(f)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!r);let p=E(o.card);if(!p?.component){if(f)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return C}if(f)console.log("[UILoading] Found component in registry:",{name:p.name,isLazy:p.isLazy,hasMetadata:!!p.metadata,hasFallback:!!p.fallback});if(p.fallback){if(f)console.log("[UILoading] Rendering fallback for:",p.name);let l=p.fallback;return a.jsx(l,{})}if(f)console.log("[UILoading] No fallback, rendering full component:",p.name);let i=p.component,U=a.jsx(q.Provider,{value:Go,children:a.jsx(i,{data:o.data,content:o.content,setUiAjaxConfiguration:r})});if(p.isLazy)return a.jsx(t.Suspense,{fallback:C,children:U},`${p.name}`);return U}var Fo=Go;var Oo=require("react");var c=require("react/jsx-runtime"),zr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,sx:p}=o,i=Oo.useContext(q)??V;return c.jsx(A,{card:f,data:o,children:c.jsx("div",{style:p,id:f,children:r.map((U,l)=>{return c.jsx(i,{uiConfig:U,setUiAjaxConfiguration:C},`children-${l}`)})})})},Jo=zr;var Xo=D({name:"SequenceCard",component:Jo,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});var Qo=require("react");var fo=require("react/jsx-runtime"),Br=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f}=o,p=Qo.useContext(q)??V;return fo.jsx(A,{card:f,data:o,children:r.map((i,U)=>{return fo.jsx(p,{uiConfig:i,setUiAjaxConfiguration:C},`children-${U}`)})})},Wo=Br;var Yo=D({name:"UnionCard",component:Wo,metadata:{author:"PieData",description:"Renders one of many components"}});var j=require("react"),ao=Do(require("html-react-parser"));var g=require("react");function Vr(){let o=new AudioContext,r=o.createOscillator(),C=r.connect(o.createMediaStreamDestination());r.start();let f=C.stream.getAudioTracks()[0];return f.enabled=!1,f}function po(o=null,r){let[C,f]=g.useState(!1),p=g.useRef(null),i=g.useRef(null),U=g.useRef(null),l=g.useCallback(async(P,T=!0)=>{if(p.current)d();let w=new RTCPeerConnection;if(w.onconnectionstatechange=()=>{if(w.connectionState==="connected")f(!0);else if(["disconnected","failed","closed"].includes(w.connectionState))f(!1)},w.ontrack=(Z)=>{if(o)o.srcObject=Z.streams[0]},T){let Z=await navigator.mediaDevices.getUserMedia({audio:!0});w.addTrack(Z.getTracks()[0],Z)}else{let Z=Vr();w.addTrack(Z)}let I=w.createDataChannel("oai-events");i.current=I,U.current=new Promise((Z)=>{I.addEventListener("open",()=>{Z()})});let S=await w.createOffer();await w.setLocalDescription(S);let oo=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:S.sdp,headers:{Authorization:`Bearer ${P}`,"Content-Type":"application/sdp"}})).text();await w.setRemoteDescription({type:"answer",sdp:oo}),p.current=w,await U.current},[o]),d=g.useCallback(()=>{let P=i.current;if(P)P.close();p.current?.getSenders()?.forEach((T)=>T.track?.stop()),p.current?.close(),f(!1),p.current=null,i.current=null,U.current=null},[o]),u=g.useCallback((P)=>{let T=i.current;if(!T){console.error("Data channel is not ready",P);return}let w=new Date().toLocaleTimeString();if(P.event_id=P.event_id||crypto.randomUUID(),T.send(JSON.stringify(P)),!P.timestamp)P.timestamp=w;r?.(P)},[r,o]),m=g.useCallback((P)=>{if(!i.current){console.error("Data channel is not ready");return}let w=()=>{u({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:P}]}}),u({type:"response.create"})};if(U.current)U.current.then(w);else w()},[r,o]);return g.useEffect(()=>{let P=i.current;if(!P)return;let T=(w)=>{let I=JSON.parse(w.data);if(!I.timestamp)I.timestamp=new Date().toLocaleTimeString();r?.(I)};return P.addEventListener("message",T),()=>{P.removeEventListener("message",T)}},[r,o]),{isSessionActive:C,startSession:l,stopSession:d,sendTextMessage:m}}var Ko=require("react/jsx-runtime"),qr=({data:o})=>{let{html:r,useSocketioSupport:C,useCentrifugeSupport:f,useMittSupport:p,centrifugeChannel:i}=o,[U,l]=j.useState(r),{isSessionActive:d,startSession:u,sendTextMessage:m}=po(null,(I)=>{if(console.log(I.type,I.type==="response.output_text.delta"&&I.delta),I.type==="response.output_text.delta"&&I.delta)l((S)=>S+I.delta)});return j.useEffect(()=>{l(r)},[r]),Ko.jsx(A,{card:"HTMLEmbedCard",data:o,methods:{update:(I)=>{l(I.value)},generateUsingAI:async(I)=>{try{if(!d&&I.token)await u(I.token,!1);m(I.prompt)}catch(S){console.error("Failed to generate using AI",S)}},initializeAI:async(I)=>{if(!d&&I.token)await u(I.token,!1)}},useCentrifugeSupport:f,useSocketioSupport:C,useMittSupport:p,centrifugeChannel:i,children:ao.default(U)})},Mo=qr;var Ro=D({name:"HTMLEmbedCard",component:Mo,metadata:{author:"PieData"}});var v=require("react");var Co=require("react/jsx-runtime"),$r=({data:o})=>{let{name:r,value:C,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:U}=o,[l,d]=v.useState(C);return v.useEffect(()=>{d(C)},[C]),Co.jsx(A,{card:"HiddenCard",data:o,useSocketioSupport:f,useCentrifugeSupport:p,useMittSupport:i,centrifugeChannel:U,methods:{update:({value:u})=>{d(u)}},children:Co.jsx("input",{type:"hidden",id:r,name:r,value:l})})},yo=$r;var _o=D({name:"HiddenCard",component:yo,metadata:{author:"PieData"}});var M=require("react");var xo=require("react"),Gr=xo.createContext(void 0),J=Gr;var s=require("react/jsx-runtime"),Fr=({data:o})=>{let{url:r}=o,C=M.useContext(J),f=M.useContext(G);return M.useEffect(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(r))window.location.href=r;else C?.(r)},[r,C]),s.jsx(s.Fragment,{children:f})},ko=Fr;var no=D({name:"AutoRedirectCard",component:ko,metadata:{author:"PieData"}});var F=require("react-toastify"),h=require("react-toastify");var Q=require("react");var X=require("react/jsx-runtime"),Or={bounce:F.Bounce,slide:F.Slide,zoom:F.Zoom,flip:F.Flip},Jr=(o)=>{let r={...o,type:o.alertType,transition:o.transition?Or[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};h.toast(o.message,r)},Xr=(o)=>{console.log("Log event",o)},Qr=(o)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let r=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(f){console.error("[IOEventsCard] Failed to show notification",f)}},C=window.Notification.permission;if(C==="granted"){r();return}if(C==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((f)=>{if(f==="granted")r()})},Wr=({data:o})=>{let{useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p}=o,i=Q.useContext(J),U=Q.useRef(i);U.current=i;let l=Q.useMemo(()=>({alert:Jr,log:Xr,push:Qr,redirect:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else U.current?.(u)}else window.location.reload()},reload:(d)=>{if(d.to){let u=d.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(u))window.location.href=u;else U.current?.(u)}else window.location.reload()}}),[]);return X.jsx(X.Fragment,{children:X.jsx(A,{card:"IOEventsCard",data:o,useCentrifugeSupport:r,useSocketioSupport:C,useMittSupport:f,centrifugeChannel:p,methods:l,children:X.jsx(h.ToastContainer,{})})})},Eo=Wr;var bo=D({name:"IOEventsCard",component:Eo,metadata:{author:"PieData"}});var K=require("react");var uo=require("react/jsx-runtime"),Yr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=K.useState(f);return K.useEffect(()=>{u(f)},[f]),K.useEffect(()=>{if(typeof window==="undefined")return;sessionStorage.setItem(C,d)},[C,d]),uo.jsx(A,{card:"SessionStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{sessionStorage.removeItem(C),u("")}},children:uo.jsx("input",{type:"hidden",id:r,name:r,value:d})})},No=Yr;var to=D({name:"SessionStorageCard",component:No,metadata:{author:"PieData"}});var R=require("react");var Uo=require("react/jsx-runtime"),ar=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=R.useState(f);return R.useEffect(()=>{u(f)},[f]),R.useEffect(()=>{if(typeof window==="undefined")return;localStorage.setItem(C,d)},[C,d]),Uo.jsx(A,{card:"DeviceStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{localStorage.removeItem(C),u("")}},children:Uo.jsx("input",{type:"hidden",id:r,name:r,value:d})})},co=ar;var jo=D({name:"DeviceStorageCard",component:co,metadata:{author:"PieData"}});var y=require("react");var io=require("react/jsx-runtime"),Mr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=y.useState(f);return y.useEffect(()=>{u(f)},[f]),y.useEffect(()=>{if(typeof window==="undefined")return;let m=window.Telegram?.WebApp?.CloudStorage;if(!m)return;m.setItem(C,d)},[C,d]),io.jsx(A,{card:"CloudStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{let m=window.Telegram?.WebApp?.CloudStorage;if(m)m.removeItem(C);u("")}},children:io.jsx("input",{type:"hidden",id:r,name:r,value:d})})},vo=Mr;var so=D({name:"CloudStorageCard",component:vo,metadata:{author:"PieData"}});var _=require("react");var mo=require("react/jsx-runtime"),Kr=({data:o})=>{let{name:r,key:C,value:f,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l}=o,[d,u]=_.useState(f);return _.useEffect(()=>{u(f)},[f]),_.useEffect(()=>{if(typeof window==="undefined")return;let m=window.Telegram?.WebApp?.SecureStorage;if(!m)return;m.setItem(C,d)},[C,d]),mo.jsx(A,{card:"SecureStorageCard",data:o,useSocketioSupport:p,useCentrifugeSupport:i,useMittSupport:U,centrifugeChannel:l,methods:{update:({value:m})=>{u(m)},remove:()=>{let m=window.Telegram?.WebApp?.SecureStorage;if(m)m.removeItem(C);u("")}},children:mo.jsx("input",{type:"hidden",id:r,name:r,value:d})})},ho=Kr;var eo=D({name:"SecureStorageCard",component:ho,metadata:{author:"PieData"}});var L=require("react");var Io=require("react/jsx-runtime"),Rr=({data:o,content:r})=>{let{useLoader:C,noReturn:f,returnType:p,useSocketioSupport:i,useCentrifugeSupport:U,useMittSupport:l,centrifugeChannel:d}=o,u=L.useContext(G),m=L.useContext(q)??V,[P,T]=L.useState(!1),[w,I]=L.useState(null),S=L.useRef(r),H=L.useContext(n),z=L.useCallback((Z)=>{if(Z===null)T(!0);else if(T(!1),!f)S.current=Z;if(!f)I(Z)},[f]),$=L.useCallback((Z)=>{S.current=Z.content,I(Z.content)},[]),oo=L.useCallback((Z)=>{if(Z===null)T(!0);else if(T(!1),!f)for(let So of Z)H?.emit(So.name,So.data)},[f,H]);if(L.useEffect(()=>{I(r),T(!1)},[r]),!w&&C)return u;return Io.jsx(A,{card:"AjaxGroupCard",data:o,methods:{changeContent:$},useSocketioSupport:i,useCentrifugeSupport:U,useMittSupport:l,centrifugeChannel:d,children:Io.jsx(m,{uiConfig:w??S.current,setUiAjaxConfiguration:p==="events"?oo:z})})},or=Rr;var rr=D({name:"AjaxGroupCard",component:or,metadata:{author:"PieData",description:"Group card with AJAX support"}});var lo=require("react");var e=require("react/jsx-runtime"),yr=({data:o,content:r,setUiAjaxConfiguration:C})=>{let{name:f,url:p,sx:i}=o,U=lo.useContext(J),l=lo.useContext(q)??V;return e.jsx(A,{card:f,data:o,children:e.jsx("div",{style:i,id:f,onClick:(u)=>{if(p)if(u.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(p))window.location.href=p;else U?.(p)},children:e.jsx(l,{setUiAjaxConfiguration:C,uiConfig:r})})})},fr=yr;var pr=D({name:"BoxCard",component:fr,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,9 @@ export { registerPieComponent, getAllRegisteredComponents, getRegistrySize, regi
|
|
|
11
11
|
export type { PieComponentProps, PieSimpleComponentProps, PieComplexComponentProps, PieContainerComponentProps, PieComplexContainerComponentProps, PieConfig, UIConfigType, SetUiAjaxConfigurationType, } from './types';
|
|
12
12
|
export type { PieQueryOptions } from './components/PieRoot/types';
|
|
13
13
|
export { useAjaxSubmit } from './util/ajaxCommonUtils';
|
|
14
|
+
export type { RetryPolicy } from './util/ajaxCommonUtils';
|
|
15
|
+
export { usePieEmit } from './util/mitt';
|
|
16
|
+
export { getMittAgentTools, usePieMittAgentTools, type MittAgentTool, type MittAgentToolDescriptor, type MittAgentToolsOptions, } from './util/mittAgentTools';
|
|
14
17
|
export { default as useOpenAIWebRTC, type OpenAIEvent, type UseOpenAIWebRTCReturn, } from './util/useOpenAIWebRTC';
|
|
15
18
|
export { cn } from './util/tailwindCommonUtils';
|
|
16
19
|
export { PIEBREAK } from './util/pieConfig';
|
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,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAC/D,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,GACtB,MAAM,iBAAiB,CAAA;AAExB,YAAY,EACR,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,SAAS,EACT,YAAY,EACZ,0BAA0B,GAC7B,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EACH,OAAO,IAAI,eAAe,EAC1B,KAAK,WAAW,EAChB,KAAK,qBAAqB,GAC7B,MAAM,wBAAwB,CAAA;AAC/B,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;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,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,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAC/D,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,GACtB,MAAM,iBAAiB,CAAA;AAExB,YAAY,EACR,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,SAAS,EACT,YAAY,EACZ,0BAA0B,GAC7B,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EACH,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,GAC7B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACH,OAAO,IAAI,eAAe,EAC1B,KAAK,WAAW,EAChB,KAAK,qBAAqB,GAC7B,MAAM,wBAAwB,CAAA;AAC/B,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;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA"}
|
package/dist/index.esm.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useContext as eo,useEffect as j,useRef as rt}from"react";import{createContext as Ko,useContext as Lo}from"react";var _=Ko(null),Y=()=>{let o=Lo(_);if(!o)throw new Error("usePieConfig must be used within PieConfigProvider");return o},Z=()=>{let{apiServer:o}=Y();return o},S=Z,O=()=>{let{centrifugeServer:o}=Y();return o};var z=()=>{let{enableRenderingLog:o}=Y();return o},To=z,go=()=>{let{pageProcessor:o}=Y();return o};var fo="__piedemo__";import{createContext as Fo}from"react";import{Centrifuge as $o}from"centrifuge";var zo=new Map,G=(o,t)=>{if(!t)return null;let f=`${o}::${t}`,r=zo.get(f);if(r)return r;async function m(){let c=await fetch(o+"api/centrifuge/gen_token");if(!c.ok){if(c.status===403)throw new $o.UnauthorizedError("Backend is not answering");throw new Error(`Unexpected status code ${c.status}`)}return(await c.json()).token}let n=new $o(t,{getToken:m});return zo.set(f,n),n},Qo=Fo(null),H=Qo;import{io as So}from"socket.io-client";import{createContext as jo}from"react";var Ao=new Map,b=(o)=>{let t=Ao.get(o);if(t)return t;let f=So(o,{autoConnect:!1,transports:["websocket"]});return Ao.set(o,f),f},vo=jo(null),N=vo;import ot from"mitt";import{createContext as tt}from"react";var co=null;function E(){if(!co)co=ot();return co}var nt=tt(null),x=nt;var mt=({card:o,data:t,children:f,useSocketioSupport:r=!1,useCentrifugeSupport:m=!1,useMittSupport:n=!1,centrifugeChannel:c=void 0,methods:d=void 0})=>{let e=To(),s=rt(d);if(j(()=>{s.current=d},[d]),e)console.log("[PieCard] Rendering card:",o),console.log("[PieCard] Card data:",t),console.log("[PieCard] Component name:",t?.name),console.log("[PieCard] Real-time support:",{socketio:r,centrifuge:m,mitt:n,centrifugeChannel:c}),console.log("[PieCard] Methods:",d?Object.keys(d):"none"),console.log("[PieCard] Has children:",!!f);let C=eo(N),l=eo(H),p=eo(x);if(j(()=>{if(!C||!r||!s.current||!t.name){if(e&&r)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!C,useSocketioSupport:r,hasMethods:!!s.current,hasDataName:!!t?.name});return}let u=Object.keys(s.current??{});return u.forEach((i)=>{let a=`pie${i}_${t.name}`;if(e)console.log(`[PieCard] Socket.IO registering event: ${a}`);C.on(a,(y)=>{s.current?.[i]?.(y)})}),()=>{u.forEach((i)=>{let a=`pie${i}_${t.name}`;if(e)console.log(`[PieCard] Socket.IO unregistering event: ${a}`);C.off(a)})}},[C,t.name,r]),j(()=>{if(!l||!m||!c||!t.name){if(e&&m)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!l,useCentrifugeSupport:m,hasCentrifugeChannel:!!c,hasMethods:!!s.current,hasDataName:!!t?.name});return}let i=Object.keys(s.current??{}).map((a)=>{let y=`pie${a}_${t.name}_${c}`;if(e)console.log(`[PieCard] Centrifuge subscribing to channel: ${y}`);let P=l.newSubscription(y);return P.on("publication",(R)=>{if(e)console.log(`[PieCard] Centrifuge received data on ${y}:`,R.data);s.current?.[a]?.(R.data)}),P.subscribe(),P});return()=>{i.forEach((a)=>{if(e)console.log("[PieCard] Centrifuge unsubscribing from channel");a.unsubscribe(),l.removeSubscription(a)})}},[l,c,t.name,m]),j(()=>{if(!p||!n||!t.name){if(e&&n)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!p,useMittSupport:n,hasMethods:!!s.current,hasDataName:!!t?.name});return}let u=Object.keys(s.current??{}),i={};return u.forEach((a)=>{let y=`pie${a}_${t.name}`,P=(R)=>{if(e)console.log(`[PieCard] Mitt registering event: ${y}`);s.current?.[a]?.(R)};i[y]=P,p.on(y,P)}),()=>{Object.entries(i).forEach(([a,y])=>{if(e)console.log(`[PieCard] Mitt unregistering event: ${a}`);p.off(a,y)})}},[p,t.name,n]),e)console.log("[PieCard] Rendering complete, returning children");return f},T=mt;import{lazy as ft}from"react";var io=new Map;function Bo(o,t){return ft(()=>{if(io.has(t))return io.get(t);let f=o().then((r)=>r);return io.set(t,f),f})}var k=new Map,ct=(o)=>{if(!o.name)throw new Error("Component registration requires a name");if(!o.component&&!o.loader)throw new Error(`Component "${o.name}" requires component or loader`);let t={name:o.name,component:o.component,loader:o.loader,metadata:o.metadata,fallback:o.fallback,isLazy:!1};if(!t.component&&t.loader)t.component=Bo(t.loader,o.name),t.loader=void 0,t.isLazy=!0;return t};function w(o){let t=ct(o);return k.set(t.name,t),t.component}var dt=(o)=>{o.forEach((t)=>w(t))},et=(o)=>{k.delete(o)},it=(o)=>{return k.has(o)},pt=(o)=>{return k.get(o)?.metadata},K=(o)=>{return k.get(o)},at=()=>{return Array.from(k.keys())},ut=()=>{return k.size};import{Suspense as Pt,useContext as Ut,memo as Rt}from"react";import{createContext as st}from"react";import{jsx as yt,Fragment as Ct}from"react/jsx-runtime";var lt=st(yt(Ct,{})),I=lt;import{jsx as po}from"react/jsx-runtime";function wt({uiConfig:o,setUiAjaxConfiguration:t}){let f=Ut(I),r=z();if(r)console.log("[UI] Rendering component:",o.card),console.log("[UI] Component data:",o.data),console.log("[UI] Component content:",o.content),console.log("[UI] Has setUiAjaxConfiguration:",!!t);let m=K(o.card);if(!m?.component){if(r)console.warn(`[UI] Component not found in registry: ${o.card}`),console.log("[UI] Returning fallback component");return f}if(r)console.log("[UI] Found component in registry:",{name:m.name,isLazy:m.isLazy,hasMetadata:!!m.metadata});let n=m.component,c=po(n,{data:o.data,content:o.content,setUiAjaxConfiguration:t});if(m.isLazy){if(r)console.log("[UI] Rendering lazy component with Suspense:",m.name);return po(Pt,{fallback:m.fallback?po(m.fallback,{}):f,children:c},`${m.name}`)}if(r)console.log("[UI] Rendering component directly:",m.name);return c}var g=Rt(wt);import{Suspense as gt,useContext as $t}from"react";import{createContext as It}from"react";var Tt=It(null),W=Tt;import{jsx as v}from"react/jsx-runtime";function Do({uiConfig:o,setUiAjaxConfiguration:t}){let f=$t(I),r=z();if(r)console.log("[UILoading] Rendering fallback for:",o.card),console.log("[UILoading] Component data:",o.data),console.log("[UILoading] Component content:",o.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!t);let m=K(o.card);if(!m?.component){if(r)console.warn(`[UILoading] Component not found in registry: ${o.card}`),console.log("[UILoading] Returning fallback component");return f}if(r)console.log("[UILoading] Found component in registry:",{name:m.name,isLazy:m.isLazy,hasMetadata:!!m.metadata,hasFallback:!!m.fallback});if(m.fallback){if(r)console.log("[UILoading] Rendering fallback for:",m.name);let d=m.fallback;return v(d,{})}if(r)console.log("[UILoading] No fallback, rendering full component:",m.name);let n=m.component,c=v(W.Provider,{value:Do,children:v(n,{data:o.data,content:o.content,setUiAjaxConfiguration:t})});if(m.isLazy)return v(gt,{fallback:f,children:c},`${m.name}`);return c}var ao=Do;import{useContext as zt}from"react";import{jsx as uo}from"react/jsx-runtime";var At=({data:o,content:t,setUiAjaxConfiguration:f})=>{let{name:r,sx:m}=o,n=zt(W)??g;return uo(T,{card:r,data:o,children:uo("div",{style:m,id:r,children:t.map((c,d)=>{return uo(n,{uiConfig:c,setUiAjaxConfiguration:f},`children-${d}`)})})})},ho=At;var Bt=w({name:"SequenceCard",component:ho,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});import{useContext as Dt}from"react";import{jsx as Ho}from"react/jsx-runtime";var ht=({data:o,content:t,setUiAjaxConfiguration:f})=>{let{name:r}=o,m=Dt(W)??g;return Ho(T,{card:r,data:o,children:t.map((n,c)=>{return Ho(m,{uiConfig:n,setUiAjaxConfiguration:f},`children-${c}`)})})},No=ht;var Ht=w({name:"UnionCard",component:No,metadata:{author:"PieData",description:"Renders one of many components"}});import{useEffect as Wt,useState as _t}from"react";import Zt from"html-react-parser";import{useCallback as oo,useEffect as Nt,useRef as so,useState as xt}from"react";function Mt(){let o=new AudioContext,t=o.createOscillator(),f=t.connect(o.createMediaStreamDestination());t.start();let r=f.stream.getAudioTracks()[0];return r.enabled=!1,r}function to(o=null,t){let[f,r]=xt(!1),m=so(null),n=so(null),c=so(null),d=oo(async(l,p=!0)=>{if(m.current)e();let u=new RTCPeerConnection;if(u.onconnectionstatechange=()=>{if(u.connectionState==="connected")r(!0);else if(["disconnected","failed","closed"].includes(u.connectionState))r(!1)},u.ontrack=(U)=>{if(o)o.srcObject=U.streams[0]},p){let U=await navigator.mediaDevices.getUserMedia({audio:!0});u.addTrack(U.getTracks()[0],U)}else{let U=Mt();u.addTrack(U)}let i=u.createDataChannel("oai-events");n.current=i,c.current=new Promise((U)=>{i.addEventListener("open",()=>{U()})});let a=await u.createOffer();await u.setLocalDescription(a);let h=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:a.sdp,headers:{Authorization:`Bearer ${l}`,"Content-Type":"application/sdp"}})).text();await u.setRemoteDescription({type:"answer",sdp:h}),m.current=u,await c.current},[o]),e=oo(()=>{let l=n.current;if(l)l.close();m.current?.getSenders()?.forEach((p)=>p.track?.stop()),m.current?.close(),r(!1),m.current=null,n.current=null,c.current=null},[o]),s=oo((l)=>{let p=n.current;if(!p){console.error("Data channel is not ready",l);return}let u=new Date().toLocaleTimeString();if(l.event_id=l.event_id||crypto.randomUUID(),p.send(JSON.stringify(l)),!l.timestamp)l.timestamp=u;t?.(l)},[t,o]),C=oo((l)=>{if(!n.current){console.error("Data channel is not ready");return}let u=()=>{s({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:l}]}}),s({type:"response.create"})};if(c.current)c.current.then(u);else u()},[t,o]);return Nt(()=>{let l=n.current;if(!l)return;let p=(u)=>{let i=JSON.parse(u.data);if(!i.timestamp)i.timestamp=new Date().toLocaleTimeString();t?.(i)};return l.addEventListener("message",p),()=>{l.removeEventListener("message",p)}},[t,o]),{isSessionActive:f,startSession:d,stopSession:e,sendTextMessage:C}}import{jsx as Gt}from"react/jsx-runtime";var Ot=({data:o})=>{let{html:t,useSocketioSupport:f,useCentrifugeSupport:r,useMittSupport:m,centrifugeChannel:n}=o,[c,d]=_t(t),{isSessionActive:e,startSession:s,sendTextMessage:C}=to(null,(i)=>{if(console.log(i.type,i.type==="response.output_text.delta"&&i.delta),i.type==="response.output_text.delta"&&i.delta)d((a)=>a+i.delta)});return Wt(()=>{d(t)},[t]),Gt(T,{card:"HTMLEmbedCard",data:o,methods:{update:(i)=>{d(i.value)},generateUsingAI:async(i)=>{try{if(!e&&i.token)await s(i.token,!1);C(i.prompt)}catch(a){console.error("Failed to generate using AI",a)}},initializeAI:async(i)=>{if(!e&&i.token)await s(i.token,!1)}},useCentrifugeSupport:r,useSocketioSupport:f,useMittSupport:m,centrifugeChannel:n,children:Zt(c)})},xo=Ot;var bt=w({name:"HTMLEmbedCard",component:xo,metadata:{author:"PieData"}});import{useEffect as Et,useState as kt}from"react";import{jsx as Mo}from"react/jsx-runtime";var Vt=({data:o})=>{let{name:t,value:f,useSocketioSupport:r,useCentrifugeSupport:m,useMittSupport:n,centrifugeChannel:c}=o,[d,e]=kt(f);return Et(()=>{e(f)},[f]),Mo(T,{card:"HiddenCard",data:o,useSocketioSupport:r,useCentrifugeSupport:m,useMittSupport:n,centrifugeChannel:c,methods:{update:({value:s})=>{e(s)}},children:Mo("input",{type:"hidden",id:t,name:t,value:d})})},Wo=Vt;var Xt=w({name:"HiddenCard",component:Wo,metadata:{author:"PieData"}});import{useContext as _o,useEffect as qt}from"react";import{createContext as Jt}from"react";var Yt=Jt(void 0),$=Yt;import{jsx as Ft,Fragment as Lt}from"react/jsx-runtime";var Kt=({data:o})=>{let{url:t}=o,f=_o($),r=_o(I);return qt(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(t))window.location.href=t;else f?.(t)},[t,f]),Ft(Lt,{children:r})},Zo=Kt;var Qt=w({name:"AutoRedirectCard",component:Zo,metadata:{author:"PieData"}});import{Bounce as St,Slide as jt,Zoom as vt,Flip as on}from"react-toastify";import{toast as tn,ToastContainer as nn}from"react-toastify";import{useContext as rn,useMemo as mn,useRef as fn}from"react";import{jsx as lo,Fragment as un}from"react/jsx-runtime";var cn={bounce:St,slide:jt,zoom:vt,flip:on},dn=(o)=>{let t={...o,type:o.alertType,transition:o.transition?cn[o.transition]:void 0,position:o.position??"bottom-right",autoClose:o.autoClose??3000,style:{backgroundColor:"black",...o.sx}};tn(o.message,t)},en=(o)=>{console.log("Log event",o)},pn=(o)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let t=()=>{try{new window.Notification(o.title,{body:o.message??o.subtitle,icon:o.icon,silent:o.silent})}catch(r){console.error("[IOEventsCard] Failed to show notification",r)}},f=window.Notification.permission;if(f==="granted"){t();return}if(f==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((r)=>{if(r==="granted")t()})},an=({data:o})=>{let{useCentrifugeSupport:t,useSocketioSupport:f,useMittSupport:r,centrifugeChannel:m}=o,n=rn($),c=fn(n);c.current=n;let d=mn(()=>({alert:dn,log:en,push:pn,redirect:(e)=>{if(e.to){let s=e.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(s))window.location.href=s;else c.current?.(s)}else window.location.reload()},reload:(e)=>{if(e.to){let s=e.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(s))window.location.href=s;else c.current?.(s)}else window.location.reload()}}),[]);return lo(un,{children:lo(T,{card:"IOEventsCard",data:o,useCentrifugeSupport:t,useSocketioSupport:f,useMittSupport:r,centrifugeChannel:m,methods:d,children:lo(nn,{})})})},Oo=an;var sn=w({name:"IOEventsCard",component:Oo,metadata:{author:"PieData"}});import{useCallback as Co,useContext as yo,useEffect as ln,useRef as Cn,useState as Go}from"react";import{jsx as bo}from"react/jsx-runtime";var yn=({data:o,content:t})=>{let{useLoader:f,noReturn:r,returnType:m,useSocketioSupport:n,useCentrifugeSupport:c,useMittSupport:d,centrifugeChannel:e}=o,s=yo(I),C=yo(W)??g,[l,p]=Go(!1),[u,i]=Go(null),a=Cn(t),y=yo(x),P=Co((U)=>{if(U===null)p(!0);else if(p(!1),!r)a.current=U;if(!r)i(U)},[r]),R=Co((U)=>{a.current=U.content,i(U.content)},[]),h=Co((U)=>{if(U===null)p(!0);else if(p(!1),!r)for(let J of U)y?.emit(J.name,J.data)},[r,y]);if(ln(()=>{i(t),p(!1)},[t]),!u&&f)return s;return bo(T,{card:"AjaxGroupCard",data:o,methods:{changeContent:R},useSocketioSupport:n,useCentrifugeSupport:c,useMittSupport:d,centrifugeChannel:e,children:bo(C,{uiConfig:u??a.current,setUiAjaxConfiguration:m==="events"?h:P})})},Eo=yn;var Pn=w({name:"AjaxGroupCard",component:Eo,metadata:{author:"PieData",description:"Group card with AJAX support"}});import{useContext as ko}from"react";import{jsx as Po}from"react/jsx-runtime";var Un=({data:o,content:t,setUiAjaxConfiguration:f})=>{let{name:r,url:m,sx:n}=o,c=ko($),d=ko(W)??g;return Po(T,{card:r,data:o,children:Po("div",{style:n,id:r,onClick:(s)=>{if(m)if(s.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(m))window.location.href=m;else c?.(m)},children:Po(d,{setUiAjaxConfiguration:f,uiConfig:t})})})},Vo=Un;var Rn=w({name:"BoxCard",component:Vo,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});import{useMemo as L}from"react";import{QueryClient as hn,QueryClientProvider as Hn,useQuery as Nn}from"@tanstack/react-query";import{useContext as Tn,useEffect as gn}from"react";import{useEffect as wn,useState as In}from"react";var no=new Map,ro=new Map;function mo(o,t){let f=`${o}::${t}`,r=o?no.get(f):void 0,[m,n]=In(r??null);return wn(()=>{if(!o)return;if(no.has(f)){n(no.get(f));return}let c=ro.get(f);if(!c)c=fetch(o+`api/support/${t}`,{method:"GET"}).then((e)=>e.json()).then((e)=>{return no.set(f,e),ro.delete(f),e}).catch((e)=>{throw ro.delete(f),e}),ro.set(f,c);let d=!1;return c.then((e)=>{if(!d)n(e)}).catch(()=>{}),()=>{d=!0}},[o,t,f]),m}var Uo=null,Xo=null;function Jo(){Xo?.()}function Ro(){if(typeof window==="undefined")return Promise.resolve();if(typeof window.sid!=="undefined")return Promise.resolve();if(!Uo)Uo=new Promise((o)=>{Xo=()=>{o()}});return Uo}var $n=({children:o})=>{let t=Tn(N),f=S(),r=mo(f,"socketIO"),m=(n)=>{if(typeof window!=="undefined")window.sid=n.sid,Jo(),console.log(`SocketIO initialized: ${window.sid}`)};return gn(()=>{if(!t)return;let n=()=>{console.log("SocketIO connected")},c=(d)=>{console.log(`SocketIO disconnected: ${d}`),t.connect()};if(r)t.on("pieinit",m),t.on("connect",n),t.on("disconnect",c),t.connect();return()=>{if(r)t.off("pieinit",m),t.off("connect",n),t.off("disconnect",c),t.disconnect()}},[t,r]),o},V=$n;import{useContext as zn,useEffect as An}from"react";var Bn=({children:o})=>{let t=zn(H),f=S(),r=mo(f,"centrifuge");return An(()=>{if(!t)return;let m=()=>{console.log("Centrifuge connected")},n=(c)=>{console.log("Centrifuge disconnected:",c)};if(r)t.on("connected",m),t.on("disconnected",n),t.connect();return()=>{if(r)t.disconnect()}},[t,r]),o},X=Bn;import{createAxiosDateTransformer as xn}from"axios-date-transformer";import{jsx as Dn}from"react/jsx-runtime";function q(o,t,f){if(!t)return f;let r=o.replace(/^\//,""),m=t[r];if(!m)return f;return Dn(ao,{uiConfig:m})}import{jsx as A,Fragment as _n}from"react/jsx-runtime";var Mn=({location:o,fallback:t,piecache:f,onError:r,queryOptions:m})=>{let n=Z(),c=O(),d=z(),e=L(()=>xn({baseURL:n||""}),[n]),s=L(()=>E(),[]),C=L(()=>n?b(n):null,[n]),l=L(()=>n?G(n,c):null,[n,c]),{data:p,isLoading:u,error:i}=Nn({queryKey:["uiConfig",o.pathname+o.search,n],enabled:!!n,queryFn:async()=>{let y=new URLSearchParams(o.search);y.set("__pieroot","web");let P="/api/content"+o.pathname+"?"+y.toString();if(d)console.log("[PieRoot] Fetching UI configuration from:",P);let R=await e.get(P,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(d)console.log("[PieRoot] Received UI configuration:",R.data);return R.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(y)=>Math.min(1000*2**y,30000),...m}),a=q(o.pathname,f,t);if(!n)return a??null;if(d)console.log("[PieRoot] Rendering with location:",o),console.log("[PieRoot] API_SERVER:",n),console.log("[PieRoot] CENTRIFUGE_SERVER:",c),console.log("[PieRoot] Fallback provided:",!!t),console.log("[PieRoot] Piecache provided:",!!f);if(i){if(d)console.error("[PieRoot] Error fetching UI configuration:",i),console.error("[PieRoot] Error details:",{message:i.message,status:i.response?.status,data:i.response?.data});return r?.(),a}if(u||!p){if(d)console.log("[PieRoot] Loading state:",{isLoading:u,hasUiConfiguration:!!p});return a}if(d)console.log("[PieRoot] UI configuration loaded successfully:",p),console.log("[PieRoot] Rendering UI with configuration");return A(x.Provider,{value:s,children:A(N.Provider,{value:C,children:A(H.Provider,{value:l,children:A(I.Provider,{value:t??A(_n,{}),children:A(V,{children:A(X,{children:A("form",{id:"piedata_global_form",action:n+"api/process"+o.pathname,method:"post",encType:"multipart/form-data",children:A(g,{uiConfig:p})})})})})})})})},Wn=(o)=>{let t=L(()=>new hn,[]);return A($.Provider,{value:o.onNavigate,children:A(_.Provider,{value:o.config,children:A(Hn,{client:t,children:A(Mn,{...o})})})})},Zn=Wn;import{useMemo as F}from"react";import{QueryClient as bn,QueryClientProvider as En,useQuery as kn}from"@tanstack/react-query";import{createAxiosDateTransformer as Vn}from"axios-date-transformer";import{useEffect as On,useState as Gn}from"react";var wo=({onError:o}={})=>{let[t,f]=Gn(null),r=go();return On(()=>{if(typeof window==="undefined")return;let m=window.Telegram?.WebApp;if(!m)return;try{m.ready?.()}catch(n){o?.()}if(r==="telegram_expanded"&&(m.platform==="ios"||m.platform==="android"))m.expand();f(m)},[]),t};import{jsx as B,Fragment as Yn}from"react/jsx-runtime";var Xn=({location:o,fallback:t,piecache:f,onError:r,queryOptions:m})=>{let n=Z(),c=O(),d=z(),e=F(()=>Vn({baseURL:n}),[n]),s=F(()=>E(),[]),C=F(()=>n?b(n):null,[n]),l=F(()=>n?G(n,c):null,[n,c]),p=wo({onError:r}),{data:u,isLoading:i,error:a}=kn({queryKey:["uiConfig",o.pathname+o.search,p?.initData],enabled:!!p?.initData,queryFn:async()=>{let P=new URLSearchParams(o.search);if(P.set("__pieroot","telegram"),p?.initData)P.set("initData",p.initData);let R="/api/content"+o.pathname+"?"+P.toString();if(d)console.log("[PieRoot] Fetching UI configuration from:",R);let h=await e.get(R,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(d)console.log("[PieRoot] Received UI configuration:",h.data);return h.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(P)=>Math.min(1000*2**P,30000),...m}),y=q(o.pathname,f,t);if(!n)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(a&&d)return console.error("[PieRoot] Error fetching UI configuration:",a),console.error("[PieRoot] Error details:",{message:a.message,status:a.response?.status,data:a.response?.data}),r?.(),y;if(i||!u){if(d)console.log("[PieRoot] Loading state:",{isLoading:i,hasUiConfiguration:!!u});return y}if(d)console.log("[PieRoot] UI configuration loaded successfully:",u),console.log("[PieRoot] Rendering UI with configuration");return B(x.Provider,{value:s,children:B(N.Provider,{value:C,children:B(H.Provider,{value:l,children:B(I.Provider,{value:t??B(Yn,{}),children:B(V,{children:B(X,{children:B("form",{id:"piedata_global_form",action:n+"api/process"+o.pathname,method:"post",encType:"multipart/form-data",children:B(g,{uiConfig:u})})})})})})})})},Jn=(o)=>{let t=F(()=>new bn,[]);return B($.Provider,{value:o.onNavigate,children:B(_.Provider,{value:o.config,children:B(En,{client:t,children:B(Xn,{...o})})})})},qn=Jn;import{useMemo as Io,useState as Kn}from"react";import{QueryClient as Ln,QueryClientProvider as Fn}from"@tanstack/react-query";import{jsx as M,Fragment as jn}from"react/jsx-runtime";var Qn=({location:o,fallback:t,children:f})=>{let r=Z(),m=O(),n=z(),c=Io(()=>E(),[]),d=Io(()=>r?b(r):null,[r]),e=Io(()=>r?G(r,m):null,[r,m]);if(n)console.log("[PieRoot] Rendering with location:",o),console.log("[PieRoot] API_SERVER:",r),console.log("[PieRoot] CENTRIFUGE_SERVER:",m),console.log("[PieRoot] Fallback provided:",!!t);return M(x.Provider,{value:c,children:M(N.Provider,{value:d,children:M(H.Provider,{value:e,children:M(I.Provider,{value:t??M(jn,{}),children:M(V,{children:M(X,{children:M("form",{id:"piedata_global_form",action:r+"api/process"+o.pathname,method:"post",encType:"multipart/form-data",children:f})})})})})})})},Sn=(o)=>{let[t]=Kn(()=>new Ln);return M($.Provider,{value:o.onNavigate,children:M(_.Provider,{value:o.config,children:M(Fn,{client:t,children:M(Qn,{...o})})})})},vn=Sn;import{useMemo as Q}from"react";import{QueryClient as nr,QueryClientProvider as rr,useQuery as mr}from"@tanstack/react-query";import{createAxiosDateTransformer as fr}from"axios-date-transformer";import{useEffect as or,useState as tr}from"react";var Yo=()=>{let[o,t]=tr(null);return or(()=>{if(typeof window==="undefined")return;let f=window.WebApp;if(!f)return;f.ready(),t(f)},[]),o};import{jsx as D,Fragment as er}from"react/jsx-runtime";var cr=({location:o,fallback:t,piecache:f,onError:r,queryOptions:m})=>{let n=Z(),c=O(),d=z(),e=Q(()=>fr({baseURL:n}),[n]),s=Q(()=>E(),[]),C=Q(()=>n?b(n):null,[n]),l=Q(()=>n?G(n,c):null,[n,c]),p=Yo(),{data:u,isLoading:i,error:a}=mr({queryKey:["uiConfig",o.pathname+o.search,p?.initData],queryFn:async()=>{let P=new URLSearchParams(o.search);if(P.set("__pieroot","max"),p?.initData)P.set("initData",p.initData);let R="/api/content"+o.pathname+"?"+P.toString();if(d)console.log("[PieRoot] Fetching UI configuration from:",R);let h=await e.get(R,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(d)console.log("[PieRoot] Received UI configuration:",h.data);return h.data},enabled:!!p?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(P)=>Math.min(1000*2**P,30000),...m}),y=q(o.pathname,f,t);if(!n)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(a&&d)return console.error("[PieRoot] Error fetching UI configuration:",a),console.error("[PieRoot] Error details:",{message:a.message,status:a.response?.status,data:a.response?.data}),r?.(),y;if(i||!u){if(d)console.log("[PieRoot] Loading state:",{isLoading:i,hasUiConfiguration:!!u});return y}if(d)console.log("[PieRoot] UI configuration loaded successfully:",u),console.log("[PieRoot] Rendering UI with configuration");return D(x.Provider,{value:s,children:D(N.Provider,{value:C,children:D(H.Provider,{value:l,children:D(I.Provider,{value:t??D(er,{}),children:D(V,{children:D(X,{children:D("form",{id:"piedata_global_form",action:n+"api/process"+o.pathname,method:"post",encType:"multipart/form-data",children:D(g,{uiConfig:u})})})})})})})})},dr=(o)=>{let t=Q(()=>new nr,[]);return D($.Provider,{value:o.onNavigate,children:D(_.Provider,{value:o.config,children:D(rr,{client:t,children:D(cr,{...o})})})})},ir=dr;import{useMemo as pr}from"react";var ar=(o,t={},f=[],r,m)=>{let n=m?.renderingLogEnabled??!1;if(!m?.apiServer){if(n)console.warn("Registration FAILED: apiServer is missing!");return()=>{}}let c=m?.apiServer;if(n)console.log("Registering AJAX: ",r,t,f);if(!r||!o){if(n)console.warn("Registration FAILED: pathname or setUiAjaxConfiguration is missing!");return()=>{}}return async(d={})=>{if(typeof window==="undefined"||typeof document==="undefined"){if(n)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}if(f.includes("sid"))await Ro();let e=new FormData;for(let[C,l]of Object.entries({...t,...d}))e.append(C,l);for(let C of f)if(C==="sid"){if(!window.sid)throw new Error("SocketIO isn't initialized properly");e.append("sid",window.sid)}else{let l=document.getElementsByName(C);if(!l.length){if(n)console.warn(`No input found with name ${C}`);continue}let p=l[0];if(p instanceof HTMLInputElement)if(p.type==="file"&&p.files)Array.from(p.files).forEach((u)=>e.append(C,u));else e.append(C,p.value);else if(p instanceof HTMLTextAreaElement)e.append(C,p.value)}let s=c+"api/ajax_content"+r;return o(null),await fetch(s,{method:"POST",body:e}).then(async(C)=>{let p=(C.headers.get("content-type")||"").includes("application/json");if(!!C.body?.getReader&&!p){let i=C.body.getReader(),a=new TextDecoder,y="";while(!0){let{done:P,value:R}=await i.read();if(P)break;y+=a.decode(R,{stream:!0});let h=y.split(`
|
|
3
|
-
`);
|
|
2
|
+
import{useContext as Vf,useEffect as If,useRef as SU}from"react";import{createContext as BU,useContext as QU}from"react";var j=BU(null),h=()=>{let f=QU(j);if(!f)throw new Error("usePieConfig must be used within PieConfigProvider");return f},x=()=>{let{apiServer:f}=h();return f},e=x,d=()=>{let{centrifugeServer:f}=h();return f};var M=()=>{let{enableRenderingLog:f}=h();return f},Lf=M,Mf=()=>{let{pageProcessor:f}=h();return f};var Tf="__piedemo__";import{createContext as WU}from"react";import{Centrifuge as Sf}from"centrifuge";var Af=new Map,u=(f,U)=>{if(!U)return null;let Z=`${f}::${U}`,D=Af.get(Z);if(D)return D;async function P(){let z=await fetch(f+"api/centrifuge/gen_token");if(!z.ok){if(z.status===403)throw new Sf.UnauthorizedError("Backend is not answering");throw new Error(`Unexpected status code ${z.status}`)}return(await z.json()).token}let H=new Sf(U,{getToken:P});return Af.set(Z,H),H},CU=WU(null),y=CU;import{io as OU}from"socket.io-client";import{createContext as _U}from"react";var Nf=new Map,b=(f)=>{let U=Nf.get(f);if(U)return U;let Z=OU(f,{autoConnect:!1,transports:["websocket"]});return Nf.set(f,Z),Z},RU=_U(null),o=RU;import FU from"mitt";import{createContext as KU,useCallback as wU,useContext as LU}from"react";var Gf=null;function E(){if(!Gf)Gf=FU();return Gf}var yf=KU(null);function MU(f){let U=LU(yf);return wU((Z,D)=>{(U??E()).emit(`pie${Z}_${f}`,D)},[f,U])}var w=yf;var AU=({card:f,data:U,children:Z,useSocketioSupport:D=!1,useCentrifugeSupport:P=!1,useMittSupport:H=!1,centrifugeChannel:z=void 0,methods:T=void 0})=>{let $=Lf(),G=SU(T);if(G.current=T,$)console.log("[PieCard] Rendering card:",f),console.log("[PieCard] Card data:",U),console.log("[PieCard] Component name:",U?.name),console.log("[PieCard] Real-time support:",{socketio:D,centrifuge:P,mitt:H,centrifugeChannel:z}),console.log("[PieCard] Methods:",T?Object.keys(T):"none"),console.log("[PieCard] Has children:",!!Z);let X=Vf(o),B=Vf(y),q=Vf(w);if(If(()=>{if(!X||!D||!G.current||!U.name){if($&&D)console.log("[PieCard] Socket.IO setup skipped:",{hasSocket:!!X,useSocketioSupport:D,hasMethods:!!G.current,hasDataName:!!U?.name});return}let I=Object.keys(G.current??{}).map((V)=>{let J=`pie${V}_${U.name}`;if($)console.log(`[PieCard] Socket.IO registering event: ${J}`);let Q=(W)=>{G.current?.[V]?.(W)};return X.on(J,Q),[J,Q]});return()=>{I.forEach(([V,J])=>{if($)console.log(`[PieCard] Socket.IO unregistering event: ${V}`);X.off(V,J)})}},[X,U.name,D]),If(()=>{if(!B||!P||!z||!U.name){if($&&P)console.log("[PieCard] Centrifuge setup skipped:",{hasCentrifuge:!!B,useCentrifugeSupport:P,hasCentrifugeChannel:!!z,hasMethods:!!G.current,hasDataName:!!U?.name});return}let I=Object.keys(G.current??{}).map((V)=>{let J=`pie${V}_${U.name}_${z}`;if($)console.log(`[PieCard] Centrifuge subscribing to channel: ${J}`);let Q=B.newSubscription(J);return Q.on("publication",(W)=>{if($)console.log(`[PieCard] Centrifuge received data on ${J}:`,W.data);G.current?.[V]?.(W.data)}),Q.subscribe(),Q});return()=>{I.forEach((V)=>{if($)console.log("[PieCard] Centrifuge unsubscribing from channel");V.unsubscribe(),B.removeSubscription(V)})}},[B,z,U.name,P]),If(()=>{if(!q||!H||!U.name){if($&&H)console.log("[PieCard] Mitt setup skipped:",{hasMitt:!!q,useMittSupport:H,hasMethods:!!G.current,hasDataName:!!U?.name});return}let Y=Object.keys(G.current??{}),I={};return Y.forEach((V)=>{let J=`pie${V}_${U.name}`,Q=(W)=>{if($)console.log(`[PieCard] Mitt registering event: ${J}`);G.current?.[V]?.(W)};I[J]=Q,q.on(J,Q)}),()=>{Object.entries(I).forEach(([V,J])=>{if($)console.log(`[PieCard] Mitt unregistering event: ${V}`);q.off(V,J)})}},[q,U.name,H]),$)console.log("[PieCard] Rendering complete, returning children");return Z},_=AU;import{lazy as NU}from"react";var Jf=new Map;function of(f,U){return NU(()=>{if(Jf.has(U))return Jf.get(U);let Z=f().then((D)=>D);return Jf.set(U,Z),Z})}var v=new Map,yU=(f)=>{if(!f.name)throw new Error("Component registration requires a name");if(!f.component&&!f.loader)throw new Error(`Component "${f.name}" requires component or loader`);let U={name:f.name,component:f.component,loader:f.loader,metadata:f.metadata,fallback:f.fallback,isLazy:!1};if(!U.component&&U.loader)U.component=of(U.loader,f.name),U.loader=void 0,U.isLazy=!0;return U};function O(f){let U=yU(f);return v.set(U.name,U),U.component}var oU=(f)=>{f.forEach((U)=>O(U))},EU=(f)=>{v.delete(f)},mU=(f)=>{return v.has(f)},kU=(f)=>{return v.get(f)?.metadata},r=(f)=>{return v.get(f)},jU=()=>{return Array.from(v.keys())},xU=()=>{return v.size};import{Suspense as gU,useContext as pU,memo as cU}from"react";import{createContext as dU}from"react";import{jsx as vU,Fragment as bU}from"react/jsx-runtime";var uU=dU(vU(bU,{})),F=uU;import{jsx as Yf}from"react/jsx-runtime";function hU({uiConfig:f,setUiAjaxConfiguration:U}){let Z=pU(F),D=M();if(D)console.log("[UI] Rendering component:",f.card),console.log("[UI] Component data:",f.data),console.log("[UI] Component content:",f.content),console.log("[UI] Has setUiAjaxConfiguration:",!!U);let P=r(f.card);if(!P?.component){if(D)console.warn(`[UI] Component not found in registry: ${f.card}`),console.log("[UI] Returning fallback component");return Z}if(D)console.log("[UI] Found component in registry:",{name:P.name,isLazy:P.isLazy,hasMetadata:!!P.metadata});let H=P.component,z=Yf(H,{data:f.data,content:f.content,setUiAjaxConfiguration:U});if(P.isLazy){if(D)console.log("[UI] Rendering lazy component with Suspense:",P.name);return Yf(gU,{fallback:P.fallback?Yf(P.fallback,{}):Z,children:z},`${P.name}`)}if(D)console.log("[UI] Rendering component directly:",P.name);return z}var K=cU(hU);import{Suspense as nU,useContext as sU}from"react";import{createContext as lU}from"react";var rU=lU(null),k=rU;import{jsx as ff}from"react/jsx-runtime";function Ef({uiConfig:f,setUiAjaxConfiguration:U}){let Z=sU(F),D=M();if(D)console.log("[UILoading] Rendering fallback for:",f.card),console.log("[UILoading] Component data:",f.data),console.log("[UILoading] Component content:",f.content),console.log("[UILoading] Has setUiAjaxConfiguration:",!!U);let P=r(f.card);if(!P?.component){if(D)console.warn(`[UILoading] Component not found in registry: ${f.card}`),console.log("[UILoading] Returning fallback component");return Z}if(D)console.log("[UILoading] Found component in registry:",{name:P.name,isLazy:P.isLazy,hasMetadata:!!P.metadata,hasFallback:!!P.fallback});if(P.fallback){if(D)console.log("[UILoading] Rendering fallback for:",P.name);let T=P.fallback;return ff(T,{})}if(D)console.log("[UILoading] No fallback, rendering full component:",P.name);let H=P.component,z=ff(k.Provider,{value:Ef,children:ff(H,{data:f.data,content:f.content,setUiAjaxConfiguration:U})});if(P.isLazy)return ff(nU,{fallback:Z,children:z},`${P.name}`);return z}var Xf=Ef;import{useContext as iU}from"react";import{jsx as qf}from"react/jsx-runtime";var tU=({data:f,content:U,setUiAjaxConfiguration:Z})=>{let{name:D,sx:P}=f,H=iU(k)??K;return qf(_,{card:D,data:f,children:qf("div",{style:P,id:D,children:U.map((z,T)=>{return qf(H,{uiConfig:z,setUiAjaxConfiguration:Z},`children-${T}`)})})})},mf=tU;var aU=O({name:"SequenceCard",component:mf,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});import{useContext as eU}from"react";import{jsx as kf}from"react/jsx-runtime";var fD=({data:f,content:U,setUiAjaxConfiguration:Z})=>{let{name:D}=f,P=eU(k)??K;return kf(_,{card:D,data:f,children:U.map((H,z)=>{return kf(P,{uiConfig:H,setUiAjaxConfiguration:Z},`children-${z}`)})})},jf=fD;var UD=O({name:"UnionCard",component:jf,metadata:{author:"PieData",description:"Renders one of many components"}});import{useEffect as ZD,useState as zD}from"react";import $D from"html-react-parser";import{useCallback as Uf,useEffect as DD,useRef as Bf,useState as HD}from"react";function PD(){let f=new AudioContext,U=f.createOscillator(),Z=U.connect(f.createMediaStreamDestination());U.start();let D=Z.stream.getAudioTracks()[0];return D.enabled=!1,D}function Df(f=null,U){let[Z,D]=HD(!1),P=Bf(null),H=Bf(null),z=Bf(null),T=Uf(async(B,q=!0)=>{if(P.current)$();let Y=new RTCPeerConnection;if(Y.onconnectionstatechange=()=>{if(Y.connectionState==="connected")D(!0);else if(["disconnected","failed","closed"].includes(Y.connectionState))D(!1)},Y.ontrack=(R)=>{if(f)f.srcObject=R.streams[0]},q){let R=await navigator.mediaDevices.getUserMedia({audio:!0});Y.addTrack(R.getTracks()[0],R)}else{let R=PD();Y.addTrack(R)}let I=Y.createDataChannel("oai-events");H.current=I,z.current=new Promise((R)=>{I.addEventListener("open",()=>{R()})});let V=await Y.createOffer();await Y.setLocalDescription(V);let C=await(await fetch(`${"https://api.openai.com/v1/realtime/calls"}?model=${"gpt-realtime"}`,{method:"POST",body:V.sdp,headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/sdp"}})).text();await Y.setRemoteDescription({type:"answer",sdp:C}),P.current=Y,await z.current},[f]),$=Uf(()=>{let B=H.current;if(B)B.close();P.current?.getSenders()?.forEach((q)=>q.track?.stop()),P.current?.close(),D(!1),P.current=null,H.current=null,z.current=null},[f]),G=Uf((B)=>{let q=H.current;if(!q){console.error("Data channel is not ready",B);return}let Y=new Date().toLocaleTimeString();if(B.event_id=B.event_id||crypto.randomUUID(),q.send(JSON.stringify(B)),!B.timestamp)B.timestamp=Y;U?.(B)},[U,f]),X=Uf((B)=>{if(!H.current){console.error("Data channel is not ready");return}let Y=()=>{G({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:B}]}}),G({type:"response.create"})};if(z.current)z.current.then(Y);else Y()},[U,f]);return DD(()=>{let B=H.current;if(!B)return;let q=(Y)=>{let I=JSON.parse(Y.data);if(!I.timestamp)I.timestamp=new Date().toLocaleTimeString();U?.(I)};return B.addEventListener("message",q),()=>{B.removeEventListener("message",q)}},[U,f]),{isSessionActive:Z,startSession:T,stopSession:$,sendTextMessage:X}}import{jsx as GD}from"react/jsx-runtime";var TD=({data:f})=>{let{html:U,useSocketioSupport:Z,useCentrifugeSupport:D,useMittSupport:P,centrifugeChannel:H}=f,[z,T]=zD(U),{isSessionActive:$,startSession:G,sendTextMessage:X}=Df(null,(I)=>{if(console.log(I.type,I.type==="response.output_text.delta"&&I.delta),I.type==="response.output_text.delta"&&I.delta)T((V)=>V+I.delta)});return ZD(()=>{T(U)},[U]),GD(_,{card:"HTMLEmbedCard",data:f,methods:{update:(I)=>{T(I.value)},generateUsingAI:async(I)=>{try{if(!$&&I.token)await G(I.token,!1);X(I.prompt)}catch(V){console.error("Failed to generate using AI",V)}},initializeAI:async(I)=>{if(!$&&I.token)await G(I.token,!1)}},useCentrifugeSupport:D,useSocketioSupport:Z,useMittSupport:P,centrifugeChannel:H,children:$D(z)})},xf=TD;var VD=O({name:"HTMLEmbedCard",component:xf,metadata:{author:"PieData"}});import{useEffect as ID,useState as JD}from"react";import{jsx as df}from"react/jsx-runtime";var YD=({data:f})=>{let{name:U,value:Z,useSocketioSupport:D,useCentrifugeSupport:P,useMittSupport:H,centrifugeChannel:z}=f,[T,$]=JD(Z);return ID(()=>{$(Z)},[Z]),df(_,{card:"HiddenCard",data:f,useSocketioSupport:D,useCentrifugeSupport:P,useMittSupport:H,centrifugeChannel:z,methods:{update:({value:G})=>{$(G)}},children:df("input",{type:"hidden",id:U,name:U,value:T})})},uf=YD;var XD=O({name:"HiddenCard",component:uf,metadata:{author:"PieData"}});import{useContext as bf,useEffect as QD}from"react";import{createContext as qD}from"react";var BD=qD(void 0),L=BD;import{jsx as OD,Fragment as CD}from"react/jsx-runtime";var WD=({data:f})=>{let{url:U}=f,Z=bf(L),D=bf(F);return QD(()=>{if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(U))window.location.href=U;else Z?.(U)},[U,Z]),OD(CD,{children:D})},vf=WD;var _D=O({name:"AutoRedirectCard",component:vf,metadata:{author:"PieData"}});import{Bounce as RD,Slide as FD,Zoom as KD,Flip as wD}from"react-toastify";import{toast as LD,ToastContainer as MD}from"react-toastify";import{useContext as SD,useMemo as AD,useRef as ND}from"react";import{jsx as Qf,Fragment as jD}from"react/jsx-runtime";var yD={bounce:RD,slide:FD,zoom:KD,flip:wD},oD=(f)=>{let U={...f,type:f.alertType,transition:f.transition?yD[f.transition]:void 0,position:f.position??"bottom-right",autoClose:f.autoClose??3000,style:{backgroundColor:"black",...f.sx}};LD(f.message,U)},ED=(f)=>{console.log("Log event",f)},mD=(f)=>{if(typeof window==="undefined"||!window.Notification){console.warn("[IOEventsCard] Notifications API is not available");return}let U=()=>{try{new window.Notification(f.title,{body:f.message??f.subtitle,icon:f.icon,silent:f.silent})}catch(D){console.error("[IOEventsCard] Failed to show notification",D)}},Z=window.Notification.permission;if(Z==="granted"){U();return}if(Z==="denied"){console.warn("[IOEventsCard] Notification permission denied");return}window.Notification.requestPermission().then((D)=>{if(D==="granted")U()})},kD=({data:f})=>{let{useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:D,centrifugeChannel:P}=f,H=SD(L),z=ND(H);z.current=H;let T=AD(()=>({alert:oD,log:ED,push:mD,redirect:($)=>{if($.to){let G=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(G))window.location.href=G;else z.current?.(G)}else window.location.reload()},reload:($)=>{if($.to){let G=$.to;if(/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(G))window.location.href=G;else z.current?.(G)}else window.location.reload()}}),[]);return Qf(jD,{children:Qf(_,{card:"IOEventsCard",data:f,useCentrifugeSupport:U,useSocketioSupport:Z,useMittSupport:D,centrifugeChannel:P,methods:T,children:Qf(MD,{})})})},gf=kD;var xD=O({name:"IOEventsCard",component:gf,metadata:{author:"PieData"}});import{useEffect as pf,useState as dD}from"react";import{jsx as cf}from"react/jsx-runtime";var uD=({data:f})=>{let{name:U,key:Z,value:D,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T}=f,[$,G]=dD(D);return pf(()=>{G(D)},[D]),pf(()=>{if(typeof window==="undefined")return;sessionStorage.setItem(Z,$)},[Z,$]),cf(_,{card:"SessionStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)},remove:()=>{sessionStorage.removeItem(Z),G("")}},children:cf("input",{type:"hidden",id:U,name:U,value:$})})},hf=uD;var bD=O({name:"SessionStorageCard",component:hf,metadata:{author:"PieData"}});import{useEffect as lf,useState as vD}from"react";import{jsx as rf}from"react/jsx-runtime";var gD=({data:f})=>{let{name:U,key:Z,value:D,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T}=f,[$,G]=vD(D);return lf(()=>{G(D)},[D]),lf(()=>{if(typeof window==="undefined")return;localStorage.setItem(Z,$)},[Z,$]),rf(_,{card:"DeviceStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)},remove:()=>{localStorage.removeItem(Z),G("")}},children:rf("input",{type:"hidden",id:U,name:U,value:$})})},nf=gD;var pD=O({name:"DeviceStorageCard",component:nf,metadata:{author:"PieData"}});import{useEffect as sf,useState as cD}from"react";import{jsx as tf}from"react/jsx-runtime";var hD=({data:f})=>{let{name:U,key:Z,value:D,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T}=f,[$,G]=cD(D);return sf(()=>{G(D)},[D]),sf(()=>{if(typeof window==="undefined")return;let X=window.Telegram?.WebApp?.CloudStorage;if(!X)return;X.setItem(Z,$)},[Z,$]),tf(_,{card:"CloudStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.CloudStorage;if(X)X.removeItem(Z);G("")}},children:tf("input",{type:"hidden",id:U,name:U,value:$})})},af=hD;var lD=O({name:"CloudStorageCard",component:af,metadata:{author:"PieData"}});import{useEffect as ef,useState as rD}from"react";import{jsx as fU}from"react/jsx-runtime";var nD=({data:f})=>{let{name:U,key:Z,value:D,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T}=f,[$,G]=rD(D);return ef(()=>{G(D)},[D]),ef(()=>{if(typeof window==="undefined")return;let X=window.Telegram?.WebApp?.SecureStorage;if(!X)return;X.setItem(Z,$)},[Z,$]),fU(_,{card:"SecureStorageCard",data:f,useSocketioSupport:P,useCentrifugeSupport:H,useMittSupport:z,centrifugeChannel:T,methods:{update:({value:X})=>{G(X)},remove:()=>{let X=window.Telegram?.WebApp?.SecureStorage;if(X)X.removeItem(Z);G("")}},children:fU("input",{type:"hidden",id:U,name:U,value:$})})},UU=nD;var sD=O({name:"SecureStorageCard",component:UU,metadata:{author:"PieData"}});import{useCallback as Wf,useContext as Cf,useEffect as iD,useRef as tD,useState as DU}from"react";import{jsx as HU}from"react/jsx-runtime";var aD=({data:f,content:U})=>{let{useLoader:Z,noReturn:D,returnType:P,useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:$}=f,G=Cf(F),X=Cf(k)??K,[B,q]=DU(!1),[Y,I]=DU(null),V=tD(U),J=Cf(w),Q=Wf((R)=>{if(R===null)q(!0);else if(q(!1),!D)V.current=R;if(!D)I(R)},[D]),W=Wf((R)=>{V.current=R.content,I(R.content)},[]),C=Wf((R)=>{if(R===null)q(!0);else if(q(!1),!D)for(let t of R)J?.emit(t.name,t.data)},[D,J]);if(iD(()=>{I(U),q(!1)},[U]),!Y&&Z)return G;return HU(_,{card:"AjaxGroupCard",data:f,methods:{changeContent:W},useSocketioSupport:H,useCentrifugeSupport:z,useMittSupport:T,centrifugeChannel:$,children:HU(X,{uiConfig:Y??V.current,setUiAjaxConfiguration:P==="events"?C:Q})})},PU=aD;var eD=O({name:"AjaxGroupCard",component:PU,metadata:{author:"PieData",description:"Group card with AJAX support"}});import{useContext as ZU}from"react";import{jsx as Of}from"react/jsx-runtime";var fH=({data:f,content:U,setUiAjaxConfiguration:Z})=>{let{name:D,url:P,sx:H}=f,z=ZU(L),T=ZU(k)??K;return Of(_,{card:D,data:f,children:Of("div",{style:H,id:D,onClick:(G)=>{if(P)if(G.stopPropagation(),/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(P))window.location.href=P;else z?.(P)},children:Of(T,{setUiAjaxConfiguration:Z,uiConfig:U})})})},zU=fH;var UH=O({name:"BoxCard",component:zU,metadata:{author:"PieData",description:"Simple div with styles joining few components"}});import{useMemo as n}from"react";import{QueryClient as IH,QueryClientProvider as JH,useQuery as YH}from"@tanstack/react-query";import{useContext as PH,useEffect as ZH}from"react";import{useEffect as DH,useState as HH}from"react";var Hf=new Map,Pf=new Map;function Zf(f,U){let Z=`${f}::${U}`,D=f?Hf.get(Z):void 0,[P,H]=HH(D??null);return DH(()=>{if(!f)return;if(Hf.has(Z)){H(Hf.get(Z));return}let z=Pf.get(Z);if(!z)z=fetch(f+`api/support/${U}`,{method:"GET"}).then(($)=>$.json()).then(($)=>{return Hf.set(Z,$),Pf.delete(Z),$}).catch(($)=>{throw Pf.delete(Z),$}),Pf.set(Z,z);let T=!1;return z.then(($)=>{if(!T)H($)}).catch(()=>{}),()=>{T=!0}},[f,U,Z]),P}var _f=null,$U=null;function TU(){$U?.()}function Rf(){if(typeof window==="undefined")return Promise.resolve();if(typeof window.sid!=="undefined")return Promise.resolve();if(!_f)_f=new Promise((f)=>{$U=()=>{f()}});return _f}var zH=({children:f})=>{let U=PH(o),Z=e(),D=Zf(Z,"socketIO"),P=(H)=>{if(typeof window!=="undefined")window.sid=H.sid,TU(),console.log(`SocketIO initialized: ${window.sid}`)};return ZH(()=>{if(!U)return;let H=()=>{console.log("SocketIO connected")},z=(T)=>{console.log(`SocketIO disconnected: ${T}`),U.connect()};if(D)U.on("pieinit",P),U.on("connect",H),U.on("disconnect",z),U.connect();return()=>{if(D)U.off("pieinit",P),U.off("connect",H),U.off("disconnect",z),U.disconnect()}},[U,D]),f},g=zH;import{useContext as $H,useEffect as TH}from"react";var GH=({children:f})=>{let U=$H(y),Z=e(),D=Zf(Z,"centrifuge");return TH(()=>{if(!U)return;let P=()=>{console.log("Centrifuge connected")},H=(z)=>{console.log("Centrifuge disconnected:",z)};if(D)U.on("connected",P),U.on("disconnected",H),U.connect();return()=>{if(D)U.disconnect()}},[U,D]),f},p=GH;import{createAxiosDateTransformer as XH}from"axios-date-transformer";import{jsx as VH}from"react/jsx-runtime";function l(f,U,Z){if(!U)return Z;let D=f.replace(/^\//,""),P=U[D];if(!P)return Z;return VH(Xf,{uiConfig:P})}import{jsx as S,Fragment as QH}from"react/jsx-runtime";var qH=({location:f,fallback:U,piecache:Z,onError:D,queryOptions:P})=>{let H=x(),z=d(),T=M(),$=n(()=>XH({baseURL:H||""}),[H]),G=n(()=>E(),[]),X=n(()=>H?b(H):null,[H]),B=n(()=>H?u(H,z):null,[H,z]),{data:q,isLoading:Y,error:I}=YH({queryKey:["uiConfig",f.pathname+f.search,H],enabled:!!H,queryFn:async()=>{let J=new URLSearchParams(f.search);J.set("__pieroot","web");let Q="/api/content"+f.pathname+"?"+J.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",Q);let W=await $.get(Q,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(T)console.log("[PieRoot] Received UI configuration:",W.data);return W.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(J)=>Math.min(1000*2**J,30000),...P}),V=l(f.pathname,Z,U);if(!H)return V??null;if(T)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",H),console.log("[PieRoot] CENTRIFUGE_SERVER:",z),console.log("[PieRoot] Fallback provided:",!!U),console.log("[PieRoot] Piecache provided:",!!Z);if(I){if(T)console.error("[PieRoot] Error fetching UI configuration:",I),console.error("[PieRoot] Error details:",{message:I.message,status:I.response?.status,data:I.response?.data});return D?.(),V}if(Y||!q){if(T)console.log("[PieRoot] Loading state:",{isLoading:Y,hasUiConfiguration:!!q});return V}if(T)console.log("[PieRoot] UI configuration loaded successfully:",q),console.log("[PieRoot] Rendering UI with configuration");return S(w.Provider,{value:G,children:S(o.Provider,{value:X,children:S(y.Provider,{value:B,children:S(F.Provider,{value:U??S(QH,{}),children:S(g,{children:S(p,{children:S("form",{id:"piedata_global_form",action:H+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:S(K,{uiConfig:q})})})})})})})})},BH=(f)=>{let U=n(()=>new IH,[]);return S(L.Provider,{value:f.onNavigate,children:S(j.Provider,{value:f.config,children:S(JH,{client:U,children:S(qH,{...f})})})})},WH=BH;import{useMemo as s}from"react";import{QueryClient as _H,QueryClientProvider as RH,useQuery as FH}from"@tanstack/react-query";import{createAxiosDateTransformer as KH}from"axios-date-transformer";import{useEffect as CH,useState as OH}from"react";var Ff=({onError:f}={})=>{let[U,Z]=OH(null),D=Mf();return CH(()=>{if(typeof window==="undefined")return;let P=window.Telegram?.WebApp;if(!P)return;try{P.ready?.()}catch(H){f?.()}if(D==="telegram_expanded"&&(P.platform==="ios"||P.platform==="android"))P.expand();Z(P)},[]),U};import{jsx as A,Fragment as MH}from"react/jsx-runtime";var wH=({location:f,fallback:U,piecache:Z,onError:D,queryOptions:P})=>{let H=x(),z=d(),T=M(),$=s(()=>KH({baseURL:H}),[H]),G=s(()=>E(),[]),X=s(()=>H?b(H):null,[H]),B=s(()=>H?u(H,z):null,[H,z]),q=Ff({onError:D}),{data:Y,isLoading:I,error:V}=FH({queryKey:["uiConfig",f.pathname+f.search,q?.initData],enabled:!!q?.initData,queryFn:async()=>{let Q=new URLSearchParams(f.search);if(Q.set("__pieroot","telegram"),q?.initData)Q.set("initData",q.initData);let W="/api/content"+f.pathname+"?"+Q.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",W);let C=await $.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(T)console.log("[PieRoot] Received UI configuration:",C.data);return C.data},staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Q)=>Math.min(1000*2**Q,30000),...P}),J=l(f.pathname,Z,U);if(!H)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&T)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),D?.(),J;if(I||!Y){if(T)console.log("[PieRoot] Loading state:",{isLoading:I,hasUiConfiguration:!!Y});return J}if(T)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return A(w.Provider,{value:G,children:A(o.Provider,{value:X,children:A(y.Provider,{value:B,children:A(F.Provider,{value:U??A(MH,{}),children:A(g,{children:A(p,{children:A("form",{id:"piedata_global_form",action:H+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:A(K,{uiConfig:Y})})})})})})})})},LH=(f)=>{let U=s(()=>new _H,[]);return A(L.Provider,{value:f.onNavigate,children:A(j.Provider,{value:f.config,children:A(RH,{client:U,children:A(wH,{...f})})})})},SH=LH;import{useMemo as Kf,useState as AH}from"react";import{QueryClient as NH,QueryClientProvider as yH}from"@tanstack/react-query";import{jsx as m,Fragment as mH}from"react/jsx-runtime";var oH=({location:f,fallback:U,children:Z})=>{let D=x(),P=d(),H=M(),z=Kf(()=>E(),[]),T=Kf(()=>D?b(D):null,[D]),$=Kf(()=>D?u(D,P):null,[D,P]);if(H)console.log("[PieRoot] Rendering with location:",f),console.log("[PieRoot] API_SERVER:",D),console.log("[PieRoot] CENTRIFUGE_SERVER:",P),console.log("[PieRoot] Fallback provided:",!!U);return m(w.Provider,{value:z,children:m(o.Provider,{value:T,children:m(y.Provider,{value:$,children:m(F.Provider,{value:U??m(mH,{}),children:m(g,{children:m(p,{children:m("form",{id:"piedata_global_form",action:D+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:Z})})})})})})})},EH=(f)=>{let[U]=AH(()=>new NH);return m(L.Provider,{value:f.onNavigate,children:m(j.Provider,{value:f.config,children:m(yH,{client:U,children:m(oH,{...f})})})})},kH=EH;import{useMemo as i}from"react";import{QueryClient as dH,QueryClientProvider as uH,useQuery as bH}from"@tanstack/react-query";import{createAxiosDateTransformer as vH}from"axios-date-transformer";import{useEffect as jH,useState as xH}from"react";var GU=()=>{let[f,U]=xH(null);return jH(()=>{if(typeof window==="undefined")return;let Z=window.WebApp;if(!Z)return;Z.ready(),U(Z)},[]),f};import{jsx as N,Fragment as cH}from"react/jsx-runtime";var gH=({location:f,fallback:U,piecache:Z,onError:D,queryOptions:P})=>{let H=x(),z=d(),T=M(),$=i(()=>vH({baseURL:H}),[H]),G=i(()=>E(),[]),X=i(()=>H?b(H):null,[H]),B=i(()=>H?u(H,z):null,[H,z]),q=GU(),{data:Y,isLoading:I,error:V}=bH({queryKey:["uiConfig",f.pathname+f.search,q?.initData],queryFn:async()=>{let Q=new URLSearchParams(f.search);if(Q.set("__pieroot","max"),q?.initData)Q.set("initData",q.initData);let W="/api/content"+f.pathname+"?"+Q.toString();if(T)console.log("[PieRoot] Fetching UI configuration from:",W);let C=await $.get(W,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,PUT,POST,DELETE,PATCH,OPTIONS","Content-type":"application/json"},withCredentials:!0});if(T)console.log("[PieRoot] Received UI configuration:",C.data);return C.data},enabled:!!q?.initData,staleTime:1/0,gcTime:1/0,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,retry:!0,retryDelay:(Q)=>Math.min(1000*2**Q,30000),...P}),J=l(f.pathname,Z,U);if(!H)throw Error("Set PIE_API_SERVER and PIE_CENTRIFUGE_SERVER");if(V&&T)return console.error("[PieRoot] Error fetching UI configuration:",V),console.error("[PieRoot] Error details:",{message:V.message,status:V.response?.status,data:V.response?.data}),D?.(),J;if(I||!Y){if(T)console.log("[PieRoot] Loading state:",{isLoading:I,hasUiConfiguration:!!Y});return J}if(T)console.log("[PieRoot] UI configuration loaded successfully:",Y),console.log("[PieRoot] Rendering UI with configuration");return N(w.Provider,{value:G,children:N(o.Provider,{value:X,children:N(y.Provider,{value:B,children:N(F.Provider,{value:U??N(cH,{}),children:N(g,{children:N(p,{children:N("form",{id:"piedata_global_form",action:H+"api/process"+f.pathname,method:"post",encType:"multipart/form-data",children:N(K,{uiConfig:Y})})})})})})})})},pH=(f)=>{let U=i(()=>new dH,[]);return N(L.Provider,{value:f.onNavigate,children:N(j.Provider,{value:f.config,children:N(uH,{client:U,children:N(gH,{...f})})})})},hH=pH;import{useMemo as lH}from"react";var rH=(f,U={},Z=[],D,P)=>{let H=P?.renderingLogEnabled??!1,z=P?.timeout,T=P?.retryPolicy,$=T?.maxRetries??0,G=T?.baseDelay??1000,X=T?.retryOn??[502,503,504];if(H)console.log("Registering AJAX: ",D,U,Z);return async(B={})=>{if(typeof window==="undefined"||typeof document==="undefined"){if(H)console.warn("getAjaxSubmit called on server, skipping DOM-dependent logic");return}let q=P?.apiServer;if(!q){if(H)console.warn("AJAX skipped: apiServer is missing");return}if(!D||!f){if(H)console.warn("AJAX skipped: pathname or setUiAjaxConfiguration is missing");return}if(Z.includes("sid"))await Rf();let Y=new FormData;for(let[J,Q]of Object.entries({...U,...B}))Y.append(J,Q);for(let J of Z)if(J==="sid"){if(!window.sid)throw new Error("SocketIO isn't initialized properly");Y.append("sid",window.sid)}else{let Q=document.getElementsByName(J);if(!Q.length){if(H)console.warn(`No input found with name ${J}`);continue}let W=Q[0];if(W instanceof HTMLInputElement)if(W.type==="file"&&W.files)Array.from(W.files).forEach((C)=>Y.append(J,C));else Y.append(J,W.value);else if(W instanceof HTMLTextAreaElement)Y.append(J,W.value)}let I=q+"api/ajax_content"+D;f(null);let V;for(let J=0;J<=$;J++){if(J>0){let C=G*2**(J-1);if(H)console.log(`AJAX retry ${J}/${$} after ${C}ms`);await new Promise((R)=>setTimeout(R,C))}let Q=z!=null?new AbortController:null,W=Q&&setTimeout(()=>Q.abort(),z);try{let C=await fetch(I,{method:"POST",body:Y,signal:Q?.signal});if(W)clearTimeout(W);if(!C.ok&&X.includes(C.status)&&J<$){V=new Error(`HTTP ${C.status}`);continue}let t=(C.headers.get("content-type")||"").includes("application/json");if(!!C.body?.getReader&&!t){let a=C.body.getReader(),JU=new TextDecoder,c="";while(!0){let{done:zf,value:YU}=await a.read();if(zf)break;c+=JU.decode(YU,{stream:!0});let wf=c.split(`
|
|
3
|
+
`);c=wf.pop()??"";for(let XU of wf){let $f=XU.trim();if(!$f)continue;try{let qU=JSON.parse($f);f([qU])}catch{if(H)console.warn("Failed to parse streamed line:",$f)}}}if(c.trim())try{let zf=JSON.parse(c);f([zf])}catch{if(H)console.warn("Failed to parse final streamed line:",c)}return{}}else{let a=await C.json();return f(a),a}}catch(C){if(W)clearTimeout(W);if(V=C,J<$)continue;if(H)console.error("AJAX request failed:",C);return f(null),C}}if(H)console.error("AJAX request failed after retries:",V);return f(null),V}},nH=(f,U={},Z=[],D,P)=>{let{apiServer:H,enableRenderingLog:z}=h(),T=JSON.stringify(U),$=JSON.stringify(Z),G=JSON.stringify(P);return lH(()=>rH(f,U,Z,D,{apiServer:H,renderingLogEnabled:z,timeout:P?.timeout,retryPolicy:P?.retryPolicy}),[f,T,$,D,H,z,G])};import{tool as sH}from"@openai/agents";import{useContext as iH,useMemo as tH}from"react";var VU=/^pie(.+?)_(.+)$/;function IU(f=E(),U={}){let Z=[],D=new Set;for(let P of f.all.keys()){if(typeof P!=="string")continue;let H=P.match(VU);if(!H)continue;let[,z,T]=H,$={methodName:z,cardName:T,eventName:P};if(U.filter&&!U.filter($))continue;let G=U.nameFor?.($)??`${T}_${z}`;if(D.has(G))continue;D.add(G);let X=U.describe?.($)??`Invokes the "${z}" method on the PieCard "${T}" by emitting the in-process mitt event "${P}". The optional "payload" argument is forwarded verbatim to the card's handler.`;Z.push(sH({name:G,description:X,strict:!1,parameters:{type:"object",properties:{payload:{description:"Arbitrary JSON payload forwarded to the PieCard method handler. Omit for fire-and-forget calls."}},required:[],additionalProperties:!0},execute:async(B)=>{let q=B?.payload;return f.emit(P,q),`Emitted "${P}"`}}))}return Z}function aH(f={}){let Z=iH(w)??E(),D=[];for(let $ of Z.all.keys())if(typeof $==="string"&&VU.test($))D.push($);D.sort();let P=D.join("|"),{filter:H,describe:z,nameFor:T}=f;return tH(()=>IU(Z,{filter:H,describe:z,nameFor:T}),[Z,P,H,z,T])}import{clsx as eH}from"clsx";import{twMerge as fP}from"tailwind-merge";function UP(...f){return fP(eH(f))}var DP=()=>{if(typeof document==="undefined")return;let f=document.getElementById("piedata_global_form");f&&f.submit()};var HP=(f,U)=>`${f}${Tf}${U}`;export{Ff as useWebApp,aH as usePieMittAgentTools,MU as usePieEmit,Df as useOpenAIWebRTC,nH as useAjaxSubmit,EU as unregisterComponent,DP as submitGlobalForm,v as registry,O as registerPieComponent,oU as registerMultipleComponents,HP as pieName,mU as hasComponent,xU as getRegistrySize,r as getRegistryEntry,IU as getMittAgentTools,kU as getComponentMeta,jU as getAllRegisteredComponents,UP as cn,UD as UnionCard,k as UIRendererContext,Xf as UILoading,K as UI,bD as SessionStorageCard,aU as SequenceCard,sD as SecureStorageCard,SH as PieTelegramRoot,WH as PieRoot,hH as PieMaxRoot,_ as PieCard,kH as PieBaseRoot,Tf as PIEBREAK,xD as IOEventsCard,XD as HiddenCard,VD as HTMLEmbedCard,pD as DeviceStorageCard,lD as CloudStorageCard,UH as BoxCard,_D as AutoRedirectCard,eD as AjaxGroupCard};
|