thirdweb 5.71.0 → 5.72.0-nightly-a98550d229e7fd124e1977fcc64dbd1b602ce656-20241126000403

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 (45) hide show
  1. package/dist/cjs/exports/react.js +8 -1
  2. package/dist/cjs/exports/react.js.map +1 -1
  3. package/dist/cjs/react/web/ui/prebuilt/Chain/icon.js +96 -0
  4. package/dist/cjs/react/web/ui/prebuilt/Chain/icon.js.map +1 -0
  5. package/dist/cjs/react/web/ui/prebuilt/Chain/name.js +124 -0
  6. package/dist/cjs/react/web/ui/prebuilt/Chain/name.js.map +1 -0
  7. package/dist/cjs/react/web/ui/prebuilt/Chain/provider.js +54 -0
  8. package/dist/cjs/react/web/ui/prebuilt/Chain/provider.js.map +1 -0
  9. package/dist/cjs/react/web/ui/prebuilt/Token/icon.js.map +1 -1
  10. package/dist/cjs/version.js +1 -1
  11. package/dist/cjs/version.js.map +1 -1
  12. package/dist/esm/exports/react.js +4 -0
  13. package/dist/esm/exports/react.js.map +1 -1
  14. package/dist/esm/react/web/ui/prebuilt/Chain/icon.js +93 -0
  15. package/dist/esm/react/web/ui/prebuilt/Chain/icon.js.map +1 -0
  16. package/dist/esm/react/web/ui/prebuilt/Chain/name.js +121 -0
  17. package/dist/esm/react/web/ui/prebuilt/Chain/name.js.map +1 -0
  18. package/dist/esm/react/web/ui/prebuilt/Chain/provider.js +50 -0
  19. package/dist/esm/react/web/ui/prebuilt/Chain/provider.js.map +1 -0
  20. package/dist/esm/react/web/ui/prebuilt/Token/icon.js.map +1 -1
  21. package/dist/esm/version.js +1 -1
  22. package/dist/esm/version.js.map +1 -1
  23. package/dist/types/exports/react.d.ts +3 -0
  24. package/dist/types/exports/react.d.ts.map +1 -1
  25. package/dist/types/react/web/ui/prebuilt/Chain/icon.d.ts +106 -0
  26. package/dist/types/react/web/ui/prebuilt/Chain/icon.d.ts.map +1 -0
  27. package/dist/types/react/web/ui/prebuilt/Chain/name.d.ts +142 -0
  28. package/dist/types/react/web/ui/prebuilt/Chain/name.d.ts.map +1 -0
  29. package/dist/types/react/web/ui/prebuilt/Chain/provider.d.ts +48 -0
  30. package/dist/types/react/web/ui/prebuilt/Chain/provider.d.ts.map +1 -0
  31. package/dist/types/react/web/ui/prebuilt/Token/icon.d.ts +5 -0
  32. package/dist/types/react/web/ui/prebuilt/Token/icon.d.ts.map +1 -1
  33. package/dist/types/version.d.ts +1 -1
  34. package/dist/types/version.d.ts.map +1 -1
  35. package/package.json +1 -1
  36. package/src/exports/react.ts +14 -0
  37. package/src/react/web/ui/prebuilt/Chain/icon.tsx +154 -0
  38. package/src/react/web/ui/prebuilt/Chain/name.test.tsx +73 -0
  39. package/src/react/web/ui/prebuilt/Chain/name.tsx +185 -0
  40. package/src/react/web/ui/prebuilt/Chain/provider.test.tsx +34 -0
  41. package/src/react/web/ui/prebuilt/Chain/provider.tsx +73 -0
  42. package/src/react/web/ui/prebuilt/Token/icon.tsx +5 -0
  43. package/src/react/web/ui/prebuilt/Token/provider.test.tsx +44 -0
  44. package/src/react/web/ui/prebuilt/Token/symbol.test.tsx +30 -0
  45. package/src/version.ts +1 -1
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AutoConnect = exports.usePostOnRampQuote = exports.useBuyHistory = exports.useBuyWithFiatHistory = exports.useBuyWithFiatStatus = exports.useBuyWithFiatQuote = exports.useBuyWithCryptoHistory = exports.useBuyWithCryptoStatus = exports.useBuyWithCryptoQuote = exports.useInvalidateContractQuery = exports.createContractQuery = exports.useBlockNumber = exports.useEstimateGasCost = exports.useEstimateGas = exports.useSendAndConfirmTransaction = exports.useSendBatchTransaction = exports.useSendTransaction = exports.useSimulateTransaction = exports.useContractEvents = exports.useWaitForReceipt = exports.useReadContract = exports.useChainMetadata = exports.useLinkProfile = exports.useProfiles = exports.useWalletBalance = exports.useCallsStatus = exports.useSwitchActiveWalletChain = exports.useSendCalls = exports.useSetActiveWalletConnectionStatus = exports.useSetActiveWallet = exports.useIsAutoConnecting = exports.useDisconnect = exports.useConnectedWallets = exports.useConnect = exports.useCapabilities = exports.useAutoConnect = exports.useActiveAccount = exports.useActiveWalletConnectionStatus = exports.useActiveWalletChain = exports.useAdminWallet = exports.useActiveWallet = exports.MediaRenderer = exports.getDefaultToken = exports.defaultTokens = exports.ThirdwebProvider = exports.TransactionButton = exports.ConnectEmbed = exports.ConnectButton = exports.lightTheme = exports.darkTheme = void 0;
4
- exports.TokenIcon = exports.TokenSymbol = exports.TokenName = exports.TokenProvider = exports.AccountAvatar = exports.AccountProvider = exports.AccountBlobbie = exports.AccountName = exports.AccountBalance = exports.AccountAddress = exports.SiteLink = exports.SiteEmbed = exports.useSocialProfiles = exports.useSiweAuth = exports.Blobbie = exports.useConnectionManager = exports.NFTMedia = exports.NFTDescription = exports.NFTName = exports.NFTProvider = exports.CreateDirectListingButton = exports.BuyDirectListingButton = exports.ClaimButton = exports.useEnsAvatar = exports.useEnsName = exports.useNetworkSwitcherModal = exports.useWalletDetailsModal = exports.useWalletImage = exports.useWalletInfo = exports.useConnectModal = exports.PayEmbed = void 0;
4
+ exports.ChainIcon = exports.ChainName = exports.ChainProvider = exports.TokenIcon = exports.TokenSymbol = exports.TokenName = exports.TokenProvider = exports.AccountAvatar = exports.AccountProvider = exports.AccountBlobbie = exports.AccountName = exports.AccountBalance = exports.AccountAddress = exports.SiteLink = exports.SiteEmbed = exports.useSocialProfiles = exports.useSiweAuth = exports.Blobbie = exports.useConnectionManager = exports.NFTMedia = exports.NFTDescription = exports.NFTName = exports.NFTProvider = exports.CreateDirectListingButton = exports.BuyDirectListingButton = exports.ClaimButton = exports.useEnsAvatar = exports.useEnsName = exports.useNetworkSwitcherModal = exports.useWalletDetailsModal = exports.useWalletImage = exports.useWalletInfo = exports.useConnectModal = exports.PayEmbed = void 0;
5
5
  var index_js_1 = require("../react/core/design-system/index.js");
6
6
  Object.defineProperty(exports, "darkTheme", { enumerable: true, get: function () { return index_js_1.darkTheme; } });
7
7
  Object.defineProperty(exports, "lightTheme", { enumerable: true, get: function () { return index_js_1.lightTheme; } });
@@ -180,4 +180,11 @@ var symbol_js_1 = require("../react/web/ui/prebuilt/Token/symbol.js");
180
180
  Object.defineProperty(exports, "TokenSymbol", { enumerable: true, get: function () { return symbol_js_1.TokenSymbol; } });
181
181
  var icon_js_1 = require("../react/web/ui/prebuilt/Token/icon.js");
182
182
  Object.defineProperty(exports, "TokenIcon", { enumerable: true, get: function () { return icon_js_1.TokenIcon; } });
183
+ // Chain
184
+ var provider_js_4 = require("../react/web/ui/prebuilt/Chain/provider.js");
185
+ Object.defineProperty(exports, "ChainProvider", { enumerable: true, get: function () { return provider_js_4.ChainProvider; } });
186
+ var name_js_4 = require("../react/web/ui/prebuilt/Chain/name.js");
187
+ Object.defineProperty(exports, "ChainName", { enumerable: true, get: function () { return name_js_4.ChainName; } });
188
+ var icon_js_2 = require("../react/web/ui/prebuilt/Chain/icon.js");
189
+ Object.defineProperty(exports, "ChainIcon", { enumerable: true, get: function () { return icon_js_2.ChainIcon; } });
183
190
  //# sourceMappingURL=react.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/exports/react.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/exports/react.ts"],"names":[],"mappings":";;;;AAAA,iEAA6E;AAApE,qGAAA,SAAS,OAAA;AAAE,sGAAA,UAAU,OAAA;AAM9B,mFAA+E;AAAtE,iHAAA,aAAa,OAAA;AACtB,uFAAmF;AAA1E,+GAAA,YAAY,OAAA;AAcrB,uEAA+E;AAAtE,6GAAA,iBAAiB,OAAA;AAG1B,oFAA+E;AAAtE,wHAAA,gBAAgB,OAAA;AAOzB,yEAG8C;AAF5C,iHAAA,aAAa,OAAA;AACb,mHAAA,eAAe,OAAA;AAGjB,iBAAiB;AACjB,mFAA+E;AAAtE,iHAAA,aAAa,OAAA;AAGtB,eAAe;AACf,qFAAiF;AAAxE,qHAAA,eAAe,OAAA;AACxB,mFAA+E;AAAtE,mHAAA,cAAc,OAAA;AACvB,+FAA2F;AAAlF,+HAAA,oBAAoB,OAAA;AAC7B,qHAAiH;AAAxG,qJAAA,+BAA+B,OAAA;AACxC,uFAAmF;AAA1E,uHAAA,gBAAgB,OAAA;AACzB,kFAA8E;AAArE,mHAAA,cAAc,OAAA;AACvB,qFAAiF;AAAxE,qHAAA,eAAe,OAAA;AACxB,2EAAuE;AAA9D,2GAAA,UAAU,OAAA;AACnB,6FAAyF;AAAhF,6HAAA,mBAAmB,OAAA;AAC5B,iFAA6E;AAApE,iHAAA,aAAa,OAAA;AACtB,6FAAyF;AAAhF,6HAAA,mBAAmB,OAAA;AAC5B,2FAAuF;AAA9E,2HAAA,kBAAkB,OAAA;AAC3B,2HAAuH;AAA9G,2JAAA,kCAAkC,OAAA;AAC3C,+EAA2E;AAAlE,+GAAA,YAAY,OAAA;AACrB,2GAAuG;AAA9F,2IAAA,0BAA0B,OAAA;AACnC,mFAA+E;AAAtE,mHAAA,cAAc,OAAA;AACvB,sFAAkF;AAAzE,uHAAA,gBAAgB,OAAA;AACzB,4EAAwE;AAA/D,6GAAA,WAAW,OAAA;AACpB,kFAA8E;AAArE,mHAAA,cAAc,OAAA;AAEvB,cAAc;AACd,gFAA+E;AAAtE,oHAAA,gBAAgB,OAAA;AAIzB,WAAW;AACX,sFAAkF;AAAzE,qHAAA,eAAe,OAAA;AACxB,0FAAsF;AAA7E,yHAAA,iBAAiB,OAAA;AAC1B,0FAAsF;AAA7E,yHAAA,iBAAiB,OAAA;AAO1B,uGAAmG;AAA1F,mIAAA,sBAAsB,OAAA;AAC/B,8FAA0F;AAAjF,2HAAA,kBAAkB,OAAA;AAC3B,yGAAqG;AAA5F,qIAAA,uBAAuB,OAAA;AAChC,mHAA+G;AAAtG,+IAAA,4BAA4B,OAAA;AACrC,uFAAmF;AAA1E,mHAAA,cAAc,OAAA;AACvB,+FAA2F;AAAlF,2HAAA,kBAAkB,OAAA;AAE3B,cAAc;AACd,+EAGmD;AAFjD,mHAAA,cAAc,OAAA;AAIhB,QAAQ;AACR,qEAAyE;AAAhE,qHAAA,mBAAmB,OAAA;AAC5B,8FAAgG;AAAvF,qIAAA,0BAA0B,OAAA;AAEnC,MAAM;AACN,6FAG0D;AAFxD,iIAAA,qBAAqB,OAAA;AAGvB,+FAA2F;AAAlF,mIAAA,sBAAsB,OAAA;AAC/B,iGAG4D;AAF1D,qIAAA,uBAAuB,OAAA;AAGzB,yFAGwD;AAFtD,6HAAA,mBAAmB,OAAA;AAGrB,2FAAuF;AAA9E,+HAAA,oBAAoB,OAAA;AAC7B,6FAG0D;AAFxD,iIAAA,qBAAqB,OAAA;AAGvB,6EAGkD;AAFhD,iHAAA,aAAa,OAAA;AAGf,uFAGuD;AAFrD,2HAAA,kBAAkB,OAAA;AAIpB,6EAAyE;AAAhE,6GAAA,WAAW,OAAA;AAMpB,2DAIqC;AAHnC,uGAAA,QAAQ,OAAA;AAYV,uFAG0D;AAFxD,qHAAA,eAAe,OAAA;AAIjB,cAAc;AACd,2DAA8E;AAArE,0GAAA,aAAa,OAAA;AAAE,2GAAA,cAAc,OAAA;AAEtC,uEAGkD;AAFhD,mHAAA,qBAAqB,OAAA;AAIvB,uFAG0D;AAFxD,6HAAA,uBAAuB,OAAA;AAIzB,MAAM;AACN,2DAAyE;AAAhE,uGAAA,UAAU,OAAA;AAAE,yGAAA,YAAY,OAAA;AAEjC;;GAEG;AACH,mFAAqF;AAA5E,uGAAA,WAAW,OAAA;AAEpB,8FAG2E;AAFzE,kHAAA,sBAAsB,OAAA;AAGxB,iGAG8E;AAF5E,qHAAA,yBAAyB,OAAA;AAI3B,2BAA2B;AAC3B,wEAGkD;AAFhD,0GAAA,WAAW,OAAA;AAGb,gEAG8C;AAF5C,kGAAA,OAAO,OAAA;AAGT,8EAGqD;AAFnD,gHAAA,cAAc,OAAA;AAGhB,kEAG+C;AAF7C,oGAAA,QAAQ,OAAA;AAIV,uFAAqF;AAA5E,6HAAA,oBAAoB,OAAA;AAE7B;;GAEG;AACH,uEAAmE;AAA1D,qGAAA,OAAO,OAAA;AAEhB,0EAAsE;AAA7D,6GAAA,WAAW,OAAA;AAEpB,SAAS;AACT,kFAA8E;AAArE,yHAAA,iBAAiB,OAAA;AAQ1B,yBAAyB;AACzB,6DAAyD;AAAhD,yGAAA,SAAS,OAAA;AAClB,2DAAuD;AAA9C,uGAAA,QAAQ,OAAA;AAEjB,UAAU;AACV,0EAGqD;AAFnD,4GAAA,cAAc,OAAA;AAGhB,0EAGqD;AAFnD,4GAAA,cAAc,OAAA;AAGhB,oEAGkD;AAFhD,sGAAA,WAAW,OAAA;AAGb,0EAA6E;AAApE,4GAAA,cAAc,OAAA;AACvB,4EAGsD;AAFpD,8GAAA,eAAe,OAAA;AAGjB,wEAGoD;AAFlD,0GAAA,aAAa,OAAA;AAIf,QAAQ;AACR,0EAGoD;AAFlD,4GAAA,aAAa,OAAA;AAGf,kEAGgD;AAF9C,oGAAA,SAAS,OAAA;AAGX,sEAGkD;AAFhD,wGAAA,WAAW,OAAA;AAGb,kEAGgD;AAF9C,oGAAA,SAAS,OAAA;AAIX,QAAQ;AACR,0EAGoD;AAFlD,4GAAA,aAAa,OAAA;AAGf,kEAGgD;AAF9C,oGAAA,SAAS,OAAA;AAGX,kEAGgD;AAF9C,oGAAA,SAAS,OAAA"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChainIcon = ChainIcon;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_query_1 = require("@tanstack/react-query");
6
+ const utils_js_1 = require("../../../../../chains/utils.js");
7
+ const ipfs_js_1 = require("../../../../../utils/ipfs.js");
8
+ const provider_js_1 = require("./provider.js");
9
+ /**
10
+ * This component tries to resolve the icon of a given chain, then return an image.
11
+ * @returns an <img /> with the src of the chain icon
12
+ *
13
+ * @example
14
+ * ### Basic usage
15
+ * ```tsx
16
+ * import { ChainProvider, ChainIcon } from "thirdweb/react";
17
+ *
18
+ * <ChainProvider chain={chain}>
19
+ * <ChainIcon />
20
+ * </ChainProvider>
21
+ * ```
22
+ *
23
+ * Result: An <img /> component with the src of the icon
24
+ * ```html
25
+ * <img src="chain-icon.png" />
26
+ * ```
27
+ *
28
+ * ### Override the icon with the `iconResolver` prop
29
+ * If you already have the icon url, you can skip the network requests and pass it directly to the ChainIcon
30
+ * ```tsx
31
+ * <ChainIcon iconResolver="/ethereum-icon.png" />
32
+ * ```
33
+ *
34
+ * You can also pass in your own custom (async) function that retrieves the icon url
35
+ * ```tsx
36
+ * const getIcon = async () => {
37
+ * const icon = getIconFromCoinMarketCap(chainId, etc);
38
+ * return icon;
39
+ * };
40
+ *
41
+ * <ChainIcon iconResolver={getIcon} />
42
+ * ```
43
+ *
44
+ * ### Show a loading sign while the icon is being loaded
45
+ * ```tsx
46
+ * <ChainIcon loadingComponent={<Spinner />} />
47
+ * ```
48
+ *
49
+ * ### Fallback to a dummy image if the chain icon fails to resolve
50
+ * ```tsx
51
+ * <ChainIcon fallbackComponent={<img src="blank-image.png" />} />
52
+ * ```
53
+ *
54
+ * ### Usage with queryOptions
55
+ * ChainIcon uses useQuery() from tanstack query internally.
56
+ * It allows you to pass a custom queryOptions of your choice for more control of the internal fetching logic
57
+ * ```tsx
58
+ * <ChainIcon queryOptions={{ enabled: someLogic, retry: 3, }} />
59
+ * ```
60
+ *
61
+ * @component
62
+ * @chain
63
+ * @beta
64
+ */
65
+ function ChainIcon({ iconResolver, loadingComponent, fallbackComponent, queryOptions, client, ...restProps }) {
66
+ const { chain } = (0, provider_js_1.useChainContext)();
67
+ const iconQuery = (0, react_query_1.useQuery)({
68
+ queryKey: ["_internal_chain_icon_", chain.id],
69
+ queryFn: async () => {
70
+ if (typeof iconResolver === "string") {
71
+ return iconResolver;
72
+ }
73
+ if (typeof iconResolver === "function") {
74
+ return iconResolver();
75
+ }
76
+ // Check if the chain object already has "icon"
77
+ if (chain.icon?.url) {
78
+ return chain.icon.url;
79
+ }
80
+ const possibleUrl = await (0, utils_js_1.getChainMetadata)(chain).then((data) => data.icon?.url);
81
+ if (!possibleUrl) {
82
+ throw new Error("Failed to resolve icon for chain");
83
+ }
84
+ return (0, ipfs_js_1.resolveScheme)({ uri: possibleUrl, client });
85
+ },
86
+ ...queryOptions,
87
+ });
88
+ if (iconQuery.isLoading) {
89
+ return loadingComponent || null;
90
+ }
91
+ if (!iconQuery.data) {
92
+ return fallbackComponent || null;
93
+ }
94
+ return (0, jsx_runtime_1.jsx)("img", { src: iconQuery.data, ...restProps, alt: restProps.alt });
95
+ }
96
+ //# sourceMappingURL=icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/Chain/icon.tsx"],"names":[],"mappings":";;AA+GA,8BA0CC;;AAzJD,uDAAuE;AAEvE,6DAAkE;AAElE,0DAA6D;AAC7D,+CAAgD;AAkDhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,SAAgB,SAAS,CAAC,EACxB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,MAAM,EACN,GAAG,SAAS,EACG;IACf,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,6BAAe,GAAE,CAAC;IACpC,MAAM,SAAS,GAAG,IAAA,sBAAQ,EAAC;QACzB,QAAQ,EAAE,CAAC,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAU;QACtD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;gBACvC,OAAO,YAAY,EAAE,CAAC;YACxB,CAAC;YACD,+CAA+C;YAC/C,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YACxB,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,IAAA,2BAAgB,EAAC,KAAK,CAAC,CAAC,IAAI,CACpD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CACzB,CAAC;YACF,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,IAAA,uBAAa,EAAC,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,GAAG,YAAY;KAChB,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACxB,OAAO,gBAAgB,IAAI,IAAI,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,iBAAiB,IAAI,IAAI,CAAC;IACnC,CAAC;IAED,OAAO,gCAAK,GAAG,EAAE,SAAS,CAAC,IAAI,KAAM,SAAS,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,GAAI,CAAC;AACzE,CAAC"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ChainName = ChainName;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_query_1 = require("@tanstack/react-query");
7
+ const utils_js_1 = require("../../../../../chains/utils.js");
8
+ const provider_js_1 = require("./provider.js");
9
+ /**
10
+ * This component fetches then shows the name of a chain.
11
+ * It inherits all the attributes of a HTML <span> component, hence you can style it just like how you would style a normal <span>
12
+ *
13
+ *
14
+ * @example
15
+ * ### Basic usage
16
+ * ```tsx
17
+ * import { ChainProvider, ChainName } from "thirdweb/react";
18
+ * import { ethereum } from "thirdweb/chains";
19
+ *
20
+ * <ChainProvider {...props}>
21
+ * <ChainName />
22
+ * </ChainProvider>
23
+ * ```
24
+ * Result:
25
+ * ```html
26
+ * <span>Ethereum Mainnet</span>
27
+ * ```
28
+ *
29
+ * ### Custom name resolver
30
+ * By default ChainName will call the thirdweb API to retrieve the chain name.
31
+ * However if you have a different way to fetch the name, you can pass the function to the `nameResolver` prop.
32
+ * Note: nameResolver should either be a string or a function (async) that returns a string.
33
+ * ```tsx
34
+ * async function fetchNameMethod() {
35
+ * // your own fetching logic
36
+ * return "the chain name";
37
+ * }
38
+ *
39
+ * <ChainName nameResolver={fetchNameMethod} />
40
+ * ```
41
+ *
42
+ * Alternatively you can also pass in a string directly:
43
+ * ```tsx
44
+ * <ChainName nameResolver="ETH Mainnet" />
45
+ * ```
46
+ *
47
+ *
48
+ * ### Format the name (capitalize, truncate, etc.)
49
+ * The ChainName component accepts a `formatFn` which takes in a string and outputs a string
50
+ * The function is used to modify the name of the chain
51
+ *
52
+ * ```tsx
53
+ * const concatStr = (str: string):string => str + "Network"
54
+ *
55
+ * <ChainProvider {...props}>
56
+ * <ChainName formatFn={concatStr} />
57
+ * </ChainProvider>
58
+ * ```
59
+ *
60
+ * Result:
61
+ * ```html
62
+ * <span>Ethereum Mainnet Network</span>
63
+ * ```
64
+ *
65
+ * ### Show a loading sign when the name is being fetched
66
+ * ```tsx
67
+ * import { ChainProvider, ChainName } from "thirdweb/react";
68
+ *
69
+ * <ChainProvider {...props}>
70
+ * <ChainName loadingComponent={<Spinner />} />
71
+ * </ChainProvider>
72
+ * ```
73
+ *
74
+ * ### Fallback to something when the name fails to resolve
75
+ * ```tsx
76
+ * <ChainProvider {...props}>
77
+ * <ChainName fallbackComponent={"Failed to load"} />
78
+ * </ChainProvider>
79
+ * ```
80
+ *
81
+ * ### Custom query options for useQuery
82
+ * This component uses `@tanstack-query`'s useQuery internally.
83
+ * You can use the `queryOptions` prop for more fine-grained control
84
+ * ```tsx
85
+ * <ChainName
86
+ * queryOptions={{
87
+ * enabled: isEnabled,
88
+ * retry: 4,
89
+ * }}
90
+ * />
91
+ * ```
92
+ *
93
+ * @component
94
+ * @chain
95
+ * @beta
96
+ */
97
+ function ChainName({ nameResolver, formatFn, loadingComponent, fallbackComponent, queryOptions, ...restProps }) {
98
+ const { chain } = (0, provider_js_1.useChainContext)();
99
+ const nameQuery = (0, react_query_1.useQuery)({
100
+ queryKey: ["_internal_chain_name_", chain.id],
101
+ queryFn: async () => {
102
+ if (typeof nameResolver === "string") {
103
+ return nameResolver;
104
+ }
105
+ if (typeof nameResolver === "function") {
106
+ return nameResolver();
107
+ }
108
+ if (chain.name) {
109
+ return chain.name;
110
+ }
111
+ return (0, utils_js_1.getChainMetadata)(chain).then((data) => data.name);
112
+ },
113
+ ...queryOptions,
114
+ });
115
+ if (nameQuery.isLoading) {
116
+ return loadingComponent || null;
117
+ }
118
+ if (!nameQuery.data) {
119
+ return fallbackComponent || null;
120
+ }
121
+ const displayValue = formatFn ? formatFn(nameQuery.data) : nameQuery.data;
122
+ return (0, jsx_runtime_1.jsx)("span", { ...restProps, children: displayValue });
123
+ }
124
+ //# sourceMappingURL=name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/Chain/name.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAmJb,8BAqCC;;AAtLD,uDAAuE;AAGvE,6DAAkE;AAClE,+CAAgD;AAqDhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuFG;AACH,SAAgB,SAAS,CAAC,EACxB,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,GAAG,SAAS,EACG;IACf,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,6BAAe,GAAE,CAAC;IACpC,MAAM,SAAS,GAAG,IAAA,sBAAQ,EAAC;QACzB,QAAQ,EAAE,CAAC,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAU;QACtD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;gBACvC,OAAO,YAAY,EAAE,CAAC;YACxB,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC,IAAI,CAAC;YACpB,CAAC;YACD,OAAO,IAAA,2BAAgB,EAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;QACD,GAAG,YAAY;KAChB,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACxB,OAAO,gBAAgB,IAAI,IAAI,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,iBAAiB,IAAI,IAAI,CAAC;IACnC,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;IAE1E,OAAO,oCAAU,SAAS,YAAG,YAAY,GAAQ,CAAC;AACpD,CAAC"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ChainProvider = ChainProvider;
5
+ exports.useChainContext = useChainContext;
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const react_1 = require("react");
8
+ const ChainProviderContext = /* @__PURE__ */ (0, react_1.createContext)(undefined);
9
+ /**
10
+ * A React context provider component that supplies Chain-related data to its child components.
11
+ *
12
+ * This component serves as a wrapper around the `ChainProviderContext.Provider` and passes
13
+ * the provided chain data down to all of its child components through the context API.
14
+ *
15
+ * @example
16
+ * ### Basic usage
17
+ * ```tsx
18
+ * import { ChainProvider, ChainIcon, ChainName } from "thirdweb/react";
19
+ * import { ethereum } from "thirdweb/chains";
20
+ *
21
+ * <ChainProvider chain={ethereum}>
22
+ * <ChainIcon />
23
+ * <ChainName />
24
+ * </ChainProvider>
25
+ * ```
26
+ *
27
+ * ### Usage with defineChain
28
+ * ```tsx
29
+ * import { defineChain } from "thirdweb/chains"l
30
+ * import { ChainProvider, ChainName } from "thirdweb/react";
31
+ *
32
+ * const chainId = someNumber;
33
+ *
34
+ * <ChainProvider chain={defineChain(chainId)}>
35
+ * <ChainName />
36
+ * </ChainProvider>
37
+ * ```
38
+ * @component
39
+ * @chain
40
+ */
41
+ function ChainProvider(props) {
42
+ return ((0, jsx_runtime_1.jsx)(ChainProviderContext.Provider, { value: props, children: props.children }));
43
+ }
44
+ /**
45
+ * @internal
46
+ */
47
+ function useChainContext() {
48
+ const ctx = (0, react_1.useContext)(ChainProviderContext);
49
+ if (!ctx) {
50
+ throw new Error("ChainProviderContext not found. Make sure you are using ChainName, ChainIcon, etc. inside a <ChainProvider /> component");
51
+ }
52
+ return ctx;
53
+ }
54
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/Chain/provider.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAmDb,sCAQC;AAKD,0CAQC;;AArED,iCAAkD;AAYlD,MAAM,oBAAoB,GAAG,eAAe,CAAC,IAAA,qBAAa,EAExD,SAAS,CAAC,CAAC;AAEb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,SAAgB,aAAa,CAC3B,KAAkD;IAElD,OAAO,CACL,uBAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACxC,KAAK,CAAC,QAAQ,GACe,CACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe;IAC7B,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,oBAAoB,CAAC,CAAC;IAC7C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,yHAAyH,CAC1H,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/Token/icon.tsx"],"names":[],"mappings":";;AAuGA,8BA4DC;;AAnKD,uDAAuE;AAEvE,6DAAkE;AAClE,wEAA6E;AAC7E,qEAAkE;AAClE,yGAAmG;AACnG,0DAA6D;AAC7D,+CAAgD;AAwChD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,SAAgB,SAAS,CAAC,EACxB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,GAAG,SAAS,EACG;IACf,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,6BAAe,GAAE,CAAC;IACrD,MAAM,SAAS,GAAG,IAAA,sBAAQ,EAAC;QACzB,QAAQ,EAAE,CAAC,uBAAuB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,CAAU;QAC/D,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;gBACvC,OAAO,YAAY,EAAE,CAAC;YACxB,CAAC;YACD,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,mCAAoB,CAAC,WAAW,EAAE,EAAE,CAAC;gBACjE,MAAM,WAAW,GAAG,MAAM,IAAA,2BAAgB,EAAC,KAAK,CAAC,CAAC,IAAI,CACpD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CACzB,CAAC;gBACF,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAC7D,CAAC;gBACD,OAAO,IAAA,uBAAa,EAAC,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC;YAED,2CAA2C;YAC3C,MAAM,gBAAgB,GAAG,MAAM,IAAA,4CAAmB,EAAC;gBACjD,QAAQ,EAAE,IAAA,yBAAW,EAAC;oBACpB,OAAO;oBACP,KAAK;oBACL,MAAM;iBACP,CAAC;aACH,CAAC,CAAC;YAEH,IACE,CAAC,gBAAgB,CAAC,KAAK;gBACvB,OAAO,gBAAgB,CAAC,KAAK,KAAK,QAAQ,EAC1C,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YAED,OAAO,IAAA,uBAAa,EAAC;gBACnB,GAAG,EAAE,gBAAgB,CAAC,KAAK;gBAC3B,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QACD,GAAG,YAAY;KAChB,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACxB,OAAO,gBAAgB,IAAI,IAAI,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,iBAAiB,IAAI,IAAI,CAAC;IACnC,CAAC;IAED,OAAO,gCAAK,GAAG,EAAE,SAAS,CAAC,IAAI,KAAM,SAAS,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,GAAI,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/Token/icon.tsx"],"names":[],"mappings":";;AA4GA,8BA4DC;;AAxKD,uDAAuE;AAEvE,6DAAkE;AAClE,wEAA6E;AAC7E,qEAAkE;AAClE,yGAAmG;AACnG,0DAA6D;AAC7D,+CAAgD;AA6ChD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,SAAgB,SAAS,CAAC,EACxB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,GAAG,SAAS,EACG;IACf,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,6BAAe,GAAE,CAAC;IACrD,MAAM,SAAS,GAAG,IAAA,sBAAQ,EAAC;QACzB,QAAQ,EAAE,CAAC,uBAAuB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,CAAU;QAC/D,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;gBACvC,OAAO,YAAY,EAAE,CAAC;YACxB,CAAC;YACD,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,mCAAoB,CAAC,WAAW,EAAE,EAAE,CAAC;gBACjE,MAAM,WAAW,GAAG,MAAM,IAAA,2BAAgB,EAAC,KAAK,CAAC,CAAC,IAAI,CACpD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CACzB,CAAC;gBACF,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAC7D,CAAC;gBACD,OAAO,IAAA,uBAAa,EAAC,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC;YAED,2CAA2C;YAC3C,MAAM,gBAAgB,GAAG,MAAM,IAAA,4CAAmB,EAAC;gBACjD,QAAQ,EAAE,IAAA,yBAAW,EAAC;oBACpB,OAAO;oBACP,KAAK;oBACL,MAAM;iBACP,CAAC;aACH,CAAC,CAAC;YAEH,IACE,CAAC,gBAAgB,CAAC,KAAK;gBACvB,OAAO,gBAAgB,CAAC,KAAK,KAAK,QAAQ,EAC1C,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YAED,OAAO,IAAA,uBAAa,EAAC;gBACnB,GAAG,EAAE,gBAAgB,CAAC,KAAK;gBAC3B,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QACD,GAAG,YAAY;KAChB,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACxB,OAAO,gBAAgB,IAAI,IAAI,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,iBAAiB,IAAI,IAAI,CAAC;IACnC,CAAC;IAED,OAAO,gCAAK,GAAG,EAAE,SAAS,CAAC,IAAI,KAAM,SAAS,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,GAAI,CAAC;AACzE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = "5.71.0";
4
+ exports.version = "5.72.0-nightly-a98550d229e7fd124e1977fcc64dbd1b602ce656-20241126000403";
5
5
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,wEAAwE,CAAC"}
@@ -95,4 +95,8 @@ export { TokenProvider, } from "../react/web/ui/prebuilt/Token/provider.js";
95
95
  export { TokenName, } from "../react/web/ui/prebuilt/Token/name.js";
96
96
  export { TokenSymbol, } from "../react/web/ui/prebuilt/Token/symbol.js";
97
97
  export { TokenIcon, } from "../react/web/ui/prebuilt/Token/icon.js";
98
+ // Chain
99
+ export { ChainProvider, } from "../react/web/ui/prebuilt/Chain/provider.js";
100
+ export { ChainName, } from "../react/web/ui/prebuilt/Chain/name.js";
101
+ export { ChainIcon, } from "../react/web/ui/prebuilt/Chain/icon.js";
98
102
  //# sourceMappingURL=react.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/exports/react.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/exports/react.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { getChainMetadata } from "../../../../../chains/utils.js";
4
+ import { resolveScheme } from "../../../../../utils/ipfs.js";
5
+ import { useChainContext } from "./provider.js";
6
+ /**
7
+ * This component tries to resolve the icon of a given chain, then return an image.
8
+ * @returns an <img /> with the src of the chain icon
9
+ *
10
+ * @example
11
+ * ### Basic usage
12
+ * ```tsx
13
+ * import { ChainProvider, ChainIcon } from "thirdweb/react";
14
+ *
15
+ * <ChainProvider chain={chain}>
16
+ * <ChainIcon />
17
+ * </ChainProvider>
18
+ * ```
19
+ *
20
+ * Result: An <img /> component with the src of the icon
21
+ * ```html
22
+ * <img src="chain-icon.png" />
23
+ * ```
24
+ *
25
+ * ### Override the icon with the `iconResolver` prop
26
+ * If you already have the icon url, you can skip the network requests and pass it directly to the ChainIcon
27
+ * ```tsx
28
+ * <ChainIcon iconResolver="/ethereum-icon.png" />
29
+ * ```
30
+ *
31
+ * You can also pass in your own custom (async) function that retrieves the icon url
32
+ * ```tsx
33
+ * const getIcon = async () => {
34
+ * const icon = getIconFromCoinMarketCap(chainId, etc);
35
+ * return icon;
36
+ * };
37
+ *
38
+ * <ChainIcon iconResolver={getIcon} />
39
+ * ```
40
+ *
41
+ * ### Show a loading sign while the icon is being loaded
42
+ * ```tsx
43
+ * <ChainIcon loadingComponent={<Spinner />} />
44
+ * ```
45
+ *
46
+ * ### Fallback to a dummy image if the chain icon fails to resolve
47
+ * ```tsx
48
+ * <ChainIcon fallbackComponent={<img src="blank-image.png" />} />
49
+ * ```
50
+ *
51
+ * ### Usage with queryOptions
52
+ * ChainIcon uses useQuery() from tanstack query internally.
53
+ * It allows you to pass a custom queryOptions of your choice for more control of the internal fetching logic
54
+ * ```tsx
55
+ * <ChainIcon queryOptions={{ enabled: someLogic, retry: 3, }} />
56
+ * ```
57
+ *
58
+ * @component
59
+ * @chain
60
+ * @beta
61
+ */
62
+ export function ChainIcon({ iconResolver, loadingComponent, fallbackComponent, queryOptions, client, ...restProps }) {
63
+ const { chain } = useChainContext();
64
+ const iconQuery = useQuery({
65
+ queryKey: ["_internal_chain_icon_", chain.id],
66
+ queryFn: async () => {
67
+ if (typeof iconResolver === "string") {
68
+ return iconResolver;
69
+ }
70
+ if (typeof iconResolver === "function") {
71
+ return iconResolver();
72
+ }
73
+ // Check if the chain object already has "icon"
74
+ if (chain.icon?.url) {
75
+ return chain.icon.url;
76
+ }
77
+ const possibleUrl = await getChainMetadata(chain).then((data) => data.icon?.url);
78
+ if (!possibleUrl) {
79
+ throw new Error("Failed to resolve icon for chain");
80
+ }
81
+ return resolveScheme({ uri: possibleUrl, client });
82
+ },
83
+ ...queryOptions,
84
+ });
85
+ if (iconQuery.isLoading) {
86
+ return loadingComponent || null;
87
+ }
88
+ if (!iconQuery.data) {
89
+ return fallbackComponent || null;
90
+ }
91
+ return _jsx("img", { src: iconQuery.data, ...restProps, alt: restProps.alt });
92
+ }
93
+ //# sourceMappingURL=icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/Chain/icon.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAwB,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAkDhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,MAAM,EACN,GAAG,SAAS,EACG;IACf,MAAM,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,QAAQ,CAAC;QACzB,QAAQ,EAAE,CAAC,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAU;QACtD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;gBACvC,OAAO,YAAY,EAAE,CAAC;YACxB,CAAC;YACD,+CAA+C;YAC/C,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YACxB,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CACpD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CACzB,CAAC;YACF,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,aAAa,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,GAAG,YAAY;KAChB,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACxB,OAAO,gBAAgB,IAAI,IAAI,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,iBAAiB,IAAI,IAAI,CAAC;IACnC,CAAC;IAED,OAAO,cAAK,GAAG,EAAE,SAAS,CAAC,IAAI,KAAM,SAAS,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,GAAI,CAAC;AACzE,CAAC"}
@@ -0,0 +1,121 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useQuery } from "@tanstack/react-query";
4
+ import { getChainMetadata } from "../../../../../chains/utils.js";
5
+ import { useChainContext } from "./provider.js";
6
+ /**
7
+ * This component fetches then shows the name of a chain.
8
+ * It inherits all the attributes of a HTML <span> component, hence you can style it just like how you would style a normal <span>
9
+ *
10
+ *
11
+ * @example
12
+ * ### Basic usage
13
+ * ```tsx
14
+ * import { ChainProvider, ChainName } from "thirdweb/react";
15
+ * import { ethereum } from "thirdweb/chains";
16
+ *
17
+ * <ChainProvider {...props}>
18
+ * <ChainName />
19
+ * </ChainProvider>
20
+ * ```
21
+ * Result:
22
+ * ```html
23
+ * <span>Ethereum Mainnet</span>
24
+ * ```
25
+ *
26
+ * ### Custom name resolver
27
+ * By default ChainName will call the thirdweb API to retrieve the chain name.
28
+ * However if you have a different way to fetch the name, you can pass the function to the `nameResolver` prop.
29
+ * Note: nameResolver should either be a string or a function (async) that returns a string.
30
+ * ```tsx
31
+ * async function fetchNameMethod() {
32
+ * // your own fetching logic
33
+ * return "the chain name";
34
+ * }
35
+ *
36
+ * <ChainName nameResolver={fetchNameMethod} />
37
+ * ```
38
+ *
39
+ * Alternatively you can also pass in a string directly:
40
+ * ```tsx
41
+ * <ChainName nameResolver="ETH Mainnet" />
42
+ * ```
43
+ *
44
+ *
45
+ * ### Format the name (capitalize, truncate, etc.)
46
+ * The ChainName component accepts a `formatFn` which takes in a string and outputs a string
47
+ * The function is used to modify the name of the chain
48
+ *
49
+ * ```tsx
50
+ * const concatStr = (str: string):string => str + "Network"
51
+ *
52
+ * <ChainProvider {...props}>
53
+ * <ChainName formatFn={concatStr} />
54
+ * </ChainProvider>
55
+ * ```
56
+ *
57
+ * Result:
58
+ * ```html
59
+ * <span>Ethereum Mainnet Network</span>
60
+ * ```
61
+ *
62
+ * ### Show a loading sign when the name is being fetched
63
+ * ```tsx
64
+ * import { ChainProvider, ChainName } from "thirdweb/react";
65
+ *
66
+ * <ChainProvider {...props}>
67
+ * <ChainName loadingComponent={<Spinner />} />
68
+ * </ChainProvider>
69
+ * ```
70
+ *
71
+ * ### Fallback to something when the name fails to resolve
72
+ * ```tsx
73
+ * <ChainProvider {...props}>
74
+ * <ChainName fallbackComponent={"Failed to load"} />
75
+ * </ChainProvider>
76
+ * ```
77
+ *
78
+ * ### Custom query options for useQuery
79
+ * This component uses `@tanstack-query`'s useQuery internally.
80
+ * You can use the `queryOptions` prop for more fine-grained control
81
+ * ```tsx
82
+ * <ChainName
83
+ * queryOptions={{
84
+ * enabled: isEnabled,
85
+ * retry: 4,
86
+ * }}
87
+ * />
88
+ * ```
89
+ *
90
+ * @component
91
+ * @chain
92
+ * @beta
93
+ */
94
+ export function ChainName({ nameResolver, formatFn, loadingComponent, fallbackComponent, queryOptions, ...restProps }) {
95
+ const { chain } = useChainContext();
96
+ const nameQuery = useQuery({
97
+ queryKey: ["_internal_chain_name_", chain.id],
98
+ queryFn: async () => {
99
+ if (typeof nameResolver === "string") {
100
+ return nameResolver;
101
+ }
102
+ if (typeof nameResolver === "function") {
103
+ return nameResolver();
104
+ }
105
+ if (chain.name) {
106
+ return chain.name;
107
+ }
108
+ return getChainMetadata(chain).then((data) => data.name);
109
+ },
110
+ ...queryOptions,
111
+ });
112
+ if (nameQuery.isLoading) {
113
+ return loadingComponent || null;
114
+ }
115
+ if (!nameQuery.data) {
116
+ return fallbackComponent || null;
117
+ }
118
+ const displayValue = formatFn ? formatFn(nameQuery.data) : nameQuery.data;
119
+ return _jsx("span", { ...restProps, children: displayValue });
120
+ }
121
+ //# sourceMappingURL=name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/Chain/name.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAwB,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAqDhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuFG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,GAAG,SAAS,EACG;IACf,MAAM,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,QAAQ,CAAC;QACzB,QAAQ,EAAE,CAAC,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAU;QACtD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;gBACvC,OAAO,YAAY,EAAE,CAAC;YACxB,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC,IAAI,CAAC;YACpB,CAAC;YACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;QACD,GAAG,YAAY;KAChB,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACxB,OAAO,gBAAgB,IAAI,IAAI,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,iBAAiB,IAAI,IAAI,CAAC;IACnC,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;IAE1E,OAAO,kBAAU,SAAS,YAAG,YAAY,GAAQ,CAAC;AACpD,CAAC"}