1
- import { StrictMode , useState } from "react" ;
1
+ import { StrictMode , useEffect , useMemo , useState } from "react" ;
2
2
import { createRoot } from "react-dom/client" ;
3
- import { Widget } from "@/widget/Widget ";
3
+ import "../web-component ";
4
4
import { Column , Row } from "@/components/Layout" ;
5
5
import "./global.css" ;
6
- import { defaultTheme , lightTheme } from "@/widget/theme" ;
7
6
import { resetWidget } from "@/state/swapPage" ;
7
+ import { defaultTheme , lightTheme } from "@/widget/theme" ;
8
+ import { Widget , WidgetProps } from "@/widget/Widget" ;
8
9
9
10
const DevMode = ( ) => {
10
11
const [ theme , setTheme ] = useState < "dark" | "light" > ( "dark" ) ;
11
12
const [ apiUrl , setApiUrl ] = useState < "prod" | "dev" > ( "prod" ) ;
12
13
const [ testnet , setTestnet ] = useState < boolean > ( false ) ;
13
14
const [ disableShadowDom , setDisableShadowDom ] = useState ( true ) ;
15
+ const [ renderWebComponent , setRenderWebComponent ] = useState ( false ) ;
14
16
15
17
const toggleTheme = ( ) => {
16
18
if ( theme === "dark" ) {
@@ -20,6 +22,65 @@ const DevMode = () => {
20
22
}
21
23
} ;
22
24
25
+ const widgetProps : WidgetProps = useMemo ( ( ) => {
26
+ return {
27
+ theme : {
28
+ ...( theme === "dark" ? defaultTheme : lightTheme ) ,
29
+ brandTextColor : "black" ,
30
+ brandColor : "#FF66FF" ,
31
+ } ,
32
+ settings : {
33
+ useUnlimitedApproval : true ,
34
+ } ,
35
+ disableShadowDom,
36
+ onlyTestnet : testnet ,
37
+ routeConfig : {
38
+ experimentalFeatures : [ "eureka" ] ,
39
+ } ,
40
+ apiUrl :
41
+ apiUrl === "prod" ? "https://go.skip.build/api/skip" : "https://dev.go.skip.build/api/skip" ,
42
+ ibcEurekaHighlightedAssets : {
43
+ USDC : [ "cosmoshub-4" ] ,
44
+ USDT : undefined ,
45
+ } ,
46
+ assetSymbolsSortedToTop : [
47
+ "LBTC" ,
48
+ "ATOM" ,
49
+ "USDC" ,
50
+ "USDT" ,
51
+ "ETH" ,
52
+ "TIA" ,
53
+ "OSMO" ,
54
+ "NTRN" ,
55
+ "INJ" ,
56
+ ] ,
57
+ filterOut : {
58
+ destination : {
59
+ "pacific-1" : [ "ibc/6C00E4AA0CC7618370F81F7378638AE6C48EFF8C9203CE1C2357012B440EBDB7" ] ,
60
+ "1329" : [ "0xB75D0B03c06A926e488e2659DF1A861F860bD3d1" ] ,
61
+ "1" : [ "0xbf45a5029d081333407cc52a84be5ed40e181c46" ] ,
62
+ } ,
63
+ } ,
64
+ filterOutUnlessUserHasBalance : {
65
+ source : {
66
+ "1" : [ "0xbf45a5029d081333407cc52a84be5ed40e181c46" ] ,
67
+ } ,
68
+ } ,
69
+ } ;
70
+ } , [ apiUrl , disableShadowDom , testnet , theme ] ) ;
71
+
72
+ useEffect ( ( ) => {
73
+ const skipWidget = document . querySelector ( "skip-widget" ) ;
74
+ if ( skipWidget ) {
75
+ Object . entries ( widgetProps ) . forEach ( ( [ key , value ] ) => {
76
+ // @ts -expect-error this is like the equivalent of
77
+ // spreading the props to the web-component
78
+ // but we dont expect users to do it like this
79
+ skipWidget [ key as keyof WidgetProps ] = value ;
80
+ } ) ;
81
+ }
82
+ } , [ widgetProps ] ) ;
83
+
23
84
return (
24
85
< Column align = "flex-end" >
25
86
< Column gap = { 5 } style = { { width : 200 } } >
@@ -35,6 +96,9 @@ const DevMode = () => {
35
96
< button onClick = { ( ) => setApiUrl ( ( v ) => ( v === "prod" ? "dev" : "prod" ) ) } >
36
97
{ apiUrl === "prod" ? "prod" : "dev" }
37
98
</ button >
99
+ < button onClick = { ( ) => setRenderWebComponent ( ( v ) => ! v ) } >
100
+ web-component: { renderWebComponent . toString ( ) }
101
+ </ button >
38
102
</ Column >
39
103
< Row
40
104
style = { {
@@ -55,55 +119,7 @@ const DevMode = () => {
55
119
padding : "0 10px" ,
56
120
} }
57
121
>
58
- < Widget
59
- theme = { {
60
- ...( theme === "dark" ? defaultTheme : lightTheme ) ,
61
- brandTextColor : "black" ,
62
- brandColor : "#FF66FF" ,
63
- } }
64
- settings = { {
65
- useUnlimitedApproval : true ,
66
- } }
67
- disableShadowDom = { disableShadowDom }
68
- onlyTestnet = { testnet }
69
- routeConfig = { {
70
- experimentalFeatures : [ "eureka" ] ,
71
- } }
72
- apiUrl = {
73
- apiUrl === "prod"
74
- ? "https://go.skip.build/api/skip"
75
- : "https://dev.go.skip.build/api/skip"
76
- }
77
- ibcEurekaHighlightedAssets = { {
78
- USDC : [ "cosmoshub-4" ] ,
79
- USDT : undefined ,
80
- } }
81
- assetSymbolsSortedToTop = { [
82
- "LBTC" ,
83
- "ATOM" ,
84
- "USDC" ,
85
- "USDT" ,
86
- "ETH" ,
87
- "TIA" ,
88
- "OSMO" ,
89
- "NTRN" ,
90
- "INJ" ,
91
- ] }
92
- filterOut = { {
93
- destination : {
94
- "pacific-1" : [
95
- "ibc/6C00E4AA0CC7618370F81F7378638AE6C48EFF8C9203CE1C2357012B440EBDB7" ,
96
- ] ,
97
- "1329" : [ "0xB75D0B03c06A926e488e2659DF1A861F860bD3d1" ] ,
98
- "1" : [ "0xbf45a5029d081333407cc52a84be5ed40e181c46" ] ,
99
- } ,
100
- } }
101
- filterOutUnlessUserHasBalance = { {
102
- source : {
103
- "1" : [ "0xbf45a5029d081333407cc52a84be5ed40e181c46" ] ,
104
- } ,
105
- } }
106
- />
122
+ { renderWebComponent ? < skip-widget /> : < Widget { ...widgetProps } /> }
107
123
</ div >
108
124
</ Row >
109
125
</ Column >
0 commit comments