@safe-stars/components
Version:
React component library for buying Telegram Stars in Telegram Mini Apps via Safe Stars.
281 lines (260 loc) • 16.3 kB
JavaScript
"use strict";const i=require("./index-CtZaCMo8.cjs"),a=require("./if-defined-MmHKu2JE.cjs"),y=require("./index-BERKYpvk.cjs");require("./index-CKpCHYPu.cjs");require("./index-tmdyqLVs.cjs");require("./index-BXulAD-4.cjs");var A;(function(s){s.approve="approved",s.bought="bought",s.borrow="borrowed",s.burn="burnt",s.cancel="canceled",s.claim="claimed",s.deploy="deployed",s.deposit="deposited",s.execute="executed",s.mint="minted",s.receive="received",s.repay="repaid",s.send="sent",s.sell="sold",s.stake="staked",s.trade="swapped",s.unstake="unstaked",s.withdraw="withdrawn"})(A||(A={}));const T=i.i`
:host > wui-flex {
display: flex;
justify-content: center;
align-items: center;
position: relative;
width: 40px;
height: 40px;
box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005);
background-color: var(--wui-color-gray-glass-005);
}
:host > wui-flex wui-image {
display: block;
}
:host > wui-flex,
:host > wui-flex wui-image,
.swap-images-container,
.swap-images-container.nft,
wui-image.nft {
border-top-left-radius: var(--local-left-border-radius);
border-top-right-radius: var(--local-right-border-radius);
border-bottom-left-radius: var(--local-left-border-radius);
border-bottom-right-radius: var(--local-right-border-radius);
}
wui-icon {
width: 20px;
height: 20px;
}
wui-icon-box {
position: absolute;
right: 0;
bottom: 0;
transform: translate(20%, 20%);
}
.swap-images-container {
position: relative;
width: 40px;
height: 40px;
overflow: hidden;
}
.swap-images-container wui-image:first-child {
position: absolute;
width: 40px;
height: 40px;
top: 0;
left: 0%;
clip-path: inset(0px calc(50% + 2px) 0px 0%);
}
.swap-images-container wui-image:last-child {
clip-path: inset(0px 0px 0px calc(50% + 2px));
}
`;var g=function(s,t,e,o){var n=arguments.length,r=n<3?t:o===null?o=Object.getOwnPropertyDescriptor(t,e):o,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(s,t,e,o);else for(var c=s.length-1;c>=0;c--)(l=s[c])&&(r=(n<3?l(r):n>3?l(t,e,r):l(t,e))||r);return n>3&&r&&Object.defineProperty(t,e,r),r};let w=class extends i.i$1{constructor(){super(...arguments),this.images=[],this.secondImage={type:void 0,url:""}}render(){const[t,e]=this.images,o=(t==null?void 0:t.type)==="NFT",n=e!=null&&e.url?e.type==="NFT":o,r=o?"var(--wui-border-radius-xxs)":"var(--wui-border-radius-s)",l=n?"var(--wui-border-radius-xxs)":"var(--wui-border-radius-s)";return this.style.cssText=`
--local-left-border-radius: ${r};
--local-right-border-radius: ${l};
`,i.x`<wui-flex> ${this.templateVisual()} ${this.templateIcon()} </wui-flex>`}templateVisual(){const[t,e]=this.images,o=t==null?void 0:t.type;return this.images.length===2&&(t!=null&&t.url||e!=null&&e.url)?i.x`<div class="swap-images-container">
${t!=null&&t.url?i.x`<wui-image src=${t.url} alt="Transaction image"></wui-image>`:null}
${e!=null&&e.url?i.x`<wui-image src=${e.url} alt="Transaction image"></wui-image>`:null}
</div>`:t!=null&&t.url?i.x`<wui-image src=${t.url} alt="Transaction image"></wui-image>`:o==="NFT"?i.x`<wui-icon size="inherit" color="fg-200" name="nftPlaceholder"></wui-icon>`:i.x`<wui-icon size="inherit" color="fg-200" name="coinPlaceholder"></wui-icon>`}templateIcon(){let t="accent-100",e;return e=this.getIcon(),this.status&&(t=this.getStatusColor()),e?i.x`
<wui-icon-box
size="xxs"
iconColor=${t}
backgroundColor=${t}
background="opaque"
icon=${e}
?border=${!0}
borderColor="wui-color-bg-125"
></wui-icon-box>
`:null}getDirectionIcon(){switch(this.direction){case"in":return"arrowBottom";case"out":return"arrowTop";default:return}}getIcon(){return this.onlyDirectionIcon?this.getDirectionIcon():this.type==="trade"?"swapHorizontalBold":this.type==="approve"?"checkmark":this.type==="cancel"?"close":this.getDirectionIcon()}getStatusColor(){switch(this.status){case"confirmed":return"success-100";case"failed":return"error-100";case"pending":return"inverse-100";default:return"accent-100"}}};w.styles=[T];g([a.n()],w.prototype,"type",void 0);g([a.n()],w.prototype,"status",void 0);g([a.n()],w.prototype,"direction",void 0);g([a.n({type:Boolean})],w.prototype,"onlyDirectionIcon",void 0);g([a.n({type:Array})],w.prototype,"images",void 0);g([a.n({type:Object})],w.prototype,"secondImage",void 0);w=g([a.customElement("wui-transaction-visual")],w);const N=i.i`
:host > wui-flex:first-child {
align-items: center;
column-gap: var(--wui-spacing-s);
padding: 6.5px var(--wui-spacing-xs) 6.5px var(--wui-spacing-xs);
width: 100%;
}
:host > wui-flex:first-child wui-text:nth-child(1) {
text-transform: capitalize;
}
wui-transaction-visual {
width: 40px;
height: 40px;
}
wui-flex {
flex: 1;
}
:host wui-flex wui-flex {
overflow: hidden;
}
:host .description-container wui-text span {
word-break: break-all;
}
:host .description-container wui-text {
overflow: hidden;
}
:host .description-separator-icon {
margin: 0px 6px;
}
:host wui-text > span {
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
}
`;var h=function(s,t,e,o){var n=arguments.length,r=n<3?t:o===null?o=Object.getOwnPropertyDescriptor(t,e):o,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(s,t,e,o);else for(var c=s.length-1;c>=0;c--)(l=s[c])&&(r=(n<3?l(r):n>3?l(t,e,r):l(t,e))||r);return n>3&&r&&Object.defineProperty(t,e,r),r};let p=class extends i.i$1{constructor(){super(...arguments),this.type="approve",this.onlyDirectionIcon=!1,this.images=[],this.price=[],this.amount=[],this.symbol=[]}render(){return i.x`
<wui-flex>
<wui-transaction-visual
.status=${this.status}
direction=${a.o(this.direction)}
type=${this.type}
onlyDirectionIcon=${a.o(this.onlyDirectionIcon)}
.images=${this.images}
></wui-transaction-visual>
<wui-flex flexDirection="column" gap="3xs">
<wui-text variant="paragraph-600" color="fg-100">
${A[this.type]||this.type}
</wui-text>
<wui-flex class="description-container">
${this.templateDescription()} ${this.templateSecondDescription()}
</wui-flex>
</wui-flex>
<wui-text variant="micro-700" color="fg-300"><span>${this.date}</span></wui-text>
</wui-flex>
`}templateDescription(){var e;const t=(e=this.descriptions)==null?void 0:e[0];return t?i.x`
<wui-text variant="small-500" color="fg-200">
<span>${t}</span>
</wui-text>
`:null}templateSecondDescription(){var e;const t=(e=this.descriptions)==null?void 0:e[1];return t?i.x`
<wui-icon class="description-separator-icon" size="xxs" name="arrowRight"></wui-icon>
<wui-text variant="small-400" color="fg-200">
<span>${t}</span>
</wui-text>
`:null}};p.styles=[i.resetStyles,N];h([a.n()],p.prototype,"type",void 0);h([a.n({type:Array})],p.prototype,"descriptions",void 0);h([a.n()],p.prototype,"date",void 0);h([a.n({type:Boolean})],p.prototype,"onlyDirectionIcon",void 0);h([a.n()],p.prototype,"status",void 0);h([a.n()],p.prototype,"direction",void 0);h([a.n({type:Array})],p.prototype,"images",void 0);h([a.n({type:Array})],p.prototype,"price",void 0);h([a.n({type:Array})],p.prototype,"amount",void 0);h([a.n({type:Array})],p.prototype,"symbol",void 0);p=h([a.customElement("wui-transaction-list-item")],p);const R=i.i`
:host {
min-height: 100%;
}
.group-container[last-group='true'] {
padding-bottom: var(--wui-spacing-m);
}
.contentContainer {
height: 280px;
}
.contentContainer > wui-icon-box {
width: 40px;
height: 40px;
border-radius: var(--wui-border-radius-xxs);
}
.contentContainer > .textContent {
width: 65%;
}
.emptyContainer {
height: 100%;
}
`;var f=function(s,t,e,o){var n=arguments.length,r=n<3?t:o===null?o=Object.getOwnPropertyDescriptor(t,e):o,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(s,t,e,o);else for(var c=s.length-1;c>=0;c--)(l=s[c])&&(r=(n<3?l(r):n>3?l(t,e,r):l(t,e))||r);return n>3&&r&&Object.defineProperty(t,e,r),r};const C="last-transaction",k=7;let x=class extends i.i$1{constructor(){super(),this.unsubscribe=[],this.paginationObserver=void 0,this.page="activity",this.caipAddress=i.ChainController.state.activeCaipAddress,this.transactionsByYear=i.TransactionsController.state.transactionsByYear,this.loading=i.TransactionsController.state.loading,this.empty=i.TransactionsController.state.empty,this.next=i.TransactionsController.state.next,i.TransactionsController.clearCursor(),this.unsubscribe.push(i.ChainController.subscribeKey("activeCaipAddress",t=>{t&&this.caipAddress!==t&&(i.TransactionsController.resetTransactions(),i.TransactionsController.fetchTransactions(t)),this.caipAddress=t}),i.ChainController.subscribeKey("activeCaipNetwork",()=>{this.updateTransactionView()}),i.TransactionsController.subscribe(t=>{this.transactionsByYear=t.transactionsByYear,this.loading=t.loading,this.empty=t.empty,this.next=t.next}))}firstUpdated(){this.updateTransactionView(),this.createPaginationObserver()}updated(){this.setPaginationObserver()}disconnectedCallback(){this.unsubscribe.forEach(t=>t())}render(){return i.x` ${this.empty?null:this.templateTransactionsByYear()}
${this.loading?this.templateLoading():null}
${!this.loading&&this.empty?this.templateEmpty():null}`}updateTransactionView(){var o;const t=(o=i.ChainController.state.activeCaipNetwork)==null?void 0:o.caipNetworkId;i.TransactionsController.state.lastNetworkInView!==t&&(i.TransactionsController.resetTransactions(),this.caipAddress&&i.TransactionsController.fetchTransactions(i.CoreHelperUtil.getPlainAddress(this.caipAddress))),i.TransactionsController.setLastNetworkInView(t)}templateTransactionsByYear(){return Object.keys(this.transactionsByYear).sort().reverse().map(e=>{const o=parseInt(e,10),n=new Array(12).fill(null).map((r,l)=>{var u;const c=y.TransactionUtil.getTransactionGroupTitle(o,l),d=(u=this.transactionsByYear[o])==null?void 0:u[l];return{groupTitle:c,transactions:d}}).filter(({transactions:r})=>r).reverse();return n.map(({groupTitle:r,transactions:l},c)=>{const d=c===n.length-1;return l?i.x`
<wui-flex
flexDirection="column"
class="group-container"
last-group="${d?"true":"false"}"
data-testid="month-indexes"
>
<wui-flex
alignItems="center"
flexDirection="row"
.padding=${["xs","s","s","s"]}
>
<wui-text variant="paragraph-500" color="fg-200" data-testid="group-title"
>${r}</wui-text
>
</wui-flex>
<wui-flex flexDirection="column" gap="xs">
${this.templateTransactions(l,d)}
</wui-flex>
</wui-flex>
`:null})})}templateRenderTransaction(t,e){const{date:o,descriptions:n,direction:r,isAllNFT:l,images:c,status:d,transfers:u,type:m}=this.getTransactionListItemProps(t),v=(u==null?void 0:u.length)>1;return(u==null?void 0:u.length)===2&&!l?i.x`
<wui-transaction-list-item
date=${o}
.direction=${r}
id=${e&&this.next?C:""}
status=${d}
type=${m}
.images=${c}
.descriptions=${n}
></wui-transaction-list-item>
`:v?u.map((b,D)=>{const I=y.TransactionUtil.getTransferDescription(b),O=e&&D===u.length-1;return i.x` <wui-transaction-list-item
date=${o}
direction=${b.direction}
id=${O&&this.next?C:""}
status=${d}
type=${m}
.onlyDirectionIcon=${!0}
.images=${[c[D]]}
.descriptions=${[I]}
></wui-transaction-list-item>`}):i.x`
<wui-transaction-list-item
date=${o}
.direction=${r}
id=${e&&this.next?C:""}
status=${d}
type=${m}
.images=${c}
.descriptions=${n}
></wui-transaction-list-item>
`}templateTransactions(t,e){return t.map((o,n)=>{const r=e&&n===t.length-1;return i.x`${this.templateRenderTransaction(o,r)}`})}emptyStateActivity(){return i.x`<wui-flex
class="emptyContainer"
flexGrow="1"
flexDirection="column"
justifyContent="center"
alignItems="center"
.padding=${["3xl","xl","3xl","xl"]}
gap="xl"
data-testid="empty-activity-state"
>
<wui-icon-box
backgroundColor="gray-glass-005"
background="gray"
iconColor="fg-200"
icon="wallet"
size="lg"
?border=${!0}
borderColor="wui-color-bg-125"
></wui-icon-box>
<wui-flex flexDirection="column" alignItems="center" gap="xs">
<wui-text align="center" variant="paragraph-500" color="fg-100"
>No Transactions yet</wui-text
>
<wui-text align="center" variant="small-500" color="fg-200"
>Start trading on dApps <br />
to grow your wallet!</wui-text
>
</wui-flex>
</wui-flex>`}emptyStateAccount(){return i.x`<wui-flex
class="contentContainer"
alignItems="center"
justifyContent="center"
flexDirection="column"
gap="l"
data-testid="empty-account-state"
>
<wui-icon-box
icon="swapHorizontal"
size="inherit"
iconColor="fg-200"
backgroundColor="fg-200"
iconSize="lg"
></wui-icon-box>
<wui-flex
class="textContent"
gap="xs"
flexDirection="column"
justifyContent="center"
flexDirection="column"
>
<wui-text variant="paragraph-500" align="center" color="fg-100">No activity yet</wui-text>
<wui-text variant="small-400" align="center" color="fg-200"
>Your next transactions will appear here</wui-text
>
</wui-flex>
<wui-link =${this.onReceiveClick.bind(this)}>Trade</wui-link>
</wui-flex>`}templateEmpty(){return this.page==="account"?i.x`${this.emptyStateAccount()}`:i.x`${this.emptyStateActivity()}`}templateLoading(){return this.page==="activity"?Array(k).fill(i.x` <wui-transaction-list-item-loader></wui-transaction-list-item-loader> `).map(t=>t):null}onReceiveClick(){i.RouterController.push("WalletReceive")}createPaginationObserver(){const t=i.ChainController.state.activeChain,{projectId:e}=i.OptionsController.state;this.paginationObserver=new IntersectionObserver(([o])=>{var n;o!=null&&o.isIntersecting&&!this.loading&&(i.TransactionsController.fetchTransactions(i.CoreHelperUtil.getPlainAddress(this.caipAddress)),i.EventsController.sendEvent({type:"track",event:"LOAD_MORE_TRANSACTIONS",properties:{address:i.CoreHelperUtil.getPlainAddress(this.caipAddress),projectId:e,cursor:this.next,isSmartAccount:((n=i.AccountController.state.preferredAccountTypes)==null?void 0:n[t])===i.W3mFrameRpcConstants.ACCOUNT_TYPES.SMART_ACCOUNT}}))},{}),this.setPaginationObserver()}setPaginationObserver(){var e,o,n;(e=this.paginationObserver)==null||e.disconnect();const t=(o=this.shadowRoot)==null?void 0:o.querySelector(`#${C}`);t&&((n=this.paginationObserver)==null||n.observe(t))}getTransactionListItemProps(t){var d,u,m,v,$;const e=y.DateUtil.formatDate((d=t==null?void 0:t.metadata)==null?void 0:d.minedAt),o=y.TransactionUtil.getTransactionDescriptions(t),n=t==null?void 0:t.transfers,r=(u=t==null?void 0:t.transfers)==null?void 0:u[0],l=!!r&&((m=t==null?void 0:t.transfers)==null?void 0:m.every(b=>!!b.nft_info)),c=y.TransactionUtil.getTransactionImages(n);return{date:e,direction:r==null?void 0:r.direction,descriptions:o,isAllNFT:l,images:c,status:(v=t.metadata)==null?void 0:v.status,transfers:n,type:($=t.metadata)==null?void 0:$.operationType}}};x.styles=R;f([a.n()],x.prototype,"page",void 0);f([a.r()],x.prototype,"caipAddress",void 0);f([a.r()],x.prototype,"transactionsByYear",void 0);f([a.r()],x.prototype,"loading",void 0);f([a.r()],x.prototype,"empty",void 0);f([a.r()],x.prototype,"next",void 0);x=f([a.customElement("w3m-activity-list")],x);
//# sourceMappingURL=index-27hLDrwu.cjs.map