PageSourceSearch

https://coincircle.com/bundles/4101.7f03485bef6f4021110a.js

js coincircle.com collected 2026-10-06 13:06:04 UTC 61,751 bytes, 649 lines download raw bytes

1(self["__LOADABLE_LOADED_CHUNKS__"]=self["__LOADABLE_LOADED_CHUNKS__"]||[]).push([[4101],{4101:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{default:()=>components_Overview});var react=__webpack_require__(67294);var react_default=__webpack_require__.n(react);var es=__webpack_require__(37703);var redux=__webpack_require__(14890);var actions=__webpack_require__(41765);var styled_components_browser_esm=__webpack_require__(71893);var BeatLoader=__webpack_require__(18498);var BeatLoader_default=__webpack_require__.n(BeatLoader);;const fadeIn=styled_components_browser_esm.F4`
2  0% {
3    opacity: 0;
4  }
5`;const Container=styled_components_browser_esm.ZP.div`
6  display: flex;
7  flex-direction: column;
8  width: 100%;
9  flex: 2 1 auto;
10  justify-content: center;
11  opacity:1;
12  animation-duration: 1s;
13  animation-name: ${fadeIn};
14  margin: auto;
15  overflow: hidden;
16  justify-content: flex-start;
17  background: white;
18  padding-top: 10px;
19`;const Header=styled_components_browser_esm.ZP.div`
20  display: flex;
21  padding: 0em 1em;
22  // margin-top: 15px;
23  // margin-bottom: 1em;
24  z-index: 1;
25  flex: 0 0 20px;
26  align-items: center;
27  justify-content: space-between;
28  @media (min-width: 1024px) {
29    // display: none;
30    // margin-bottom: 2em;
31  }
32  @media(max-width: 768px) {
33    margin-top: 0;
34    margin-bottom: 1em;
35  }
36  @media(max-width: 320px) {
37    font-size: 12px;
38    margin-bottom: 2em;
39  }
40`;const OverviewBalance=styled_components_browser_esm.ZP.h2`
41  margin: 0;
42  color: rgb(28, 46, 91);
43  font-weight: 500;
44  font-size: 20px;
45`;const Symbol=styled_components_browser_esm.ZP.span`
46  opacity: 0.5;
47  font-size: 30px;
48  margin-left: 8px;
49`;const TokenNameAndSymbolWrapper=styled_components_browser_esm.ZP.div`
50  display: flex;
51  align-items: baseline;
52  justify-content: center;
53  width: 100%;
54  padding: 0 15px;
55`;const TokenNameAndSymbol=styled_components_browser_esm.ZP.div`
56  text-align: center;safa
57`;const Logo=styled_components_browser_esm.ZP.img`
58  width: 30px;
59  height: 30px;
60  margin-right:5px;
61  display: inline-block;
62`;const ChartNav=styled_components_browser_esm.ZP.span`
63  color: hsl(0, 0%, 60%);
64  cursor: pointer;
65  &.active {
66    color: hsl(0, 0%, 30%);
67    font-weight: 600;
68  }
69`;const ChartNavSlash=styled_components_browser_esm.ZP.span`
70  padding: 0 5px;
71  color: hsl(0, 0%, 60%);
72`;const Empty=styled_components_browser_esm.ZP.div`
73  display: flex;
74  text-align: center;
75  justify-content: space-around;
76  padding: 0 15px 40px 15px;
77`;const EmptyMessage=styled_components_browser_esm.ZP.span`
78  font-size: 1em;
79  text-align: center;
80  color: hsl(0, 0%, 78%);
81  font-weight: 500;
82  margin-top: 15px;
83`;const Subtitle=styled_components_browser_esm.ZP.div`
84  font-weight: 400;
85  font-size: 16px;
86  margin: 2px 10px 20px;
87  color: hsl(0, 0%,60%);
88  z-index: 1;
89`;const Row=styled_components_browser_esm.ZP.div`
90  display: flex;
91  width: 100%;
92  min-width: 0;
93  flex: 1 0 300px;
94  overflow: hidden;
95
96  @media(max-width: 768px) {
97    flex-direction: column;
98    flex: 1 1 auto;
99  }
100`;const Column=styled_components_browser_esm.ZP.div`
101  flex: 1 1 50%;
102`;const LineChartContainer=styled_components_browser_esm.ZP.div`
103  display: flex;
104  width: 100%;
105  min-width: 0;
106  flex: 0 0 45%;
107  border-bottom: 1px solid hsl(0, 0%, 90%);
108  padding-top: 14px;
109  // padding: 0 1rem;
110
111  @media(max-width: 768px) {
112    flex: 1 0 275px;
113  }
114`;const PieContainer=styled_components_browser_esm.ZP.div`
115  flex: 1;
116  position: relative;
117  min-width: 350px;
118  max-width: 500px;
119  border-right: 1px solid hsl(0, 0%, 90%);
120  padding: 10px 0 20px;
121  opacity:1;
122  animation-duration: 1s;
123  animation-name: ${fadeIn};
124  z-index: 0;
125  overflow: hidden;
126
127  @media (max-width: 1024px) {
128    flex: 1 0 325px;
129    max-width: none;
130    border-right: none;
131    border-bottom: 1px solid hsl(0, 0%, 90%);
132  }
133`;const EarnContainer=styled_components_browser_esm.ZP.div`
134  display: flex;
135  flex-direction: column;
136  flex: 1;
137  padding: 10px 0 0 0;
138  overflow: hidden;
139  opacity:1;
140  animation-duration: 1s;
141  animation-name: ${fadeIn};
142  @media (max-width: 768px) {
143    flex-basis: 320px;
144  }
145`;const TransactionsContainer=styled_components_browser_esm.ZP.div`
146  display: flex;
147  flex-direction: column;
148  padding: 10px 0 15px;
149  overflow: hidden;
150  position: relative;
151  flex: 1 1 0;
152  opacity:1;
153  animation-duration: 1s;
154  animation-name: ${fadeIn};
155  @media (max-width: 768px) {
156    flex-basis: auto;
157    padding-bottom: 0;
158  }
159`;const noHoldings=()=>{return react.createElement(Empty,null,react.createElement(EmptyMessage,null,"No holdings yet"))};const AchievementsContainer=styled_components_browser_esm.ZP.div`
160  display: flex;
161  flex-direction: column;
162  overflow: scroll;
163  opacity:1;
164  animation-duration: 1s;
165  animation-name: ${fadeIn};
166`;const AchievementRow=styled_components_browser_esm.ZP.div`
167  display: flex;
168  align-items: center;
169  border-bottom: 1px solid hsl(0, 0%, 90%);
170  padding: 10px 10px;
171  flex: 0 0 44px;
172`;const AchievementIcon=styled_components_browser_esm.ZP.span`
173  flex: 0 0 30px;
174  text-align: center;
175  color: hsl(196, 69%, 45%);
176  font-size: 17px;
177  padding-right: 5px;
178`;const AchievmentDescription=styled_components_browser_esm.ZP.div``;const AchievementTitle=styled_components_browser_esm.ZP.div`
179  flex: 2 1 auto;
180  font-size: 12px;
181  font-weight: 700;
182  color: hsl(0, 0%, 49%);
183`;const AchievementAction=styled_components_browser_esm.ZP.div``;const AchievementCTA=styled_components_browser_esm.ZP.button`
184  outline: none;
185  border: 1px solid hsl(0, 0%, 90%);
186  border-radius: 3px;
187  font-weight: 500;
188  padding: 3px 10px;
189  color: hsl(196, 69%, 45%);
190  font-family: proxima-nova;
191  cursor: pointer;
192  background: none;
193`;const CompleteIcon=styled_components_browser_esm.ZP.span.attrs({className:"icon-checkmark"})`
194  color: hsl(120, 80%, 48%);
195  font-size: 14px;
196  padding-right: 16px;
197`;const BtnMore=styled_components_browser_esm.ZP.button`
198  border: 1px solid hsl(0, 0%, 90%);
199  border-radius: 3px;
200  padding: 3px 11px 4px;
201  color: hsl(0, 0%, 40%);
202  font-weight: 500;
203  font-size: 11px;
204  cursor: pointer;
205  outline: none;
206  background: none;
207  margin: 5px 18px 10px auto;
208  @media (min-width: 768px) {
209    position: absolute;
210    top: 12;
211    right: 10;
212    margin: 0;
213  }
214`;const PercentageCompleted=styled_components_browser_esm.ZP.div`
215  font-size: 17px;
216  color: hsl(0, 0%, 50%);
217
218  @media(max-width: 500px) {
219    font-size: 12px;
220  }
221`;const progressBarAnimation=styled_components_browser_esm.F4`
222      0% {
223    width: 0;
224  }
225`;const ProgressBar=styled_components_browser_esm.ZP.div`
226  display: flex;
227  margin: 0 0 0 auto;
228  justify-content: flex-start;
229  align-items: center;
230  flex: 0 0 50%;
231  height: 10px;
232  font-size: 12px;
233  background-color: hsl(0, 0%, 97%);
234  z-index:0;
235  align-self: center;
236  overflow: hidden;
237  border-radius: 6px;
238  box-shadow: inset 0 0 12px 0 rgba(0, 0, 0, 0.13);
239  position: relative;
240  overflow: visible;
241`;const PercentComplete=styled_components_browser_esm.ZP.div`
242  position: absolute;
243  left: -25px;
244  color: hsl(0, 0%, 10%);
245  font-size: 11px;
246  font-weight: 500;
247`;const ProgressBarShader=styled_components_browser_esm.ZP.div`
248  width: ${p=>p.progress}%;
249  min-width: 10px;
250  // background: hsl(120, 80%, 48%);
251  background-image: linear-gradient(
252    88deg,
253    hsl(199, 94%, 40%),
254    hsl(169, 76%, 44%) 55%,
255    hsl(164, 74%, 47%)
256  );
257  height: 100%;
258  animation-duration: 2.5s;
259  animation-timing-function: ease-out;
260  animation-name: ${progressBarAnimation};
261  display: flex;
262  justify-content: flex-end;
263  align-items: center;
264  white-space: nowrap;
265  color: white;
266  padding-right: 5px;
267  border-radius: 5px;
268  font-size: 12px;
269  font-weight: bold;
270`;const Bubble=styled_components_browser_esm.ZP.span`
271  position: absolute;
272  z-index: 1;
273  ${props=>props.location==="bottom"?"padding-top: 9px;":"padding-bottom: 9px;"}
274  transform: translateX(-50%);
275  width: ${props=>props.width?props.width:"200px"};
276  ${props=>props.location==="bottom"?"top: 100%;":"bottom: 100%;"}
277  opacity:1;
278  animation-duration: 1s;
279  animation-name: ${fadeIn};
280  &::after {
281    ${props=>props.location==="bottom"?"border-bottom: 9px solid #212121;":"border-top: 9px solid #212121;"}
282    ${props=>props.location==="bottom"?"top: 0;":"bottom: 0;"};
283    border-left: 9px solid transparent;
284    border-right: 9px solid transparent;
285    left: 50%;
286    transform: translateX(-50%);
287    content: '';
288    position: absolute;
289    z-index: 1;
290  }
291`;const Message=styled_components_browser_esm.ZP.div`
292  background: #212121;
293  border-radius: 3px;
294  color: white;
295  font-size: 12px;
296  line-height: 1.4;
297  padding: .75em;
298  text-align: center;
299`;const Loader=()=>{return react.createElement(EarnContainer,{style:{alignItems:"center",justifyContent:"space-around"}},react.createElement(BeatLoader_default(),{color:"#BDBDBD",size:30,margin:"2px"}))};const OverviewIntro={OverviewIntro:styled_components_browser_esm.ZP.div`
300    display: flex;
301    flex: 1;
302    width: 100%;
303    align-items: flex-start;
304    justify-content: center;
305    padding: 1rem;
306    border-radius: .25rem;
307    @media (max-width: 425px) {
308      background: white;
309      border-bottom: solid 1px rgba(0,0,0,.075);
310      border-radius: 0rem;
311    }
312  `,OverviewIntroHeader:styled_components_browser_esm.ZP.div`
313    background: linear-gradient(to bottom, #ffffff00, #c3e1ff78 34%, #e4f0ff94 50%, #ffffff00 100%);
314    margin-bottom: 1rem;
315    border-radius: .25rem;
316    min-height: 10rem;
317    box-shadow: 0 0 10px 10px white inset;
318    img {
319      width: 13rem;
320      margin: 1rem auto 1.25rem;
321    }
322  `,Content:styled_components_browser_esm.ZP.div`
323    text-align: center;
324    display: flex;
325    flex-direction: column;
326    width: 100%;
327  `,Headline:styled_components_browser_esm.ZP.h2`
328    color: ${p=>p.theme.colors.blueDarkFont};
329    font-size: 1.75rem;
330    font-weight: 600;
331    margin: .75rem auto;
332    @media (max-width: 425px) {
333      font-size: 1.5rem;
334    }
335  `,Detail:styled_components_browser_esm.ZP.h4`
336    color: #878787;
337    font-size: 1.05rem;
338    font-weight: 400;
339    margin: 0 auto 1rem;
340    line-height: 1.6em;
341
342    @media (max-width: 425px) {
343      font-size: 1rem;
344    }
345  `,ButtonGroup:styled_components_browser_esm.ZP.div`
346    width: 100%;
347    margin: auto;
348  `,Button:styled_components_browser_esm.ZP.button`
349    display: flex;
350    align-items: center;
351    justify-content: flex-start;
352    width: 18rem;
353    padding: 0.75rem;
354    margin: .75rem auto;
355    background: #2a384a;
356    color: #ffffff;
357    border-color: #2a384a;
358    border-radius: 100px;
359    font-size: 15px;
360    font-weight: 500;
361    text-align: center;
362    box-shadow: 2px 3px 8px 0 rgba(0,0,0,0.2);
363    cursor: pointer;
364    transition: opacity .2s;
365    outline: none;
366    min-height: 55px;
367
368    span {
369      display: flex;
370      align-items: center;
371      justify-content: center;
372      width: 22px;
373      height: 22px;
374      padding: 0 0 1px 1px;
375      border-radius: 100%;
376      font-size: 15px;
377      font-weight: 700;
378      background: white;
379      border-radius: 100%;
380      color: ${p=>p.theme.colors.blueDarkFont};
381      margin-right: .6rem;
382      background: white;
383    }
384  `,AchievementsHeader:styled_components_browser_esm.ZP.h3`
385    text-align: center;
386    font-weight: 400;
387    color: #293849;
388    font-size: 1.325rem;
389    margin-bottom: 0;
390    @media (max-width: 425px) {
391      margin-bottom: 15px;
392    }
393  `,BorrowLink:styled_components_browser_esm.ZP.p`
394    text-align: center;
395    font-size: 14px;
396    font-weight: 600;
397    margin-top: .75rem;
398    color: ${p=>p.theme.colors.blueLight};
399  `};var esm_actions=__webpack_require__(75982);var types=__webpack_require__(86324);var walletService=__webpack_require__(19015);var bignumber=__webpack_require__(44431);var bignumber_default=__webpack_require__.n(bignumber);var numeral=__webpack_require__(92077);var numeral_default=__webpack_require__.n(numeral);var selectors=__webpack_require__(13581);var constants=__webpack_require__(70892);;var __pow=Math.pow;const Highcharts=__webpack_require__(78840);
399__webpack_require__(65705)(Highcharts);class PieChart extends react_default().Component{constructor(){super(...arguments);this.chart=void 0;this.state={};this.handleDocumentClick=ev=>{const target=ev.target;const className=target&&target.getAttribute&&target.getAttribute("class");if(className&&className.indexOf("js-pie-link")>-1){const symbol=className.split(" ")[1];symbol&&this.selectToken(symbol)}}}componentDidMount(){this.renderChart();document.addEventListener("click",this.handleDocumentClick)}componentWillUnmount(){document.removeEventListener("click",this.handleDocumentClick)}componentDidUpdate(prevProps){let didUpdateBalances=false;let didUpdateMM=false;if(this.props.portfolioValue!==prevProps.portfolioValue){didUpdateBalances=true}if(this.props.mmAccount!==prevProps.mmAccount){const prevMMValue=this.getMMValue(prevProps.mmAccount);const currentMMValue=this.getMMValue(this.props.mmAccount);didUpdateMM=currentMMValue!==prevMMValue}if(didUpdateBalances||didUpdateMM){return this.renderChart()}}selectToken(tokenSymbol){if(tokenSymbol){const{balances}=this.props;if(tokenSymbol==="CC"){this.props.push(`/wallet/assets/circlecoin`);return}if(tokenSymbol==="USD"){this.props.push("/wallet/assets/usd");return}if(tokenSymbol==="USD+"){this.props.push("/wallet/yield/dai");return}if(tokenSymbol==="Bitcoin+"||tokenSymbol==="BTC+"){this.props.push("/wallet/yield/btc");return}if(tokenSymbol==="Ethereum+"||tokenSymbol==="ETH+"){this.props.push("/wallet/yield/eth");return}if(tokenSymbol==="BTC"){this.props.push("/wallet/assets/bitcoin");return}if(tokenSymbol==="Collateral"){this.props.push("/wallet/lending/borrow");return}for(const token of balances){if(token.symbol===tokenSymbol){const tokenId=token.isPending?token.crowdsaleId:token.contractAddress;this.props.push(`/wallet/assets/${tokenId}`);break}}}}getEthValue(balances){const tokensValue=balances.reduce((sum,token)=>{const exp=new(bignumber_default())(__pow(10,+token.decimals));const bn=new(bignumber_default())(token.balance);const balance=bn.div(exp);const value=balance.mul(token.price_usd||0);return sum+value.toNumber()},0);return numeral_default()(tokensValue).format("$0,0.00")}calcMMValue(asset){const supply=parseFloat(asset.supplyBalance);return supply}getTokenBalance(token){const{mmAccount}=this.props;let bal=+token.balance;if(Object.values(types.t).includes(token.symbol)&&token.symbol!=="DAI"){if(mmAccount&&mmAccount.assets&&mmAccount.assets.length){const assets=mmAccount.assets.filter(a=>a.symbol===token.symbol);if(assets&&assets.length){for(const asset of assets){const mmVal=this.calcMMValue(asset);const decimals=+token.decimals;bal+=decimals>0?mmVal*__pow(10,decimals):mmVal}}}}return bal}getMMValue(mmAccount){return mmAccount&&mmAccount.assets.reduce((total,asset)=>{return total+=+asset.supplyBalance},0)}renderChart(){const{balances}=this.props;const portfolioValue=this.props.portfolioValue;if(portfolioValue===0)return;const minItemsMaxChartAllocation=.45;const minItemThreshold=.025;const innerLabelThreshold=.4;let minItemCount=0;const innerLabelStyle={distance:-55,connectorShape:"straight",style:{color:"white",textOutline:"1px #00000050",fontWeight:"normal",fontSize:"13px"}};const outerLabelStyle={distance:25,connectorShape:"straight",style:{color:"#00000090",textOutline:"2px contrast",fontWeight:"normal",fontSize:"10px"}};const chartData=balances.filter(b=>Number(b.balance)>0).map(token=>{const name=token.symbol!=="DAI"?token.symbol:"USD";const price=!token.isUSD?token.price_usd:1;const bal=this.getTokenBalance(token);const value=price?walletService.z.getDollarBalanceNum(price,bal.toString(),+token.decimals):0;const tokenWeight=+value/portfolioValue;const z=.7+tokenWeight;const isMinimumItem=tokenWeight<minItemThreshold&&tokenWeight>0;if(isMinimumItem)minItemCount++;return{name,isMinimumItem,tokenWeight,value,z,y:null,color:{linearGradient:{x1:0,x2:0,y1:0,y2:1},stops:[[0,`rgba(50,${(200*z).toFixed()}, 210, ${z>1?1:z.toFixed(2)})`],[1,`rgba(60,${(150*z).toFixed()}, 185, ${z>1?1:z.toFixed(2)})`]]}}});const ccItemZ=.72;const ccChartItem={name:"CC",isMinimumItem:true,tokenWeight:minItemThreshold,value:null,y:null,z:ccItemZ,color:{linearGradient:{x1:0,x2:0,y1:0,y2:1},stops:[[0,`rgba(50,${(200*ccItemZ).toFixed()},210, ${ccItemZ})`],[1,`rgba(60,${(150*ccItemZ).toFixed()},185, ${ccItemZ})`]]}};chartData.push(ccChartItem);minItemCount++;for(const savingsBalance of this.props.wyreWallet){const hasBalance=savingsBalance.decimaledBalance>0;if(!hasBalance)continue;const value=savingsBalance.usdValue;if(value<.01){continue}const tokenWeight=value/portfolioValue;const isMinimumItem=tokenWeight<minItemThreshold&&tokenWeight>0;if(isMinimumItem)minItemCount++;const z=.7+tokenWeight;const pieItem={name:savingsBalance.name,isMinimumItem,tokenWeight,z,y:null,value,color:{linearGradient:{x1:0,x2:0,y1:0,y2:1},stops:[[0,`rgba(50,${(200*z).toFixed()}, 210, ${z>1?1:z.toFixed(2)})`],[1,`rgba(60,${(150*z).toFixed()}, 185, ${z>1?1:z.toFixed(2)})`]]}};const similarAssetIndex=chartData.findIndex(d=>d.name===savingsBalance.name.replace("+",""));if(similarAssetIndex>-1){chartData.splice(similarAssetIndex,0,pieItem)}else{chartData.push(pieItem)}}chartData.map(item=>{item.name=item.name==="USD+"?"USD+ (DAI)":item.name;item.name=item.name==="USD"?"USD (DAI)":item.name;return item});const collateral=this.props.mmAccount&&this.props.mmAccount.assets.reduce((sum,a)=>sum+(a.symbol==="DAI"?Number(a.supplyBalance||0):Number(a.supplyBalanceValue||0)),0);const collateralUSDValue=collateral&&Number(collateral)||0;if(collateralUSDValue){const tokenWeight=collateralUSDValue/portfolioValue;const isMinimumItem=tokenWeight<minItemThreshold&&tokenWeight>0;if(isMinimumItem)minItemCount++;const z=.7+tokenWeight;const collateralItem={name:"Collateral",isMinimumItem:tokenWeight<minItemThreshold,tokenWeight,z,y:null,value:collateralUSDValue,color:{linearGradient:{x1:0,x2:0,y1:0,y2:1},stops:[[0,`rgba(50,${(200*z).toFixed()}, 210, ${z>1?1:z.toFixed(2)})`],[1,`rgba(60,${(150*z).toFixed()}, 185, ${z>1?1:z.toFixed(2)})`]]}};chartData.push(collateralItem)}function chartValues(){let minY=minItemThreshold;if(minItemCount>minItemsMaxChartAllocation/minItemThreshold){minY=minItemsMaxChartAllocation/minItemCount}let totalY=0;return chartData.map(token=>{const chartArea=token.tokenWeight>0?token.isMinimumItem?minY:token.tokenWeight:0;token.y=chartArea;
399totalY+=chartArea;return token}).filter(token=>token.y&&token.y>0).map(token=>{token.dataLabels=(token.y||0)/totalY>innerLabelThreshold?innerLabelStyle:outerLabelStyle;return token})}if(this.chart&&chartData.length){this.chart.series[0].setData(chartValues());return}const self2=this;const data=chartValues();const chartOptions={chart:{plotBackgroundColor:null,plotBorderWidth:null,type:"variablepie",height:"100%",margin:[10,0,0,0],spacing:[0,0,0,0]},credits:{enabled:false},title:{text:""},tooltip:{style:{pointerEvents:"auto"},followPointer:false,followTouchMove:false,pointFormatter(){const token=self2.props.tokens.find(t=>{let tokenName=this.name&&this.name.replace(" (DAI)","")||"";return t.symbol===tokenName});const pctChange=token&&token.percent_change_24h||0;let symbol=token&&token.symbol||this.name;if(symbol==="USD+"){symbol="USD+ (DAI)"}const pctChangeDisplay=pctChange!==0?`24h Change: <span class="js-pie-link ${symbol}" style="font-weight: 700; color: ${pctChange>0?"green":"red"}">
400              ${pctChange>0?"+":""}${pctChange.toFixed(2)}%
401              </span>`:"";const viewDetails=`
402            <br />
403            <span class="js-pie-link ${symbol}" style="text-decoration: underline; color #2499c4; cursor: pointer;">
404              View Details
405            </span>
406          `;return`
407            ${token&&token.name&&`<strong>${token.name}</strong><br/>`||""}
408            <b class="js-pie-link ${symbol}">${this.name==="CC"&&this.z===ccItemZ&&this.value===null?`(${constants.CIRCLE_COIN_NAME})`:`$${Highcharts.numberFormat(this.value,2,".",",")}`}</b>
409            <br />
410            ${this.name!=="USD+ (DAI)"?pctChangeDisplay:""}
411            ${viewDetails}
412          `}},plotOptions:{variablepie:{allowPointSelect:true,align:"center",cursor:"pointer",dataLabels:{distance:10,enabled:true,format:"<b>{point.name}</b>",padding:0,style:{color:Highcharts.theme&&Highcharts.theme.contrastTextColor||"black"},borderWidth:0}}},series:[{name:"",borderWidth:minItemCount>10?2:3,minPointSize:10,innerSize:"20%",zMin:0,colorByPoint:true,data}]};const delay=this.props.isDesktop?1500:0;setTimeout(()=>{const el=document.getElementById("pie-container");if(!el)return;this.chart=Highcharts.chart("pie-container",chartOptions)},delay)}render(){const{balances,mmAccount,isMobile,height,width,wyreWallet}=this.props;const holdings=balances.reduce((sum,b)=>sum+ +b.balance,0);const btcp=wyreWallet&&wyreWallet.find(b=>b.contractAddress==="SAVINGS:BTC");const ethp=wyreWallet&&wyreWallet.find(b=>b.contractAddress==="SAVINGS:ETH");const btcPlusBal=btcp?btcp.decimaledBalance:0;const ethPlusBal=ethp?ethp.decimaledBalance:0;const hasHoldings=holdings+btcPlusBal+ethPlusBal>0;if(!hasHoldings)return noHoldings();const size=Math.min(this.props.height||300,this.props.width||300);const scaled=size*.85;const isScaledForMobile=this.props.height||this.props.height;const chartStyle={position:"absolute",width:isScaledForMobile?`${scaled}px`:"100%",maxWidth:isScaledForMobile?"inherit":"18.5rem",left:"50%",top:"50%",transform:"translate(-50%, -50%)",maxHeight:isScaledForMobile?"inherit":"300px",height:isScaledForMobile?`${scaled}px`:"calc(95% - 10px)",margin:0,padding:0};const desktopStyle={height:`${scaled}px`,width:`${scaled}px`};return react_default().createElement("div",{id:"pie-container",style:isMobile?chartStyle:desktopStyle})}}const mapStateToProps=(state,ownProps)=>({mmAccount:state.wallet.moneyMarketAccount,isMobile:state.app.windowWidth<=768,tokens:state.wallet.tokens,usdPlus:selectors.selectComputedUSDPlus(state),wyreWallet:selectors.selectWyreWalletAsBalances(state),ethPrice:selectors.selectETHPrice(state),portfolioValue:selectors.selectWalletBalanceValue(state)});const mapDispatchToProps=d=>(0,redux.DE)({push:esm_actions.VF},d);const Overview_PieChart=(0,es.$j)(mapStateToProps,mapDispatchToProps)(PieChart);var moment=__webpack_require__(30381);var moment_default=__webpack_require__.n(moment);var fetch_token=__webpack_require__(47254);var activity_selectors=__webpack_require__(9901);var fetch_wallet_transfers=__webpack_require__(39439);var fetch_transactions=__webpack_require__(6633);var fetch_savings_accruals=__webpack_require__(40221);;function Worker_fn(){return new Worker(__webpack_require__.p+"cc-worker.8e6bb23c9dd191d7d95a.web-worker.js")}var WorkerPool=__webpack_require__(23479);var mobile_helpers=__webpack_require__(21466);;let numWorkers=6;if((0,mobile_helpers.isBrowsingInMobileWeb)()||(0,mobile_helpers.isBrowsingInMobileApp)()){numWorkers=3}let pool_navigator=window.navigator;if(pool_navigator.hardwareConcurrency){if(pool_navigator.hardwareConcurrency>10){numWorkers=10}else if(pool_navigator.hardwareConcurrency>=5){numWorkers=pool_navigator.hardwareConcurrency-2}else{numWorkers=Math.min(3,Math.max(pool_navigator.hardwareConcurrency,2))}}const pool=new WorkerPool.e(Worker_fn,numWorkers);const web_worker_pool=pool;;var PriceChart_pow=Math.pow;var __async=(__this,__arguments,generator)=>{return new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}};var rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}};var step=result=>{return result.done?resolve(result.value):Promise.resolve(result.value).then(fulfilled,rejected)};step((generator=generator.apply(__this,__arguments)).next())})};const PriceChart_Highcharts=__webpack_require__(95384);
412__webpack_require__(92414)(PriceChart_Highcharts);__webpack_require__(90038)(PriceChart_Highcharts);let redrawEnabled=true;function setMinMax(){if(redrawEnabled){redrawEnabled=false;let min=0;let max=0;this.series[0].points.forEach((point,i)=>{if(point.y>max||i===0)max=point.y;if(point.y<min||i===0)min=point.y});this.yAxis[0].setExtremes(Math.max(min,0),max);redrawEnabled=true}}PriceChart_Highcharts.setOptions({lang:{thousandsSep:",",rangeSelectorZoom:""}});const ONE_SECOND=1e3;const ONE_MINUTE=ONE_SECOND*60;const ONE_HOUR=ONE_MINUTE*60;const ONE_DAY=ONE_HOUR*24;const ONE_WEEK=ONE_DAY*7;const ONE_MONTH=ONE_DAY*30;const ONE_YEAR=ONE_DAY*365;const NOW=Date.now();const ONE_DAY_AGO=NOW-ONE_DAY;const ONE_WEEK_AGO=NOW-ONE_WEEK;const ONE_MONTH_AGO=NOW-ONE_MONTH;const THREE_MONTHS_AGO=NOW-ONE_MONTH*3;const ONE_YEAR_AGO=NOW-ONE_YEAR;function roundTimestamp(ts){if(ts<ONE_YEAR_AGO)return ts-ts%ONE_DAY;if(ts<THREE_MONTHS_AGO)return ts-ts%(ONE_HOUR*3);if(ts<ONE_MONTH_AGO)return ts-ts%ONE_HOUR;if(ts<ONE_WEEK_AGO)return ts-ts%ONE_HOUR;if(ts<ONE_DAY_AGO)return ts-ts%(ONE_MINUTE*5);return ts-ts%(ONE_MINUTE*10)}class PriceChart extends react_default().Component{constructor(){super(...arguments);this.state={chartData:[],valueNow:0,valueDayAgo:0,valueWeekAgo:0,valueMonthAgo:0,value3MonthAgo:0,value6MonthAgo:0,valueYearAgo:0,valueFiveYearsAgo:0,valueYTD:0,initialValue:0,valueMin:0,pcntChange:0,usdChange:0,rangeSelection:0,xMin:null,xMax:null,yMin:0,yMax:null};this.chart=null;this.t={dayAgo:moment_default()().utc().subtract(1,"day"),weekAgo:moment_default()().utc().subtract(1,"week"),monthAgo:moment_default()().utc().subtract(30,"day"),month3Ago:moment_default()().utc().subtract(3,"month"),month6Ago:moment_default()().utc().subtract(6,"month"),yearAgo:moment_default()().utc().subtract(1,"year"),fiveYearsAgo:moment_default()().utc().subtract(5,"year"),ytd:moment_default().utc().startOf("year")};this.xEventDepositVals=[];this.xEventWithdrawVals=[];this.updateGrouping=()=>{const{xMin,xMax}=this.state;if(!(xMax&&xMin))return;if(typeof xMin!=="number")return;if(typeof xMax!=="number")return;const width=xMax-xMin;let groupPixelWidth=2;if(xMin<=ONE_DAY_AGO){groupPixelWidth=2}if(xMin<=ONE_WEEK_AGO){groupPixelWidth=2}if(xMin<=ONE_MONTH_AGO){groupPixelWidth=3}if(xMin<=ONE_MONTH_AGO-ONE_MONTH){groupPixelWidth=4}if(xMin<=THREE_MONTHS_AGO){groupPixelWidth=3}if(xMin<=ONE_YEAR_AGO){groupPixelWidth=3}if(xMin<=ONE_YEAR_AGO-ONE_YEAR*3){groupPixelWidth=2}if(this.chart){this.chart.series[0].update({dataGrouping:{groupPixelWidth}})}};this.rangeChange=event=>{var _a,_b,_c;const{chartData}=this.state;let xMin=((_a=chartData[0])==null?void 0:_a[0])||0;let first=0;let xMax=((_b=chartData[chartData.length-1])==null?void 0:_b[0])||0;let last=event.max===event.dataMax?chartData&&chartData[chartData.length-2]&&((_c=chartData[chartData.length-2])==null?void 0:_c[1])||0:0;if(event.trigger==="rangeSelectorButton"||event.type==="setExtremes"&&!event.trigger){return}for(let i=0,max=chartData.length;i<max;i+=1){if(chartData[i][0]>=event.min&&!first){xMin=chartData[i][0];first=chartData[i][1]}if(chartData[i][0]>=event.max&&!last){xMax=chartData[i-1][0];last=chartData[i][1]}if(first&&last){break}}const pcnt=this.calcPcnt(first,last);const usdChange=this.calcChange(first,last);this.setState({pcntChange:pcnt,usdChange,rangeSelection:null,xMin,xMax});return};this.renderChart=()=>__async(this,null,function*(){const{chartData,rangeSelection,xMin,xMax,yMin,yMax}=this.state;const el=document.getElementById("chart-container");if(!el)return;if(this.chart&&chartData.length){this.chart.series[0].setData(chartData);this.setPcntChange(this.state.rangeSelection);return}const yAxisLabelFormatter=y=>{let val=numeral_default()(y.value).format("$0,0.00");if(y.value<1){val=numeral_default()(y.value).format("$0,0.000");if(y.value<=.1){val=numeral_default()(y.value).format("$0,0.0000")}}if(y.value>=1e3){val=numeral_default()(y.value).format("$,0")}return val};const verticalLines=this.xAxisPlotLines();const chartOptions={chart:{renderTo:"container",type:"area",spacingTop:40,spacingBottom:30,marginBottom:30},credits:{enabled:false},title:{text:""},navigator:{enabled:false},xAxis:{min:xMin||null,max:xMax||null,events:{afterSetExtremes:this.rangeChange},ordinal:false,gridLineColor:"hsl(0, 0%, 97%)",labels:false,tickLength:0,lineWidth:0,plotLines:verticalLines},yAxis:{opposite:true,labels:{align:"right",x:5,y:-8,formatter:yAxisLabelFormatter,style:{color:"hsl(213, 30%, 60%)",cursor:"default",fontSize:"9px"}},gridLineColor:"rgba(230,230,230,0.25)",floor:0,lineWidth:0,borderWidth:0},rangeSelector:{buttonSpacing:15,selected:rangeSelection,enabled:chartData.length,inputEnabled:false,
412y:-28,buttons:[{type:"day",count:1,text:"1d",events:{click:()=>{this.setPcntChange(0)}}},{type:"week",count:1,text:"1w",events:{click:()=>{this.setPcntChange(1)}}},{type:"month",count:1,text:"1m",events:{click:()=>{this.setPcntChange(2)}}},{type:"month",count:3,text:"3m",events:{click:()=>{this.setPcntChange(3)}}},{type:"year",count:1,text:"1y",events:{click:()=>{this.setPcntChange(4)}}},{type:"ytd",text:"YTD",events:{click:()=>{this.setPcntChange(5)}}},{type:"year",count:5,text:"5y",events:{click:()=>{this.setPcntChange(6)}}}]},scrollbar:{enabled:false},series:[{color:"hsla(196,69%,45%, 1)",name:"Value USD",data:chartData,fillColor:{linearGradient:{x1:0,x2:0,y1:0,y2:1},stops:[[0,PriceChart_Highcharts.Color("#6f7fe2").setOpacity(.7).get("rgba")],[1,PriceChart_Highcharts.Color("#00bfd9").setOpacity(0).get("rgba")]]},threshold:null,lineWidth:2,dataGrouping:{groupPixelWidth:2}}],tooltip:{formatter(){let val=numeral_default()(this.y).format("$0,0.00");if(this.y<1){val=numeral_default()(this.y).format("$0,0.000");if(this.y<=.1){val=numeral_default()(this.y).format("$0,0.0000")}}if(this.y>=1e3){val=numeral_default()(this.y).format("$,0")}return[moment_default()(this.x).format("MM/DD/YYYY h:mma"),`USD Value <b>${val}</b>`]}}};this.chart=PriceChart_Highcharts.stockChart("chart-container",chartOptions)})}componentDidMount(){return __async(this,null,function*(){this.getEnoughTxData();yield this.constructChartData()})}getMoreTxData(){return __async(this,null,function*(){yield Promise.all([this.props.fetchWyreWalletTransfers(),this.props.fetchTransactions(),this.props.fetchSavingsAccruals()])})}getEnoughTxData(ts=-1,ets=-1,n=1){return __async(this,null,function*(){if(ts>=this.props.earliestTimestamp){return}this.getMoreTxData().then(()=>{this.redrawPlotLines();if(ets===this.props.earliestTimestamp){return}if(ets>ts||ts===-1){this.getEnoughTxData(ts,this.props.earliestTimestamp,n+1);return}return});return})}redrawPlotLines(){if(this.chart&&this.chart.xAxis[0]&&this.chart.xAxis[0].options&&this.chart.xAxis[0].options.plotLines){const xAxis=this.chart.axes.find(axis=>!!axis.isXAxis);if(xAxis){const xMax=this.state.xMax||void 0;const extrm=xAxis.getExtremes();this.chart.xAxis[0].options.plotLines=this.xAxisPlotLines();this.chart.xAxis[0].update(this.chart.xAxis[0].options);if(xMax&&xMax>this.t.dayAgo.toDate().valueOf()){xAxis.setExtremes(extrm.min,extrm.max)}}}}componentDidUpdate(oldProps,prevState){return __async(this,null,function*(){const newProps=this.props;const wasDesktop=oldProps.windowWidth>1024;const isDesktop=newProps.windowWidth>1024;const didChangePath=oldProps.pathname!==newProps.pathname;const didReceiveData=oldProps.tokens!==this.props.tokens;const didChangeBalances=oldProps.balances!==this.props.balances;const walletValueChanged=oldProps.walletValue!==this.props.walletValue;const didReceiveMoneyMarket=!oldProps.mmAccount.liquidity&&this.props.mmAccount.liquidity;const didChangeSavings=oldProps.savingsWalletRaw!==this.props.savingsWalletRaw;if(didChangePath||isDesktop!==wasDesktop||didReceiveMoneyMarket||didChangeSavings){yield this.constructChartData()}if(prevState.xMin!==this.state.xMin||prevState.xMax!==this.state.xMax){this.updateGrouping()}})}calcPcnt(baseValue,endPriceVal){if(baseValue===0)return 0;const price=endPriceVal?endPriceVal:this.state.valueNow;const diff=price-baseValue;const percentage=diff/baseValue;return percentage}calcChange(baseValue,endPriceVal){if(baseValue===0)return 0;const price=endPriceVal?endPriceVal:this.state.valueNow;const diff=price-baseValue;return diff}calcXevents(){const xEventDepositValues=[];const xEventWithdrawValues=[];for(const k of Object.keys(this.props.depositWithdrawDeltas)){for(let i=0;i<this.props.depositWithdrawDeltas[k].length;i++){if(this.props.depositWithdrawDeltas[k][i][1]>0){xEventDepositValues.push(this.props.depositWithdrawDeltas[k][i][0])}else if(this.props.depositWithdrawDeltas[k][i][1]<0){xEventWithdrawValues.push(this.props.depositWithdrawDeltas[k][i][0])}}}this.xEventDepositVals=xEventDepositValues.sort();this.xEventWithdrawVals=xEventWithdrawValues.sort()}constructChartData(){return __async(this,null,function*(){const tm=yield web_worker_pool.sendCommand("PriceGraph.ConstructChartData",[{balances:this.props.balances,txHistoryBals:this.props.txHistoryBals,earliestTimestamp:this.props.earliestTimestamp,mmAccount:this.props.mmAccount,savingsWallet:this.props.savingsWallet,queryString:window.location.search}]);let dayAgoValue=0;let weekAgoValue=0;let monthAgoValue=0;let month3AgoValue=0;let month6AgoValue=0;let yearAgoValue=0;let ytdValue=0;let fiveYearsAgoValue=0;let currentValue=0;let valueMin=0;let yMin=Infinity;let yMax=0;let iFiveYearsAgo=0;tm.forEach(([ts,v],i)=>{const m=moment_default()(ts).utc();const isAfterDayAgo=m.isAfter(this.t.dayAgo);const isBeforeDayAgo=m.isBefore(this.t.dayAgo);const isBeforeWeekAgo=m.isBefore(this.t.weekAgo);const isBeforeMonthAgo=m.isBefore(this.t.monthAgo);const isBeforeMonth3Ago=m.isBefore(this.t.month3Ago);const isBeforeMonth6Ago=m.isBefore(this.t.month6Ago);const isBeforeYearAgo=m.isBefore(this.t.yearAgo);const isBeforeFiveYearsAgo=m.isBefore(this.t.fiveYearsAgo);const isBeforeYTD=m.isBefore(this.t.ytd);if(isAfterDayAgo){if(v<yMin){yMin=v}if(v>yMax){yMax=v}}if(isBeforeDayAgo){dayAgoValue=v}if(isBeforeWeekAgo){weekAgoValue=v}if(isBeforeMonthAgo){monthAgoValue=v}if(isBeforeMonth3Ago){month3AgoValue=v}if(isBeforeMonth6Ago){month6AgoValue=v}if(isBeforeYearAgo){yearAgoValue=v}if(isBeforeYTD){ytdValue=v}if(isBeforeFiveYearsAgo){iFiveYearsAgo=i;fiveYearsAgoValue=v}currentValue=v;if(valueMin===0||v<valueMin)valueMin=v});const firstVal=tm[0]&&Number(tm[0][1])||0;this.setState({chartData:tm.slice(iFiveYearsAgo),valueMin,valueNow:currentValue,valueDayAgo:dayAgoValue,valueWeekAgo:weekAgoValue,valueMonthAgo:monthAgoValue,value3MonthAgo:month3AgoValue,value6MonthAgo:month6AgoValue,valueYearAgo:yearAgoValue,valueFiveYearsAgo:fiveYearsAgoValue,valueYTD:ytdValue,initialValue:firstVal,yMin,yMax},()=>this.renderChart());setTimeout(()=>{this.setPcntChange(this.state.rangeSelection)},0)})}setPcntChange(range){var _a;if(range===null)return;const{chartData}=this.state;let pcnt=0;let baseVal=0;let xMin=0;const xMax=chartData&&((_a=chartData[chartData.length-1])==null?void 0:_a[0])||0;const{valueNow,valueDayAgo,valueWeekAgo,valueMonthAgo,value3MonthAgo,valueYearAgo,valueFiveYearsAgo,valueYTD,initialValue,valueMin}=this.state;switch(range){case 0:{baseVal=valueDayAgo||valueMin;xMin=this.t.dayAgo.valueOf();break}case 1:{baseVal=valueWeekAgo||valueMin;xMin=this.t.weekAgo.valueOf();break}case 2:{baseVal=valueMonthAgo||valueMin;xMin=this.t.monthAgo.valueOf();break}case 3:{baseVal=value3MonthAgo||valueMin;xMin=this.t.month3Ago.valueOf();break}case 4:{baseVal=valueYearAgo||valueMin;xMin=this.t.yearAgo.valueOf();break}case 5:{baseVal=valueYTD||valueMin;xMin=this.t.ytd.valueOf();break}case 6:{baseVal=valueFiveYearsAgo||valueMin;xMin=this.t.fiveYearsAgo.valueOf();break}}pcnt=this.calcPcnt(baseVal);const usdChange=this.calcChange(baseVal);xMin=Math.max(xMin,0);this.setState({usdChange,pcntChange:pcnt,rangeSelection:range,xMin,xMax},()=>{if(this.chart){this.chart.xAxis[0].setExtremes(xMin,xMax);if(this.chart.rangeSelector){this.chart.rangeSelector.clickButton(range)}this.chart.redraw()}})}xAxisPlotLines(){this.calcXevents();const verticalLines=[];const depositLineColor="#55ff76";const depositGrad={linearGradient:[0,700,0,0],stops:[[0,"#FFFFFF"],[1,depositLineColor]]};for(const xev of this.xEventDepositVals){verticalLines.push({color:depositGrad,dashStyle:"ShortDot",width:1,value:xev})}const withdrawLineColor="#ffb7db";const withdrawGrad={linearGradient:[0,0,0,600],stops:[[0,"#FFFFFF"],[1,withdrawLineColor]]};for(const xev of this.xEventWithdrawVals){verticalLines.push({color:withdrawGrad,dashStyle:"ShortDot",width:1,value:xev})}return verticalLines}getUSDValue(){const{balances}=this.props;if(!balances||!balances)return 0;const tokensValue=balances.reduce((sum,token)=>{const exp=new(bignumber_default())(PriceChart_pow(10,+token.decimals));const bn=new(bignumber_default())(token.balance);const balance=bn.div(exp);const value=balance.mul(token.price_usd||0);return sum+value.toNumber()},0);return numeral_default()(tokensValue).format("$0,0.00")}render(){const{valueNow,valueDayAgo,valueWeekAgo,valueMonthAgo,pcntChange}=this.state;const{wallet,isDesktop}=this.props;const pctnChangeFormatted=!isNaN(+pcntChange)?numeral_default()(Math.abs(pcntChange)).format("0,0.00%"):0;const rangeColorStyle=change2=>{return+change2===0?"rgba(0,0,0,.85)":+change2>0?"#00be90":"#ed5f47"};const stats=react_default().createElement(Stats,null,react_default().createElement(Stat,null,react_default().createElement(StatValue,{positive:this.state.usdChange>0,negative:this.state.usdChange<0},+pcntChange>0&&react_default().createElement(Arrs,null,"\u25B2"),+pcntChange<0&&react_default().createElement(Arrs,null,"\u25BC"),pctnChangeFormatted)));const change=react_default().createElement(ChangeRow,null,react_default().createElement(ChangeLabel,null,this.state.xMin&&`${moment_default()(this.state.xMin).format("MM/DD/YY")}`,` - `,this.state.xMax&&`${moment_default()(this.state.xMax).format("MM/DD/YY")}`),react_default().createElement(Change,{positive:this.state.usdChange>0,negative:this.state.usdChange<0},this.state.usdChange>0&&"+",numeral_default()(this.state.usdChange).format("$0,00.00")," ","(",+pcntChange>0&&react_default().createElement(Arrs,null,"\u25B2"),+pcntChange<0&&react_default().createElement(Arrs,null,"\u25BC"),pctnChangeFormatted,")"));return react_default().createElement(PriceChart_Container,null,change,react_default().createElement("div",{id:"chart-container",style:{position:"absolute",top:"0",left:"0",right:"0",bottom:"0"}},react_default().createElement(BeatLoader_default(),{css:"position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); opacity:0.5;",color:"grey",size:20})))}}const PriceChart_Container=styled_components_browser_esm.ZP.div`
413  position: relative;
414  width: 100%;
415  padding: 0;
416  margin: 0;
417  padding-top: 2px;
418  // z-index: 1;
419  // height: 100%;
420`;const PriceChart_Header=styled_components_browser_esm.ZP.div`
421  display: flex;
422  height: 40px;
423  justify-content: space-between;
424  margin-bottom: .5rem;
425  align-items: center;
426
427  ${p=>p.hideStats&&`
428    @media(max-width: 1024px) {
429      display: none;
430    }
431  `}
432`;const ChangeRow=styled_components_browser_esm.ZP.div`
433  z-index: 1;
434  position: relative;
435  top: -25px;
436  display: flex;
437  justify-content: space-between;
438  align-items: center;
439  padding: 0 15px;
440
441  @media(min-width: 1024px) {
442    top: -17px;
443  }
444`;const ChangeLabel=styled_components_browser_esm.ZP.div``;const Change=styled_components_browser_esm.ZP.div`
445  font-weight: 500;
446  ${p=>p.positive&&`color: ${p.theme.colors.positiveValueGreen};`}
447  ${p=>p.negative&&`color: ${p.theme.colors.negativeValueRed};`}
448`;const Title=styled_components_browser_esm.ZP.div`
449  color: ${p=>p.theme.colors.blueDarkFont};
450  font-weight: 500;
451  font-size: 1.5em;
452
453  @media (max-width: 1024px) {
454    display: none;
455  }
456`;const Stats=styled_components_browser_esm.ZP.div`
457  display: flex;
458  justify-content: space-around;
459  z-index: 10;
460  position: absolute;
461  top: 8px;
462  right: 3;
463  @media (max-width: 1024px) {
464    top: 10px;
465  }
466  @media (max-width: 1024px) and (min-height: 800px) {
467    right: 10;
468  }
469`;const Stat=styled_components_browser_esm.ZP.div`
470  display: flex;
471  flex-direction: column;
472  margin: 0 20px;
473  flex: 0 0 40px;
474  color: ${p=>p.theme.colors.blueDarkFont};
475
476  &:last-child {
477    margin-right: 5px;
478  }
479
480  @media(max-width: 768px) {
481    margin: 0 auto;
482  }
483`;const Arrs=styled_components_browser_esm.ZP.span`
484  vertical-align: 1px;
485  font-size: 0.7rem;
486  margin: 4px 1px 0 1px;
487`;const StatLabel=styled_components_browser_esm.ZP.div`
488  font-size: 10px;
489  color: hsl(0,0%,60%);
490  font-weight: 400;
491  text-transform: uppercase;
492`;const StatValue=styled_components_browser_esm.ZP.div`
493  font-size: 1.2rem;
494  font-weight: 500;
495  display: flex;
496  @media(max-width: 1024px) {
497    font-size: 1rem;
498  }
499  ${p=>p.positive&&`color: ${p.theme.colors.positiveValueGreen};`}
500  ${p=>p.negative&&`color: ${p.theme.colors.negativeValueRed};`}
501`;const Green=styled_components_browser_esm.ZP.span`
502  color: green;
503`;const Red=styled_components_browser_esm.ZP.span`
504  color: red;
505`;const PriceChart_mapStateToProps=state=>({wallet:state.wallet.wallet,savingsWallet:selectors.selectWyreWalletAsBalances(state),savingsWalletRaw:state.wyre.wallet,tokens:state.wallet.tokens,isDesktop:state.app.windowWidth>
5051024,mmAccount:state.wallet.moneyMarketAccount,txHistoryBals:(0,activity_selectors.selectTransactionDeltas)(state)[0],earliestTimestamp:Number((0,activity_selectors.selectTransactionDeltas)(state)[1]),depositWithdrawDeltas:(0,activity_selectors.selectTransactionDeltas)(state)[2]});const PriceChart_mapDispatchToProps=dispatch=>(0,redux.DE)({fetchToken:fetch_token.ZP,fetchTransactions:fetch_transactions.Z,fetchWyreWalletTransfers:fetch_wallet_transfers.Z,fetchSavingsAccruals:fetch_savings_accruals.Z},dispatch);const Overview_PriceChart=(0,es.$j)(PriceChart_mapStateToProps,PriceChart_mapDispatchToProps)(PriceChart);var lib_achievements=__webpack_require__(75232);var analytics=__webpack_require__(33397);var circlecoin_achievements=__webpack_require__(93999);var modal=__webpack_require__(96680);;function getPcntComplete(completed,totalAchievements){if(!completed||!totalAchievements){return 0}return Math.ceil(completed/totalAchievements*100)}function EarnCC(props){if(!(props.achievements||[]).length){return Loader()}const{geoipCountry,rewards}=props;const achievements=(0,lib_achievements.nH)((0,lib_achievements.xA)(rewards,geoipCountry,props.achievements));const achievementsCompleted=achievements.filter(a=>a.complete);const percentageCompleted=getPcntComplete(achievementsCompleted.length,achievements.length);const percentageCompletedStr=`${percentageCompleted}%`;const progressBar=react_default().createElement(ProgressBar,null,react_default().createElement(PercentComplete,{title:"Percent Completed"},percentageCompletedStr),react_default().createElement(ProgressBarShader,{progress:percentageCompleted}));return react_default().createElement(EarnContainer,null,react_default().createElement(Subtitle,{style:{paddingLeft:"5px",display:"flex"}},"Earn Crypto",progressBar),react_default().createElement(AchievementsContainer,null,achievements.map(achievement=>{const hasYieldWallet=!!props.wyreWallet&&props.wyreWallet.type==="SAVINGS";if(circlecoin_achievements.r1.includes(achievement.id)&&!hasYieldWallet){return null}return react_default().createElement(AchievementRow,{key:achievement.id},react_default().createElement(AchievementIcon,{className:`icon-${achievement.iconId}`}),react_default().createElement(AchievementTitle,null,achievement.title),react_default().createElement(AchievementAction,null,achievement.complete&&!achievement.isRepeatable?react_default().createElement(CompleteIcon,null):react_default().createElement(AchievementCTA,{onClick:()=>{const{queryParams,redirect}=props;const params=new URLSearchParams(queryParams);params.set("achievement",achievement.id);redirect({search:params.toString()});const label=`earn: ${achievement.id}`;(0,analytics.qe)(analytics.Vy.CLICK_ACHIEVEMENT,{label,category:"Rewards"})}},"Start")))})))}const OverviewAchievements_mapStateToProps=state=>({geoipCountry:state.app.geoipCountry,fetchingProfile:state.user&&state.user.isFetchingProfile,fetchingAchievements:state.earn&&state.earn.isFetchingAchievements,queryParams:state.router.location&&state.router.location.search||"",rewards:state.earn.rewards,wyreWallet:state.wyre.wallet});const OverviewAchievements_mapDispatchToProps=dispatch=>({redirect:to=>dispatch((0,esm_actions.VF)(to)),setModalView:v=>dispatch(modal.Nw.push(v))});const OverviewAchievements=(0,es.$j)(OverviewAchievements_mapStateToProps,OverviewAchievements_mapDispatchToProps)(EarnCC);var client_redux=__webpack_require__(25255);var modal_actions=__webpack_require__(72187);var modal_types=__webpack_require__(38205);var user=__webpack_require__(17234);;function OverviewIntro_OverviewIntro({modalPush,setModalData,redirect,contacts,eth,btc,isSecure,hasDevice,queryParams,isEmbeddedInMobileApp,needsVerification,usdBalance}){const user2=(0,client_redux.useSelector)(s=>s.user.profile);const setAchievementView=view=>{const params=new URLSearchParams(queryParams);view?params.set("achievement",view):params.delete("achievement");redirect({search:params.toString()})};return react_default().createElement(react_default().Fragment,null,react_default().createElement(OverviewIntro.OverviewIntro,null,react_default().createElement(OverviewIntro.Content,{style:{paddingBottom:"2.5rem"}},react_default().createElement(OverviewIntro.OverviewIntroHeader,null,react_default().createElement("img",{src:"https://cdn.coincircle.com/img/humaans.svg"})),react_default().createElement(OverviewIntro.Headline,null,"Welcome to your smart wallet."),react_default().createElement(OverviewIntro.Detail,null,"Here are some shortcuts to get started."),react_default().createElement(OverviewIntro.ButtonGroup,null,react_default().createElement(OverviewIntro.Button,{onClick:()=>
505{if(isEmbeddedInMobileApp){return window.rn.postMessage(window.rn.MessageTypes.START_CONTACTS_IMPORT_EARN)}setAchievementView("SEND_EMAIL_INVITES_ACHIEVEMENT_GMAIL")}},react_default().createElement("span",null,"1"),"Award Friends ",constants.CIRCLE_COIN_NAME),react_default().createElement(OverviewIntro.Button,{onClick:()=>{if(isSecure){if(!hasDevice){return modalPush(modal_types.k.ACCOUNT_REQUIREMENTS)}if((user2==null?void 0:user2.allowedPlusWalletType)==="NONE"){return redirect("/wallet/assets/usd?action=deposit")}return redirect("/wallet/yield/dai?action=deposit")}setModalData("This feature requires an account password.");modalPush(modal_types.k.SET_INIT_PASSWORD)}},react_default().createElement("span",null,"2"),`Fund Your ${constants.COMPANY_NAME} Wallet`),react_default().createElement(OverviewIntro.Button,{onClick:()=>{modalPush(modal_types.k.WALLET_RECEIVE)}},react_default().createElement("span",null,"3"),"Request Payment")),react_default().createElement(OverviewIntro.BorrowLink,null,"Interested in Borrowing Crypto?",react_default().createElement("span",{style:{textDecoration:"underline",marginLeft:"5px",cursor:"pointer"},onClick:()=>redirect("/wallet/lending/borrow")},"Click Here")))))}const OverviewIntro_mapStateToProps=state=>({isSecure:state.user.isSecured!==false,hasDevice:state.user.profile&&state.user.profile.device!==null,queryParams:state.router.location&&state.router.location.search,isEmbeddedInMobileApp:state.app.isEmbeddedInMobileApp,needsVerification:user.ZP.selectors.selectIsIDVerificationRequired(state),usdBalance:(0,selectors.selectUSDBalance)(state)});const OverviewIntro_mapDispatchToProps=dispatch=>({redirect:to=>dispatch((0,esm_actions.VF)(to)),modalPush:v=>dispatch(modal_actions.Z.push(v)),setModalData:v=>dispatch(modal_actions.Z.setModalData(v))});const Overview_OverviewIntro=(0,es.$j)(OverviewIntro_mapStateToProps,OverviewIntro_mapDispatchToProps)(OverviewIntro_OverviewIntro);var fetch_contacts=__webpack_require__(87992);var UI=__webpack_require__(61280);var CircleCoin_EarnCC=__webpack_require__(47921);var fetchAchievements=__webpack_require__(3705);var fetchMobileAchievements=__webpack_require__(64851);var get_vars=__webpack_require__(73703);var Lending=__webpack_require__(2255);;var Overview_pow=Math.pow;var Overview_async=(__this,__arguments,generator)=>{return new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}};var rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}};var step=result=>{return result.done?resolve(result.value):Promise.resolve(result.value).then(fulfilled,rejected)};step((generator=generator.apply(__this,__arguments)).next())})};class Overview extends react_default().Component{constructor(){super(...arguments);this.desktopPieContainer=null;this.state={tabViewIndex:0,achievements:[],pieHeight:null,pieWidth:null};this.handleTabChange=(event,value)=>{this.setState({tabViewIndex:value})};this.renderEarnAchievements=()=>{if(this.props.isFetchingContacts){return react_default().createElement(UI.aN,null)}return react_default().createElement(CircleCoin_EarnCC.Z,{contacts:this.props.contacts,showDescription:false})}}componentDidMount(){return Overview_async(this,null,function*(){const mobileVars=(0,get_vars.rD)();if(!this.props.achievements.length||mobileVars.inApp){if(mobileVars.inApp){this.props.fetchMobileAchievements()}else{this.props.fetchAchievements()}}if(!this.props.contacts.length){this.props.fetchContactsState()}})}isMemberLessThan30Days(){const{profile}=this.props;if(profile&&profile.memberSince){const dateThreshold=new Date(profile.memberSince).getTime()+30*24*60*60*1e3;const today=new Date().getTime();return today<=dateThreshold}return false}filterAchievements(achievmentsToFilter){const{isMobile}=this.props;return achievmentsToFilter.filter(a=>{return a.mobile===isMobile||a.desktop!==isMobile})}calcMMValue(asset){const supply=parseFloat(asset.supplyBalance);return supply}getTokenBalance(token){const{mmAccount,wyreBalances}=this.props;let bal=+token.balance;if(Object.values(types.t).includes(token.symbol)){if(mmAccount&&mmAccount.assets&&mmAccount.assets.length){const assets=mmAccount.assets.filter(a=>a.symbol===token.symbol);if(assets&&assets.length){for(const asset of assets){const mmVal=this.calcMMValue(asset);const decimals=+token.decimals;bal+=decimals>0?mmVal*Overview_pow(10,decimals):mmVal}}}}if(token.contractAddress==="0x0"){const s=wyreBalances.find(b=>b.contractAddress==="SAVINGS:ETH");if(s){bal+=+token.decimals>0?s.decimaledBalance*Overview_pow(10,+token.decimals):s.decimaledBalance}}if(token.contractAddress==="bitcoin"){const s=wyreBalances.find(b=>b.contractAddress==="SAVINGS:BTC");if(s){bal+=+token.decimals>0?s.decimaledBalance*Overview_pow(10,+token.decimals):s.decimaledBalance}}if(token.isUSD){const s=wyreBalances.find(b=>b.contractAddress==="SAVINGS:DAI");if(s){bal+=+token.decimals>0?s.decimaledBalance*Overview_pow(10,+token.decimals):s.decimaledBalance}}return bal.toString()}getWalletValue(balances){const tokensValue=balances.reduce((sum,token)=>{const exp=new(bignumber_default())(Overview_pow(10,+token.decimals));const tokenBalance=this.getTokenBalance(token);const bn=new(bignumber_default())(tokenBalance);const balance=bn.div(exp);const price=!token.isUSD?token.price_usd:1;const value=balance.mul(String(price||0));return sum+value.toNumber()},0);return numeral_default()(tokensValue).format("$0,0.00")}isChartRTG(){return this.props.balances&&this.props.wyreBalances&&this.props.mmAccount&&this.props.balances.length&&this.props.wyreBalances.length&&this.props.BTCPrice>0}render(){const{tabViewIndex}=this.state;const{isMobile,windowWidth,pathname,wallet,wallets,balances,allBalances}=this.props;const btcWallet=wallets.find(w=>w.protocol==="BTC");const mobileVars=(0,get_vars.rD)();const sortedAchievements=(0,lib_achievements.nH)(this.props.achievements);const filteredAchievements=this.filterAchievements(sortedAchievements);const isDesktop=windowWidth>768;const overviewPathTest=/^\/wallet\/overview/g.test(pathname);const oneBalanceHasAssetId=allBalances.some(b=>!!b.assetId);const noRenderPriceChart=!isDesktop&&!overviewPathTest;const willRenderPriceChart=!noRenderPriceChart&&oneBalanceHasAssetId;const holdings=allBalances.reduce((sum,b)=>
505{if(isNaN(Number(b.balance))){return sum}return sum+ +b.balance},0);const hasHoldings=holdings>0;const walletValue=this.getWalletValue(balances)||"";const iPhoneX=mobileVars.inApp&&mobileVars.isIphoneX;const isUSDOnly=this.props.onlyHasUSD;const willRenderHoldingsChart=()=>{let usdHoldingsCount=0;balances.map(token=>{if(+token.balance>0&&token.price_usd)usdHoldingsCount++});return usdHoldingsCount>1};let containerStyle={};if(!isDesktop){containerStyle={paddingTop:0}}if(this.props.inMobileApp||isMobile){containerStyle={paddingTop:0,maxHeight:"calc(100vh - 60px)",overflow:"scroll"}}if(!this.props.walletBalanceValue||isUSDOnly){return react_default().createElement(Overview_OverviewIntro,{contacts:this.props.contacts,btc:this.props.balances.find(b=>b.symbol==="BTC"),eth:this.props.balances.find(b=>b.symbol==="ETH")})}return react_default().createElement(Container,{style:containerStyle},react_default().createElement(Header,{iphonex:mobileVars.isIphoneX},react_default().createElement("h2",{style:{color:"rgb(28, 46, 91)",fontWeight:500,margin:0,fontSize:"20px"}},"Portfolio Value"),react_default().createElement(OverviewBalance,null,numeral_default()(this.props.walletBalanceValue).format("$0,0.00"))),react_default().createElement(LineChartContainer,null,willRenderPriceChart&&this.isChartRTG()&&react_default().createElement(Overview_PriceChart,{balances:this.props.balances,windowWidth,pathname,walletValue})||react_default().createElement(BeatLoader_default(),{css:"margin: auto; opacity:0.5;",color:"grey",size:20})),!isDesktop&&this.isChartRTG()&&react_default().createElement(PieContainer,{style:{display:"flex",alignItems:"center",flexDirection:"column",justifyContent:"center",flex:"0 0 50%",maxWidth:"none",maxHeight:"100%"},ref:ref=>{if(ref&&this.state.pieHeight!==ref.clientHeight){this.setState({pieHeight:ref.clientHeight,pieWidth:ref.clientWidth})}}},react_default().createElement(Subtitle,{style:{marginBottom:35,position:"absolute",top:"10px",left:"10px"}},"Holdings"),react_default().createElement(Overview_PieChart,{balances,isDesktop:false,height:this.state.pieHeight,width:this.state.pieWidth})),tabViewIndex===1&&!isDesktop&&react_default().createElement(Lending.default,null),isDesktop&&react_default().createElement(Row,{style:{minHeight:"350px"}},isDesktop&&hasHoldings&&!!this.props.walletBalanceValue&&this.isChartRTG()&&react_default().createElement(PieContainer,{style:{display:"flex",alignItems:"center",flexDirection:"column",justifyContent:"center",flex:"0 0 50%",maxWidth:"none",maxHeight:"100%"},ref:ref=>{if(ref&&this.state.pieHeight!==ref.clientHeight){this.setState({pieHeight:ref.clientHeight,pieWidth:ref.clientWidth})}}},react_default().createElement(Subtitle,{style:{marginBottom:35,position:"absolute",top:"10px",left:"10px"}},"Holdings"),this.state.pieHeight&&this.state.pieWidth&&this.isChartRTG()&&react_default().createElement(Overview_PieChart,{balances,isDesktop:true,height:this.state.pieHeight,width:this.state.pieWidth})||null)||null,isDesktop&&!!this.props.walletBalanceValue&&react_default().createElement(OverviewAchievements,{achievements:filteredAchievements})||null,isDesktop&&!this.props.walletBalanceValue&&this.renderEarnAchievements()))}}const Overview_mapStateToProps=state=>({isMobile:state.app.windowWidth<=768,inMobileApp:state.app.isEmbeddedInMobileApp,windowWidth:state.app.windowWidth,pathname:state.router.location&&state.router.location.pathname||"",achievements:state.earn&&state.earn.achievements,contacts:state.invite&&state.invite.contacts,isFetchingContacts:state.invite&&state.invite.isFetchingContacts,wallet:state.wallet.wallet,wallets:state.wallet.wallets,mmAccount:state.wallet.moneyMarketAccount,walletBalanceValue:selectors.selectWalletBalanceValue(state),walletUSDValue:selectors.selectUSDBalance(state),mmUSDValue:selectors.selectMoneyMarketBalanceValue(state),wyreBalances:selectors.selectWyreWalletAsBalances(state),profile:state.user&&state.user.profile,allBalances:selectors.selectBalancesWithSavings(state),balances:selectors.selectBalances(state),BTCPrice:selectors.selectBTCUSDPrice(state),onlyHasUSD:selectors.selectOnlyHasUSD(state)});const Overview_mapDispatchToProps=d=>(0,redux.DE)({setActiveToken:actions.Z.setActiveToken,fetchAchievements:fetchAchievements.ZP,fetchMobileAchievements:fetchMobileAchievements.Z,fetchContactsState:fetch_contacts.ZP},d);const Overview_Overview=(0,es.$j)(Overview_mapStateToProps,Overview_mapDispatchToProps)(Overview);;const components_Overview=Overview_Overview},61280:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{aN:()=>Loader,Xk:()=>Paper,mQ:()=>Tabs});var react=__webpack_require__(67294);var styled_components_browser_esm=__webpack_require__(71893);var BeatLoader=__webpack_require__(18498);var BeatLoader_default=__webpack_require__.n(BeatLoader);var UI=__webpack_require__(74315);var get_vars=__webpack_require__(73703);;function _getHeaderPadding(){const vars=getVars();if(vars.inApp&&vars.sys&&vars.sys.IOS){return vars.isIphoneX?30:10}return null}function _getHeaderHeight(){const vars=getVars();if(vars.inApp&&vars.sys&&vars.sys.IOS){return vars.isIphoneX?"5rem":"3.5rem"}return null}function getTokenDetailVars(){return{header:_getHeaderPadding(),height:_getHeaderHeight()}}function getIPhoneX(){const vars=getVars();return{isIPhoneX:vars.inApp&&vars.sys&&vars.sys.IOS&&vars.isIphoneX}}function getAndroid(){const vars=(0,get_vars.rD)();
505return{isDroid:vars.inApp&&vars.sys&&!vars.sys.IOS&&vars.sys.ANDROID}};const isDroid=getAndroid();const Tabs={Header:styled_components_browser_esm.ZP.div`
506    display: flex;
507    padding: 0em 1em;
508    margin-bottom: 2rem;
509    @media (max-width: 1024px) {
510      margin-bottom: 1rem;
511    }
512    @media(max-width: 320px) {
513      font-size: 12px;
514    }
515`,Tab:styled_components_browser_esm.ZP.div`
516    color: #d9d9d9;
517    cursor: pointer;
518    transition: .2s;
519    width: auto;
520    font-weight: 500;
521    padding: 0.5em 1em;
522    border-bottom-width: 2px;
523    border-bottom-style: solid;
524    border-bottom-color: #ffffff;
525    margin: 0 2;
526    text-align: center;
527    &.active {
528      color: #508DC0;
529      border-color: #508DC0;
530    };
531    &:hover:not(.active) {
532      color: #9b9b9b;
533      border-color: #9b9b9b;
534    };
535    @media(max-width: 420px) {
536      max-width: 90%;
537    }
538`,Close:styled_components_browser_esm.ZP.div`
539    font-size: 18px;
540    position: absolute;
541    right: 10px;
542    top: 10px;
543    cursor: pointer;
544    color: hsl(0,0%,15%);
545    @media (min-width: 1024px) {
546      display: none;
547    }
548`,BtnCopy:styled_components_browser_esm.ZP.button`
549  position: relative;
550  display: inline-block;
551  width: 20px;
552  height: 18px;
553  outline: none;
554  border: none;
555  color: hsl(198, 71%, 43%);
556  -webkit-transition: color 150ms ease-out;
557  transition: color 150ms ease-out;
558  background: none;
559  &:hover { color:#118fbd }
560  &[data-clipped="true"]:after { opacity:1 }
561  &:before {
562    position:absolute;
563    top:0;
564    left:0;
565    width:100%;
566    text-align:center;
567    line-height:1.4rem;
568    font-size: 0.85rem;
569    cursor: pointer;
570  }
571  &:after {
572    content: 'Address Copied!';
573    position: absolute;
574    top: -2.35rem;
575    left: calc(100% - 6.5rem);
576    padding: 0 .5rem;
577    border: 1px solid hsla(0, 0%, 0%, 0.2);
578    border-radius: 3px;
579    line-height: 2rem;
580    color: hsl(0, 0%, 100%);
581    font-weight: 400;
582    font-family: 'proxima-nova',sans-serif;
583    font-size: 0.775rem;
584    white-space: nowrap;
585    z-index: 4;
586    pointer-events: none;
587    -webkit-transition: opacity 150ms ease-out;
588    transition: opacity 150ms ease-out;
589    background: hsla(0, 0%, 0%, 0.9);
590    opacity: 0;
591  }
592`,Title:styled_components_browser_esm.ZP.div`
593    margin: 15px 0 15px 25px;
594    font-weight: 300;
595    color: hsl(0, 0%, 50%);
596  `,Row:styled_components_browser_esm.ZP.div`
597    min-height: 40%;
598  `,Paginator:styled_components_browser_esm.ZP.div`
599    margin-top: auto;
600    display: flex;
601    align-items: center;
602    justify-content: space-between;
603    padding: 10px 15px;
604    color: hsl(0, 0%, 40%);
605`,PagePrev:styled_components_browser_esm.ZP.span.attrs({className:"icon-caret-left"})`
606    cursor: pointer;
607`,PageNext:styled_components_browser_esm.ZP.span.attrs({className:"icon-caret-right"})`
608    cursor: pointer;
609`,PageDetails:styled_components_browser_esm.ZP.div`
610    font-size: 14px;
611    margin: 0 auto;
612`};const Paper=styled_components_browser_esm.ZP.div`
613  position: relative;
614  display: flex;
615  flex-direction: column;
616  box-shadow: none;
617  border: 1px solid hsl(0, 0%, 90%);
618  border-left: none;
619  border-right: none;
620  background: #ffffff;
621  font-weight: 200;
622  flex: 1;
623  min-width: 0;
624  align-self: flex-start;
625  padding-top: 0rem;
626  width: 100%;
627  @media (min-width: 1024px) {
628    padding-top: 1.5rem;
629  }
630  @media(max-width: 768px) {
631    height: ${isDroid?"100%":"100vh"};
632  }
633`;const PaperMobileHeaderBar=styled_components_browser_esm.ZP.div`
634  position: relative;
635  display: flex;
636  flex-direction: column;
637  box-shadow: none;
638  border: 1px solid hsl(0, 0%, 90%);
639  border-left: none;
640  border-right: none;
641  background: #ffffff;
642  font-weight: 200;
643  flex: 1;
644  min-width: 0;
645  align-self: flex-start;
646  padding-top: 0rem;
647`;const Loader=()=>{return react.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-around",flexGrow:2,padding:"30px",margin:"auto",minHeight:"40%"}},react.createElement(BeatLoader_default(),{color:"#BDBDBD",size:30,margin:"2px"}))};const noStats=()=>{return React.createElement(Detail.Wrapper,null,React.createElement(Detail.Body,null,React.createElement(Detail.Empty,null,React.createElement(Detail.EmptyMessage,null,"No stats for the selected token."))))}}}]);
648
649//# sourceMappingURL=4101.7f03485bef6f4021110a.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.