@iota/dapp-kit 0.10.3 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/cjs/components/AccountDropdownMenu.css +50 -16
  3. package/dist/cjs/components/AccountDropdownMenu.css.css +39 -16
  4. package/dist/cjs/components/AccountDropdownMenu.css.css.map +3 -3
  5. package/dist/cjs/components/AccountDropdownMenu.css.d.ts +3 -0
  6. package/dist/cjs/components/AccountDropdownMenu.css.d.ts.map +1 -1
  7. package/dist/cjs/components/AccountDropdownMenu.css.js +12 -6
  8. package/dist/cjs/components/AccountDropdownMenu.css.js.map +2 -2
  9. package/dist/cjs/components/AccountDropdownMenu.css.map +3 -3
  10. package/dist/cjs/components/AccountDropdownMenu.d.ts.map +1 -1
  11. package/dist/cjs/components/AccountDropdownMenu.js +184 -86
  12. package/dist/cjs/components/AccountDropdownMenu.js.map +4 -4
  13. package/dist/cjs/components/ConnectButton.css +50 -16
  14. package/dist/cjs/components/ConnectButton.css.map +3 -3
  15. package/dist/cjs/components/ConnectButton.js +259 -161
  16. package/dist/cjs/components/ConnectButton.js.map +4 -4
  17. package/dist/cjs/components/IotaNameNftImage.css +11 -0
  18. package/dist/cjs/components/IotaNameNftImage.css.css +11 -0
  19. package/dist/cjs/components/IotaNameNftImage.css.css.map +7 -0
  20. package/dist/cjs/components/IotaNameNftImage.css.d.ts +2 -0
  21. package/dist/cjs/components/IotaNameNftImage.css.d.ts.map +1 -0
  22. package/dist/cjs/components/IotaNameNftImage.css.js +27 -0
  23. package/dist/cjs/components/IotaNameNftImage.css.js.map +7 -0
  24. package/dist/cjs/components/IotaNameNftImage.css.map +7 -0
  25. package/dist/cjs/components/IotaNameNftImage.d.ts +8 -0
  26. package/dist/cjs/components/IotaNameNftImage.d.ts.map +1 -0
  27. package/dist/cjs/components/IotaNameNftImage.js +165 -0
  28. package/dist/cjs/components/IotaNameNftImage.js.map +7 -0
  29. package/dist/cjs/hooks/useGetDefaultIotaName.d.ts +1 -1
  30. package/dist/cjs/hooks/useGetDefaultIotaName.d.ts.map +1 -1
  31. package/dist/cjs/hooks/useGetDefaultIotaName.js +26 -16
  32. package/dist/cjs/hooks/useGetDefaultIotaName.js.map +4 -4
  33. package/dist/cjs/hooks/useGetIotaNameAvatar.d.ts +2 -0
  34. package/dist/cjs/hooks/useGetIotaNameAvatar.d.ts.map +1 -0
  35. package/dist/cjs/hooks/useGetIotaNameAvatar.js +144 -0
  36. package/dist/cjs/hooks/useGetIotaNameAvatar.js.map +7 -0
  37. package/dist/cjs/hooks/useIotaNamesClient.d.ts +7 -0
  38. package/dist/cjs/hooks/useIotaNamesClient.d.ts.map +1 -0
  39. package/dist/cjs/hooks/useIotaNamesClient.js +71 -0
  40. package/dist/cjs/hooks/useIotaNamesClient.js.map +7 -0
  41. package/dist/cjs/index.css +50 -16
  42. package/dist/cjs/index.css.map +3 -3
  43. package/dist/cjs/index.js +171 -76
  44. package/dist/cjs/index.js.map +4 -4
  45. package/dist/esm/components/AccountDropdownMenu.css +50 -16
  46. package/dist/esm/components/AccountDropdownMenu.css.css +39 -16
  47. package/dist/esm/components/AccountDropdownMenu.css.css.map +3 -3
  48. package/dist/esm/components/AccountDropdownMenu.css.d.ts +3 -0
  49. package/dist/esm/components/AccountDropdownMenu.css.d.ts.map +1 -1
  50. package/dist/esm/components/AccountDropdownMenu.css.js +12 -6
  51. package/dist/esm/components/AccountDropdownMenu.css.js.map +2 -2
  52. package/dist/esm/components/AccountDropdownMenu.css.map +3 -3
  53. package/dist/esm/components/AccountDropdownMenu.d.ts.map +1 -1
  54. package/dist/esm/components/AccountDropdownMenu.js +177 -79
  55. package/dist/esm/components/AccountDropdownMenu.js.map +4 -4
  56. package/dist/esm/components/ConnectButton.css +50 -16
  57. package/dist/esm/components/ConnectButton.css.map +3 -3
  58. package/dist/esm/components/ConnectButton.js +236 -138
  59. package/dist/esm/components/ConnectButton.js.map +4 -4
  60. package/dist/esm/components/IotaNameNftImage.css +11 -0
  61. package/dist/esm/components/IotaNameNftImage.css.css +11 -0
  62. package/dist/esm/components/IotaNameNftImage.css.css.map +7 -0
  63. package/dist/esm/components/IotaNameNftImage.css.d.ts +2 -0
  64. package/dist/esm/components/IotaNameNftImage.css.d.ts.map +1 -0
  65. package/dist/esm/components/IotaNameNftImage.css.js +6 -0
  66. package/dist/esm/components/IotaNameNftImage.css.js.map +7 -0
  67. package/dist/esm/components/IotaNameNftImage.css.map +7 -0
  68. package/dist/esm/components/IotaNameNftImage.d.ts +8 -0
  69. package/dist/esm/components/IotaNameNftImage.d.ts.map +1 -0
  70. package/dist/esm/components/IotaNameNftImage.js +144 -0
  71. package/dist/esm/components/IotaNameNftImage.js.map +7 -0
  72. package/dist/esm/hooks/useGetDefaultIotaName.d.ts +1 -1
  73. package/dist/esm/hooks/useGetDefaultIotaName.d.ts.map +1 -1
  74. package/dist/esm/hooks/useGetDefaultIotaName.js +26 -16
  75. package/dist/esm/hooks/useGetDefaultIotaName.js.map +4 -4
  76. package/dist/esm/hooks/useGetIotaNameAvatar.d.ts +2 -0
  77. package/dist/esm/hooks/useGetIotaNameAvatar.d.ts.map +1 -0
  78. package/dist/esm/hooks/useGetIotaNameAvatar.js +123 -0
  79. package/dist/esm/hooks/useGetIotaNameAvatar.js.map +7 -0
  80. package/dist/esm/hooks/useIotaNamesClient.d.ts +7 -0
  81. package/dist/esm/hooks/useIotaNamesClient.d.ts.map +1 -0
  82. package/dist/esm/hooks/useIotaNamesClient.js +50 -0
  83. package/dist/esm/hooks/useIotaNamesClient.js.map +7 -0
  84. package/dist/esm/index.css +50 -16
  85. package/dist/esm/index.css.map +3 -3
  86. package/dist/esm/index.js +142 -47
  87. package/dist/esm/index.js.map +4 -4
  88. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  89. package/dist/tsconfig.tsbuildinfo +1 -1
  90. package/package.json +4 -4
  91. package/src/components/AccountDropdownMenu.css.ts +24 -1
  92. package/src/components/AccountDropdownMenu.tsx +12 -2
  93. package/src/components/IotaNameNftImage.css.ts +14 -0
  94. package/src/components/IotaNameNftImage.tsx +30 -0
  95. package/src/hooks/useGetDefaultIotaName.ts +6 -22
  96. package/src/hooks/useGetIotaNameAvatar.ts +72 -0
  97. package/src/hooks/useIotaNamesClient.ts +29 -0
@@ -0,0 +1,144 @@
1
+ // src/components/IotaNameNftImage.tsx
2
+ import { useState as useState2 } from "react";
3
+
4
+ // src/hooks/useGetIotaNameAvatar.ts
5
+ import { getSubnameRegistrationType, isSubname, normalizeIotaName as normalizeIotaName2 } from "@iota/iota-names-sdk";
6
+ import { useQuery as useQuery2 } from "@tanstack/react-query";
7
+
8
+ // src/hooks/useGetDefaultIotaName.ts
9
+ import { normalizeIotaName } from "@iota/iota-names-sdk";
10
+ import { useQuery } from "@tanstack/react-query";
11
+
12
+ // src/hooks/useIotaNamesClient.ts
13
+ import { IotaGraphQLClient } from "@iota/iota-sdk/graphql";
14
+ import { IotaNamesClient } from "@iota/iota-names-sdk";
15
+ import { getNetwork as getNetwork2 } from "@iota/iota-sdk/client";
16
+ import { useMemo as useMemo2 } from "react";
17
+
18
+ // src/hooks/useIotaClient.ts
19
+ import { useContext } from "react";
20
+
21
+ // src/components/IotaClientProvider.tsx
22
+ import { getNetwork, isIotaClient, Network, IotaClient } from "@iota/iota-sdk/client";
23
+ import { createContext, useMemo, useState } from "react";
24
+ import { jsx } from "react/jsx-runtime";
25
+ var IotaClientContext = createContext(null);
26
+ var DEFAULT_NETWORKS = {
27
+ localnet: { url: getNetwork(Network.Localnet)?.url }
28
+ };
29
+
30
+ // src/hooks/useIotaClient.ts
31
+ function useIotaClientContext() {
32
+ const iotaClient = useContext(IotaClientContext);
33
+ if (!iotaClient) {
34
+ throw new Error(
35
+ "Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider"
36
+ );
37
+ }
38
+ return iotaClient;
39
+ }
40
+ function useIotaClient() {
41
+ return useIotaClientContext().client;
42
+ }
43
+
44
+ // src/hooks/useIotaNamesClient.ts
45
+ function useIotaNamesClient() {
46
+ const { network: networkId } = useIotaClientContext();
47
+ const network = getNetwork2(networkId);
48
+ const iotaNamesClient = useMemo2(() => {
49
+ if (!network.graphql) return null;
50
+ return new IotaNamesClient({
51
+ graphQlClient: new IotaGraphQLClient({ url: network.graphql }),
52
+ network: network.id
53
+ });
54
+ }, [network.id, network.graphql]);
55
+ return {
56
+ iotaNamesClient,
57
+ networkId: network.id,
58
+ isSupported: !!iotaNamesClient?.config
59
+ };
60
+ }
61
+
62
+ // src/hooks/useGetDefaultIotaName.ts
63
+ function useGetDefaultIotaName(address, iotaNamesEnabled) {
64
+ const { iotaNamesClient, networkId, isSupported } = useIotaNamesClient();
65
+ return useQuery({
66
+ queryKey: ["iota-name", "default-name", address, networkId],
67
+ queryFn: async () => {
68
+ if (!address) return null;
69
+ const name = await iotaNamesClient?.getPublicName(address);
70
+ return name ? normalizeIotaName(name) : name;
71
+ },
72
+ enabled: !!address && iotaNamesEnabled && isSupported,
73
+ staleTime: 1e3 * 60 * 10
74
+ });
75
+ }
76
+
77
+ // src/hooks/useGetIotaNameAvatar.ts
78
+ function useGetIotaNameAvatar(address, iotaNamesEnabled) {
79
+ const client = useIotaClient();
80
+ const { iotaNamesClient, networkId, isSupported } = useIotaNamesClient();
81
+ const { data: name } = useGetDefaultIotaName(address, iotaNamesEnabled);
82
+ return useQuery2({
83
+ // eslint-disable-next-line @tanstack/query/exhaustive-deps
84
+ queryKey: ["iota-name", "avatar", name, networkId],
85
+ queryFn: async () => {
86
+ if (!name || !address || !iotaNamesClient) return null;
87
+ const nameRecord = await iotaNamesClient.getNameRecord(name);
88
+ if (!nameRecord) return null;
89
+ const avatarObjectId = nameRecord.avatar ?? (isSubname(name) ? await findSubnameNftId() : nameRecord.nftId);
90
+ if (!avatarObjectId) return null;
91
+ const objectResponse = await client.getObject({
92
+ id: avatarObjectId,
93
+ options: { showDisplay: true }
94
+ });
95
+ return objectResponse?.data?.display?.data?.image_url ?? null;
96
+ async function findSubnameNftId() {
97
+ let subnameType;
98
+ try {
99
+ subnameType = getSubnameRegistrationType(
100
+ iotaNamesClient.getPackage("packageId", "v1")
101
+ );
102
+ } catch {
103
+ return null;
104
+ }
105
+ const { data } = await client.getOwnedObjects({
106
+ owner: address,
107
+ filter: { StructType: subnameType },
108
+ options: { showDisplay: true }
109
+ });
110
+ return data.find((object) => {
111
+ try {
112
+ return normalizeIotaName2(object.data?.display?.data?.name ?? "") === name;
113
+ } catch {
114
+ return false;
115
+ }
116
+ })?.data?.objectId ?? null;
117
+ }
118
+ },
119
+ enabled: iotaNamesEnabled && isSupported && !!name && !!address,
120
+ staleTime: 1e3 * 60 * 5
121
+ });
122
+ }
123
+
124
+ // src/components/IotaNameNftImage.css.ts
125
+ var image = "IotaNameNftImage_image__qs9r060";
126
+
127
+ // src/components/IotaNameNftImage.tsx
128
+ import { jsx as jsx2 } from "react/jsx-runtime";
129
+ function IotaNameNftImage({
130
+ address,
131
+ iotaNamesEnabled,
132
+ alt = "name NFT avatar"
133
+ }) {
134
+ const { data: imageUrl, isLoading } = useGetIotaNameAvatar(address, iotaNamesEnabled);
135
+ const [imgError, setImgError] = useState2(false);
136
+ if (!iotaNamesEnabled || isLoading || !imageUrl || imgError) {
137
+ return null;
138
+ }
139
+ return /* @__PURE__ */ jsx2("img", { src: imageUrl, alt, className: image, onError: () => setImgError(true) });
140
+ }
141
+ export {
142
+ IotaNameNftImage
143
+ };
144
+ //# sourceMappingURL=IotaNameNftImage.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/IotaNameNftImage.tsx", "../../../src/hooks/useGetIotaNameAvatar.ts", "../../../src/hooks/useGetDefaultIotaName.ts", "../../../src/hooks/useIotaNamesClient.ts", "../../../src/hooks/useIotaClient.ts", "../../../src/components/IotaClientProvider.tsx", "../../../src/components/IotaNameNftImage.css.ts"],
4
+ "sourcesContent": ["// Copyright (c) 2026 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useState } from 'react';\n\nimport { useGetIotaNameAvatar } from '../hooks/useGetIotaNameAvatar.js';\nimport * as styles from './IotaNameNftImage.css.js';\n\ninterface IotaNameNftImageProps {\n address: string | null | undefined;\n iotaNamesEnabled: boolean;\n alt?: string;\n}\n\nexport function IotaNameNftImage({\n address,\n iotaNamesEnabled,\n alt = 'name NFT avatar',\n}: IotaNameNftImageProps) {\n const { data: imageUrl, isLoading } = useGetIotaNameAvatar(address, iotaNamesEnabled);\n const [imgError, setImgError] = useState(false);\n\n if (!iotaNamesEnabled || isLoading || !imageUrl || imgError) {\n return null;\n }\n\n return (\n <img src={imageUrl} alt={alt} className={styles.image} onError={() => setImgError(true)} />\n );\n}\n", "// Copyright (c) 2026 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getSubnameRegistrationType, isSubname, normalizeIotaName } from '@iota/iota-names-sdk';\nimport { useQuery } from '@tanstack/react-query';\n\nimport { useGetDefaultIotaName } from './useGetDefaultIotaName.js';\nimport { useIotaClient } from './useIotaClient.js';\nimport { useIotaNamesClient } from './useIotaNamesClient.js';\n\nexport function useGetIotaNameAvatar(\n address: string | null | undefined,\n iotaNamesEnabled: boolean,\n) {\n const client = useIotaClient();\n const { iotaNamesClient, networkId, isSupported } = useIotaNamesClient();\n const { data: name } = useGetDefaultIotaName(address, iotaNamesEnabled);\n\n return useQuery({\n // eslint-disable-next-line @tanstack/query/exhaustive-deps\n queryKey: ['iota-name', 'avatar', name, networkId],\n queryFn: async () => {\n if (!name || !address || !iotaNamesClient) return null;\n\n const nameRecord = await iotaNamesClient.getNameRecord(name);\n if (!nameRecord) return null;\n\n const avatarObjectId =\n nameRecord.avatar ??\n (isSubname(name) ? await findSubnameNftId() : nameRecord.nftId);\n if (!avatarObjectId) return null;\n\n const objectResponse = await client.getObject({\n id: avatarObjectId,\n options: { showDisplay: true },\n });\n\n return objectResponse?.data?.display?.data?.image_url ?? null;\n\n async function findSubnameNftId() {\n let subnameType: string;\n try {\n subnameType = getSubnameRegistrationType(\n iotaNamesClient!.getPackage('packageId', 'v1'),\n );\n } catch {\n return null;\n }\n\n const { data } = await client.getOwnedObjects({\n owner: address!,\n filter: { StructType: subnameType },\n options: { showDisplay: true },\n });\n\n return (\n data.find((object) => {\n try {\n return (\n normalizeIotaName(object.data?.display?.data?.name ?? '') === name\n );\n } catch {\n return false;\n }\n })?.data?.objectId ?? null\n );\n }\n },\n enabled: iotaNamesEnabled && isSupported && !!name && !!address,\n staleTime: 1000 * 60 * 5,\n });\n}\n", "// Copyright (c) 2025 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { normalizeIotaName } from '@iota/iota-names-sdk';\nimport { useQuery } from '@tanstack/react-query';\n\nimport { useIotaNamesClient } from './useIotaNamesClient.js';\n\nexport function useGetDefaultIotaName(\n address: string | null | undefined,\n iotaNamesEnabled: boolean,\n) {\n const { iotaNamesClient, networkId, isSupported } = useIotaNamesClient();\n\n return useQuery({\n queryKey: ['iota-name', 'default-name', address, networkId],\n queryFn: async () => {\n if (!address) return null;\n\n const name = await iotaNamesClient?.getPublicName(address);\n\n return name ? normalizeIotaName(name) : name;\n },\n enabled: !!address && iotaNamesEnabled && isSupported,\n staleTime: 1000 * 60 * 10,\n });\n}\n", "// Copyright (c) 2026 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { IotaGraphQLClient } from '@iota/iota-sdk/graphql';\nimport { IotaNamesClient } from '@iota/iota-names-sdk';\nimport { getNetwork } from '@iota/iota-sdk/client';\nimport { useMemo } from 'react';\n\nimport { useIotaClientContext } from './useIotaClient.js';\n\nexport function useIotaNamesClient() {\n const { network: networkId } = useIotaClientContext();\n const network = getNetwork(networkId);\n\n const iotaNamesClient = useMemo(() => {\n if (!network.graphql) return null;\n\n return new IotaNamesClient({\n graphQlClient: new IotaGraphQLClient({ url: network.graphql }),\n network: network.id,\n });\n }, [network.id, network.graphql]);\n\n return {\n iotaNamesClient,\n networkId: network.id,\n isSupported: !!iotaNamesClient?.config,\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Localnet)?.url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n", "import 'src/components/IotaNameNftImage.css.ts.vanilla.css?source=LklvdGFOYW1lTmZ0SW1hZ2VfaW1hZ2VfX3FzOXIwNjAgewogIHdpZHRoOiAyNHB4OwogIGhlaWdodDogMjRweDsKICBmbGV4LXNocmluazogMDsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1kYXBwLWtpdC1yYWRpaS1mdWxsKTsKICBvYmplY3QtZml0OiBjb3ZlcjsKfQ==';\nexport var image = 'IotaNameNftImage_image__qs9r060';"],
5
+ "mappings": "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",
6
+ "names": ["useState", "normalizeIotaName", "useQuery", "getNetwork", "useMemo", "getNetwork", "useMemo", "useQuery", "normalizeIotaName", "jsx", "useState"]
7
+ }
@@ -1,2 +1,2 @@
1
- export declare function useGetDefaultIotaName(address: string | null | undefined, iotaNamesEnabled: boolean): import("@tanstack/react-query").UseQueryResult<string | null, Error>;
1
+ export declare function useGetDefaultIotaName(address: string | null | undefined, iotaNamesEnabled: boolean): import("@tanstack/react-query").UseQueryResult<string | null | undefined, Error>;
2
2
  //# sourceMappingURL=useGetDefaultIotaName.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGetDefaultIotaName.d.ts","sourceRoot":"","sources":["../../../src/hooks/useGetDefaultIotaName.ts"],"names":[],"mappings":"AAUA,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,gBAAgB,EAAE,OAAO,wEA8B5B"}
1
+ {"version":3,"file":"useGetDefaultIotaName.d.ts","sourceRoot":"","sources":["../../../src/hooks/useGetDefaultIotaName.ts"],"names":[],"mappings":"AAQA,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,gBAAgB,EAAE,OAAO,oFAgB5B"}
@@ -1,7 +1,12 @@
1
1
  // src/hooks/useGetDefaultIotaName.ts
2
- import { getNetwork as getNetwork2 } from "@iota/iota-sdk/client";
2
+ import { normalizeIotaName } from "@iota/iota-names-sdk";
3
3
  import { useQuery } from "@tanstack/react-query";
4
- import { IotaNamesClient, normalizeIotaName } from "@iota/iota-names-sdk";
4
+
5
+ // src/hooks/useIotaNamesClient.ts
6
+ import { IotaGraphQLClient } from "@iota/iota-sdk/graphql";
7
+ import { IotaNamesClient } from "@iota/iota-names-sdk";
8
+ import { getNetwork as getNetwork2 } from "@iota/iota-sdk/client";
9
+ import { useMemo as useMemo2 } from "react";
5
10
 
6
11
  // src/hooks/useIotaClient.ts
7
12
  import { useContext } from "react";
@@ -26,30 +31,35 @@ function useIotaClientContext() {
26
31
  return iotaClient;
27
32
  }
28
33
 
29
- // src/hooks/useGetDefaultIotaName.ts
30
- import { useMemo as useMemo2 } from "react";
31
- import { IotaGraphQLClient } from "@iota/iota-sdk/graphql";
32
- function useGetDefaultIotaName(address, iotaNamesEnabled) {
33
- const iotaContext = useIotaClientContext();
34
- const network = getNetwork2(iotaContext.network);
34
+ // src/hooks/useIotaNamesClient.ts
35
+ function useIotaNamesClient() {
36
+ const { network: networkId } = useIotaClientContext();
37
+ const network = getNetwork2(networkId);
35
38
  const iotaNamesClient = useMemo2(() => {
36
- const iotaGraphQLClient = new IotaGraphQLClient({
37
- url: network.graphql
38
- });
39
+ if (!network.graphql) return null;
39
40
  return new IotaNamesClient({
40
- graphQlClient: iotaGraphQLClient,
41
+ graphQlClient: new IotaGraphQLClient({ url: network.graphql }),
41
42
  network: network.id
42
43
  });
43
- }, [network.id]);
44
- const iotaNamesSupported = !!iotaNamesClient.config;
44
+ }, [network.id, network.graphql]);
45
+ return {
46
+ iotaNamesClient,
47
+ networkId: network.id,
48
+ isSupported: !!iotaNamesClient?.config
49
+ };
50
+ }
51
+
52
+ // src/hooks/useGetDefaultIotaName.ts
53
+ function useGetDefaultIotaName(address, iotaNamesEnabled) {
54
+ const { iotaNamesClient, networkId, isSupported } = useIotaNamesClient();
45
55
  return useQuery({
46
- queryKey: ["iota-name", "default-name", address],
56
+ queryKey: ["iota-name", "default-name", address, networkId],
47
57
  queryFn: async () => {
48
58
  if (!address) return null;
49
59
  const name = await iotaNamesClient?.getPublicName(address);
50
60
  return name ? normalizeIotaName(name) : name;
51
61
  },
52
- enabled: !!iotaNamesClient && !!address && iotaNamesEnabled && iotaNamesSupported,
62
+ enabled: !!address && iotaNamesEnabled && isSupported,
53
63
  staleTime: 1e3 * 60 * 10
54
64
  });
55
65
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/hooks/useGetDefaultIotaName.ts", "../../../src/hooks/useIotaClient.ts", "../../../src/components/IotaClientProvider.tsx"],
4
- "sourcesContent": ["// Copyright (c) 2025 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork } from '@iota/iota-sdk/client';\nimport { useQuery } from '@tanstack/react-query';\nimport { IotaNamesClient, normalizeIotaName } from '@iota/iota-names-sdk';\nimport { useIotaClientContext } from './useIotaClient.js';\nimport { useMemo } from 'react';\nimport { IotaGraphQLClient } from '@iota/iota-sdk/graphql';\n\nexport function useGetDefaultIotaName(\n address: string | null | undefined,\n iotaNamesEnabled: boolean,\n) {\n const iotaContext = useIotaClientContext();\n const network = getNetwork(iotaContext.network);\n\n const iotaNamesClient = useMemo(() => {\n const iotaGraphQLClient = new IotaGraphQLClient({\n url: network.graphql!,\n });\n\n return new IotaNamesClient({\n graphQlClient: iotaGraphQLClient,\n network: network.id,\n });\n }, [network.id]);\n\n const iotaNamesSupported = !!iotaNamesClient.config;\n\n return useQuery({\n queryKey: ['iota-name', 'default-name', address],\n queryFn: async () => {\n if (!address) return null;\n\n const name = await iotaNamesClient?.getPublicName(address);\n\n return name ? normalizeIotaName(name) : name;\n },\n enabled: !!iotaNamesClient && !!address && iotaNamesEnabled && iotaNamesSupported,\n staleTime: 1000 * 60 * 10,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Localnet)?.url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
5
- "mappings": ";AAGA,SAAS,cAAAA,mBAAkB;AAC3B,SAAS,gBAAgB;AACzB,SAAS,iBAAiB,yBAAyB;;;ACAnD,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,QAAQ,GAAG,IAAI;AACvD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;;;ADZA,SAAS,WAAAC,gBAAe;AACxB,SAAS,yBAAyB;AAE3B,SAAS,sBACZ,SACA,kBACF;AACE,QAAM,cAAc,qBAAqB;AACzC,QAAM,UAAUC,YAAW,YAAY,OAAO;AAE9C,QAAM,kBAAkBD,SAAQ,MAAM;AAClC,UAAM,oBAAoB,IAAI,kBAAkB;AAAA,MAC5C,KAAK,QAAQ;AAAA,IACjB,CAAC;AAED,WAAO,IAAI,gBAAgB;AAAA,MACvB,eAAe;AAAA,MACf,SAAS,QAAQ;AAAA,IACrB,CAAC;AAAA,EACL,GAAG,CAAC,QAAQ,EAAE,CAAC;AAEf,QAAM,qBAAqB,CAAC,CAAC,gBAAgB;AAE7C,SAAO,SAAS;AAAA,IACZ,UAAU,CAAC,aAAa,gBAAgB,OAAO;AAAA,IAC/C,SAAS,YAAY;AACjB,UAAI,CAAC,QAAS,QAAO;AAErB,YAAM,OAAO,MAAM,iBAAiB,cAAc,OAAO;AAEzD,aAAO,OAAO,kBAAkB,IAAI,IAAI;AAAA,IAC5C;AAAA,IACA,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC,WAAW,oBAAoB;AAAA,IAC/D,WAAW,MAAO,KAAK;AAAA,EAC3B,CAAC;AACL;",
6
- "names": ["getNetwork", "useMemo", "getNetwork"]
3
+ "sources": ["../../../src/hooks/useGetDefaultIotaName.ts", "../../../src/hooks/useIotaNamesClient.ts", "../../../src/hooks/useIotaClient.ts", "../../../src/components/IotaClientProvider.tsx"],
4
+ "sourcesContent": ["// Copyright (c) 2025 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { normalizeIotaName } from '@iota/iota-names-sdk';\nimport { useQuery } from '@tanstack/react-query';\n\nimport { useIotaNamesClient } from './useIotaNamesClient.js';\n\nexport function useGetDefaultIotaName(\n address: string | null | undefined,\n iotaNamesEnabled: boolean,\n) {\n const { iotaNamesClient, networkId, isSupported } = useIotaNamesClient();\n\n return useQuery({\n queryKey: ['iota-name', 'default-name', address, networkId],\n queryFn: async () => {\n if (!address) return null;\n\n const name = await iotaNamesClient?.getPublicName(address);\n\n return name ? normalizeIotaName(name) : name;\n },\n enabled: !!address && iotaNamesEnabled && isSupported,\n staleTime: 1000 * 60 * 10,\n });\n}\n", "// Copyright (c) 2026 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { IotaGraphQLClient } from '@iota/iota-sdk/graphql';\nimport { IotaNamesClient } from '@iota/iota-names-sdk';\nimport { getNetwork } from '@iota/iota-sdk/client';\nimport { useMemo } from 'react';\n\nimport { useIotaClientContext } from './useIotaClient.js';\n\nexport function useIotaNamesClient() {\n const { network: networkId } = useIotaClientContext();\n const network = getNetwork(networkId);\n\n const iotaNamesClient = useMemo(() => {\n if (!network.graphql) return null;\n\n return new IotaNamesClient({\n graphQlClient: new IotaGraphQLClient({ url: network.graphql }),\n network: network.id,\n });\n }, [network.id, network.graphql]);\n\n return {\n iotaNamesClient,\n networkId: network.id,\n isSupported: !!iotaNamesClient?.config,\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Localnet)?.url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
5
+ "mappings": ";AAGA,SAAS,yBAAyB;AAClC,SAAS,gBAAgB;;;ACDzB,SAAS,yBAAyB;AAClC,SAAS,uBAAuB;AAChC,SAAS,cAAAA,mBAAkB;AAC3B,SAAS,WAAAC,gBAAe;;;ACDxB,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,QAAQ,GAAG,IAAI;AACvD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;;;ADTO,SAAS,qBAAqB;AACjC,QAAM,EAAE,SAAS,UAAU,IAAI,qBAAqB;AACpD,QAAM,UAAUC,YAAW,SAAS;AAEpC,QAAM,kBAAkBC,SAAQ,MAAM;AAClC,QAAI,CAAC,QAAQ,QAAS,QAAO;AAE7B,WAAO,IAAI,gBAAgB;AAAA,MACvB,eAAe,IAAI,kBAAkB,EAAE,KAAK,QAAQ,QAAQ,CAAC;AAAA,MAC7D,SAAS,QAAQ;AAAA,IACrB,CAAC;AAAA,EACL,GAAG,CAAC,QAAQ,IAAI,QAAQ,OAAO,CAAC;AAEhC,SAAO;AAAA,IACH;AAAA,IACA,WAAW,QAAQ;AAAA,IACnB,aAAa,CAAC,CAAC,iBAAiB;AAAA,EACpC;AACJ;;;ADpBO,SAAS,sBACZ,SACA,kBACF;AACE,QAAM,EAAE,iBAAiB,WAAW,YAAY,IAAI,mBAAmB;AAEvE,SAAO,SAAS;AAAA,IACZ,UAAU,CAAC,aAAa,gBAAgB,SAAS,SAAS;AAAA,IAC1D,SAAS,YAAY;AACjB,UAAI,CAAC,QAAS,QAAO;AAErB,YAAM,OAAO,MAAM,iBAAiB,cAAc,OAAO;AAEzD,aAAO,OAAO,kBAAkB,IAAI,IAAI;AAAA,IAC5C;AAAA,IACA,SAAS,CAAC,CAAC,WAAW,oBAAoB;AAAA,IAC1C,WAAW,MAAO,KAAK;AAAA,EAC3B,CAAC;AACL;",
6
+ "names": ["getNetwork", "useMemo", "getNetwork", "useMemo"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ export declare function useGetIotaNameAvatar(address: string | null | undefined, iotaNamesEnabled: boolean): import("@tanstack/react-query").UseQueryResult<string | null, Error>;
2
+ //# sourceMappingURL=useGetIotaNameAvatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGetIotaNameAvatar.d.ts","sourceRoot":"","sources":["../../../src/hooks/useGetIotaNameAvatar.ts"],"names":[],"mappings":"AAUA,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,gBAAgB,EAAE,OAAO,wEA2D5B"}
@@ -0,0 +1,123 @@
1
+ // src/hooks/useGetIotaNameAvatar.ts
2
+ import { getSubnameRegistrationType, isSubname, normalizeIotaName as normalizeIotaName2 } from "@iota/iota-names-sdk";
3
+ import { useQuery as useQuery2 } from "@tanstack/react-query";
4
+
5
+ // src/hooks/useGetDefaultIotaName.ts
6
+ import { normalizeIotaName } from "@iota/iota-names-sdk";
7
+ import { useQuery } from "@tanstack/react-query";
8
+
9
+ // src/hooks/useIotaNamesClient.ts
10
+ import { IotaGraphQLClient } from "@iota/iota-sdk/graphql";
11
+ import { IotaNamesClient } from "@iota/iota-names-sdk";
12
+ import { getNetwork as getNetwork2 } from "@iota/iota-sdk/client";
13
+ import { useMemo as useMemo2 } from "react";
14
+
15
+ // src/hooks/useIotaClient.ts
16
+ import { useContext } from "react";
17
+
18
+ // src/components/IotaClientProvider.tsx
19
+ import { getNetwork, isIotaClient, Network, IotaClient } from "@iota/iota-sdk/client";
20
+ import { createContext, useMemo, useState } from "react";
21
+ import { jsx } from "react/jsx-runtime";
22
+ var IotaClientContext = createContext(null);
23
+ var DEFAULT_NETWORKS = {
24
+ localnet: { url: getNetwork(Network.Localnet)?.url }
25
+ };
26
+
27
+ // src/hooks/useIotaClient.ts
28
+ function useIotaClientContext() {
29
+ const iotaClient = useContext(IotaClientContext);
30
+ if (!iotaClient) {
31
+ throw new Error(
32
+ "Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider"
33
+ );
34
+ }
35
+ return iotaClient;
36
+ }
37
+ function useIotaClient() {
38
+ return useIotaClientContext().client;
39
+ }
40
+
41
+ // src/hooks/useIotaNamesClient.ts
42
+ function useIotaNamesClient() {
43
+ const { network: networkId } = useIotaClientContext();
44
+ const network = getNetwork2(networkId);
45
+ const iotaNamesClient = useMemo2(() => {
46
+ if (!network.graphql) return null;
47
+ return new IotaNamesClient({
48
+ graphQlClient: new IotaGraphQLClient({ url: network.graphql }),
49
+ network: network.id
50
+ });
51
+ }, [network.id, network.graphql]);
52
+ return {
53
+ iotaNamesClient,
54
+ networkId: network.id,
55
+ isSupported: !!iotaNamesClient?.config
56
+ };
57
+ }
58
+
59
+ // src/hooks/useGetDefaultIotaName.ts
60
+ function useGetDefaultIotaName(address, iotaNamesEnabled) {
61
+ const { iotaNamesClient, networkId, isSupported } = useIotaNamesClient();
62
+ return useQuery({
63
+ queryKey: ["iota-name", "default-name", address, networkId],
64
+ queryFn: async () => {
65
+ if (!address) return null;
66
+ const name = await iotaNamesClient?.getPublicName(address);
67
+ return name ? normalizeIotaName(name) : name;
68
+ },
69
+ enabled: !!address && iotaNamesEnabled && isSupported,
70
+ staleTime: 1e3 * 60 * 10
71
+ });
72
+ }
73
+
74
+ // src/hooks/useGetIotaNameAvatar.ts
75
+ function useGetIotaNameAvatar(address, iotaNamesEnabled) {
76
+ const client = useIotaClient();
77
+ const { iotaNamesClient, networkId, isSupported } = useIotaNamesClient();
78
+ const { data: name } = useGetDefaultIotaName(address, iotaNamesEnabled);
79
+ return useQuery2({
80
+ // eslint-disable-next-line @tanstack/query/exhaustive-deps
81
+ queryKey: ["iota-name", "avatar", name, networkId],
82
+ queryFn: async () => {
83
+ if (!name || !address || !iotaNamesClient) return null;
84
+ const nameRecord = await iotaNamesClient.getNameRecord(name);
85
+ if (!nameRecord) return null;
86
+ const avatarObjectId = nameRecord.avatar ?? (isSubname(name) ? await findSubnameNftId() : nameRecord.nftId);
87
+ if (!avatarObjectId) return null;
88
+ const objectResponse = await client.getObject({
89
+ id: avatarObjectId,
90
+ options: { showDisplay: true }
91
+ });
92
+ return objectResponse?.data?.display?.data?.image_url ?? null;
93
+ async function findSubnameNftId() {
94
+ let subnameType;
95
+ try {
96
+ subnameType = getSubnameRegistrationType(
97
+ iotaNamesClient.getPackage("packageId", "v1")
98
+ );
99
+ } catch {
100
+ return null;
101
+ }
102
+ const { data } = await client.getOwnedObjects({
103
+ owner: address,
104
+ filter: { StructType: subnameType },
105
+ options: { showDisplay: true }
106
+ });
107
+ return data.find((object) => {
108
+ try {
109
+ return normalizeIotaName2(object.data?.display?.data?.name ?? "") === name;
110
+ } catch {
111
+ return false;
112
+ }
113
+ })?.data?.objectId ?? null;
114
+ }
115
+ },
116
+ enabled: iotaNamesEnabled && isSupported && !!name && !!address,
117
+ staleTime: 1e3 * 60 * 5
118
+ });
119
+ }
120
+ export {
121
+ useGetIotaNameAvatar
122
+ };
123
+ //# sourceMappingURL=useGetIotaNameAvatar.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/useGetIotaNameAvatar.ts", "../../../src/hooks/useGetDefaultIotaName.ts", "../../../src/hooks/useIotaNamesClient.ts", "../../../src/hooks/useIotaClient.ts", "../../../src/components/IotaClientProvider.tsx"],
4
+ "sourcesContent": ["// Copyright (c) 2026 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getSubnameRegistrationType, isSubname, normalizeIotaName } from '@iota/iota-names-sdk';\nimport { useQuery } from '@tanstack/react-query';\n\nimport { useGetDefaultIotaName } from './useGetDefaultIotaName.js';\nimport { useIotaClient } from './useIotaClient.js';\nimport { useIotaNamesClient } from './useIotaNamesClient.js';\n\nexport function useGetIotaNameAvatar(\n address: string | null | undefined,\n iotaNamesEnabled: boolean,\n) {\n const client = useIotaClient();\n const { iotaNamesClient, networkId, isSupported } = useIotaNamesClient();\n const { data: name } = useGetDefaultIotaName(address, iotaNamesEnabled);\n\n return useQuery({\n // eslint-disable-next-line @tanstack/query/exhaustive-deps\n queryKey: ['iota-name', 'avatar', name, networkId],\n queryFn: async () => {\n if (!name || !address || !iotaNamesClient) return null;\n\n const nameRecord = await iotaNamesClient.getNameRecord(name);\n if (!nameRecord) return null;\n\n const avatarObjectId =\n nameRecord.avatar ??\n (isSubname(name) ? await findSubnameNftId() : nameRecord.nftId);\n if (!avatarObjectId) return null;\n\n const objectResponse = await client.getObject({\n id: avatarObjectId,\n options: { showDisplay: true },\n });\n\n return objectResponse?.data?.display?.data?.image_url ?? null;\n\n async function findSubnameNftId() {\n let subnameType: string;\n try {\n subnameType = getSubnameRegistrationType(\n iotaNamesClient!.getPackage('packageId', 'v1'),\n );\n } catch {\n return null;\n }\n\n const { data } = await client.getOwnedObjects({\n owner: address!,\n filter: { StructType: subnameType },\n options: { showDisplay: true },\n });\n\n return (\n data.find((object) => {\n try {\n return (\n normalizeIotaName(object.data?.display?.data?.name ?? '') === name\n );\n } catch {\n return false;\n }\n })?.data?.objectId ?? null\n );\n }\n },\n enabled: iotaNamesEnabled && isSupported && !!name && !!address,\n staleTime: 1000 * 60 * 5,\n });\n}\n", "// Copyright (c) 2025 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { normalizeIotaName } from '@iota/iota-names-sdk';\nimport { useQuery } from '@tanstack/react-query';\n\nimport { useIotaNamesClient } from './useIotaNamesClient.js';\n\nexport function useGetDefaultIotaName(\n address: string | null | undefined,\n iotaNamesEnabled: boolean,\n) {\n const { iotaNamesClient, networkId, isSupported } = useIotaNamesClient();\n\n return useQuery({\n queryKey: ['iota-name', 'default-name', address, networkId],\n queryFn: async () => {\n if (!address) return null;\n\n const name = await iotaNamesClient?.getPublicName(address);\n\n return name ? normalizeIotaName(name) : name;\n },\n enabled: !!address && iotaNamesEnabled && isSupported,\n staleTime: 1000 * 60 * 10,\n });\n}\n", "// Copyright (c) 2026 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { IotaGraphQLClient } from '@iota/iota-sdk/graphql';\nimport { IotaNamesClient } from '@iota/iota-names-sdk';\nimport { getNetwork } from '@iota/iota-sdk/client';\nimport { useMemo } from 'react';\n\nimport { useIotaClientContext } from './useIotaClient.js';\n\nexport function useIotaNamesClient() {\n const { network: networkId } = useIotaClientContext();\n const network = getNetwork(networkId);\n\n const iotaNamesClient = useMemo(() => {\n if (!network.graphql) return null;\n\n return new IotaNamesClient({\n graphQlClient: new IotaGraphQLClient({ url: network.graphql }),\n network: network.id,\n });\n }, [network.id, network.graphql]);\n\n return {\n iotaNamesClient,\n networkId: network.id,\n isSupported: !!iotaNamesClient?.config,\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Localnet)?.url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["normalizeIotaName", "useQuery", "getNetwork", "useMemo", "getNetwork", "useMemo", "useQuery", "normalizeIotaName"]
7
+ }
@@ -0,0 +1,7 @@
1
+ import { IotaNamesClient } from '@iota/iota-names-sdk';
2
+ export declare function useIotaNamesClient(): {
3
+ iotaNamesClient: IotaNamesClient | null;
4
+ networkId: import("@iota/iota-sdk/client").Network;
5
+ isSupported: boolean;
6
+ };
7
+ //# sourceMappingURL=useIotaNamesClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIotaNamesClient.d.ts","sourceRoot":"","sources":["../../../src/hooks/useIotaNamesClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,wBAAgB,kBAAkB;;;;EAkBjC"}
@@ -0,0 +1,50 @@
1
+ // src/hooks/useIotaNamesClient.ts
2
+ import { IotaGraphQLClient } from "@iota/iota-sdk/graphql";
3
+ import { IotaNamesClient } from "@iota/iota-names-sdk";
4
+ import { getNetwork as getNetwork2 } from "@iota/iota-sdk/client";
5
+ import { useMemo as useMemo2 } from "react";
6
+
7
+ // src/hooks/useIotaClient.ts
8
+ import { useContext } from "react";
9
+
10
+ // src/components/IotaClientProvider.tsx
11
+ import { getNetwork, isIotaClient, Network, IotaClient } from "@iota/iota-sdk/client";
12
+ import { createContext, useMemo, useState } from "react";
13
+ import { jsx } from "react/jsx-runtime";
14
+ var IotaClientContext = createContext(null);
15
+ var DEFAULT_NETWORKS = {
16
+ localnet: { url: getNetwork(Network.Localnet)?.url }
17
+ };
18
+
19
+ // src/hooks/useIotaClient.ts
20
+ function useIotaClientContext() {
21
+ const iotaClient = useContext(IotaClientContext);
22
+ if (!iotaClient) {
23
+ throw new Error(
24
+ "Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider"
25
+ );
26
+ }
27
+ return iotaClient;
28
+ }
29
+
30
+ // src/hooks/useIotaNamesClient.ts
31
+ function useIotaNamesClient() {
32
+ const { network: networkId } = useIotaClientContext();
33
+ const network = getNetwork2(networkId);
34
+ const iotaNamesClient = useMemo2(() => {
35
+ if (!network.graphql) return null;
36
+ return new IotaNamesClient({
37
+ graphQlClient: new IotaGraphQLClient({ url: network.graphql }),
38
+ network: network.id
39
+ });
40
+ }, [network.id, network.graphql]);
41
+ return {
42
+ iotaNamesClient,
43
+ networkId: network.id,
44
+ isSupported: !!iotaNamesClient?.config
45
+ };
46
+ }
47
+ export {
48
+ useIotaNamesClient
49
+ };
50
+ //# sourceMappingURL=useIotaNamesClient.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/useIotaNamesClient.ts", "../../../src/hooks/useIotaClient.ts", "../../../src/components/IotaClientProvider.tsx"],
4
+ "sourcesContent": ["// Copyright (c) 2026 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { IotaGraphQLClient } from '@iota/iota-sdk/graphql';\nimport { IotaNamesClient } from '@iota/iota-names-sdk';\nimport { getNetwork } from '@iota/iota-sdk/client';\nimport { useMemo } from 'react';\n\nimport { useIotaClientContext } from './useIotaClient.js';\n\nexport function useIotaNamesClient() {\n const { network: networkId } = useIotaClientContext();\n const network = getNetwork(networkId);\n\n const iotaNamesClient = useMemo(() => {\n if (!network.graphql) return null;\n\n return new IotaNamesClient({\n graphQlClient: new IotaGraphQLClient({ url: network.graphql }),\n network: network.id,\n });\n }, [network.id, network.graphql]);\n\n return {\n iotaNamesClient,\n networkId: network.id,\n isSupported: !!iotaNamesClient?.config,\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Localnet)?.url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
5
+ "mappings": ";AAGA,SAAS,yBAAyB;AAClC,SAAS,uBAAuB;AAChC,SAAS,cAAAA,mBAAkB;AAC3B,SAAS,WAAAC,gBAAe;;;ACDxB,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,QAAQ,GAAG,IAAI;AACvD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;;;ADTO,SAAS,qBAAqB;AACjC,QAAM,EAAE,SAAS,UAAU,IAAI,qBAAqB;AACpD,QAAM,UAAUC,YAAW,SAAS;AAEpC,QAAM,kBAAkBC,SAAQ,MAAM;AAClC,QAAI,CAAC,QAAQ,QAAS,QAAO;AAE7B,WAAO,IAAI,gBAAgB;AAAA,MACvB,eAAe,IAAI,kBAAkB,EAAE,KAAK,QAAQ,QAAQ,CAAC;AAAA,MAC7D,SAAS,QAAQ;AAAA,IACrB,CAAC;AAAA,EACL,GAAG,CAAC,QAAQ,IAAI,QAAQ,OAAO,CAAC;AAEhC,SAAO;AAAA,IACH;AAAA,IACA,WAAW,QAAQ;AAAA,IACnB,aAAa,CAAC,CAAC,iBAAiB;AAAA,EACpC;AACJ;",
6
+ "names": ["getNetwork", "useMemo", "getNetwork", "useMemo"]
7
+ }