@xyo-network/react-module 2.56.2 → 2.56.4

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 (73) hide show
  1. package/dist/cjs/components/Card/Module/CardActions.js +1 -1
  2. package/dist/cjs/components/Card/Module/CardActions.js.map +1 -1
  3. package/dist/cjs/components/Card/Module/CardHeader.js +4 -6
  4. package/dist/cjs/components/Card/Module/CardHeader.js.map +1 -1
  5. package/dist/cjs/components/Card/Module/components/DiscoverDialog.js +1 -1
  6. package/dist/cjs/components/Card/Module/components/DiscoverDialog.js.map +1 -1
  7. package/dist/cjs/components/DetailsBox.js +7 -9
  8. package/dist/cjs/components/DetailsBox.js.map +1 -1
  9. package/dist/cjs/components/TableCell.js +1 -3
  10. package/dist/cjs/components/TableCell.js.map +1 -1
  11. package/dist/cjs/hooks/WrappedModuleHookFactory.js +36 -0
  12. package/dist/cjs/hooks/WrappedModuleHookFactory.js.map +1 -0
  13. package/dist/cjs/hooks/WrappedModulesHookFactory.js +36 -0
  14. package/dist/cjs/hooks/WrappedModulesHookFactory.js.map +1 -0
  15. package/dist/cjs/hooks/index.js +4 -0
  16. package/dist/cjs/hooks/index.js.map +1 -1
  17. package/dist/cjs/hooks/useRefresh.js +18 -0
  18. package/dist/cjs/hooks/useRefresh.js.map +1 -0
  19. package/dist/cjs/hooks/useWrappedModule.js +3 -33
  20. package/dist/cjs/hooks/useWrappedModule.js.map +1 -1
  21. package/dist/cjs/hooks/useWrappedModules.js +7 -0
  22. package/dist/cjs/hooks/useWrappedModules.js.map +1 -0
  23. package/dist/cjs/index.js +1 -0
  24. package/dist/cjs/index.js.map +1 -1
  25. package/dist/docs.json +5297 -793
  26. package/dist/esm/components/Card/Module/CardHeader.js +4 -6
  27. package/dist/esm/components/Card/Module/CardHeader.js.map +1 -1
  28. package/dist/esm/components/DetailsBox.js +6 -8
  29. package/dist/esm/components/DetailsBox.js.map +1 -1
  30. package/dist/esm/components/TableCell.js +1 -3
  31. package/dist/esm/components/TableCell.js.map +1 -1
  32. package/dist/esm/hooks/WrappedModuleHookFactory.js +33 -0
  33. package/dist/esm/hooks/WrappedModuleHookFactory.js.map +1 -0
  34. package/dist/esm/hooks/WrappedModulesHookFactory.js +33 -0
  35. package/dist/esm/hooks/WrappedModulesHookFactory.js.map +1 -0
  36. package/dist/esm/hooks/index.js +4 -0
  37. package/dist/esm/hooks/index.js.map +1 -1
  38. package/dist/esm/hooks/useRefresh.js +14 -0
  39. package/dist/esm/hooks/useRefresh.js.map +1 -0
  40. package/dist/esm/hooks/useWrappedModule.js +2 -31
  41. package/dist/esm/hooks/useWrappedModule.js.map +1 -1
  42. package/dist/esm/hooks/useWrappedModules.js +4 -0
  43. package/dist/esm/hooks/useWrappedModules.js.map +1 -0
  44. package/dist/esm/index.js +1 -0
  45. package/dist/esm/index.js.map +1 -1
  46. package/dist/types/components/Card/Module/CardHeader.d.ts.map +1 -1
  47. package/dist/types/components/DetailsBox.d.ts.map +1 -1
  48. package/dist/types/components/TableCell.d.ts.map +1 -1
  49. package/dist/types/hooks/WrappedModuleHookFactory.d.ts +35 -0
  50. package/dist/types/hooks/WrappedModuleHookFactory.d.ts.map +1 -0
  51. package/dist/types/hooks/WrappedModulesHookFactory.d.ts +35 -0
  52. package/dist/types/hooks/WrappedModulesHookFactory.d.ts.map +1 -0
  53. package/dist/types/hooks/index.d.ts +4 -0
  54. package/dist/types/hooks/index.d.ts.map +1 -1
  55. package/dist/types/hooks/useRefresh.d.ts +4 -0
  56. package/dist/types/hooks/useRefresh.d.ts.map +1 -0
  57. package/dist/types/hooks/useWrappedModule.d.ts +58 -5
  58. package/dist/types/hooks/useWrappedModule.d.ts.map +1 -1
  59. package/dist/types/hooks/useWrappedModules.d.ts +59 -0
  60. package/dist/types/hooks/useWrappedModules.d.ts.map +1 -0
  61. package/dist/types/index.d.ts +1 -0
  62. package/dist/types/index.d.ts.map +1 -1
  63. package/package.json +15 -15
  64. package/src/components/Card/Module/CardHeader.tsx +6 -8
  65. package/src/components/DetailsBox.tsx +7 -8
  66. package/src/components/TableCell.tsx +1 -3
  67. package/src/hooks/WrappedModuleHookFactory.tsx +41 -0
  68. package/src/hooks/WrappedModulesHookFactory.tsx +41 -0
  69. package/src/hooks/index.ts +4 -0
  70. package/src/hooks/useRefresh.tsx +17 -0
  71. package/src/hooks/useWrappedModule.tsx +3 -38
  72. package/src/hooks/useWrappedModules.tsx +5 -0
  73. package/src/index.ts +1 -0
@@ -1,26 +1,24 @@
1
1
  import { CardHeader, CardHeaderProps } from '@mui/material'
2
- import { ModuleWrapper } from '@xyo-network/module'
2
+ import { Module } from '@xyo-network/module'
3
3
  import { findNetworkComponent } from '@xyo-network/react-shared'
4
4
 
5
5
  import { ModuleRenderProps } from '../../../ModuleRenderProps'
6
6
 
7
- const getModuleIcons = (moduleType: string, wrapper: ModuleWrapper) => {
8
- return wrapper?.queries.find((query) => query.startsWith(`network.xyo.query.${moduleType}`)) ? findNetworkComponent(moduleType)?.icon : null
7
+ const getModuleIcons = (moduleType: string, module: Module) => {
8
+ return module?.queries.find((query) => query.startsWith(`network.xyo.query.${moduleType}`)) ? findNetworkComponent(moduleType)?.icon : null
9
9
  }
10
10
 
11
11
  export const ModuleCardHeader: React.FC<ModuleRenderProps & CardHeaderProps> = ({ subheader, avatar, title, module, ...props }) => {
12
- const wrapper = module ? ModuleWrapper.wrap(module) : undefined
13
-
14
12
  return (
15
13
  <CardHeader
16
14
  title={title ?? module?.config.name ?? 'Module'}
17
- subheader={subheader ?? wrapper?.address}
15
+ subheader={subheader ?? module?.address}
18
16
  avatar={
19
17
  avatar ?? (
20
18
  <>
21
- {wrapper
19
+ {module
22
20
  ? ['sentinel', 'bridge', 'archivist', 'diviner', 'node', 'witness'].map((moduleType) => {
23
- const Icon = getModuleIcons(moduleType, wrapper)
21
+ const Icon = getModuleIcons(moduleType, module)
24
22
  return Icon ? <Icon fontSize={'large'} color="primary" /> : null
25
23
  })
26
24
  : null}
@@ -2,25 +2,24 @@ import { EthAddress } from '@xylabs/eth-address'
2
2
  import { ButtonEx } from '@xylabs/react-button'
3
3
  import { EthAccountBox } from '@xylabs/react-crypto'
4
4
  import { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'
5
- import { ModuleWrapper } from '@xyo-network/module'
5
+ import { Module } from '@xyo-network/module'
6
6
  import { findNetworkComponent } from '@xyo-network/react-shared'
7
7
  import { useState } from 'react'
8
8
 
9
9
  import { ModuleRenderProps } from '../ModuleRenderProps'
10
10
 
11
- const getModuleIcon = (moduleType: string, wrapper: ModuleWrapper) => {
12
- return wrapper?.queries.find((query) => query.startsWith(`network.xyo.query.${moduleType}`)) ? findNetworkComponent(moduleType)?.icon() : null
11
+ const getModuleIcon = (moduleType: string, module: Module) => {
12
+ return module?.queries.find((query) => query.startsWith(`network.xyo.query.${moduleType}`)) ? findNetworkComponent(moduleType)?.icon() : null
13
13
  }
14
14
 
15
15
  export const ModuleDetailsBox: React.FC<ModuleRenderProps & FlexBoxProps> = ({ children, module, ...props }) => {
16
- const wrapper = module ? ModuleWrapper.wrap(module) : undefined
17
16
  const [showQueries, setShowQueries] = useState(false)
18
17
  return (
19
18
  <FlexCol {...props}>
20
19
  <FlexRow>
21
- {wrapper
20
+ {module
22
21
  ? ['sentinel', 'bridge', 'archivist', 'diviner', 'node'].map((moduleType) => {
23
- const icon = getModuleIcon(moduleType, wrapper)
22
+ const icon = getModuleIcon(moduleType, module)
24
23
  return icon ? (
25
24
  <ButtonEx onClick={() => setShowQueries(!showQueries)} key={moduleType}>
26
25
  {icon}
@@ -28,11 +27,11 @@ export const ModuleDetailsBox: React.FC<ModuleRenderProps & FlexBoxProps> = ({ c
28
27
  ) : null
29
28
  })
30
29
  : null}
31
- <EthAccountBox address={EthAddress.fromString(wrapper?.address)} />
30
+ <EthAccountBox address={EthAddress.fromString(module?.address)} />
32
31
  </FlexRow>
33
32
 
34
33
  {showQueries
35
- ? wrapper?.queries.map((query) => {
34
+ ? module?.queries.map((query) => {
36
35
  return <FlexRow key={query}>{query}</FlexRow>
37
36
  })
38
37
  : null}
@@ -1,15 +1,13 @@
1
1
  import { TableCell, TableCellProps } from '@mui/material'
2
2
  import { EthAddress } from '@xylabs/eth-address'
3
3
  import { EthAccountBox } from '@xylabs/react-crypto'
4
- import { ModuleWrapper } from '@xyo-network/module'
5
4
 
6
5
  import { ModuleRenderProps } from '../ModuleRenderProps'
7
6
 
8
7
  export const ModuleTableCell: React.FC<ModuleRenderProps & TableCellProps> = ({ children, module, ...props }) => {
9
- const wrapper = module ? ModuleWrapper.wrap(module) : undefined
10
8
  return (
11
9
  <TableCell {...props}>
12
- <EthAccountBox address={EthAddress.fromString(wrapper?.address)} />
10
+ <EthAccountBox address={EthAddress.fromString(module?.address)} />
13
11
  {children}
14
12
  </TableCell>
15
13
  )
@@ -0,0 +1,41 @@
1
+ import { AccountInstance } from '@xyo-network/account-model'
2
+ import { Logger } from '@xyo-network/core'
3
+ import { ConstructableModuleWrapper, ModuleWrapper } from '@xyo-network/module'
4
+ import { useWrapperAccount } from '@xyo-network/react-wallet'
5
+ import { useEffect, useState } from 'react'
6
+
7
+ export const WrappedModuleHookFactory = {
8
+ create: <TModuleWrapper extends ModuleWrapper>(wrapperObject: ConstructableModuleWrapper<TModuleWrapper>, name?: string) => {
9
+ const useHook = (
10
+ module?: TModuleWrapper['module'] | null,
11
+ account?: AccountInstance | null,
12
+ logger?: Logger,
13
+ ): [TModuleWrapper | undefined, Error | undefined] => {
14
+ logger?.debug(`Render: ${name}`)
15
+ const [wrapperAccount] = useWrapperAccount()
16
+
17
+ const [wrapper, setWrapper] = useState<TModuleWrapper>()
18
+ const [error, setError] = useState<Error>()
19
+
20
+ useEffect(() => {
21
+ const walletToUse = account || wrapperAccount
22
+ if (module && walletToUse) {
23
+ try {
24
+ const wrapper = wrapperObject.wrap(module, walletToUse)
25
+ setWrapper(wrapper)
26
+ setError(undefined)
27
+ } catch (ex) {
28
+ setWrapper(undefined)
29
+ setError(ex as Error)
30
+ }
31
+ } else {
32
+ setWrapper(undefined)
33
+ setError(undefined)
34
+ }
35
+ }, [module, account, wrapperAccount])
36
+
37
+ return [wrapper, error]
38
+ }
39
+ return useHook
40
+ },
41
+ }
@@ -0,0 +1,41 @@
1
+ import { AccountInstance } from '@xyo-network/account-model'
2
+ import { Logger } from '@xyo-network/core'
3
+ import { ConstructableModuleWrapper, ModuleWrapper } from '@xyo-network/module'
4
+ import { useWrapperAccount } from '@xyo-network/react-wallet'
5
+ import { useEffect, useState } from 'react'
6
+
7
+ export const WrappedModulesHookFactory = {
8
+ create: <TModuleWrapper extends ModuleWrapper>(wrapperObject: ConstructableModuleWrapper<TModuleWrapper>, name?: string) => {
9
+ const useHook = (
10
+ modules?: TModuleWrapper['module'][],
11
+ account?: AccountInstance,
12
+ logger?: Logger,
13
+ ): [TModuleWrapper[] | undefined, Error | undefined] => {
14
+ logger?.debug(`Render: ${name}`)
15
+ const [wrapperAccount] = useWrapperAccount()
16
+
17
+ const [wrappers, setWrappers] = useState<TModuleWrapper[]>()
18
+ const [error, setError] = useState<Error>()
19
+
20
+ useEffect(() => {
21
+ const walletToUse = account || wrapperAccount
22
+ if (module && walletToUse) {
23
+ try {
24
+ const wrappers = modules?.map((module) => wrapperObject.wrap(module, walletToUse))
25
+ setWrappers(wrappers)
26
+ setError(undefined)
27
+ } catch (ex) {
28
+ setWrappers(undefined)
29
+ setError(ex as Error)
30
+ }
31
+ } else {
32
+ setWrappers(undefined)
33
+ setError(undefined)
34
+ }
35
+ }, [modules, account, wrapperAccount])
36
+
37
+ return [wrappers, error]
38
+ }
39
+ return useHook
40
+ },
41
+ }
@@ -1 +1,5 @@
1
+ export * from './useRefresh'
1
2
  export * from './useWrappedModule'
3
+ export * from './useWrappedModules'
4
+ export * from './WrappedModuleHookFactory'
5
+ export * from './WrappedModulesHookFactory'
@@ -0,0 +1,17 @@
1
+ import { useState } from 'react'
2
+
3
+ export type RefreshCallback = () => boolean
4
+ export type DisableCallback = () => void
5
+
6
+ export const useRefresh = (): [boolean, RefreshCallback, DisableCallback] => {
7
+ const [enabled, setEnabled] = useState(1)
8
+ return [
9
+ !!enabled,
10
+ () => {
11
+ const enabledCount = enabled + 1
12
+ setEnabled(enabledCount)
13
+ return !!enabledCount
14
+ },
15
+ () => setEnabled(0),
16
+ ]
17
+ }
@@ -1,40 +1,5 @@
1
- import { Logger } from '@xyo-network/core'
2
- import { ConstructableModuleWrapper, Module, ModuleWrapper } from '@xyo-network/module'
3
- import { useWrapperWallet } from '@xyo-network/react-wallet'
4
- import { WalletInstance } from '@xyo-network/wallet-model'
5
- import { useEffect, useState } from 'react'
1
+ import { ModuleWrapper } from '@xyo-network/module'
6
2
 
7
- export const WrappedModuleHookFactory = <TModuleWrapper extends ModuleWrapper>(
8
- wrapperObject: ConstructableModuleWrapper<TModuleWrapper>,
9
- name?: string,
10
- ) => {
11
- const useHook = (module?: Module, wallet?: WalletInstance, logger?: Logger): [TModuleWrapper | undefined, Error | undefined] => {
12
- logger?.debug(`Render: ${name}`)
13
- const wrapperWallet = useWrapperWallet()
3
+ import { WrappedModuleHookFactory } from './WrappedModuleHookFactory'
14
4
 
15
- const [wrapper, setWrapper] = useState<TModuleWrapper>()
16
- const [error, setError] = useState<Error>()
17
-
18
- useEffect(() => {
19
- const walletToUse = wallet || wrapperWallet
20
- if (module && walletToUse) {
21
- try {
22
- const wrapper = wrapperObject.wrap(module, walletToUse)
23
- setWrapper(wrapper)
24
- setError(undefined)
25
- } catch (ex) {
26
- setWrapper(undefined)
27
- setError(ex as Error)
28
- }
29
- } else {
30
- setWrapper(undefined)
31
- setError(undefined)
32
- }
33
- }, [module, wallet, wrapperWallet])
34
-
35
- return [wrapper, error]
36
- }
37
- return useHook
38
- }
39
-
40
- export const useWrappedModule = WrappedModuleHookFactory(ModuleWrapper, 'useWrappedModule')
5
+ export const useWrappedModule = WrappedModuleHookFactory.create(ModuleWrapper, 'useWrappedModule')
@@ -0,0 +1,5 @@
1
+ import { ModuleWrapper } from '@xyo-network/module'
2
+
3
+ import { WrappedModulesHookFactory } from './WrappedModulesHookFactory'
4
+
5
+ export const useWrappedModules = WrappedModulesHookFactory.create(ModuleWrapper, 'useWrappedModules')
package/src/index.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './components'
2
+ export * from './hooks'
2
3
  export * from './ModuleRenderProps'