@xyo-network/react-embed 2.27.30 → 2.27.31

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.
Files changed (116) hide show
  1. package/dist/cjs/components/XyoEmbedPlugin.d.ts.map +1 -1
  2. package/dist/cjs/components/XyoEmbedPlugin.js +2 -2
  3. package/dist/cjs/components/XyoEmbedPlugin.js.map +1 -1
  4. package/dist/cjs/components/embed-card/EmbedCardHeader.d.ts.map +1 -1
  5. package/dist/cjs/components/embed-card/EmbedCardHeader.js +3 -2
  6. package/dist/cjs/components/embed-card/EmbedCardHeader.js.map +1 -1
  7. package/dist/cjs/components/embed-card/EmbedPluginContainer.d.ts.map +1 -1
  8. package/dist/cjs/components/embed-card/EmbedPluginContainer.js +2 -1
  9. package/dist/cjs/components/embed-card/EmbedPluginContainer.js.map +1 -1
  10. package/dist/cjs/components/embed-card/ValidatePlugins.d.ts.map +1 -1
  11. package/dist/cjs/components/embed-card/ValidatePlugins.js +2 -1
  12. package/dist/cjs/components/embed-card/ValidatePlugins.js.map +1 -1
  13. package/dist/cjs/components/embed-card/menu/JsonMenuItem.js +1 -1
  14. package/dist/cjs/components/embed-card/menu/JsonMenuItem.js.map +1 -1
  15. package/dist/cjs/contexts/ResolvePayloadContext/Context.d.ts +4 -0
  16. package/dist/cjs/contexts/ResolvePayloadContext/Context.d.ts.map +1 -0
  17. package/dist/cjs/contexts/ResolvePayloadContext/Context.js +6 -0
  18. package/dist/cjs/contexts/ResolvePayloadContext/Context.js.map +1 -0
  19. package/dist/cjs/contexts/ResolvePayloadContext/Provider.d.ts +7 -0
  20. package/dist/cjs/contexts/ResolvePayloadContext/Provider.d.ts.map +1 -0
  21. package/dist/cjs/contexts/ResolvePayloadContext/Provider.js +56 -0
  22. package/dist/cjs/contexts/ResolvePayloadContext/Provider.js.map +1 -0
  23. package/dist/cjs/contexts/ResolvePayloadContext/State.d.ts +15 -0
  24. package/dist/cjs/contexts/ResolvePayloadContext/State.d.ts.map +1 -0
  25. package/dist/cjs/contexts/ResolvePayloadContext/State.js +3 -0
  26. package/dist/cjs/contexts/ResolvePayloadContext/State.js.map +1 -0
  27. package/dist/cjs/contexts/ResolvePayloadContext/index.d.ts +4 -0
  28. package/dist/cjs/contexts/ResolvePayloadContext/index.d.ts.map +1 -0
  29. package/dist/cjs/contexts/ResolvePayloadContext/index.js +7 -0
  30. package/dist/cjs/contexts/ResolvePayloadContext/index.js.map +1 -0
  31. package/dist/cjs/contexts/ResolvePayloadContext/use.d.ts +2 -0
  32. package/dist/cjs/contexts/ResolvePayloadContext/use.d.ts.map +1 -0
  33. package/dist/cjs/contexts/ResolvePayloadContext/use.js +8 -0
  34. package/dist/cjs/contexts/ResolvePayloadContext/use.js.map +1 -0
  35. package/dist/cjs/contexts/ValidatePayloadContext/Provider.js +2 -2
  36. package/dist/cjs/contexts/ValidatePayloadContext/Provider.js.map +1 -1
  37. package/dist/cjs/contexts/XyoEmbedPluginContext/Provider.d.ts +5 -2
  38. package/dist/cjs/contexts/XyoEmbedPluginContext/Provider.d.ts.map +1 -1
  39. package/dist/cjs/contexts/XyoEmbedPluginContext/Provider.js +3 -40
  40. package/dist/cjs/contexts/XyoEmbedPluginContext/Provider.js.map +1 -1
  41. package/dist/cjs/contexts/XyoEmbedPluginContext/State.d.ts +1 -3
  42. package/dist/cjs/contexts/XyoEmbedPluginContext/State.d.ts.map +1 -1
  43. package/dist/cjs/contexts/index.d.ts +1 -0
  44. package/dist/cjs/contexts/index.d.ts.map +1 -1
  45. package/dist/cjs/contexts/index.js +1 -0
  46. package/dist/cjs/contexts/index.js.map +1 -1
  47. package/dist/cjs/types/XyoEmbedPluginProps.d.ts +3 -0
  48. package/dist/cjs/types/XyoEmbedPluginProps.d.ts.map +1 -1
  49. package/dist/docs.json +2 -2
  50. package/dist/esm/components/XyoEmbedPlugin.d.ts.map +1 -1
  51. package/dist/esm/components/XyoEmbedPlugin.js +3 -3
  52. package/dist/esm/components/XyoEmbedPlugin.js.map +1 -1
  53. package/dist/esm/components/embed-card/EmbedCardHeader.d.ts.map +1 -1
  54. package/dist/esm/components/embed-card/EmbedCardHeader.js +4 -3
  55. package/dist/esm/components/embed-card/EmbedCardHeader.js.map +1 -1
  56. package/dist/esm/components/embed-card/EmbedPluginContainer.d.ts.map +1 -1
  57. package/dist/esm/components/embed-card/EmbedPluginContainer.js +3 -2
  58. package/dist/esm/components/embed-card/EmbedPluginContainer.js.map +1 -1
  59. package/dist/esm/components/embed-card/ValidatePlugins.d.ts.map +1 -1
  60. package/dist/esm/components/embed-card/ValidatePlugins.js +3 -2
  61. package/dist/esm/components/embed-card/ValidatePlugins.js.map +1 -1
  62. package/dist/esm/components/embed-card/menu/JsonMenuItem.js +2 -2
  63. package/dist/esm/components/embed-card/menu/JsonMenuItem.js.map +1 -1
  64. package/dist/esm/contexts/ResolvePayloadContext/Context.d.ts +4 -0
  65. package/dist/esm/contexts/ResolvePayloadContext/Context.d.ts.map +1 -0
  66. package/dist/esm/contexts/ResolvePayloadContext/Context.js +3 -0
  67. package/dist/esm/contexts/ResolvePayloadContext/Context.js.map +1 -0
  68. package/dist/esm/contexts/ResolvePayloadContext/Provider.d.ts +7 -0
  69. package/dist/esm/contexts/ResolvePayloadContext/Provider.d.ts.map +1 -0
  70. package/dist/esm/contexts/ResolvePayloadContext/Provider.js +50 -0
  71. package/dist/esm/contexts/ResolvePayloadContext/Provider.js.map +1 -0
  72. package/dist/esm/contexts/ResolvePayloadContext/State.d.ts +15 -0
  73. package/dist/esm/contexts/ResolvePayloadContext/State.d.ts.map +1 -0
  74. package/dist/esm/contexts/ResolvePayloadContext/State.js +2 -0
  75. package/dist/esm/contexts/ResolvePayloadContext/State.js.map +1 -0
  76. package/dist/esm/contexts/ResolvePayloadContext/index.d.ts +4 -0
  77. package/dist/esm/contexts/ResolvePayloadContext/index.d.ts.map +1 -0
  78. package/dist/esm/contexts/ResolvePayloadContext/index.js +4 -0
  79. package/dist/esm/contexts/ResolvePayloadContext/index.js.map +1 -0
  80. package/dist/esm/contexts/ResolvePayloadContext/use.d.ts +2 -0
  81. package/dist/esm/contexts/ResolvePayloadContext/use.d.ts.map +1 -0
  82. package/dist/esm/contexts/ResolvePayloadContext/use.js +4 -0
  83. package/dist/esm/contexts/ResolvePayloadContext/use.js.map +1 -0
  84. package/dist/esm/contexts/ValidatePayloadContext/Provider.js +2 -2
  85. package/dist/esm/contexts/ValidatePayloadContext/Provider.js.map +1 -1
  86. package/dist/esm/contexts/XyoEmbedPluginContext/Provider.d.ts +5 -2
  87. package/dist/esm/contexts/XyoEmbedPluginContext/Provider.d.ts.map +1 -1
  88. package/dist/esm/contexts/XyoEmbedPluginContext/Provider.js +3 -38
  89. package/dist/esm/contexts/XyoEmbedPluginContext/Provider.js.map +1 -1
  90. package/dist/esm/contexts/XyoEmbedPluginContext/State.d.ts +1 -3
  91. package/dist/esm/contexts/XyoEmbedPluginContext/State.d.ts.map +1 -1
  92. package/dist/esm/contexts/index.d.ts +1 -0
  93. package/dist/esm/contexts/index.d.ts.map +1 -1
  94. package/dist/esm/contexts/index.js +1 -0
  95. package/dist/esm/contexts/index.js.map +1 -1
  96. package/dist/esm/types/XyoEmbedPluginProps.d.ts +3 -0
  97. package/dist/esm/types/XyoEmbedPluginProps.d.ts.map +1 -1
  98. package/package.json +7 -7
  99. package/src/components/XyoEmbedPlugin.stories.tsx +16 -5
  100. package/src/components/XyoEmbedPlugin.tsx +21 -20
  101. package/src/components/embed-card/EmbedCardHeader.tsx +6 -4
  102. package/src/components/embed-card/EmbedPluginContainer.tsx +3 -2
  103. package/src/components/embed-card/ValidatePlugins.tsx +3 -2
  104. package/src/components/embed-card/menu/JsonMenuItem.tsx +2 -2
  105. package/src/components/payload.stories.ts +21 -0
  106. package/src/contexts/ResolvePayloadContext/Context.ts +5 -0
  107. package/src/contexts/ResolvePayloadContext/Provider.tsx +71 -0
  108. package/src/contexts/ResolvePayloadContext/State.ts +15 -0
  109. package/src/contexts/ResolvePayloadContext/index.ts +3 -0
  110. package/src/contexts/ResolvePayloadContext/use.tsx +5 -0
  111. package/src/contexts/ValidatePayloadContext/Provider.stories.tsx +19 -7
  112. package/src/contexts/ValidatePayloadContext/Provider.tsx +2 -2
  113. package/src/contexts/XyoEmbedPluginContext/Provider.tsx +8 -51
  114. package/src/contexts/XyoEmbedPluginContext/State.ts +1 -3
  115. package/src/contexts/index.ts +1 -0
  116. package/src/types/XyoEmbedPluginProps.ts +3 -0
@@ -2,11 +2,12 @@ import RefreshIcon from '@mui/icons-material/Refresh'
2
2
  import { Avatar, CardHeader, CardHeaderProps, Chip, Theme } from '@mui/material'
3
3
  import { FlexRow } from '@xylabs/react-flexbox'
4
4
 
5
- import { useXyoEmbedPluginState } from '../../contexts'
5
+ import { useResolvePayload, useXyoEmbedPluginState } from '../../contexts'
6
6
  import { EmbedMenu } from './menu'
7
7
 
8
8
  export const EmbedCardHeader: React.FC<CardHeaderProps> = () => {
9
- const { activePlugin, payload, timestampLabel, refreshHuri, hideElementsConfig } = useXyoEmbedPluginState()
9
+ const { payload, refreshHuri, huri } = useResolvePayload()
10
+ const { activePlugin, timestampLabel, hideElementsConfig } = useXyoEmbedPluginState()
10
11
  const { hideAvatar, hideTitle, hideRefreshButton, hideTimestamp, hideCardActions } = hideElementsConfig ?? {}
11
12
  return (
12
13
  <CardHeader
@@ -28,13 +29,14 @@ export const EmbedCardHeader: React.FC<CardHeaderProps> = () => {
28
29
  ) : (
29
30
  <Chip
30
31
  avatar={hideRefreshButton ? <></> : <RefreshIcon />}
31
- clickable
32
+ clickable={!!huri}
32
33
  onClick={refreshHuri}
33
34
  label={hideTimestamp ? '' : `${timestampLabel} ${new Date(payload.timestamp).toLocaleString()}`}
34
35
  />
35
36
  )
36
37
  ) : null}
37
- {hideCardActions ? null : <EmbedMenu />}
38
+ {/* Huri case is valid as long as the only menu item is JSON */}
39
+ {hideCardActions || huri === undefined ? null : <EmbedMenu />}
38
40
  </FlexRow>
39
41
  }
40
42
  title={hideTitle ? '' : activePlugin?.name}
@@ -2,12 +2,13 @@ import { Card, CardContent, CardProps } from '@mui/material'
2
2
  import { FlexGrowRow } from '@xylabs/react-flexbox'
3
3
  import { useListMode } from '@xyo-network/react-shared'
4
4
 
5
- import { useXyoEmbedPluginState } from '../../contexts'
5
+ import { useResolvePayload, useXyoEmbedPluginState } from '../../contexts'
6
6
  import { EmbedRenderSelect, ListModeSelectFormControl } from '../controls'
7
7
  import { EmbedCardHeader } from './EmbedCardHeader'
8
8
 
9
9
  export const EmbedPluginContainer: React.FC<CardProps> = (props) => {
10
- const { activePlugin: ActivePlugin, payload, plugins, hideElementsConfig } = useXyoEmbedPluginState()
10
+ const { payload } = useResolvePayload()
11
+ const { activePlugin: ActivePlugin, plugins, hideElementsConfig } = useXyoEmbedPluginState()
11
12
  const { listMode } = useListMode()
12
13
 
13
14
  return (
@@ -1,10 +1,11 @@
1
1
  import { Alert, AlertTitle } from '@mui/material'
2
2
  import { WithChildren } from '@xylabs/react-shared'
3
3
 
4
- import { useXyoEmbedPluginState } from '../../contexts'
4
+ import { useResolvePayload, useXyoEmbedPluginState } from '../../contexts'
5
5
 
6
6
  export const ValidatePlugins: React.FC<WithChildren> = ({ children }) => {
7
- const { payload, plugins } = useXyoEmbedPluginState()
7
+ const { payload } = useResolvePayload()
8
+ const { plugins } = useXyoEmbedPluginState()
8
9
 
9
10
  if (payload && plugins?.length === 0) {
10
11
  return (
@@ -1,10 +1,10 @@
1
1
  import OpenInNewIcon from '@mui/icons-material/OpenInNew'
2
2
  import { ListItemIcon, ListItemText, MenuItem, MenuItemProps } from '@mui/material'
3
3
 
4
- import { useXyoEmbedPluginState } from '../../../contexts'
4
+ import { useResolvePayload } from '../../../contexts'
5
5
 
6
6
  export const JsonMenuItem: React.FC<MenuItemProps> = (props) => {
7
- const { huri } = useXyoEmbedPluginState()
7
+ const { huri } = useResolvePayload()
8
8
 
9
9
  return (
10
10
  <>
@@ -0,0 +1,21 @@
1
+ export const payloadData = {
2
+ assets: {
3
+ ada: { value: { btc: '0.00002192', eth: '0.00031141', eur: '0.491867', usd: '0.502045' } },
4
+ btc: { value: { btc: '1', eth: '14.213346', eur: '22450', usd: '22914' } },
5
+ busd: { value: { btc: '0.00004369', eth: '0.00062074', eur: '0.980451', usd: '1.001' } },
6
+ dai: { value: { usdc: '1.00004', xyo: '114.394' } },
7
+ doge: { value: { btc: '0.00000293', eth: '0.00004157', eur: '0.065655', usd: '0.067013' } },
8
+ dot: { value: { btc: '0.00035508', eth: '0.00504454', eur: '7.97', usd: '8.13' } },
9
+ eth: { value: { btc: '0.0703878', eth: '1', eur: '1579.47', usd: '1612.16' } },
10
+ frax: { value: { usdc: '0.999738' } },
11
+ link: { value: { xyo: '837.731' } },
12
+ sol: { value: { btc: '0.00169369', eth: '0.02406215', eur: '38.01', usd: '38.79' } },
13
+ usdc: { value: { btc: '0.0000436965', dai: '0.999963', eth: '0.0006204464999999999', eur: '0.979419', frax: '1.00026', usd: '0.999732' } },
14
+ usdt: { value: { btc: '0.00004367', eth: '0.0006204', eur: '0.979881', usd: '1.001', usdc: '1.00022', xyo: '113.28' } },
15
+ wbtc: { value: { btc: '0.99903669', eth: '14.2015745', eur: '22418', usd: '22882', usdc: '22860.8', xyo: '2617950' } },
16
+ weth: { value: { btc: '0.0703735', usdc: '1610.82', xyo: '186652' } },
17
+ xyo: { value: { btc: '3.79226e-7', dai: '0.00874169', eth: '0.000005353785', eur: '0.00844792', link: '0.0011937', usd: '0.00872519' } },
18
+ },
19
+ schema: 'network.xyo.crypto.asset',
20
+ timestamp: 1659625815232,
21
+ }
@@ -0,0 +1,5 @@
1
+ import { createContextEx } from '@xyo-network/react-shared'
2
+
3
+ import { ResolvePayloadState } from './State'
4
+
5
+ export const ResolvePayloadContext = createContextEx<ResolvePayloadState>()
@@ -0,0 +1,71 @@
1
+ import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'
2
+ import { useAsyncEffect, WithChildren } from '@xylabs/react-shared'
3
+ import { delay } from '@xylabs/sdk-js'
4
+ import { XyoApiError } from '@xyo-network/api'
5
+ import { Huri, XyoPayload } from '@xyo-network/payload'
6
+ import { XyoApiErrorRender } from '@xyo-network/react-auth-service'
7
+ import { ResultLoader } from '@xyo-network/react-webapp'
8
+ import { useEffect, useState } from 'react'
9
+
10
+ import { ResolvePayloadContext } from './Context'
11
+ import { ResolvePayloadState } from './State'
12
+
13
+ export type ResolvePayloadProviderProps = Omit<ResolvePayloadState, 'provided' & FlexBoxProps>
14
+
15
+ export const ResolvePayloadProvider: React.FC<WithChildren<ResolvePayloadProviderProps>> = ({ children, huriPayload, ...props }) => {
16
+ const [payload, setPayload] = useState<XyoPayload>()
17
+ const [huri, setHuri] = useState<string>()
18
+
19
+ useEffect(() => {
20
+ typeof huriPayload === 'string' ? setHuri(huriPayload) : undefined
21
+ if (typeof huriPayload === 'object') {
22
+ setPayload(huriPayload)
23
+ setRefreshPayload(1)
24
+ }
25
+ }, [huriPayload])
26
+
27
+ const [notFound, setNotFound] = useState<boolean>()
28
+ const [huriApiError, setHuriApiError] = useState<XyoApiError>()
29
+ const [refreshPayload, setRefreshPayload] = useState(0)
30
+
31
+ useAsyncEffect(
32
+ // eslint-disable-next-line react-hooks/exhaustive-deps
33
+ async (mounted) => {
34
+ if (huri && !refreshPayload) {
35
+ try {
36
+ const huriInstance = new Huri(huri)
37
+ const result = await huriInstance.fetch()
38
+ // ensure the busy state can stay for a moment to avoid flashing too quickly
39
+ await delay(500)
40
+
41
+ if (mounted()) {
42
+ setNotFound(result === null)
43
+ setPayload(result)
44
+ setRefreshPayload(1)
45
+ }
46
+ } catch (e) {
47
+ setHuriApiError(e as XyoApiError)
48
+ }
49
+ }
50
+ },
51
+ [huri, payload, refreshPayload],
52
+ )
53
+
54
+ const refreshHuri = () => {
55
+ if (huri) {
56
+ setRefreshPayload(0)
57
+ }
58
+ }
59
+
60
+ return (
61
+ <ResolvePayloadContext.Provider value={{ huri, huriApiError, notFound, payload, provided: true, refreshHuri, refreshPayload, setPayload }}>
62
+ <ResultLoader searchResult={payload} notFound={!!notFound} apiError={huriApiError}>
63
+ <XyoApiErrorRender apiError={huriApiError}>
64
+ <FlexCol busy={Boolean(!refreshPayload && payload)} {...props}>
65
+ {children}
66
+ </FlexCol>
67
+ </XyoApiErrorRender>
68
+ </ResultLoader>
69
+ </ResolvePayloadContext.Provider>
70
+ )
71
+ }
@@ -0,0 +1,15 @@
1
+ import { XyoApiError } from '@xyo-network/api'
2
+ import { XyoPayload } from '@xyo-network/payload'
3
+ import { ContextExState } from '@xyo-network/react-shared'
4
+ import { Dispatch, SetStateAction } from 'react'
5
+
6
+ export interface ResolvePayloadState extends ContextExState {
7
+ huri?: string
8
+ huriApiError?: XyoApiError
9
+ huriPayload?: string | XyoPayload
10
+ notFound?: boolean
11
+ payload?: XyoPayload
12
+ refreshHuri?: () => void
13
+ refreshPayload?: number
14
+ setPayload?: Dispatch<SetStateAction<XyoPayload | undefined>>
15
+ }
@@ -0,0 +1,3 @@
1
+ export * from './Provider'
2
+ export * from './State'
3
+ export * from './use'
@@ -0,0 +1,5 @@
1
+ import { useContextEx } from '@xyo-network/react-shared'
2
+
3
+ import { ResolvePayloadContext } from './Context'
4
+
5
+ export const useResolvePayload = () => useContextEx(ResolvePayloadContext, 'ResolvePayload', true)
@@ -1,6 +1,7 @@
1
1
  import { Typography } from '@mui/material'
2
2
  import { ComponentStory, DecoratorFn, Meta } from '@storybook/react'
3
3
 
4
+ import { ResolvePayloadProvider, ResolvePayloadState } from '../ResolvePayloadContext'
4
5
  import { XyoEmbedPluginContext, XyoEmbedPluginState } from '../XyoEmbedPluginContext'
5
6
  import { ValidatePayloadProvider, ValidatePayloadProviderProps } from './Provider'
6
7
  import { useValidatePayload } from './use'
@@ -8,9 +9,11 @@ import { useValidatePayload } from './use'
8
9
  const EmbedDecorator: DecoratorFn = (Story, { args }) => {
9
10
  const { xyoEmbedPluginContext, ...props } = args
10
11
  return (
11
- <XyoEmbedPluginContext.Provider value={xyoEmbedPluginContext}>
12
- <Story {...props} />
13
- </XyoEmbedPluginContext.Provider>
12
+ <ResolvePayloadProvider>
13
+ <XyoEmbedPluginContext.Provider value={xyoEmbedPluginContext}>
14
+ <Story {...props} />
15
+ </XyoEmbedPluginContext.Provider>
16
+ </ResolvePayloadProvider>
14
17
  )
15
18
  }
16
19
 
@@ -27,6 +30,7 @@ const ValidatePayloadState = () => {
27
30
 
28
31
  interface ValidatePayloadProviderPropsEx extends ValidatePayloadProviderProps {
29
32
  xyoEmbedPluginContext: XyoEmbedPluginState
33
+ resolvePayloadContext: ResolvePayloadState
30
34
  }
31
35
 
32
36
  const Template: ComponentStory<React.FC<ValidatePayloadProviderPropsEx>> = (props) => {
@@ -41,16 +45,24 @@ const Template: ComponentStory<React.FC<ValidatePayloadProviderPropsEx>> = (prop
41
45
 
42
46
  const InvalidPayload = { schema: 'network.xyo.schema' }
43
47
  const ValidPayload = { definition: { $id: 'test.schema' }, schema: 'network.xyo.schema' }
44
- const XyoEmbedPluginProviderDefaultValue = { provided: true }
48
+ const stubProviderDefaultValue = { provided: true }
45
49
 
46
50
  const Default = Template.bind({})
47
- Default.args = { xyoEmbedPluginContext: XyoEmbedPluginProviderDefaultValue }
51
+ Default.args = { xyoEmbedPluginContext: stubProviderDefaultValue }
48
52
 
49
53
  const ValidationSucceeded = Template.bind({})
50
- ValidationSucceeded.args = { enabled: true, xyoEmbedPluginContext: { payload: ValidPayload, ...XyoEmbedPluginProviderDefaultValue } }
54
+ ValidationSucceeded.args = {
55
+ enabled: true,
56
+ resolvePayloadContext: { payload: ValidPayload, ...stubProviderDefaultValue },
57
+ xyoEmbedPluginContext: stubProviderDefaultValue,
58
+ }
51
59
 
52
60
  const ValidationFailed = Template.bind({})
53
- ValidationFailed.args = { enabled: true, xyoEmbedPluginContext: { payload: InvalidPayload, ...XyoEmbedPluginProviderDefaultValue } }
61
+ ValidationFailed.args = {
62
+ enabled: true,
63
+ resolvePayloadContext: { payload: InvalidPayload, ...stubProviderDefaultValue },
64
+ xyoEmbedPluginContext: stubProviderDefaultValue,
65
+ }
54
66
 
55
67
  export { Default, ValidationFailed, ValidationSucceeded }
56
68
 
@@ -3,7 +3,7 @@ import { useAsyncEffect, WithChildren } from '@xylabs/react-shared'
3
3
  import { XyoSchemaCache, XyoSchemaNameToValidatorMap } from '@xyo-network/utils'
4
4
  import { useState } from 'react'
5
5
 
6
- import { useXyoEmbedPluginState } from '../XyoEmbedPluginContext'
6
+ import { useResolvePayload } from '../ResolvePayloadContext'
7
7
  import { ValidatePayloadContext } from './Context'
8
8
 
9
9
  export interface ValidatePayloadProviderProps {
@@ -12,7 +12,7 @@ export interface ValidatePayloadProviderProps {
12
12
  }
13
13
 
14
14
  export const ValidatePayloadProvider: React.FC<WithChildren<ValidatePayloadProviderProps>> = ({ children, enabled = false }) => {
15
- const { payload } = useXyoEmbedPluginState()
15
+ const { payload } = useResolvePayload()
16
16
  const [initialized, setInitialized] = useState(false)
17
17
  const [valid, setValid] = useState<boolean>()
18
18
 
@@ -1,60 +1,26 @@
1
- import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'
2
- import { useAsyncEffect, WithChildren } from '@xylabs/react-shared'
3
- import { delay } from '@xylabs/sdk-js'
4
- import { XyoApiError } from '@xyo-network/api'
5
- import { Huri, XyoPayload } from '@xyo-network/payload'
6
- import { XyoApiErrorRender } from '@xyo-network/react-auth-service'
1
+ import { WithChildren } from '@xylabs/react-shared'
2
+ import { XyoPayload } from '@xyo-network/payload'
7
3
  import { XyoPayloadRenderPlugin } from '@xyo-network/react-payload-plugin'
8
- import { ResultLoader } from '@xyo-network/react-webapp'
9
4
  import { useState } from 'react'
10
5
 
11
6
  import { XyoEmbedPluginContext } from './Context'
12
7
  import { XyoEmbedPluginBase } from './State'
13
8
 
14
- export interface XyoEmbedPluginProviderProps extends XyoEmbedPluginBase, FlexBoxProps {}
9
+ export interface XyoEmbedPluginProviderProps extends XyoEmbedPluginBase {
10
+ /** string for huri to resolve and payload for bypassing huri resolution */
11
+ huriPayload?: string | XyoPayload
12
+ }
15
13
 
14
+ /** Expose passed embed plugin props and payload via context */
16
15
  export const XyoEmbedPluginProvider: React.FC<WithChildren<XyoEmbedPluginProviderProps>> = ({
17
16
  children,
18
17
  refreshTitle,
19
18
  timestampLabel,
20
19
  hideElementsConfig,
21
- huri,
22
20
  plugins,
23
21
  embedPluginConfig,
24
- ...props
25
22
  }) => {
26
- const [payload, setPayload] = useState<XyoPayload>()
27
- const [notFound, setNotFound] = useState<boolean>()
28
- const [huriApiError, setHuriApiError] = useState<XyoApiError>()
29
23
  const [activePlugin, setActivePlugin] = useState<XyoPayloadRenderPlugin | undefined>(plugins ? plugins[0] : undefined)
30
- const [refreshPayload, setRefreshPayload] = useState(0)
31
-
32
- useAsyncEffect(
33
- // eslint-disable-next-line react-hooks/exhaustive-deps
34
- async (mounted) => {
35
- if (huri && !refreshPayload) {
36
- try {
37
- const huriInstance = new Huri(huri)
38
- const result = await huriInstance.fetch()
39
- // ensure the busy state can stay for a moment to avoid flashing too quickly
40
- await delay(500)
41
-
42
- if (mounted()) {
43
- setNotFound(result === null)
44
- setPayload(result)
45
- setRefreshPayload(1)
46
- }
47
- } catch (e) {
48
- setHuriApiError(e as XyoApiError)
49
- }
50
- }
51
- },
52
- [huri, payload, refreshPayload],
53
- )
54
-
55
- const refreshHuri = () => {
56
- setRefreshPayload(0)
57
- }
58
24
 
59
25
  return (
60
26
  <XyoEmbedPluginContext.Provider
@@ -62,22 +28,13 @@ export const XyoEmbedPluginProvider: React.FC<WithChildren<XyoEmbedPluginProvide
62
28
  activePlugin,
63
29
  embedPluginConfig,
64
30
  hideElementsConfig,
65
- huri,
66
- payload,
67
31
  provided: true,
68
- refreshHuri,
69
32
  refreshTitle,
70
33
  setActivePlugin,
71
34
  timestampLabel,
72
35
  }}
73
36
  >
74
- <ResultLoader searchResult={payload} notFound={!!notFound} apiError={huriApiError}>
75
- <XyoApiErrorRender apiError={huriApiError}>
76
- <FlexCol busy={Boolean(!refreshPayload && payload)} {...props}>
77
- {children}
78
- </FlexCol>
79
- </XyoApiErrorRender>
80
- </ResultLoader>
37
+ {children}
81
38
  </XyoEmbedPluginContext.Provider>
82
39
  )
83
40
  }
@@ -1,4 +1,3 @@
1
- import { XyoPayload } from '@xyo-network/payload'
2
1
  import { XyoPayloadRenderPlugin } from '@xyo-network/react-payload-plugin'
3
2
  import { ContextExState, ListMode } from '@xyo-network/react-shared'
4
3
  import { Dispatch, SetStateAction } from 'react'
@@ -23,6 +22,7 @@ export interface XyoEmbedPluginBase {
23
22
  plugins?: XyoPayloadRenderPlugin[]
24
23
  /** XyoEmbedPlugin component configuration */
25
24
  embedPluginConfig?: XyoPluginConfig
25
+ /** @deprecated use huriPayload */
26
26
  huri?: string
27
27
  refreshTitle?: string
28
28
  timestampLabel?: string
@@ -32,6 +32,4 @@ export interface XyoEmbedPluginBase {
32
32
  export interface XyoEmbedPluginState extends XyoEmbedPluginBase, ContextExState {
33
33
  activePlugin?: XyoPayloadRenderPlugin
34
34
  setActivePlugin?: Dispatch<SetStateAction<XyoPayloadRenderPlugin | undefined>>
35
- payload?: XyoPayload
36
- refreshHuri?: () => void
37
35
  }
@@ -1,2 +1,3 @@
1
+ export * from './ResolvePayloadContext'
1
2
  export * from './ValidatePayloadContext'
2
3
  export * from './XyoEmbedPluginContext'
@@ -1,8 +1,11 @@
1
1
  import { CardProps } from '@mui/material'
2
+ import { XyoPayload } from '@xyo-network/payload'
2
3
 
3
4
  import { EmbedPluginVisibilityConfig, XyoEmbedPluginBase } from '../contexts'
4
5
 
5
6
  export interface XyoEmbedPluginProps extends XyoEmbedPluginBase, CardProps {
7
+ /** string for huri to resolve and payload for bypassing huri resolution */
8
+ huriPayload?: string | XyoPayload
6
9
  validateSchema?: boolean
7
10
  hideElementsConfig?: EmbedPluginVisibilityConfig
8
11
  }