@xyo-network/react-embed 2.64.0 → 2.64.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/components/EmbedPlugin.js +203 -11
- package/dist/browser/components/EmbedPlugin.js.map +1 -1
- package/dist/browser/components/EmbedResolver.js +13 -3
- package/dist/browser/components/EmbedResolver.js.map +1 -1
- package/dist/browser/components/controls/EmbedFormControl.js +3 -2
- package/dist/browser/components/controls/EmbedFormControl.js.map +1 -1
- package/dist/browser/components/controls/ListModeSelect.js +23 -11
- package/dist/browser/components/controls/ListModeSelect.js.map +1 -1
- package/dist/browser/components/controls/RenderSelect.js +26 -7
- package/dist/browser/components/controls/RenderSelect.js.map +1 -1
- package/dist/browser/components/controls/index.js +63 -3
- package/dist/browser/components/controls/index.js.map +1 -1
- package/dist/browser/components/embed-card/EmbedCardResolver.js +52 -5
- package/dist/browser/components/embed-card/EmbedCardResolver.js.map +1 -1
- package/dist/browser/components/embed-card/EmbedPluginCard.js +429 -11
- package/dist/browser/components/embed-card/EmbedPluginCard.js.map +1 -1
- package/dist/browser/components/embed-card/card/BusyCard.js +3 -2
- package/dist/browser/components/embed-card/card/BusyCard.js.map +1 -1
- package/dist/browser/components/embed-card/card/EmbedCardHeader.js +61 -10
- package/dist/browser/components/embed-card/card/EmbedCardHeader.js.map +1 -1
- package/dist/browser/components/embed-card/card/EmbedPluginCard.js +168 -13
- package/dist/browser/components/embed-card/card/EmbedPluginCard.js.map +1 -1
- package/dist/browser/components/embed-card/card/index.js +182 -3
- package/dist/browser/components/embed-card/card/index.js.map +1 -1
- package/dist/browser/components/embed-card/error-handling/EmbedCardApiErrorRenderer.js +26 -6
- package/dist/browser/components/embed-card/error-handling/EmbedCardApiErrorRenderer.js.map +1 -1
- package/dist/browser/components/embed-card/error-handling/EmbedErrorCard.js +4 -3
- package/dist/browser/components/embed-card/error-handling/EmbedErrorCard.js.map +1 -1
- package/dist/browser/components/embed-card/error-handling/index.js +33 -2
- package/dist/browser/components/embed-card/error-handling/index.js.map +1 -1
- package/dist/browser/components/embed-card/index.js +481 -2
- package/dist/browser/components/embed-card/index.js.map +1 -1
- package/dist/browser/components/embed-card/menu/EmbedMenu.js +30 -6
- package/dist/browser/components/embed-card/menu/EmbedMenu.js.map +1 -1
- package/dist/browser/components/embed-card/menu/JsonMenuItem.js +13 -3
- package/dist/browser/components/embed-card/menu/JsonMenuItem.js.map +1 -1
- package/dist/browser/components/embed-card/menu/index.js +46 -1
- package/dist/browser/components/embed-card/menu/index.js.map +1 -1
- package/dist/browser/components/embed-plugin-stories/storyPayload.js +2 -1
- package/dist/browser/components/embed-plugin-stories/storyPayload.js.map +1 -1
- package/dist/browser/components/embed-plugin-stories/storyShared.js +480 -5
- package/dist/browser/components/embed-plugin-stories/storyShared.js.map +1 -1
- package/dist/browser/components/index.js +482 -2
- package/dist/browser/components/index.js.map +1 -1
- package/dist/browser/components/validation-alerts/ValidatePayload.js +13 -3
- package/dist/browser/components/validation-alerts/ValidatePayload.js.map +1 -1
- package/dist/browser/components/validation-alerts/ValidatePlugins.js +21 -3
- package/dist/browser/components/validation-alerts/ValidatePlugins.js.map +1 -1
- package/dist/browser/components/validation-alerts/index.js +59 -2
- package/dist/browser/components/validation-alerts/index.js.map +1 -1
- package/dist/browser/contexts/EmbedPluginContext/Context.js +2 -1
- package/dist/browser/contexts/EmbedPluginContext/Context.js.map +1 -1
- package/dist/browser/contexts/EmbedPluginContext/Provider.js +9 -3
- package/dist/browser/contexts/EmbedPluginContext/Provider.js.map +1 -1
- package/dist/browser/contexts/EmbedPluginContext/index.js +44 -4
- package/dist/browser/contexts/EmbedPluginContext/index.js.map +1 -1
- package/dist/browser/contexts/EmbedPluginContext/use.js +8 -2
- package/dist/browser/contexts/EmbedPluginContext/use.js.map +1 -1
- package/dist/browser/contexts/RefreshPayloadContext/Context.js +2 -1
- package/dist/browser/contexts/RefreshPayloadContext/Context.js.map +1 -1
- package/dist/browser/contexts/RefreshPayloadContext/Provider.js +9 -3
- package/dist/browser/contexts/RefreshPayloadContext/Provider.js.map +1 -1
- package/dist/browser/contexts/RefreshPayloadContext/index.js +21 -3
- package/dist/browser/contexts/RefreshPayloadContext/index.js.map +1 -1
- package/dist/browser/contexts/RefreshPayloadContext/use.js +8 -2
- package/dist/browser/contexts/RefreshPayloadContext/use.js.map +1 -1
- package/dist/browser/contexts/ResolvePayloadContext/Context.js +2 -1
- package/dist/browser/contexts/ResolvePayloadContext/Context.js.map +1 -1
- package/dist/browser/contexts/ResolvePayloadContext/Provider.js +17 -4
- package/dist/browser/contexts/ResolvePayloadContext/Provider.js.map +1 -1
- package/dist/browser/contexts/ResolvePayloadContext/index.js +72 -4
- package/dist/browser/contexts/ResolvePayloadContext/index.js.map +1 -1
- package/dist/browser/contexts/ResolvePayloadContext/use.js +8 -2
- package/dist/browser/contexts/ResolvePayloadContext/use.js.map +1 -1
- package/dist/browser/contexts/ValidatePayloadContext/Context.js +2 -1
- package/dist/browser/contexts/ValidatePayloadContext/Context.js.map +1 -1
- package/dist/browser/contexts/ValidatePayloadContext/Provider.js +17 -4
- package/dist/browser/contexts/ValidatePayloadContext/Provider.js.map +1 -1
- package/dist/browser/contexts/ValidatePayloadContext/index.js +49 -3
- package/dist/browser/contexts/ValidatePayloadContext/index.js.map +1 -1
- package/dist/browser/contexts/ValidatePayloadContext/use.js +8 -2
- package/dist/browser/contexts/ValidatePayloadContext/use.js.map +1 -1
- package/dist/browser/contexts/index.js +165 -4
- package/dist/browser/contexts/index.js.map +1 -1
- package/dist/browser/index.js +492 -3
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/types/index.js +0 -1
- package/dist/browser/types/index.js.map +1 -1
- package/dist/docs.json +109 -109
- package/package.json +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/embed-card/EmbedCardResolver.tsx"],"sourcesContent":["import { useTheme } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { LoadResult } from '@xyo-network/react-shared'\n\nimport { useRefreshPayload, useResolvePayload } from '../../contexts'\nimport { EmbedCardApiErrorRenderer } from './error-handling'\n\nexport const EmbedCardResolverFlexBox: React.FC<WithChildren<FlexBoxProps>> = ({ children, ...props }) => {\n const { payload, notFound, huriError } = useResolvePayload()\n const { refreshPayload } = useRefreshPayload()\n const theme = useTheme()\n\n return (\n <LoadResult searchResult={payload} notFound={!!notFound} error={!!huriError}>\n <EmbedCardApiErrorRenderer xyoError={huriError}>\n <FlexCol\n id=\"embed-outer-wrap\"\n alignItems=\"stretch\"\n justifyContent=\"start\"\n busy={Boolean(!refreshPayload && payload)}\n busyCircularProps={{ style: { alignItems: 'start', paddingTop: theme.spacing(2), zIndex: 2 } }}\n {...props}\n >\n {children}\n </FlexCol>\n </EmbedCardApiErrorRenderer>\n </LoadResult>\n )\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/embed-card/EmbedCardResolver.tsx","../../../../src/contexts/RefreshPayloadContext/Context.tsx","../../../../src/contexts/RefreshPayloadContext/use.tsx","../../../../src/contexts/ResolvePayloadContext/Context.ts","../../../../src/contexts/ResolvePayloadContext/use.tsx","../../../../src/components/embed-card/error-handling/EmbedCardApiErrorRenderer.tsx","../../../../src/components/embed-card/error-handling/EmbedErrorCard.tsx"],"sourcesContent":["import { useTheme } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { LoadResult } from '@xyo-network/react-shared'\n\nimport { useRefreshPayload, useResolvePayload } from '../../contexts'\nimport { EmbedCardApiErrorRenderer } from './error-handling'\n\nexport const EmbedCardResolverFlexBox: React.FC<WithChildren<FlexBoxProps>> = ({ children, ...props }) => {\n const { payload, notFound, huriError } = useResolvePayload()\n const { refreshPayload } = useRefreshPayload()\n const theme = useTheme()\n\n return (\n <LoadResult searchResult={payload} notFound={!!notFound} error={!!huriError}>\n <EmbedCardApiErrorRenderer xyoError={huriError}>\n <FlexCol\n id=\"embed-outer-wrap\"\n alignItems=\"stretch\"\n justifyContent=\"start\"\n busy={Boolean(!refreshPayload && payload)}\n busyCircularProps={{ style: { alignItems: 'start', paddingTop: theme.spacing(2), zIndex: 2 } }}\n {...props}\n >\n {children}\n </FlexCol>\n </EmbedCardApiErrorRenderer>\n </LoadResult>\n )\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { RefreshPayloadState } from './State'\n\nexport const RefreshPayloadContext = createContextEx<RefreshPayloadState>()\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { RefreshPayloadContext } from './Context'\n\nexport const useRefreshPayload = () => useContextEx(RefreshPayloadContext, 'RefreshPayload', true)\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { ResolvePayloadState } from './State'\n\nexport const ResolvePayloadContext = createContextEx<ResolvePayloadState>()\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { ResolvePayloadContext } from './Context'\n\nexport const useResolvePayload = () => useContextEx(ResolvePayloadContext, 'ResolvePayload', true)\n","import { CardProps } from '@mui/material'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { ModuleError } from '@xyo-network/payload-model'\nimport { ErrorAlert, ErrorRender } from '@xyo-network/react-error'\n\nimport { EmbedErrorCard } from './EmbedErrorCard'\n\ninterface EmbedCardApiErrorRendererProps extends CardProps {\n xyoError?: ModuleError\n}\n\nexport const EmbedCardApiErrorRenderer: React.FC<WithChildren<EmbedCardApiErrorRendererProps>> = ({ xyoError, children, ...props }) => {\n return (\n <ErrorRender error={xyoError} noReAuth noErrorDisplay customError={<CustomApiErrorCard xyoError={xyoError} {...props} />}>\n {children}\n </ErrorRender>\n )\n}\n\nconst CustomApiErrorCard: React.FC<EmbedCardApiErrorRendererProps> = ({ xyoError, ...props }) => {\n return (\n <EmbedErrorCard {...props}>\n <ErrorAlert error={xyoError} />\n </EmbedErrorCard>\n )\n}\n","import { Alert, AlertProps, AlertTitle, Card, CardContent, CardProps, Typography } from '@mui/material'\nimport { WithChildren } from '@xylabs/react-shared'\n\ninterface EmbedErrorCardBaseProps {\n alertProps?: AlertProps\n error?: Error\n hideErrorDetails?: boolean\n}\n\ninterface EmbedErrorCardProps extends EmbedErrorCardBaseProps, CardProps {\n alertProps?: AlertProps\n error?: Error\n}\n\nexport const EmbedErrorCard: React.FC<WithChildren<EmbedErrorCardProps>> = (props) => {\n const { alertProps, error, hideErrorDetails = true, children, ...cardProps } = props\n const errorProps = { alertProps, error, hideErrorDetails }\n return (\n <Card {...cardProps}>\n <CardContent>{children ?? <DefaultErrorAlert {...errorProps} />}</CardContent>\n </Card>\n )\n}\n\nconst DefaultErrorAlert: React.FC<EmbedErrorCardBaseProps> = ({ alertProps, hideErrorDetails, error }) => {\n return (\n <Alert severity=\"error\" {...alertProps}>\n <AlertTitle>Whoops! Something went wrong</AlertTitle>\n {!hideErrorDetails && error ? (\n <>\n <Typography variant=\"caption\">Error: </Typography>\n <Typography variant=\"caption\">{error?.message}</Typography>\n </>\n ) : (\n <Typography variant=\"caption\" fontSize=\"small\">\n Error Loading Plugin\n </Typography>\n )}\n </Alert>\n )\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAuB,eAAe;AAEtC,SAAS,kBAAkB;;;ACH3B,SAAS,uBAAuB;AAIzB,IAAM,wBAAwB,gBAAqC;;;ACJ1E,SAAS,oBAAoB;AAItB,IAAM,oBAAoB,MAAM,aAAa,uBAAuB,kBAAkB,IAAI;;;ACJjG,SAAS,mBAAAA,wBAAuB;AAIzB,IAAM,wBAAwBA,iBAAqC;;;ACJ1E,SAAS,gBAAAC,qBAAoB;AAItB,IAAM,oBAAoB,MAAMC,cAAa,uBAAuB,kBAAkB,IAAI;;;ACDjG,SAAS,YAAY,mBAAmB;;;ACHxC,SAAS,OAAmB,YAAY,MAAM,aAAwB,kBAAkB;AAmBxD,SAUxB,UAVwB,KAUxB,YAVwB;AALzB,IAAM,iBAA8D,CAAC,UAAU;AACpF,QAAM,EAAE,YAAY,OAAO,mBAAmB,MAAM,UAAU,GAAG,UAAU,IAAI;AAC/E,QAAM,aAAa,EAAE,YAAY,OAAO,iBAAiB;AACzD,SACE,oBAAC,QAAM,GAAG,WACR,8BAAC,eAAa,sBAAY,oBAAC,qBAAmB,GAAG,YAAY,GAAG,GAClE;AAEJ;AAEA,IAAM,oBAAuD,CAAC,EAAE,YAAY,kBAAkB,MAAM,MAAM;AACxG,SACE,qBAAC,SAAM,UAAS,SAAS,GAAG,YAC1B;AAAA,wBAAC,cAAW,0CAA4B;AAAA,IACvC,CAAC,oBAAoB,QACpB,iCACE;AAAA,0BAAC,cAAW,SAAQ,WAAU,qBAAO;AAAA,MACrC,oBAAC,cAAW,SAAQ,WAAW,iBAAO,SAAQ;AAAA,OAChD,IAEA,oBAAC,cAAW,SAAQ,WAAU,UAAS,SAAQ,kCAE/C;AAAA,KAEJ;AAEJ;;;AD3BuE,gBAAAC,YAAA;AAFhE,IAAM,4BAAoF,CAAC,EAAE,UAAU,UAAU,GAAG,MAAM,MAAM;AACrI,SACE,gBAAAA,KAAC,eAAY,OAAO,UAAU,UAAQ,MAAC,gBAAc,MAAC,aAAa,gBAAAA,KAAC,sBAAmB,UAAqB,GAAG,OAAO,GACnH,UACH;AAEJ;AAEA,IAAM,qBAA+D,CAAC,EAAE,UAAU,GAAG,MAAM,MAAM;AAC/F,SACE,gBAAAA,KAAC,kBAAgB,GAAG,OAClB,0BAAAA,KAAC,cAAW,OAAO,UAAU,GAC/B;AAEJ;;;ALTQ,gBAAAC,YAAA;AARD,IAAM,2BAAiE,CAAC,EAAE,UAAU,GAAG,MAAM,MAAM;AACxG,QAAM,EAAE,SAAS,UAAU,UAAU,IAAI,kBAAkB;AAC3D,QAAM,EAAE,eAAe,IAAI,kBAAkB;AAC7C,QAAM,QAAQ,SAAS;AAEvB,SACE,gBAAAA,KAAC,cAAW,cAAc,SAAS,UAAU,CAAC,CAAC,UAAU,OAAO,CAAC,CAAC,WAChE,0BAAAA,KAAC,6BAA0B,UAAU,WACnC,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,IAAG;AAAA,MACH,YAAW;AAAA,MACX,gBAAe;AAAA,MACf,MAAM,QAAQ,CAAC,kBAAkB,OAAO;AAAA,MACxC,mBAAmB,EAAE,OAAO,EAAE,YAAY,SAAS,YAAY,MAAM,QAAQ,CAAC,GAAG,QAAQ,EAAE,EAAE;AAAA,MAC5F,GAAG;AAAA,MAEH;AAAA;AAAA,EACH,GACF,GACF;AAEJ;","names":["createContextEx","useContextEx","useContextEx","jsx","jsx"]}
|
|
@@ -1,10 +1,428 @@
|
|
|
1
|
-
|
|
1
|
+
// src/components/embed-card/EmbedPluginCard.tsx
|
|
2
2
|
import { useTheme } from "@mui/material";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
|
|
4
|
+
// src/contexts/EmbedPluginContext/Context.tsx
|
|
5
|
+
import { createContextEx } from "@xyo-network/react-shared";
|
|
6
|
+
var EmbedPluginContext = createContextEx();
|
|
7
|
+
|
|
8
|
+
// src/contexts/EmbedPluginContext/Provider.tsx
|
|
9
|
+
import { useEffect, useState } from "react";
|
|
10
|
+
import { jsx } from "react/jsx-runtime";
|
|
11
|
+
var EmbedPluginProvider = ({
|
|
12
|
+
children,
|
|
13
|
+
refreshTitle,
|
|
14
|
+
timestampLabel,
|
|
15
|
+
hideElementsConfig,
|
|
16
|
+
plugins,
|
|
17
|
+
embedPluginConfig
|
|
18
|
+
}) => {
|
|
19
|
+
const [activePlugin, setActivePlugin] = useState(plugins ? plugins[0] : void 0);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
setActivePlugin(plugins ? plugins[0] : void 0);
|
|
22
|
+
}, [plugins]);
|
|
23
|
+
return /* @__PURE__ */ jsx(
|
|
24
|
+
EmbedPluginContext.Provider,
|
|
25
|
+
{
|
|
26
|
+
value: {
|
|
27
|
+
activePlugin,
|
|
28
|
+
embedPluginConfig,
|
|
29
|
+
hideElementsConfig,
|
|
30
|
+
provided: true,
|
|
31
|
+
refreshTitle,
|
|
32
|
+
setActivePlugin,
|
|
33
|
+
timestampLabel
|
|
34
|
+
},
|
|
35
|
+
children
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// src/contexts/EmbedPluginContext/use.tsx
|
|
41
|
+
import { useContextEx } from "@xyo-network/react-shared";
|
|
42
|
+
var useEmbedPluginState = () => useContextEx(EmbedPluginContext, "EmbedPlugin", true);
|
|
43
|
+
|
|
44
|
+
// src/contexts/RefreshPayloadContext/Provider.tsx
|
|
45
|
+
import { useState as useState2 } from "react";
|
|
46
|
+
|
|
47
|
+
// src/contexts/RefreshPayloadContext/Context.tsx
|
|
48
|
+
import { createContextEx as createContextEx2 } from "@xyo-network/react-shared";
|
|
49
|
+
var RefreshPayloadContext = createContextEx2();
|
|
50
|
+
|
|
51
|
+
// src/contexts/RefreshPayloadContext/Provider.tsx
|
|
52
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
53
|
+
var RefreshPayloadProvider = ({ children, onRefresh, refreshPayload }) => {
|
|
54
|
+
const [localRefreshPayload, setRefreshPayload] = useState2(refreshPayload);
|
|
55
|
+
return /* @__PURE__ */ jsx2(RefreshPayloadContext.Provider, { value: { onRefresh, provided: true, refreshPayload: localRefreshPayload, setRefreshPayload }, children });
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
// src/contexts/RefreshPayloadContext/use.tsx
|
|
59
|
+
import { useContextEx as useContextEx2 } from "@xyo-network/react-shared";
|
|
60
|
+
var useRefreshPayload = () => useContextEx2(RefreshPayloadContext, "RefreshPayload", true);
|
|
61
|
+
|
|
62
|
+
// src/contexts/ResolvePayloadContext/Context.ts
|
|
63
|
+
import { createContextEx as createContextEx3 } from "@xyo-network/react-shared";
|
|
64
|
+
var ResolvePayloadContext = createContextEx3();
|
|
65
|
+
|
|
66
|
+
// src/contexts/ResolvePayloadContext/Provider.tsx
|
|
67
|
+
import { delay } from "@xylabs/delay";
|
|
68
|
+
import { useAsyncEffect } from "@xylabs/react-async-effect";
|
|
69
|
+
import { Huri } from "@xyo-network/huri";
|
|
70
|
+
import { ModuleErrorSchema } from "@xyo-network/payload-model";
|
|
71
|
+
import { useEffect as useEffect2, useState as useState3 } from "react";
|
|
72
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
73
|
+
var ResolvePayloadProvider = ({ children, huriPayload }) => {
|
|
74
|
+
const [payload, setPayload] = useState3();
|
|
75
|
+
const [huri, setHuri] = useState3();
|
|
76
|
+
const { refreshPayload, setRefreshPayload, onRefresh } = useRefreshPayload();
|
|
77
|
+
useEffect2(() => {
|
|
78
|
+
typeof huriPayload === "string" ? setHuri(huriPayload) : void 0;
|
|
79
|
+
if (typeof huriPayload === "object") {
|
|
80
|
+
setPayload(huriPayload);
|
|
81
|
+
setRefreshPayload?.(true);
|
|
82
|
+
}
|
|
83
|
+
}, [huriPayload, setRefreshPayload]);
|
|
84
|
+
const [notFound, setNotFound] = useState3();
|
|
85
|
+
const [huriError, setHuriError] = useState3();
|
|
86
|
+
useAsyncEffect(
|
|
87
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
88
|
+
async (mounted) => {
|
|
89
|
+
if (huri && !refreshPayload) {
|
|
90
|
+
try {
|
|
91
|
+
const huriInstance = new Huri(huri);
|
|
92
|
+
const result = await huriInstance.fetch();
|
|
93
|
+
await delay(500);
|
|
94
|
+
if (mounted()) {
|
|
95
|
+
setNotFound(result === null);
|
|
96
|
+
setPayload(result);
|
|
97
|
+
setRefreshPayload?.(true);
|
|
98
|
+
}
|
|
99
|
+
} catch (e) {
|
|
100
|
+
const error = e;
|
|
101
|
+
setHuriError({ message: error.message, schema: ModuleErrorSchema, sources: [] });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
[huri, payload, refreshPayload, setRefreshPayload]
|
|
106
|
+
);
|
|
107
|
+
const refreshHuri = () => {
|
|
108
|
+
onRefresh?.();
|
|
109
|
+
if (huri) {
|
|
110
|
+
setRefreshPayload?.(false);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
return /* @__PURE__ */ jsx3(ResolvePayloadContext.Provider, { value: { huri, huriError, notFound, payload, provided: true, refreshHuri, setPayload }, children });
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
// src/contexts/ResolvePayloadContext/use.tsx
|
|
117
|
+
import { useContextEx as useContextEx3 } from "@xyo-network/react-shared";
|
|
118
|
+
var useResolvePayload = () => useContextEx3(ResolvePayloadContext, "ResolvePayload", true);
|
|
119
|
+
|
|
120
|
+
// src/contexts/ValidatePayloadContext/Provider.tsx
|
|
121
|
+
import { Chip } from "@mui/material";
|
|
122
|
+
import { useAsyncEffect as useAsyncEffect2 } from "@xylabs/react-async-effect";
|
|
123
|
+
import { SchemaCache } from "@xyo-network/schema-cache";
|
|
124
|
+
import { useState as useState4 } from "react";
|
|
125
|
+
|
|
126
|
+
// src/contexts/ValidatePayloadContext/Context.ts
|
|
127
|
+
import { createContextEx as createContextEx4 } from "@xyo-network/react-shared";
|
|
128
|
+
var ValidatePayloadContext = createContextEx4();
|
|
129
|
+
|
|
130
|
+
// src/contexts/ValidatePayloadContext/Provider.tsx
|
|
131
|
+
import { Fragment, jsx as jsx4 } from "react/jsx-runtime";
|
|
132
|
+
var ValidatePayloadProvider = ({ children, enabled = false }) => {
|
|
133
|
+
const { payload } = useResolvePayload();
|
|
134
|
+
const [initialized, setInitialized] = useState4(false);
|
|
135
|
+
const [valid, setValid] = useState4();
|
|
136
|
+
useAsyncEffect2(
|
|
137
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
138
|
+
async () => {
|
|
139
|
+
if (payload && enabled) {
|
|
140
|
+
await SchemaCache.instance.get(payload.schema);
|
|
141
|
+
const possibleKnownSchema = payload.schema;
|
|
142
|
+
if (SchemaCache.instance.validators[possibleKnownSchema]) {
|
|
143
|
+
const validator = SchemaCache.instance.validators[possibleKnownSchema];
|
|
144
|
+
setValid(validator?.(payload));
|
|
145
|
+
}
|
|
146
|
+
setInitialized(true);
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
[payload, enabled]
|
|
150
|
+
);
|
|
151
|
+
return /* @__PURE__ */ jsx4(ValidatePayloadContext.Provider, { value: { enabled, provided: true, schema: payload?.schema, validPayload: valid }, children: enabled ? /* @__PURE__ */ jsx4(Fragment, { children: initialized ? children : /* @__PURE__ */ jsx4(Chip, { label: "Validating Payload..." }) }) : children });
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
// src/contexts/ValidatePayloadContext/use.tsx
|
|
155
|
+
import { useContextEx as useContextEx4 } from "@xyo-network/react-shared";
|
|
156
|
+
var useValidatePayload = () => useContextEx4(ValidatePayloadContext, "ValidateSchema", true);
|
|
157
|
+
|
|
158
|
+
// src/components/EmbedPlugin.tsx
|
|
159
|
+
import { ErrorBoundary, ListModeProvider } from "@xyo-network/react-shared";
|
|
160
|
+
|
|
161
|
+
// src/components/EmbedResolver.tsx
|
|
162
|
+
import { LoadResult } from "@xyo-network/react-shared";
|
|
163
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
164
|
+
var EmbedResolver = ({ children }) => {
|
|
165
|
+
const { payload, notFound, huriError } = useResolvePayload();
|
|
166
|
+
return /* @__PURE__ */ jsx5(LoadResult, { searchResult: payload, notFound: !!notFound, error: !!huriError, children });
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
// src/components/validation-alerts/ValidatePayload.tsx
|
|
170
|
+
import { Alert } from "@mui/material";
|
|
171
|
+
import { Fragment as Fragment2, jsx as jsx6, jsxs } from "react/jsx-runtime";
|
|
172
|
+
var ValidatePayloadAlert = ({ children, ...props }) => {
|
|
173
|
+
const { validPayload, enabled, schema } = useValidatePayload();
|
|
174
|
+
if (enabled && validPayload === false) {
|
|
175
|
+
return /* @__PURE__ */ jsxs(Alert, { severity: "error", title: "Invalid Payload!", ...props, children: [
|
|
176
|
+
"Payload schema claimed to be ",
|
|
177
|
+
schema,
|
|
178
|
+
" but failed to validate."
|
|
179
|
+
] });
|
|
180
|
+
}
|
|
181
|
+
return /* @__PURE__ */ jsx6(Fragment2, { children });
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
// src/components/validation-alerts/ValidatePlugins.tsx
|
|
185
|
+
import { Alert as Alert2, AlertTitle } from "@mui/material";
|
|
186
|
+
import { Fragment as Fragment3, jsx as jsx7, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
187
|
+
var ValidatePluginsAlert = ({ children, ...props }) => {
|
|
188
|
+
const { payload } = useResolvePayload();
|
|
189
|
+
const { plugins } = useEmbedPluginState();
|
|
190
|
+
if (payload && plugins?.length === 0) {
|
|
191
|
+
return /* @__PURE__ */ jsxs2(Alert2, { severity: "warning", ...props, children: [
|
|
192
|
+
/* @__PURE__ */ jsx7(AlertTitle, { children: "Missing plugins!" }),
|
|
193
|
+
"Payload found but no plugins were present."
|
|
194
|
+
] });
|
|
195
|
+
}
|
|
196
|
+
return /* @__PURE__ */ jsx7(Fragment3, { children });
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
// src/components/EmbedPlugin.tsx
|
|
200
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
201
|
+
var EmbedPluginInner = ({
|
|
202
|
+
validateSchema,
|
|
203
|
+
plugins = [],
|
|
204
|
+
huriPayload,
|
|
205
|
+
refreshTitle = "",
|
|
206
|
+
timestampLabel = "Data From",
|
|
207
|
+
hideElementsConfig,
|
|
208
|
+
embedPluginConfig,
|
|
209
|
+
onRefresh,
|
|
210
|
+
children
|
|
211
|
+
}) => {
|
|
212
|
+
return /* @__PURE__ */ jsx8(ErrorBoundary, { children: /* @__PURE__ */ jsx8(
|
|
213
|
+
EmbedPluginProvider,
|
|
214
|
+
{
|
|
215
|
+
refreshTitle,
|
|
216
|
+
timestampLabel,
|
|
217
|
+
hideElementsConfig,
|
|
218
|
+
plugins,
|
|
219
|
+
embedPluginConfig,
|
|
220
|
+
children: /* @__PURE__ */ jsx8(WithResolvers, { onRefresh, huriPayload, children: /* @__PURE__ */ jsx8(WithValidators, { validateSchema, children: /* @__PURE__ */ jsx8(ListModeProvider, { defaultListMode: embedPluginConfig?.listMode, children }) }) })
|
|
221
|
+
}
|
|
222
|
+
) });
|
|
223
|
+
};
|
|
224
|
+
var WithResolvers = ({ children, onRefresh, huriPayload }) => {
|
|
225
|
+
return /* @__PURE__ */ jsx8(RefreshPayloadProvider, { onRefresh, children: /* @__PURE__ */ jsx8(ResolvePayloadProvider, { huriPayload, children: /* @__PURE__ */ jsx8(EmbedResolver, { children }) }) });
|
|
226
|
+
};
|
|
227
|
+
var WithValidators = ({ children, validateSchema }) => {
|
|
228
|
+
return /* @__PURE__ */ jsx8(ValidatePayloadProvider, { enabled: validateSchema, children: /* @__PURE__ */ jsx8(ValidatePluginsAlert, { children: /* @__PURE__ */ jsx8(ValidatePayloadAlert, { children }) }) });
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
// src/components/embed-card/card/BusyCard.tsx
|
|
232
|
+
import { Card } from "@mui/material";
|
|
233
|
+
import { useBusyTiming } from "@xylabs/react-flexbox";
|
|
234
|
+
import {
|
|
235
|
+
BusyCircularProgress,
|
|
236
|
+
BusyLinearProgress
|
|
237
|
+
} from "@xylabs/react-shared";
|
|
238
|
+
import { jsx as jsx9, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
239
|
+
var BusyCard = ({
|
|
240
|
+
busy,
|
|
241
|
+
busyMinimum = 500,
|
|
242
|
+
busyVariant = "circular",
|
|
243
|
+
busyVariantProps,
|
|
244
|
+
children,
|
|
245
|
+
...props
|
|
246
|
+
}) => {
|
|
247
|
+
const internalBusy = useBusyTiming(busy, busyMinimum);
|
|
248
|
+
return /* @__PURE__ */ jsxs3(Card, { ...props, children: [
|
|
249
|
+
children,
|
|
250
|
+
busyVariant === "circular" && internalBusy ? /* @__PURE__ */ jsx9(BusyCircularProgress, { ...busyVariantProps }) : null,
|
|
251
|
+
busyVariant === "linear" && internalBusy ? /* @__PURE__ */ jsx9(BusyLinearProgress, { ...busyVariantProps }) : null
|
|
252
|
+
] });
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
// src/components/embed-card/card/EmbedCardHeader.tsx
|
|
256
|
+
import { Refresh as RefreshIcon } from "@mui/icons-material";
|
|
257
|
+
import { Avatar, CardHeader, Chip as Chip2 } from "@mui/material";
|
|
258
|
+
import { FlexRow } from "@xylabs/react-flexbox";
|
|
259
|
+
|
|
260
|
+
// src/components/embed-card/menu/EmbedMenu.tsx
|
|
261
|
+
import { MoreVert as MoreVertIcon } from "@mui/icons-material";
|
|
262
|
+
import { IconButton, Menu } from "@mui/material";
|
|
263
|
+
import { useState as useState5 } from "react";
|
|
264
|
+
|
|
265
|
+
// src/components/embed-card/menu/JsonMenuItem.tsx
|
|
266
|
+
import { OpenInNew as OpenInNewIcon } from "@mui/icons-material";
|
|
267
|
+
import { ListItemIcon, ListItemText, MenuItem } from "@mui/material";
|
|
268
|
+
import { Fragment as Fragment4, jsx as jsx10, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
269
|
+
var JsonMenuItem = (props) => {
|
|
270
|
+
const { huri } = useResolvePayload();
|
|
271
|
+
return /* @__PURE__ */ jsx10(Fragment4, { children: huri ? /* @__PURE__ */ jsxs4(MenuItem, { title: "Source Payload JSON", onClick: () => window.open(huri, "_blank"), ...props, children: [
|
|
272
|
+
/* @__PURE__ */ jsx10(ListItemText, { sx: { mr: 1 }, children: "JSON" }),
|
|
273
|
+
/* @__PURE__ */ jsx10(ListItemIcon, { sx: { justifyContent: "end" }, children: /* @__PURE__ */ jsx10(OpenInNewIcon, { fontSize: "small" }) })
|
|
274
|
+
] }) : null });
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
// src/components/embed-card/menu/EmbedMenu.tsx
|
|
278
|
+
import { Fragment as Fragment5, jsx as jsx11, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
279
|
+
var EmbedMenu = (props) => {
|
|
280
|
+
const [anchorEl, setAnchorEl] = useState5(null);
|
|
281
|
+
const open = Boolean(anchorEl);
|
|
282
|
+
const handleClick = (event) => {
|
|
283
|
+
setAnchorEl(event.currentTarget);
|
|
284
|
+
};
|
|
285
|
+
const handleClose = () => {
|
|
286
|
+
setAnchorEl(null);
|
|
287
|
+
};
|
|
288
|
+
return /* @__PURE__ */ jsxs5(Fragment5, { children: [
|
|
289
|
+
/* @__PURE__ */ jsx11(IconButton, { onClick: handleClick, ...props, children: /* @__PURE__ */ jsx11(MoreVertIcon, {}) }),
|
|
290
|
+
/* @__PURE__ */ jsx11(Menu, { anchorEl, open, onClose: handleClose, PaperProps: { variant: "elevation" }, MenuListProps: { dense: true }, children: /* @__PURE__ */ jsx11(JsonMenuItem, {}) })
|
|
291
|
+
] });
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
// src/components/embed-card/card/EmbedCardHeader.tsx
|
|
295
|
+
import { Fragment as Fragment6, jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
296
|
+
var EmbedCardHeader = () => {
|
|
297
|
+
const { refreshHuri, huri } = useResolvePayload();
|
|
298
|
+
const { activePlugin, timestampLabel, hideElementsConfig } = useEmbedPluginState();
|
|
299
|
+
const { hideAvatar, hideTitle, hideRefreshButton, hideTimestamp, hideCardActions } = hideElementsConfig ?? {};
|
|
300
|
+
const timestamp = Date.now();
|
|
301
|
+
return /* @__PURE__ */ jsx12(
|
|
302
|
+
CardHeader,
|
|
303
|
+
{
|
|
304
|
+
sx: { flexWrap: "wrap", rowGap: 1 },
|
|
305
|
+
avatar: hideAvatar ? /* @__PURE__ */ jsx12(Fragment6, {}) : /* @__PURE__ */ jsx12(Avatar, { sx: { bgcolor: (theme) => theme.palette.primary.main }, "aria-label": activePlugin?.name, children: activePlugin?.name?.charAt(0) }),
|
|
306
|
+
action: /* @__PURE__ */ jsxs6(FlexRow, { flexWrap: "wrap", columnGap: 0.5, children: [
|
|
307
|
+
timestamp ? hideTimestamp && hideRefreshButton ? "" : /* @__PURE__ */ jsx12(
|
|
308
|
+
Chip2,
|
|
309
|
+
{
|
|
310
|
+
avatar: hideRefreshButton ? /* @__PURE__ */ jsx12(Fragment6, {}) : /* @__PURE__ */ jsx12(RefreshIcon, {}),
|
|
311
|
+
clickable: hideRefreshButton ? false : true,
|
|
312
|
+
onClick: refreshHuri,
|
|
313
|
+
label: hideTimestamp ? "" : `${timestampLabel} ${new Date(timestamp).toLocaleString()}`
|
|
314
|
+
}
|
|
315
|
+
) : null,
|
|
316
|
+
hideCardActions || huri === void 0 ? null : /* @__PURE__ */ jsx12(EmbedMenu, {})
|
|
317
|
+
] }),
|
|
318
|
+
title: hideTitle ? "" : activePlugin?.name
|
|
319
|
+
}
|
|
320
|
+
);
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
// src/components/embed-card/card/EmbedPluginCard.tsx
|
|
324
|
+
import { CardContent } from "@mui/material";
|
|
325
|
+
import { FlexGrowRow } from "@xylabs/react-flexbox";
|
|
326
|
+
import { useListMode as useListMode2 } from "@xyo-network/react-shared";
|
|
327
|
+
|
|
328
|
+
// src/components/controls/EmbedFormControl.tsx
|
|
329
|
+
import { FormControl, InputLabel } from "@mui/material";
|
|
330
|
+
import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
331
|
+
var EmbedFormControl = ({ formId, formLabel, children, ...props }) => {
|
|
332
|
+
return /* @__PURE__ */ jsxs7(FormControl, { ...props, children: [
|
|
333
|
+
/* @__PURE__ */ jsx13(InputLabel, { id: formId, children: formLabel }),
|
|
334
|
+
children
|
|
335
|
+
] });
|
|
336
|
+
};
|
|
337
|
+
|
|
338
|
+
// src/components/controls/ListModeSelect.tsx
|
|
339
|
+
import { MenuItem as MenuItem2, Select } from "@mui/material";
|
|
340
|
+
import { useListMode } from "@xyo-network/react-shared";
|
|
341
|
+
import { jsx as jsx14, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
342
|
+
var listModeSelectId = "listmode-select-id";
|
|
343
|
+
var listModeSelectLabel = "List Mode";
|
|
344
|
+
var ListModeSelect = (props) => {
|
|
345
|
+
const { listMode, setListMode } = useListMode();
|
|
346
|
+
return /* @__PURE__ */ jsxs8(
|
|
347
|
+
Select,
|
|
348
|
+
{
|
|
349
|
+
value: listMode ?? "default",
|
|
350
|
+
onChange: (event) => {
|
|
351
|
+
setListMode?.(event.target.value);
|
|
352
|
+
},
|
|
353
|
+
...props,
|
|
354
|
+
children: [
|
|
355
|
+
/* @__PURE__ */ jsx14(MenuItem2, { value: "default", children: "Default" }, "default"),
|
|
356
|
+
/* @__PURE__ */ jsx14(MenuItem2, { value: "table", children: "Table" }, "table"),
|
|
357
|
+
/* @__PURE__ */ jsx14(MenuItem2, { value: "grid", children: "Grid" }, "grid")
|
|
358
|
+
]
|
|
359
|
+
}
|
|
360
|
+
);
|
|
361
|
+
};
|
|
362
|
+
var ListModeSelectFormControl = (props) => {
|
|
363
|
+
return /* @__PURE__ */ jsx14(EmbedFormControl, { formId: listModeSelectId, formLabel: listModeSelectLabel, children: /* @__PURE__ */ jsx14(ListModeSelect, { size: "small", label: listModeSelectLabel, labelId: listModeSelectId, ...props }) });
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
// src/components/controls/RenderSelect.tsx
|
|
367
|
+
import { MenuItem as MenuItem3, Select as Select2 } from "@mui/material";
|
|
368
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
369
|
+
var renderSelectId = "render-select-id";
|
|
370
|
+
var renderSelectLabel = "Renderer";
|
|
371
|
+
var EmbedRenderSelect = (props) => {
|
|
372
|
+
const { activePlugin, setActivePlugin, plugins } = useEmbedPluginState();
|
|
373
|
+
return /* @__PURE__ */ jsx15(EmbedFormControl, { formId: renderSelectId, formLabel: renderSelectLabel, children: /* @__PURE__ */ jsx15(Select2, { size: "small", value: activePlugin?.name, ...props, children: plugins?.map((plugin) => /* @__PURE__ */ jsx15(MenuItem3, { value: plugin.name, onClick: () => setActivePlugin?.(plugin), children: plugin.name }, plugin.name)) }) });
|
|
374
|
+
};
|
|
375
|
+
|
|
376
|
+
// src/components/embed-card/card/EmbedPluginCard.tsx
|
|
377
|
+
import { jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
378
|
+
var EmbedPluginCard = ({ ...props }) => {
|
|
379
|
+
const { payload } = useResolvePayload();
|
|
380
|
+
const { activePlugin: ActivePlugin, plugins, hideElementsConfig } = useEmbedPluginState();
|
|
381
|
+
const { listMode } = useListMode2();
|
|
382
|
+
const supportsListMode = ActivePlugin?.components?.box?.listModes?.length ?? 0 > 1;
|
|
383
|
+
return /* @__PURE__ */ jsxs9(BusyCard, { ...props, children: [
|
|
384
|
+
hideElementsConfig?.hideCardHeader ? null : /* @__PURE__ */ jsx16(EmbedCardHeader, {}),
|
|
385
|
+
plugins && plugins.length || supportsListMode ? /* @__PURE__ */ jsxs9(FlexGrowRow, { columnGap: 2, rowGap: 2, flexWrap: "wrap", pb: 1, children: [
|
|
386
|
+
plugins && plugins.length > 1 ? /* @__PURE__ */ jsx16(EmbedRenderSelect, {}) : null,
|
|
387
|
+
supportsListMode ? /* @__PURE__ */ jsx16(ListModeSelectFormControl, {}) : null
|
|
388
|
+
] }) : null,
|
|
389
|
+
/* @__PURE__ */ jsx16(CardContent, { sx: { height: "100%" }, children: ActivePlugin ? /* @__PURE__ */ jsx16(ActivePlugin.components.box.detailsBox, { payload, ...supportsListMode && { listMode } }) : null })
|
|
390
|
+
] });
|
|
391
|
+
};
|
|
392
|
+
|
|
393
|
+
// src/components/embed-card/error-handling/EmbedCardApiErrorRenderer.tsx
|
|
394
|
+
import { ErrorAlert, ErrorRender } from "@xyo-network/react-error";
|
|
395
|
+
|
|
396
|
+
// src/components/embed-card/error-handling/EmbedErrorCard.tsx
|
|
397
|
+
import { Alert as Alert3, AlertTitle as AlertTitle2, Card as Card2, CardContent as CardContent2, Typography } from "@mui/material";
|
|
398
|
+
import { Fragment as Fragment7, jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
399
|
+
var EmbedErrorCard = (props) => {
|
|
400
|
+
const { alertProps, error, hideErrorDetails = true, children, ...cardProps } = props;
|
|
401
|
+
const errorProps = { alertProps, error, hideErrorDetails };
|
|
402
|
+
return /* @__PURE__ */ jsx17(Card2, { ...cardProps, children: /* @__PURE__ */ jsx17(CardContent2, { children: children ?? /* @__PURE__ */ jsx17(DefaultErrorAlert, { ...errorProps }) }) });
|
|
403
|
+
};
|
|
404
|
+
var DefaultErrorAlert = ({ alertProps, hideErrorDetails, error }) => {
|
|
405
|
+
return /* @__PURE__ */ jsxs10(Alert3, { severity: "error", ...alertProps, children: [
|
|
406
|
+
/* @__PURE__ */ jsx17(AlertTitle2, { children: "Whoops! Something went wrong" }),
|
|
407
|
+
!hideErrorDetails && error ? /* @__PURE__ */ jsxs10(Fragment7, { children: [
|
|
408
|
+
/* @__PURE__ */ jsx17(Typography, { variant: "caption", children: "Error: " }),
|
|
409
|
+
/* @__PURE__ */ jsx17(Typography, { variant: "caption", children: error?.message })
|
|
410
|
+
] }) : /* @__PURE__ */ jsx17(Typography, { variant: "caption", fontSize: "small", children: "Error Loading Plugin" })
|
|
411
|
+
] });
|
|
412
|
+
};
|
|
413
|
+
|
|
414
|
+
// src/components/embed-card/error-handling/EmbedCardApiErrorRenderer.tsx
|
|
415
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
416
|
+
var EmbedCardApiErrorRenderer = ({ xyoError, children, ...props }) => {
|
|
417
|
+
return /* @__PURE__ */ jsx18(ErrorRender, { error: xyoError, noReAuth: true, noErrorDisplay: true, customError: /* @__PURE__ */ jsx18(CustomApiErrorCard, { xyoError, ...props }), children });
|
|
418
|
+
};
|
|
419
|
+
var CustomApiErrorCard = ({ xyoError, ...props }) => {
|
|
420
|
+
return /* @__PURE__ */ jsx18(EmbedErrorCard, { ...props, children: /* @__PURE__ */ jsx18(ErrorAlert, { error: xyoError }) });
|
|
421
|
+
};
|
|
422
|
+
|
|
423
|
+
// src/components/embed-card/EmbedPluginCard.tsx
|
|
424
|
+
import { jsx as jsx19, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
425
|
+
var ApiEmbedPluginCard = ({ children, ...props }) => {
|
|
8
426
|
const {
|
|
9
427
|
validateSchema,
|
|
10
428
|
plugins = [],
|
|
@@ -16,7 +434,7 @@ const ApiEmbedPluginCard = ({ children, ...props }) => {
|
|
|
16
434
|
onRefresh,
|
|
17
435
|
...busyCardProps
|
|
18
436
|
} = props;
|
|
19
|
-
return /* @__PURE__ */
|
|
437
|
+
return /* @__PURE__ */ jsxs11(
|
|
20
438
|
EmbedPluginInner,
|
|
21
439
|
{
|
|
22
440
|
...{
|
|
@@ -30,17 +448,17 @@ const ApiEmbedPluginCard = ({ children, ...props }) => {
|
|
|
30
448
|
validateSchema
|
|
31
449
|
},
|
|
32
450
|
children: [
|
|
33
|
-
/* @__PURE__ */
|
|
451
|
+
/* @__PURE__ */ jsx19(EmbedPluginCardInner, { ...busyCardProps }),
|
|
34
452
|
children
|
|
35
453
|
]
|
|
36
454
|
}
|
|
37
455
|
);
|
|
38
456
|
};
|
|
39
|
-
|
|
457
|
+
var EmbedPluginCardInner = (props) => {
|
|
40
458
|
const { payload, huriError } = useResolvePayload();
|
|
41
459
|
const { refreshPayload } = useRefreshPayload();
|
|
42
460
|
const theme = useTheme();
|
|
43
|
-
return /* @__PURE__ */
|
|
461
|
+
return /* @__PURE__ */ jsx19(EmbedCardApiErrorRenderer, { xyoError: huriError, children: /* @__PURE__ */ jsx19(
|
|
44
462
|
EmbedPluginCard,
|
|
45
463
|
{
|
|
46
464
|
elevation: 3,
|
|
@@ -52,7 +470,7 @@ const EmbedPluginCardInner = (props) => {
|
|
|
52
470
|
}
|
|
53
471
|
) });
|
|
54
472
|
};
|
|
55
|
-
|
|
473
|
+
var EmbedPlugin = EmbedPluginCard;
|
|
56
474
|
export {
|
|
57
475
|
ApiEmbedPluginCard,
|
|
58
476
|
EmbedPlugin,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/embed-card/EmbedPluginCard.tsx"],"sourcesContent":["import { useTheme } from '@mui/material'\nimport { WithChildren } from '@xylabs/react-shared'\n\nimport { useRefreshPayload, useResolvePayload } from '../../contexts'\nimport { EmbedPluginProps } from '../../types'\nimport { EmbedPluginInner } from '../EmbedPlugin'\nimport { BusyCardProps, EmbedPluginCard } from './card'\nimport { EmbedCardApiErrorRenderer } from './error-handling'\n\nexport interface EmbedPluginCardProps extends WithChildren, EmbedPluginProps, BusyCardProps {}\n\nexport const ApiEmbedPluginCard: React.FC<EmbedPluginCardProps> = ({ children, ...props }) => {\n const {\n validateSchema,\n plugins = [],\n huriPayload,\n refreshTitle = '',\n timestampLabel = 'Data From',\n hideElementsConfig,\n embedPluginConfig,\n onRefresh,\n ...busyCardProps\n } = props\n\n return (\n <EmbedPluginInner\n {...{\n embedPluginConfig,\n hideElementsConfig,\n huriPayload,\n onRefresh,\n plugins,\n refreshTitle,\n timestampLabel,\n validateSchema,\n }}\n >\n <EmbedPluginCardInner {...busyCardProps} />\n {children}\n </EmbedPluginInner>\n )\n}\n\nexport const EmbedPluginCardInner: React.FC<BusyCardProps> = (props) => {\n const { payload, huriError } = useResolvePayload()\n const { refreshPayload } = useRefreshPayload()\n const theme = useTheme()\n\n return (\n <EmbedCardApiErrorRenderer xyoError={huriError}>\n <EmbedPluginCard\n elevation={3}\n variant=\"elevation\"\n busy={Boolean(!refreshPayload && payload)}\n busyVariantProps={{ style: { alignItems: 'start', paddingTop: theme.spacing(2), zIndex: 2 } }}\n sx={{ position: 'relative' }}\n {...props}\n />\n </EmbedCardApiErrorRenderer>\n )\n}\n\n/** @deprecated - use EmbedPluginCard and use CardProps instead of FlexBoxProps */\nexport const EmbedPlugin = EmbedPluginCard\n"],"mappings":"AAyBI,SAYE,KAZF;AAzBJ,SAAS,gBAAgB;AAGzB,SAAS,mBAAmB,yBAAyB;AAErD,SAAS,wBAAwB;AACjC,SAAwB,uBAAuB;AAC/C,SAAS,iCAAiC;AAInC,MAAM,qBAAqD,CAAC,EAAE,UAAU,GAAG,MAAM,MAAM;AAC5F,QAAM;AAAA,IACJ;AAAA,IACA,UAAU,CAAC;AAAA,IACX;AAAA,IACA,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA,4BAAC,wBAAsB,GAAG,eAAe;AAAA,QACxC;AAAA;AAAA;AAAA,EACH;AAEJ;AAEO,MAAM,uBAAgD,CAAC,UAAU;AACtE,QAAM,EAAE,SAAS,UAAU,IAAI,kBAAkB;AACjD,QAAM,EAAE,eAAe,IAAI,kBAAkB;AAC7C,QAAM,QAAQ,SAAS;AAEvB,SACE,oBAAC,6BAA0B,UAAU,WACnC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,SAAQ;AAAA,MACR,MAAM,QAAQ,CAAC,kBAAkB,OAAO;AAAA,MACxC,kBAAkB,EAAE,OAAO,EAAE,YAAY,SAAS,YAAY,MAAM,QAAQ,CAAC,GAAG,QAAQ,EAAE,EAAE;AAAA,MAC5F,IAAI,EAAE,UAAU,WAAW;AAAA,MAC1B,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAGO,MAAM,cAAc;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/embed-card/EmbedPluginCard.tsx","../../../../src/contexts/EmbedPluginContext/Context.tsx","../../../../src/contexts/EmbedPluginContext/Provider.tsx","../../../../src/contexts/EmbedPluginContext/use.tsx","../../../../src/contexts/RefreshPayloadContext/Provider.tsx","../../../../src/contexts/RefreshPayloadContext/Context.tsx","../../../../src/contexts/RefreshPayloadContext/use.tsx","../../../../src/contexts/ResolvePayloadContext/Context.ts","../../../../src/contexts/ResolvePayloadContext/Provider.tsx","../../../../src/contexts/ResolvePayloadContext/use.tsx","../../../../src/contexts/ValidatePayloadContext/Provider.tsx","../../../../src/contexts/ValidatePayloadContext/Context.ts","../../../../src/contexts/ValidatePayloadContext/use.tsx","../../../../src/components/EmbedPlugin.tsx","../../../../src/components/EmbedResolver.tsx","../../../../src/components/validation-alerts/ValidatePayload.tsx","../../../../src/components/validation-alerts/ValidatePlugins.tsx","../../../../src/components/embed-card/card/BusyCard.tsx","../../../../src/components/embed-card/card/EmbedCardHeader.tsx","../../../../src/components/embed-card/menu/EmbedMenu.tsx","../../../../src/components/embed-card/menu/JsonMenuItem.tsx","../../../../src/components/embed-card/card/EmbedPluginCard.tsx","../../../../src/components/controls/EmbedFormControl.tsx","../../../../src/components/controls/ListModeSelect.tsx","../../../../src/components/controls/RenderSelect.tsx","../../../../src/components/embed-card/error-handling/EmbedCardApiErrorRenderer.tsx","../../../../src/components/embed-card/error-handling/EmbedErrorCard.tsx"],"sourcesContent":["import { useTheme } from '@mui/material'\nimport { WithChildren } from '@xylabs/react-shared'\n\nimport { useRefreshPayload, useResolvePayload } from '../../contexts'\nimport { EmbedPluginProps } from '../../types'\nimport { EmbedPluginInner } from '../EmbedPlugin'\nimport { BusyCardProps, EmbedPluginCard } from './card'\nimport { EmbedCardApiErrorRenderer } from './error-handling'\n\nexport interface EmbedPluginCardProps extends WithChildren, EmbedPluginProps, BusyCardProps {}\n\nexport const ApiEmbedPluginCard: React.FC<EmbedPluginCardProps> = ({ children, ...props }) => {\n const {\n validateSchema,\n plugins = [],\n huriPayload,\n refreshTitle = '',\n timestampLabel = 'Data From',\n hideElementsConfig,\n embedPluginConfig,\n onRefresh,\n ...busyCardProps\n } = props\n\n return (\n <EmbedPluginInner\n {...{\n embedPluginConfig,\n hideElementsConfig,\n huriPayload,\n onRefresh,\n plugins,\n refreshTitle,\n timestampLabel,\n validateSchema,\n }}\n >\n <EmbedPluginCardInner {...busyCardProps} />\n {children}\n </EmbedPluginInner>\n )\n}\n\nexport const EmbedPluginCardInner: React.FC<BusyCardProps> = (props) => {\n const { payload, huriError } = useResolvePayload()\n const { refreshPayload } = useRefreshPayload()\n const theme = useTheme()\n\n return (\n <EmbedCardApiErrorRenderer xyoError={huriError}>\n <EmbedPluginCard\n elevation={3}\n variant=\"elevation\"\n busy={Boolean(!refreshPayload && payload)}\n busyVariantProps={{ style: { alignItems: 'start', paddingTop: theme.spacing(2), zIndex: 2 } }}\n sx={{ position: 'relative' }}\n {...props}\n />\n </EmbedCardApiErrorRenderer>\n )\n}\n\n/** @deprecated - use EmbedPluginCard and use CardProps instead of FlexBoxProps */\nexport const EmbedPlugin = EmbedPluginCard\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { EmbedPluginState } from './State'\n\nexport const EmbedPluginContext = createContextEx<EmbedPluginState>()\n","import { WithChildren } from '@xylabs/react-shared'\nimport { PayloadRenderPlugin } from '@xyo-network/react-payload-plugin'\nimport { useEffect, useState } from 'react'\n\nimport { EmbedPluginContext } from './Context'\nimport { EmbedPluginBase } from './State'\n\nexport type EmbedPluginProviderProps = EmbedPluginBase\n\n/** Expose passed embed plugin props via context */\nexport const EmbedPluginProvider: React.FC<WithChildren<EmbedPluginProviderProps>> = ({\n children,\n refreshTitle,\n timestampLabel,\n hideElementsConfig,\n plugins,\n embedPluginConfig,\n}) => {\n const [activePlugin, setActivePlugin] = useState<PayloadRenderPlugin | undefined>(plugins ? plugins[0] : undefined)\n\n useEffect(() => {\n setActivePlugin(plugins ? plugins[0] : undefined)\n }, [plugins])\n\n return (\n <EmbedPluginContext.Provider\n value={{\n activePlugin,\n embedPluginConfig,\n hideElementsConfig,\n provided: true,\n refreshTitle,\n setActivePlugin,\n timestampLabel,\n }}\n >\n {children}\n </EmbedPluginContext.Provider>\n )\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { EmbedPluginContext } from './Context'\n\nexport const useEmbedPluginState = () => useContextEx(EmbedPluginContext, 'EmbedPlugin', true)\n","import { WithChildren } from '@xylabs/react-shared'\nimport { useState } from 'react'\n\nimport { RefreshPayloadContext } from './Context'\n\nexport interface RefreshPayloadProps {\n onRefresh?: () => void\n refreshPayload?: boolean\n}\n\nexport const RefreshPayloadProvider: React.FC<WithChildren<RefreshPayloadProps>> = ({ children, onRefresh, refreshPayload }) => {\n const [localRefreshPayload, setRefreshPayload] = useState(refreshPayload)\n\n return (\n <RefreshPayloadContext.Provider value={{ onRefresh, provided: true, refreshPayload: localRefreshPayload, setRefreshPayload }}>\n {children}\n </RefreshPayloadContext.Provider>\n )\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { RefreshPayloadState } from './State'\n\nexport const RefreshPayloadContext = createContextEx<RefreshPayloadState>()\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { RefreshPayloadContext } from './Context'\n\nexport const useRefreshPayload = () => useContextEx(RefreshPayloadContext, 'RefreshPayload', true)\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { ResolvePayloadState } from './State'\n\nexport const ResolvePayloadContext = createContextEx<ResolvePayloadState>()\n","import { delay } from '@xylabs/delay'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { Huri } from '@xyo-network/huri'\nimport { ModuleError, ModuleErrorSchema, Payload } from '@xyo-network/payload-model'\nimport { useEffect, useState } from 'react'\n\nimport { useRefreshPayload } from '../RefreshPayloadContext'\nimport { ResolvePayloadContext } from './Context'\nimport { ResolvePayloadState } from './State'\n\nexport type ResolvePayloadProviderProps = Omit<ResolvePayloadState, 'provided'>\n\nexport const ResolvePayloadProvider: React.FC<WithChildren<ResolvePayloadProviderProps>> = ({ children, huriPayload }) => {\n const [payload, setPayload] = useState<Payload>()\n const [huri, setHuri] = useState<string>()\n const { refreshPayload, setRefreshPayload, onRefresh } = useRefreshPayload()\n\n useEffect(() => {\n typeof huriPayload === 'string' ? setHuri(huriPayload) : undefined\n if (typeof huriPayload === 'object') {\n setPayload(huriPayload)\n setRefreshPayload?.(true)\n }\n }, [huriPayload, setRefreshPayload])\n\n const [notFound, setNotFound] = useState<boolean>()\n const [huriError, setHuriError] = useState<ModuleError>()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n if (huri && !refreshPayload) {\n try {\n const huriInstance = new Huri(huri)\n const result = await huriInstance.fetch()\n // ensure the busy state can stay for a moment to avoid flashing too quickly\n await delay(500)\n\n if (mounted()) {\n setNotFound(result === null)\n setPayload(result)\n setRefreshPayload?.(true)\n }\n } catch (e) {\n const error = e as Error\n setHuriError({ message: error.message, schema: ModuleErrorSchema, sources: [] })\n }\n }\n },\n [huri, payload, refreshPayload, setRefreshPayload],\n )\n\n const refreshHuri = () => {\n onRefresh?.()\n if (huri) {\n setRefreshPayload?.(false)\n }\n }\n\n return (\n <ResolvePayloadContext.Provider value={{ huri, huriError, notFound, payload, provided: true, refreshHuri, setPayload }}>\n {children}\n </ResolvePayloadContext.Provider>\n )\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { ResolvePayloadContext } from './Context'\n\nexport const useResolvePayload = () => useContextEx(ResolvePayloadContext, 'ResolvePayload', true)\n","import { Chip } from '@mui/material'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { SchemaCache, SchemaNameToValidatorMap } from '@xyo-network/schema-cache'\nimport { useState } from 'react'\n\nimport { useResolvePayload } from '../ResolvePayloadContext'\nimport { ValidatePayloadContext } from './Context'\n\nexport interface ValidatePayloadProviderProps {\n // Opt-in flag to validate payloads for the plugin(s)\n enabled?: boolean\n}\n\nexport const ValidatePayloadProvider: React.FC<WithChildren<ValidatePayloadProviderProps>> = ({ children, enabled = false }) => {\n const { payload } = useResolvePayload()\n const [initialized, setInitialized] = useState(false)\n const [valid, setValid] = useState<boolean>()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n if (payload && enabled) {\n await SchemaCache.instance.get(payload.schema)\n\n const possibleKnownSchema = payload.schema as keyof SchemaNameToValidatorMap\n\n if (SchemaCache.instance.validators[possibleKnownSchema]) {\n const validator = SchemaCache.instance.validators[possibleKnownSchema]\n setValid(validator?.(payload))\n }\n setInitialized(true)\n }\n },\n [payload, enabled],\n )\n\n return (\n <ValidatePayloadContext.Provider value={{ enabled, provided: true, schema: payload?.schema, validPayload: valid }}>\n {enabled ? <>{initialized ? children : <Chip label=\"Validating Payload...\" />}</> : children}\n </ValidatePayloadContext.Provider>\n )\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { ValidatePayloadState } from './State'\n\nexport const ValidatePayloadContext = createContextEx<ValidatePayloadState>()\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { ValidatePayloadContext } from './Context'\n\nexport const useValidatePayload = () => useContextEx(ValidatePayloadContext, 'ValidateSchema', true)\n","import { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { ErrorBoundary, ListModeProvider } from '@xyo-network/react-shared'\n\nimport { EmbedPluginProvider, RefreshPayloadProvider, ResolvePayloadProvider, ValidatePayloadProvider } from '../contexts'\nimport { EmbedPluginProps } from '../types'\nimport { EmbedResolver } from './EmbedResolver'\nimport { ValidatePayloadAlert, ValidatePluginsAlert } from './validation-alerts'\n\nexport const EmbedPluginInner: React.FC<WithChildren<EmbedPluginProps>> = ({\n validateSchema,\n plugins = [],\n huriPayload,\n refreshTitle = '',\n timestampLabel = 'Data From',\n hideElementsConfig,\n embedPluginConfig,\n onRefresh,\n children,\n}) => {\n return (\n <ErrorBoundary>\n <EmbedPluginProvider\n refreshTitle={refreshTitle}\n timestampLabel={timestampLabel}\n hideElementsConfig={hideElementsConfig}\n plugins={plugins}\n embedPluginConfig={embedPluginConfig}\n >\n <WithResolvers onRefresh={onRefresh} huriPayload={huriPayload}>\n <WithValidators validateSchema={validateSchema}>\n <ListModeProvider defaultListMode={embedPluginConfig?.listMode}>{children}</ListModeProvider>\n </WithValidators>\n </WithResolvers>\n </EmbedPluginProvider>\n </ErrorBoundary>\n )\n}\n\ninterface WithResolversProps extends Pick<EmbedPluginProps, 'onRefresh' | 'huriPayload'>, FlexBoxProps {}\n\nconst WithResolvers: React.FC<WithChildren<WithResolversProps>> = ({ children, onRefresh, huriPayload }) => {\n return (\n <RefreshPayloadProvider onRefresh={onRefresh}>\n <ResolvePayloadProvider huriPayload={huriPayload}>\n <EmbedResolver>{children}</EmbedResolver>\n </ResolvePayloadProvider>\n </RefreshPayloadProvider>\n )\n}\n\nconst WithValidators: React.FC<WithChildren<{ validateSchema?: boolean }>> = ({ children, validateSchema }) => {\n return (\n <ValidatePayloadProvider enabled={validateSchema}>\n <ValidatePluginsAlert>\n <ValidatePayloadAlert>{children}</ValidatePayloadAlert>\n </ValidatePluginsAlert>\n </ValidatePayloadProvider>\n )\n}\n","import { WithChildren } from '@xylabs/react-shared'\nimport { LoadResult } from '@xyo-network/react-shared'\n\nimport { useResolvePayload } from '../contexts'\n\nexport const EmbedResolver: React.FC<WithChildren> = ({ children }) => {\n const { payload, notFound, huriError } = useResolvePayload()\n\n return (\n <LoadResult searchResult={payload} notFound={!!notFound} error={!!huriError}>\n {children}\n </LoadResult>\n )\n}\n","import { Alert, AlertProps } from '@mui/material'\nimport { WithChildren } from '@xylabs/react-shared'\n\nimport { useValidatePayload } from '../../contexts'\n\nexport const ValidatePayloadAlert: React.FC<WithChildren<AlertProps>> = ({ children, ...props }) => {\n const { validPayload, enabled, schema } = useValidatePayload()\n\n if (enabled && validPayload === false) {\n return (\n <Alert severity=\"error\" title=\"Invalid Payload!\" {...props}>\n Payload schema claimed to be {schema} but failed to validate.\n </Alert>\n )\n }\n\n return <>{children}</>\n}\n","import { Alert, AlertProps, AlertTitle } from '@mui/material'\nimport { WithChildren } from '@xylabs/react-shared'\n\nimport { useEmbedPluginState, useResolvePayload } from '../../contexts'\n\nexport const ValidatePluginsAlert: React.FC<WithChildren<AlertProps>> = ({ children, ...props }) => {\n const { payload } = useResolvePayload()\n const { plugins } = useEmbedPluginState()\n\n if (payload && plugins?.length === 0) {\n return (\n <Alert severity=\"warning\" {...props}>\n <AlertTitle>Missing plugins!</AlertTitle>Payload found but no plugins were present.\n </Alert>\n )\n }\n\n return <>{children}</>\n}\n","import { Card, CardProps } from '@mui/material'\nimport { useBusyTiming } from '@xylabs/react-flexbox'\nimport {\n BusyCircularProgress,\n BusyCircularProgressProps,\n BusyLinearProgress,\n BusyLinearProgressProps,\n BusyVariant,\n WithChildren,\n} from '@xylabs/react-shared'\n\nexport interface BusyCardProps extends CardProps {\n busy?: boolean\n busyMinimum?: number\n busyVariant?: BusyVariant\n busyVariantProps?: BusyCircularProgressProps | BusyLinearProgressProps\n}\n\nexport const BusyCard: React.FC<WithChildren<BusyCardProps>> = ({\n busy,\n busyMinimum = 500,\n busyVariant = 'circular',\n busyVariantProps,\n children,\n ...props\n}) => {\n const internalBusy = useBusyTiming(busy, busyMinimum)\n return (\n <Card {...props}>\n {children}\n {busyVariant === 'circular' && internalBusy ? <BusyCircularProgress {...(busyVariantProps as BusyCircularProgressProps)} /> : null}\n {busyVariant === 'linear' && internalBusy ? <BusyLinearProgress {...(busyVariantProps as BusyLinearProgressProps)} /> : null}\n </Card>\n )\n}\n","import { Refresh as RefreshIcon } from '@mui/icons-material'\nimport { Avatar, CardHeader, CardHeaderProps, Chip, Theme } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { useEmbedPluginState, useResolvePayload } from '../../../contexts'\nimport { EmbedMenu } from '../menu'\n\nexport const EmbedCardHeader: React.FC<CardHeaderProps> = () => {\n const { refreshHuri, huri } = useResolvePayload()\n const { activePlugin, timestampLabel, hideElementsConfig } = useEmbedPluginState()\n const { hideAvatar, hideTitle, hideRefreshButton, hideTimestamp, hideCardActions } = hideElementsConfig ?? {}\n //this is temporary so that we can add the ability to get a timestamp via diviner later\n const timestamp = Date.now()\n return (\n <CardHeader\n sx={{ flexWrap: 'wrap', rowGap: 1 }}\n avatar={\n hideAvatar ? (\n <></>\n ) : (\n <Avatar sx={{ bgcolor: (theme: Theme) => theme.palette.primary.main }} aria-label={activePlugin?.name}>\n {activePlugin?.name?.charAt(0)}\n </Avatar>\n )\n }\n action={\n <FlexRow flexWrap=\"wrap\" columnGap={0.5}>\n {timestamp ? (\n hideTimestamp && hideRefreshButton ? (\n ''\n ) : (\n <Chip\n avatar={hideRefreshButton ? <></> : <RefreshIcon />}\n clickable={hideRefreshButton ? false : true}\n onClick={refreshHuri}\n label={hideTimestamp ? '' : `${timestampLabel} ${new Date(timestamp).toLocaleString()}`}\n />\n )\n ) : null}\n {/* Huri case is valid as long as the only menu item is JSON */}\n {hideCardActions || huri === undefined ? null : <EmbedMenu />}\n </FlexRow>\n }\n title={hideTitle ? '' : activePlugin?.name}\n />\n )\n}\n","import { MoreVert as MoreVertIcon } from '@mui/icons-material'\nimport { IconButton, IconButtonProps, Menu } from '@mui/material'\nimport { useState } from 'react'\n\nimport { JsonMenuItem } from './JsonMenuItem'\n\nexport const EmbedMenu: React.FC<IconButtonProps> = (props) => {\n // TODO - link to explore website\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const open = Boolean(anchorEl)\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget)\n }\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n return (\n <>\n <IconButton onClick={handleClick} {...props}>\n <MoreVertIcon />\n </IconButton>\n <Menu anchorEl={anchorEl} open={open} onClose={handleClose} PaperProps={{ variant: 'elevation' }} MenuListProps={{ dense: true }}>\n <JsonMenuItem />\n </Menu>\n </>\n )\n}\n","import { OpenInNew as OpenInNewIcon } from '@mui/icons-material'\nimport { ListItemIcon, ListItemText, MenuItem, MenuItemProps } from '@mui/material'\n\nimport { useResolvePayload } from '../../../contexts'\n\nexport const JsonMenuItem: React.FC<MenuItemProps> = (props) => {\n const { huri } = useResolvePayload()\n\n return (\n <>\n {huri ? (\n <MenuItem title=\"Source Payload JSON\" onClick={() => window.open(huri, '_blank')} {...props}>\n <ListItemText sx={{ mr: 1 }}>JSON</ListItemText>\n <ListItemIcon sx={{ justifyContent: 'end' }}>\n <OpenInNewIcon fontSize=\"small\" />\n </ListItemIcon>\n </MenuItem>\n ) : null}\n </>\n )\n}\n","import { CardContent } from '@mui/material'\nimport { FlexGrowRow } from '@xylabs/react-flexbox'\nimport { useListMode } from '@xyo-network/react-shared'\n\nimport { useEmbedPluginState, useResolvePayload } from '../../../contexts'\nimport { EmbedRenderSelect, ListModeSelectFormControl } from '../../controls'\nimport { BusyCard, BusyCardProps } from './BusyCard'\nimport { EmbedCardHeader } from './EmbedCardHeader'\n\nexport const EmbedPluginCard: React.FC<BusyCardProps> = ({ ...props }) => {\n const { payload } = useResolvePayload()\n const { activePlugin: ActivePlugin, plugins, hideElementsConfig } = useEmbedPluginState()\n const { listMode } = useListMode()\n const supportsListMode = ActivePlugin?.components?.box?.listModes?.length ?? 0 > 1\n\n return (\n <BusyCard {...props}>\n {hideElementsConfig?.hideCardHeader ? null : <EmbedCardHeader />}\n {/* Only show the row if the children are present */}\n {(plugins && plugins.length) || supportsListMode ? (\n <FlexGrowRow columnGap={2} rowGap={2} flexWrap=\"wrap\" pb={1}>\n {plugins && plugins.length > 1 ? <EmbedRenderSelect /> : null}\n {supportsListMode ? <ListModeSelectFormControl /> : null}\n </FlexGrowRow>\n ) : null}\n <CardContent sx={{ height: '100%' }}>\n {ActivePlugin ? <ActivePlugin.components.box.detailsBox payload={payload} {...(supportsListMode && { listMode })} /> : null}\n </CardContent>\n </BusyCard>\n )\n}\n","import { FormControl, FormControlProps, InputLabel } from '@mui/material'\nimport { WithChildren } from '@xylabs/react-shared'\n\ninterface EmbedFormControlProps extends FormControlProps {\n formId?: string\n formLabel?: string\n}\n\nexport const EmbedFormControl: React.FC<WithChildren<EmbedFormControlProps>> = ({ formId, formLabel, children, ...props }) => {\n return (\n <FormControl {...props}>\n <InputLabel id={formId}>{formLabel}</InputLabel>\n {children}\n </FormControl>\n )\n}\n","import { MenuItem, Select, SelectProps } from '@mui/material'\nimport { ListMode, useListMode } from '@xyo-network/react-shared'\n\nimport { EmbedFormControl } from './EmbedFormControl'\n\nconst listModeSelectId = 'listmode-select-id'\nconst listModeSelectLabel = 'List Mode'\n\nexport const ListModeSelect: React.FC<SelectProps<ListMode>> = (props) => {\n const { listMode, setListMode } = useListMode()\n\n return (\n <Select<ListMode>\n value={(listMode ?? 'default') as ListMode}\n onChange={(event) => {\n setListMode?.(event.target.value as ListMode)\n }}\n {...props}\n >\n <MenuItem key=\"default\" value=\"default\">\n Default\n </MenuItem>\n <MenuItem key=\"table\" value=\"table\">\n Table\n </MenuItem>\n <MenuItem key=\"grid\" value=\"grid\">\n Grid\n </MenuItem>\n </Select>\n )\n}\n\nexport const ListModeSelectFormControl: React.FC<SelectProps<ListMode>> = (props) => {\n return (\n <EmbedFormControl formId={listModeSelectId} formLabel={listModeSelectLabel}>\n <ListModeSelect size=\"small\" label={listModeSelectLabel} labelId={listModeSelectId} {...props} />\n </EmbedFormControl>\n )\n}\n","import { MenuItem, Select, SelectProps } from '@mui/material'\n\nimport { useEmbedPluginState } from '../../contexts'\nimport { EmbedFormControl } from './EmbedFormControl'\n\nconst renderSelectId = 'render-select-id'\nconst renderSelectLabel = 'Renderer'\n\nexport const EmbedRenderSelect: React.FC<SelectProps> = (props) => {\n const { activePlugin, setActivePlugin, plugins } = useEmbedPluginState()\n return (\n <EmbedFormControl formId={renderSelectId} formLabel={renderSelectLabel}>\n <Select size=\"small\" value={activePlugin?.name} {...props}>\n {plugins?.map((plugin) => (\n <MenuItem value={plugin.name} key={plugin.name} onClick={() => setActivePlugin?.(plugin)}>\n {plugin.name}\n </MenuItem>\n ))}\n </Select>\n </EmbedFormControl>\n )\n}\n","import { CardProps } from '@mui/material'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { ModuleError } from '@xyo-network/payload-model'\nimport { ErrorAlert, ErrorRender } from '@xyo-network/react-error'\n\nimport { EmbedErrorCard } from './EmbedErrorCard'\n\ninterface EmbedCardApiErrorRendererProps extends CardProps {\n xyoError?: ModuleError\n}\n\nexport const EmbedCardApiErrorRenderer: React.FC<WithChildren<EmbedCardApiErrorRendererProps>> = ({ xyoError, children, ...props }) => {\n return (\n <ErrorRender error={xyoError} noReAuth noErrorDisplay customError={<CustomApiErrorCard xyoError={xyoError} {...props} />}>\n {children}\n </ErrorRender>\n )\n}\n\nconst CustomApiErrorCard: React.FC<EmbedCardApiErrorRendererProps> = ({ xyoError, ...props }) => {\n return (\n <EmbedErrorCard {...props}>\n <ErrorAlert error={xyoError} />\n </EmbedErrorCard>\n )\n}\n","import { Alert, AlertProps, AlertTitle, Card, CardContent, CardProps, Typography } from '@mui/material'\nimport { WithChildren } from '@xylabs/react-shared'\n\ninterface EmbedErrorCardBaseProps {\n alertProps?: AlertProps\n error?: Error\n hideErrorDetails?: boolean\n}\n\ninterface EmbedErrorCardProps extends EmbedErrorCardBaseProps, CardProps {\n alertProps?: AlertProps\n error?: Error\n}\n\nexport const EmbedErrorCard: React.FC<WithChildren<EmbedErrorCardProps>> = (props) => {\n const { alertProps, error, hideErrorDetails = true, children, ...cardProps } = props\n const errorProps = { alertProps, error, hideErrorDetails }\n return (\n <Card {...cardProps}>\n <CardContent>{children ?? <DefaultErrorAlert {...errorProps} />}</CardContent>\n </Card>\n )\n}\n\nconst DefaultErrorAlert: React.FC<EmbedErrorCardBaseProps> = ({ alertProps, hideErrorDetails, error }) => {\n return (\n <Alert severity=\"error\" {...alertProps}>\n <AlertTitle>Whoops! Something went wrong</AlertTitle>\n {!hideErrorDetails && error ? (\n <>\n <Typography variant=\"caption\">Error: </Typography>\n <Typography variant=\"caption\">{error?.message}</Typography>\n </>\n ) : (\n <Typography variant=\"caption\" fontSize=\"small\">\n Error Loading Plugin\n </Typography>\n )}\n </Alert>\n )\n}\n"],"mappings":"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","names":["useState","createContextEx","jsx","useState","useContextEx","useContextEx","createContextEx","useEffect","useState","jsx","useState","useEffect","useContextEx","useContextEx","useAsyncEffect","useState","createContextEx","jsx","useState","useAsyncEffect","useContextEx","useContextEx","jsx","Fragment","jsx","Alert","Fragment","jsx","jsxs","Alert","jsx","jsx","jsxs","Chip","useState","Fragment","jsx","jsxs","Fragment","jsx","jsxs","useState","Fragment","jsx","jsxs","Chip","useListMode","jsx","jsxs","MenuItem","jsx","jsxs","MenuItem","MenuItem","Select","jsx","Select","MenuItem","jsx","jsxs","useListMode","Alert","AlertTitle","Card","CardContent","Fragment","jsx","jsxs","jsx","jsx","jsxs"]}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
// src/components/embed-card/card/BusyCard.tsx
|
|
2
2
|
import { Card } from "@mui/material";
|
|
3
3
|
import { useBusyTiming } from "@xylabs/react-flexbox";
|
|
4
4
|
import {
|
|
5
5
|
BusyCircularProgress,
|
|
6
6
|
BusyLinearProgress
|
|
7
7
|
} from "@xylabs/react-shared";
|
|
8
|
-
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
var BusyCard = ({
|
|
9
10
|
busy,
|
|
10
11
|
busyMinimum = 500,
|
|
11
12
|
busyVariant = "circular",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/embed-card/card/BusyCard.tsx"],"sourcesContent":["import { Card, CardProps } from '@mui/material'\nimport { useBusyTiming } from '@xylabs/react-flexbox'\nimport {\n BusyCircularProgress,\n BusyCircularProgressProps,\n BusyLinearProgress,\n BusyLinearProgressProps,\n BusyVariant,\n WithChildren,\n} from '@xylabs/react-shared'\n\nexport interface BusyCardProps extends CardProps {\n busy?: boolean\n busyMinimum?: number\n busyVariant?: BusyVariant\n busyVariantProps?: BusyCircularProgressProps | BusyLinearProgressProps\n}\n\nexport const BusyCard: React.FC<WithChildren<BusyCardProps>> = ({\n busy,\n busyMinimum = 500,\n busyVariant = 'circular',\n busyVariantProps,\n children,\n ...props\n}) => {\n const internalBusy = useBusyTiming(busy, busyMinimum)\n return (\n <Card {...props}>\n {children}\n {busyVariant === 'circular' && internalBusy ? <BusyCircularProgress {...(busyVariantProps as BusyCircularProgressProps)} /> : null}\n {busyVariant === 'linear' && internalBusy ? <BusyLinearProgress {...(busyVariantProps as BusyLinearProgressProps)} /> : null}\n </Card>\n )\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/embed-card/card/BusyCard.tsx"],"sourcesContent":["import { Card, CardProps } from '@mui/material'\nimport { useBusyTiming } from '@xylabs/react-flexbox'\nimport {\n BusyCircularProgress,\n BusyCircularProgressProps,\n BusyLinearProgress,\n BusyLinearProgressProps,\n BusyVariant,\n WithChildren,\n} from '@xylabs/react-shared'\n\nexport interface BusyCardProps extends CardProps {\n busy?: boolean\n busyMinimum?: number\n busyVariant?: BusyVariant\n busyVariantProps?: BusyCircularProgressProps | BusyLinearProgressProps\n}\n\nexport const BusyCard: React.FC<WithChildren<BusyCardProps>> = ({\n busy,\n busyMinimum = 500,\n busyVariant = 'circular',\n busyVariantProps,\n children,\n ...props\n}) => {\n const internalBusy = useBusyTiming(busy, busyMinimum)\n return (\n <Card {...props}>\n {children}\n {busyVariant === 'circular' && internalBusy ? <BusyCircularProgress {...(busyVariantProps as BusyCircularProgressProps)} /> : null}\n {busyVariant === 'linear' && internalBusy ? <BusyLinearProgress {...(busyVariantProps as BusyLinearProgressProps)} /> : null}\n </Card>\n )\n}\n"],"mappings":";AAAA,SAAS,YAAuB;AAChC,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EAEA;AAAA,OAIK;AAmBH,SAEgD,KAFhD;AAVG,IAAM,WAAkD,CAAC;AAAA,EAC9D;AAAA,EACA,cAAc;AAAA,EACd,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,eAAe,cAAc,MAAM,WAAW;AACpD,SACE,qBAAC,QAAM,GAAG,OACP;AAAA;AAAA,IACA,gBAAgB,cAAc,eAAe,oBAAC,wBAAsB,GAAI,kBAAgD,IAAK;AAAA,IAC7H,gBAAgB,YAAY,eAAe,oBAAC,sBAAoB,GAAI,kBAA8C,IAAK;AAAA,KAC1H;AAEJ;","names":[]}
|