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.
- package/dist/cjs/exports/react.js +8 -1
- package/dist/cjs/exports/react.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Chain/icon.js +96 -0
- package/dist/cjs/react/web/ui/prebuilt/Chain/icon.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Chain/name.js +124 -0
- package/dist/cjs/react/web/ui/prebuilt/Chain/name.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Chain/provider.js +54 -0
- package/dist/cjs/react/web/ui/prebuilt/Chain/provider.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Token/icon.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/exports/react.js +4 -0
- package/dist/esm/exports/react.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Chain/icon.js +93 -0
- package/dist/esm/react/web/ui/prebuilt/Chain/icon.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Chain/name.js +121 -0
- package/dist/esm/react/web/ui/prebuilt/Chain/name.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Chain/provider.js +50 -0
- package/dist/esm/react/web/ui/prebuilt/Chain/provider.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Token/icon.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/types/exports/react.d.ts +3 -0
- package/dist/types/exports/react.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Chain/icon.d.ts +106 -0
- package/dist/types/react/web/ui/prebuilt/Chain/icon.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Chain/name.d.ts +142 -0
- package/dist/types/react/web/ui/prebuilt/Chain/name.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Chain/provider.d.ts +48 -0
- package/dist/types/react/web/ui/prebuilt/Chain/provider.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Token/icon.d.ts +5 -0
- package/dist/types/react/web/ui/prebuilt/Token/icon.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/exports/react.ts +14 -0
- package/src/react/web/ui/prebuilt/Chain/icon.tsx +154 -0
- package/src/react/web/ui/prebuilt/Chain/name.test.tsx +73 -0
- package/src/react/web/ui/prebuilt/Chain/name.tsx +185 -0
- package/src/react/web/ui/prebuilt/Chain/provider.test.tsx +34 -0
- package/src/react/web/ui/prebuilt/Chain/provider.tsx +73 -0
- package/src/react/web/ui/prebuilt/Token/icon.tsx +5 -0
- package/src/react/web/ui/prebuilt/Token/provider.test.tsx +44 -0
- package/src/react/web/ui/prebuilt/Token/symbol.test.tsx +30 -0
- 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":";;;;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"}
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/exports/react.ts"],"names":[],"mappings":"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"}
|
@@ -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":";;
|
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"}
|
package/dist/cjs/version.js
CHANGED
package/dist/cjs/version.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAM7E,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AAcnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAG/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAO/E,OAAO,EACL,aAAa,EACb,eAAe,GAChB,MAAM,sCAAsC,CAAC;AAE9C,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAG/E,eAAe;AACf,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,EAAE,+BAA+B,EAAE,MAAM,gEAAgE,CAAC;AACjH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,EAAE,kCAAkC,EAAE,MAAM,mEAAmE,CAAC;AACvH,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2DAA2D,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAE9E,cAAc;AACd,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAI/E,WAAW;AACX,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAOtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,2DAA2D,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,sDAAsD,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,4DAA4D,CAAC;AACrG,OAAO,EAAE,4BAA4B,EAAE,MAAM,iEAAiE,CAAC;AAC/G,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AAE3F,cAAc;AACd,OAAO,EACL,cAAc,GAEf,MAAM,2CAA2C,CAAC;AAEnD,QAAQ;AACR,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAEhG,MAAM;AACN,OAAO,EACL,qBAAqB,GAEtB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,EACL,uBAAuB,GAExB,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EACL,mBAAmB,GAEpB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AACvF,OAAO,EACL,qBAAqB,GAEtB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EACL,aAAa,GAEd,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,kBAAkB,GAEnB,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAMzE,OAAO,EACL,QAAQ,GAGT,MAAM,6BAA6B,CAAC;AASrC,OAAO,EACL,eAAe,GAEhB,MAAM,kDAAkD,CAAC;AAE1D,cAAc;AACd,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,EACL,qBAAqB,GAEtB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACL,uBAAuB,GAExB,MAAM,kDAAkD,CAAC;AAE1D,MAAM;AACN,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEzE;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,wDAAwD,CAAC;AAErF,OAAO,EACL,sBAAsB,GAEvB,MAAM,mEAAmE,CAAC;AAC3E,OAAO,EACL,yBAAyB,GAE1B,MAAM,sEAAsE,CAAC;AAE9E,2BAA2B;AAC3B,OAAO,EACL,WAAW,GAEZ,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,OAAO,GAER,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,cAAc,GAEf,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,QAAQ,GAET,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAErF;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,0CAA0C,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAEtE,SAAS;AACT,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAQ9E,yBAAyB;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,UAAU;AACV,OAAO,EACL,cAAc,GAEf,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,cAAc,GAEf,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,WAAW,GAEZ,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EACL,eAAe,GAEhB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,aAAa,GAEd,MAAM,4CAA4C,CAAC;AAEpD,QAAQ;AACR,OAAO,EACL,aAAa,GAEd,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,SAAS,GAEV,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,WAAW,GAEZ,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,SAAS,GAEV,MAAM,wCAAwC,CAAC;AAEhD,QAAQ;AACR,OAAO,EACL,aAAa,GAEd,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,SAAS,GAEV,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,SAAS,GAEV,MAAM,wCAAwC,CAAC"}
|
@@ -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"}
|