{"version":3,"sources":["services/logger.ts","models/config.ts","theme/colors.ts","theme/scales.ts","theme/index.ts","hocs/with-theme.tsx","components/server-error/server-error.component.tsx","atoms/ui-grid/ui-grid.component.tsx","stores/block-store.ts","stores/metrics-store.ts","stores/voter-store.ts","stores/service-worker-store.ts","models/search-filters.ts","services/cursor-store.ts","routes/index.tsx","models/block.ts","stores/search-store.ts","models/search.ts","stores/menu-store.ts","stores/contract-table-store.ts","atoms/text/text.component.tsx","components/search-shortcut/search-shortcut.tsx","components/authorization-box/authorization-box.component.tsx","atoms/text-elements/misc.tsx","components/formatted-text/formatted-text.tsx","components/ram-usage/ram-usage.component.tsx","components/db-operations/db-operations.component.tsx","atoms/vertical-tabs/vertical-tabs.tsx","helpers/dbop.helpers.ts","clients/rest/api.ts","services/dbops.ts","components/action-pills/templates/pill-tab-content.component.tsx","components/action-pills/templates/pill-template.helpers.ts","components/action-pills/templates/all-logos.ts","components/action-pills/templates/generic-pill.component.tsx","i18n/en/index.ts","i18n/en/account.i18n.ts","i18n/en/banner.i18n.ts","i18n/en/accountTables.i18n.ts","i18n/en/core.i18n.ts","i18n/en/block.i18n.ts","i18n/en/dapp.i18n.ts","i18n/en/dashboard.i18n.ts","i18n/en/errors.i18n.ts","i18n/en/search.i18n.ts","i18n/en/navbar.i18n.ts","i18n/en/producer.i18n.ts","i18n/en/transaction.i18n.ts","i18n/en/vote.i18n.ts","i18n/en/footer.i18n.ts","i18n/en/forum.i18n.ts","i18n/en/filters.i18n.ts","i18n/zh/index.ts","i18n/zh/account.i18n.ts","i18n/zh/banner.i18n.ts","i18n/zh/accountTables.i18n.ts","i18n/zh/core.i18n.ts","i18n/zh/block.i18n.ts","i18n/zh/dapp.i18n.ts","i18n/zh/dashboard.i18n.ts","i18n/zh/errors.i18n.ts","i18n/zh/search.i18n.ts","i18n/zh/navbar.i18n.ts","i18n/zh/producer.i18n.ts","i18n/zh/transaction.i18n.ts","i18n/zh/vote.i18n.ts","i18n/zh/footer.i18n.ts","i18n/zh/forum.i18n.ts","i18n/zh/filters.i18n.ts","i18n/index.ts","stores/transaction-list-store.ts","components/action-pills/templates/system/buy-ram-pill.component.tsx","components/action-pills/templates/system/buy-ram-bytes-pill.component.tsx","components/action-pills/templates/system/refund-pill.component.tsx","components/action-pills/templates/system/delegate-bandwidth-pill.component.tsx","atoms/pills/pill-transfer-box.tsx","components/action-pills/templates/system/issue-pill.component.tsx","helpers/action.helpers.ts","components/action-pills/templates/transfer-pill.component.tsx","components/action-pills/templates/system/vote-pill.component.tsx","components/action-pills/templates/system/undelegate-bandwidth-pill.component.tsx","components/action-pills/templates/system/newaccount-pill.component.tsx","components/action-pills/templates/system/linkauth-pill.component.tsx","components/action-pills/templates/system/updateauth-pill.component.tsx","components/action-pills/templates/system/claim-rewards-pill.component.tsx","components/action-pills/templates/system/setcode-pill.component.tsx","components/action-pills/templates/system/regproxy-pill.component.tsx","components/action-pills/templates/eosbetdice11/resolvebet-pill.component.tsx","components/action-pills/templates/eosbetdice11/betreceipt-pill.component.tsx","components/action-pills/templates/forum/forum-propose-pill.component.tsx","components/action-pills/templates/forum/forum-post-pill.component.tsx","components/action-pills/templates/decenttwitter/decenttwitter-tweet-pill.component.tsx","components/action-pills/templates/sense/sense-genesis-transfer-pill.component.tsx","components/action-pills/templates/d.mail/dmail-transfer-pill.component.tsx","components/action-pills/templates/pixeos/pixeos-claimbal-pill.component.tsx","components/action-pills/templates/pixeos/pixeos-addclaim-pill.component.tsx","components/action-pills/templates/karma/karma-transfer-pill.component.tsx","components/action-pills/templates/karma/karma-powerup-pill.component.tsx","components/action-pills/templates/karma/karma-claim-pill.component.tsx","components/action-pills/templates/karma/karma-claim-post-pill.component.tsx","components/action-pills/templates/karma/karma-powerdown-pill.component.tsx","components/action-pills/templates/karma/karma-refund-pill.component.tsx","components/action-pills/templates/karma/karma-setrewards-pill.component.tsx","components/action-pills/templates/carbon/carbon-transfer-pill.component.tsx","components/action-pills/templates/carbon/carbon-issue-pill.component.tsx","components/action-pills/templates/carbon/carbon-burn-pill.component.tsx","components/action-pills/templates/dfuse-events/dfuse-event-pill.component.tsx","components/action-pills/templates/murmur/murmur-commentmurmur-pill.component.tsx","components/action-pills/templates/murmur/murmur-commentyell-pill.component.tsx","components/action-pills/templates/murmur/murmur-follow-pill.component.tsx","components/action-pills/templates/murmur/murmur-murmur-pill.component.tsx","components/action-pills/templates/murmur/snoop-murmur-pill.component.tsx","components/action-pills/templates/murmur/snoop-yell-pill.component.tsx","components/action-pills/templates/murmur/murmur-unfollow-pill.component.tsx","components/action-pills/templates/murmur/murmur-whisper-pill.component.tsx","components/action-pills/templates/murmur/murmur-yell-pill.component.tsx","components/action-pills/templates/murmur/murmur-transfer-pill.component.tsx","components/action-pills/templates/infiniverse/infiniverse-transfer-pill.component.tsx","components/action-pills/templates/infiniverse/infiniverse-makeoffer-pill.component.tsx","components/action-pills/templates/infiniverse/infiniverse-moveland-pill.component.tsx","components/action-pills/templates/infiniverse/infiniverse-persistpoly-pill.component.tsx","components/action-pills/templates/infiniverse/infiniverse-registerland-pill.component.tsx","components/action-pills/templates/infiniverse/infiniverse-setlandprice-pill.component.tsx","components/action-pills/templates/infiniverse/infiniverse-updatepersist-pill.component.tsx","components/action-pills/templates/infiniverse/infiniverse-deletepersis-pill.component.tsx","components/action-pills/templates/all-templates.tsx","stores/index.ts","stores/template-store.tsx","components/content-loader/content-loader.component.tsx","atoms/panel/panel.component.tsx","models/transaction.ts","pages/blocks/block-progress-pie.tsx","helpers/moment.helpers.ts","atoms/age/age.component.tsx","atoms/status-badge/status-badge.tsx","helpers/transaction.helpers.ts","atoms/ui-hr/ui-hr.tsx","atoms/ui-modal/ui-modal.tsx","pages/transactions/summary/transaction-detail-header.tsx","atoms/panel/panel-title-banner.tsx","components/page-container/page-container.tsx","atoms/tabbed-panel/tabbed-panel.tsx","components/action-pills/action-pill.component.tsx","components/deferred-link/deferred-link.tsx","components/transaction/list-actions.component.tsx","services/transaction-traces-wrap.ts","components/transaction/list-action-traces.component.tsx","atoms/ui-switch/switch.tsx","components/transaction/transaction-actions.component.tsx","services/transaction-lifecycle.ts","helpers/legacy.helpers.tsx","pages/transactions/summary/transaction-ram-usage.tsx","pages/transactions/transaction-contents.tsx","pages/transactions/transaction-detail.page.tsx","streams/transaction-listeners.ts","atoms/ui-table/ui-table.component.tsx","atoms/ui-tooltip/ui-tooltip.tsx","components/block-info-box/block-info-box.component.tsx","components/list-transactions/list-transactions-row.component.tsx","components/list-transactions/list-transactions.component.tsx","clients/websocket/eosws.ts","services/transaction.ts","atoms/navigation-buttons/navigation-buttons.tsx","components/list-content-loader/list-content-loader.component.tsx","pages/transactions/paged-transactions.tsx","components/banner/banner-item.component.tsx","components/banner/variation.component.tsx","components/banner/banner.component.tsx","pages/transactions/transactions.page.tsx","components/voted-producers/voted-producers-pagination.component.tsx","helpers/pagination-algorithm.ts","helpers/account.helpers.ts","components/voted-producers/list-voted-producers.component.tsx","pages/vote/vote-tally.page.tsx","streams/vote-listener.ts","atoms/ui-text-field/ui-text-field.tsx","atoms/ui-typeahead/ui-typeahead-fetcher.tsx","atoms/ui-typeahead/ui-typeahead.tsx","services/search.ts","components/search-bar/search-bar.tsx","atoms/ui-drawer/ui-drawer.tsx","atoms/img.tsx","components/header-elements/header-elements.tsx","components/main-menu/svg/picto-transactions-01.tsx","components/main-menu/svg/picto-producer-01.tsx","components/main-menu/svg/picto-blocks-01.tsx","components/main-menu/main-menu.component.tsx","components/settings-selectors/settings-selector.tsx","components/settings-selectors/network-selector.tsx","components/settings-selectors/settings.helpers.tsx","components/settings-selectors/language-selector.tsx","components/header-menu/header-menu.tsx","components/header-menu/header-menu-mobile.tsx","components/header/header.component.tsx","components/not-found/not-found.component.tsx","services/block.ts","components/list-blocks/list-blocks.component.tsx","pages/blocks/paged-blocks.tsx","pages/blocks/blocks.page.tsx","pages/blocks/blocks-detail-header.tsx","pages/blocks/block-transactions.tsx","pages/blocks/block-detail.page.tsx","pages/search-result/search-result.page.tsx","components/footer/footer.component.tsx","atoms/panel/custom-title-banner.tsx","atoms/pie-chart/donut-chart.tsx","atoms/color-tile/color-tile.tsx","atoms/pie-chart/donut-legend.tsx","clients/rest/account.ts","services/contract-table.ts","pages/account/summary/account-pie-chart.tsx","atoms/status-bar/status-bar.tsx","atoms/status-widget/status-widget.tsx","pages/account/summary/account-status-bars.tsx","pages/account/summary/account-permissions.tsx","pages/account/summary/widgets/default-account-widget.tsx","atoms/social-links/social-links.component.tsx","helpers/social-networks.helper.ts","pages/account/summary/widgets/producer-widget.tsx","helpers/airdrops-list.ts","pages/account/summary/account-tokens.tsx","hooks/use-account-balances.tsx","pages/account/summary/account-summary.tsx","atoms/badge/badge.tsx","pages/account/summary/account-title.tsx","pages/account/transactions/account-transactions.tsx","pages/account/votes/vote.helpers.ts","streams/account-listeners.ts","pages/account/votes/account-votes.tsx","services/abi-loader.ts","atoms/ui-dropdown/ui-dropdown.component.tsx","pages/account/tables/account-table-search.tsx","components/formatted-contract-element/formatted-contract-element.tsx","pages/account/tables/account-table-view.tsx","pages/account/tables/account-tables.tsx","pages/account/abi/account-abi.tsx","pages/account/account-contents.tsx","components/formatted-error/formatted-error.tsx","pages/account/account-detail.page.tsx","atoms/hoverable/hoverable.tsx","components/search-filters/search-filters.tsx","pages/search-result/filter-modal.tsx","pages/search-result/transaction-search-result.page.tsx","helpers/focus.helpers.ts","components/app-container/app-container.component.tsx","components/app-error-boundary/app-error-boundary.tsx","App.tsx","index.tsx","clients/dfuse.ts"],"names":["debugLog","debugFactory","isLocalhost","Boolean","window","location","hostname","match","isEnvSet","value","Config","baseConfig","TopLevelConfig","core","version","network_id","process","REACT_APP_EOSQ_NETWORK_ID","REACT_APP_EOSQ_CURRENT_NETWORK","chain_core_symbol","dfuse_auth_endpoint","REACT_APP_DFUSE_AUTH_URL","dfuse_io_api_key","REACT_APP_DFUSE_API_KEY","dfuse_io_endpoint","REACT_APP_DFUSE_API_NETWORK","secure","REACT_APP_DFUSE_API_NETWORK_SECURE","display_price","available_networks","id","is_test","name","url","REACT_APP_EOSQ_CHAIN_CORE_SYMBOL","REACT_APP_EOSQ_DISPLAY_PRICE","REACT_APP_EOSQ_AVAILABLE_NETWORKS","JSON","parse","error","console","newDefaultConfig","coreSymbolParts","split","coreSymbolPrecision","parseInt","coreSymbolCode","config","chain_core_symbol_precision","chain_core_symbol_code","chain_core_asset_format","repeat","network","find","newConfig","breakPoints","small","medium","large","mediaQueries","smallOnly","theme","fontSizes","lineHeights","space","colors","primary","secondary","ternary","green5","secondHighlight","logo","logo1","logo2","highlight","highlight2","border","neutral","grey1","grey2","grey3","grey4","grey5","grey6","grey7","text","header","link","link2","link3","bleu11","bleu10","bleu9","bleu8","bleu7","bleu6","bleu5","bleu4","verified","notverified","menuActive","permissionBg","permissionBg2","linkHover","formSelectorBg","fieldIcon","formSelectorBorder","formFieldBg","banner","bannerHover","bannerTitle","bannerValue","bannerSubtitle","panelBackground","panelGrayBackground","panelBackgroundDisabled","pillTitleText","tableEvenRowBackground","tableOddRowBackground","trendDown","trendUp","transactionProgress","traceAccountText","traceAccountTokenBackground","traceAccountSystemBackground","traceAccountGenericBackground","traceActionGenericText","traceActionReceiveBackground","traceActionSendBackground","traceActionGenericBackground","traceDataHoverBackground","traceMemoBackground","traceMemoText","traceRawButtonBackground","traceRawButtonText","toolTipDark","toolTipLightBg","toolTipLightBorder","stakeCPU","stakeREX","stakeREXFunds","delegateCPU","stakeNetwork","delegateNetwork","barDataValue","barBackground","barVote","barVoteBg","accountVoteBtn","accountVoteBtnOver","accountVoteBtnOverLink","topBarBackground","searchBg","searchBorder","searchPlaceholder","statusBadgeBan","statusBadgeBanBg","statusBadgeClock","statusBadgeClockBg","statusBadgeCheck","statusBadgeCheckBg","testnet","editAdd","editRemove","fontFamily","roboto","opensans","iceland","lato","styled","emotionStyled","injectThemedStyled","ThemeProvider","EmotionThemeProvider","WithTheme","ComposedComponent","React","state","currentTheme","localStorage","getItem","switchTheme","this","setState","setItem","render","props","Title","h1","Subtitle","h2","Content","Box","Wrapper","ServerError","t","displayName","gridStyle","compose","alignSelf","alignItems","justifySelf","gridColumnGap","gridRowGap","gridRow","gridColumn","gridTemplateColumns","gridTemplateRows","height","width","minHeight","minWidth","color","textAlign","borders","borderColor","borderRadius","maxWidth","maxHeight","Grid","div","overflow","overflowX","cellStyle","fontSize","display","lineHeight","fontWeight","Cell","wordBreak","whiteSpace","clear","transition","float","cursor","left","right","verticalAlign","BlockStore","liveBlocks","observable","map","snapshotBlocks","addIncomingBlock","block","size","setBlockInMap","unseenBlockCount","delete","keys","next","updateSnapshot","Array","from","values","slice","forEach","setSearchResult","searchResult","findById","blockId","block_num","toString","blockMatchesIdentifier","get","set","MetricsStore","constructor","priceUSD","priceVariation","headBlockId","headBlockNum","headBlockProducer","lastIrreversibleBlockNum","lastIrreversibleBlockId","setBlockHeight","data","head_block_num","head_block_id","head_block_producer","last_irreversible_block_num","last_irreversible_block_id","setPrice","price","variation","VoteStore","votesCast","votes","update","voteTally","total_activated_stake","producers","producer","owner","votePercent","total_votes","decayedVote","decay_weight","website","ServiceWorkerStates","FilterTypes","RangeOptions","FilterCombinations","ServiceWorkerStore","DEFAULT","changeToState","newState","Date","now","CursorCache","cursorHistory","currentPageCursor","nextPageCursor","length","setCurrentCursor","currentCursor","push","prepareNextCursor","nextCursor","shiftToPreviousCursor","pop","shiftToNextCursor","resetAll","Paths","Links","blocks","compile","home","about","vote","viewAccountTabs","searchResults","contact","serverError","notFound","viewAccount","viewBlock","transactions","viewTransaction","viewTransactionSearch","BLOCK_NUM_100B","BLOCK_NUM_5M","SearchStore","DEFAULT_PARAMS","limit","sort","withReversible","startBlock","blockCount","cursorCache","filterSections","defaultFilterSections","loadingTransactions","results","hasNextPage","rangeOption","LAST_BLOCKS","filterCombination","type","BLOCK_RANGE","lastBlocks","option","BLOCK_STATUS","irreversibleOnly","min","max","CUSTOM","saveBlockRange","filter","filterSection","previousBlockRangeFilter","updateFilterCombinations","filterRange","ALL","LAST_BLOCKS_IRREVERSIBLE","BLOCK_RANGE_IRREVERSIBLE","ALL_IRREVERSIBLE","ALL_ASCENDING","BLOCK_RANGE_ASCENDING","LAST_BLOCKS_ASCENDING","LAST_BLOCKS_ASCENDING_IRREVERSIBLE","BLOCK_RANGE_ASCENDING_IRREVERSIBLE","ALL_ASCENDING_IRREVERSIBLE","didRangeFilterChange","currentRange","reference","blockRangeToBlockParams","updateCursorCache","toggleSort","parseField","field","replace","updateFilter","section","defaultLastBlocksFilterSection","Object","assign","defaultCustomFilterSection","toParams","toParamsForUrl","updateFromUrlParams","rawParams","newSections","params","block_count","start_block","with_reversible","upgradeLegacySearchQueryParams","query","q","decodeURIComponent","ref","blockParamsToBlockRange","statusSection","undefined","cursoredUrl","queryParams","stringify","blockRangeParams","MenuStore","opened","open","close","ContractTableStore","tableRows","rows","json","scope","lower_bound","lowerBound","upper_bound","upperBound","code","accountName","table","tableName","table_key","tableKey","initFromUrlParams","abiLoader","getTableFirstKey","tableNames","offset","computed","textStyle","Text","textTransform","textOverflow","HoverableText","HoverableTextNoHighlight","EllipsisText","CondensedBold","b","BigTitle","SubTitle","h3","defaultProps","my","LinkStyledText","StyledLink","Link","TextLink","to","children","rest","ExternalTextLink","download","href","target","rel","KeyValueFormatEllipsis","regex","content","index","test","WrapperLeft","WrapperRight","MagnifierWrapper","SearchShortcut","onClick","renderLeft","className","fixed","icon","faSearch","renderRight","title","position","AuthorizationContainer","AutorizationBox","authorization","actor","p","faShieldAlt","permission","MonospaceTextLink","ArrowTo","FontAwesomeIcon","MonospaceText","MonospaceTextWrap","WrappingText","BaseFormattedText","renderAccountLink","renderLink","renderBold","renderPlain","renderSearchShortcut","fields","components","i18nKey","FormattedText","translate","RamUsage","observer","renderContent","ramops","ramop","delta","payer","formatBytes","Math","abs","usage","mx","renderContentDetail","op","EditIndicator","DBOperations","renderContentNew","dbop","new","hex","renderContentOld","old","renderTableOps","tableops","tableop","path","pb","pt","renderDBOps","dbops","key","StyledUl","ul","StyledLi","li","VerticalTabs","super","currentTab","tabData","selectTab","onSelectTab","bg","entry","label","addDBOpHex","groupedDBOp","legacyHandleDfuseApiError","DfuseError","decodeDBOps","blockNum","callback","groupedDBOps","account","groupDBOpHex","promises","groupKey","getDfuseClient","stateAbiBinToJson","catch","Promise","all","then","responses","decodedDBOps","response","tmpDBOps","concat","decodedResponseToDBOps","ContentWrapper","RawWrapper","TabContentWrapper","PILL_TAB_VALUES","PillTabContentComponent","PILL_TABS","onChangeContent","hasDBOpsToDecode","prevState","isDecodedDBOps","renderReceiverInfo","traceInfo","variant","receiver","action","renderActionName","renderAuthorizations","authorizations","renderDisplayFullContentButton","displayFullContentButton","onDisplayFullContent","renderTabContent","px","py","hex_data","displayedDBOps","tabs","getClaimAmounts","inlineTraces","inline_traces","vpayAction","trace","act","bpayAction","ppayAction","unit","vpay","getAmount","quantity","bpay","ppay","toFixed","getPixeosClaimAmounts","total","getResolveBetAmounts","transferAction","EOSAmount","extractValueWithUnits","getBetReceiptLevel1Fields","bettor","payout","random_roll","getBuyRamBytesLevel1Fields","bytes","getBuyRamLevel1Fields","quant","getClaimRewardsLevel1Fields","getPixeosClaimLevel1Fields","getKarmaClaimLevel1Fields","getDfuseEventLevel1Fields","join","getCarbonIssueLevel1Fields","getCarbonBurnLevel1Fields","getKarmaPowerdownLevel1Fields","getKarmaClaimPostLevel1Fields","author","getPixeosAddToClaimLevel1Fields","user","addbalance","getKarmaPowerUpLevel1Fields","getClaimRewardsLevel2Fields","getDelegatebwLevel1Fields","stake_cpu_quantity","stake_net_quantity","getLinkAuthLevel1Fields","requirement","getNewAccountLevel2Fields","parentName","getRefundLevel1Fields","getRefundTransfer","getResolveBetLevel1Fields","traceData","bet_id","getUndelegatebwLevel1Fields","unstake_cpu_quantity","unstake_net_quantity","getUndelegatebwLevel2Fields","cpuAmount","netAmount","getUpdateAuthLevel1Fields","getUpdateAuthLevel2Fields","parent","secondsToTime","wait_sec","getInfiniverseMakeOfferLevel1Fields","buyer","land_id","getInfiniverseMoveLandLevel1Fields","getInfiniversePersistPolyLevel1Fields","poly_id","getInfiniverseRegisterlandLevel1Fields","getInfiniverseSetLandPriceLevel1Fields","getInfiniverseUpdatePersistLevel1Fields","persistent_id","getInfiniverseDeletePersistLevel1Fields","truncateStringPlus","str","cutOff","substring","PILL_CONTRACT_LOGOS","contract","ACCOUNT_CREATORS","GenericPillComponent","logoParams","jsonData","croppedData","hasCroppedData","dataCutOff","showFullContent","fullContent","renderLevel2Template","memo","renderPill2","headerAndTitleOptions","pill2Color","WrapperComponent","disabled","PillClickable","renderExpandedContent","renderDefaultContent","rebuildData","componentDidUpdate","prevProps","forceUpdate","dataString","croppedCallback","hex2sha256","truncateJsonString","pageContext","hasInlineTraces","explodeJson","renderTextWrapper","padding","pr","renderHeaderText","headerText","includes","faBell","pill2","highlighted","headerHoverTitle","hoverTitle","headerBgColor","expandButtonBgColor","expandButtonColor","renderInfo","en","subTitle","tokens","token","social_links","verified_by","status","used","summary","block_producer","creation_date","created_by","creation_trx_id","email","staked_by","self","tooltip","other","networkTitle","cpuTitle","verified_website","voter_info","noVotes","labels","latest_vote","strength","vote_for","nextDecay","vote_weight","decayed_vote_weight","vote_for_producers","vote_for_proxy","permissions","weight","wait","seconds","parent_permission","threshold","badges","gn","pv","co","bp","pie_chart","legendTitle","staked_cpu","staked_network","delegated_cpu","delegated_network","pending_refund","available_funds","rex","rex_funds","votes_staked","transactions_value","status_bar","units","kb","mb","titles","available","memory","cpu_bandwidth","network_bandwidth","vote_title","tables","loading","formatted","eos_usd","head_block","head_block_producer_tooltip","irreversible_block_tooltip","irreversible_block","last_24h_change","accountTables","search","load","dropdown","placeholder","list","previous","notFoundErrorMessage","serverErrorMessage","tagline","tagline2","networkOptions","eos_mainnet","eos_kylin","eos_eosio","by","newVersionAvailable","refresh","menu","mainTitle","testnetNetwork","navigation","language","producerSchedule","dpos_lib_num","scheduleVersion","transactionCount","irreversible","stale","reversible","newBlock","newBlock_plural","empty","timestamp","age","productionTimeElapsed","dapp","rank","voteReceived","blockProducedCount","transactionProcessedCount","dashboard","sevenDays","topTenBlockProducers","topTenDappsProducers","transactionVolume","errors","serverDown","unknownError","result","noResultFoundFor","blockFound","nothingFound","searchQuery","unregisteredLabel","unregisteredValue","request_validation_error","generic_error","suggestions","account_history","signed_by","eos_token_transfer","fuzzy_token_search","syntax","searchResultsFor","sqeDocumentation","errorFetch","transactionSearch","buttons","signedBy","notifications","buttonLabels","system","dropdowns","allTokens","eos","popularTokens","claimRewards","delegateBandwidth","undelegateBandwidth","regProducer","setCode","navbar","holders","dapps","transaction","displayedTree","creationTree","executionTree","showMoreActions","longTitle","operations","INS","REM","UPD","ramUsage","create_table","deferred_trx_add","deferred_trx_cancel","deferred_trx_pushed","deferred_trx_removed","deleteauth","linkauth","newaccount","primary_index_add","primary_index_remove","primary_index_update","primary_index_update_add_new_payer","primary_index_update_remove_old_payer","remove_table","secondary_index_add","secondary_index_remove","secondary_index_update_add_new_payer","secondary_index_update_remove_old_payer","setabi","setcode","unlinkauth","updateauth_create","updateauth_update","consumed","released","consumedDetail","releasedDetail","deferred","delayedFor","create","triggeredBy","creationMethod","PUSH_CREATE","CREATE","MODIFY_CREATE","cancel","createdBy","canceledBy","hard_fail","soft_fail","delayed","canceled","executed","expired","pending","pill","dbOps","ramOps","tableOps","general","hexData","cpu_usage","total_cpu_usage","action_name","traces","raw","names","buyram","notSeenYet","watchingForNetwork","transaction_count","block_produced","total_value","blockPanel","statuses","waiting","confidence","detailPanel","unknown","fullTrace","hash","expirationDate","cpuUsage","networkUsage","noUsage","accepted","blockDeep","progressCircle","extendSearch","advancedOptions","noResultsExtend","noMoreResultsExtend","timeCreated","expiration","blockTime","moreActions","legend","runnerUp","runnerUps","standBy","active","footer","telegram","aboutDfuse","copyright","privacyPolicy","privacyPolicyLink","termsOfServices","termsOfServicesLink","forum","post","proposition","voteCount","filters","apply","sections","blockRange","blockStatus","currentFilter","last_blocks","last_blocks_irreversible","last_blocks_ascending_irreversible","last_blocks_ascending","all_irreversible","block_range","block_range_irreversible","all_ascending","all_ascending_irreversible","block_range_ascending","block_range_ascending_irreversible","rangeOptions","custom","zh","votes_tooltip","maintenance","start","end","i18nLib","use","LanguageDetector","reactI18nextModule","init","fallbackLng","ns","defaultNS","lookupCookie","resources","translations","debug","interpolation","escapeValue","react","i18n","bind","TransactionListStore","BuyRamPillComponent","isReceiveTransfer","requireFields","contextForRendering","networks","validActions","BuyRamBytesPillComponent","buyrambytes","RefundPillComponent","refund","DelegateBandwidthPillComponent","delegatebw","detail","TransferBox","context","amount","amounts","renderSimpleAmount","amountName","ml","faArrowRight","amountNames","NBSP","renderAmount","pl","IssuePillComponent","getMemoText","PILL_HEADER_PARAMS_MAP","eosio","getHeaderParams","getHeaderAndTitle","TransferPillComponent","newAccount","newAccountAction","getNewAccountInTraces","memoText","renderDetailLine","colorVariant","pillTemplates","newAccountFromNameService","VotePillComponent","proxy","voter","voteForBp","voteByProxy","UnDelegateBandwidthPillComponent","undelegatebw","NewAccountPillComponent","creator","renderTemplateItemAccount","renderTemplateItemKey","renderTemplateItemWait","renderLevel2TemplateContent","creatorData","detailAccount","detailKey","detailWait","templateMethods","accounts","waits","LinkAuthPillComponent","UpdateAuthPillComponent","accountPermission","keyPermission","waitPermission","auth","updateauth","detailAccountNoParent","detailWaitNoParent","detailKeyNoParent","ClaimRewardsPillComponent","claimrewards","SetcodePillComponent","downloadUrl","sha","payload","URL","revokeObjectURL","createObjectURL","Blob","sha256","getBlobUrlFromPayload","hex2binary","downloadCode","needsTranslate","RegProxyPillComponent","isproxy","regProxy","summaryReg","summaryUnreg","ResolveBetPillComponent","betId","mr","resolveBet","BetReceiptPillComponent","balance","calculateBalance","rollUnder","roll_under","seed","betReceipt","summaryWon","summaryLost","betAmount","bet_amt","parseFloat","ForumProposePillComponent","checkJson","hasOwnProperty","parseProposalJson","json_metadata","proposalName","proposal_name","expiresAt","expires_at","forumPropose","ForumPostPillComponent","attachment","sub","forumPost","DecenTwitterTweetPillComponent","message","msg","tweet","SenseGenesisTransferPillComponent","info","DmailTransferPillComponent","PixeosClaimRewardsPillComponent","claimpixeosrewards","PixeosAddClaimPillComponent","addclaimpixeosrewards","KarmaTransferPillComponent","KarmaPowerupPillComponent","karmapowerup","KarmaClaimPillComponent","karmaclaim","KarmaClaimPostPillComponent","karmaclaimpost","KarmaPowerdownPillComponent","karmapowerdown","KarmaRefundPillComponent","karmarefund","KarmaSetrewardsPillComponent","CarbonTransferPillComponent","CarbonIssuePillComponent","carbonissue","CarbonBurnPillComponent","carbonburn","DfuseEventPillComponent","auth_key","fieldValues","dfuseevents","authKey","indexedFields","MurmurCommentMurmurPillComponent","comment","murmur_id","MurmurCommentYellPillComponent","yell_id","MurmurFollowPillComponent","weightage","MurmurMurmurPillComponent","visibility","SnoopMurmurPillComponent","snoop_type","SnoopYellPillComponent","MurmurUnfollowPillComponent","MurmurWhisperPillComponent","from_public_key","to_public_key","MurmurYellPillComponent","extra_comment","MurmurTransferPillComponent","InfiniverseTransferPillComponent","MakeOfferPillComponent","infiniversemakeoffer","MoveLandPillComponent","lat_north_edge","lat_south_edge","long_east_edge","long_west_edge","infiniversemoveland","southEdge","northEdge","eastEdge","westEdge","InfiniversePersistpolyPillComponent","orientation","scale","infiniversepersistpoly","InfiniverseRegisterlandPillComponent","infiniverseregisterland","InfiniverseSetlandpricePillComponent","infiniversesetlandprice","InfiniverseUpdatePersistPillComponent","infiniverseupdatepersist","InfiniverseDeletePersistPillComponent","infiniversedeletepersist","ALL_TEMPLATES","blockStore","metricsStore","voteStore","serviceWorkerStore","searchStore","menuStore","contractTableStore","templateStore","networkPills","registry","networkPill","languageResources","lang","addResourceBundle","getComponent","templatedComponent","findTemplatedPillComponent","template","pillClass","matchesBothContractAndAction","dataHasAllRequiredFields","matchesOnlyAction","some","candidate","every","transactionListStore","ContentLoaderComponent","renderLoading","renderError","args","Error","handleRender","service","loadingText","rejected","resolved","BorderLessWrapper","Panel","subtitle","renderSideTitle","BorderLessPanel","TransactionReceiptStatus","RAMOpTypes","computeTransactionTrustPercentage","blockPassedCount","MiddleChild","ProgressSpinner","LoadingOutlined","ProgressText","ProgressSvg","svg","BlockProgressPie","renderCircle","radius","offsetX","offsetY","dashArray","dashOffset","r","cx","cy","fill","transform","strokeDasharray","strokeDashoffset","renderProgressCircle","completion","PI","dashBarOffset","completedCircle","viewBox","xmlns","renderProgressLoading","fadeIn","renderProgressTrustRate","formatPercentage","toLocaleUpperCase","renderIrreversibleImage","src","alt","isDataProvided","renderProgressInfo","percentage","style","h","w","guessedTz","moment","tz","guess","shortTimezoneString","format","formatDateFromString","date","utc","local","locales","locale","updateLocale","longDateFormat","lll","localeData","Age","fromNow","Container","CircleContainer","CircleBorder","FontContainer","BanContainer","StatusBadgeVariant","StatusBadge","background","faCheck","IconContainer","BAN","faBan","CLOCK","faClock","CHECK","getTransactionStatusColor","HARD_FAIL","SOFT_FAIL","EXPIRED","CANCELED","DELAYED","EXECUTED","isTransactionResponseEmpty","UiHrDotted","hr","UiHrSpaced","UiHrDense","HoverableIcon","ModalContainer","ModalHeader","UiModal","handleOpen","onOpen","handleClose","opener","onClose","headerTitle","faTimes","BaseTransactionDetailHeader","renderBlockStatusValue","lifecycleWrap","lifecycle","execution_irreversible","trustPercentage","execution_block_header","extractException","executionTrace","except","renderTransactionStatusValue","exception","renderIrreversibleText","renderException","hasRecentMetrics","renderUsageValue","formatter","renderValue","rawValue","renderExpirationDate","formatDateTime","renderCpuUsage","formatMicroseconds","renderNetworkUsage","renderAuthorization","isLast","renderSignedBy","pub_keys","publicKey","renderBlockValue","noBlockInfo","formatNumber","renderProducerValue","blockHeader","renderTimeStamp","renderBlockDetail","blockTimestamp","renderDeferredTemplate","refObject","i18nKeyLabel","i18nKeyContent","src_trx_id","transactionId","formatTransactionID","block_id","renderDelayedFor","delay_sec","renderDeferredInfo","LONGDASH","faPlusCircle","renderFailureTraceDetail","failed_dtrx_trace","failureTrace","producer_block_id","renderExecutionDetails","receipt","cpu_usage_us","net_usage_words","renderTransactionDetail","renderStatusBadge","renderBlockProgressPie","renderBlockHeader","mt","isStale","TransactionDetailHeader","PanelTitleBanner","borderTop","borderBottom","borderLeft","borderRight","OuterBannerWrapper","PageContainer","childrenArray","toArray","TabbedPanel","withStyles","createStyles","root","backgroundColor","tabsRoot","tabsIndicator","wrapper","paddingLeft","paddingTop","tabRoot","opacity","selected","tabSelected","decorate","getIndexSelected","findIndex","handleChange","_","renderLabel","item","renderTab","classes","appliedClasses","onSelect","disableRipple","renderTabs","onChange","indicator","ActionPill","headerParams","ConcreteComponent","ActionTracePill","actionTrace","Header","DeferredLink","operation","delay","m","ListActions","renderItem","deferredOperations","action_index","action_idx","idx","transaction_id","delay_until","renderItems","actions","groupTracesByTraceLevel","displayCreationTraces","traceLevelsExecution","computeTraceWithLevel","displayedTraces","traceLevels","groupIndex","depth","parentDepth","creationNode","currentIndex","parentIndex","traceLevelIndex","currentTraceLevel","referenceDepth","group","level","computeCreationTraceWithLevel","groupBy","traceLevel","actionTraces","currentLevel","currentGroup","TransactionTracesWrap","actionIndexes","collapsedTraces","traceWithLevel","mapGroups","hiddenActionsCount","extraActions","ListActionTraces","renderChildItem","collapsed","computeHighlighted","delaySec","duration","diff","published_at","asSeconds","renderGroupItem","collapsedTraceLevels","contents","traceWrap","displayCreationTrace","groupedTraces","UiSwitch","iOSSwitchBase","iOSSwitchBaseDark","iOSChecked","iOSBar","marginTop","marginLeft","iOSBarDark","iOSIcon","iOSIconChecked","checked","event","switchBase","bar","iconChecked","ListWrapper","PendingCell","TransactionActions","onToggleActionsView","noActions","renderEmpty","renderActionTable","renderActionTraceTable","renderToggle","TransactionLifecycleWrap","transactionLifeCycle","transaction_status","dtrxops","dtrxop","dtrxOp","trx_id","trx","action_traces","execution_trace","block_time","authorizationList","uniq","stack","firstStackItem","count","actionCount","convertDTrxOpsToDeferredOperations","by_transaction_id","sender","sender_id","expiration_at","related_transactions","convertDTrxOpToDeferredOperation","transactionSearchResultsToTransactionInfo","transactionLifecyclesToTransactionInfo","action_indexes","BaseTransactionRamUsage","ramOpsSummary","summarizeRamOps","TransactionRamUsage","PanelContentWrapper","TransactionContents","renderActions","hasActions","creation_tree","totalCount","totalActionCount","TransactionDetailPage","handlerMetricsId","statusUpdated","fetchError","transactionStream","componentDidMount","async","registerStreams","changeDocumentTitle","history","transactionID","successCallback","errorCallback","streamTransaction","InboundMessageType","ERROR","TRANSACTION_LIFECYCLE","registerTransactionLifecycleListener","unregisterStreams","document","truncateString","BULLET","componentWillUnmount","renderNotSeenYet","TableIcon","TableIconLight","UiTable","Table","UiTableHead","TableHead","UiTableBody","TableBody","UiTableRow","TableRow","UiTableRowAlternated","property","n","resolveValueWithDefault","resolveValue","UiTableCell","TableCell","UiTableCellNarrow","UiTableCellTop","UiTableCellPill","UiToolTip","lightTooltip","arrowPopper","top","borderWidth","bottom","marginBottom","marginRight","arrowArrow","margin","borderStyle","button","buttonFullWidth","arrowRef","handleArrowRef","node","fullWidth","placement","enterTouchDelay","popper","PopperProps","popperOptions","modifiers","arrow","enabled","element","random","UnderlinedTextLink","BlockInfoBox","renderLock","faLock","faLockOpen","Row","UiTableCellTopHover","ListTransactionsRow","togglePills","renderTransactionId","faExclamationCircle","compactString","renderBlockInfo","renderPills","transactionInfo","renderSummaryFields","displayFields","columnName","renderMoreActionCTA","extraDeferred","caret","faCaretRight","faCaretDown","extraActionCount","ListTransactions","initialCollapse","transactionInfos","renderHeader","collapseAll","streamVoteTally","client","onMessage","options","websocketStream","messageCreator","withDefaultOptions","fetch","listen","isInboundMessageType","expectedType","fetchTransactionList","task","perPage","getTransactions","swallow","apiRequest","listTransactions","ColoredTile","color_","hoverBg","hoverColor","NavigationButton","direction","ChevronLeft","faAngleLeft","ChevronRight","faAngleRight","DoubleChevronLeft","faAngleDoubleLeft","Chevron","NavigationButtons","renderNavigationButton","onNext","onPrev","onFirst","showFirst","showPrev","showNext","ListContentLoaderComponent","PER_PAGE","fetchListForCursor","hasPreviousPage","renderNavigation","prepareRenderContent","collection","componentDidMountHandler","parsed","queryString","PagedTransactions","encodeURIComponent","BorderBannerContainer","BannerTitle","BannerDetails","BannerContainer","titleTip","containerProps","BannerItem","align","details","flexDirection","TrendUpIcon","TrendDownIcon","AmountVariation","renderIcon","iconName","IconComponent","formattedVariation","formatVariation","isUp","faSortUp","faSortDown","textColor","BannerWrapper","Price","BannerMarketPrice","formattedPrice","formatAmount","justifyContent","Banner","renderProducerLink","renderBlockLink","renderBannerPrice","TransactionsPage","PageNumberUl","PageNumberLi","VotedProducerPaginationContainer","VotedProducerPagination","currentPage","numberOfPages","onPrevClick","onNextClick","onClickPage","pageCount","current","leftGap","rightGap","items","i","pagination","pageNumber","pageNumberInt","assignHierarchy","currentHierarchy","parentHierarchy","childPermissions","getChilds","lastChild","hierarchyEntry","parentDepths","hasChilds","parentHierarchyEntry","getParentDepths","buildHierarchyEntry","hierarchyDataEntry","buildTopLevelHierarchyEntry","parentPermission","perm_name","getRankInfo","account_name","getRankStatus","rankInfo","getRankBgColor","getAccountResources","stakes","totalResources","total_resources","selfDelegated","self_delegated_bandwidth","refundRequest","refund_request","rexTokens","rex_balance","vote_stake","rexFunds","rexCpuLoans","cpu_loans","rexNetLoans","net_loans","stakedCpu","cpu_weight","availableFunds","core_liquid_balance","selfStakedCpu","rexStake","rexFundsAmount","stakedCpuFromOthers","reduce","a","sumCPUStakes","stakedNetwork","net_weight","selfStakedNet","stakedNetworkFromOthers","sumNETStakes","pendingRefund","net_amount","cpu_amount","net","stakedTotal","stakedFromOthers","selfStaked","stakedToOthers","cpu","rexLiquid","totalOwnerShip","stake","UiTableCellRank","UiTableCellAccount","UiTableCellRankHeader","ProducerSpinner","CaptionItem","CaptionColor","TableCaption","ListVotedProducers","bgColor","renderProducerSpinner","renderCaption","VoteTally","voteTallyStream","vote_tally","registerVoteTallyStream","renderTable","isEmpty","UiInput","Input","UiSearch","UiPaper","Paper","UiTypeaheadFetcher","requestId","mounted","debounce","fetchData","searchValue","onLoaded","reset","overrides","prepareFetch","PaperContainer","SearchIcon","SearchWrapper","RoundedSpinnerCube","SearchButton","SyntaxBox","DeleteIcon","ResponsiveContainer","renderInput","inputProps","InputProps","autoCapitalize","inputRef","disableUnderline","formatBold","renderSummary","isHighlighted","UiTypeahead","handleStateChange","changes","Downshift","stateChangeTypes","clickItem","getItemByValue","selectedItem","clickToFollowTypes","onSubmitInternal","inputValue","handleKeyDown","closeMenu","selectHighlightedItem","highlightedIndex","keyCode","getHighlightedItem","handleInputChange","resetField","searching","suggestionWithId","suggestion","onSubmit","defaultQuery","renderSuggestion","isSelected","indexOf","groupId","faUser","faCube","itemProps","component","suggestionGroup","suggestionRef","selectedItemValue","getItemProps","totalIndex","groupItems","groupItemsContent","renderSearchButton","renderDeleteIcon","popperNode","onStateChange","getInputProps","getMenuProps","isOpen","clearItems","setItemCount","getRootProps","setHighlightedIndex","onKeyDown","square","clientWidth","getItems","sum","help","performStructuredSearch","searchTransactions","searchError","SearchBar","trim","resolve","done","onStructuredSearchSubmit","onSimpleSearchSubmit","handleSearchResult","omniSearch","prefix","fetchTypeaheadSuggestions","toLowerCase","blockNumCandidate","Number","isInteger","renderHelp","faQuestionCircle","NoFocus","UiDrawer","toggleDrawer","closeDrawer","xsDown","implementation","smUp","mobileOpener","anchor","tabIndex","role","PaperProps","renderMobileContent","imgStyle","layout","Img","img","LogoElement","Tagline","span","LogoLink","HeaderLogo","Logo","logo_text","LogoImageAndText","image","LogoImage","LogoDefault","LogoText","pa","flexWrap","PictoTransactions","stroke","strokeWidth","strokeMiterlimit","d","PictoProducer","PictoBlocks","UpperTextLink","MainMenuContainer","matchesCurrentPath","pathnames","isMatch","pathName","pathname","renderTextLink","navigate","MainMenu","withRouter","UpperText","SelectorContainer","renderActiveIcon","faCircle","renderInactiveIcon","preventDefault","currentOption","renderActiveNetworkIcon","SettingsSelector","NetworkSelectorContainer","availableNetworks","onSelectNetwork","selectedNetwork","defaultValue","NetworkSelector","LANGUAGE_OPTIONS","getCurrentLanguageValue","usedLanguages","languages","availableLanguages","LanguageSelectorContainer","onSelectLanguage","Cookies","reload","LanguageSelector","HeaderWrapper","HeaderMenu","renderSectionTitle","SelectorWrapper","ChevronContainer","StyledIcon","HeaderMenuMobile","displayedSection","showSection","renderNetworkTitle","faVectorSquare","renderLanguageTitle","faGlobeAmericas","renderNetworkSummary","renderLanguageSummary","currentLang","currentLanguage","languageName","getCurrentLanguageName","renderNetworkContent","faChevronLeft","renderLanguageContent","renderMain","RoutedOmniSearch","StyledButton","Button","drawerOpened","renderMenuOpener","faBars","renderMobileMenuOpener","NotFound","fetchBlock","getBlock","fetchBlockList","getBlocks","skip","listBlocks","blockID","getBlockApi","fetchBlockTransactions","transactionResponse","listBlockTransactions","UiTableCellTransactionRatio","TransactionRatioCell","Ratio","ListBlocks","maxTransactionCount","ratioWidth","ceil","renderBlockIrreversible","compactCount","findMaxTransactionCount","PagedBlocks","firstBlockNum","lastBlockNum","BlocksPage","ScheduleUl","BlockHeader","renderAge","renderText","renderMonospaceText","renderProducerSchedule","active_schedule","scheduleItem","producer_name","blockInactive","renderStatus","goToBlock","renderDetail","schedule_version","getNextBlock","prev","getPreviousBlock","refBlock","candidates","sibling_blocks","winner","BlockTransactionContainer","BlockTransactions","fetcher","BlockDetailPage","BoldText","SearchResultPage","renderTitle","LogoFirst","LogoSecond","StyledText","StyledFont","Footer","faTelegramPlane","year","getFullYear","CustomTitleBanner","contentLeft","contentRight","StyledSvg","DonutChartContainer","DonutChartCenterWrapper","DonutChartCenter","DonutChart","centerContent","addGraph","chart","models","pieChart","x","y","showLabels","labelThreshold","labelType","donut","donutRatio","showLegend","contentGenerator","select","datum","call","ColorTile","DonutChartLegendContainer","renderEntry","renderWrapper","numeral","legendColors","DonutChartLegend","requestContractTableRows","key_type","index_position","getTableRows","requestProducerAccountTableRows","requestAccountLinkedPermissions","statePermissionLinks","fetchContractTableRowsOnContractPage","fetchContractTableRowsFromEOSWS","stateTable","requestStateTable","fetchContractAbi","stateAbi","requestAccountAbi","zeroCoreAsset","HidableContainer","ToolTipUl","AccountPieChart","stakeDetails","stakeLoaded","renderTooltipWrapper","toolTip","renderSearchShortcutWrapper","accountResources","renderToolTip","fetchDelband","oldProps","output","row","renderPieChart","pieChartParams","pieChartCenter","pieChartDataForPie","pieChartColorsForPie","wrapperRenderer","pieChartData","pieChartColors","getPieChartParams","StatusBarContainer","LargeStatusBarContainer","StatusBarElement","StatusBar","bgData","firstWidth","StatusWidget","description","AccountStatusBarsContainer","AccountStatusBars","isInfiniteResources","numerator","denominator","round","renderRatioText","formattedText","infinite","INFINITY","renderByteRatio","renderUsed","renderTimeRatio","renderStakeDetails","staked","renderRam","memoryContent","memoryTotal","renderCPU","cpuBandwidthContent","cpuBandwidthTotal","totalCpu","delegatedCpu","cpuBandwidthTitle","renderNetwork","networkBandwidthContent","networkBandwidthTotal","totalNetwork","delegatedNetwork","networkBandwidthTitle","ram_usage","selfDelegatedBandwidth","cpu_limit","net_limit","ram_quota","WrapperWithChilds","CellCorner","CellBottomLine","AccountPermissions","renderPermissionPill","renderLinkedPermissions","linked_permissions","linkedPermission","permission_name","renderPermissionGroup","renderPermissionValues","required_auth","keyWeight","renderPermissionContent","faKey","waitWeight","renderLine","largeIndex","renderFromHierarchy","hierarchyData","getGridTemplateColumns","columns","trigger","triggerWhenOpen","DefaultAccountWidget","created","SocialIcon","SocialIconWrapper","BadgeCheck","SocialIconBackground","SocialLinksContainer","SocialLinks","socialNetworks","verifiedTitle","socialNetwork","faCheckCircle","renderSocialIcon","SOCIAL_NETWORK_BASE_URL","twitter","youtube","facebook","github","reddit","SOCIAL_ICON_MAP","faTwitterSquare","faFacebookSquare","faGithubSquare","faYoutubeSquare","faRedditSquare","SOCIAL_NETWORKS","processDefaultSocialNetworkNames","block_producer_info","networkHandles","org","social","TitleHeader","ProducerWidget","rankBgColor","socialLinks","account_verifications","handle","processSocialNetworkNames","country","LOGO_PLACEHOLDER","networkToName","removedTokens","chain","AIRDROPS","logo_lg","symbol","tokenInfo","removedToken","TokenRow","metadata","TokenList","AccountTokens","gql","tokenInfos","mappings","getTokenInfosForNetwork","getTokenInfoKey","getTokenInfosByKeyMap","Widget","Tokens","useGraphqlQuery","promiseStateRetype","balances","accountBalances","edges","ma","promiseStateResolved","useAccountBalances","resultOr","promise","AccountSummary","Badge","BadgeContainer","AccountImg","ClickableBadge","StyledObject","object","AccountTitle","renderRank","renderPrivileged","privileged","renderCo","isLastCodeUpdateEpoch","last_code_update","renderBp","renderMykey","isAccountCreatedByMykey","lastCodeUpdate","renderBadges","renderAccountImage","renderProducerAvatar","renderProducer","blockProducerInfo","branding","logo_256","candidate_name","renderProducerNoJson","renderDefault","AccountTransactions","resetInternalState","renderNavigationContainer","renderSearchResults","renderNoResultsExtendSearchBox","calculateVoteStrength","timeDifference","floor","is_proxy","last_vote_weight","proxied_vote_weight","effectivePersonalVoteWeight","registerAccountDetailsListeners","voteStream","accountStream","streamAccount","producerInfo","rexParams","rexfundsParams","cpuLoans","netLoans","addProducerInfoToAccount","rexTokensData","addRexTokensToAccount","addRexFundsToAccount","addRexCpuLoanToAccount","addRexNetLoanToAccount","producer_account_name","parseProducerInfo","VotedAccount","VoteBarText","AccountVotes","voteStrength","proxyAccount","streams","voterInfo","renderAccounts","addIndex","mapIndexed","renderAccountName","renderProxyAccountTitle","renderStatusBar","renderVoteWeights","voteWeight","decayedVoteWeight","fonSize","AbiLoader","abi","structs","types","getTable","key_names","structRef","struct","actionNames","tableTypes","getTableStructFromType","tableType","getTableFields","tableStruct","StyledFormControl","FormControl","StyledInputLabel","InputLabel","StyledSelect","Select","StyledSelectSmall","StyledSelectXSmall","StyledIconComponent","UiDropDown","optionValues","selectedLabel","handleClick","handleMenuItemClick","SelectWrapper","selectDisplayStyle","htmlFor","SelectDisplayProps","noBorders","paddingRight","MenuProps","selectorBg","AccountTableSearch","urlParams","selectTableWithHistory","initContractTableStore","renderDropDown","dropDownOptions","selectedTableName","renderScopeInput","e","renderLowerBoundInput","FormattedContractElement","renderDate","renderDateFromInt","renderDateFromString","valueInMilliseconds","isMaybeInSeconds","getUTCFullYear","AccountTableView","tableFields","loadMore","lastRowKey","fetchContent","loadLess","renderRowCells","renderHeaderCells","humanizeSnakeCase","onSwitchFormat","renderSwitchGrid","justifyItems","grid-template-rows","lastRow","firstTableKey","more","renderEmptyTable","extractOffset","renderCellContent","nRows","AccountTables","renderTableView","AccountAbi","submitRequest","currentTable","AccountContents","buildInitialState","isContract","ErrorWrapper","FormattedError","faExclamationTriangle","trace_id","AccountDetail","renderNotFound","getNextProducer","getPrevProducer","renderBannerLeft","renderBannerRight","StyledInput","StyledCheckbox","Checkbox","HoverableBox","SearchFilters","BLOCK_RANGE_OPTIONS","onSelectBlockRangeOption","toggleIrreversibleOnly","onApply","renderBlockInput","step","onChangeField","renderBlockRangeDropDown","displayBlockRange","displayLine","displayBlockStatus","renderSections","renderButton","renderSort","FilterModal","filtersOpened","onApplyFilters","onOpenFilters","faCog","ResultInfoContainer","TransactionSearchResultPage","lastQuery","scrollTo","parseUrlParams","parseQuery","renderResultsTitle","showMore","renderExtendSearchBox","renderSearchError","i18nkey","hidden","visibilityChange","msHidden","webkitHidden","HIDDEN","VISIBILITYCHANGE","handleVisibilityChange","visibleCallback","hiddenCallback","SkewedCell","NetworkContainer","PageWrapper","MaintenanceWrapper","Maintenance","WrappedWithTheme","headerElement","headInfoStream","priceStream","focusListener","defocusListener","streamHeadInfo","streamPrice","clearTimeout","onElementHeightChangeTimer","removeEventListener","snapshot","isAListPage","addEventListener","clientHeight","elm","newHeight","lastHeight","run","setTimeout","onElementHeightChange","renderRoutes","exact","renderTestNetWarning","zIndex","reloadPage","renderNewVersionAvailable","renderTitleBar","INSTALLED","Spinner","AppErrorBoundary","installing","onReportErrorClicked","Sentry","showReportDialog","handleError","interval","setInterval","clearInterval","INSTALLING","componentDidCatch","errorInfo","withScope","setExtra","captureException","aria-label","disable_sentry","log","dsn","withTheme","AppContainer","DocumentMeta","baseURL","baseURI","faviconURL","favicon_template","Helmet","page_title","browserHistory","createBrowserHistory","routingStore","RouterStore","syncHistoryWithStore","stores","routing","NextApp","initializeDfuseClient","createDfuseClient","apiKey","authUrl","querySelector"],"mappings":"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","file":"static/js/main.634cda82.chunk.js","sourcesContent":["import debugFactory from \"debug\"\n\nexport const debugLog = debugFactory(\"eosq\")\n\n","import { debugLog } from \"../services/logger\"\n\nexport interface EosqNetwork {\n id: string\n name: string\n url: string\n is_test?: boolean\n logo?: string\n logo_text?: string\n page_title?: string\n favicon_template?: string\n}\n\ninterface EosqConfig {\n version: number\n isLocalhost: boolean\n\n dfuse_io_endpoint: string\n dfuse_io_api_key: string\n dfuse_auth_endpoint: string\n secure: boolean\n\n network_id: string\n network?: EosqNetwork\n available_networks: EosqNetwork[]\n\n chain_core_symbol: string\n chain_core_symbol_code: string\n chain_core_symbol_precision: number\n chain_core_asset_format: string\n\n display_price: boolean\n disable_segments: boolean\n disable_sentry: boolean\n}\n\n// Extracted from React register service worker part to detect localhost\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n)\n\nconst isEnvSet = (value: string | undefined): boolean => value != null && value !== \"\"\n\nconst newDefaultConfig = () => {\n const core = {\n version: 1,\n network_id:\n process.env.REACT_APP_EOSQ_NETWORK_ID ||\n process.env.REACT_APP_EOSQ_CURRENT_NETWORK ||\n \"local\",\n chain_core_symbol: \"4,EOS\",\n dfuse_auth_endpoint: process.env.REACT_APP_DFUSE_AUTH_URL || \"null://\",\n dfuse_io_api_key: process.env.REACT_APP_DFUSE_API_KEY || \"web_1234567890abc\",\n dfuse_io_endpoint: process.env.REACT_APP_DFUSE_API_NETWORK || \"localhost:8080\",\n secure: process.env.REACT_APP_DFUSE_API_NETWORK_SECURE === \"true\",\n display_price: false,\n\n available_networks: [\n {\n id: \"local\",\n is_test: true,\n name: \"Local Network\",\n url: \"http://localhost:8080\",\n },\n {\n id: \"eos-kylin\",\n is_test: true,\n name: \"Kylin Testnet\",\n url: \"https://kylin.eosq.app\",\n },\n {\n id: \"wax-mainnet\",\n is_test: false,\n name: \"WAX Mainnet\",\n url: \"https://wax.eosq.app\",\n },\n ],\n }\n\n if (isEnvSet(process.env.REACT_APP_EOSQ_CHAIN_CORE_SYMBOL)) {\n core.chain_core_symbol = process.env.REACT_APP_EOSQ_CHAIN_CORE_SYMBOL!\n }\n\n if (isEnvSet(process.env.REACT_APP_EOSQ_DISPLAY_PRICE)) {\n core.display_price = process.env.REACT_APP_EOSQ_DISPLAY_PRICE === \"true\"\n }\n\n if (isEnvSet(process.env.REACT_APP_EOSQ_AVAILABLE_NETWORKS)) {\n try {\n core.available_networks = JSON.parse(process.env.REACT_APP_EOSQ_AVAILABLE_NETWORKS!)\n } catch (error) {\n console.error(\"Invalid available networks environemnt variable, it's not valid JSON\", error)\n }\n }\n\n return core\n}\n\nfunction newConfig() {\n let baseConfig = (window as any).TopLevelConfig\n if (!baseConfig) {\n baseConfig = newDefaultConfig()\n } else {\n debugLog(\"Migrating config received from server\", baseConfig)\n }\n\n const coreSymbolParts = baseConfig.chain_core_symbol.split(\",\")\n const coreSymbolPrecision = parseInt(coreSymbolParts[0])\n const coreSymbolCode = coreSymbolParts[1]\n\n const config = {\n ...baseConfig,\n chain_core_symbol_precision: coreSymbolPrecision,\n chain_core_symbol_code: coreSymbolCode,\n chain_core_asset_format: \"0,0.\" + \"0\".repeat(coreSymbolPrecision),\n isLocalhost,\n } as EosqConfig\n\n config.network = config.available_networks.find((network) => network.id === config.network_id)\n\n debugLog(\"Loaded config %O\", config)\n return config\n}\n\nexport const Config = newConfig()\n","export const colors = {\n primary: \"#f2f5f9\",\n secondary: \"#fff\",\n ternary: \"#25c2ab\",\n green5: \"#1ccab0\",\n secondHighlight: \"#FFB866\",\n logo: \"#7a85ff\",\n logo1: \"#fff\",\n logo2: \"#7e90fb\",\n highlight: \"#7a85ff\",\n highlight2: \"#6a74de\",\n border: \"#d3d7dd\",\n neutral: \"#aaaeb3\",\n grey1: \"#f2f5f9\",\n grey2: \"#eaeff5\",\n grey3: \"#dce1e8\",\n grey4: \"#d3d7dd\",\n grey5: \"#aaaeb3\",\n grey6: \"#8d939a\",\n grey7: \"#71727D\",\n text: \"#65656f\",\n header: \"#6a74de\",\n link: \"#6a74de\",\n link2: \"#6a74de\",\n link3: \"#6a74de\",\n bleu11: \"#363670\",\n bleu10: \"#474793\",\n bleu9: \"#5354ad\",\n bleu8: \"#6a74de\",\n bleu7: \"#7a85ff\",\n bleu6: \"#99a2ff\",\n bleu5: \"#c4caff\",\n bleu4: \"#dadefe\",\n verified: \"darkgreen\",\n notverified: \"#aaaeb3\",\n menuActive: \"#fff\",\n permissionBg: \"#f5f8fc\",\n permissionBg2: \"#c2cbff\",\n // FIXME: Link to ternary instead of copying somehow\n linkHover: \"#27cfb7\",\n formSelectorBg: \"#f5f8fc\",\n fieldIcon: \"#8e8f9d\",\n formSelectorBorder: \"#d3d7dd\",\n formFieldBg: \"#ebeef2\",\n // FIXME: Link to border & header respectively\n banner: \"#7a85ff\",\n bannerHover: \"#7e90fb\",\n bannerTitle: \"#363670\",\n bannerValue: \"#fff\",\n bannerSubtitle: \"#c2cbff\",\n panelBackground: \"#fff\",\n panelGrayBackground: \"#4A4A5E\",\n panelBackgroundDisabled: \"#f8f9fa\",\n\n pillTitleText: \"#616082\",\n tableEvenRowBackground: \"#f8f9fa\",\n tableOddRowBackground: \"#fff\",\n\n trendDown: \"#ec1c24\",\n trendUp: \"#7bda49\",\n transactionProgress: \"#484599\",\n traceAccountText: \"#fff\",\n traceAccountTokenBackground: \"#7a85ff\",\n traceAccountSystemBackground: \"#072242\",\n traceAccountGenericBackground: \"#8d939a\",\n traceActionGenericText: \"#65656f\",\n traceActionReceiveBackground: \"#90ded8\",\n traceActionSendBackground: \"#ffc88a\",\n traceActionGenericBackground: \"#eaeff5\",\n traceDataHoverBackground: \"#EAEEF2\",\n traceMemoBackground: \"#d3d7dd\",\n traceMemoText: \"#58596c\",\n\n traceRawButtonBackground: \"#EAEEF2\",\n traceRawButtonText: \"#5F6070\",\n\n toolTipDark: \"#343442\",\n toolTipLightBg: \"#F5F8FC\",\n toolTipLightBorder: \"#71727D\",\n\n stakeCPU: \"#7a85ff\",\n stakeREX: \"#e50fb6\",\n stakeREXFunds: \"#f976db\",\n delegateCPU: \"#686EDE\",\n stakeNetwork: \"#AE62D4\",\n delegateNetwork: \"#9D47C7\",\n barDataValue: \"#4f4fa6\",\n barBackground: \"#dce1e8\",\n barVote: \"#4f4fa6\",\n barVoteBg: \"#dce1e8\",\n\n accountVoteBtn: \"#EAEEF2\",\n accountVoteBtnOver: \"#dee1e4\",\n accountVoteBtnOverLink: \"#5451b3\",\n topBarBackground: \"#363670\",\n\n searchBg: \"#4f4fa6\",\n searchBorder: \"#6565d1\",\n searchPlaceholder: \"#7a85ff\",\n\n statusBadgeBan: \"#EE4036\",\n statusBadgeBanBg: \"#FDE4E3\",\n statusBadgeClock: \"#FF971F\",\n statusBadgeClockBg: \"#FFEDD7\",\n statusBadgeCheck: \"#24C1AA\",\n statusBadgeCheckBg: \"#F2F5F9\",\n\n testnet: \"#f05a28\",\n\n editAdd: \"#25c2ab\",\n editRemove: \"#EE4036\"\n}\n","// Typographic Scale (numbers are converted to px values)\nexport const fontSizes = [10, 12, 14, 16, 20, 24, 32, 40, 48, 64, 72]\nexport const lineHeights = [\"18px\", \"22px\", \"26px\", \"34px\", \"40px\", \"50px\"]\n\n// Spacing Scale (used for margin and padding)\nexport const space = [0, 4, 8, 16, 32, 64, 128, 256, 512]\n\nexport const breakPoints = {\n small: 768,\n medium: 1280,\n large: 1440\n}\n\nexport const mediaQueries = {\n smallOnly: `@media (max-width: ${breakPoints.small - 1}px)`,\n small: `@media (min-width: ${breakPoints.small}px)`,\n medium: `@media (min-width: ${breakPoints.medium}px)`,\n large: `@media (min-width: ${breakPoints.large}px)`\n}\n","import emotionStyled, { CreateStyled } from \"@emotion/styled\"\nimport { injectThemedStyled } from \"@dfuse/explorer\"\nimport { colors } from \"./colors\"\nimport { breakPoints, mediaQueries, fontSizes, lineHeights, space } from \"./scales\"\nimport { Scale, get as resolveValueWithDefault } from \"styled-system\"\n\nexport const theme = {\n breakPoints,\n mediaQueries,\n fontSizes,\n lineHeights,\n space,\n colors,\n fontFamily: {\n roboto: \"Roboto Condensed\",\n opensans: \"Open Sans\",\n iceland: \"Iceland\",\n lato: \"Lato\"\n }\n}\n\nexport function resolveValue(n: number | string, scale?: Scale) {\n return resolveValueWithDefault(scale, n, n)\n}\n\nexport type ThemeInterface = typeof theme\n\nexport const styled = emotionStyled as CreateStyled\n\ninjectThemedStyled(styled)\n","import * as React from \"react\"\nimport { ThemeProvider as EmotionThemeProvider, ThemeProviderProps } from \"emotion-theming\"\nimport { theme, ThemeInterface } from \"../theme\"\n\nconst ThemeProvider: React.FC> = EmotionThemeProvider as any\n\nconst WithTheme = (ComposedComponent: any) => {\n return class WrapperComponent extends React.PureComponent {\n state = {\n currentTheme: localStorage.getItem(\"@theme:current\")\n }\n\n switchTheme = () => {\n const currentTheme = localStorage.getItem(\"@theme:current\")\n if (currentTheme === \"darkTheme\") {\n this.setState({ currentTheme: \"lightTheme\" })\n localStorage.setItem(\"@theme:current\", \"lightTheme\")\n } else {\n this.setState({ currentTheme: \"darkTheme\" })\n localStorage.setItem(\"@theme:current\", \"darkTheme\")\n }\n }\n\n render() {\n return (\n \n \n \n )\n }\n }\n}\n\nexport default WithTheme","import { t } from \"i18next\"\nimport * as React from \"react\"\nimport { styled } from \"../../theme\"\nimport { Box } from \"@dfuse/explorer\"\n\nconst Title: React.ComponentType = styled.h1`\n display: inline-block;\n border-right: 1px solid ${(props) => props.theme.colors.text};\n margin: 0;\n margin-right: 20px;\n padding: 10px 23px 10px 0;\n font-size: 24px;\n font-weight: 500;\n vertical-align: top;\n color: ${(props) => props.theme.colors.text};\n`\n\nconst Subtitle: React.ComponentType = styled.h2`\n font-size: 14px;\n font-weight: normal;\n line-height: inherit;\n margin: 0;\n padding: 0;\n color: ${(props) => props.theme.colors.text};\n`\n\nconst Content: React.ComponentType = styled(Box)`\n display: inline-block;\n text-align: left;\n line-height: 49px;\n height: 49px;\n vertical-align: middle;\n`\n\nconst Wrapper: React.ComponentType = styled(Box)`\n justify-content: center;\n margin: 35vh 0;\n`\n\nexport const ServerError: React.SFC = () => (\n \n 500\n \n {t(\"core.serverErrorMessage\")}\n \n \n)\n\n// @ts-ignore\nServerError.displayName = \"ServerError\"\n","import {\n alignItems,\n alignSelf,\n borderColor,\n borderRadius,\n borders,\n color,\n display,\n fontFamily,\n gridColumn,\n gridColumnGap,\n gridRow,\n gridRowGap,\n gridTemplateColumns,\n gridTemplateRows,\n height,\n justifySelf,\n lineHeight,\n minHeight,\n minWidth,\n space,\n textAlign,\n width,\n maxWidth,\n maxHeight,\n fontWeight,\n fontSize,\n compose\n} from \"styled-system\"\nimport { styled } from \"../../theme\"\nimport * as React from \"react\"\n\nexport interface CellExtraProps {\n overflowX?: string\n overflow?: string\n wordBreak?: string\n whiteSpace?: string\n clear?: string\n transition?: string\n float?: string\n cursor?: string\n left?: string\n right?: string\n verticalAlign?: string\n}\n\n// FIXME: Complete grid support\nconst gridStyle = compose(\n alignSelf,\n alignItems,\n justifySelf,\n gridColumnGap,\n gridRowGap,\n gridRow,\n gridColumn,\n gridTemplateColumns,\n gridTemplateRows,\n height,\n width,\n minHeight,\n minWidth,\n space,\n color,\n textAlign,\n borders,\n borderColor,\n borderRadius,\n maxWidth,\n maxHeight\n)\n\nexport const Grid: React.ComponentType = styled.div`\n display: grid;\n position: relative;\n overflow: ${(props: CellExtraProps) => props.overflow};\n overflow-x: ${(props: CellExtraProps) => props.overflowX};\n ${gridStyle}\n`\n\nconst cellStyle = compose(\n fontSize,\n space,\n color,\n display,\n alignSelf,\n justifySelf,\n gridColumn,\n gridRow,\n height,\n width,\n minHeight,\n minWidth,\n textAlign,\n fontFamily,\n lineHeight,\n borders,\n borderColor,\n borderRadius,\n alignItems,\n maxWidth,\n maxHeight,\n fontWeight\n)\n\nexport const Cell: React.ComponentType = styled.div`\n position: relative;\n overflow: ${(props: CellExtraProps) => props.overflow};\n overflow-x: ${(props: CellExtraProps) => props.overflowX};\n word-break: ${(props: CellExtraProps) => props.wordBreak};\n white-space: ${(props: CellExtraProps) => props.whiteSpace};\n clear: ${(props: CellExtraProps) => props.clear};\n transition: ${(props: CellExtraProps) => props.transition};\n float: ${(props: CellExtraProps) => props.float};\n :hover {\n cursor: ${(props: CellExtraProps) => props.cursor};\n }\n left: ${(props: CellExtraProps) => props.left};\n right: ${(props: CellExtraProps) => props.right};\n vertical-align: ${(props: CellExtraProps) => props.verticalAlign};\n\n ${cellStyle}\n`\n","import { observable, ObservableMap } from \"mobx\"\nimport { BlockSummary } from \"../models/block\"\n\nconst MAX_LIVE_BLOCKS = 500\nconst MAX_SNAPSHOT_BLOCKS = 5\n\nexport class BlockStore {\n liveBlocks = observable.map()\n\n /**\n * The list of block currently displayed in the dashboard.\n * First accumulated until reaching MAX_SNAPSHOT_BLOCKS then\n * refreshed only when requested.\n */\n snapshotBlocks = observable.map()\n\n /**\n * The amount of new blocks accumulated since last snapshot\n * of blocks taken.\n */\n @observable unseenBlockCount = 0\n\n @observable searchResult: BlockSummary | null = null\n\n addIncomingBlock(block: BlockSummary) {\n // TODO: update the LIB in the store..\n if (this.snapshotBlocks.size < MAX_SNAPSHOT_BLOCKS) {\n setBlockInMap(this.snapshotBlocks, block)\n } else {\n this.unseenBlockCount += 1\n }\n\n if (this.liveBlocks.size >= MAX_LIVE_BLOCKS) {\n this.liveBlocks.delete(this.liveBlocks.keys().next().value)\n }\n\n setBlockInMap(this.liveBlocks, block)\n }\n\n updateSnapshot() {\n this.unseenBlockCount = 0\n this.snapshotBlocks.clear()\n\n const updatedBlocks = Array.from(this.liveBlocks.values()).slice(-5)\n\n updatedBlocks.forEach((block) => setBlockInMap(this.snapshotBlocks, block))\n }\n\n setSearchResult(block: BlockSummary) {\n this.searchResult = block\n }\n\n findById(blockId: string): BlockSummary | undefined {\n if (this.searchResult != null && blockMatchesIdentifier(this.searchResult, blockId)) {\n return this.searchResult\n }\n\n // TODO: Search by block hash (block_mroot) before using the key to return the value\n // previous block navigation uses the block_mroot, has such, to avoid unecessary\n // API calls, searching with block hash might return some results while with key\n // (being usually block_num) won't\n return this.liveBlocks.get(blockId)\n }\n}\n\nfunction setBlockInMap(map: ObservableMap, block: BlockSummary) {\n map.set(block.block_num.toString(), block)\n}\n\nfunction blockMatchesIdentifier(block: BlockSummary, blockId: string) {\n return block.block_num.toString() === blockId || block.id === blockId\n}\n","import { observable } from \"mobx\"\nimport { MarketPrice } from \"../models/marketprice\"\nimport { HeadInfoData } from \"@dfuse/client\"\n\nexport class MetricsStore {\n @observable priceVariation: number\n @observable priceUSD: number\n\n @observable headBlockId: string\n @observable headBlockNum: number\n @observable headBlockProducer: string\n\n @observable lastIrreversibleBlockNum: number\n @observable lastIrreversibleBlockId: string\n\n constructor() {\n this.priceUSD = -1\n this.priceVariation = 0\n\n this.headBlockId = \"\"\n this.headBlockNum = 0\n this.headBlockProducer = \"\"\n\n this.lastIrreversibleBlockNum = 0\n this.lastIrreversibleBlockId = \"\"\n }\n\n setBlockHeight(data: HeadInfoData) {\n if (data.head_block_num > this.headBlockNum) {\n this.headBlockId = data.head_block_id\n this.headBlockNum = data.head_block_num\n }\n\n if (data.head_block_producer !== this.headBlockProducer) {\n this.headBlockProducer = data.head_block_producer\n }\n\n if (data.last_irreversible_block_num > this.lastIrreversibleBlockNum) {\n this.lastIrreversibleBlockNum = data.last_irreversible_block_num\n this.lastIrreversibleBlockId = data.last_irreversible_block_id\n }\n }\n\n setPrice(price: MarketPrice) {\n if (price.price !== this.priceUSD) {\n this.priceUSD = price.price\n this.priceVariation = price.variation\n }\n }\n}\n","import { observable } from \"mobx\"\nimport { VotedProducer, Votes, VoteTally } from \"../models/vote\"\n\nexport class VoteStore {\n @observable votesCast: number\n @observable votes: Votes\n\n constructor() {\n this.votesCast = -1\n this.votes = []\n }\n\n update(voteTally: VoteTally) {\n this.votesCast = voteTally.total_activated_stake / 10000\n\n this.votes = (voteTally.producers || []).map((producer: VotedProducer) => {\n return {\n producer: producer.owner,\n votePercent:\n voteTally.total_votes > 0 ? (producer.total_votes / voteTally.total_votes) * 100 : 0,\n decayedVote: producer.total_votes / voteTally.decay_weight / 10000.0,\n website: producer.url\n }\n })\n }\n}\n","import { observable } from \"mobx\"\nimport { debugLog } from '../services/logger'\n\nexport enum ServiceWorkerStates {\n DEFAULT = \"default\",\n REGISTERED = \"registered\",\n UPDATEFOUND = \"update_found\",\n INSTALLING = \"installing\",\n INSTALLED = \"installed\"\n}\n\nexport class ServiceWorkerStore {\n @observable state: ServiceWorkerStates\n\n constructor() {\n this.state = ServiceWorkerStates.DEFAULT\n }\n\n changeToState(newState: ServiceWorkerStates) {\n debugLog(\"Updating serviceworker state to %s at time %s\", newState, Date.now())\n this.state = newState\n }\n}\n","export interface FilterSection {\n type: FilterTypes\n data: any\n}\n\nexport enum FilterTypes {\n BLOCK_STATUS = \"blockStatus\",\n BLOCK_RANGE = \"blockRange\"\n}\n\nexport enum RangeOptions {\n ALL = \"all\",\n CUSTOM = \"custom\",\n LAST_BLOCKS = \"lastBlocks\"\n}\n\nexport interface BlockRangeFilter {\n min?: number\n max?: number\n lastBlocks?: number\n option: RangeOptions\n}\n\nexport enum FilterCombinations {\n ALL = \"all\",\n ALL_IRREVERSIBLE = \"all_irreversible\",\n BLOCK_RANGE = \"block_range\",\n BLOCK_RANGE_IRREVERSIBLE = \"block_range_irreversible\",\n\n ALL_ASCENDING = \"all_ascending\",\n ALL_ASCENDING_IRREVERSIBLE = \"all_ascending_irreversible\",\n BLOCK_RANGE_ASCENDING = \"block_range_ascending\",\n BLOCK_RANGE_ASCENDING_IRREVERSIBLE = \"block_range_ascending_irreversible\",\n\n LAST_BLOCKS = \"last_blocks\",\n LAST_BLOCKS_IRREVERSIBLE = \"last_blocks_irreversible\",\n\n LAST_BLOCKS_ASCENDING = \"last_blocks_ascending\",\n LAST_BLOCKS_ASCENDING_IRREVERSIBLE = \"last_blocks_irreversible\"\n}\n","export class CursorCache {\n private cursorHistory: string[] = []\n private currentPageCursor = \"\"\n\n private nextPageCursor = \"\"\n\n get currentCursor() {\n return this.currentPageCursor\n }\n\n get hasNextPage() {\n return this.nextPageCursor.length > 0\n }\n\n get hasPreviousPage() {\n return this.cursorHistory.length > 1\n }\n\n setCurrentCursor(currentCursor: string | undefined) {\n this.cursorHistory.push(\"\")\n this.currentPageCursor = currentCursor || \"\"\n }\n\n prepareNextCursor(nextCursor: string | undefined) {\n this.nextPageCursor = nextCursor || \"\"\n return this.nextPageCursor\n }\n\n shiftToPreviousCursor() {\n this.nextPageCursor = this.currentPageCursor\n\n this.currentPageCursor = this.cursorHistory.pop()!\n return this.currentPageCursor\n }\n\n shiftToNextCursor() {\n this.cursorHistory.push(this.currentPageCursor)\n this.currentPageCursor = this.nextPageCursor\n\n return this.nextPageCursor\n }\n\n resetAll(nextCursor?: string) {\n this.cursorHistory = []\n this.nextPageCursor = nextCursor || \"\"\n this.currentPageCursor = \"\"\n }\n}\n","import { compile } from \"path-to-regexp\"\n\nexport const Paths = {\n home: \"/\",\n about: \"/about\",\n vote: \"/vote\",\n viewAccountTabs: \"/account/:id/:currentTab\",\n contact: \"/contact\",\n\n searchResults: \"/search-results\",\n\n serverError: \"/server-error\",\n notFound: \"/not-found\",\n viewAccount: \"/account/:id\",\n viewBlock: \"/block/:id\",\n transactions: \"/transactions\",\n blocks: \"/blocks\",\n viewTransaction: \"/tx/:id\",\n producers: \"/producers\",\n viewTransactionSearch: \"/search\"\n}\n\nexport const Links = {\n blocks: compile(Paths.blocks),\n home: compile(Paths.home),\n about: compile(Paths.about),\n vote: compile(Paths.vote),\n viewAccountTabs: compile(Paths.viewAccountTabs),\n searchResults: compile(Paths.searchResults),\n contact: compile(Paths.contact),\n // Inject equivalent here;..\n\n serverError: compile(Paths.serverError),\n notFound: compile(Paths.notFound),\n\n viewAccount: compile(Paths.viewAccount),\n viewBlock: compile(Paths.viewBlock),\n\n transactions: compile(Paths.transactions),\n viewTransaction: compile(Paths.viewTransaction),\n viewTransactionSearch: compile(Paths.viewTransactionSearch)\n}\n","export const BLOCK_NUM_100B = 100000000000\nexport const BLOCK_NUM_5M = 5000000\n\nexport interface BlockSummary {\n id: string\n irreversible: boolean\n header: BlockHeader\n block_num: number\n dpos_lib_num?: number\n transaction_count: number\n sibling_blocks?: BlockSummary[]\n active_schedule: ProducerSchedule\n}\n\nexport interface BlockHeader {\n timestamp: string\n producer: string\n confirmed: number\n previous: string\n transaction_mroot: string\n action_mroot: string\n schedule_version: string\n new_producers?: ProducerSchedule\n}\n\nexport interface ProducerSchedule {\n version: number\n producers: ProducerKey[]\n}\n\nexport interface ProducerKey {\n producer_name: string\n block_signing_key: string\n}\n","import { observable } from \"mobx\"\nimport {\n BlockRangeFilter,\n FilterCombinations,\n FilterSection,\n FilterTypes,\n RangeOptions\n} from \"../models/search-filters\"\nimport { CursorCache } from \"../services/cursor-store\"\nimport { Links } from \"../routes\"\nimport { stringify } from \"query-string\"\nimport { BLOCK_NUM_100B, BLOCK_NUM_5M } from \"../models/block\"\nimport { SearchTransactionRow, ErrorData } from \"@dfuse/client\"\nimport {\n SearchQueryParams,\n LegacySearchQueryParams,\n upgradeLegacySearchQueryParams\n} from \"../models/search\"\n\nexport function blockRangeToBlockParams(sort: string, data: any) {\n if (data.option === RangeOptions.ALL) {\n return { startBlock: 0, blockCount: BLOCK_NUM_100B }\n }\n\n if (data.option === RangeOptions.LAST_BLOCKS) {\n return { startBlock: 0, blockCount: data.lastBlocks }\n }\n\n let startBlock = data.max > 0 ? data.max : 0\n let blockCount = data.min > 0 ? startBlock - data.min : 0\n\n if (sort === \"asc\") {\n startBlock = data.min > 0 ? data.min : 0\n blockCount = data.max > 0 ? data.max - startBlock : 0\n }\n return { startBlock, blockCount }\n}\n\nexport function blockParamsToBlockRange(\n sort: string,\n startBlock: number,\n blockCount: number\n): { lastBlocks?: number; min?: number; max?: number; option: RangeOptions } {\n if (startBlock > 0 && startBlock - blockCount > 0) {\n if (sort === \"desc\") {\n const min = startBlock - blockCount\n return { min, max: startBlock, option: RangeOptions.CUSTOM }\n }\n\n const min = startBlock\n const max = startBlock + blockCount\n return { min, max, option: RangeOptions.CUSTOM }\n }\n\n if (blockCount > 0) {\n return { lastBlocks: blockCount, option: RangeOptions.LAST_BLOCKS }\n }\n\n return { lastBlocks: BLOCK_NUM_5M, option: RangeOptions.LAST_BLOCKS }\n}\n\nexport class SearchStore {\n DEFAULT_PARAMS = {\n limit: 25,\n sort: \"desc\",\n withReversible: true,\n startBlock: 0,\n blockCount: BLOCK_NUM_100B\n }\n\n public cursorCache: CursorCache\n @observable hasNextPage: boolean\n @observable rangeOption: RangeOptions\n @observable query = \"\"\n @observable filterSections: FilterSection[]\n @observable loadingTransactions: boolean\n @observable searchError?: ErrorData\n @observable results: SearchTransactionRow[]\n @observable previousBlockRangeFilter?: BlockRangeFilter\n @observable filterCombination: FilterCombinations\n @observable sort: \"asc\" | \"desc\" = \"desc\"\n @observable limit: number\n\n constructor() {\n this.cursorCache = new CursorCache()\n this.filterSections = this.defaultFilterSections\n this.loadingTransactions = false\n this.results = []\n this.hasNextPage = false\n this.rangeOption = RangeOptions.LAST_BLOCKS\n this.filterCombination = FilterCombinations.LAST_BLOCKS\n this.limit = 25\n }\n\n get defaultFilterSections(): FilterSection[] {\n return [\n {\n type: FilterTypes.BLOCK_RANGE,\n data: { lastBlocks: BLOCK_NUM_5M, option: RangeOptions.LAST_BLOCKS }\n },\n {\n type: FilterTypes.BLOCK_STATUS,\n data: { irreversibleOnly: false }\n }\n ]\n }\n\n get defaultLastBlocksFilterSection() {\n return {\n type: FilterTypes.BLOCK_RANGE,\n data: { lastBlocks: BLOCK_NUM_5M, option: RangeOptions.LAST_BLOCKS }\n }\n }\n\n get defaultCustomFilterSection() {\n return {\n type: FilterTypes.BLOCK_RANGE,\n data: { min: 1, max: 2 * BLOCK_NUM_5M, option: RangeOptions.CUSTOM }\n }\n }\n\n saveBlockRange() {\n const filter = this.filterSection(FilterTypes.BLOCK_RANGE)\n if (filter) {\n if (filter.data.option === RangeOptions.CUSTOM) {\n this.previousBlockRangeFilter = {\n min: filter.data.min,\n max: filter.data.max,\n option: filter.data.option\n }\n } else {\n this.previousBlockRangeFilter = {\n lastBlocks: filter.data.lastBlocks,\n option: filter.data.option\n }\n }\n }\n this.updateFilterCombinations()\n }\n\n updateFilterCombinations() {\n // This is used to display a localized text of the current filter status\n const filterRange = this.filterSection(FilterTypes.BLOCK_RANGE)!\n\n if (this.sort === \"desc\") {\n if (filterRange.data.option === RangeOptions.ALL && this.withReversible) {\n this.filterCombination = FilterCombinations.ALL\n } else if (filterRange.data.option === RangeOptions.ALL && !this.withReversible) {\n this.filterCombination = FilterCombinations.ALL_IRREVERSIBLE\n } else if (filterRange.data.option === RangeOptions.CUSTOM && this.withReversible) {\n this.filterCombination = FilterCombinations.BLOCK_RANGE\n } else if (filterRange.data.option === RangeOptions.CUSTOM && !this.withReversible) {\n this.filterCombination = FilterCombinations.BLOCK_RANGE_IRREVERSIBLE\n } else if (filterRange.data.option === RangeOptions.LAST_BLOCKS && !this.withReversible) {\n this.filterCombination = FilterCombinations.LAST_BLOCKS_IRREVERSIBLE\n } else if (filterRange.data.option === RangeOptions.LAST_BLOCKS && this.withReversible) {\n this.filterCombination = FilterCombinations.LAST_BLOCKS\n }\n } else if (filterRange.data.option === RangeOptions.ALL && this.withReversible) {\n this.filterCombination = FilterCombinations.ALL_ASCENDING\n } else if (filterRange.data.option === RangeOptions.ALL && !this.withReversible) {\n this.filterCombination = FilterCombinations.ALL_ASCENDING_IRREVERSIBLE\n } else if (filterRange.data.option === RangeOptions.CUSTOM && this.withReversible) {\n this.filterCombination = FilterCombinations.BLOCK_RANGE_ASCENDING\n } else if (filterRange.data.option === RangeOptions.CUSTOM && !this.withReversible) {\n this.filterCombination = FilterCombinations.BLOCK_RANGE_ASCENDING_IRREVERSIBLE\n } else if (filterRange.data.option === RangeOptions.LAST_BLOCKS && !this.withReversible) {\n this.filterCombination = FilterCombinations.LAST_BLOCKS_ASCENDING_IRREVERSIBLE\n } else if (filterRange.data.option === RangeOptions.LAST_BLOCKS && this.withReversible) {\n this.filterCombination = FilterCombinations.LAST_BLOCKS_ASCENDING\n }\n }\n\n didRangeFilterChange(): boolean {\n const currentRange = this.filterSection(FilterTypes.BLOCK_RANGE)!.data\n const reference = this.previousBlockRangeFilter\n if (!reference) {\n return false\n }\n if (reference.option === RangeOptions.ALL && currentRange.option === RangeOptions.ALL) {\n return false\n }\n\n if (reference.option === RangeOptions.CUSTOM && currentRange.option === RangeOptions.ALL) {\n return true\n }\n\n if (reference.option === RangeOptions.LAST_BLOCKS && currentRange.option === RangeOptions.ALL) {\n return true\n }\n\n if (reference.option === RangeOptions.ALL && currentRange.option === RangeOptions.LAST_BLOCKS) {\n return true\n }\n\n if (\n reference.option === RangeOptions.LAST_BLOCKS &&\n currentRange.option === RangeOptions.CUSTOM\n ) {\n return true\n }\n\n if (\n reference.option === RangeOptions.CUSTOM &&\n currentRange.option === RangeOptions.LAST_BLOCKS\n ) {\n return true\n }\n\n if (reference.min === currentRange.min && reference.max === currentRange.max) {\n return false\n }\n\n return true\n }\n\n get blockRangeParams(): { startBlock: number; blockCount: number } {\n const filter = this.filterSection(FilterTypes.BLOCK_RANGE)\n\n if (filter) {\n return blockRangeToBlockParams(this.sort, filter.data)\n }\n\n return { startBlock: 0, blockCount: 0 }\n }\n\n get blockRange(): BlockRangeFilter {\n return this.filterSection(FilterTypes.BLOCK_RANGE)!.data\n }\n\n get withReversible(): boolean {\n const filter = this.filterSection(FilterTypes.BLOCK_STATUS)\n\n if (filter && filter) {\n return !filter.data.irreversibleOnly\n }\n\n return false\n }\n\n updateCursorCache(cursor: string) {\n if (this.cursorCache.currentCursor === cursor) {\n this.cursorCache.resetAll()\n } else {\n this.cursorCache.prepareNextCursor(cursor)\n this.hasNextPage = this.cursorCache.hasNextPage\n }\n }\n\n toggleSort() {\n this.sort = this.sort === \"desc\" ? \"asc\" : \"desc\"\n }\n\n parseField(field: string, value: string | number) {\n if (field === \"min\" || field === \"max\" || field === \"lastBlocks\") {\n value = value.toString().replace(/\\D/g, \"\")\n return parseInt(value, 10)\n }\n return value\n }\n\n updateFilter(type: FilterTypes, field: string, value: string | number | boolean) {\n const section = this.filterSection(type)\n\n if (section) {\n if (field === \"option\") {\n if (value === RangeOptions.LAST_BLOCKS) {\n this.sort = \"desc\"\n section.type = this.defaultLastBlocksFilterSection.type\n section.data = Object.assign(this.defaultLastBlocksFilterSection.data)\n } else if (value === RangeOptions.CUSTOM) {\n section.type = this.defaultCustomFilterSection.type\n section.data = Object.assign(this.defaultCustomFilterSection.data)\n }\n }\n section.data[field] = value\n\n if (field === \"option\" && type === FilterTypes.BLOCK_RANGE) {\n this.rangeOption = value as RangeOptions\n }\n }\n }\n\n toParams(cursor?: string): SearchQueryParams {\n return {\n ...this.DEFAULT_PARAMS,\n ...this.toParamsForUrl(cursor),\n limit: this.limit\n }\n }\n\n updateFromUrlParams(rawParams: SearchQueryParams & LegacySearchQueryParams) {\n const newSections = this.defaultFilterSections\n const params = upgradeLegacySearchQueryParams(rawParams)\n\n this.query = params.q ? decodeURIComponent(params.q) : \"\"\n this.sort = params.sort ? params.sort : this.sort\n\n if (params.startBlock && params.blockCount) {\n const section = newSections.find((ref: FilterSection) => ref.type === FilterTypes.BLOCK_RANGE)\n if (section) {\n section.data = blockParamsToBlockRange(this.sort, params.startBlock, params.blockCount)\n this.rangeOption = section.data.option\n }\n } else {\n this.rangeOption = RangeOptions.LAST_BLOCKS\n }\n\n const statusSection = newSections.find(\n (ref: FilterSection) => ref.type === FilterTypes.BLOCK_STATUS\n )\n if (statusSection) {\n if (params.withReversible !== undefined) {\n statusSection.data.irreversibleOnly = !params.withReversible\n } else {\n statusSection.data.irreversibleOnly = false\n }\n }\n\n this.filterSections = newSections\n this.updateFilterCombinations()\n }\n\n cursoredUrl(cursor: string): string {\n let queryParams = {}\n if (this.query && this.query.length > 0) {\n queryParams = this.toParamsForUrl(cursor)\n }\n\n return `${Links.viewTransactionSearch()}?${stringify(queryParams)}`\n }\n\n private filterSection(type: FilterTypes) {\n return this.filterSections.find((ref: FilterSection) => ref.type === type)\n }\n\n private toParamsForUrl(cursor?: string): SearchQueryParams {\n return {\n q: this.query,\n startBlock: this.blockRangeParams.startBlock,\n blockCount: this.blockRangeParams.blockCount,\n withReversible: this.withReversible,\n sort: this.sort,\n cursor\n }\n }\n}\n","export interface SearchQueryParams {\n q: string\n sort: \"asc\" | \"desc\"\n startBlock?: number\n blockCount?: number\n cursor?: string\n withReversible?: boolean\n limit?: number\n}\n\n// Those params where like that (snake case) before a refactor\n// to make them fit our name casing even in URL params. Usually,\n// we would not care about those.\n//\n// But the params are actually used for by our monitoring tools\n// that make query with those exact params name. So we decided\n// to support them.\nexport interface LegacySearchQueryParams {\n start_block?: number\n block_count?: number\n with_reversible?: boolean\n}\n\nexport function upgradeLegacySearchQueryParams(\n params: SearchQueryParams & LegacySearchQueryParams\n): SearchQueryParams {\n if (params.block_count != null && params.blockCount == null) {\n params.blockCount = params.block_count\n delete params.block_count\n }\n\n if (params.start_block != null && params.startBlock == null) {\n params.startBlock = params.start_block\n delete params.start_block\n }\n\n if (params.with_reversible != null && params.withReversible == null) {\n params.withReversible = params.with_reversible\n delete params.with_reversible\n }\n\n return params\n}\n","import { observable } from \"mobx\"\n\nexport class MenuStore {\n @observable opened: boolean\n\n constructor() {\n this.opened = false\n }\n\n open() {\n this.opened = true\n }\n\n close() {\n this.opened = false\n }\n}\n","import { computed, observable } from \"mobx\"\nimport { AbiLoader } from \"../services/abi-loader\"\nimport { GetTableRowParams } from \"../clients/websocket/eosws\"\n\nexport class ContractTableStore {\n limit = 100\n @observable abiLoader?: AbiLoader\n\n @observable scope = \"\"\n @observable lowerBound?: string\n @observable upperBound?: string\n @observable tableName = \"\"\n @observable offset = 0\n @observable accountName = \"\"\n @observable tableKey?: string\n @observable tableRows?: any\n @observable loading = false\n @observable error = false\n\n @computed get nRows(): number {\n return this.tableRows && this.tableRows.rows ? this.tableRows.rows.length : 0\n }\n\n @computed get params(): GetTableRowParams {\n return {\n json: true,\n scope: this.scope,\n lower_bound:\n this.lowerBound && this.lowerBound.toString().length > 0 ? this.lowerBound : undefined,\n upper_bound:\n this.upperBound && this.upperBound.toString().length > 0 ? this.upperBound : undefined,\n limit: this.limit,\n code: this.accountName,\n table: this.tableName,\n table_key: this.tableKey ? this.tableKey : undefined\n }\n }\n\n initFromUrlParams(abiLoader: AbiLoader, accountName: string, params: any) {\n this.accountName = accountName\n this.abiLoader = abiLoader\n this.tableKey = this.abiLoader.getTableFirstKey(this.tableName)\n this.tableName = params.tableName || this.abiLoader.tableNames[0] || \"\"\n this.lowerBound = params.lowerBound\n this.upperBound = params.upperBound\n this.scope = params.scope ? params.scope : accountName\n }\n\n get firstTableKey(): string | undefined {\n return this.abiLoader ? this.abiLoader.getTableFirstKey(this.tableName) : undefined\n }\n\n get urlParams() {\n return {\n lowerBound: this.lowerBound,\n upperBound: this.upperBound,\n scope: this.scope ? this.scope : this.accountName,\n offset: this.offset <= 0 ? undefined : this.offset,\n tableName: this.tableName\n }\n }\n}\n","import * as React from \"react\"\nimport { Link } from \"react-router-dom\"\nimport {\n alignSelf,\n color,\n display,\n fontFamily,\n fontSize,\n fontWeight,\n justifySelf,\n lineHeight,\n space,\n textAlign,\n borders,\n width,\n compose\n} from \"styled-system\"\nimport { styled } from \"../../theme\"\n\nconst textStyle = compose(\n alignSelf,\n borders,\n color,\n display,\n fontFamily,\n fontSize,\n fontWeight,\n lineHeight,\n justifySelf,\n space,\n textAlign,\n width\n)\n\nexport const Text: React.ComponentType = styled.div`\n position: relative;\n text-transform: ${(props: any) => props.textTransform};\n text-overflow: ${(props: any) => props.textOverflow};\n white-space: ${(props: any) => props.whiteSpace};\n word-break: ${(props: any) => props.wordBreak};\n\n ${textStyle}\n`\n\nexport const HoverableText: React.ComponentType = styled(Text)`\n &:hover {\n cursor: pointer;\n color: ${(props) => props.theme.colors.linkHover};\n }\n`\n\nexport const HoverableTextNoHighlight: React.ComponentType = styled(Text)`\n &:hover {\n cursor: pointer;\n }\n`\n\nexport const EllipsisText: React.ComponentType = styled(Text)`\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n`\n\nexport const CondensedBold: React.ComponentType = styled.b`\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 800;\n`\n\nexport const BigTitle: React.ComponentType = styled.h1`\n ${textStyle}\n`\n\nexport const Title: React.ComponentType = styled.h2`\n ${textStyle}\n`\n\nexport const SubTitle: React.ComponentType = styled.h3`\n ${textStyle}\n`\n\nText.defaultProps = {\n color: \"text\"\n}\n\nBigTitle.defaultProps = {\n color: \"text\"\n}\n\nTitle.defaultProps = {\n color: \"text\"\n}\n\nSubTitle.defaultProps = {\n color: \"text\",\n my: [2]\n}\n\nexport interface TextLinkProps {\n whiteSpace?: string\n lineHeight?: string\n download?: string\n to: string\n fontSize?: any\n fontFamily?: any\n fontWeight?: any\n style?: any\n pt?: any\n pb?: any\n pr?: any\n p?: any\n textAlign?: any\n color?: any\n pl?: any\n width?: any\n mr?: any\n ml?: any\n my?: any\n mx?: any\n}\n\nexport const LinkStyledText: React.ComponentType = styled(HoverableText)`\n display: inline;\n ${textStyle}\n`\n\nexport const StyledLink: React.ComponentType = styled(Link)`\n ${fontSize};\n`\n\nexport const TextLinkLight: React.SFC = ({ to, children, ...rest }) => {\n return (\n \n \n {children}\n \n \n )\n}\n\nexport const TextLink: React.SFC = ({ to, children, ...rest }) => {\n return (\n \n \n {children}\n \n \n )\n}\n\nexport const ExternalTextLink: React.SFC = ({ to, download, children, ...rest }) => {\n if (download) {\n return (\n \n \n {children}\n \n \n )\n }\n return (\n \n \n {children}\n \n \n )\n}\n\nexport const ExternalTextLinkLight: React.SFC = ({ to, children, ...rest }) => {\n return (\n \n \n {children}\n \n \n )\n}\n\nexport class KeyValueFormatEllipsis extends React.Component<{ content: string }> {\n render() {\n const regex: RegExp = /(\\S*: )/g\n return (\n \n {this.props.content.split(regex).map((value: string, index: number) => {\n if (regex.test(value)) {\n return {value}\n }\n\n return value\n })}\n \n )\n }\n}\n","import * as React from \"react\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faSearch } from \"@fortawesome/free-solid-svg-icons\"\nimport { Links } from \"../../routes\"\nimport { theme, styled } from \"../../theme\"\nimport { Text } from \"../../atoms/text/text.component\"\n\ninterface Props {\n query: string\n position?: \"left\" | \"right\"\n color?: string\n fontSize?: number[] | string\n lineHeight?: number[] | string\n fontWeight?: string\n fixed?: boolean\n}\n\nconst WrapperLeft: React.ComponentType = styled(Text)`\n padding-left: 15px;\n\n display: inline-block;\n &.hide-on-hover .svg svg {\n display: none;\n }\n &.hide-on-hover:hover .svg svg {\n display: block;\n }\n &:hover .svg svg:hover {\n display: block;\n cursor: pointer;\n }\n`\n\nconst WrapperRight: React.ComponentType = styled(Text)`\n padding-right: 15px;\n\n display: inline-block;\n &.hide-on-hover .svg svg {\n display: none;\n }\n &.hide-on-hover:hover .svg svg {\n display: block;\n }\n &:hover .svg svg:hover {\n display: block;\n cursor: pointer;\n }\n`\n\nconst MagnifierWrapper: React.ComponentType = styled(Cell)`\n display: inline-block;\n position: absolute;\n font-size: 10px;\n top: calc(50% - 5px);\n`\n\nexport class SearchShortcut extends React.Component {\n onClick = () => {\n window.location.href = `${Links.viewTransactionSearch()}?q=${this.props.query}`\n }\n\n renderLeft() {\n return (\n \n \n {this.props.children}\n \n \n \n \n \n )\n }\n\n renderRight() {\n return (\n \n \n {this.props.children}\n \n \n \n \n \n )\n }\n\n render() {\n return this.props.position === \"left\" ? this.renderLeft() : this.renderRight()\n }\n}\n","import * as React from \"react\"\nimport { TextLink, Text } from \"../../atoms/text/text.component\"\n\nimport { styled } from \"../../theme\"\nimport { Authorization } from \"@dfuse/client\"\nimport { Links } from \"../../routes\"\nimport { faShieldAlt } from \"@fortawesome/free-solid-svg-icons\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\n\ninterface Props {\n authorization: Authorization\n}\n\nconst AuthorizationContainer = styled.div`\n padding: 2px 10px !important;\n border: 1px solid #7a85ff;\n width: auto;\n box-sizing: border-box;\n display: inline-block;\n margin-top: -2px;\n position: relative;\n`\n\nexport const AutorizationBox: React.FC = ({ authorization }) => (\n \n \n {authorization.actor}\n \n \n \n \n \n {authorization.permission}\n \n \n)\n","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Text, TextLink, TextLinkProps } from \"../text/text.component\"\nimport { styled } from \"../../theme\"\nimport * as React from \"react\"\n\nexport const MonospaceTextLink: React.SFC = ({ ...rest }) => (\n \n)\n\nexport const ArrowTo: React.ComponentType = styled(FontAwesomeIcon)`\n height: auto;\n margin: 1px 4px 0 4px;\n vertical-align: middle;\n color: ${(props) => props.theme.colors.text};\n`\n\nexport const MonospaceText: React.ComponentType = styled(Text)`\n font-family: \"Roboto Mono\", monospace;\n white-space: nowrap;\n`\n\nexport const MonospaceTextWrap: React.ComponentType = styled(Text)`\n font-family: \"Roboto Mono\", monospace;\n`\n\nexport const WrappingText: React.ComponentType = styled(Text)`\n overflow: hidden;\n word-wrap: break-word;\n`\n\nexport const WrappingMonospaceText: React.ComponentType = styled(Text)`\n font-family: \"Roboto Mono\", monospace;\n overflow: hidden;\n word-wrap: break-word;\n`\n","import * as React from \"react\"\nimport { Trans, translate } from \"react-i18next\"\nimport { MonospaceTextLink } from \"../../atoms/text-elements/misc\"\nimport { ExternalTextLink, Text } from \"../../atoms/text/text.component\"\nimport { Box } from \"@dfuse/explorer\"\nimport { Links } from \"../../routes\"\nimport { SearchShortcut } from \"../search-shortcut/search-shortcut\"\n\ninterface Field {\n type: string\n value: string | number\n name: string\n query?: string\n}\n\ninterface Props {\n i18nKey: string\n fields: Field[]\n fontSize: number[] | string\n}\n\nexport class BaseFormattedText extends React.Component {\n renderAccountLink(value: string, index: number): JSX.Element {\n return (\n \n {value}\n \n )\n }\n\n renderLink(value: string, index: number): JSX.Element {\n return (\n \n {value}\n \n )\n }\n\n renderBold(value: string | number, index: number): JSX.Element {\n return (\n \n {value}\n \n )\n }\n\n renderPlain(value: string | number, index: number): JSX.Element {\n return (\n \n {value}\n \n )\n }\n\n renderSearchShortcut(value: any, query: string, index: number): JSX.Element {\n return (\n \n {value}\n \n )\n }\n\n render() {\n const values = {}\n this.props.fields.forEach((field) => {\n values[field.name] = field.value\n })\n\n const components = this.props.fields.map((field: Field, index: number) => {\n if (field.type === \"accountLink\") {\n return this.renderAccountLink(field.value as string, index)\n }\n\n if (field.type === \"bold\") {\n return this.renderBold(field.value, index)\n }\n\n if (field.type === \"link\") {\n return this.renderLink(field.value as string, index)\n }\n\n if (field.type === \"searchShortcut\") {\n return this.renderSearchShortcut(field.value, field.query!, index)\n }\n\n return this.renderPlain(field.value, index)\n })\n\n return (\n \n \n \n )\n }\n}\n\nexport const FormattedText = translate()(BaseFormattedText)\n","import { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { RAMOp } from \"@dfuse/client\"\nimport { Links } from \"../../routes\"\nimport { formatBytes, Box } from \"@dfuse/explorer\"\n\nimport { FormattedText } from \"../formatted-text/formatted-text\"\nimport { t } from \"i18next\"\n\ninterface Props {\n ramops: RAMOp[]\n type: string\n}\n\n@observer\nexport class RamUsage extends React.Component {\n renderContent() {\n return this.props.ramops.map((ramop: RAMOp, index: number) => {\n const i18nKey =\n ramop.delta < 0 ? \"transaction.ramUsage.released\" : \"transaction.ramUsage.consumed\"\n\n const fields = [\n {\n type: \"accountLink\",\n value: ramop.payer,\n name: \"accountName\"\n },\n { type: \"bold\", value: formatBytes(Math.abs(ramop.delta)), name: \"bytes\" },\n { type: \"bold\", value: formatBytes(ramop.usage, 21000), name: \"totalBytes\" }\n ]\n\n return (\n \n \n \n )\n })\n }\n\n renderContentDetail() {\n return this.props.ramops.map((ramop: RAMOp, index: number) => {\n const i18nKey =\n ramop.delta < 0\n ? \"transaction.ramUsage.releasedDetail\"\n : \"transaction.ramUsage.consumedDetail\"\n\n const fields = [\n {\n type: \"accountLink\",\n value: ramop.payer,\n name: \"accountName\",\n link: Links.viewAccount({ id: ramop.payer })\n },\n { type: \"bold\", value: formatBytes(Math.abs(ramop.delta)), name: \"bytes\" },\n {\n type: \"plain\",\n value: t(`transaction.ramUsage.operations.${ramop.op}`),\n name: \"operation\"\n }\n ]\n\n return (\n \n \n \n )\n })\n }\n\n render() {\n return (\n \n \n {this.props.type === \"detailed\" ? this.renderContentDetail() : this.renderContent()}\n \n \n )\n }\n}\n","import { DbOp, TableOp } from \"@dfuse/client\"\nimport * as React from \"react\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { FormattedText } from \"../formatted-text/formatted-text\"\nimport { t } from \"i18next\"\nimport { theme, styled } from \"../../theme\"\nimport { MonospaceTextWrap } from \"../../atoms/text-elements/misc\"\nimport { JsonWrapper } from \"@dfuse/explorer\"\n\ninterface Props {\n dbops: DbOp[]\n tableops: TableOp[]\n}\n\nconst EditIndicator: React.ComponentType = styled(Cell)`\n position: absolute;\n left: -25px;\n width: 10px;\n text-align: center;\n top: -2px;\n`\n\nexport class DBOperations extends React.Component {\n renderContentNew(dbop: DbOp) {\n if (dbop.new!.json) {\n return {JSON.stringify(dbop.new!.json, null, \" \")}\n }\n\n return dbop.new!.hex\n }\n\n renderContentOld(dbop: DbOp) {\n if (dbop.old!.json) {\n return {JSON.stringify(dbop.old!.json, null, \" \")}\n }\n\n return dbop.old!.hex\n }\n\n renderTableOps() {\n return this.props.tableops.map((tableop: TableOp, index: number) => {\n const [, scope, table] = tableop.path.split(\"/\")\n\n const fields = [\n {\n name: \"operation\",\n type: \"bold\",\n value: t(`transaction.tableops.operations.${tableop.op}`)\n },\n {\n name: \"table\",\n type: \"searchShortcut\",\n value: table,\n query: `db.table:${table}`\n },\n {\n name: \"scope\",\n type: \"searchShortcut\",\n value: scope,\n query: `db.table:${table}/${scope}`\n }\n ]\n\n return (\n \n \n \n )\n })\n }\n\n renderDBOps() {\n return this.props.dbops.map((dbop: DbOp, index: number) => {\n const fields = [\n { name: \"operation\", type: \"bold\", value: t(`transaction.dbops.operations.${dbop.op}`) },\n {\n name: \"table\",\n type: \"searchShortcut\",\n value: dbop.table,\n query: `db.table:${dbop.table}`\n },\n {\n name: \"scope\",\n type: \"bold\",\n value: dbop.scope\n },\n {\n name: \"primaryKey\",\n type: \"bold\",\n value: dbop.key\n }\n ]\n\n return (\n \n \n \n {dbop.old && dbop.old.hex ? (\n \n - {this.renderContentOld(dbop)}\n \n ) : null}\n {dbop.new && dbop.new.hex ? (\n \n + {this.renderContentNew(dbop)}\n \n ) : null}\n \n \n )\n })\n }\n\n render() {\n return (\n \n {this.renderTableOps()}\n
\n {this.renderDBOps()}\n
\n )\n }\n}\n","import * as React from \"react\"\nimport { Cell } from \"../ui-grid/ui-grid.component\"\nimport { color } from \"styled-system\"\nimport { theme, styled } from \"../../theme\"\n\nconst StyledUl: React.ComponentType = styled.ul`\n list-style: none;\n padding: 0;\n`\n\nconst StyledLi: React.ComponentType = styled.li`\n list-style: none;\n\n padding-left: 50px;\n padding-right: 20px;\n padding-bottom: 5px;\n padding-top: 5px;\n ${color};\n`\n\ninterface LabelValue {\n label: string\n value: string\n}\n\ninterface Props {\n tabData: LabelValue[]\n onSelectTab: (value: string) => void\n}\n\ninterface State {\n currentTab: string\n}\n\nexport class VerticalTabs extends React.Component {\n state: { currentTab: string }\n\n constructor(props: Props) {\n super(props)\n this.state = { currentTab: this.props.tabData[0].value }\n }\n\n selectTab(value: string) {\n this.setState({ currentTab: value })\n this.props.onSelectTab(value)\n }\n\n render() {\n return (\n \n \n {this.props.tabData.map((entry) => {\n return (\n this.selectTab(entry.value)}\n >\n {entry.label}\n \n )\n })}\n \n \n )\n }\n}\n","import { DbOp, StateAbiToJsonResponse } from \"@dfuse/client\"\n\ninterface KeyValues {\n [key: string]: string[]\n}\n\nexport interface ABIDecoderParams {\n table: string\n account: string\n hex_rows: string[]\n block_num: number\n}\n\nexport function groupDBOpHex(dbops: DbOp[]): KeyValues {\n const groupedDBOp: KeyValues = {}\n dbops.forEach((dbop: DbOp) => {\n const key = `${dbop.account}::${dbop.table}`\n if (groupedDBOp[key]) {\n groupedDBOp[key] = addDBOpHex(groupedDBOp[key], dbop)\n } else {\n groupedDBOp[key] = addDBOpHex([], dbop)\n }\n })\n\n return groupedDBOp\n}\n\nexport function addDBOpHex(groupedDBOp: string[], dbop: DbOp) {\n if (dbop.old && dbop.old.hex) {\n groupedDBOp.push(dbop.old.hex)\n }\n\n if (dbop.new && dbop.new.hex) {\n groupedDBOp.push(dbop.new.hex)\n }\n\n return groupedDBOp\n}\n\nexport function decodedResponseToDBOps(\n responses: (StateAbiToJsonResponse | undefined)[],\n dbops: DbOp[]\n): DbOp[] {\n let decodedDBOps: DbOp[] = []\n responses.forEach((response) => {\n if (!response) {\n return\n }\n\n let index = 0\n const tmpDBOps = dbops\n .filter((dbop: DbOp) => dbop.table === response.table && dbop.account === response.account)\n .map((dbop: DbOp) => {\n if (dbop.old && dbop.old.hex) {\n dbop.old.json = response.rows[index]\n index += 1\n }\n\n if (dbop.new && dbop.new.hex) {\n dbop.new.json = response.rows[index]\n index += 1\n }\n return dbop\n })\n\n decodedDBOps = decodedDBOps.concat(tmpDBOps)\n })\n\n return decodedDBOps\n}\n","import { DfuseError } from \"@dfuse/client\"\nimport { debugLog } from '../../services/logger'\n\nexport function legacyHandleDfuseApiError(error: any) {\n if (error instanceof DfuseError) {\n debugLog(\"API Error\", error)\n }\n\n // TODO: Before, we were turning a 404 into `undefined`, not sure\n // it's possible anymore using the current `@dfuse/client` to\n // \"know\" this.\n\n return undefined\n}\n","import { decodedResponseToDBOps, groupDBOpHex } from \"../helpers/dbop.helpers\"\nimport { DbOp } from \"@dfuse/client\"\nimport { legacyHandleDfuseApiError } from \"../clients/rest/api\"\n\nimport { getDfuseClient } from \"@dfuse/explorer\"\n\nexport function decodeDBOps(dbops: DbOp[], blockNum: number, callback: (dbops: DbOp[]) => any) {\n const groupedDBOps = groupDBOpHex(dbops)\n const promises = Object.keys(groupedDBOps).map((groupKey: string) => {\n return getDfuseClient()\n .stateAbiBinToJson(\n groupKey.split(\"::\")[0],\n groupKey.split(\"::\")[1],\n groupedDBOps[groupKey],\n { blockNum }\n )\n .catch(legacyHandleDfuseApiError)\n })\n\n Promise.all(promises).then((responses) => {\n callback(decodedResponseToDBOps(responses, dbops))\n })\n}\n","import { Cell } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport { SearchShortcut } from \"../../search-shortcut/search-shortcut\"\nimport { AutorizationBox } from \"../../authorization-box/authorization-box.component\"\nimport { DetailLine, JsonWrapper } from \"@dfuse/explorer\"\nimport { t } from \"i18next\"\nimport { LinkStyledText, Text } from \"../../../atoms/text/text.component\"\nimport { theme, styled } from \"../../../theme\"\n\nimport { RamUsage } from \"../../ram-usage/ram-usage.component\"\nimport { DBOperations } from \"../../db-operations/db-operations.component\"\nimport * as React from \"react\"\nimport { DbOp, RAMOp, TableOp, Action, Authorization } from \"@dfuse/client\"\nimport { MonospaceTextLink } from \"../../../atoms/text-elements/misc\"\nimport { Links } from \"../../../routes\"\nimport { VerticalTabs } from \"../../../atoms/vertical-tabs/vertical-tabs\"\nimport { decodeDBOps } from \"../../../services/dbops\"\nimport { TraceInfo } from \"../../../models/pill-templates\"\n\nconst ContentWrapper: React.ComponentType = styled(Cell)`\n padding: 24px 24px 24px 40px;\n`\n\nconst RawWrapper = styled(Cell)`\n margin-bottom: 10px;\n`\n\nconst TabContentWrapper: React.ComponentType = styled(Cell)`\n overflow-y: scroll;\n max-height: 500px;\n`\n\nexport const PILL_TAB_VALUES = {\n DBOPS: \"dbops\",\n RAMOPS: \"ramops\",\n GENERAL: \"general\",\n CONSOLE: \"console\",\n JSON_DATA: \"jsonData\",\n HEX_DATA: \"hexData\"\n}\n\nexport interface Props {\n console?: string\n dbops?: DbOp[]\n ramops?: RAMOp[]\n tableops?: TableOp[]\n action: Action\n traceInfo?: TraceInfo\n data: any\n displayFullContentButton: boolean\n onDisplayFullContent: () => void\n blockNum?: number\n}\n\ninterface State {\n currentTab: string\n decodedDBOps: DbOp[]\n isDecodedDBOps: boolean\n}\n\nexport class PillTabContentComponent extends React.Component {\n PILL_TABS = [{ label: t(\"transaction.pill.general\"), value: PILL_TAB_VALUES.GENERAL }]\n\n constructor(props: Props) {\n super(props)\n\n this.state = {\n currentTab: PILL_TAB_VALUES.GENERAL,\n isDecodedDBOps: false,\n decodedDBOps: []\n }\n }\n\n get displayedDBOps(): DbOp[] {\n if (this.state.decodedDBOps.length > 0) {\n return this.state.decodedDBOps\n }\n\n if (this.props.dbops) {\n return this.props.dbops\n }\n\n return []\n }\n\n hasDBOpsToDecode() {\n return !this.state.isDecodedDBOps && this.props.dbops\n }\n\n onChangeContent = (currentTab: string) => {\n this.setState({ currentTab }, () => {\n if (\n this.state.currentTab === PILL_TAB_VALUES.DBOPS &&\n this.hasDBOpsToDecode() &&\n this.props.blockNum\n ) {\n decodeDBOps(this.props.dbops!, this.props.blockNum, (decodedDBOps: DbOp[]) => {\n this.setState((prevState) => ({\n currentTab: prevState.currentTab,\n decodedDBOps,\n isDecodedDBOps: true\n }))\n })\n }\n })\n }\n\n renderReceiverInfo() {\n if (this.props.traceInfo) {\n return (\n \n \n \n {this.props.traceInfo.receiver}\n \n \n \n )\n }\n return null\n }\n\n renderAccountLink() {\n let query = `account:${this.props.action.account}`\n if (this.props.traceInfo) {\n query = `${query} receiver:${this.props.traceInfo.receiver}`\n }\n return (\n \n \n \n {this.props.action.account}\n {\" \"}\n \n \n )\n }\n\n renderActionName() {\n let query = `action:${this.props.action.name} account:${this.props.action.account}`\n if (this.props.traceInfo) {\n query = `${query} receiver:${this.props.traceInfo.receiver}`\n }\n return (\n \n \n {this.props.action.name}\n \n \n )\n }\n\n renderAuthorizations() {\n const authorizations = (this.props.action.authorization || []).map(\n (entry: Authorization, index: number) => {\n return (\n \n \n \n \n \n )\n }\n )\n\n return (\n \n {authorizations}\n \n )\n }\n\n renderDisplayFullContentButton() {\n return this.props.displayFullContentButton ? (\n \n this.props.onDisplayFullContent()}>\n Show Full Content\n \n \n ) : null\n }\n\n renderTabContent() {\n if (this.state.currentTab === PILL_TAB_VALUES.GENERAL) {\n return (\n \n {this.renderReceiverInfo()}\n {this.renderAccountLink()}\n {this.renderActionName()}\n {this.renderAuthorizations()}\n \n )\n }\n\n if (this.state.currentTab === PILL_TAB_VALUES.JSON_DATA) {\n return (\n \n {this.renderDisplayFullContentButton()}\n {JSON.stringify(this.props.data, null, \" \")}\n \n )\n }\n\n if (this.state.currentTab === PILL_TAB_VALUES.HEX_DATA) {\n return (\n \n {this.props.action.hex_data}\n \n )\n }\n\n if (this.state.currentTab === PILL_TAB_VALUES.RAMOPS) {\n return (\n \n \n \n )\n }\n\n if (this.state.currentTab === PILL_TAB_VALUES.DBOPS) {\n return (\n \n \n \n )\n }\n\n if (this.state.currentTab === PILL_TAB_VALUES.CONSOLE) {\n return (\n \n {this.props.console!.replace(/\\\\r/g, \"\")}\n \n )\n }\n\n return null\n }\n\n render() {\n const tabs = [...this.PILL_TABS]\n\n if (this.props.action.data) {\n tabs.push({ label: t(\"transaction.pill.jsonData\"), value: PILL_TAB_VALUES.JSON_DATA })\n } else if (this.props.action.hex_data) {\n tabs.push({ label: t(\"transaction.pill.hexData\"), value: PILL_TAB_VALUES.HEX_DATA })\n }\n\n if (this.props.dbops && this.props.dbops.length > 0) {\n tabs.push({ label: t(\"transaction.pill.dbOps\"), value: PILL_TAB_VALUES.DBOPS })\n }\n\n if (this.props.ramops && this.props.ramops.length > 0) {\n tabs.push({ label: t(\"transaction.pill.ramOps\"), value: PILL_TAB_VALUES.RAMOPS })\n }\n\n if (this.props.console && this.props.console.length > 0) {\n tabs.push({ label: t(\"transaction.pill.console\"), value: PILL_TAB_VALUES.CONSOLE })\n }\n\n return [\n ,\n {this.renderTabContent()}\n ]\n }\n}\n","import {\n extractValueWithUnits,\n formatBytes,\n getAmount,\n hex2sha256,\n secondsToTime,\n} from \"@dfuse/explorer\"\nimport { ActionTrace, Action } from \"@dfuse/client\"\nimport { sha256 } from \"js-sha256\"\nimport { TraceInfo } from \"../../../models/pill-templates\"\nimport { Config } from \"../../../models/config\"\n\nexport function getClaimAmounts(traceInfo?: TraceInfo) {\n const inlineTraces = (traceInfo ? traceInfo.inline_traces : []) || []\n\n const vpayAction = inlineTraces.find((trace: ActionTrace) => {\n return trace.act.data.from === \"eosio.vpay\"\n })\n\n const bpayAction = inlineTraces.find((trace: ActionTrace) => {\n return trace.act.data.from === \"eosio.bpay\"\n })\n\n const ppayAction = inlineTraces.find((trace: ActionTrace) => {\n return trace.act.data.from === \"eosio.ppay\"\n })\n\n const unit = Config.chain_core_symbol_code\n\n const vpay = vpayAction ? getAmount(vpayAction.act.data.quantity) : 0\n\n const bpay = bpayAction ? getAmount(bpayAction.act.data.quantity) : 0\n const ppay = ppayAction ? getAmount(ppayAction.act.data.quantity) : 0\n\n const total = `${(vpay + bpay + ppay).toFixed(Config.chain_core_symbol_precision)} ${unit}`\n return [total, bpay, vpay, ppay]\n}\n\nexport function getNewAccountInTraces(traceInfo?: TraceInfo): string | undefined {\n const inlineTraces = (traceInfo ? traceInfo.inline_traces : []) || []\n\n const newAccountAction = inlineTraces.find((trace: ActionTrace) => {\n return trace.act.name === \"newaccount\" && trace.act.account === \"eosio\"\n })\n\n if (newAccountAction) {\n return newAccountAction.act.data.name\n }\n return undefined\n}\n\nexport function getPixeosClaimAmounts(traceInfo?: TraceInfo) {\n const inlineTraces = (traceInfo ? traceInfo.inline_traces : []) || []\n\n const total = inlineTraces.find((trace: ActionTrace) => {\n return trace.act.data.from === \"pixeos1paint\"\n })\n\n if (total) {\n return total.act.data.quantity\n }\n\n return \"unknown quantity\"\n}\n\nexport function getResolveBetAmounts(traceInfo?: TraceInfo) {\n const inlineTraces = (traceInfo ? traceInfo.inline_traces : []) || []\n\n const transferAction = inlineTraces.find((trace: ActionTrace) => {\n return trace.act.name === \"transfer\"\n })\n\n const [EOSAmount, unit] = transferAction\n ? extractValueWithUnits(transferAction.act.data.quantity)\n : [0, \" - \"]\n const receiver = transferAction ? transferAction.act.data.to : \"\"\n return [EOSAmount, unit, receiver]\n}\n\nexport function getBlobUrlFromPayload(payload: string | Uint8Array, downloadUrl: string = \"\") {\n if (downloadUrl.length > 0) {\n URL.revokeObjectURL(downloadUrl)\n }\n\n downloadUrl = URL.createObjectURL(\n new Blob([payload], {\n type: \"text/plain;charset=utf-8\",\n })\n )\n return [sha256(payload), downloadUrl]\n}\n\nexport function getRefundTransfer(traceInfo?: TraceInfo): ActionTrace | undefined {\n const inlineTraces = (traceInfo ? traceInfo.inline_traces : []) || []\n\n const transferAction = inlineTraces.find((trace: ActionTrace) => {\n return trace.act.name === \"transfer\"\n })\n return transferAction\n}\n\n// ******************************************************************************************* //\n\nexport function getBetReceiptLevel1Fields(action: Action) {\n return [\n {\n type: \"accountLink\",\n value: action.data.bettor,\n name: \"account\",\n },\n { type: \"bold\", value: action.data.payout, name: \"EOSAmount\" },\n { type: \"bold\", value: action.data.random_roll, name: \"roll\" },\n ]\n}\n\nexport function getBuyRamBytesLevel1Fields(action: Action) {\n return [\n {\n name: \"payer\",\n value: action.data.payer,\n type: \"accountLink\",\n },\n { name: \"bytes\", value: formatBytes(action.data.bytes), type: \"bold\" },\n {\n name: \"receiver\",\n value: action.data.receiver,\n type: \"accountLink\",\n },\n ]\n}\n\nexport function getBuyRamLevel1Fields(action: Action) {\n return [\n { name: \"payer\", type: \"accountLink\", value: action.data.payer },\n { name: \"amountEOS\", type: \"bold\", value: action.data.quantity || action.data.quant },\n { name: \"receiver\", type: \"accountLink\", value: action.data.receiver },\n ]\n}\n\nexport function getClaimRewardsLevel1Fields(action: Action, traceInfo?: TraceInfo) {\n return [\n {\n name: \"account\",\n value: action.data.owner,\n type: \"accountLink\",\n },\n { name: \"amountEOS\", value: getClaimAmounts(traceInfo)[0], type: \"bold\" },\n ]\n}\n\nexport function getPixeosClaimLevel1Fields(action: Action, traceInfo?: TraceInfo) {\n return [\n {\n name: \"account\",\n value: action.data.owner,\n type: \"accountLink\",\n },\n { name: \"amountEOS\", value: getPixeosClaimAmounts(traceInfo), type: \"bold\" },\n ]\n}\n\nexport function getKarmaClaimLevel1Fields(action: Action) {\n return [\n {\n name: \"account\",\n value: action.data.owner,\n type: \"accountLink\",\n },\n ]\n}\n\nexport function getDfuseEventLevel1Fields(action: Action) {\n return [\n {\n name: \"indexedField\",\n value: \"IndexedField\",\n type: \"bold\",\n },\n {\n name: \"fields\",\n value: action.data.data.split(\"=\").join(\" = \").split(\"&\").join(\", \"),\n type: \"plain\",\n },\n ]\n}\n\nexport function getCarbonIssueLevel1Fields(action: Action) {\n return [\n {\n name: \"amountCUSD\",\n value: action.data.quantity,\n type: \"bold\",\n },\n {\n name: \"to\",\n value: action.data.to,\n type: \"accountLink\",\n },\n ]\n}\n\nexport function getCarbonBurnLevel1Fields(action: Action) {\n return [\n {\n name: \"amountCUSD\",\n value: action.data.quantity,\n type: \"bold\",\n },\n {\n name: \"from\",\n value: action.data.from,\n type: \"accountLink\",\n },\n ]\n}\n\nexport function getKarmaPowerdownLevel1Fields(action: Action) {\n return [\n {\n name: \"account\",\n value: action.data.owner,\n type: \"accountLink\",\n },\n { name: \"amountKarma\", value: action.data.quantity, type: \"bold\" },\n ]\n}\n\nexport function getKarmaClaimPostLevel1Fields(action: Action) {\n return [\n {\n name: \"account\",\n value: action.data.author,\n type: \"accountLink\",\n },\n ]\n}\n\nexport function getPixeosAddToClaimLevel1Fields(action: Action) {\n return [\n {\n name: \"account\",\n value: action.data.user,\n type: \"accountLink\",\n },\n {\n name: \"amountEOS\",\n value: `${(action.data.addbalance / 10000000000).toFixed(10)} EOS`,\n type: \"bold\",\n },\n ]\n}\n\nexport function getKarmaPowerUpLevel1Fields(action: Action) {\n return [\n {\n name: \"account\",\n value: action.data.owner,\n type: \"accountLink\",\n },\n { name: \"amountKarma\", value: action.data.quantity, type: \"bold\" },\n ]\n}\n\nexport function getClaimRewardsLevel2Fields(action: Action, traceInfo?: TraceInfo) {\n return [\n {\n name: \"account\",\n value: action.data.owner,\n type: \"accountLink\",\n },\n {\n name: \"amountbEOS\",\n value: `${getClaimAmounts(traceInfo)[1]} ${Config.chain_core_symbol_code}`,\n type: \"bold\",\n },\n {\n name: \"amountvEOS\",\n value: `${getClaimAmounts(traceInfo)[2]} ${Config.chain_core_symbol_code}`,\n type: \"bold\",\n },\n ]\n}\n\nexport function getDelegatebwLevel1Fields(action: Action) {\n return [\n {\n name: \"from\",\n type: \"accountLink\",\n value: action.data.from,\n },\n { name: \"amountCPU\", type: \"bold\", value: action.data.stake_cpu_quantity },\n { name: \"amountNET\", type: \"bold\", value: action.data.stake_net_quantity },\n {\n name: \"to\",\n type: \"accountLink\",\n value: action.data.receiver,\n },\n ]\n}\n\nexport function getDelegatebwLevel2Fields(action: Action) {\n return [\n { name: \"amountCPU\", type: \"bold\", value: action.data.stake_cpu_quantity },\n { name: \"amountNET\", type: \"bold\", value: action.data.stake_net_quantity },\n ]\n}\n\nexport function getLinkAuthLevel1Fields(action: Action) {\n return [\n { name: \"account\", type: \"accountLink\", value: action.data.account },\n { name: \"requirement\", type: \"bold\", value: action.data.requirement },\n { name: \"type\", type: \"bold\", value: action.data.type },\n { name: \"code\", type: \"accountLink\", value: action.data.code },\n ]\n}\n\nexport function getLinkAuthLevel2Fields(action: Action) {\n return [\n { name: \"requirement\", type: \"bold\", value: action.data.requirement },\n { name: \"type\", type: \"bold\", value: action.data.type },\n { name: \"code\", type: \"bold\", value: action.data.code },\n ]\n}\n\nexport function getNewAccountLevel1Fields(action: Action) {\n return [\n { name: \"creator\", type: \"accountLink\", value: action.data.creator },\n { name: \"name\", type: \"accountLink\", value: action.data.name },\n ]\n}\n\nexport function getNewAccountLevel2Fields(permission: any, parentName: string, type: string) {\n if (type === \"account\") {\n return [\n { name: \"permission\", type: \"bold\", value: parentName },\n { name: \"account\", type: \"accountLink\", value: permission.permission.actor },\n { name: \"accountPermission\", type: \"bold\", value: permission.permission.permission },\n ]\n }\n\n if (type === \"key\") {\n return [\n { name: \"permission\", type: \"bold\", value: parentName },\n { name: \"key\", type: \"plain\", value: permission.key },\n ]\n }\n\n if (type === \"wait\") {\n return [\n { name: \"permission\", type: \"bold\", value: parentName },\n { name: \"wait\", type: \"plain\", value: permission.key },\n ]\n }\n\n return []\n}\n\nexport function getRefundLevel1Fields(action: Action, traceInfo?: TraceInfo) {\n const transferAction = getRefundTransfer(traceInfo)\n\n return [\n {\n name: \"refundAmount\",\n type: \"bold\",\n value: transferAction ? transferAction.act.data.quantity : \"-\",\n },\n { name: \"owner\", type: \"accountLink\", value: action.data.owner },\n ]\n}\n\nexport function getResolveBetLevel1Fields(action: Action, traceInfo?: TraceInfo) {\n const traceData = getResolveBetAmounts(traceInfo)\n return [\n { name: \"account\", type: \"accountLink\", value: traceData[2] },\n { name: \"EOSAmount\", type: \"bold\", value: `${traceData[0]} ${traceData[1]}` },\n { name: \"betId\", type: \"bold\", value: action.data.bet_id },\n ]\n}\n\nexport function getUndelegatebwLevel1Fields(action: Action) {\n return [\n { name: \"from\", type: \"accountLink\", value: action.data.from },\n { name: \"amountCPU\", type: \"bold\", value: action.data.unstake_cpu_quantity },\n { name: \"amountNET\", type: \"bold\", value: action.data.unstake_net_quantity },\n ]\n}\n\nexport function getUndelegatebwLevel2Fields(action: Action) {\n const cpuAmount = getAmount(action.data.unstake_cpu_quantity)\n const netAmount = getAmount(action.data.unstake_net_quantity)\n const unit = action.data.unstake_cpu_quantity.split(\" \")[1]\n const total = `${(cpuAmount + netAmount).toFixed(Config.chain_core_symbol_precision)} ${unit}`\n\n return [{ name: \"total\", type: \"bold\", value: total }]\n}\n\nexport function getUpdateAuthLevel1Fields(action: Action) {\n return [\n { name: \"account\", type: \"accountLink\", value: action.data.account },\n { name: \"permission\", type: \"bold\", value: action.data.permission },\n ]\n}\n\nexport function getUpdateAuthLevel2Fields(permission: any, data: any, type: string) {\n if (type === \"account\") {\n return [\n { name: \"permission\", type: \"bold\", value: data.permission },\n { name: \"account\", type: \"accountLink\", value: permission.permission.actor },\n { name: \"accountPermission\", type: \"bold\", value: permission.permission.permission },\n { name: \"parent\", type: \"bold\", value: data.parent },\n ]\n }\n\n if (type === \"key\") {\n return [\n { name: \"permission\", type: \"bold\", value: data.permission },\n { name: \"key\", type: \"bold\", value: permission.key },\n { name: \"parent\", type: \"bold\", value: data.parent },\n ]\n }\n\n if (type === \"wait\") {\n return [\n { name: \"permission\", type: \"bold\", value: data.permission },\n { name: \"wait\", type: \"plain\", value: secondsToTime(permission.wait_sec) },\n { name: \"parent\", type: \"plain\", value: data.parent },\n ]\n }\n\n return []\n}\n\nexport function getInfiniverseMakeOfferLevel1Fields(action: Action) {\n return [\n { name: \"buyer\", type: \"accountLink\", value: action.data.buyer },\n { name: \"quantity\", type: \"bold\", value: action.data.price },\n { name: \"land_id\", type: \"bold\", value: action.data.land_id },\n ]\n}\n\nexport function getInfiniverseMoveLandLevel1Fields(action: Action) {\n const authorizations = action.authorization || []\n\n return [{ name: \"authorizer\", type: \"accountLink\", value: authorizations[0].actor }]\n}\n\nexport function getInfiniversePersistPolyLevel1Fields(action: Action) {\n return [\n { name: \"landTitle\", type: \"bold\", value: \"Land ID:\" },\n { name: \"land_id\", type: \"plain\", value: action.data.land_id },\n { name: \"polyTitle\", type: \"bold\", value: \"Poly ID:\" },\n { name: \"poly_id\", type: \"plain\", value: action.data.poly_id },\n ]\n}\n\nexport function getInfiniverseRegisterlandLevel1Fields(action: Action) {\n return [{ name: \"owner\", type: \"accountLink\", value: action.data.owner }]\n}\n\nexport function getInfiniverseSetLandPriceLevel1Fields(action: Action) {\n const authorizations = action.authorization || []\n\n return [\n { name: \"authorizer\", type: \"accountLink\", value: authorizations[0].actor },\n { name: \"quantity\", type: \"bold\", value: action.data.price },\n { name: \"land_id\", type: \"bold\", value: action.data.land_id },\n ]\n}\n\nexport function getInfiniverseUpdatePersistLevel1Fields(action: Action) {\n return [\n { name: \"landTitle\", type: \"bold\", value: \"Land ID:\" },\n { name: \"land_id\", type: \"plain\", value: action.data.land_id },\n { name: \"polyTitle\", type: \"bold\", value: \"Persistent ID:\" },\n { name: \"poly_id\", type: \"plain\", value: action.data.persistent_id },\n ]\n}\n\nexport function getInfiniverseDeletePersistLevel1Fields(action: Action) {\n const authorizations = action.authorization || []\n\n return [{ name: \"authorizer\", type: \"accountLink\", value: authorizations[0].actor }]\n}\n\nexport function getNewAccountFromNameServiceFields(accountName: string) {\n return [\n { name: \"account\", type: \"accountLink\", value: accountName },\n { name: \"link\", type: \"link\", value: \"https://eosnameservice.io\" },\n ]\n}\n\nexport function truncateJsonString(dataString: string, cutOff: number, croppedCallback: () => any) {\n return JSON.parse(dataString, (key, value) => {\n if (typeof value === \"string\" && value.length > cutOff) {\n croppedCallback()\n if (key === \"code\") {\n return `${value.substring(0, cutOff)}... SHA256[${hex2sha256(value)}]`\n }\n\n return `${value.substring(0, cutOff)}... [+${value.length - cutOff}]`\n }\n\n return value\n })\n}\n\nexport function truncateStringPlus(str: string, cutOff: number) {\n if (str.length > cutOff) {\n return `${str.substring(0, cutOff)}... [+${str.length - cutOff}]`\n }\n\n return str\n}\n","export const PILL_CONTRACT_LOGOS = {\n \"eos-mainnet\": [\n {\n contract: \"eosiotptoken\",\n path: \"/images/pill-logos/logo-contract-token-pocket-01.svg\",\n website: \"https://www.tokenpocket.pro/\"\n },\n {\n contract: \"bgbgbgbgbgbg\",\n path: \"/images/pill-logos/logo-contract-big-game-02.svg\",\n website: \"https://big.game/\"\n },\n {\n contract: \"eoshashcoins\",\n path: \"/images/pill-logos/logo-contract-bethash-02.svg\",\n website: \"https://bethash.io/\"\n },\n {\n contract: \"eosbettokens\",\n path: \"/images/pill-logos/logo-contract-token-eosbet-01.svg\",\n website: \"https://eosbet.io/\"\n },\n {\n contract: \"eosbetdice11\",\n path: \"/images/pill-logos/logo-contract-token-eosbet-01.svg\",\n website: \"https://eosbet.io/\"\n },\n {\n contract: \"eosbiggame21\",\n path: \"/images/pill-logos/logo-contract-big-game-02.svg\",\n website: \"https://big.game/\"\n },\n {\n contract: \"eosio.token\",\n path: \"/images/pill-logos/logo-contract-eos-01.svg\",\n website: \"https://github.com/EOSIO/eos\"\n },\n {\n contract: \"eosio\",\n path: \"/images/pill-logos/logo-contract-eos-01.svg\",\n website: \"https://github.com/EOSIO/eos\",\n action: \"onblock\"\n },\n {\n contract: \"txtprtltoken\",\n path: \"/images/pill-logos/logo-contract-trust-dice-01.svg\",\n website: \"https://trustdice.win/\"\n },\n {\n contract: \"trustdicewin\",\n path: \"/images/pill-logos/logo-contract-trust-dice-01.svg\",\n website: \"https://trustdice.win/\"\n }\n ]\n}\n\nexport const ACCOUNT_CREATORS = {\n \"eos-mainnet\": [\n {\n contract: \"itokenpocket\",\n website: \"https://www.tokenpocket.pro/\",\n path: \"/images/pill-logos/logo-contract-token-pocket-01.svg\"\n },\n {\n contract: \"lynxlynxlynx\",\n website: \"https://eoslynx.com/\",\n path: \"/images/pill-logos/logo-contract-eos-lynx-01.svg\"\n },\n {\n contract: \"signupeoseos\",\n website: \"https://www.eosx.io/\",\n path: \"/images/pill-logos/logo-contract-eosx-01.svg\"\n },\n {\n contract: \"tp\",\n website: \"https://www.tokenpocket.pro/\",\n path: \"/images/pill-logos/logo-contract-token-pocket-01.svg\"\n },\n {\n contract: \"walletbancor\",\n website: \"https://www.bancor.network/\",\n path: \"/images/pill-logos/logo-contract-bancor-01.svg\"\n },\n {\n contract: \"paytomat4eos\",\n website: \"https://wallet.paytomat.com/\",\n path: \"/images/pill-logos/logo-contract-paytomat-01.svg\"\n },\n {\n contract: \"accountcreat\",\n website: \"https://eos-account-creator.com/\",\n path: \"/images/pill-logos/logo-contract-eos-account-creator-01.svg\"\n },\n {\n contract: \"senseaccount\",\n website: \"https://www.sense.chat/\",\n path: \"/images/pill-logos/logo-contract-sense-01.svg\"\n }\n ]\n}\n","import * as React from \"react\"\nimport {\n Box,\n explodeJson,\n DetailLineAuto,\n Pill,\n PillLogoProps,\n PillClickable,\n MonospaceText,\n} from \"@dfuse/explorer\"\n\nimport { Cell } from \"../../../atoms/ui-grid/ui-grid.component\"\n\nimport { KeyValueFormatEllipsis, Text } from \"../../../atoms/text/text.component\"\nimport { theme } from \"../../../theme\"\nimport { t } from \"i18next\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faBell } from \"@fortawesome/free-solid-svg-icons\"\nimport { PillTabContentComponent } from \"./pill-tab-content.component\"\nimport { truncateJsonString, truncateStringPlus } from \"./pill-template.helpers\"\nimport { GenericPillParams, GenericPillState } from \"../../../models/pill-templates\"\nimport { Config } from \"../../../models/config\"\nimport { PILL_CONTRACT_LOGOS } from \"./all-logos\"\n\nexport interface GenericPillComponentInterface {\n renderContent(): JSX.Element | null\n renderLevel2Template(): JSX.Element | null\n renderExpandedContent(): JSX.Element | null\n render(): JSX.Element | null\n}\n\nexport interface PillTargetAction {\n contract?: string\n action: string\n}\n\nexport interface PillRenderingContext {\n validActions: PillTargetAction[]\n networks: string[]\n needsTranslate?: boolean\n}\n\nexport interface PillComponentClass

extends React.ComponentClass {\n requireFields: string[]\n contextForRendering(): PillRenderingContext\n i18n?(): { [key: string]: any }\n}\n\nexport class GenericPillComponent\n extends React.Component\n implements GenericPillComponentInterface {\n jsonData: any = {}\n croppedData: any = {}\n hasCroppedData = false\n dataCutOff = 200\n\n get logoParams(): PillLogoProps | undefined {\n const availableLogos = PILL_CONTRACT_LOGOS[Config.network_id] || []\n const logoParams = availableLogos.find((ref: any) => {\n if (ref.action) {\n return ref.contract === this.props.action.account && ref.action === this.props.action.name\n }\n\n return ref.contract === this.props.action.account\n })\n\n if (logoParams) {\n return {\n path: logoParams.path,\n website: logoParams.website,\n }\n }\n\n return undefined\n }\n\n get logo(): PillLogoProps | undefined {\n let { logoParams } = this\n if (this.props.traceInfo && this.props.action.account !== this.props.traceInfo.receiver) {\n logoParams = undefined\n }\n\n return logoParams\n }\n\n constructor(props: GenericPillParams) {\n super(props)\n\n this.rebuildData()\n this.state = { fullContent: false }\n }\n\n componentDidUpdate(prevProps: Readonly): void {\n if (prevProps.action !== this.props.action) {\n this.rebuildData()\n this.forceUpdate()\n }\n }\n\n rebuildData() {\n if (this.props.action.data == null) {\n if (this.props.action.hex_data) {\n this.croppedData = truncateStringPlus(this.props.action.hex_data, this.dataCutOff)\n return\n }\n\n this.jsonData = \"\"\n return\n }\n\n if (typeof this.props.action.data === \"string\") {\n this.croppedData = truncateStringPlus(this.props.action.data, this.dataCutOff)\n return\n }\n\n const dataString = JSON.stringify(this.props.action.data)\n this.jsonData = JSON.parse(dataString)\n\n this.croppedData = truncateJsonString(dataString, this.dataCutOff, () => {\n this.hasCroppedData = true\n })\n }\n\n showFullContent = () => {\n this.setState({ fullContent: true })\n }\n\n blockNum() {\n return this.props.pageContext && this.props.pageContext.blockNum\n ? this.props.pageContext.blockNum\n : undefined\n }\n\n hasInlineTraces() {\n return (\n this.props.traceInfo &&\n this.props.traceInfo.inline_traces &&\n this.props.traceInfo.inline_traces.length > 0\n )\n }\n\n renderLevel2Template = (): JSX.Element | null => {\n const { data } = this.props.action\n\n if (data && data.memo) {\n return {data.memo}\n }\n\n return null\n }\n\n renderPill2 = () => {\n if (!this.props.headerAndTitleOptions.title) {\n return (\n \n  \n \n )\n }\n\n const WrapperComponent = this.props.disabled ? Box : PillClickable\n\n return (\n \n \n {this.props.headerAndTitleOptions.title}\n \n \n )\n }\n\n renderExpandedContent = (): JSX.Element => {\n const displayFullContentButton = !this.state.fullContent && this.hasCroppedData\n return (\n \n )\n }\n\n renderDefaultContent() {\n return (\n \n \n \n )\n }\n\n renderContent = (): JSX.Element => {\n return this.renderDefaultContent()\n }\n\n renderTextWrapper(content: JSX.Element | string, padding?: number[]) {\n return (\n \n {content}\n \n )\n }\n\n renderHeaderText() {\n const headerText = this.props.headerAndTitleOptions.header.text\n if (headerText.includes(\"notification:\")) {\n return (\n \n {this.renderTextWrapper(, [2])}\n {this.renderTextWrapper(headerText.replace(\"notification:\", \"\"))}\n \n )\n }\n\n return headerText\n }\n\n render(): JSX.Element {\n return (\n }\n renderInfo={this.renderLevel2Template}\n />\n )\n }\n}\n","import account from \"./account.i18n\"\nimport banner from \"./banner.i18n\"\nimport block from \"./block.i18n\"\nimport accountTables from \"./accountTables.i18n\"\nimport core from \"./core.i18n\"\nimport dapp from \"./dapp.i18n\"\nimport dashboard from \"./dashboard.i18n\"\nimport errors from \"./errors.i18n\"\nimport footer from \"./footer.i18n\"\nimport forum from \"./forum.i18n\"\nimport navbar from \"./navbar.i18n\"\nimport producer from \"./producer.i18n\"\nimport search from \"./search.i18n\"\nimport transaction from \"./transaction.i18n\"\nimport vote from \"./vote.i18n\"\nimport filters from \"./filters.i18n\"\n\nexport const en = {\n ...account,\n ...banner,\n ...accountTables,\n ...core,\n ...block,\n ...dapp,\n ...dashboard,\n ...errors,\n ...search,\n ...navbar,\n ...producer,\n ...transaction,\n ...vote,\n ...footer,\n ...forum,\n ...filters\n}\n","export default {\n account: {\n transactions: {\n title: \"Recent Transactions\",\n subTitle: \" (Up to head block)\"\n },\n tokens: {\n title: \"OTHER TOKENS\",\n table: {\n token: \"Token\",\n quantity: \"Balance\",\n contract: \"Account\"\n }\n },\n social_links: {\n verified_by: \"Verified by EOS Canada\"\n },\n status: {\n used: \"used\"\n },\n summary: {\n block_producer: \"Block Producer\",\n creation_date: \"Creation Date\",\n created_by: \"Created by\",\n creation_trx_id: \"Created in tx\",\n owner: \"Owner:\",\n website: \"Website\",\n email: \"Email\",\n location: \"Location\",\n staked_by: \"Staked by\",\n self: \"Self\",\n tooltip: {\n other: \"Others\",\n networkTitle: \"Total\",\n cpuTitle: \"Total\"\n },\n verified_website: \"Verified website (owned by account)\",\n voter_info: {\n noVotes: \"This account is currently not voting for any Block Producers.\",\n title: \"Block Producer Votes\",\n labels: {\n latest_vote: \"LATEST VOTE: \",\n strength: \"Decayed: \",\n vote_for: \"CURRENTLY VOTING FOR:\",\n nextDecay: \"next decay Saturday 00:00 UTC\",\n vote_weight: \"VOTE WEIGHT\",\n decayed_vote_weight: \"DECAYED VOTE WEIGHT\",\n vote_for_producers: \"Votes cast for block producer(s):\",\n vote_for_proxy: \"Block producer(s) voted by proxy:\"\n }\n }\n },\n permissions: {\n title: \"PERMISSIONS\",\n labels: {\n weight: \"Weight:\",\n account: \"Account:\",\n wait: \"Wait:\",\n seconds: \"seconds\",\n key: \"Key:\",\n name: \"Permission Name:\",\n parent_permission: \"Parent Permission\",\n threshold: \"Authorization, threshold:\"\n }\n },\n badges: {\n gn: \"Gn\",\n px: \"Px\",\n pv: \"Pv\",\n co: \"Co\",\n bp: \"Bp\",\n my: {\n name: \"My\",\n title: \"Account created by MYKEY\"\n }\n },\n pie_chart: {\n legendTitle: \"TOTAL BALANCE\",\n labels: {\n staked_cpu: \"STAKED FOR CPU\",\n staked_network: \"STAKED FOR NETWORK\",\n delegated_cpu: \"DELEGATED FOR CPU\",\n delegated_network: \"DELEGATED FOR NETWORK\",\n pending_refund: \"PENDING REFUND\",\n available_funds: \"AVAILABLE FUNDS\",\n rex: \"REX\",\n rex_funds: \"REX FUNDS\"\n }\n },\n banner: {\n labels: {\n transactions: \"transactions\",\n votes_staked: \"votes staked\",\n transactions_value: \"transactions value\"\n }\n },\n status_bar: {\n units: {\n kb: \"Kb\",\n mb: \"Mb\",\n seconds: \"s\"\n },\n titles: {\n available: \"available\",\n memory: \"RAM\",\n cpu_bandwidth: \"CPU\",\n network_bandwidth: \"NETWORK\"\n }\n },\n tabs: {\n vote_title: \"Votes\",\n transactions: \"Transactions\",\n tables: \"Tables\"\n },\n loading: \"Loading account\",\n tables: {\n formatted: \"Formatted\"\n }\n }\n}\n","export default {\n banner: {\n eos_usd: \"EOS (in USD)\",\n head_block: \"head block\",\n head_block_producer: \"Current Producer\",\n head_block_producer_tooltip: \"Producer of the last block\",\n irreversible_block_tooltip: \"Last irreversible block\",\n irreversible_block: \"irreversible block\",\n transactions: \"transactions\",\n tooltip: {\n last_24h_change: \"Last 24h change (source: binance.com)\"\n }\n }\n}\n","export default {\n accountTables: {\n search: {\n scope: \"Scope\",\n lowerBound: \"Lower Bound\",\n load: \"LOAD\"\n },\n tables: {\n dropdown: {\n placeholder: \"Select a table\"\n }\n }\n }\n}\n","export default {\n core: {\n list: {\n next: \"Next\",\n previous: \"Previous\"\n },\n notFoundErrorMessage: \"This entity could not be found.\",\n serverErrorMessage: \"There was an error on the server.\",\n tagline: \"HIGH-PRECISION\",\n tagline2: \" BLOCK EXPLORER\",\n networkOptions: {\n eos_mainnet: \"EOS MAINNET\",\n eos_kylin: \"KYLIN TESTNET\",\n eos_eosio: \"EOSIO TESTNET\"\n },\n by: \"By\",\n newVersionAvailable: \"A NEW VERSION OF EOSQ IS AVAILABLE, PLEASE \",\n refresh: \"REFRESH\",\n menu: {\n mainTitle: \"MENU\",\n titles: {\n network: \"NETWORKS\",\n testnetNetwork: \"TESTNETS\",\n navigation: \"NAVIGATION\",\n language: \"LANGUAGE\"\n }\n }\n }\n}\n","export default {\n block: {\n producerSchedule: {\n title: \"Block Producers Schedule\"\n },\n dpos_lib_num: \"DPoS LIB Num\",\n scheduleVersion: \"Schedule version\",\n transactionCount: \"Tx Count\",\n irreversible: \"Irreversible\",\n stale: \"Stale\",\n reversible: \"Reversible\",\n title: \"Blocks\",\n newBlock: \"{{count}} new block\",\n newBlock_plural: \"{{count}} new blocks\",\n list: {\n title: \"Blocks\",\n empty: \"No blocks\",\n loading: \"Loading blocks...\",\n header: {\n timestamp: \"Timestamp\",\n block_num: \"Block #\",\n id: \"Block ID\",\n age: \"Age\",\n producer: \"Producer\",\n transactionCount: \"Tx Count\",\n productionTimeElapsed: \"Production Time (s)\"\n }\n }\n }\n}\n","export default {\n dapp: {\n list: {\n header: {\n rank: \"#\",\n name: \"Name\",\n voteReceived: \"Vote Received\",\n blockProducedCount: \"Block Prod. Nb\",\n transactionProcessedCount: \"Transac. Prod. Nb\"\n }\n }\n }\n}\n","export default {\n dashboard: {\n blocks: \"Blocks\",\n sevenDays: \"7 days\",\n topTenBlockProducers: \"Top 10 Block Producers\",\n topTenDappsProducers: \"Top 10 Dapps Producers\",\n transactions: \"Transactions\",\n transactionVolume: \"Transaction Volume\"\n }\n}\n","export default {\n errors: {\n serverDown: \"Remote server is down\",\n unknownError: \"An error occurred on the remote server\"\n }\n}\n","export default {\n search: {\n placeholder: \"Search for accounts, blocks, transactions, timestamps, ...\",\n result: {\n noResultFoundFor: \"No result found for\",\n blockFound: \"Block found but not handled yet, come back soon!\",\n error: \"An error occurred on the server while performing the search\",\n nothingFound: \"Nothing found\",\n searchQuery: \"Search query\",\n unregisteredLabel: \"Unregistered account\",\n unregisteredValue: \"You might be able to claim in the future\",\n errors: {\n label: \"Error:\",\n request_validation_error: \"your query was malformed\",\n generic_error: \"The search failed\"\n }\n },\n suggestions: {\n summary: {\n account_history: \"Account history for {{accountName}}\",\n signed_by: \"Transactions Signed by {{accountName}}\",\n eos_token_transfer: \"Token transfers from {{accountName}}\",\n fuzzy_token_search: \"Fuzzy token search for {{accountName}}\"\n }\n },\n syntax: \"SYNTAX:\",\n irreversibleOnly: \"Only includes irreversible blocks\",\n searchResultsFor: \"Search Results\",\n sqeDocumentation: \"SQE LANGUAGE\",\n loading: \"Loading...\",\n errorFetch: \"No suggestions for this search\"\n },\n transactionSearch: {\n buttons: {\n signedBy: \"SIGNED BY {{accountName}}\",\n notifications: \"NOTIFICATIONS\"\n },\n search: \"SEARCH\",\n title: \"Search Transactions\",\n results: {\n title: \"Results for\",\n subTitle: \"Only includes irreversible blocks\"\n },\n buttonLabels: {\n account: \"ACCOUNT\",\n tokens: \"TOKENS\",\n system: \"SYSTEM ACTIONS\"\n },\n dropdowns: {\n tokens: {\n allTokens: \"ALL TOKENS\",\n eos: \"EOS\",\n popularTokens: \"POPULAR TOKENS\"\n },\n system: {\n claimRewards: \"CLAIM REWARDS\",\n delegateBandwidth: \"DELEGATE BANDWIDTH\",\n undelegateBandwidth: \"UNDELEGATE BANDWIDTH\",\n regProducer: \"REG PRODUCER\",\n setCode: \"SET CODE\"\n }\n }\n }\n}\n","export default {\n navbar: {\n blocks: \"Blocks\",\n transactions: \"Transactions\",\n producers: \"Producers\",\n holders: \"Holders\",\n dapps: \"DApps\"\n }\n}\n","export default {\n producer: {\n title: \"Block Producers\",\n list: {\n empty: \"No producers\",\n header: {\n rank: \"#\",\n name: \"Name\",\n voteReceived: \"Vote Received\",\n blockProducedCount: \"Block Prod. Nb\",\n transactionProcessedCount: \"Transac. Prod. Nb\"\n }\n }\n }\n}\n","export default {\n transaction: {\n displayedTree: {\n creationTree: \"Creation Tree\",\n executionTree: \"Execution Tree\"\n },\n showMoreActions: {\n title: \"+ {{extraActions}} action(s)\",\n longTitle: \"+ {{extraActions}} action(s) / + {{extraDeferred}} deferred operation(s)\"\n },\n tableops: {\n operations: {\n INS: \"CREATE TABLE\",\n REM: \"REMOVE TABLE\"\n },\n label: \"<0>{{operation}} | table:<1>{{table}} | scope:<2>{{scope}} \"\n },\n dbops: {\n operations: {\n INS: \"INSERT ROW\",\n UPD: \"UPDATE ROW\",\n REM: \"REMOVE ROW\"\n },\n label:\n \"<0>{{operation}} | table:<1>{{table}} | scope:<2>{{scope}} | primary key: <3>{{primaryKey}}:\"\n },\n ramUsage: {\n operations: {\n create_table: \"creating table\",\n deferred_trx_add: \"storing deferred transaction\",\n deferred_trx_cancel: \"canceling deferred transaction\",\n deferred_trx_pushed: \"creating deferred transaction\",\n deferred_trx_removed: \"executing deferred transaction\",\n deleteauth: \"deleting authority\",\n linkauth: \"linking authority\",\n newaccount: \"creating new account\",\n primary_index_add: \"storing row (primary)\",\n primary_index_remove: \"removing row (primary)\",\n primary_index_update: \"updating row (primary)\",\n primary_index_update_add_new_payer: \"storing payer (primary)\",\n primary_index_update_remove_old_payer: \"removing payer (primary)\",\n remove_table: \"removing a table\",\n secondary_index_add: \"storing row (secondary)\",\n secondary_index_remove: \"removing row (secondary)\",\n secondary_index_update_add_new_payer: \"storing payer (secondary)\",\n secondary_index_update_remove_old_payer: \"removing payer (secondary)\",\n setabi: \"updating ABI for account\",\n setcode: \"updating contract for account\",\n unlinkauth: \"unlinking authority\",\n updateauth_create: \"creating new permission\",\n updateauth_update: \"updating permission\"\n },\n title: \"Ram Usage Summary\",\n consumed: \"<0>{{accountName}} consumed <1>{{bytes}} (now has <2>{{totalBytes}})\",\n released: \"<0>{{accountName}} released <1>{{bytes}} (now has <2>{{totalBytes}})\",\n consumedDetail: \"<0>{{accountName}} consumed <1>{{bytes}} — <2>{{operation}}\",\n releasedDetail: \"<0>{{accountName}} released <1>{{bytes}} — <2>{{operation}}\"\n },\n deferred: {\n delayedFor: \"Delayed for\",\n create:\n \"<0>Created deferred transaction <1>{{transactionId}} delayed for <2>{{delay}}\",\n\n triggeredBy: {\n label: \"Triggered By\",\n content: \"Failure of <0>{{transactionId}} in block <1>{{blockNum}}\"\n },\n creationMethod: {\n label: \"Creation Method\",\n PUSH_CREATE: \"Pushed directly to the chain\",\n CREATE: \"Created by a smart contract \",\n MODIFY_CREATE: \"Modified by a smart contract\"\n },\n cancel: \"<0>Canceled deferred transaction <1>{{transactionId}}\",\n createdBy: {\n label: \"Created By\",\n content: \"<0>{{transactionId}} in block <1>{{blockNum}}\"\n },\n canceledBy: {\n label: \"Canceled By\",\n content: \"<0>{{transactionId}} in block <1>{{blockNum}}\"\n }\n },\n status: {\n hard_fail: \"Failed (hard)\",\n soft_fail: \"Failed (soft)\",\n delayed: \"Deferred\",\n canceled: \"Canceled\",\n executed: \"Executed\",\n expired: \"Expired\",\n pending: \"Pending\"\n },\n pill: {\n console: \"Console\",\n dbOps: \"DB Operations\",\n ramOps: \"RAM Operations\",\n tableOps: \"Table Operations\",\n general: \"General\",\n jsonData: \"JSON Data\",\n hexData: \"HEX Data\",\n cpu_usage: \"CPU Usage\",\n total_cpu_usage: \"Total CPU Usage\",\n receiver: \"Receiver\",\n memo: \"Memo:\",\n account: \"Contract account\",\n action_name: \"Action name\",\n authorization: \"Authorization\"\n },\n loading: \"Loading transaction\",\n traces: {\n title: \"Actions\",\n empty: \"No actions\",\n raw: \"Raw\",\n memo: \"Memo\",\n pill: {\n names: {\n buyram: \"Buy Ram\"\n }\n }\n },\n notSeenYet: {\n notFound: \"Transaction not found\",\n watchingForNetwork: \"Watching network for incoming transaction\"\n },\n banner: {\n transaction_count: \"Transaction Count\",\n block_produced: \"Block Produced\",\n total_value: \"Total Value\",\n title: \"Transaction\"\n },\n blockPanel: {\n title: \"Block\",\n block: \"Block #\",\n blockId: \"Block Id\",\n age: \"Timestamp\",\n status: \"Status\",\n producer: \"Producer\",\n\n statuses: {\n notSeenYet: \"Not yet seen\",\n waiting: \"Waiting\",\n confidence: \"Confidence\",\n irreversible: \"Executed\"\n }\n },\n detailPanel: {\n producer: {\n unknown: \"Unknown\"\n },\n fullTrace: \"Full Trace\",\n title: \"Transaction\",\n hash: \"Hash\",\n status: \"Status\",\n expirationDate: \"Expiration Date\",\n cpuUsage: \"CPU Usage\",\n networkUsage: \"Network Usage\",\n authorizations: \"Authorizations\",\n signedBy: \"Signed By\",\n noUsage: \"None\",\n statuses: {\n executed: \"Executed,\",\n expired: \"Expired\",\n accepted: \"awaiting irreversibility\",\n irreversible: \"irreversible\",\n blockDeep: \" blocks deep\"\n }\n },\n progressCircle: {\n confidence: \"Confidence\"\n },\n list: {\n extendSearch: \"Extend your Search\",\n advancedOptions: \"Advanced Options\",\n noResultsExtend:\n \"There are no results that match your search in the last {{lastBlocks}} blocks\",\n noMoreResultsExtend: \"There is no more results in the last {{lastBlocks}} blocks\",\n empty: \"No transactions\",\n loading: \"Loading transactions...\",\n title: \"Transactions\",\n header: {\n timestamp: \"Timestamp\",\n id: \"Transaction ID\",\n blockId: \"Block #\",\n timeCreated: \"Date - Time\",\n expiration: \"Expiration\",\n blockTime: \"Timestamp\",\n account: \"Account\",\n contract: \"Contract\",\n action: \"Action\",\n value: \"Value\",\n summary: \"Transaction / Block\",\n moreActions: \"More Actions\"\n }\n }\n }\n}\n","export default {\n vote: {\n title: \"Vote Tally\",\n list: {\n empty: \"Loading vote\",\n header: {\n rank: \"Rank\",\n account: \"Account\",\n votePercent: \"Vote %\",\n decayedVote: \"Decayed vote\",\n website: \"Website\"\n },\n legend: {\n runnerUp: \"Runner-up\",\n runnerUps: \"Runner-ups\",\n standBy: \"Stand-by\",\n active: \"Active\"\n }\n }\n }\n}\n","export default {\n footer: {\n telegram: \"Community & team support on Telegram\",\n aboutDfuse: \"dfuse is an open source blockchain data platform\",\n copyright: \"© 2018-{{year}} dfuse Platform Inc. All Rights Reserved.\",\n privacyPolicy: \"Privacy Policy\",\n privacyPolicyLink: \"https://dfuse.io/en/privacy-policy\",\n termsOfServices: \"Terms of Service\",\n termsOfServicesLink: \"https://dfuse.io/en/terms\"\n }\n}\n","export default {\n forum: {\n post: {\n title: \"Forum\"\n },\n proposition: {\n title: \"Proposition\",\n list: {\n empty: \"Loading\",\n header: {\n proposition: \"Proposition\",\n voteCount: \"Vote count\"\n }\n }\n }\n }\n}\n","export default {\n filters: {\n title: \"FILTER\",\n queryParams: \"Query Parameters\",\n apply: \"APPLY\",\n sections: {\n titles: {\n blockRange: \"BLOCK RANGE\",\n blockStatus: \"BLOCK STATUS\"\n },\n labels: {\n from: \"From\",\n to: \"To\",\n all: \"ALL\",\n lastBlocks: \"Number of blocks\",\n irreversible: \"Irreversible Blocks Only\"\n }\n },\n currentFilter: {\n last_blocks: \"Searching the last {{lastBlocks}} blocks\",\n last_blocks_irreversible:\n \"Searching the last {{lastBlocks}} blocks, irreversible blocks only\",\n last_blocks_ascending_irreversible:\n \"Searching the last {{lastBlocks}} blocks, irreversible blocks only, ascending order\",\n last_blocks_ascending: \"Searching the last {{lastBlocks}} blocks, ascending order\",\n\n all: \"Filter Search Results\",\n all_irreversible: \"Searching all history, irreversible blocks only\",\n block_range: \"Searching from block {{min}} to {{max}}\",\n block_range_irreversible: \"Searching from block {{min}} to {{max}}, irreversible blocks only\",\n\n all_ascending: \"Searching all history, ascending order\",\n all_ascending_irreversible:\n \"Searching all history, irreversible blocks only, ascending order\",\n block_range_ascending: \"Searching from block {{min}} to {{max}}, ascending order\",\n block_range_ascending_irreversible:\n \"Searching from block {{min}} to {{max}}, irreversible blocks only, ascending order\"\n },\n rangeOptions: {\n lastBlocks: \"RECENT BLOCKS\",\n all: \"ALL\",\n custom: \"CUSTOM\"\n }\n }\n}\n","import account from \"./account.i18n\"\nimport banner from \"./banner.i18n\"\nimport block from \"./block.i18n\"\nimport accountTables from \"./accountTables.i18n\"\nimport core from \"./core.i18n\"\nimport dapp from \"./dapp.i18n\"\nimport dashboard from \"./dashboard.i18n\"\nimport errors from \"./errors.i18n\"\nimport footer from \"./footer.i18n\"\nimport forum from \"./forum.i18n\"\nimport navbar from \"./navbar.i18n\"\nimport producer from \"./producer.i18n\"\nimport search from \"./search.i18n\"\nimport transaction from \"./transaction.i18n\"\nimport vote from \"./vote.i18n\"\nimport filters from \"./filters.i18n\"\n\nexport const zh = {\n ...account,\n ...banner,\n ...accountTables,\n ...core,\n ...block,\n ...dapp,\n ...dashboard,\n ...errors,\n ...search,\n ...navbar,\n ...producer,\n ...transaction,\n ...vote,\n ...footer,\n ...forum,\n ...filters\n}\n","export default {\n account: {\n transactions: {\n title: \"近期交易\",\n subTitle: \"(截止到当前区块)\"\n },\n tokens: {\n title: \"其它代币\",\n table: {\n token: \"代币\",\n quantity: \"余额\",\n contract: \"账户\"\n }\n },\n social_links: {\n verified_by: \"由 EOS Canada 验证\"\n },\n status: {\n used: \"已用\"\n },\n summary: {\n block_producer: \"BP节点\",\n creation_date: \"创建日期\",\n created_by: \"创建者\",\n creation_trx_id: \"创建交易\",\n owner: \"所有者:\",\n website: \"网站\",\n email: \"电子邮箱\",\n location: \"地点\",\n staked_by: \"抵押者\",\n self: \"账户本身\",\n tooltip: {\n other: \"其他\",\n networkTitle: \"网络带宽总计\",\n cpuTitle: \"CPU带宽总计\"\n },\n voter_info: {\n noVotes: \"此帐户目前没有对任何BP节点投票。\",\n title: \"BP节点投票\",\n labels: {\n latest_vote: \"最近投票:\",\n strength: \"衰退后强度:\",\n vote_for: \"目前投票:\",\n nextDecay: \"下次衰退:下周六 00:00 UTC\",\n vote_weight: \"投票权重\",\n decayed_vote_weight: \"投票衰退强度\",\n vote_for_producers: \"为BP节点投的票:\",\n vote_for_proxy: \"通过代理为BP节点投的票:\"\n }\n }\n },\n permissions: {\n title: \"权限\",\n labels: {\n weight: \"权重:\",\n account: \"账户:\",\n wait: \"等待:\",\n seconds: \"秒\",\n key: \"密钥:\",\n name: \"权限名称:\",\n parent_permission: \"母权限\",\n threshold: \"授权,阈值:\"\n }\n },\n badges: {\n gn: \"Gn\",\n px: \"Px\",\n pv: \"Pv\",\n co: \"Co\",\n bp: \"Bp\",\n my: {\n name: \"My\",\n title: \"账户通过 MYKEY 创建\"\n }\n },\n pie_chart: {\n legendTitle: \"总余额\",\n labels: {\n staked_cpu: \"CPU抵押数量\",\n staked_network: \"网络带宽抵押数量\",\n delegated_cpu: \"CPU委托数量\",\n delegated_network: \"网络带宽委托数量\",\n pending_refund: \"待退款\",\n available_funds: \"可用资金\",\n rex: \"REX\",\n rex_funds: \"REX FUNDS\"\n }\n },\n banner: {\n labels: {\n transactions: \"交易\",\n votes_staked: \"投票抵押\",\n transactions_value: \"交易价值\"\n }\n },\n status_bar: {\n units: {\n kb: \"Kb\",\n mb: \"Mb\",\n seconds: \"s\"\n },\n titles: {\n available: \"目前可用\",\n memory: \"RAM\",\n cpu_bandwidth: \"CPU\",\n network_bandwidth: \"网络带宽\"\n }\n },\n tabs: {\n vote_title: \"投票\",\n transactions: \"交易\",\n tables: \"表格\"\n },\n loading: \"读取账户中\",\n tables: {\n formatted: \"表格化\"\n }\n }\n}\n","export default {\n banner: {\n eos_usd: \"EOS (美元)\",\n head_block: \"当前区块数量\",\n head_block_producer: \"当前出块节点\",\n head_block_producer_tooltip: \"上一个出块节点\",\n irreversible_block_tooltip: \"上一个不可逆区块\",\n irreversible_block: \"不可逆区块\",\n transactions: \"交易\",\n votes: \"投票 (单位:EOS)\",\n votes_tooltip: \"用于投票的总抵押EOS\",\n tooltip: {\n last_24h_change: \"前24小时内的更改(来源:binance.com)\"\n }\n }\n}\n","export default {\n accountTables: {\n search: {\n scope: \"规模\",\n load: \"读取\"\n },\n tables: {\n dropdown: {\n placeholder: \"选择一个表格\"\n }\n }\n }\n}\n","export default {\n core: {\n list: {\n next: \"下一步\",\n previous: \"上一步\"\n },\n notFoundErrorMessage: \"找不到此实体。\",\n serverErrorMessage: \"服务器上出错。\",\n tagline: \"高精度区块浏览器\",\n tagline2: \"\",\n\n networkOptions: {\n eos_mainnet: \"EOS主网\",\n eos_kylin: \"麒麟测试网\",\n eos_eosio: \"EOSIO 测试网\"\n },\n maintenance: {\n start: \"我们目前正在将我们的后端迁移到\",\n link: \"https://dfuse.io\",\n end:\n \"来提供最快,最可靠的区块浏览器。 我们希望在接下来的48小时内完成。 对于沿途的任何颠簸,我们深表歉意!\"\n },\n newVersionAvailable: \"eosq 发布了新版本\",\n refresh: \"刷新\",\n by: \"来自\",\n menu: {\n mainTitle: \"菜单\",\n titles: {\n network: \"网络\",\n navigation: \"查询\",\n language: \"语言\"\n }\n }\n }\n}\n","export default {\n block: {\n producerSchedule: {\n title: \"BP节点交替时间表\"\n },\n dpos_lib_num: \"当时最新不可逆区块号\",\n scheduleVersion: \"时间表版本\",\n transactionCount: \"交易量\",\n irreversible: \"不可逆\",\n stale: \"过时\",\n reversible: \"可逆\",\n title: \"区块\",\n newBlock: \"{{count}} 个新区块\",\n newBlock_plural: \"{{count}} 个新区块\",\n list: {\n title: \"区块\",\n empty: \"无区块\",\n loading: \"读取区块中……\",\n header: {\n timestamp: \"时间戳\",\n block_num: \"区块号\",\n id: \"区块ID\",\n age: \"寿命\",\n producer: \"出块节点\",\n transactionCount: \"交易量\",\n productionTimeElapsed: \"出块时间\"\n }\n }\n }\n}\n","export default {\n dapp: {\n list: {\n header: {\n rank: \"第\",\n name: \"名称\",\n voteReceived: \"获得投票\",\n blockProducedCount: \"产出区块数量\",\n transactionProcessedCount: \"产出交易数量\"\n }\n }\n }\n}\n","export default {\n dashboard: {\n blocks: \"区块\",\n sevenDays: \"7天\",\n topTenBlockProducers: \"前十名BP节点\",\n topTenDappsProducers: \"前十名 Dapps 制作者\",\n transactions: \"交易\",\n transactionVolume: \"交易数量\"\n }\n}\n","export default {\n errors: {\n serverDown: \"远程服务器已关闭\",\n unknownError: \"远程服务器上发生错误\"\n }\n}\n","export default {\n search: {\n placeholder: \"搜索账户、区块、交易、时间戳…\",\n result: {\n noResultFoundFor: \"找不到结果\",\n blockFound: \"区块已找到但是没有被处理,请稍后再查询!\",\n error: \"搜索时服务器上发生错误\",\n nothingFound: \"什么都没找到\",\n searchQuery: \"搜索查询\",\n unregisteredLabel: \"未注册的帐户\",\n unregisteredValue: \"你可以以后再申请\",\n errors: {\n label: \"Error:\",\n request_validation_error: \"your query was malformed\",\n generic_error: \"The search failed\"\n }\n },\n suggestions: {\n summary: {\n account_history: \"{{accountName}}的账户历史\",\n signed_by: \"{{accountName}}所签名的交易\",\n eos_token_transfer: \"{{accountName}}的EOS转账\",\n fuzzy_token_search: \"{{accountName}}泛代币查询\"\n }\n },\n syntax: \"句法:\",\n irreversibleOnly: \"仅包含不可逆区块\",\n searchResultsFor: \"搜索结果\",\n sqeDocumentation: \"SQE 语言文档\",\n loading: \"读取中……\",\n errorFetch: \"无相关搜索建议\"\n },\n transactionSearch: {\n buttons: {\n signedBy: \"SIGNED BY {{accountName}}\",\n notifications: \"NOTIFICATIONS\"\n },\n search: \"SEARCH\",\n title: \"搜索交易\",\n results: {\n title: \"结果:\",\n subTitle: \"仅包括不可逆状态的区块\"\n },\n buttonLabels: {\n account: \"账户\",\n tokens: \"代币\",\n system: \"系统操作\"\n },\n dropdowns: {\n tokens: {\n allTokens: \"所有代币\",\n eos: \"EOS\",\n popularTokens: \"人气代币\"\n },\n system: {\n claimRewards: \"认领奖励\",\n delegateBandwidth: \"委派带宽\",\n undelegateBandwidth: \"取消带宽委派\",\n regProducer: \"REG PRODUCER\",\n setCode: \"SET CODE\"\n }\n }\n }\n}\n","export default {\n navbar: {\n blocks: \"区块\",\n transactions: \"交易\",\n producers: \"BP节点\",\n holders: \"持币人\",\n dapps: \"DApps\"\n }\n}\n","export default {\n producer: {\n title: \"BP节点\",\n list: {\n empty: \"无BP节点\",\n header: {\n rank: \"排名\",\n name: \"名称\",\n voteReceived: \"投票节点\",\n blockProducedCount: \"产出区块数量\",\n transactionProcessedCount: \"产出交易数量\"\n }\n }\n }\n}\n","export default {\n transaction: {\n displayedTree: {\n creationTree: \"按创建顺序\",\n executionTree: \"按执行顺序\"\n },\n showMoreActions: {\n title: \"+ {{extraActions}} 操作\",\n longTitle: \"+ {{extraActions}} 操作 / + {{extraDeferred}} 延迟操作\"\n },\n tableops: {\n operations: {\n INS: \"创建 TABLE\",\n REM: \"移除 TABLE\"\n },\n label: \"<0>{{operation}} | table:<1>{{table}} | scope:<2>{{scope}}\"\n },\n dbops: {\n operations: {\n INS: \"创建 ROW\",\n UPD: \"更新 ROW\",\n REM: \"移除 ROW\"\n },\n label:\n \"<0>{{operation}} | table:<1>{{table}} | scope:<2>{{scope}} | primary key: <3>{{primaryKey}}:\"\n },\n ramUsage: {\n operations: {\n create_table: \"创建 table\",\n deferred_trx_add: \"储存延迟交易\",\n deferred_trx_cancel: \"取消延迟交易\",\n deferred_trx_pushed: \"创建延迟交易\",\n deferred_trx_removed: \"执行延迟交易\",\n deleteauth: \"删除授权\",\n linkauth: \"连接授权\",\n newaccount: \"创建新账户\",\n primary_index_add: \"存储 row (primary)\",\n primary_index_remove: \"移除 row (primary)\",\n primary_index_update: \"更新 row (primary)\",\n primary_index_update_add_new_payer: \"存储 payer (primary)\",\n primary_index_update_remove_old_payer: \"移除 payer (primary)\",\n remove_table: \"移除一个 table\",\n secondary_index_add: \"存储 row (secondary)\",\n secondary_index_remove: \"移除 row (secondary)\",\n secondary_index_update_add_new_payer: \"存储 payer (secondary)\",\n secondary_index_update_remove_old_payer: \"移除 payer (secondary)\",\n setabi: \"为账户更新ABI\",\n setcode: \"为账户更新合约\",\n unlinkauth: \"取消连接授权\",\n updateauth_create: \"创建新权限\",\n updateauth_update: \"更新权限\"\n },\n title: \"Ram用量\",\n consumed: \"<0>{{accountName}} 消耗了 <1>{{bytes}} (现有 <2>{{totalBytes}})\",\n released: \"<0>{{accountName}} 释放了 <1>{{bytes}} (现有 <2>{{totalBytes}})\",\n consumedDetail: \"<0>{{accountName}} 消耗了<1>{{bytes}} — <2>{{operation}}\",\n releasedDetail: \"<0>{{accountName}} 释放了<1>{{bytes}} — <2>{{operation}}\"\n },\n deferred: {\n delayedFor: \"延迟\",\n create: \"<0>已创建 延迟交易 <1>{{transactionId}} 延迟 <2>{{delay}}\",\n cancel: \"<0>已取消 延迟交易 <1>{{transactionId}}\",\n\n triggeredBy: {\n label: \"触发者\",\n content: \"<0>{{transactionId}} 区块号:<1>{{blockNum}}\"\n },\n creationMethod: {\n label: \"创建方式\",\n PUSH_CREATE: \"直接推送到链上,附有延迟\",\n CREATE: \"由智能合约创建\",\n MODIFY_CREATE: \"由智能合约更改\"\n },\n\n createdBy: {\n label: \"创建者为\",\n content: \"区块 <1>{{blockNum}} 中的 <0>{{transactionId}}\"\n },\n canceledBy: {\n label: \"取消者为\",\n content: \"区块 <1>{{blockNum}} 中的 <0>{{transactionId}}\"\n }\n },\n status: {\n hard_fail: \"失败 (hard fail)\",\n soft_fail: \"失败 (soft fail)\",\n delayed: \"已延迟\",\n canceled: \"已取消\",\n executed: \"已执行\",\n expired: \"已过期\",\n pending: \"等待\"\n },\n pill: {\n dbOps: \"DB/数据库行为\",\n ramOps: \"RAM操作\",\n general: \"常规数据\",\n jsonData: \"JSON 格式数据\",\n hexData: \"HEX 格式数据\",\n cpu_usage: \"CPU用量\",\n total_cpu_usage: \"CPU用量总计\",\n receiver: \"接收者\",\n memo: \"备注:\",\n account: \"合约账户\",\n action_name: \"操作名称\",\n authorization: \"授权权限\"\n },\n loading: \"交易读取中\",\n traces: {\n title: \"操作\",\n empty: \"无行为\",\n raw: \"原始\",\n memo: \"备注\",\n pill: {\n names: {\n buyram: \"购买Ram\"\n }\n }\n },\n notSeenYet: {\n notFound: \"交易未找到\",\n watchingForNetwork: \"监视进入到网络中的交易\"\n },\n banner: {\n transaction_count: \"交易计数\",\n block_produced: \"产出区块\",\n total_value: \"总值\",\n title: \"交易\"\n },\n blockPanel: {\n title: \"区块\",\n block: \"区块号\",\n blockId: \"区块ID\",\n age: \"寿命\",\n status: \"状态\",\n producer: \"出块节点\",\n\n statuses: {\n notSeenYet: \"还未看到\",\n waiting: \"等待\",\n confidence: \"置信度\",\n irreversible: \"已执行\"\n }\n },\n detailPanel: {\n producer: {\n unknown: \"未知\"\n },\n fullTrace: \"完整痕迹\",\n title: \"交易\",\n hash: \"哈希\",\n status: \"状态\",\n expirationDate: \"失效日期\",\n cpuUsage: \"CPU用量\",\n networkUsage: \"网络用量\",\n authorizations: \"授权权限\",\n signedBy: \"签属者\",\n noUsage: \"无\",\n statuses: {\n executed: \"已执行,\",\n expired: \"已过期\",\n accepted: \"等待不可逆\",\n irreversible: \"不可逆\",\n blockDeep: \"区块深度\"\n }\n },\n progressCircle: {\n confidence: \"置信度\"\n },\n list: {\n extendSearch: \"继续搜索\",\n advancedOptions: \"高级选项\",\n noResultsExtend: \"前 {{lastBlocks}} 区块中不包含查询结果\",\n noMoreResultsExtend: \"前 {{lastBlocks}} 区块中没有更多的查询结果\",\n empty: \"无交易\",\n loading: \"交易读取中……\",\n title: \"交易\",\n header: {\n timestamp: \"时间戳\",\n id: \"交易ID\",\n blockId: \"区块ID\",\n timeCreated: \"日期 - 时间\",\n expiration: \"过期时间\",\n blockTime: \"时间戳\",\n account: \"账户\",\n contract: \"合约\",\n action: \"操作\",\n value: \"值\",\n summary: \"交易/ 区块\",\n moreActions: \"更多操作\"\n }\n }\n }\n}\n","export default {\n vote: {\n title: \"投票计量\",\n list: {\n empty: \"读取投票\",\n header: {\n rank: \"排名\",\n account: \"账户\",\n votePercent: \"投票百分比\",\n decayedVote: \"衰退的投票\",\n website: \"网站\"\n },\n legend: {\n runnerUps: \"第二位\",\n standBy: \"待命中\",\n active: \"活跃\"\n }\n }\n }\n}\n","export default {\n footer: {\n telegram: \"Telegram 社区&团队支持群\",\n aboutDfuse: \"dfuse 是一个开源区块链数据平台\",\n copyright: \"© 2018-{{year}} dfuse Platform Inc. 版权所有\",\n privacyPolicy: \"隐私政策\",\n privacyPolicyLink: \"https://dfuse.io/zh/%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96/\",\n termsOfServices: \"服务条款\",\n termsOfServicesLink: \"https://dfuse.io/en/terms\"\n }\n}\n","export default {\n forum: {\n post: {\n title: \"论坛\"\n },\n proposition: {\n title: \"提案\",\n list: {\n empty: \"读取中\",\n header: {\n proposition: \"提案\",\n voteCount: \"投票数量\"\n }\n }\n }\n }\n}\n","export default {\n filters: {\n title: \"筛选条件\",\n queryParams: \"查询参数\",\n apply: \"确定\",\n sections: {\n titles: {\n blockRange: \"区块区间\",\n blockStatus: \"区块状态\"\n },\n labels: {\n from: \"从\",\n to: \"到\",\n all: \"全部\",\n lastBlocks: \"查询包含的区块数量\",\n irreversible: \"仅查询不可逆\"\n }\n },\n currentFilter: {\n last_blocks: \"搜索之前的 {{lastBlocks}} 个区块\",\n last_blocks_irreversible: \"搜索之前的 {{lastBlocks}} 个区块,并仅限不可逆区块\",\n last_blocks_ascending_irreversible:\n \"搜索之前的 {{lastBlocks}} 个区块,并仅限不可逆区块,升序排列\",\n last_blocks_ascending: \"搜索之前的 {{lastBlocks}} 个区块,升序排列\",\n all: \"搜索全部历史\",\n all_irreversible: \"搜索全部历史,但仅包含不可逆区块\",\n block_range: \"搜索区块区间:{{min}} 至 {{max}}\",\n block_range_irreversible: \"搜索区块区间:{{min}} 至 {{max}},但仅包含不可逆区块\"\n },\n rangeOptions: {\n lastBlocks: \"最新区块\",\n all: \"全部\",\n custom: \"自定义\"\n }\n }\n}\n","import i18nLib from \"i18next\"\nimport LanguageDetector from \"i18next-browser-languagedetector\"\nimport { reactI18nextModule } from \"react-i18next\"\nimport { en } from \"./en\"\nimport { zh } from \"./zh\"\n\ni18nLib\n .use(LanguageDetector)\n .use(reactI18nextModule)\n .init({\n fallbackLng: \"en\",\n ns: [\"translations\"],\n defaultNS: \"translations\",\n lookupCookie: \"i18next\",\n resources: {\n en: {\n translations: en\n },\n zh: {\n translations: zh\n }\n },\n\n debug: true,\n\n interpolation: {\n // React already escape stuff correctly, so not needed\n escapeValue: false\n },\n\n react: {\n wait: true\n }\n } as any)\n\nexport const i18n = i18nLib\nexport const t = i18n.t.bind(i18n)\n","import { observable } from \"mobx\"\nimport { BlockRangeFilter, FilterCombinations, RangeOptions } from \"../models/search-filters\"\nimport { CursorCache } from \"../services/cursor-store\"\nimport { BLOCK_NUM_100B } from \"../models/block\"\nimport { TransactionLifecycle, ErrorData } from \"@dfuse/client\"\n\nexport class TransactionListStore {\n DEFAULT_PARAMS = {\n limit: 25,\n sort: \"desc\",\n withReversible: true,\n startBlock: 0,\n blockCount: BLOCK_NUM_100B\n }\n\n public cursorCache: CursorCache\n @observable hasNextPage: boolean\n @observable rangeOption: RangeOptions\n @observable query = \"\"\n @observable loadingTransactions: boolean\n @observable searchError?: ErrorData\n @observable results: TransactionLifecycle[]\n @observable previousBlockRangeFilter?: BlockRangeFilter\n @observable filterCombination: FilterCombinations\n @observable sort: \"asc\" | \"desc\" = \"desc\"\n @observable limit: number\n\n constructor() {\n this.cursorCache = new CursorCache()\n this.loadingTransactions = false\n this.results = []\n this.hasNextPage = false\n this.rangeOption = RangeOptions.LAST_BLOCKS\n this.filterCombination = FilterCombinations.LAST_BLOCKS\n this.limit = 25\n }\n\n updateCursorCache(cursor: string) {\n if (this.cursorCache.currentCursor === cursor) {\n this.cursorCache.resetAll()\n } else {\n this.cursorCache.prepareNextCursor(cursor)\n this.hasNextPage = this.cursorCache.hasNextPage\n }\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box } from \"@dfuse/explorer\"\n\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { getBuyRamLevel1Fields } from \"../pill-template.helpers\"\n\nexport class BuyRamPillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"payer\", \"receiver\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"all\"],\n validActions: [{ contract: \"eosio\", action: \"buyram\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n buyram: {\n summary: \"<0>{{payer}} spent <1>{{amountEOS}} on RAM for <2>{{receiver}}\"\n }\n },\n zh: {\n buyram: {\n summary: \"<0>{{payer}} 花费 <1>{{amountEOS}} 在RAM上 给 <2>{{receiver}}\"\n }\n }\n }\n }\n\n isReceiveTransfer() {\n return (\n this.props.pageContext &&\n this.props.pageContext.accountName === this.props.action.data.receiver\n )\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n return null\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box } from \"@dfuse/explorer\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { getBuyRamBytesLevel1Fields } from \"../pill-template.helpers\"\n\nexport class BuyRamBytesPillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"payer\", \"receiver\", \"bytes\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"all\"],\n validActions: [{ contract: \"eosio\", action: \"buyrambytes\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n buyrambytes: {\n summary: \"<0>{{payer}} bought <1>{{bytes}} of RAM for <2>{{receiver}}\"\n }\n },\n zh: {\n buyrambytes: {\n summary: \"<0>{{payer}} 买了 <1>{{bytes}} 的RAM 给 <2>{{receiver}}\"\n }\n }\n }\n }\n\n isReceiveTransfer() {\n return (\n this.props.pageContext &&\n this.props.pageContext.accountName === this.props.action.data.receiver\n )\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n return null\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box } from \"@dfuse/explorer\"\nimport { getRefundLevel1Fields } from \"../pill-template.helpers\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\n\nexport class RefundPillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"owner\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"all\"],\n validActions: [{ contract: \"eosio\", action: \"refund\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n refund: {\n summary: \"<0>{{refundAmount}} refunded to <1>{{owner}}\"\n }\n },\n zh: {\n refund: {\n summary: \"<0>{{refundAmount}} 已退给 <1>{{owner}}\"\n }\n }\n }\n }\n\n renderContent = (): JSX.Element => {\n if (this.hasInlineTraces()) {\n return (\n \n \n \n )\n }\n\n return this.renderDefaultContent()\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box } from \"@dfuse/explorer\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { getDelegatebwLevel1Fields, getDelegatebwLevel2Fields } from \"../pill-template.helpers\"\n\nexport class DelegateBandwidthPillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"from\", \"receiver\", \"stake_cpu_quantity\", \"stake_net_quantity\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"all\"],\n validActions: [{ contract: \"eosio\", action: \"delegatebw\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n delegatebw: {\n summary:\n \"<0>{{from}} delegated <1>{{amountCPU}} for CPU and <2>{{amountNET}} for NET to <3>{{to}}\",\n detail: \"Delegated <0>{{amountCPU}} for CPU and <1>{{amountNET}} for Network\"\n }\n },\n zh: {\n delegatebw: {\n summary:\n \"<0>{{from}} 委托 <1>{{amountCPU}} 到CPU 和 <2>{{amountNET}} 到NET 给 <3>{{to}}\",\n detail: \"委托 <0>{{amountCPU}} 到CPU <1>{{amountNET}} 到网络带宽\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n const { data } = this.props.action.data\n\n if (data) {\n return (\n \n \n \n )\n }\n\n return null\n }\n}\n","import * as React from \"react\"\nimport { Box, NBSP } from \"@dfuse/explorer\"\nimport { ArrowTo, MonospaceTextLink } from \"../text-elements/misc\"\n\nimport { faArrowRight } from \"@fortawesome/free-solid-svg-icons\"\nimport { Links } from \"../../routes\"\nimport { EllipsisText, Text } from \"../text/text.component\"\nimport { debugLog } from '../../services/logger'\n\nexport interface TransferProps {\n from: string\n to: string\n amount?: string\n amounts?: { type: string; value: string }[]\n context?: string\n memo?: string\n}\n\nexport const TransferBox: React.SFC = ({\n context,\n from,\n to,\n amount,\n amounts,\n memo\n}): JSX.Element => {\n function renderAmount(amountName: { type: string; value: string }, index: number) {\n return (\n \n \n {amountName.type}:\n \n {NBSP}\n \n {amountName.value}\n \n \n )\n }\n\n function renderSimpleAmount(amountName: string) {\n return (\n \n \n {amountName}\n \n \n )\n }\n\n function renderAmounts(\n amountName?: string,\n amountNames?: { type: string; value: string }[]\n ): JSX.Element[] {\n if (amountName) {\n return [renderSimpleAmount(amountName)]\n }\n\n if (amountNames) {\n return amountNames.map((entry: { type: string; value: string }, index: number) =>\n renderAmount(entry, index)\n ) as JSX.Element[]\n }\n\n return []\n }\n\n if (!from || !to) {\n debugLog(\"Transfer pill cannot be display, empty content, from %s -> to %s\", from, to)\n return

\n }\n\n return (\n \n \n {from}\n \n \n \n {to}\n \n {renderAmounts(amount, amounts)}\n \n \n {memo}\n \n \n \n )\n}\n","import * as React from \"react\"\nimport { TransferBox } from \"../../../../atoms/pills/pill-transfer-box\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\n\nexport class IssuePillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"to\", \"quantity\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"all\"],\n validActions: [{ action: \"issue\" }]\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return \n }\n}\n","import { PillHeaderParams } from \"../models/pill-templates\"\nimport { Action } from \"@dfuse/client\"\n\nexport interface LabelValue {\n label: string\n value: string\n}\n\nexport function getMemoText(action: Action): string {\n return action.data.memo ? action.data.memo : null\n}\n\nconst PILL_HEADER_PARAMS_MAP: { [key: string]: PillHeaderParams } = {\n eosio: { color: \"#002343\", text: \"Sy\", hoverTitle: \"eosio\" },\n \"eosio.forum\": { color: \"#5449ba\", text: \"Fo\", hoverTitle: \"eosio.forum\" },\n \"eosio.token\": { color: \"#5449ba\", text: \"Tk\", hoverTitle: \"eosio.token\" }\n}\n\nexport function getHeaderParams(account: string, receiver: string): PillHeaderParams {\n const headerInfo = PILL_HEADER_PARAMS_MAP[account]\n const genericInfo = {\n color: \"traceAccountGenericBackground\",\n text: receiver,\n hoverTitle: receiver\n }\n\n return headerInfo || genericInfo\n}\n\nexport function getHeaderAndTitle(\n action: Action,\n receiver: string\n): { header: PillHeaderParams; title: string } {\n const header = { ...getHeaderParams(action.account, receiver) }\n let title = action.name\n if (action.account !== receiver) {\n title = \"\"\n header.text = `notification:${receiver}`\n }\n\n return { header, title }\n}\n","import * as React from \"react\"\nimport { Pill, CellValue, Box, PillClickable, MonospaceText } from \"@dfuse/explorer\"\nimport { theme } from \"../../../theme\"\nimport { TransferBox } from \"../../../atoms/pills/pill-transfer-box\"\nimport { getMemoText } from \"../../../helpers/action.helpers\"\nimport { GenericPillComponent, PillRenderingContext } from \"./generic-pill.component\"\nimport { getNewAccountFromNameServiceFields, getNewAccountInTraces } from \"./pill-template.helpers\"\nimport { Grid } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport { Text } from \"../../../atoms/text/text.component\"\nimport { FormattedText } from \"../../formatted-text/formatted-text\"\n\nexport class TransferPillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"from\", \"to\", \"quantity\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"all\"],\n validActions: [{ action: \"transfer\" }]\n }\n }\n static i18n = () => {\n return {\n en: {\n pillTemplates: {\n newAccountFromNameService:\n \"The account <0>{{account}} was created using <1>{{link}}\"\n }\n },\n zh: {\n pillTemplates: {\n newAccountFromNameService: \"账户 <0>{{account}} 通过 <1>{{link}} 创建\"\n }\n }\n }\n }\n\n isReceiveTransfer() {\n return (\n this.props.pageContext && this.props.pageContext.accountName === this.props.action.data.to\n )\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n )\n }\n\n renderLevel2Template = () => {\n const { action } = this.props\n\n let newAccount\n if (action.data.to === \"ens.xyz\" && this.hasInlineTraces()) {\n newAccount = getNewAccountInTraces(this.props.traceInfo)\n }\n\n const memoText = getMemoText(this.props.action)\n return (\n \n {memoText ? this.renderDetailLine(\"Memo: \", memoText) : null}\n {newAccount ? (\n \n ) : null}\n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[] | string) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderPill2 = () => {\n const colorVariant = this.isReceiveTransfer()\n ? \"traceActionReceiveBackground\"\n : \"traceActionSendBackground\"\n\n if (!this.props.headerAndTitleOptions.title) {\n return (\n \n  \n \n )\n }\n\n const WrapperComponent = this.props.disabled ? Box : PillClickable\n\n return (\n \n \n {this.props.headerAndTitleOptions.title}\n \n \n )\n }\n\n render() {\n return (\n {\n return this.renderExpandedContent()\n }}\n renderInfo={this.renderLevel2Template}\n content={this.renderContent()}\n />\n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { MonospaceTextLink } from \"../../../../atoms/text-elements/misc\"\nimport { Links } from \"../../../../routes\"\nimport { Box } from \"@dfuse/explorer\"\nimport { Cell } from \"../../../../atoms/ui-grid/ui-grid.component\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\n\nexport class VotePillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"producers\", \"voter\", \"proxy\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"all\"],\n validActions: [\n { contract: \"eosio\", action: \"voteproxy\" },\n { contract: \"eosio\", action: \"voteproducer\" }\n ]\n }\n }\n\n static i18n() {\n return {\n en: {\n voteForBp: {\n summary: \"<0>{{account}} voted for block producers\"\n },\n voteByProxy: {\n summary: \"<0>{{account}} proxied their vote to <1>{{proxy}}\"\n }\n },\n zh: {\n voteForBp: {\n summary: \"<0>{{account}} 已为BP节点投票\"\n },\n voteByProxy: {\n summary: \"<0>{{account}} 将其投票代理于 <1>{{proxy}}\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n if (action.data.proxy && action.data.proxy.length > 0) {\n const fields = [\n { name: \"account\", type: \"accountLink\", value: action.data.voter },\n { name: \"proxy\", type: \"accountLink\", value: action.data.proxy }\n ]\n\n return (\n \n \n \n )\n }\n\n const fields = [{ name: \"account\", type: \"accountLink\", value: action.data.voter }]\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n const { data } = this.props.action\n\n if (data) {\n return (\n \n {((data.producers as any[]) || []).map((accountName: string) => {\n return (\n \n \n {accountName}\n \n \n )\n })}\n \n )\n }\n\n return null\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box } from \"@dfuse/explorer\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { getUndelegatebwLevel1Fields, getUndelegatebwLevel2Fields } from \"../pill-template.helpers\"\n\nexport class UnDelegateBandwidthPillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"unstake_cpu_quantity\", \"unstake_net_quantity\", \"from\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"all\"],\n validActions: [{ contract: \"eosio\", action: \"undelegatebw\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n undelegatebw: {\n summary:\n \"<0>{{from}} undelegated <1>{{amountCPU}} from CPU and <2>{{amountNET}} from NET\",\n detail: \"<0>{{total}} currently unstaking\"\n }\n },\n zh: {\n undelegatebw: {\n summary:\n \"<0>{{from}} 取消委托 <1>{{amountCPU}} 的CPU 和 <2>{{amountNET}} 的NET\",\n detail: \"<0>{{total}} 目前正在被抵押\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n const { action } = this.props\n if (action.data) {\n return (\n \n \n \n )\n }\n\n return null\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps } from \"@dfuse/explorer\"\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { getNewAccountLevel1Fields, getNewAccountLevel2Fields } from \"../pill-template.helpers\"\n\nimport { ACCOUNT_CREATORS } from \"../all-logos\"\nimport { Config } from \"../../../../models/config\"\n\nexport class NewAccountPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n const availableCreators = ACCOUNT_CREATORS[Config.network_id] || []\n\n const creatorData = availableCreators.find((creator: any) => {\n return creator.contract === this.props.action.data.creator\n })\n\n if (creatorData) {\n return {\n path: creatorData.path,\n website: creatorData.website,\n }\n }\n\n return undefined\n }\n\n static requireFields: string[] = [\"creator\", \"name\", \"owner\", \"active\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"all\"],\n validActions: [{ contract: \"eosio\", action: \"newaccount\" }],\n }\n }\n\n static i18n() {\n return {\n en: {\n newaccount: {\n summary: \"<0>{{creator}} created <1>{{name}}\",\n detailAccount:\n \"<1>{{account}}@<2>{{accountPermission}} created for @<0>{{permission}}\",\n detailKey: \"<1>{{key}} created for @<0>{{permission}}\",\n detailWait: \"<1>{{wait}} created for @<0>{{permission}}\",\n },\n },\n zh: {\n newaccount: {\n summary: \"<0>{{creator}} 创建了 <1>{{name}}\",\n detailAccount:\n \"<1>{{account}}@<2>{{accountPermission}} 已创建在 @<0>{{permission}} 上\",\n detailKey: \"<1>{{key}} 已创建在 @<0>{{permission}} 上\",\n detailWait: \"<1>{{wait}} 已创建在 @<0>{{permission}} 上\",\n },\n },\n }\n }\n\n renderContent = () => {\n return (\n \n \n \n )\n }\n\n renderTemplateItemAccount = (permission: any, parent: string) => {\n return (\n \n )\n }\n\n renderTemplateItemKey = (permission: any, parent: string) => {\n return (\n \n )\n }\n\n renderTemplateItemWait = (permission: any, parent: string) => {\n return (\n \n )\n }\n\n renderLevel2Template = () => {\n const { data } = this.props.action\n\n if (data) {\n return (\n \n {this.renderLevel2TemplateContent(data, \"owner\", \"accounts\")}\n {this.renderLevel2TemplateContent(data, \"owner\", \"keys\")}\n {this.renderLevel2TemplateContent(data, \"owner\", \"waits\")}\n {this.renderLevel2TemplateContent(data, \"active\", \"accounts\")}\n {this.renderLevel2TemplateContent(data, \"active\", \"keys\")}\n {this.renderLevel2TemplateContent(data, \"active\", \"waits\")}\n \n )\n }\n\n return null\n }\n\n renderLevel2TemplateContent(data: any, parent: string, type: \"accounts\" | \"keys\" | \"waits\") {\n const templateMethods = {\n accounts: this.renderTemplateItemAccount,\n keys: this.renderTemplateItemKey,\n waits: this.renderTemplateItemWait,\n }\n\n return (data[parent][type] || []).map((permission: any, index: number) => {\n return (\n \n {templateMethods[type](permission, parent)}\n \n )\n })\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box } from \"@dfuse/explorer\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { getLinkAuthLevel1Fields, getLinkAuthLevel2Fields } from \"../pill-template.helpers\"\n\nexport class LinkAuthPillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"account\", \"requirement\", \"type\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"all\"],\n validActions: [{ contract: \"eosio\", action: \"linkauth\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n linkauth: {\n summary:\n \"<0>{{account}} linked <1>@{{requirement}} to <2>{{type}} in <3>{{code}}\",\n detail: \"<0>@{{requirement}} is now linked to <1>{{type}} in <2>{{code}}\"\n }\n },\n zh: {\n linkauth: {\n summary:\n \"<0>{{account}} 已连接 <1>@{{requirement}} 到 <2>{{type}} 于 <3>{{code}}\",\n detail: \"<0>@{{requirement}} 现已连接到 <1>{{type}} 于 <2>{{code}}\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n const { data } = this.props.action\n\n if (data) {\n return (\n \n \n \n )\n }\n\n return null\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box } from \"@dfuse/explorer\"\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { getUpdateAuthLevel1Fields, getUpdateAuthLevel2Fields } from \"../pill-template.helpers\"\n\nexport class UpdateAuthPillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"auth\", \"parent\", \"permission\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"all\"],\n validActions: [{ contract: \"eosio\", action: \"updateauth\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n updateauth: {\n summary: \"<0>{{account}} updated the permission for <1>@{{permission}}\",\n detailAccount:\n \"@<0>{{permission}} updated to <1>{{account}}@<2>{{accountPermission}} under @<3>{{parent}}<3>\",\n detailKey: \"@<0>{{permission}} updated to <1>{{key}} under @<2>{{parent}}\",\n detailWait:\n \"@<0>{{permission}} updated to <1>{{wait}} seconds under @<2>{{parent}}\",\n detailAccountNoParent:\n \"@<0>{{permission}} updated to <1>{{account}}@<2>{{accountPermission}}\",\n detailWaitNoParent: \"@<0>{{permission}} updated to <1>{{wait}}\",\n detailKeyNoParent: \"@<0>{{permission}} updated to <1>{{key}}\"\n }\n },\n zh: {\n updateauth: {\n summary: \"<0>{{account}} 为 <1>@{{permission}} 更新了权限\",\n detailAccount:\n \"@<0>{{permission}} 更新为 <1>{{account}}@<2>{{accountPermission}} ,嵌套在 @<3>{{parent}}<3> 之下\",\n detailKey:\n \"@<0>{{permission}} 更新为 <1>{{key}} ,嵌套在 @<2>{{parent}} 之下\",\n detailWait:\n \"@<0>{{permission}} 更新为 <1>{{wait}} 秒,嵌套在 @<2>{{parent}} 之下\",\n detailAccountNoParent:\n \"@<0>{{permission}} 更新为 <1>{{account}}@<2>{{accountPermission}}\",\n detailWaitNoParent: \"@<0>{{permission}} 更新为 <1>{{wait}}\",\n detailKeyNoParent: \"@<0>{{permission}} 更新为 <1>{{key}}\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderTemplateItemAccount = (accountPermission: any, data: any) => {\n const i18nKey =\n data.parent && data.parent.length > 0\n ? \"pillTemplates.updateauth.detailAccount\"\n : \"pillTemplates.updateauth.detailAccountNoParent\"\n\n return (\n \n )\n }\n\n renderTemplateItemKey = (keyPermission: any, data: any) => {\n const i18nKey =\n data.parent && data.parent.length > 0\n ? \"pillTemplates.updateauth.detailKey\"\n : \"pillTemplates.updateauth.detailKeyNoParent\"\n\n return (\n \n )\n }\n\n renderTemplateItemWait = (waitPermission: any, data: any) => {\n const i18nKey =\n data.parent && data.parent.length > 0\n ? \"pillTemplates.updateauth.detailWait\"\n : \"pillTemplates.updateauth.detailWaitNoParent\"\n\n return (\n \n )\n }\n\n renderLevel2Template = () => {\n const { data } = this.props.action\n\n if (data) {\n return (\n \n {(data.auth.accounts || []).map((accountPermission: any, index: number) => {\n return (\n \n {this.renderTemplateItemAccount(accountPermission, data)}\n \n )\n })}\n {(data.auth.keys || []).map((keyPermission: any, index: number) => {\n return (\n \n {this.renderTemplateItemKey(keyPermission, data)}\n \n )\n })}\n {(data.auth.waits || []).map((waitPermission: any, index: number) => {\n return (\n \n {this.renderTemplateItemWait(waitPermission, data)}\n \n )\n })}\n \n )\n }\n\n return null\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box } from \"@dfuse/explorer\"\nimport { getClaimRewardsLevel1Fields, getClaimRewardsLevel2Fields } from \"../pill-template.helpers\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\n\nexport class ClaimRewardsPillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"owner\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"all\"],\n validActions: [{ contract: \"eosio\", action: \"claimrewards\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n claimrewards: {\n summary: \"<0>{{account}} claimed <1>{{amountEOS}} rewards\",\n detail:\n \"<0>{{account}} claimed <1>{{amountbEOS}} for Block Rewards and <2>{{amountvEOS}} for Vote Rewards \"\n }\n },\n zh: {\n claimrewards: {\n summary: \"<0>{{account}} 认领了 <1>{{amountEOS}} 的奖励\",\n detail:\n \"<0>{{account}} 认领了 <1>{{amountbEOS}} 的区块奖励 和 <2>{{amountvEOS}} 的投票奖励\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n if (this.hasInlineTraces()) {\n return (\n \n \n \n )\n }\n\n return this.renderDefaultContent()\n }\n\n renderLevel2Template = () => {\n const { action } = this.props\n if (this.hasInlineTraces()) {\n return (\n \n \n \n )\n }\n\n return null\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, hex2binary, hex2sha256 } from \"@dfuse/explorer\"\nimport { EllipsisText, ExternalTextLink } from \"../../../../atoms/text/text.component\"\nimport { MonospaceTextLink } from \"../../../../atoms/text-elements/misc\"\nimport { Links } from \"../../../../routes\"\nimport { Cell } from \"../../../../atoms/ui-grid/ui-grid.component\"\nimport { getBlobUrlFromPayload } from \"../pill-template.helpers\"\n\nimport { t } from \"i18next\"\n\nexport class SetcodePillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"unstake_cpu_quantity\", \"unstake_net_quantity\", \"from\"]\n downloadUrl = \"\"\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"all\"],\n needsTranslate: true,\n validActions: [{ contract: \"eosio\", action: \"setcode\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n downloadCode: \"Download code\"\n },\n zh: {\n downloadCode: \"下载代码\"\n }\n }\n }\n\n renderContent = (): JSX.Element => {\n const { data } = this.props.action\n const sha = hex2sha256(data.code)\n\n return (\n \n \n SHA256[ {sha} ] set for account{\" \"}\n \n {data.account}\n \n \n \n )\n }\n\n renderLevel2Template = (): JSX.Element | null => {\n const { data } = this.props.action\n if (!data) {\n return \n }\n\n const [sha, downloadUrl] = getBlobUrlFromPayload(hex2binary(data.code), this.downloadUrl)\n this.downloadUrl = downloadUrl\n\n // Tie the addressable version of the blob to the download link.\n return (\n \n \n {t(\"pillTemplates.downloadCode\")}\n \n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box } from \"@dfuse/explorer\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\n\nexport class RegProxyPillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"isproxy\", \"proxy\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"all\"],\n validActions: [{ contract: \"eosio\", action: \"regproxy\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n regProxy: {\n summaryReg: \"<0>{{account}} registered as a proxy\",\n summaryUnreg: \"<0>{{account}} unregistered as a proxy\"\n }\n },\n zh: {\n regProxy: {\n summaryReg: \"<0>{{account}} 注册成为代理\",\n summaryUnreg: \"<0>{{account}} 撤销了代理\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n const i18nKey = action.data.isproxy\n ? \"pillTemplates.regProxy.summaryReg\"\n : \"pillTemplates.regProxy.summaryUnreg\"\n\n const fields = [{ name: \"account\", type: \"accountLink\", value: action.data.proxy }]\n return (\n \n \n \n )\n }\n}\n","import * as React from \"react\"\nimport { Box } from \"@dfuse/explorer\"\nimport { GenericPillComponent } from \"../generic-pill.component\"\nimport { Trans } from \"react-i18next\"\nimport { Text } from \"../../../../atoms/text/text.component\"\nimport { Cell } from \"../../../../atoms/ui-grid/ui-grid.component\"\nimport { getResolveBetAmounts, getResolveBetLevel1Fields } from \"../pill-template.helpers\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\n\nexport class ResolveBetPillComponent extends GenericPillComponent {\n static requireFields = [\"bet_id\", \"sig\"]\n\n static contextForRendering() {\n return {\n networks: [\"eos-mainnet\"],\n needsTranslate: true,\n validActions: [{ contract: \"eosbetdice11\", action: \"resolvebet\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n resolveBet: {\n summary: \"<0>{{account}} won <1>{{EOSAmount}} on bet {{betId}}\",\n detail: \"<0>Bet ID: {{betId}}\"\n }\n },\n zh: {\n resolveBet: {\n summary: \"<0>{{account}} 的赌注 {{betId}} 赢了 <1>{{EOSAmount}} \",\n detail: \"<0>赌注 ID: {{betId}}\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n if (this.hasInlineTraces()) {\n const traceData = getResolveBetAmounts(this.props.traceInfo)\n\n if (traceData[2].length > 0) {\n return (\n \n \n \n )\n }\n }\n return this.renderDefaultContent()\n }\n\n renderLevel2Template = () => {\n const { data } = this.props.action\n const i18nKey = \"pillTemplates.resolveBet.detail\"\n if (data) {\n return (\n \n \n Bet Id:\n \n ]}\n />\n \n )\n }\n\n return null\n }\n}\n","import * as React from \"react\"\nimport { Box, extractValueWithUnits } from \"@dfuse/explorer\"\nimport { GenericPillComponent } from \"../generic-pill.component\"\nimport { Trans } from \"react-i18next\"\nimport { Text } from \"../../../../atoms/text/text.component\"\nimport { Cell } from \"../../../../atoms/ui-grid/ui-grid.component\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { getBetReceiptLevel1Fields } from \"../pill-template.helpers\"\n\nexport class BetReceiptPillComponent extends GenericPillComponent {\n static requireFields = [\n \"amt_contract\",\n \"bet_amt\",\n \"bet_id\",\n \"bettor\",\n \"payout\",\n \"random_roll\",\n \"roll_under\",\n \"seed\",\n \"signature\"\n ]\n\n static contextForRendering() {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"eosbetdice11\", action: \"betreceipt\" }],\n needsTranslate: true\n }\n }\n\n static i18n() {\n return {\n en: {\n betReceipt: {\n summaryWon: \"<0>{{account}} won <1>{{EOSAmount}} on a roll of <2>{{roll}}\",\n summaryLost: \"{{account}} lost {{EOSAmount}} on a roll of {{roll}}\",\n detail:\n \"<0>Roll Under: {{rollUnder}} <1><2>Earnings: {{EOSAmount}} <3><4>Seed: {{seed}}\"\n }\n },\n zh: {\n betReceipt: {\n summaryWon: \"<0>{{account}} 掷出 <2>{{roll}} 而赢得 <1>{{EOSAmount}}\",\n summaryLost: \"{{account}} 掷出 {{roll}} 而输掉 {{EOSAmount}} \",\n detail:\n \"<0>掷出低于: {{rollUnder}} <1><2>收益: {{EOSAmount}} <3><4>种子: {{seed}}\"\n }\n }\n }\n }\n\n calculateBalance(): [number, string] {\n const { action } = this.props\n const [betAmount, unit] = extractValueWithUnits(action.data.bet_amt)\n const payout = extractValueWithUnits(action.data.payout)[0]\n\n const balance = parseFloat(payout) - parseFloat(betAmount)\n return [balance, unit]\n }\n\n renderContent = () => {\n const { action } = this.props\n\n const [balance] = this.calculateBalance()\n const i18nKey =\n balance < 0 ? \"pillTemplates.betReceipt.summaryLost\" : \"pillTemplates.betReceipt.summaryWon\"\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n const { data } = this.props.action\n const i18nKey = \"pillTemplates.betReceipt.detail\"\n const [balance, unit] = this.calculateBalance()\n if (data) {\n return (\n \n \n Roll under:\n ,\n
,\n \n Earnings:\n ,\n
,\n \n Seed:\n \n ]}\n />\n
\n )\n }\n\n return null\n }\n}\n","import * as React from \"react\"\nimport { Box } from \"@dfuse/explorer\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Trans } from \"react-i18next\"\nimport { Text } from \"../../../../atoms/text/text.component\"\nimport { Cell } from \"../../../../atoms/ui-grid/ui-grid.component\"\nimport { debugLog } from '../../../../services/logger'\n\nexport class ForumProposePillComponent extends GenericPillComponent {\n static requireFields: string[] = [\n \"expires_at\",\n \"proposal_json\",\n \"proposal_name\",\n \"proposer\",\n \"title\"\n ]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"eosforumrcpp\", action: \"propose\" }],\n needsTranslate: true\n }\n }\n\n static i18n() {\n return {\n en: {\n forumPropose: {\n summary:\n \"<0>Proposal Name: {{proposalName}} <1>Title: {{title}} <2>Expires At: {{expiresAt}}\",\n detail: \"<0>Content: {{content}}\"\n }\n },\n zh: {\n forumPropose: {\n summary:\n \"<0>提案名称: {{proposalName}} <1>标题: {{title}} <2>过期时间: {{expiresAt}}\",\n detail: \"<0>内容: {{content}}\"\n }\n }\n }\n }\n\n checkJson = (jsonData: any) => {\n // eslint-disable-next-line no-prototype-builtins\n return jsonData.hasOwnProperty(\"type\") && jsonData.hasOwnProperty(\"content\")\n }\n\n parseProposalJson = (data: any) => {\n try {\n return JSON.parse(data.json_metadata)\n } catch {\n debugLog(\"Couldn't parse proposal JSON\")\n return {}\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n const jsonData = this.parseProposalJson(action.data)\n if (this.checkJson(jsonData)) {\n return (\n \n \n Proposal Name:\n ,\n \n Title:\n ,\n \n Expires At:\n \n ]}\n />\n \n )\n }\n\n return this.renderDefaultContent()\n }\n\n renderLevel2Template = () => {\n const { data } = this.props.action\n if (!data) {\n return \n }\n\n const jsonData = this.parseProposalJson(data)\n\n if (data && this.checkJson(jsonData)) {\n return (\n \n \n Content:\n \n ]}\n />\n \n )\n }\n\n return null\n }\n}\n","/* eslint-disable no-prototype-builtins */\nimport * as React from \"react\"\nimport { Box } from \"@dfuse/explorer\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Trans } from \"react-i18next\"\nimport { Text } from \"../../../../atoms/text/text.component\"\nimport { Cell } from \"../../../../atoms/ui-grid/ui-grid.component\"\nimport { debugLog } from '../../../../services/logger'\n\nexport class ForumPostPillComponent extends GenericPillComponent {\n static requireFields: string[] = [\n \"certify\",\n \"content\",\n \"json_metadata\",\n \"post_uuid\",\n \"poster\",\n \"reply_to_post_uuid\",\n \"reply_to_poster\"\n ]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"eosforumdapp\", action: \"post\" }],\n needsTranslate: true\n }\n }\n\n static i18n() {\n return {\n en: {\n forumPost: {\n summary: \"<0>Title: {{title}} <1>Content: {{content}}\",\n detail: \"<0>Sub: {{sub}} <1><2>Attachment: {{attachment}}\"\n }\n },\n zh: {\n forumPost: {\n summary: \"<0>标题: {{title}} <1>内容: {{content}}\",\n detail: \"<0>Sub: {{sub}} <1><2>附件: {{attachment}}\"\n }\n }\n }\n }\n\n checkJson = (jsonData: any) => {\n return (\n jsonData.hasOwnProperty(\"type\") &&\n jsonData.hasOwnProperty(\"title\") &&\n jsonData.hasOwnProperty(\"sub\") &&\n jsonData.hasOwnProperty(\"attachment\") &&\n jsonData.attachment.hasOwnProperty(\"value\")\n )\n }\n\n parseProposalJson = (data: any) => {\n try {\n return JSON.parse(data.json_metadata)\n } catch {\n debugLog(\"Couldn't parse post JSON\")\n return {}\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n const jsonData = this.parseProposalJson(action.data)\n\n if (this.checkJson(jsonData)) {\n return (\n \n \n Title:\n ,\n \n Content:\n \n ]}\n />\n \n )\n }\n\n return this.renderDefaultContent()\n }\n\n renderLevel2Template = () => {\n const { data } = this.props.action\n const jsonData = this.parseProposalJson(data)\n\n if (data && this.checkJson(jsonData)) {\n return (\n \n \n Sub:\n ,\n
,\n \n Attachement:\n \n ]}\n />\n
\n )\n }\n\n return null\n }\n}\n","import * as React from \"react\"\nimport { Box, DetailLine } from \"@dfuse/explorer\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Trans } from \"react-i18next\"\nimport { EllipsisText, Text } from \"../../../../atoms/text/text.component\"\nimport { t } from \"i18next\"\n\nexport class DecenTwitterTweetPillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"msg\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"decentwitter\", action: \"tweet\" }],\n needsTranslate: true\n }\n }\n\n static i18n() {\n return {\n en: {\n tweet: {\n summary: \" <0>Message:{{message}}\",\n detail: \"Message:\"\n }\n },\n zh: {\n tweet: {\n summary: \" <0>发信:{{message}}\",\n detail: \"发信:\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n Message:\n \n ]}\n />\n \n \n )\n }\n\n renderLevel2Template = () => {\n const { data } = this.props.action\n\n if (data) {\n return {data.msg}\n }\n\n return null\n }\n}\n","import * as React from \"react\"\nimport { Pill, PillLogoProps, Box, PillClickable, MonospaceText } from \"@dfuse/explorer\"\nimport { theme } from \"../../../../theme\"\nimport { TransferBox } from \"../../../../atoms/pills/pill-transfer-box\"\nimport { getMemoText } from \"../../../../helpers/action.helpers\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\n\nexport class SenseGenesisTransferPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-sense-chat-01.svg\",\n website: \"https://www.sense.chat/\"\n }\n }\n\n static requireFields: string[] = [\"from\", \"to\", \"quantity\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"sensegenesis\", action: \"transfer\" }]\n }\n }\n\n isReceiveTransfer() {\n return (\n this.props.pageContext && this.props.pageContext.accountName === this.props.action.data.to\n )\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n )\n }\n\n renderPill2 = () => {\n const colorVariant = this.isReceiveTransfer()\n ? \"traceActionReceiveBackground\"\n : \"traceActionSendBackground\"\n\n if (!this.props.headerAndTitleOptions.title) {\n return (\n \n  \n \n )\n }\n\n const WrapperComponent = this.props.disabled ? Box : PillClickable\n\n return (\n \n \n {this.props.headerAndTitleOptions.title}\n \n \n )\n }\n\n render() {\n const memoText = getMemoText(this.props.action)\n return (\n {\n return this.renderExpandedContent()\n }}\n renderInfo={this.renderLevel2Template}\n content={this.renderContent()}\n />\n )\n }\n}\n","import * as React from \"react\"\nimport { Pill, PillLogoProps, Box, PillClickable, MonospaceText } from \"@dfuse/explorer\"\nimport { theme } from \"../../../../theme\"\nimport { TransferBox } from \"../../../../atoms/pills/pill-transfer-box\"\nimport { getMemoText } from \"../../../../helpers/action.helpers\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\n\nexport class DmailTransferPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-dmail-01.svg\",\n website: \"https://dmail.co/\"\n }\n }\n\n static requireFields: string[] = [\"from\", \"to\", \"quantity\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"d.mail\", action: \"transfer\" }]\n }\n }\n\n isReceiveTransfer() {\n return (\n this.props.pageContext && this.props.pageContext.accountName === this.props.action.data.to\n )\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n )\n }\n\n renderPill2 = () => {\n const colorVariant = this.isReceiveTransfer()\n ? \"traceActionReceiveBackground\"\n : \"traceActionSendBackground\"\n\n if (!this.props.headerAndTitleOptions.title) {\n return (\n \n  \n \n )\n }\n\n const WrapperComponent = this.props.disabled ? Box : PillClickable\n\n return (\n \n \n {this.props.headerAndTitleOptions.title}\n \n \n )\n }\n\n render() {\n const memoText = getMemoText(this.props.action)\n return (\n {\n return this.renderExpandedContent()\n }}\n renderInfo={this.renderLevel2Template}\n content={this.renderContent()}\n />\n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps } from \"@dfuse/explorer\"\nimport { getPixeosClaimLevel1Fields } from \"../pill-template.helpers\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { ExternalTextLink } from \"../../../../atoms/text/text.component\"\n\nexport class PixeosClaimRewardsPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-pixeos-01.svg\",\n website: \"https://paint.pixeos.art\"\n }\n }\n\n static requireFields: string[] = [\"owner\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"pixeos1paint\", action: \"claimbal\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n claimpixeosrewards: {\n summary: \"<0>{{account}} claimed their balance of <1>{{amountEOS}}\"\n }\n },\n zh: {\n claimpixeosrewards: {\n summary: \"<0>{{account}} 取出了余额中的 <1>{{amountEOS}}\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n \n https://paint.pixeos.art/\n \n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps } from \"@dfuse/explorer\"\nimport { getPixeosAddToClaimLevel1Fields } from \"../pill-template.helpers\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { ExternalTextLink } from \"../../../../atoms/text/text.component\"\n\nexport class PixeosAddClaimPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-pixeos-01.svg\",\n website: \"https://paint.pixeos.art\"\n }\n }\n\n static requireFields: string[] = [\"user\", \"addbalance\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"pixeos1paint\", action: \"addclaimbal\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n addclaimpixeosrewards: {\n summary: \"<0>{{account}} added <1>{{amountEOS}} to their balance\"\n }\n },\n zh: {\n addclaimpixeosrewards: {\n summary: \"<0>{{account}} 的余额增加了<1>{{amountEOS}}\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n \n https://paint.pixeos.art/\n \n \n )\n }\n}\n","import * as React from \"react\"\nimport { Pill, PillLogoProps, PillClickable, Box, MonospaceText } from \"@dfuse/explorer\"\nimport { theme } from \"../../../../theme\"\nimport { TransferBox } from \"../../../../atoms/pills/pill-transfer-box\"\nimport { getMemoText } from \"../../../../helpers/action.helpers\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\n\nexport class KarmaTransferPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-karma-01.svg\",\n website: \"https://www.karmaapp.io/\"\n }\n }\n\n static requireFields: string[] = [\"from\", \"to\", \"quantity\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"therealkarma\", action: \"transfer\" }]\n }\n }\n\n isReceiveTransfer() {\n return (\n this.props.pageContext && this.props.pageContext.accountName === this.props.action.data.to\n )\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n )\n }\n\n renderPill2 = () => {\n const colorVariant = this.isReceiveTransfer()\n ? \"traceActionReceiveBackground\"\n : \"traceActionSendBackground\"\n\n if (!this.props.headerAndTitleOptions.title) {\n return (\n \n  \n \n )\n }\n\n const WrapperComponent = this.props.disabled ? Box : PillClickable\n\n return (\n \n \n {this.props.headerAndTitleOptions.title}\n \n \n )\n }\n\n render() {\n const memoText = getMemoText(this.props.action)\n return (\n {\n return this.renderExpandedContent()\n }}\n renderInfo={this.renderLevel2Template}\n content={this.renderContent()}\n />\n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps } from \"@dfuse/explorer\"\nimport { getKarmaPowerUpLevel1Fields } from \"../pill-template.helpers\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { ExternalTextLink } from \"../../../../atoms/text/text.component\"\n\nexport class KarmaPowerupPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-karma-01.svg\",\n website: \"https://karmaapp.io\"\n }\n }\n\n static requireFields: string[] = [\"owner\", \"quantity\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"therealkarma\", action: \"powerup\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n karmapowerup: {\n summary: \"<0>{{account}} used <1>{{amountKarma}} to Power Up\"\n }\n },\n zh: {\n karmapowerup: {\n summary: \"<0>{{account}} 使用了<1>{{amountKarma}}Power Up\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n https://karmaapp.io\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps } from \"@dfuse/explorer\"\nimport { getKarmaClaimLevel1Fields } from \"../pill-template.helpers\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { ExternalTextLink } from \"../../../../atoms/text/text.component\"\n\nexport class KarmaClaimPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-karma-01.svg\",\n website: \"https://karmaapp.io\"\n }\n }\n\n static requireFields: string[] = [\"owner\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"therealkarma\", action: \"claim\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n karmaclaim: {\n summary: \"<0>{{account}} claimed their Power Up rewards\"\n }\n },\n zh: {\n karmaclaim: {\n summary: \"<0>{{account}} 领取 Power Up 奖励\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n https://karmaapp.io\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps } from \"@dfuse/explorer\"\nimport { getKarmaClaimPostLevel1Fields } from \"../pill-template.helpers\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { ExternalTextLink } from \"../../../../atoms/text/text.component\"\n\nexport class KarmaClaimPostPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-karma-01.svg\",\n website: \"https://karmaapp.io\"\n }\n }\n\n static requireFields: string[] = [\"author\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"thekarmadapp\", action: \"claim\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n karmaclaimpost: {\n summary: \"<0>{{account}} claimed their Post rewards\"\n }\n },\n zh: {\n karmaclaimpost: {\n summary: \"<0>{{account}} 领取 Post 奖励\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n https://karmaapp.io\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps } from \"@dfuse/explorer\"\nimport { getKarmaPowerdownLevel1Fields } from \"../pill-template.helpers\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { ExternalTextLink } from \"../../../../atoms/text/text.component\"\n\nexport class KarmaPowerdownPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-karma-01.svg\",\n website: \"https://karmaapp.io\"\n }\n }\n\n static requireFields: string[] = [\"owner\", \"quantity\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"therealkarma\", action: \"powerdown\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n karmapowerdown: {\n summary: \"<0>{{account}} powered down <1>{{amountKarma}}\"\n }\n },\n zh: {\n karmapowerdown: {\n summary: \"<0>{{account}} power down 收回了<1>{{amountKarma}}\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n https://karmaapp.io\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps } from \"@dfuse/explorer\"\nimport { getKarmaClaimLevel1Fields } from \"../pill-template.helpers\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { ExternalTextLink } from \"../../../../atoms/text/text.component\"\n\nexport class KarmaRefundPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-karma-01.svg\",\n website: \"https://karmaapp.io\"\n }\n }\n\n static requireFields: string[] = [\"owner\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"therealkarma\", action: \"refund\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n karmarefund: {\n summary: \"<0>{{account}} received a refund\"\n }\n },\n zh: {\n karmarefund: {\n summary: \"<0>{{account}} 收到退款\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n https://karmaapp.io\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps } from \"@dfuse/explorer\"\nimport { ExternalTextLink } from \"../../../../atoms/text/text.component\"\n\nexport class KarmaSetrewardsPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-karma-01.svg\",\n website: \"https://karmaapp.io\"\n }\n }\n\n static requireFields: string[] = []\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"therealkarma\", action: \"setrewards\" }]\n }\n }\n\n renderLevel2Template = () => {\n return (\n \n https://karmaapp.io\n \n )\n }\n}\n","import * as React from \"react\"\nimport { Box, Pill, PillLogoProps, PillClickable, MonospaceText } from \"@dfuse/explorer\"\nimport { theme } from \"../../../../theme\"\nimport { TransferBox } from \"../../../../atoms/pills/pill-transfer-box\"\nimport { getMemoText } from \"../../../../helpers/action.helpers\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\n\nexport class CarbonTransferPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-carbon-01.svg\",\n website: \"https://carbon.money\"\n }\n }\n\n static requireFields: string[] = [\"from\", \"to\", \"quantity\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n\n validActions: [{ contract: \"stablecarbon\", action: \"transfer\" }]\n }\n }\n\n isReceiveTransfer() {\n return (\n this.props.pageContext && this.props.pageContext.accountName === this.props.action.data.to\n )\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n )\n }\n\n renderPill2 = () => {\n const colorVariant = this.isReceiveTransfer()\n ? \"traceActionReceiveBackground\"\n : \"traceActionSendBackground\"\n\n if (!this.props.headerAndTitleOptions.title) {\n return (\n \n  \n \n )\n }\n\n const WrapperComponent = this.props.disabled ? Box : PillClickable\n\n return (\n \n \n {this.props.headerAndTitleOptions.title}\n \n \n )\n }\n\n render() {\n const memoText = getMemoText(this.props.action)\n let logo: PillLogoProps | undefined = {\n path: \"/images/pill-logos/logo-contract-carbon-01.svg\",\n website: \"https://carbon.money\"\n }\n if (this.props.traceInfo && this.props.action.account !== this.props.traceInfo.receiver) {\n logo = undefined\n }\n\n return (\n {\n return this.renderExpandedContent()\n }}\n renderInfo={this.renderLevel2Template}\n content={this.renderContent()}\n />\n )\n }\n}\n","import * as React from \"react\"\nimport { Box, Pill, PillLogoProps, MonospaceText, PillClickable } from \"@dfuse/explorer\"\nimport { theme } from \"../../../../theme\"\nimport { getMemoText } from \"../../../../helpers/action.helpers\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { getCarbonIssueLevel1Fields } from \"../pill-template.helpers\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\n\nexport class CarbonIssuePillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-carbon-01.svg\",\n website: \"https://carbon.money\"\n }\n }\n\n static requireFields: string[] = [\"quantity\", \"to\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n\n validActions: [{ contract: \"stablecarbon\", action: \"issue\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n carbonissue: {\n summary: \"Carbon Fiber minted <0>{{amountCUSD}} for <1>{{to}}\"\n }\n },\n zh: {\n carbonissue: {\n summary: \"Carbon Fiber 为 <1>{{to}} 铸造了<0>{{amountCUSD}}\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderPill2 = () => {\n if (!this.props.headerAndTitleOptions.title) {\n return (\n \n  \n \n )\n }\n\n const WrapperComponent = this.props.disabled ? Box : PillClickable\n\n return (\n \n \n {this.props.headerAndTitleOptions.title}\n \n \n )\n }\n\n render() {\n const memoText = getMemoText(this.props.action)\n\n return (\n {\n return this.renderExpandedContent()\n }}\n renderInfo={this.renderLevel2Template}\n content={this.renderContent()}\n />\n )\n }\n}\n","import * as React from \"react\"\nimport { Box, Pill, PillLogoProps, PillClickable, MonospaceText } from \"@dfuse/explorer\"\nimport { theme } from \"../../../../theme\"\nimport { getMemoText } from \"../../../../helpers/action.helpers\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { getCarbonBurnLevel1Fields } from \"../pill-template.helpers\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\n\nexport class CarbonBurnPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-carbon-01.svg\",\n website: \"https://carbon.money\"\n }\n }\n\n static requireFields: string[] = [\"quantity\", \"from\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n\n validActions: [{ contract: \"stablecarbon\", action: \"burn\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n carbonburn: {\n summary: \"Carbon Fiber burned <0>{{amountCUSD}} from <1>{{from}}\"\n }\n },\n zh: {\n carbonburn: {\n summary: \"Carbon Fiber 从<1>{{from}} 烧毁了<0>{{amountCUSD}} \"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderPill2 = () => {\n if (!this.props.headerAndTitleOptions.title) {\n return (\n \n  \n \n )\n }\n\n const WrapperComponent = this.props.disabled ? Box : PillClickable\n\n return (\n \n \n {this.props.headerAndTitleOptions.title}\n \n \n )\n }\n\n render() {\n const memoText = getMemoText(this.props.action)\n\n return (\n {\n return this.renderExpandedContent()\n }}\n renderInfo={this.renderLevel2Template}\n content={this.renderContent()}\n />\n )\n }\n}\n","import * as React from \"react\"\nimport { Box, Pill, PillLogoProps, CellValue, PillClickable, MonospaceText } from \"@dfuse/explorer\"\nimport { theme } from \"../../../../theme\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { getDfuseEventLevel1Fields } from \"../pill-template.helpers\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\n\nimport { Cell, Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\nimport { Text } from \"../../../../atoms/text/text.component\"\nimport { t } from \"../../../../i18n\"\n\nexport class DfuseEventPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-dfuse-01.svg\",\n website: \"https://docs.dfuse.io/#dfuse-events\"\n }\n }\n\n static requireFields: string[] = [\"auth_key\", \"data\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"dfuseiohooks\", action: \"event\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n dfuseevents: {\n summary: \"<0>Indexed fields: {{fields}}\",\n authKey: \"Auth Key: \",\n indexedFields: \"Indexed Fields: \"\n }\n },\n zh: {\n dfuseevents: {\n summary: \"<0>索引字段: {{fields}}\",\n authKey: \"Auth Key: \",\n indexedFields: \"索引字段:\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[]) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n const fields = this.props.action.data.data.split(\"&\")\n\n return (\n \n {this.renderDetailLine(\n t(\"pillTemplates.dfuseevents.authKey\"),\n this.props.action.data.auth_key\n )}\n {this.renderDetailLine(\n t(\"pillTemplates.dfuseevents.indexedFields\"),\n fields.map((field: string, index: number) => {\n const fieldValues = field.split(\"=\")\n if (fieldValues.length < 2) {\n return null\n }\n\n return (\n \n \n {fieldValues[0]} ={\" \"}\n {\" \"}\n {fieldValues[1]}\n \n )\n })\n )}\n \n )\n }\n\n renderPill2 = () => {\n if (!this.props.headerAndTitleOptions.title) {\n return (\n \n  \n \n )\n }\n\n const WrapperComponent = this.props.disabled ? Box : PillClickable\n\n return (\n \n \n {this.props.headerAndTitleOptions.title}\n \n \n )\n }\n\n render(): JSX.Element {\n return (\n }\n renderInfo={this.renderLevel2Template}\n />\n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps, CellValue } from \"@dfuse/explorer\"\nimport { KeyValueFormatEllipsis, Text } from \"../../../../atoms/text/text.component\"\n\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\n\nexport class MurmurCommentMurmurPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-murmur-01.svg\",\n website: \"https://murmurdapp.com\"\n }\n }\n\n static requireFields: string[] = [\"comment\", \"from\", \"murmur_id\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"murmurdappco\", action: \"comentmurmur\" }]\n }\n }\n\n renderContent = (): JSX.Element => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[]) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n {this.renderDetailLine(\"Murmur ID: \", this.props.action.data.murmur_id)}\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps, CellValue } from \"@dfuse/explorer\"\nimport { KeyValueFormatEllipsis, Text } from \"../../../../atoms/text/text.component\"\n\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\n\nexport class MurmurCommentYellPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-murmur-01.svg\",\n website: \"https://murmurdapp.com\"\n }\n }\n\n static requireFields: string[] = [\"comment\", \"from\", \"yell_id\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"murmurdappco\", action: \"commentyell\" }]\n }\n }\n\n renderContent = (): JSX.Element => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[]) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n {this.renderDetailLine(\"Yell ID: \", this.props.action.data.yell_id)}\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps, CellValue } from \"@dfuse/explorer\"\nimport { KeyValueFormatEllipsis, Text } from \"../../../../atoms/text/text.component\"\n\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\n\nexport class MurmurFollowPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-murmur-01.svg\",\n website: \"https://murmurdapp.com\"\n }\n }\n\n static requireFields: string[] = [\"from\", \"to\", \"weightage\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"murmurdappco\", action: \"follow\" }]\n }\n }\n\n renderContent = (): JSX.Element => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[]) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n {this.renderDetailLine(\"Weight Age: \", this.props.action.data.weightage)}\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps, CellValue } from \"@dfuse/explorer\"\nimport { KeyValueFormatEllipsis, Text } from \"../../../../atoms/text/text.component\"\n\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\n\nexport class MurmurMurmurPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-murmur-01.svg\",\n website: \"https://murmurdapp.com\"\n }\n }\n\n static requireFields: string[] = [\"from\", \"content\", \"visibility\", \"url\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"murmurdappco\", action: \"murmur\" }]\n }\n }\n\n renderContent = (): JSX.Element => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[]) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n {this.renderDetailLine(\"Visibility: \", this.props.action.data.visibility)}\n {this.renderDetailLine(\"URL: \", this.props.action.data.url)}\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps, CellValue } from \"@dfuse/explorer\"\nimport { KeyValueFormatEllipsis, Text } from \"../../../../atoms/text/text.component\"\n\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\n\nexport class SnoopMurmurPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-murmur-01.svg\",\n website: \"https://murmurdapp.com\"\n }\n }\n\n static requireFields: string[] = [\"from\", \"murmur_id\", \"snoop_type\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"murmurdappco\", action: \"snoopmurmur\" }]\n }\n }\n\n renderContent = (): JSX.Element => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[]) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n {this.renderDetailLine(\"Murmur ID: \", this.props.action.data.murmur_id)}\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps, CellValue } from \"@dfuse/explorer\"\nimport { KeyValueFormatEllipsis, Text } from \"../../../../atoms/text/text.component\"\n\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\n\nexport class SnoopYellPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-murmur-01.svg\",\n website: \"https://murmurdapp.com\"\n }\n }\n\n static requireFields: string[] = [\"from\", \"yell_id\", \"snoop_type\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"murmurdappco\", action: \"snoopyell\" }]\n }\n }\n\n renderContent = (): JSX.Element => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[]) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n {this.renderDetailLine(\"Yell ID: \", this.props.action.data.yell_id)}\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps } from \"@dfuse/explorer\"\nimport { ExternalTextLink, KeyValueFormatEllipsis } from \"../../../../atoms/text/text.component\"\n\nexport class MurmurUnfollowPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-murmur-01.svg\",\n website: \"https://murmurdapp.com\"\n }\n }\n\n static requireFields: string[] = [\"from\", \"to\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"murmurdappco\", action: \"unfollow\" }]\n }\n }\n\n renderContent = (): JSX.Element => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n https://murmurdapp.com\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps, CellValue } from \"@dfuse/explorer\"\nimport { KeyValueFormatEllipsis, Text } from \"../../../../atoms/text/text.component\"\n\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\n\nexport class MurmurWhisperPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-murmur-01.svg\",\n website: \"https://murmurdapp.com\"\n }\n }\n\n static requireFields: string[] = [\n \"encrypted_message\",\n \"from\",\n \"from_public_key\",\n \"to\",\n \"to_public_key\"\n ]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"murmurdappco\", action: \"whisper\" }]\n }\n }\n\n renderContent = (): JSX.Element => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[]) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n {this.renderDetailLine(\"From Key: \", this.props.action.data.from_public_key)}\n {this.renderDetailLine(\"To Key: \", this.props.action.data.to_public_key)}\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps, CellValue } from \"@dfuse/explorer\"\nimport { KeyValueFormatEllipsis, Text } from \"../../../../atoms/text/text.component\"\n\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\n\nexport class MurmurYellPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-murmur-01.svg\",\n website: \"https://murmurdapp.com\"\n }\n }\n\n static requireFields: string[] = [\"extra_comment\", \"from\", \"murmur_id\", \"visibility\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"murmurdappco\", action: \"yell\" }]\n }\n }\n\n renderContent = (): JSX.Element => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[]) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n {this.renderDetailLine(\"Visibility: \", this.props.action.data.visibility)}\n {this.renderDetailLine(\"Murmur ID: \", this.props.action.data.murmur_id)}\n \n )\n }\n}\n","import * as React from \"react\"\nimport { Pill, PillLogoProps, Box, PillClickable, MonospaceText } from \"@dfuse/explorer\"\nimport { theme } from \"../../../../theme\"\nimport { TransferBox } from \"../../../../atoms/pills/pill-transfer-box\"\nimport { getMemoText } from \"../../../../helpers/action.helpers\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\n\nexport class MurmurTransferPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-murmur-01.svg\",\n website: \"https://murmurdapp.com/\"\n }\n }\n\n static requireFields: string[] = [\"from\", \"to\", \"quantity\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"murmurtokens\", action: \"transfer\" }]\n }\n }\n\n isReceiveTransfer() {\n return (\n this.props.pageContext && this.props.pageContext.accountName === this.props.action.data.to\n )\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n )\n }\n\n renderPill2 = () => {\n const colorVariant = this.isReceiveTransfer()\n ? \"traceActionReceiveBackground\"\n : \"traceActionSendBackground\"\n\n if (!this.props.headerAndTitleOptions.title) {\n return (\n \n  \n \n )\n }\n\n const WrapperComponent = this.props.disabled ? Box : PillClickable\n\n return (\n \n \n {this.props.headerAndTitleOptions.title}\n \n \n )\n }\n\n render() {\n const memoText = getMemoText(this.props.action)\n return (\n {\n return this.renderExpandedContent()\n }}\n renderInfo={this.renderLevel2Template}\n content={this.renderContent()}\n />\n )\n }\n}\n","import * as React from \"react\"\nimport { Pill, PillLogoProps, PillClickable, Box, MonospaceText } from \"@dfuse/explorer\"\nimport { theme } from \"../../../../theme\"\nimport { TransferBox } from \"../../../../atoms/pills/pill-transfer-box\"\nimport { getMemoText } from \"../../../../helpers/action.helpers\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\n\nexport class InfiniverseTransferPillComponent extends GenericPillComponent {\n static requireFields: string[] = [\"from\", \"to\", \"quantity\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"infinicoinio\", action: \"transfer\" }]\n }\n }\n\n isReceiveTransfer() {\n return (\n this.props.pageContext && this.props.pageContext.accountName === this.props.action.data.to\n )\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n )\n }\n\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-infiniverse-01.svg\",\n website: \"https://infiniverse.net\"\n }\n }\n\n renderPill2 = () => {\n const colorVariant = this.isReceiveTransfer()\n ? \"traceActionReceiveBackground\"\n : \"traceActionSendBackground\"\n\n if (!this.props.headerAndTitleOptions.title) {\n return (\n \n  \n \n )\n }\n\n const WrapperComponent = this.props.disabled ? Box : PillClickable\n\n return (\n \n \n {this.props.headerAndTitleOptions.title}\n \n \n )\n }\n\n render() {\n const memoText = getMemoText(this.props.action)\n\n return (\n {\n return this.renderExpandedContent()\n }}\n renderInfo={this.renderLevel2Template}\n content={this.renderContent()}\n />\n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps } from \"@dfuse/explorer\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { ExternalTextLink } from \"../../../../atoms/text/text.component\"\n\nimport { getInfiniverseMakeOfferLevel1Fields } from \"../pill-template.helpers\"\n\nexport class MakeOfferPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-infiniverse-01.svg\",\n website: \"https://infiniverse.net\"\n }\n }\n\n static requireFields: string[] = [\"buyer\", \"land_id\", \"price\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n\n validActions: [{ contract: \"infiniverse1\", action: \"makeoffer\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n infiniversemakeoffer: {\n summary: \"<0>{{buyer}} offers <1>{{quantity}} for Land <2>{{land_id}}\"\n }\n },\n zh: {\n infiniversemakeoffer: {\n summary: \"<0>{{buyer}} 为 Land <2>{{land_id}} 报价 <1>{{quantity}}\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n https://infiniverse.net\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps, CellValue } from \"@dfuse/explorer\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { Text } from \"../../../../atoms/text/text.component\"\n\nimport { getInfiniverseMoveLandLevel1Fields } from \"../pill-template.helpers\"\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\n\nimport { t } from \"../../../../i18n\"\n\nexport class MoveLandPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-infiniverse-01.svg\",\n website: \"https://infiniverse.net\"\n }\n }\n\n static requireFields: string[] = [\n \"land_id\",\n \"lat_north_edge\",\n \"lat_south_edge\",\n \"long_east_edge\",\n \"long_west_edge\"\n ]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"infiniverse1\", action: \"moveland\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n infiniversemoveland: {\n summary: \"<0>{{authorizer}} moved their land\",\n southEdge: \"South Edge:\",\n northEdge: \"North Edge:\",\n eastEdge: \"East Edge:\",\n westEdge: \"West Edge:\"\n }\n },\n zh: {\n infiniversemoveland: {\n summary: \"<0>{{authorizer}} 移动了土地\",\n southEdge: \"South Edge:\",\n northEdge: \"North Edge:\",\n eastEdge: \"East Edge:\",\n westEdge: \"West Edge:\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[]) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n {this.renderDetailLine(\n t(\"pillTemplates.infiniversemoveland.northEdge\"),\n this.props.action.data.lat_north_edge\n )}\n {this.renderDetailLine(\n t(\"pillTemplates.infiniversemoveland.southEdge\"),\n this.props.action.data.lat_south_edge\n )}\n {this.renderDetailLine(\n t(\"pillTemplates.infiniversemoveland.eastEdge\"),\n this.props.action.data.long_east_edge\n )}\n {this.renderDetailLine(\n t(\"pillTemplates.infiniversemoveland.westEdge\"),\n this.props.action.data.long_west_edge\n )}\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps, CellValue } from \"@dfuse/explorer\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { Text } from \"../../../../atoms/text/text.component\"\n\nimport { getInfiniversePersistPolyLevel1Fields } from \"../pill-template.helpers\"\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\n\nimport { t } from \"../../../../i18n\"\n\nexport class InfiniversePersistpolyPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-infiniverse-01.svg\",\n website: \"https://infiniverse.net\"\n }\n }\n\n static requireFields: string[] = [\"land_id\", \"orientation\", \"poly_id\", \"position\", \"scale\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"infiniverse1\", action: \"persistpoly\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n infiniversepersistpoly: {\n summary: \"<0>Land ID: <1>{{land_id}}, <2>Polygon ID: <3>{{poly_id}}\",\n orientation: \"Orientation:\",\n position: \"Position:\",\n scale: \"Scale:\"\n }\n },\n zh: {\n infiniversepersistpoly: {\n summary: \"<0>Land ID: <1>{{land_id}}, <2>Polygon ID: <3>{{poly_id}}\",\n orientation: \"方向:\",\n position: \"位置:\",\n scale: \"大小:\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[] | string) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n {this.renderDetailLine(\n t(\"pillTemplates.infiniversepersistpoly.orientation\"),\n JSON.stringify(this.props.action.data.orientation)\n )}\n {this.renderDetailLine(\n t(\"pillTemplates.infiniversepersistpoly.position\"),\n JSON.stringify(this.props.action.data.position)\n )}\n {this.renderDetailLine(\n t(\"pillTemplates.infiniversepersistpoly.scale\"),\n JSON.stringify(this.props.action.data.scale)\n )}\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps, CellValue } from \"@dfuse/explorer\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { Text } from \"../../../../atoms/text/text.component\"\n\nimport { getInfiniverseRegisterlandLevel1Fields } from \"../pill-template.helpers\"\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\n\nimport { t } from \"../../../../i18n\"\n\nexport class InfiniverseRegisterlandPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-infiniverse-01.svg\",\n website: \"https://infiniverse.net\"\n }\n }\n\n static requireFields: string[] = [\n \"lat_north_edge\",\n \"lat_south_edge\",\n \"long_east_edge\",\n \"long_west_edge\",\n \"owner\"\n ]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"infiniverse1\", action: \"registerland\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n infiniverseregisterland: {\n summary: \"<0>{{owner}} registered their land\",\n southEdge: \"South Edge:\",\n northEdge: \"North Edge:\",\n eastEdge: \"East Edge:\",\n westEdge: \"West Edge:\"\n }\n },\n zh: {\n infiniverseregisterland: {\n summary: \"<0>{{owner}} 注册了土地\",\n southEdge: \"South Edge:\",\n northEdge: \"North Edge:\",\n eastEdge: \"East Edge:\",\n westEdge: \"West Edge:\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[] | string) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n {this.renderDetailLine(\n t(\"pillTemplates.infiniverseregisterland.northEdge\"),\n this.props.action.data.lat_north_edge\n )}\n {this.renderDetailLine(\n t(\"pillTemplates.infiniverseregisterland.southEdge\"),\n this.props.action.data.lat_south_edge\n )}\n {this.renderDetailLine(\n t(\"pillTemplates.infiniverseregisterland.eastEdge\"),\n this.props.action.data.long_east_edge\n )}\n {this.renderDetailLine(\n t(\"pillTemplates.infiniverseregisterland.westEdge\"),\n this.props.action.data.long_west_edge\n )}\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps, CellValue } from \"@dfuse/explorer\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { ExternalTextLink, Text } from \"../../../../atoms/text/text.component\"\n\nimport { getInfiniverseSetLandPriceLevel1Fields } from \"../pill-template.helpers\"\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\n\nexport class InfiniverseSetlandpricePillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-infiniverse-01.svg\",\n website: \"https://infiniverse.net\"\n }\n }\n\n static requireFields: string[] = [\"land_id\", \"price\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"infiniverse1\", action: \"setlandprice\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n infiniversesetlandprice: {\n summary:\n \"<0>{{authorizer}} set a price of <1>{{quantity}} for Land <2>{{land_id}}\"\n }\n },\n zh: {\n infiniversesetlandprice: {\n summary: \"<0>{{authorizer}} 为 Land <2>{{land_id}} 定价 <1>{{quantity}} \"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[] | string) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n https://infiniverse.net\n \n )\n }\n}\n","import * as React from \"react\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { Box, PillLogoProps, CellValue } from \"@dfuse/explorer\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { ExternalTextLink, Text } from \"../../../../atoms/text/text.component\"\n\nimport { getInfiniverseUpdatePersistLevel1Fields } from \"../pill-template.helpers\"\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\n\nexport class InfiniverseUpdatePersistPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-infiniverse-01.svg\",\n website: \"https://infiniverse.net\"\n }\n }\n\n static requireFields: string[] = [\"land_id\", \"orientation\", \"persistent_id\", \"position\", \"scale\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"infiniverse1\", action: \"updatepersis\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n infiniverseupdatepersist: {\n summary: \"<0>Land ID: <1>{{land_id}}, <2>Persistent ID: <3>{{poly_id}}\",\n orientation: \"Orientation:\",\n position: \"Position:\",\n scale: \"Scale:\"\n }\n },\n zh: {\n infiniverseupdatepersist: {\n summary: \"<0>Land ID: <1>{{land_id}}, <2>Persistent ID: <3>{{poly_id}}\",\n orientation: \"方向:\",\n position: \"位置:\",\n scale: \"大小:\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[] | string) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n https://infiniverse.net\n \n )\n }\n}\n","import * as React from \"react\"\nimport { Box, PillLogoProps, CellValue } from \"@dfuse/explorer\"\nimport { GenericPillComponent, PillRenderingContext } from \"../generic-pill.component\"\nimport { FormattedText } from \"../../../formatted-text/formatted-text\"\nimport { ExternalTextLink, Text } from \"../../../../atoms/text/text.component\"\n\nimport { getInfiniverseDeletePersistLevel1Fields } from \"../pill-template.helpers\"\nimport { Grid } from \"../../../../atoms/ui-grid/ui-grid.component\"\n\nexport class InfiniverseDeletePersistPillComponent extends GenericPillComponent {\n get logoParams(): PillLogoProps | undefined {\n return {\n path: \"/images/pill-logos/logo-contract-infiniverse-01.svg\",\n website: \"https://infiniverse.net\"\n }\n }\n\n static requireFields: string[] = [\"persistent_id\"]\n\n static contextForRendering = (): PillRenderingContext => {\n return {\n networks: [\"eos-mainnet\"],\n validActions: [{ contract: \"infiniverse1\", action: \"deletepersis\" }]\n }\n }\n\n static i18n() {\n return {\n en: {\n infiniversedeletepersist: {\n summary: \"<0>{{authorizer}} has deleted the peristent data for their land\"\n }\n },\n zh: {\n infiniversedeletepersist: {\n summary: \"<0>{{authorizer}} 删除了他们土地的持久数据\"\n }\n }\n }\n }\n\n renderContent = () => {\n const { action } = this.props\n\n return (\n \n \n \n )\n }\n\n renderDetailLine(title: string, children: JSX.Element | JSX.Element[] | string) {\n const templateColumns = [\"1fr\", \"150px 1fr\"]\n\n return (\n \n \n {title} \n \n {children}\n \n )\n }\n\n renderLevel2Template = () => {\n return (\n \n https://infiniverse.net\n \n )\n }\n}\n","import { PillComponentClass } from \"./generic-pill.component\"\nimport { BuyRamPillComponent } from \"./system/buy-ram-pill.component\"\nimport { BuyRamBytesPillComponent } from \"./system/buy-ram-bytes-pill.component\"\nimport { RefundPillComponent } from \"./system/refund-pill.component\"\nimport { DelegateBandwidthPillComponent } from \"./system/delegate-bandwidth-pill.component\"\nimport { IssuePillComponent } from \"./system/issue-pill.component\"\nimport { TransferPillComponent } from \"./transfer-pill.component\"\nimport { VotePillComponent } from \"./system/vote-pill.component\"\nimport { UnDelegateBandwidthPillComponent } from \"./system/undelegate-bandwidth-pill.component\"\nimport { NewAccountPillComponent } from \"./system/newaccount-pill.component\"\nimport { LinkAuthPillComponent } from \"./system/linkauth-pill.component\"\nimport { UpdateAuthPillComponent } from \"./system/updateauth-pill.component\"\nimport { ClaimRewardsPillComponent } from \"./system/claim-rewards-pill.component\"\nimport { SetcodePillComponent } from \"./system/setcode-pill.component\"\nimport { RegProxyPillComponent } from \"./system/regproxy-pill.component\"\nimport { ResolveBetPillComponent } from \"./eosbetdice11/resolvebet-pill.component\"\nimport { BetReceiptPillComponent } from \"./eosbetdice11/betreceipt-pill.component\"\nimport { ForumProposePillComponent } from \"./forum/forum-propose-pill.component\"\nimport { ForumPostPillComponent } from \"./forum/forum-post-pill.component\"\nimport { DecenTwitterTweetPillComponent } from \"./decenttwitter/decenttwitter-tweet-pill.component\"\nimport { SenseGenesisTransferPillComponent } from \"./sense/sense-genesis-transfer-pill.component\"\nimport { DmailTransferPillComponent } from \"./d.mail/dmail-transfer-pill.component\"\nimport { PixeosClaimRewardsPillComponent } from \"./pixeos/pixeos-claimbal-pill.component\"\nimport { PixeosAddClaimPillComponent } from \"./pixeos/pixeos-addclaim-pill.component\"\nimport { KarmaTransferPillComponent } from \"./karma/karma-transfer-pill.component\"\nimport { KarmaPowerupPillComponent } from \"./karma/karma-powerup-pill.component\"\nimport { KarmaClaimPillComponent } from \"./karma/karma-claim-pill.component\"\nimport { KarmaClaimPostPillComponent } from \"./karma/karma-claim-post-pill.component\"\nimport { KarmaPowerdownPillComponent } from \"./karma/karma-powerdown-pill.component\"\nimport { KarmaRefundPillComponent } from \"./karma/karma-refund-pill.component\"\nimport { KarmaSetrewardsPillComponent } from \"./karma/karma-setrewards-pill.component\"\nimport { CarbonTransferPillComponent } from \"./carbon/carbon-transfer-pill.component\"\nimport { CarbonIssuePillComponent } from \"./carbon/carbon-issue-pill.component\"\nimport { CarbonBurnPillComponent } from \"./carbon/carbon-burn-pill.component\"\nimport { DfuseEventPillComponent } from \"./dfuse-events/dfuse-event-pill.component\"\nimport { MurmurCommentMurmurPillComponent } from \"./murmur/murmur-commentmurmur-pill.component\"\nimport { MurmurCommentYellPillComponent } from \"./murmur/murmur-commentyell-pill.component\"\nimport { MurmurFollowPillComponent } from \"./murmur/murmur-follow-pill.component\"\nimport { MurmurMurmurPillComponent } from \"./murmur/murmur-murmur-pill.component\"\nimport { SnoopMurmurPillComponent } from \"./murmur/snoop-murmur-pill.component\"\nimport { SnoopYellPillComponent } from \"./murmur/snoop-yell-pill.component\"\nimport { MurmurUnfollowPillComponent } from \"./murmur/murmur-unfollow-pill.component\"\nimport { MurmurWhisperPillComponent } from \"./murmur/murmur-whisper-pill.component\"\nimport { MurmurYellPillComponent } from \"./murmur/murmur-yell-pill.component\"\nimport { MurmurTransferPillComponent } from \"./murmur/murmur-transfer-pill.component\"\nimport { InfiniverseTransferPillComponent } from \"./infiniverse/infiniverse-transfer-pill.component\"\nimport { MakeOfferPillComponent } from \"./infiniverse/infiniverse-makeoffer-pill.component\"\nimport { MoveLandPillComponent } from \"./infiniverse/infiniverse-moveland-pill.component\"\nimport { InfiniversePersistpolyPillComponent } from \"./infiniverse/infiniverse-persistpoly-pill.component\"\nimport { InfiniverseRegisterlandPillComponent } from \"./infiniverse/infiniverse-registerland-pill.component\"\nimport { InfiniverseSetlandpricePillComponent } from \"./infiniverse/infiniverse-setlandprice-pill.component\"\nimport { InfiniverseUpdatePersistPillComponent } from \"./infiniverse/infiniverse-updatepersist-pill.component\"\nimport { InfiniverseDeletePersistPillComponent } from \"./infiniverse/infiniverse-deletepersis-pill.component\"\n\nexport const ALL_TEMPLATES: PillComponentClass[] = [\n BuyRamPillComponent,\n BuyRamBytesPillComponent,\n RefundPillComponent,\n DelegateBandwidthPillComponent,\n IssuePillComponent,\n TransferPillComponent,\n VotePillComponent,\n UnDelegateBandwidthPillComponent,\n NewAccountPillComponent,\n LinkAuthPillComponent,\n UpdateAuthPillComponent,\n ClaimRewardsPillComponent,\n SetcodePillComponent,\n RegProxyPillComponent,\n ResolveBetPillComponent,\n BetReceiptPillComponent,\n ForumProposePillComponent,\n ForumPostPillComponent,\n DecenTwitterTweetPillComponent,\n\n // Custom components with logos\n SenseGenesisTransferPillComponent,\n DmailTransferPillComponent,\n PixeosClaimRewardsPillComponent,\n PixeosAddClaimPillComponent,\n KarmaTransferPillComponent,\n KarmaPowerupPillComponent,\n KarmaClaimPillComponent,\n KarmaClaimPostPillComponent,\n KarmaPowerdownPillComponent,\n KarmaRefundPillComponent,\n KarmaSetrewardsPillComponent,\n CarbonTransferPillComponent,\n CarbonIssuePillComponent,\n CarbonBurnPillComponent,\n DfuseEventPillComponent,\n\n MurmurCommentMurmurPillComponent,\n MurmurCommentYellPillComponent,\n MurmurFollowPillComponent,\n MurmurMurmurPillComponent,\n SnoopMurmurPillComponent,\n SnoopYellPillComponent,\n MurmurUnfollowPillComponent,\n MurmurWhisperPillComponent,\n MurmurYellPillComponent,\n MurmurTransferPillComponent,\n InfiniverseTransferPillComponent,\n MakeOfferPillComponent,\n MoveLandPillComponent,\n InfiniversePersistpolyPillComponent,\n InfiniverseRegisterlandPillComponent,\n InfiniverseSetlandpricePillComponent,\n InfiniverseUpdatePersistPillComponent,\n InfiniverseDeletePersistPillComponent\n]\n","import { BlockStore } from \"./block-store\"\nimport { MetricsStore } from \"./metrics-store\"\nimport { VoteStore } from \"./voter-store\"\nimport { ServiceWorkerStore } from \"./service-worker-store\"\nimport { SearchStore } from \"./search-store\"\nimport { MenuStore } from \"./menu-store\"\nimport { ContractTableStore } from \"./contract-table-store\"\nimport { TemplateStore } from \"./template-store\"\nimport { TransactionListStore } from \"./transaction-list-store\"\nimport { ALL_TEMPLATES } from \"../components/action-pills/templates/all-templates\"\n\nexport const blockStore = new BlockStore()\nexport const metricsStore = new MetricsStore()\nexport const voteStore = new VoteStore()\nexport const serviceWorkerStore = new ServiceWorkerStore()\nexport const searchStore = new SearchStore()\nexport const menuStore = new MenuStore()\nexport const contractTableStore = new ContractTableStore()\nexport const templateStore = new TemplateStore(ALL_TEMPLATES)\nexport const transactionListStore = new TransactionListStore()\n","import { Config } from \"../models/config\"\nimport {\n GenericPillComponent,\n PillComponentClass,\n} from \"../components/action-pills/templates/generic-pill.component\"\nimport { translate } from \"react-i18next\"\nimport { i18n } from \"../i18n\"\nimport { Action } from \"@dfuse/client\"\n\nexport class TemplateStore {\n registry: PillComponentClass[] = []\n\n constructor(networkPills: PillComponentClass[]) {\n this.registry = networkPills.filter(\n (networkPill: PillComponentClass) =>\n networkPill.contextForRendering().networks.includes(Config.network_id) ||\n networkPill.contextForRendering().networks.includes(\"all\")\n )\n\n this.registry.forEach((networkPill: PillComponentClass) => {\n if (networkPill.i18n) {\n const languageResources = networkPill.i18n()\n Object.keys(languageResources).forEach((lang: string) => {\n i18n.addResourceBundle(\n lang,\n \"translations\",\n { pillTemplates: languageResources[lang] },\n true\n )\n })\n }\n })\n }\n\n getComponent(action: Action): PillComponentClass | typeof GenericPillComponent {\n if (!action.data) {\n return GenericPillComponent\n }\n\n const templatedComponent = this.findTemplatedPillComponent(action)\n if (!templatedComponent) {\n return GenericPillComponent\n }\n\n if (templatedComponent.contextForRendering().needsTranslate) {\n return translate()(templatedComponent) as PillComponentClass\n }\n\n return templatedComponent\n }\n\n /**\n * We want to find the best matching pill class for this action. This means\n * we need to use a two pass algorithm.\n *\n * In the first pass, we try to find the action that specifically matches\n * both the `contract` and the `action` part. Indeed, some action could matches\n * first only the action which is shared by multiple pill. The `contract`\n * being the discriminator, hence when both matches (for example `specialaccnt`\n * and `issue`), it must takes precedences over the `issue` one that matches\n * any contract.\n *\n * Only when the first matching did not find anything, which means there is\n * not pill that matches both the contract and the action, then we try to\n * match the action alone.\n *\n * The action alone case is required for example for token contracts that\n * are not `eosio.token` so that their transfer methods is correctly templated\n * because for those, we only want to check that the action is `transfer` and that\n * the action has all required fields.\n */\n findTemplatedPillComponent(action: Action) {\n let template = this.registry.find(\n (pillClass: PillComponentClass) =>\n this.matchesBothContractAndAction(action, pillClass) &&\n this.dataHasAllRequiredFields(action.data, pillClass.requireFields)\n )\n\n if (!template) {\n template = this.registry.find(\n (pillClass: PillComponentClass) =>\n this.matchesOnlyAction(action, pillClass) &&\n this.dataHasAllRequiredFields(action.data, pillClass.requireFields)\n )\n }\n\n return template\n }\n\n matchesBothContractAndAction(action: Action, pillClass: PillComponentClass) {\n return pillClass\n .contextForRendering()\n .validActions.some(\n (candidate) => candidate.contract === action.account && candidate.action === action.name\n )\n }\n\n matchesOnlyAction(action: Action, pillClass: PillComponentClass) {\n return pillClass\n .contextForRendering()\n .validActions.some(\n (candidate) => candidate.contract === undefined && candidate.action === action.name\n )\n }\n\n dataHasAllRequiredFields(data: Record, fields: string[]) {\n // eslint-disable-next-line no-prototype-builtins\n return fields.every((field: string) => data.hasOwnProperty(field))\n }\n}\n","import * as React from \"react\"\nimport { DataLoading, DataError } from \"@dfuse/explorer\"\nimport { debugLog } from \"../../services/logger\"\nimport { TaskStatusAware } from \"mobx-task\"\nimport { observer } from \"mobx-react\"\n\n@observer\nexport class ContentLoaderComponent extends React.Component {\n renderLoading = (message: string) => {\n return \n }\n\n renderError = (error?: Error) => {\n if (error && error.name !== \"not_found\") {\n debugLog(\"An error occurred while fetching data.\", error)\n }\n\n return \n }\n\n renderContent = (args: any): React.ReactNode => {\n throw new Error(`not implemented for args: ${args}`)\n }\n\n handleRender = (service: TaskStatusAware, loadingText: string): React.ReactNode => {\n return service.match({\n rejected: this.renderError,\n pending: () => this.renderLoading(loadingText),\n resolved: this.renderContent\n })\n }\n}\n","import * as React from \"react\"\nimport { styled } from \"../../theme\"\nimport { Text } from \"../text/text.component\"\nimport { Cell, Grid } from \"../ui-grid/ui-grid.component\"\n\nconst Wrapper: React.ComponentType = styled(Grid)`\n border: 1px solid ${(props: any) => props.theme.colors.border};\n grid-auto-flow: row;\n min-width: 0px;\n`\n\nconst BorderLessWrapper: React.ComponentType = styled(Grid)`\n min-width: 0px;\n`\n\ntype Props = {\n title?: string | JSX.Element\n subtitle?: string\n overflowX?: string\n renderSideTitle?: () => JSX.Element\n}\n\nexport const Panel: React.SFC = ({\n title,\n subtitle,\n overflowX,\n renderSideTitle,\n children\n}) => {\n return (\n \n \n {title ? (\n \n \n {title}\n \n \n ) : null}\n {renderSideTitle ? (\n \n {renderSideTitle()}\n \n ) : null}\n \n {children}\n \n )\n}\n\nexport const BorderLessPanel: React.SFC = ({\n title,\n subtitle,\n overflowX,\n renderSideTitle,\n children\n}) => {\n return (\n \n \n {title ? (\n \n \n {title}\n \n \n ) : null}\n {renderSideTitle ? (\n \n {renderSideTitle ? renderSideTitle() : null}\n \n ) : null}\n \n {children}\n \n )\n}\n","import { ActionTrace, Action } from \"@dfuse/client\"\n\nexport enum TransactionReceiptStatus {\n EXECUTED = \"executed\",\n SOFT_FAIL = \"soft_fail\",\n HARD_FAIL = \"hard_fail\",\n DELAYED = \"delayed\",\n EXPIRED = \"expired\",\n PENDING = \"pending\",\n CANCELED = \"canceled\"\n}\n\nexport interface DeferredOperation {\n transaction_id: string\n action_index: number\n by_transaction_id?: string\n operation: string\n sender: string\n sender_id: string\n payer: string\n published_at: string\n delay_until: string\n expiration_at: string\n related_transactions: string[]\n}\n\nexport interface TraceLevel {\n index: number\n actionTrace: ActionTrace\n group: number\n level: number\n}\n\n/**\n * Represents a transaction as it passes through the P2P channel, not yet\n * executed since not part of a block.\n */\nexport interface Transaction {\n id: string\n block_num: number\n block_id: string\n producer: string\n ref_block_num: number\n ref_block_prefix: number\n max_net_usage_words: number\n delay_sec: number\n expiration: string\n max_cpu_usage_ms: number\n context_free_actions: Action[]\n actions: Action[]\n transaction_extensions: any[]\n signatures: string[]\n public_keys: string[]\n irreversible: boolean\n}\n\n/**\n * Represents a transaction action aggregate to be displayed in the list.\n * This models aggregates is an action with extended information from the\n * transaction itself (id, block_num, date)\n */\nexport interface TransactionAction extends Action {\n action_num: string\n cfa: boolean\n}\n\nexport enum RAMOpTypes {\n CREATE_TABLE = \"create_table\",\n DEFERRED_TRX_ADD = \"deferred_trx_add\",\n DEFERRED_TRX_CANCEL = \"deferred_trx_cancel\",\n DEFERRED_TRX_PUSHED = \"deferred_trx_pushed\",\n DEFERRED_TRX_REMOVED = \"deferred_trx_removed\",\n DELETEAUTH = \"deleteauth\",\n LINKAUTH = \"linkauth\",\n NEWACCOUNT = \"newaccount\",\n PRIMARY_INDEX_ADD = \"primary_index_add\",\n PRIMARY_INDEX_REMOVE = \"primary_index_remove\",\n PRIMARY_INDEX_UPDATE = \"primary_index_update\",\n PRIMARY_INDEX_UPDATE_ADD_NEW_PAYER = \"primary_index_update_add_new_payer\",\n PRIMARY_INDEX_UPDATE_REMOVE_OLD_PAYER = \"primary_index_update_remove_old_payer\",\n REMOVE_TABLE = \"remove_table\",\n SECONDARY_INDEX_ADD = \"secondary_index_add\",\n SECONDARY_INDEX_REMOVE = \"secondary_index_remove\",\n SECONDARY_INDEX_UPDATE_ADD_NEW_PAYER = \"secondary_index_update_add_new_payer\",\n SECONDARY_INDEX_UPDATE_REMOVE_OLD_PAYER = \"secondary_index_update_remove_old_payer\",\n SETABI = \"setabi\",\n SETCODE = \"setcode\",\n UNLINKAUTH = \"unlinkauth\",\n UPDATEAUTH_CREATE = \"updateauth_create\",\n UPDATEAUTH_UPDATE = \"updateauth_update\"\n}\n\nexport function computeTransactionTrustPercentage(\n blockNum: number | undefined,\n headBlockNum: number,\n lastIrreversibleBlockNum: number\n) {\n if (blockNum === undefined) return 0.0\n if (lastIrreversibleBlockNum >= blockNum) return 1.0\n\n const blockPassedCount = headBlockNum - blockNum\n if (blockPassedCount >= 360) {\n return 0.9999\n }\n\n if (blockPassedCount < 4) {\n return blockPassedCount / 4\n }\n\n if (blockPassedCount === 4) {\n return 0.99\n }\n\n return (blockPassedCount / 360) * 0.01 + 0.99\n}\n","import { t } from \"i18next\"\nimport { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { formatPercentage } from \"@dfuse/explorer\"\nimport { styled } from \"../../theme\"\nimport { computeTransactionTrustPercentage } from \"../../models/transaction\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { LoadingOutlined } from \"@ant-design/icons\"\n\nconst MiddleChild: React.ComponentType = styled(Cell)`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n fill: #eee;\n`\n\nconst ProgressSpinner: React.ComponentType = styled(LoadingOutlined)`\n color: rgba(0, 0, 0, 0.7) !important;\n transform: scale(0.7);\n`\n\nconst ProgressText: React.ComponentType = styled(Text)`\n font-family: Roboto Condensed;\n text-align: center;\n`\n\nconst ProgressSvg: React.ComponentType = styled.svg`\n circle {\n transition: stroke-dashoffset 0s linear;\n stroke: rgba(255, 255, 255, 0.2);\n stroke-width: 8px;\n fill: #eee;\n }\n\n .progress-bar {\n stroke: ${(props) => props.theme.colors.ternary};\n }\n\n .progress-completed {\n stroke: #2a2a36;\n }\n`\n\ninterface Props {\n blockNum: number\n headBlockNum: number\n lastIrreversibleBlockNum: number\n}\n\n@observer\nexport class BlockProgressPie extends React.Component {\n renderCircle(\n className: string,\n radius: number,\n offsetX: number,\n offsetY: number,\n dashArray: number,\n dashOffset: number\n ) {\n return (\n \n )\n }\n\n renderProgressCircle(completion: number) {\n const radius = 35\n const diameter = radius * 2\n const offsetX = 50\n const offsetY = 50\n const dashArray = Math.PI * diameter\n const dashBarOffset = (1.0 - completion) * dashArray\n\n let completedCircle: JSX.Element | null = null\n if (completion >= 1.0) {\n completedCircle = this.renderCircle(\"progress-completed\", 44, offsetX, offsetY, 0, 0)\n }\n\n return (\n \n {completedCircle}\n {this.renderCircle(\"progress-bg\", radius, offsetX, offsetY, dashArray, 0)}\n {this.renderCircle(\"progress-bar\", radius, offsetX, offsetY, dashArray, dashBarOffset)}\n \n )\n }\n\n renderProgressLoading() {\n return \n }\n\n renderProgressTrustRate(completion: number) {\n return (\n
\n \n {formatPercentage(completion, 2)}\n \n \n {t(\"transaction.progressCircle.confidence\").toLocaleUpperCase()}\n \n
\n )\n }\n\n renderIrreversibleImage() {\n return \"irreversible\"\n }\n\n isDataProvided() {\n return this.props.blockNum && this.props.headBlockNum && this.props.lastIrreversibleBlockNum\n }\n\n renderProgressInfo(percentage: number) {\n if (!this.isDataProvided()) {\n return this.renderProgressLoading()\n }\n\n if (percentage < 0.9999) {\n return this.renderProgressTrustRate(percentage)\n }\n\n return this.renderIrreversibleImage()\n }\n\n render() {\n const percentage = computeTransactionTrustPercentage(\n this.props.blockNum,\n this.props.headBlockNum,\n this.props.lastIrreversibleBlockNum\n )\n\n return (\n \n {this.renderProgressInfo(percentage)}\n {this.renderProgressCircle(percentage)}\n \n )\n }\n}\n","import moment from \"moment-timezone\"\n\n// FIXME: Should we move all this somewhere else?\nconst guessedTz = moment.tz.guess()\nconst shortTimezoneString = moment.tz(guessedTz).format(\"z\")\n\n// Hackish as we customize the locale format ourself, but seems good enough for now\nmoment.locales().forEach((locale: string) =>\n moment.updateLocale(locale, {\n // @ts-ignore The `longDateFormat` spec can received a single key, TypeDefs does not allow it\n longDateFormat: {\n lll: moment\n .localeData(locale)\n .longDateFormat(\"lll\")\n .replace(/:mm /, \":mm:ss \")\n }\n })\n)\n\nexport function formatDateFromString(date: string | number | Date, utc: boolean): string {\n if (utc) {\n return moment.utc(date, \"YYYY-MM-DD hh:mm:ss Z\").format(\"YYYY-MM-DDTHH:mm:ss [UTC]\")\n }\n\n return `${moment\n .utc(date, \"YYYY-MM-DD hh:mm:ss Z\")\n .local()\n .format(\"lll\")} ${shortTimezoneString}`\n}\n\nexport function blockTimeEstimate(headBlockNumber: number, blockNum: number, utc: boolean) {\n moment.tz.guess()\n\n const secondsAgo = (headBlockNumber - blockNum) / 2\n const roughBlockTime = parseInt(moment().format(\"X\"), 10) - secondsAgo\n\n const date = moment.unix(roughBlockTime)\n if (utc) {\n return moment.utc(date).format(\"LLL UTC\")\n }\n return date.format(\"lll\")\n}\n","import * as React from \"react\"\nimport moment from \"moment\"\nimport { Text } from \"../text/text.component\"\nimport { formatDateFromString } from \"../../helpers/moment.helpers\"\nimport { Cell } from \"../ui-grid/ui-grid.component\"\n\ninterface AgeProps {\n date: string | Date\n color?: string\n}\n\nexport const Age: React.SFC = ({ date, color }) => (\n \n {formatDateFromString(date, false)}\n  \n \n ({moment.utc(date, \"YYYY-MM-DD hh:mm:ss Z\").fromNow()})\n \n \n)\n","import * as React from \"react\"\nimport { Cell } from \"../ui-grid/ui-grid.component\"\nimport { theme, styled } from \"../../theme\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faCheck, faBan, faClock } from \"@fortawesome/free-solid-svg-icons\"\n\nconst Container: React.ComponentType = styled(Cell)`\n width: 70px;\n height: 70px;\n position: relative;\n padding: 3px;\n`\n\nconst CircleContainer: React.ComponentType = styled(Cell)`\n width: 64px;\n height: 64px;\n border-radius: 32px;\n`\n\nconst CircleBorder: React.ComponentType = styled(Cell)`\n border: 8px solid ${(props: any) => props.borderColor};\n border-radius: 35px;\n width: 70px;\n height: 70px;\n position: absolute;\n top: 0;\n left: 0;\n`\n\nconst FontContainer: React.ComponentType = styled(Cell)`\n position: absolute;\n top: 21px;\n left: 21px;\n`\n\nconst BanContainer: React.ComponentType = styled(Cell)`\n position: absolute;\n top: 0px;\n left: 0px;\n`\n\nexport enum StatusBadgeVariant {\n BAN = \"ban\",\n CLOCK = \"clock\",\n CHECK = \"check\"\n}\n\nexport const StatusBadge: React.SFC<{\n variant: StatusBadgeVariant\n}> = ({ variant }) => {\n let color = theme.colors.statusBadgeCheck\n let background = theme.colors.statusBadgeCheckBg\n let icon: any = faCheck\n let size: any = \"2x\"\n let IconContainer = FontContainer\n\n switch (variant) {\n case StatusBadgeVariant.BAN:\n color = theme.colors.statusBadgeBan\n background = theme.colors.statusBadgeBanBg\n icon = faBan\n size = \"5x\"\n IconContainer = BanContainer\n break\n case StatusBadgeVariant.CLOCK:\n color = theme.colors.statusBadgeClock\n background = theme.colors.statusBadgeClockBg\n icon = faClock\n break\n case StatusBadgeVariant.CHECK:\n color = theme.colors.statusBadgeCheck\n background = theme.colors.statusBadgeCheckBg\n icon = faCheck\n break\n default:\n break\n }\n\n return (\n \n \n {variant === \"ban\" ? null : }\n \n \n \n \n )\n}\n","import { TransactionReceiptStatus } from \"../models/transaction\"\nimport { StatusBadgeVariant } from \"../atoms/status-badge/status-badge\"\nimport { RAMOp } from \"@dfuse/client\"\nimport { ListTransactionsResponse } from \"../clients/websocket/eosws\"\n\nexport function getTransactionStatusColor(status: TransactionReceiptStatus): string {\n if (\n status === TransactionReceiptStatus.HARD_FAIL ||\n status === TransactionReceiptStatus.SOFT_FAIL ||\n status === TransactionReceiptStatus.EXPIRED ||\n status === TransactionReceiptStatus.CANCELED\n ) {\n return \"statusBadgeBan\"\n }\n\n if (status === TransactionReceiptStatus.DELAYED) {\n return \"statusBadgeClock\"\n }\n\n if (status === TransactionReceiptStatus.EXECUTED) {\n return \"statusBadgeCheck\"\n }\n\n return \"text\"\n}\n\nexport function getStatusBadgeVariant(status: TransactionReceiptStatus): StatusBadgeVariant | null {\n if (\n status === TransactionReceiptStatus.HARD_FAIL ||\n status === TransactionReceiptStatus.SOFT_FAIL ||\n status === TransactionReceiptStatus.EXPIRED ||\n status === TransactionReceiptStatus.CANCELED\n ) {\n return StatusBadgeVariant.BAN\n }\n\n if (status === TransactionReceiptStatus.DELAYED) {\n return StatusBadgeVariant.CLOCK\n }\n\n if (status === TransactionReceiptStatus.EXECUTED) {\n return StatusBadgeVariant.CHECK\n }\n\n return null\n}\n\nexport function summarizeRamOps(ramops: RAMOp[]): RAMOp[] {\n const ramOpsSummary: { [key: string]: RAMOp } = {}\n Object.assign([], ramops).forEach((ramop: RAMOp) => {\n const reference = ramOpsSummary[ramop.payer]\n if (!reference) {\n ramOpsSummary[ramop.payer] = { ...ramop }\n return\n }\n\n ramOpsSummary[ramop.payer].delta += ramop.delta\n if (ramOpsSummary[ramop.payer].action_idx < ramop.action_idx) {\n ramOpsSummary[ramop.payer].usage = ramop.usage\n }\n })\n\n return Object.keys(ramOpsSummary).map((key: string) => {\n return ramOpsSummary[key]\n })\n}\n\nexport function isTransactionResponseEmpty(response: ListTransactionsResponse) {\n return !response || !response.transactions || response.transactions.length === 0\n}\n","import { styled } from \"../../theme\"\nimport * as React from \"react\"\n\nexport const UiHrDotted: React.ComponentType = styled.hr`\n border: none;\n border-bottom: 1px dotted ${(props) => props.theme.colors.grey4};\n`\n\nexport const UiHrSpaced: React.ComponentType = styled.hr`\n border: none;\n border-bottom: 1px solid ${(props) => props.theme.colors.grey4};\n margin-top: 30px;\n margin-bottom: 30px;\n`\n\nexport const UiHrDense: React.ComponentType = styled.hr`\n margin: 0;\n border: none;\n border-bottom: 1px dotted ${(props) => props.theme.colors.grey6};\n`\n","import Modal from \"@material-ui/core/Modal/Modal\"\nimport * as React from \"react\"\nimport { Cell, Grid } from \"../ui-grid/ui-grid.component\"\nimport { Text } from \"../text/text.component\"\nimport { styled } from \"../../theme\"\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\ninterface Props {\n opener: JSX.Element | string\n headerTitle?: JSX.Element | string\n onOpen?: () => void\n opened?: boolean\n}\n\ninterface State {\n open: boolean\n}\n\nconst HoverableIcon = styled(FontAwesomeIcon)`\n &:hover {\n cursor: pointer;\n color: ${(props) => props.theme.colors.linkHover};\n }\n`\n\nconst ModalContainer: React.ComponentType = styled(Grid)`\n position: relative;\n top: 8.5vh;\n\n @media (min-width: 767px) {\n top: 100px;\n max-height: calc(90vh - 100px);\n }\n\n margin-left: auto;\n margin-right: auto;\n overflow-y: scroll;\n width: 95vw;\n max-width: 800px;\n height: auto;\n max-height: 90vh;\n\n background-color: ${(props) => props.theme.colors.primary};\n box-shadow: 1px 2px 5px 1px ${(props) => props.theme.colors.grey7};\n outline: none;\n`\n\nconst ModalHeader: React.ComponentType = styled(Grid)`\n grid-template-columns: auto 20px;\n width: 100%;\n height: auto;\n background-color: white;\n border-bottom: 1px solid ${(props) => props.theme.colors.grey4};\n`\n\nexport class UiModal extends React.Component {\n constructor(props: Props) {\n super(props)\n this.state = { open: this.props.opened !== undefined ? this.props.opened : false }\n }\n\n componentDidUpdate(prevProps: Props): void {\n if (\n this.props.opened !== undefined &&\n this.state.open !== this.props.opened &&\n this.props.opened !== prevProps.opened\n ) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ open: this.props.opened })\n }\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n if (this.props.onOpen) {\n this.props.onOpen()\n }\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n render() {\n return (\n \n \n {this.props.opener}\n \n\n \n \n {this.props.headerTitle ? (\n \n {this.props.headerTitle}\n \n \n \n \n ) : null}\n \n {this.props.children}\n \n \n \n \n )\n }\n}\n","import { t } from \"i18next\"\nimport { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { MonospaceTextLink, WrappingText } from \"../../../atoms/text-elements/misc\"\nimport {\n DetailLine,\n formatBytes,\n formatDateTime,\n formatMicroseconds,\n formatNumber,\n formatTransactionID,\n LONGDASH,\n NBSP,\n secondsToTime,\n JsonWrapper\n} from \"@dfuse/explorer\"\n\nimport { ExtDTrxOp, Authorization } from \"@dfuse/client\"\nimport {\n computeTransactionTrustPercentage,\n TransactionReceiptStatus\n} from \"../../../models/transaction\"\nimport { Links } from \"../../../routes\"\nimport { LinkStyledText, Text, TextLink } from \"../../../atoms/text/text.component\"\nimport { Cell, Grid } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport { BlockProgressPie } from \"../../blocks/block-progress-pie\"\nimport { metricsStore } from \"../../../stores\"\nimport { formatDateFromString } from \"../../../helpers/moment.helpers\"\nimport { Age } from \"../../../atoms/age/age.component\"\nimport { StatusBadge } from \"../../../atoms/status-badge/status-badge\"\nimport {\n getStatusBadgeVariant,\n getTransactionStatusColor\n} from \"../../../helpers/transaction.helpers\"\nimport { translate, Trans } from \"react-i18next\"\n\nimport { UiHrDotted } from \"../../../atoms/ui-hr/ui-hr\"\nimport { UiModal } from \"../../../atoms/ui-modal/ui-modal\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faPlusCircle } from \"@fortawesome/free-solid-svg-icons\"\nimport { TransactionLifecycleWrap } from \"../../../services/transaction-lifecycle\"\nimport { AutorizationBox } from \"../../../components/authorization-box/authorization-box.component\"\nimport { SearchShortcut } from \"../../../components/search-shortcut/search-shortcut\"\n\ninterface Props {\n gridRow?: any\n lifecycleWrap: TransactionLifecycleWrap\n}\n\n@observer\nclass BaseTransactionDetailHeader extends React.Component {\n get isStale() {\n return !this.props.lifecycleWrap.lifecycle.execution_irreversible && this.trustPercentage >= 1\n }\n\n get hasRecentMetrics() {\n return (\n metricsStore.lastIrreversibleBlockNum > 0 &&\n metricsStore.headBlockNum > this.props.lifecycleWrap.blockNum\n )\n }\n\n get trustPercentage() {\n if (metricsStore.lastIrreversibleBlockNum <= 0) {\n return 0.0\n }\n return computeTransactionTrustPercentage(\n this.props.lifecycleWrap.blockNum,\n metricsStore.headBlockNum,\n metricsStore.lastIrreversibleBlockNum\n )\n }\n\n get blockHeader() {\n return this.props.lifecycleWrap.lifecycle.execution_block_header\n }\n\n extractException(): any | undefined {\n const { status, executionTrace } = this.props.lifecycleWrap\n if (!executionTrace) return undefined\n if (\n status !== TransactionReceiptStatus.SOFT_FAIL &&\n status !== TransactionReceiptStatus.HARD_FAIL\n ) {\n return undefined\n }\n\n if (executionTrace.except) {\n return executionTrace.except\n }\n\n return undefined\n }\n\n renderTransactionStatusValue(): React.ReactChild {\n const { status } = this.props.lifecycleWrap\n const exception = this.extractException()\n const color = getTransactionStatusColor(status)\n\n return (\n \n \n {t(`transaction.status.${status}`)}\n \n {this.renderIrreversibleText()}\n {exception ? this.renderException(exception) : null}\n \n )\n }\n\n renderIrreversibleText() {\n if (!this.props.lifecycleWrap.lifecycle.execution_irreversible && this.trustPercentage >= 1) {\n return null\n }\n\n if (this.trustPercentage >= 1) {\n return null\n }\n\n if (this.props.lifecycleWrap.blockNum && this.props.lifecycleWrap.blockNum > 0) {\n if (!this.hasRecentMetrics) {\n return null\n }\n\n return (\n \n {t(\"transaction.detailPanel.statuses.accepted\")} (\n \n {metricsStore.headBlockNum - this.props.lifecycleWrap.blockNum || 0}\n {t(\"transaction.detailPanel.statuses.blockDeep\")}\n \n )\n \n )\n }\n\n return null\n }\n\n renderUsageValue(value: number | undefined, formatter: (value: any) => string) {\n return this.renderValue(value, (rawValue: number) => {\n if (rawValue <= 0) return t(\"transaction.detailPanel.noUsage\")\n\n return formatter(rawValue)\n })\n }\n\n renderExpirationDate(expirationDate?: Date) {\n return this.renderValue(expirationDate, formatDateTime)\n }\n\n renderCpuUsage(cpuUsage?: number) {\n return this.renderUsageValue(cpuUsage, formatMicroseconds)\n }\n\n renderNetworkUsage(networkUsage?: number) {\n return this.renderUsageValue(networkUsage || -1, formatBytes)\n }\n\n renderAuthorizations() {\n if (this.props.lifecycleWrap.executionTrace) {\n const { authorizations } = this.props.lifecycleWrap\n return (\n \n {authorizations.map((auth: Authorization, index: number) => {\n return this.renderAuthorization(auth, index === authorizations.length - 1)\n })}\n \n )\n }\n\n return null\n }\n\n renderAuthorization(auth: Authorization, isLast: boolean) {\n return (\n \n \n \n )\n }\n\n renderSignedBy() {\n return (this.props.lifecycleWrap.lifecycle.pub_keys || []).map(\n (publicKey: string, index: number) => {\n const query = `(data.auth.keys.key:${publicKey} OR data.active.keys.key:${publicKey} OR data.owner.keys.key:${publicKey})`\n return (\n \n \n {publicKey}\n \n \n )\n }\n )\n }\n\n renderValue(value: any | undefined, formatter: (value: any) => string) {\n if (value === undefined) {\n return \"\"\n }\n\n return {formatter(value)}\n }\n\n renderBlockValue(): React.ReactChild {\n if (this.props.lifecycleWrap.noBlockInfo) {\n return {t(\"transaction.detailPanel.producer.unknown\")}\n }\n return (\n \n {this.props.lifecycleWrap.blockNum > 0\n ? formatNumber(this.props.lifecycleWrap.blockNum)\n : t(\"transaction.detailPanel.producer.unknown\")}\n \n )\n }\n\n renderBlockStatusValue = (): JSX.Element => {\n if (!this.props.lifecycleWrap.lifecycle.execution_irreversible && this.trustPercentage >= 1) {\n return {t(\"block.stale\")}\n }\n\n if (this.trustPercentage >= 1) {\n return (\n \n {t(\"block.irreversible\")}\n \n )\n }\n return {t(\"block.reversible\")}\n }\n\n renderProducerValue(): React.ReactChild {\n if (!this.blockHeader || this.blockHeader.producer === \"\") {\n return \n }\n\n return (\n \n \n {this.blockHeader!.producer}\n \n \n )\n }\n\n renderTimeStamp(timestamp: string) {\n if (!timestamp || timestamp === \"\") {\n return null\n }\n\n return (\n
\n {formatDateFromString(timestamp, false)}\n
\n )\n }\n\n renderBlockDetail() {\n if (this.props.lifecycleWrap.blockId) {\n return (\n \n \n {this.renderBlockValue()}\n \n {this.props.lifecycleWrap.blockTimestamp ? (\n \n \n \n ) : null}\n \n \n {this.props.lifecycleWrap.blockId}\n \n \n \n {this.renderBlockStatusValue()}\n \n {this.renderProducerValue()}\n \n )\n }\n\n return null\n }\n\n renderDeferredTemplate(ref: string, i18nKey: string) {\n const refObject: ExtDTrxOp = this.props.lifecycleWrap.lifecycle[ref]\n\n const i18nKeyLabel = `transaction.deferred.${i18nKey}.label`\n let i18nKeyContent = `transaction.deferred.${i18nKey}.content`\n\n if (refObject) {\n if (\n refObject.src_trx_id === this.props.lifecycleWrap.lifecycle.id &&\n refObject.op !== \"PUSH_CREATE\"\n ) {\n return null\n }\n\n if (i18nKey === \"creationMethod\") {\n i18nKeyContent = `transaction.deferred.${i18nKey}.${refObject.op}`\n }\n\n return (\n \n \n \n {formatTransactionID(refObject.src_trx_id).join(\"\")}\n ,\n \n {formatNumber(refObject.block_num)}\n \n ]}\n />\n \n \n )\n }\n return null\n }\n\n renderDelayedFor() {\n if (\n this.props.lifecycleWrap.transaction &&\n this.props.lifecycleWrap.transaction.delay_sec > 0\n ) {\n return (\n \n {secondsToTime(this.props.lifecycleWrap.lifecycle.transaction!.delay_sec)}\n \n )\n }\n return null\n }\n\n renderDeferredInfo() {\n return [\n this.renderDelayedFor(),\n this.renderDeferredTemplate(\"created_by\", \"createdBy\"),\n this.renderDeferredTemplate(\"canceled_by\", \"canceledBy\"),\n this.renderDeferredTemplate(\"created_by\", \"creationMethod\")\n ]\n }\n\n renderException(except: any) {\n const message = except.message as string\n\n if (message.length > 0) {\n return [\n \n :{NBSP}\n {message}\n ,\n \n {NBSP}\n {LONGDASH}\n {NBSP}\n \n {t(\"transaction.detailPanel.fullTrace\")}{\" \"}\n \n \n
\n }\n >\n \n {JSON.stringify(except, null, \" \")}\n \n \n ]\n }\n return null\n }\n\n renderFailureTraceDetail() {\n if (\n !this.props.lifecycleWrap.executionTrace ||\n !this.props.lifecycleWrap.executionTrace.failed_dtrx_trace\n ) {\n return null\n }\n\n const i18nKeyLabel = `transaction.deferred.triggeredBy.label`\n const i18nKeyContent = `transaction.deferred.triggeredBy.content`\n\n const failureTrace = this.props.lifecycleWrap.executionTrace.failed_dtrx_trace\n\n return (\n \n \n {formatTransactionID(failureTrace.id).join(\"\")}\n ,\n \n {formatNumber(failureTrace.block_num)}\n \n ]}\n />\n \n )\n }\n\n renderExecutionDetails(): (JSX.Element | null)[] {\n const { executionTrace } = this.props.lifecycleWrap\n if (!executionTrace) {\n return []\n }\n\n return [\n this.renderFailureTraceDetail(),\n\n \n {this.renderCpuUsage(executionTrace.receipt && executionTrace.receipt.cpu_usage_us)}\n ,\n\n \n {this.renderNetworkUsage(\n executionTrace.receipt && executionTrace.receipt.net_usage_words * 8\n )}\n \n ]\n }\n\n renderTransactionDetail() {\n return (\n \n \n \n {this.renderTransactionStatusValue()}\n \n\n {this.renderDeferredInfo()}\n {this.renderExecutionDetails()}\n \n {this.renderAuthorizations()}\n \n \n {this.renderSignedBy()}\n \n \n \n )\n }\n\n renderStatusBadge() {\n const variant = getStatusBadgeVariant(this.props.lifecycleWrap.status)\n return variant ? : null\n }\n\n renderBlockProgressPie() {\n return (\n \n \n \n )\n }\n\n renderBlockHeader() {\n return [\n \n \n ,\n \n \n \n {this.renderBlockDetail()}\n \n\n \n {this.props.lifecycleWrap.blockNum > 0 && !this.isStale && this.hasRecentMetrics\n ? this.renderBlockProgressPie()\n : null}\n \n \n \n ]\n }\n\n render() {\n return (\n \n \n {this.renderTransactionDetail()}\n \n \n {this.renderStatusBadge()}\n \n \n \n {this.props.lifecycleWrap.lifecycle.execution_block_header\n ? this.renderBlockHeader()\n : null}\n \n )\n }\n}\n\nexport const TransactionDetailHeader = translate()(BaseTransactionDetailHeader)\n","import * as React from \"react\"\nimport { styled } from \"../../theme\"\nimport { Cell, Grid } from \"../ui-grid/ui-grid.component\"\nimport { Text } from \"../text/text.component\"\n\nconst Container: React.ComponentType = styled(Cell)`\n background-color: ${(props) => props.theme.colors.banner};\n border-style: solid;\n border-color: ${(props) => props.theme.colors.bleu6};\n margin-bottom: 1px;\n`\n\nexport interface BannerContainerProps {\n title: string\n children?: any\n content?: string | JSX.Element\n rest?: any\n}\n\nexport const PanelTitleBanner: React.SFC = ({\n title,\n content,\n children,\n ...rest\n}) => (\n \n \n \n \n {title}\n \n \n \n \n {content}\n \n \n \n {children}\n \n \n \n)\n","import * as React from \"react\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { styled } from \"../../theme\"\nimport { width, space } from \"styled-system\"\n\nconst ContentWrapper: React.ComponentType = styled.div`\n margin: 0 auto;\n ${width};\n`\nconst OuterBannerWrapper: React.ComponentType = styled.div`\n ${space};\n width: 100%;\n\n background-color: ${(props) => props.theme.colors.banner};\n`\n\nexport const PageContainer: React.SFC<{}> = ({ children }) => {\n const childrenArray = React.Children.toArray(children)\n\n if (childrenArray.length === 1) {\n return (\n \n {childrenArray[0]}\n \n )\n }\n\n return (\n \n \n \n {childrenArray[0]}\n \n \n \n {childrenArray[1]}\n \n \n )\n}\n","import * as React from \"react\"\nimport { createStyles, WithStyles, withStyles } from \"@material-ui/core/styles\"\nimport Tabs from \"@material-ui/core/Tabs\"\nimport Tab from \"@material-ui/core/Tab\"\nimport { Cell } from \"../ui-grid/ui-grid.component\"\nimport { styled } from \"../../theme\"\nimport { FontSizeProps } from \"styled-system\"\nimport { Text } from \"../text/text.component\"\n\nconst Wrapper: React.ComponentType = styled(Cell)`\n border: 1px solid ${(props) => props.theme.colors.border};\n grid-auto-flow: row;\n min-width: 0px;\n min-height: 200px;\n`\n\nconst styles = () =>\n createStyles({\n root: {\n fontSize: \"30px !important\",\n border: \"1px solid #d3d7dd\",\n backgroundColor: \"white\"\n },\n tabsRoot: {\n backgroundColor: \"#dce1e8\",\n height: \"48px\"\n },\n tabsIndicator: {\n display: \"none\"\n },\n wrapper: {\n alignItems: \"flex-start !important\",\n paddingLeft: \"10px\",\n paddingTop: \"10px\",\n \"&:hover\": {\n cursor: \"auto !important\"\n }\n },\n tabRoot: {\n maxWidth: \"none\",\n \"&:last-child\": {\n borderRight: \"none !important\"\n },\n\n borderRight: \"1px solid #d3d7dd\",\n borderBottom: \"1px solid #d3d7dd\",\n textTransform: \"initial\",\n minWidth: 72,\n fontWeight: \"normal\",\n fontFamily: [\"Roboto\"].join(\",\"),\n \"&:hover\": {\n color: \"#6d6ae8\",\n opacity: 1\n },\n \"&$tabSelected\": {\n color: \"#6d6ae8\",\n fontWeight: 500,\n borderBottom: \"none !important\"\n },\n \"&:focus\": {\n color: \"#6d6ae8\"\n },\n color: \"#8d939a\"\n },\n selected: {\n border: \"none !important\"\n },\n tabSelected: {\n backgroundColor: \"white\",\n borderRight: \"1px solid #d3d7dd\",\n borderBottom: \"1px solid white\"\n }\n })\n\ninterface LabelValue {\n label: string\n value: string\n}\n\ninterface Props extends FontSizeProps {\n tabData: LabelValue[]\n onSelect: (key: string) => void\n selected?: string\n}\n\nconst decorate = withStyles(styles)\n\nexport const TabbedPanel = decorate(\n class extends React.Component, { value: number }> {\n constructor(props: Props & WithStyles) {\n super(props)\n this.state = { value: this.getIndexSelected() }\n }\n\n getIndexSelected = () => {\n const index = this.props.tabData.findIndex((entry) => entry.label === this.props.selected)\n return index === -1 ? 0 : index\n }\n\n componentDidUpdate(prevProps: Props): void {\n if (prevProps.tabData.length !== this.props.tabData.length && this.props.selected) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ value: this.getIndexSelected() })\n }\n }\n\n handleChange = (_: React.ChangeEvent<{}>, value: number) => {\n this.setState({ value })\n }\n\n renderLabel = (item: LabelValue): JSX.Element => {\n return (\n \n {item.value}\n \n )\n }\n\n renderTab = (item: LabelValue, index: number) => {\n const { classes } = this.props\n\n const appliedClasses: any = { root: classes.tabRoot, selected: classes.tabSelected }\n if (this.props.tabData.length <= 1) {\n appliedClasses.wrapper = classes.wrapper\n }\n\n return (\n this.props.onSelect(item.label)}\n disableRipple={true}\n classes={classes ? appliedClasses : {}}\n label={this.renderLabel(item)}\n style={{ width: \"100%\", textAlign: \"left\" }}\n />\n )\n }\n\n renderTabs() {\n return this.props.tabData.map((item, index) => this.renderTab(item, index))\n }\n\n render() {\n const { classes } = this.props\n const { value } = this.state\n\n return (\n \n \n {this.renderTabs()}\n \n {this.props.children}\n \n )\n }\n }\n)\n","import * as React from \"react\"\nimport { getHeaderAndTitle } from \"../../helpers/action.helpers\"\nimport { ActionTrace, Action, DbOp, RAMOp, TableOp } from \"@dfuse/client\"\nimport { PageContext } from \"../../models/core\"\nimport { templateStore } from \"../../stores\"\nimport { TraceInfo } from \"../../models/pill-templates\"\n\ninterface Props {\n action: Action\n disabled?: boolean\n ramops?: RAMOp[]\n dbops?: DbOp[]\n pageContext?: PageContext\n}\n\nexport const ActionPill: React.SFC = ({ action, disabled, pageContext, ramops, dbops }) => {\n const headerParams = getHeaderAndTitle(action, action.account)\n const ConcreteComponent = templateStore.getComponent(action)\n\n return (\n \n )\n}\n\ninterface TraceProps {\n actionTrace: ActionTrace\n disabled?: boolean\n ramops?: RAMOp[]\n dbops?: DbOp[]\n tableops?: TableOp[]\n pageContext?: PageContext\n highlighted?: boolean\n}\n\nexport const ActionTracePill: React.SFC = ({\n ramops,\n dbops,\n tableops,\n actionTrace,\n disabled,\n pageContext,\n highlighted\n}) => {\n const action = actionTrace.act\n const headerParams = getHeaderAndTitle(action, actionTrace.receipt.receiver)\n const ConcreteComponent = templateStore.getComponent(action)\n\n const traceInfo: TraceInfo = {\n inline_traces: actionTrace.inline_traces || [],\n receiver: actionTrace.receipt.receiver\n }\n\n return (\n \n )\n}\n","import * as React from \"react\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport { theme, styled } from \"../../theme\"\nimport { faClock, faBan } from \"@fortawesome/free-solid-svg-icons\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { formatTransactionID } from \"@dfuse/explorer\"\nimport { Links } from \"../../routes\"\nimport { MonospaceTextLink } from \"../../atoms/text-elements/misc\"\nimport { translate, Trans } from \"react-i18next\"\n\nconst Container: React.ComponentType = styled(Grid)`\n height: 26px;\n`\n\nconst Header: React.ComponentType = styled(Cell)`\n padding: 5px;\n width: 40px;\n height: 26px;\n border: 1px solid ${(props) => props.theme.colors.grey6};\n border-left: 6px solid ${(props) => props.theme.colors.grey6};\n`\n\nconst Content: React.ComponentType = styled(Cell)`\n margin-right: 30px;\n width: calc(100% - 35px);\n height: 26px;\n padding-left: 10px;\n padding-right: 5px;\n border-right: 1px solid ${(props) => props.theme.colors.grey4};\n border-top: 1px solid ${(props) => props.theme.colors.grey4};\n border-bottom: 1px solid ${(props) => props.theme.colors.grey4};\n background-color: white;\n`\n\nexport const BaseDeferredLink: React.SFC<{\n transactionId: string\n operation: string\n delay: string\n}> = ({ transactionId, operation, delay }) => {\n const bg = theme.colors.grey2\n const color = theme.colors.grey6\n let icon: any = faClock\n if (operation === \"CREATE\" || operation === \"MODIFY_CREATE\") {\n icon = faClock\n } else if (operation === \"CANCEL\" || operation === \"MODIFY_CANCEL\") {\n icon = faBan\n }\n\n const i18nKey =\n operation === \"CREATE\" || operation === \"MODIFY_CREATE\" || operation === \"PUSH_CREATE\"\n ? \"transaction.deferred.create\"\n : \"transaction.deferred.cancel\"\n\n return (\n \n
\n \n \n \n
\n \n \n \n Created\n ,\n \n {formatTransactionID(transactionId).join(\"\")}\n ,\n \n {delay}\n \n ]}\n />\n \n \n
\n )\n}\n\nexport const DeferredLink = translate()(BaseDeferredLink)\n","import * as React from \"react\"\nimport { DeferredOperation } from \"../../models/transaction\"\nimport { ActionPill } from \"../action-pills/action-pill.component\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { DeferredLink } from \"../deferred-link/deferred-link\"\nimport { DbOp, RAMOp, Action } from \"@dfuse/client\"\n\ninterface Props {\n actions: Action[]\n deferredOperations?: DeferredOperation[]\n ramops?: RAMOp[]\n dbops?: DbOp[]\n actionIndexes?: number[]\n}\n\nexport class ListActions extends React.Component {\n renderItem = (action: Action, index: number) => {\n let operations: DeferredOperation[] = []\n\n if (this.props.deferredOperations) {\n operations = this.props.deferredOperations.filter(\n (operation) => operation.action_index === index && operation.operation !== \"PUSH_CREATE\"\n )\n }\n\n const ramops = (this.props.ramops || []).filter(\n (ramop: RAMOp) => ramop.action_idx === index && ramop.op !== \"deferred_trx_removed\"\n )\n const dbops = (this.props.dbops || []).filter((dbop: DbOp) => dbop.action_idx === index)\n\n return (\n \n \n \n \n \n {operations.map((operation: DeferredOperation, idx: number) => {\n return (\n \n \n \n )\n })}\n \n \n )\n }\n\n renderItems = () => {\n return this.props.actions.map((action: Action, index: number) => {\n return this.renderItem(action, index)\n })\n }\n\n render() {\n return {this.renderItems()}\n }\n}\n","import { ActionTrace, CreationNode } from \"@dfuse/client\"\nimport { groupBy } from \"ramda\"\nimport { DeferredOperation, TraceLevel } from \"../models/transaction\"\n\ninterface TraceLevelGroups {\n [key: number]: ActionTrace[]\n}\n\ninterface ParentDepthMap {\n [index: number]: number\n}\n\nexport function groupTracesByTraceLevel(\n traces: ActionTrace[],\n creationTree?: CreationNode[],\n displayCreationTraces?: boolean\n): TraceLevelGroups {\n const traceLevelsExecution = computeTraceWithLevel(traces)[0]\n let displayedTraces: TraceLevel[] = traceLevelsExecution\n if (creationTree && creationTree.length > 0 && displayCreationTraces) {\n displayedTraces = computeCreationTraceWithLevel(creationTree, traceLevelsExecution)\n }\n // @ts-ignore The group key can be a number but definitions are accepting string only\n return groupBy((traceLevel: TraceLevel) => {\n return traceLevel.group\n }, displayedTraces)\n}\n\nexport function computeTraceWithLevel(\n actionTraces: ActionTrace[],\n currentLevel: number = 0,\n currentGroup: number = 0,\n results: TraceLevel[] = [],\n index: number = 0\n): [TraceLevel[], number] {\n actionTraces.forEach((actionTrace: ActionTrace) => {\n results.push({ actionTrace, level: currentLevel, group: currentGroup, index })\n index += 1\n\n if (actionTrace.inline_traces && actionTrace.inline_traces.length > 0) {\n // eslint-disable-next-line prefer-destructuring\n index = computeTraceWithLevel(\n actionTrace.inline_traces,\n currentLevel + 1,\n currentGroup,\n results,\n index\n )[1]\n }\n\n if (currentLevel === 0) {\n currentGroup++\n }\n })\n\n return [results, index]\n}\n\nexport function computeCreationTraceWithLevel(\n creationTree: CreationNode[],\n traceLevels: TraceLevel[]\n): TraceLevel[] {\n const results: TraceLevel[] = []\n let groupIndex = -1\n let depth = 0\n const parentDepth: ParentDepthMap = {}\n\n creationTree.forEach((creationNode: CreationNode) => {\n const currentIndex = creationNode[0]\n const parentIndex = creationNode[1]\n const traceLevelIndex = creationNode[2]\n const currentTraceLevel = traceLevels[traceLevelIndex]\n\n if (parentIndex === -1) {\n groupIndex += 1\n depth = 0\n parentDepth[currentIndex] = depth\n } else {\n const referenceDepth = parentDepth[parentIndex]\n depth = referenceDepth + 1\n parentDepth[currentIndex] = depth\n }\n\n results.push({\n index: currentIndex,\n actionTrace: currentTraceLevel.actionTrace,\n group: groupIndex,\n level: depth\n })\n })\n\n return results\n}\n\nexport class TransactionTracesWrap {\n traces: ActionTrace[] = []\n traceLevels: TraceLevelGroups\n actionIndexes: number[] = []\n deferredOperations: DeferredOperation[]\n\n constructor(\n actionTraces: ActionTrace[],\n deferredOperations?: DeferredOperation[],\n actionIndexes?: number[],\n creationTree?: CreationNode[],\n displayCreationTraces?: boolean\n ) {\n this.traces = actionTraces || []\n\n this.traceLevels = this.traces\n ? groupTracesByTraceLevel(this.traces, creationTree, displayCreationTraces)\n : {}\n this.actionIndexes = actionIndexes || []\n this.deferredOperations = deferredOperations || []\n }\n\n collapsedTraces(traceLevels: TraceLevel[]) {\n if (this.actionIndexes.length === 0) {\n return traceLevels.filter((traceWithLevel: TraceLevel) => {\n return traceWithLevel.index === 0\n })\n }\n return traceLevels.filter((traceWithLevel: TraceLevel) => {\n return (\n this.actionIndexes.length === 0 ||\n this.actionIndexes.includes(traceWithLevel.index) || traceWithLevel.index === 0\n )\n })\n }\n\n mapGroups(callback: (traceLevels: TraceLevel[], key: string) => any) {\n return Object.keys(this.traceLevels).map((key: string) => {\n const group = this.traceLevels[key]\n return callback(group, key)\n })\n }\n\n hiddenActionsCount() {\n let extraActions = 0\n this.mapGroups((traceLevels: TraceLevel[]) => {\n extraActions += traceLevels.length - this.collapsedTraces(traceLevels).length\n })\n\n return extraActions\n }\n}\n","import * as React from \"react\"\nimport { TraceLevel, DeferredOperation } from \"../../models/transaction\"\nimport { ActionTracePill } from \"../action-pills/action-pill.component\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { DeferredLink } from \"../deferred-link/deferred-link\"\nimport moment from \"moment\"\nimport { secondsToTime } from \"@dfuse/explorer\"\nimport { ActionTrace, DbOp, RAMOp, CreationNode, TableOp } from \"@dfuse/client\"\nimport { PageContext } from \"../../models/core\"\nimport { TransactionTracesWrap } from \"../../services/transaction-traces-wrap\"\n\ninterface Props {\n displayCreationTrace?: boolean\n actionTraces: ActionTrace[]\n deferredOperations?: DeferredOperation[]\n ramops?: RAMOp[]\n dbops?: DbOp[]\n pageContext?: PageContext\n actionIndexes?: number[]\n collapsed?: boolean\n creationTree?: CreationNode[]\n tableops?: TableOp[]\n}\n\nexport class ListActionTraces extends React.Component {\n static defaultProps = {\n collapsed: false\n }\n\n renderChildItem = (traceLevel: TraceLevel, index: number) => {\n let operations: DeferredOperation[] = []\n\n if (this.props.deferredOperations && !this.props.collapsed) {\n operations = this.props.deferredOperations.filter(\n (operation) =>\n operation.action_index === traceLevel.index && operation.operation !== \"PUSH_CREATE\"\n )\n }\n\n const ramops = (this.props.ramops || []).filter(\n (ramop: RAMOp) => ramop.action_idx === traceLevel.index && ramop.op !== \"deferred_trx_removed\"\n )\n const dbops = (this.props.dbops || []).filter(\n (dbop: DbOp) => dbop.action_idx === traceLevel.index\n )\n\n const tableops = (this.props.tableops || []).filter(\n (tableop: TableOp) => tableop.action_idx === traceLevel.index\n )\n\n return (\n \n \n \n \n \n {operations.map((operation: DeferredOperation, idx: number) => {\n const delaySec = moment.duration(\n moment(operation.delay_until).diff(operation.published_at)\n )\n\n return (\n \n \n \n )\n })}\n \n \n )\n }\n\n computeHighlighted(traceLevel: TraceLevel) {\n if (this.props.actionIndexes && this.props.actionIndexes.includes(traceLevel.index)) {\n return true\n }\n return false\n }\n\n renderGroupItem = (\n key: number,\n traceLevels: TraceLevel[],\n collapsedTraceLevels: TraceLevel[]\n ): JSX.Element => {\n const displayedTraceLevels = this.props.collapsed ? collapsedTraceLevels : traceLevels\n\n const contents = displayedTraceLevels.map((traceLevel: TraceLevel) => {\n return this.renderChildItem(traceLevel, traceLevel.index)\n })\n\n return {contents}\n }\n\n renderItems = () => {\n const traceWrap = new TransactionTracesWrap(\n this.props.actionTraces,\n this.props.deferredOperations,\n this.props.actionIndexes,\n this.props.creationTree,\n this.props.displayCreationTrace\n )\n // const extraDeferred = this.props.deferredOperations ? this.props.deferredOperations.length : 0\n\n return traceWrap.mapGroups((groupedTraces: TraceLevel[], key: string) => {\n return this.renderGroupItem(\n parseInt(key, 10),\n groupedTraces,\n traceWrap.collapsedTraces(groupedTraces)\n )\n })\n }\n\n render() {\n return {this.renderItems()}\n }\n}\n","import Switch from \"@material-ui/core/Switch\"\n\nimport * as React from \"react\"\nimport { createStyles, withStyles, WithStyles } from \"@material-ui/core/styles\"\nimport { theme } from \"../../theme\"\n\nconst styles = () =>\n createStyles({\n iOSSwitchBase: {\n \"&$iOSChecked\": {\n color: theme.colors.primary,\n \"& + $iOSBar\": {\n backgroundColor: theme.colors.ternary\n }\n }\n },\n iOSSwitchBaseDark: {\n \"&$iOSChecked\": {\n color: theme.colors.primary,\n \"& + $iOSBar\": {\n backgroundColor: `${theme.colors.bleu11} !important`\n }\n }\n },\n\n iOSChecked: {\n transform: \"translateX(14px)\",\n \"& + $iOSBar\": {\n opacity: 1,\n border: \"none\"\n }\n },\n iOSBar: {\n borderRadius: 9,\n width: 32,\n height: 18,\n marginTop: -9,\n marginLeft: -16,\n border: \"solid 1px\",\n borderColor: theme.colors.border,\n backgroundColor: theme.colors.formFieldBg,\n opacity: \"1 !important\" as any\n },\n iOSBarDark: {\n borderRadius: 9,\n width: 32,\n height: 18,\n marginTop: -9,\n marginLeft: -16,\n border: \"solid 1px\",\n borderColor: `${theme.colors.bleu11} !important`,\n backgroundColor: `${theme.colors.bleu11} !important`,\n opacity: \"1 !important\" as any\n },\n\n iOSIcon: {\n width: 16,\n height: 16\n },\n iOSIconChecked: {}\n })\n\nconst decorate = withStyles(styles)\n\ninterface Props {\n onChange: (checked: boolean) => void\n checked?: boolean\n variant?: \"light\" | \"dark\"\n}\n\nexport const UiSwitch = decorate(\n class extends React.Component, {}> {\n state = { checked: false }\n\n constructor(props: Props & WithStyles) {\n super(props)\n this.state = { checked: props.checked || false }\n }\n\n handleChange = (event: any) => {\n this.setState({ checked: event.target.checked })\n this.props.onChange(event.target.checked)\n }\n\n render() {\n return (\n \n )\n }\n }\n)\n","import { t } from \"i18next\"\nimport * as React from \"react\"\nimport { styled } from \"../../theme\"\nimport { DeferredOperation } from \"../../models/transaction\"\nimport { DataEmpty } from \"@dfuse/explorer\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { ListActions } from \"./list-actions.component\"\nimport { RAMOp, ActionTrace, DbOp, CreationNode, TableOp, Action } from \"@dfuse/client\"\nimport { PageContext } from \"../../models/core\"\nimport { ListActionTraces } from \"./list-action-traces.component\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport { UiSwitch } from \"../../atoms/ui-switch/switch\"\n\nconst ListWrapper: React.ComponentType = styled(Cell)`\n border-top: 1px solid ${(props) => props.theme.colors.border};\n min-width: 900px;\n padding-left: 10px;\n padding-right: 10px;\n padding-bottom: 20px;\n padding-top: 15px;\n`\n\nconst PendingCell: React.ComponentType = styled(Cell)`\n min-height: 10vh;\n width: 100%;\n`\n\ninterface Props {\n actionTraces?: ActionTrace[]\n actions?: Action[]\n deferredOperations?: DeferredOperation[]\n ramops?: RAMOp[]\n dbops?: DbOp[]\n pageContext?: PageContext\n actionIndexes?: number[]\n creationTree?: CreationNode[]\n tableops?: TableOp[]\n}\n\ninterface State {\n displayCreationTrace: boolean\n}\n\nexport class TransactionActions extends React.Component {\n state = { displayCreationTrace: false }\n\n noActions() {\n return (\n (this.props.actions === undefined || this.props.actions === null) &&\n (this.props.actionTraces === undefined || this.props.actionTraces === null)\n )\n }\n\n renderEmpty() {\n return \n }\n\n renderActionTable(actions: Action[]) {\n return (\n \n \n \n \n \n )\n }\n renderActionTraceTable(actionTraces: ActionTrace[]) {\n return (\n \n \n \n \n \n )\n }\n\n onToggleActionsView = (checked: boolean) => {\n this.setState({ displayCreationTrace: checked })\n }\n\n renderToggle() {\n return (\n \n {t(\"transaction.displayedTree.executionTree\")}\n \n {t(\"transaction.displayedTree.creationTree\")}\n \n )\n }\n\n renderContent() {\n const { actions } = this.props\n const { actionTraces } = this.props\n if (this.noActions()) {\n return \n }\n\n if ((actionTraces || []).length > 0) {\n return (\n \n {this.renderToggle()}\n {this.renderActionTraceTable(actionTraces!)}\n \n )\n }\n\n if ((actions || []).length > 0) {\n return this.renderActionTable(actions!)\n }\n\n return this.renderEmpty()\n }\n\n render() {\n return this.renderContent()\n }\n}\n","import {\n TransactionLifecycle,\n Action,\n Transaction,\n Authorization,\n DTrxOp,\n ActionTrace\n} from \"@dfuse/client\"\nimport { uniq } from \"ramda\"\nimport { TransactionReceiptStatus } from \"../models/transaction\"\n\nexport class TransactionLifecycleWrap {\n public lifecycle: TransactionLifecycle\n\n constructor(transactionLifeCycle: TransactionLifecycle) {\n this.lifecycle = transactionLifeCycle\n }\n\n get status(): TransactionReceiptStatus {\n return this.lifecycle.transaction_status as TransactionReceiptStatus\n }\n\n get actions(): Action[] {\n let actions: Action[] = []\n if (this.transaction) {\n actions = this.transaction.actions || []\n }\n\n if (\n this.lifecycle.created_by &&\n this.lifecycle.created_by.op === \"PUSH_CREATE\" &&\n this.lifecycle.dtrxops\n ) {\n const dtrxop = this.lifecycle.dtrxops.find((dtrxOp: DTrxOp) => {\n return dtrxOp.op === \"PUSH_CREATE\" && dtrxOp.trx_id === this.lifecycle.id\n })\n if (dtrxop && dtrxop.trx && dtrxop.trx.actions) {\n actions = dtrxop.trx.actions\n }\n }\n return actions\n }\n\n get actionTraces(): ActionTrace[] {\n if (this.executionTrace && this.executionTrace.action_traces) {\n return this.executionTrace.action_traces || []\n }\n return []\n }\n\n get hasActions() {\n return this.actions.length > 0 || this.actionTraces.length > 0\n }\n\n get transaction(): Transaction | undefined {\n return this.lifecycle.transaction\n }\n\n get executionTrace() {\n return this.lifecycle.execution_trace\n }\n\n get noBlockInfo(): boolean {\n return !this.blockNum || !this.blockId\n }\n\n get blockNum() {\n if (this.lifecycle.execution_trace && this.lifecycle.execution_trace.block_num) {\n return this.lifecycle.execution_trace.block_num\n }\n\n if (this.lifecycle.created_by && this.lifecycle.created_by.block_num > 0) {\n return this.lifecycle.created_by.block_num\n }\n\n return 0\n }\n\n get blockId(): string | null {\n if (this.lifecycle.execution_trace && this.lifecycle.execution_trace.producer_block_id) {\n return this.lifecycle.execution_trace.producer_block_id\n }\n\n if (this.lifecycle.created_by && this.lifecycle.created_by.block_id) {\n return this.lifecycle.created_by.block_id\n }\n\n return null\n }\n\n get blockTimestamp() {\n if (this.lifecycle.execution_block_header) {\n return this.lifecycle.execution_block_header.timestamp\n }\n\n if (this.lifecycle.created_by && this.lifecycle.created_by.block_time) {\n return this.lifecycle.created_by.block_time\n }\n\n return null\n }\n\n get authorizations() {\n const authorizationList: Authorization[] = []\n const actionTraces = (this.executionTrace ? this.executionTrace.action_traces : []) || []\n // TODO Add actions[].authorization[] from the original packed transaction once available\n actionTraces.forEach((actionTrace: ActionTrace) => {\n ;(actionTrace.act.authorization || []).forEach((auth: Authorization) => {\n authorizationList.push(auth)\n })\n })\n\n return uniq(authorizationList)\n }\n\n get exceptMessage() {\n if (this.executionTrace && this.executionTrace.except) {\n let message = \"\"\n if (this.executionTrace.except.stack && this.executionTrace.except.stack.length > 0) {\n const firstStackItem = this.executionTrace.except.stack[0]\n message = firstStackItem.format\n Object.keys(firstStackItem.data).forEach((key: string) => {\n message = message.replace(`\\${${key}}`, firstStackItem.data[key])\n })\n return message\n }\n\n return this.executionTrace.except.message\n }\n return \"\"\n }\n\n get totalActionCount() {\n let count = 0\n this.actionTraces.forEach((actionTrace: ActionTrace) => {\n count += 1\n count += this.actionCount(actionTrace.inline_traces || [])\n })\n\n return count\n }\n\n private actionCount(actionTraces: ActionTrace[]): number {\n let count = 0\n actionTraces.forEach((actionTrace: ActionTrace) => {\n count += this.actionCount(actionTrace.inline_traces || [])\n count += 1\n })\n\n return count\n }\n}\n","import { DeferredOperation } from \"../models/transaction\"\nimport { DTrxOp, TransactionLifecycle, SearchTransactionRow } from \"@dfuse/client\"\nimport { TransactionListInfo } from \"../components/list-transactions/list-transactions.component\"\nimport { TransactionLifecycleWrap } from \"../services/transaction-lifecycle\"\n\nexport function convertDTrxOpToDeferredOperation(id: string, dtrxOp: DTrxOp): DeferredOperation {\n return {\n transaction_id: dtrxOp.trx_id,\n action_index: dtrxOp.action_idx,\n by_transaction_id: id,\n operation: dtrxOp.op,\n sender: dtrxOp.sender,\n sender_id: dtrxOp.sender_id,\n payer: dtrxOp.payer,\n published_at: dtrxOp.published_at,\n delay_until: dtrxOp.delay_until,\n expiration_at: dtrxOp.expiration_at,\n related_transactions: [dtrxOp.trx_id, id]\n }\n}\n\nexport function convertDTrxOpsToDeferredOperations(\n id: string,\n dtrxops: DTrxOp[]\n): DeferredOperation[] {\n return dtrxops.map((dtrxop: DTrxOp) => {\n return convertDTrxOpToDeferredOperation(id, dtrxop)\n })\n}\n\nexport function transactionSearchResultsToTransactionInfo(\n searchResults: SearchTransactionRow[]\n): TransactionListInfo[] {\n return (searchResults || []).map((result: SearchTransactionRow) => {\n const lifecycleWrap = new TransactionLifecycleWrap(result.lifecycle)\n return {\n id: result.lifecycle.id,\n blockNum: lifecycleWrap.blockNum || undefined,\n blockId: lifecycleWrap.blockId || undefined,\n blockTime: lifecycleWrap.blockTimestamp || undefined,\n irreversible: result.lifecycle.execution_irreversible,\n actionTraces: lifecycleWrap.actionTraces,\n status: lifecycleWrap.status,\n actionIndexes: result.action_idx,\n dtrxops: result.lifecycle.dtrxops,\n dbops: result.lifecycle.dbops,\n ramops: result.lifecycle.ramops,\n actions: lifecycleWrap.actions,\n tableops: lifecycleWrap.lifecycle.tableops\n }\n })\n}\n\nexport function transactionLifecyclesToTransactionInfo(\n searchResults: TransactionLifecycle[]\n): TransactionListInfo[] {\n return (searchResults || []).map((result: TransactionLifecycle) => {\n const lifecycleWrap = new TransactionLifecycleWrap(result)\n return {\n id: lifecycleWrap.lifecycle.id,\n blockNum: lifecycleWrap.blockNum || undefined,\n blockId: lifecycleWrap.blockId || undefined,\n blockTime: lifecycleWrap.blockTimestamp || undefined,\n irreversible: lifecycleWrap.lifecycle.execution_irreversible,\n actionTraces: lifecycleWrap.actionTraces,\n status: lifecycleWrap.status,\n action_indexes: [],\n dtrxops: lifecycleWrap.lifecycle.dtrxops,\n actions: lifecycleWrap.actions,\n dbops: lifecycleWrap.lifecycle.dbops,\n ramops: lifecycleWrap.lifecycle.ramops,\n tableops: lifecycleWrap.lifecycle.tableops\n }\n })\n}\n","import { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { Cell } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport { TransactionLifecycle } from \"@dfuse/client\"\nimport { translate } from \"react-i18next\"\nimport { RamUsage } from \"../../../components/ram-usage/ram-usage.component\"\nimport { summarizeRamOps } from \"../../../helpers/transaction.helpers\"\n\ninterface Props {\n transactionLifeCycle: TransactionLifecycle\n}\n\n@observer\nclass BaseTransactionRamUsage extends React.Component {\n render() {\n const ramops = summarizeRamOps(this.props.transactionLifeCycle.ramops || [])\n return (\n \n \n \n )\n }\n}\n\nexport const TransactionRamUsage = translate()(BaseTransactionRamUsage)\n","import { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { styled } from \"../../theme\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { TabbedPanel } from \"../../atoms/tabbed-panel/tabbed-panel\"\nimport H from \"history\"\nimport { t } from \"i18next\"\nimport { TransactionActions } from \"../../components/transaction/transaction-actions.component\"\nimport { convertDTrxOpsToDeferredOperations } from \"../../helpers/legacy.helpers\"\nimport { TransactionRamUsage } from \"./summary/transaction-ram-usage\"\nimport { TransactionLifecycleWrap } from \"../../services/transaction-lifecycle\"\n\nconst PanelContentWrapper: React.ComponentType = styled(Grid)`\n width: 100%;\n`\n\ninterface Props {\n lifecycleWrap: TransactionLifecycleWrap\n currentTab: string\n history: H.History\n location: H.Location\n}\n\ntype State = { currentTab: string }\n\n@observer\nexport class TransactionContents extends React.Component {\n constructor(props: Props) {\n super(props)\n\n this.state = {\n currentTab: props.currentTab || \"actions\"\n }\n }\n\n renderActions() {\n if (this.props.lifecycleWrap.hasActions) {\n return (\n \n \n \n )\n }\n\n return null\n }\n\n renderTabContent = () => {\n switch (this.state.currentTab) {\n case \"actions\":\n return this.renderActions()\n case \"ramUsage\":\n return \n\n default:\n return this.renderActions()\n }\n }\n\n onSelectTab = (currentTab: string) => {\n this.setState({ currentTab })\n }\n\n render() {\n let totalCount = this.props.lifecycleWrap.totalActionCount\n\n if (totalCount === 0) {\n totalCount = this.props.lifecycleWrap.actions.length\n }\n\n const tabData = [\n { label: \"actions\", value: `${t(\"transaction.traces.title\")} (${totalCount})` }\n ]\n\n if (\n this.props.lifecycleWrap.lifecycle.ramops &&\n this.props.lifecycleWrap.lifecycle.ramops.length > 0\n ) {\n tabData.push({ label: \"ramUsage\", value: t(\"transaction.ramUsage.title\") })\n }\n\n return (\n \n \n \n {this.renderTabContent()}\n \n \n \n )\n }\n}\n","import { t } from \"i18next\"\nimport { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { RouteComponentProps } from \"react-router-dom\"\nimport { ServerError } from \"../../components/server-error/server-error.component\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { debugLog } from \"../../services/logger\"\nimport { metricsStore } from \"../../stores\"\nimport { ContentLoaderComponent } from \"../../components/content-loader/content-loader.component\"\nimport { Panel } from \"../../atoms/panel/panel.component\"\nimport { TransactionDetailHeader } from \"./summary/transaction-detail-header\"\nimport { PanelTitleBanner } from \"../../atoms/panel/panel-title-banner\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport { WrappingText } from \"../../atoms/text-elements/misc\"\nimport { DataLoading, DataError, BULLET, truncateString } from \"@dfuse/explorer\"\nimport { PageContainer } from \"../../components/page-container/page-container\"\nimport { TransactionLifecycle, Stream } from \"@dfuse/client\"\nimport { TransactionContents } from \"./transaction-contents\"\nimport { computeTransactionTrustPercentage } from \"../../models/transaction\"\nimport { registerTransactionLifecycleListener } from \"../../streams/transaction-listeners\"\nimport { TransactionLifecycleWrap } from \"../../services/transaction-lifecycle\"\n\nexport interface PathParams {\n id: string\n}\n\ninterface Props extends RouteComponentProps {}\n\ninterface State {\n fetchError: boolean\n lifecycleWrap: TransactionLifecycleWrap | undefined\n}\n\n@observer\nexport class TransactionDetailPage extends ContentLoaderComponent {\n handlerMetricsId?: string\n statusUpdated = false\n state: State = { lifecycleWrap: undefined, fetchError: false }\n transactionStream?: Stream\n\n componentDidMount = async () => {\n await this.registerStreams()\n\n this.changeDocumentTitle()\n }\n\n get trustPercentage() {\n if (this.state.lifecycleWrap) {\n return computeTransactionTrustPercentage(\n this.state.lifecycleWrap.blockNum,\n metricsStore.headBlockNum,\n metricsStore.lastIrreversibleBlockNum\n )\n }\n\n return 0\n }\n\n async registerStreams() {\n this.setState({ fetchError: false })\n this.transactionStream = await registerTransactionLifecycleListener(\n this.props.match.params.id,\n (lifecycle: TransactionLifecycle) => {\n if (lifecycle && lifecycle !== null) {\n this.setState({ lifecycleWrap: new TransactionLifecycleWrap(lifecycle) })\n }\n },\n () => {\n this.setState({ fetchError: true })\n }\n )\n }\n\n async unregisterStreams() {\n if (this.transactionStream) {\n await this.transactionStream.close()\n this.transactionStream = undefined\n }\n }\n\n componentDidUpdate(prevProps: Props) {\n if (prevProps.match.params.id !== this.props.match.params.id) {\n this.changeDocumentTitle()\n this.unregisterStreams()\n this.registerStreams()\n }\n }\n\n changeDocumentTitle() {\n document.title = `${truncateString(this.props.match.params.id, 8).join(\n \"\"\n )} ${BULLET} transaction ${BULLET} eosq`\n }\n\n componentWillUnmount() {\n this.unregisterStreams()\n }\n\n renderError = (error?: any) => {\n debugLog(\"Handling transaction stream error.\", error)\n return \n }\n\n renderLoading = (message: string) => {\n return (\n \n \n \n )\n }\n\n renderNotSeenYet(transactionId: string) {\n return [\n ,\n \n \n \n {t(\"transaction.notSeenYet.notFound\")}\n {t(\"transaction.notSeenYet.watchingForNetwork\")} \n \n {transactionId}\n \n \n \n \n ]\n }\n\n renderContent = () => {\n if (!this.state.lifecycleWrap) {\n return this.renderLoading(this.props.match.params.id)\n }\n\n if (this.state.fetchError) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n \n \n \n \n \n \n \n )\n }\n\n render() {\n return this.renderContent()\n }\n}\n","import {\n InboundMessage,\n InboundMessageType,\n TransactionLifecycle,\n ErrorData,\n TransactionLifecycleData\n} from \"@dfuse/client\"\n\nimport { getDfuseClient } from \"@dfuse/explorer\"\n\nexport async function registerTransactionLifecycleListener(\n transactionID: string,\n successCallback: (lifecycle: TransactionLifecycle) => void,\n errorCallback: (error: ErrorData) => void\n) {\n const stream = await getDfuseClient().streamTransaction(\n { id: transactionID },\n (message: InboundMessage) => {\n if (message.type === InboundMessageType.ERROR) {\n errorCallback(message.data as ErrorData)\n return\n }\n\n if (message.type === InboundMessageType.TRANSACTION_LIFECYCLE) {\n successCallback((message.data as TransactionLifecycleData).lifecycle)\n }\n }\n )\n\n return stream\n}\n","import TableCell from \"@material-ui/core/TableCell\"\nimport TableHead from \"@material-ui/core/TableHead\"\nimport TableRow from \"@material-ui/core/TableRow\"\nimport Table from \"@material-ui/core/Table\"\nimport TableBody from \"@material-ui/core/TableBody\"\nimport { system, Scale } from \"styled-system\"\nimport { Box, Cell } from \"@dfuse/explorer\"\nimport { theme, styled, resolveValue } from \"../../theme\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport * as React from \"react\"\n\ntype TableCaptionItemProps = {\n alignSelf?: any\n justifySelf?: any\n pl?: any\n textAlign?: any\n mr?: any\n}\n\nexport const TableCaptionItem: React.SFC = ({ children, ...rest }) => (\n \n {children}\n \n)\n\ntype TableCaptionColorProps = {\n height?: any\n width?: any\n mr?: any\n bg?: any\n}\n\nexport const TableCaptionColor: React.SFC = ({ children, ...rest }) => (\n \n {children}\n \n)\n\nexport const TableIcon: React.ComponentType = styled(FontAwesomeIcon)`\n color: #aaa;\n margin-left: 5px;\n`\n\nexport const TableIconLight: React.ComponentType = styled(FontAwesomeIcon)`\n color: ${(props) => props.theme.colors.grey4};\n margin-left: 5px;\n`\n\nexport const UiTable: React.ComponentType = styled(Table)`\n grid-auto-flow: row;\n`\n\nexport const UiTableHead: React.ComponentType = styled(TableHead)`\n border-bottom: 1px solid ${(props) => props.theme.colors.border};\n`\n\nexport const UiTableBody: React.ComponentType = styled(TableBody)``\n\nexport const UiTableRow: React.ComponentType = styled(TableRow)`\n min-height: 30px !important;\n height: auto !important;\n`\n\nexport const UiTableRowAlternated: React.ComponentType = styled(TableRow)`\n min-height: 30px !important;\n height: auto !important;\n &:nth-of-type(even) {\n background-color: ${(props) => props.theme.colors.tableEvenRowBackground};\n }\n`\n\nconst fontSize = system({\n fontSize: {\n property: \"fontSize\",\n scale: \"fontSizes\",\n transform: (n: string | number, scale?: Scale) => `${resolveValue(n, scale)}px !important;`\n }\n})\n\nconst textAlign = system({\n textAlign: {\n property: \"textAlign\",\n transform: (n: string | number) => `${n} !important;`\n }\n})\n\nexport const UiTableCell: React.ComponentType = styled(TableCell)`\n ${fontSize};\n ${textAlign};\n border-bottom: none !important;\n padding-top: 8px !important;\n padding-right: 20px !important;\n padding-left: 20px !important;\n padding-bottom: 8px !important;\n white-space: nowrap;\n position: relative;\n color: ${(props) => (props.color ? props.color : theme.colors.text)} !important;\n`\n\nexport const UiTableCellNarrow: React.ComponentType = styled(TableCell)`\n ${fontSize};\n ${textAlign};\n border-bottom: none !important;\n padding-top: 8px !important;\n padding-right: 5px !important;\n padding-left: 5px !important;\n padding-bottom: 8px !important;\n white-space: nowrap;\n position: relative;\n color: ${(props: any) => (props.color ? props.color : theme.colors.text)} !important;\n`\n\nexport const UiTableCellTop: React.ComponentType = styled(UiTableCell)`\n ${textAlign};\n vertical-align: top !important;\n padding-top: 20px !important;\n`\n\nexport const UiTableCellPill: React.ComponentType = styled(UiTableCell)``\n","import * as React from \"react\"\nimport { createStyles, WithStyles, withStyles } from \"@material-ui/core/styles\"\nimport Tooltip from \"@material-ui/core/Tooltip\"\nimport { theme } from \"../../theme\"\n\nconst styles = () =>\n createStyles({\n lightTooltip: {\n background: theme.colors.bleu11,\n color: theme.colors.primary,\n fontSize: 12,\n maxWidth: \"none\"\n },\n arrowPopper: {\n opacity: 1,\n '&[x-placement*=\"bottom\"] $arrowArrow': {\n opacity: 1,\n top: 0,\n left: 0,\n marginTop: \"-0.9em\",\n width: \"3em\",\n height: \"1em\",\n \"&::before\": {\n borderWidth: \"0 1em 1em 1em\",\n borderColor: `transparent transparent ${theme.colors.bleu11} transparent`\n }\n },\n '&[x-placement*=\"top\"] $arrowArrow': {\n opacity: 1,\n bottom: 0,\n left: 0,\n marginBottom: \"-0.9em\",\n width: \"3em\",\n height: \"1em\",\n \"&::before\": {\n borderWidth: \"1em 1em 0 1em\",\n borderColor: `${theme.colors.bleu11} transparent transparent transparent`\n }\n },\n '&[x-placement*=\"right\"] $arrowArrow': {\n opacity: 1,\n left: 0,\n marginLeft: \"-0.9em\",\n height: \"3em\",\n width: \"1em\",\n \"&::before\": {\n borderWidth: \"1em 1em 1em 0\",\n borderColor: `transparent ${theme.colors.bleu11} transparent transparent`\n }\n },\n '&[x-placement*=\"left\"] $arrowArrow': {\n opacity: 1,\n right: 0,\n marginRight: \"-0.9em\",\n height: \"3em\",\n width: \"1em\",\n \"&::before\": {\n borderWidth: \"1em 0 1em 1em\",\n borderColor: `transparent transparent transparent ${theme.colors.bleu11}`\n }\n }\n },\n arrowArrow: {\n opacity: 1,\n position: \"absolute\",\n fontSize: 7,\n width: \"3em\",\n height: \"3em\",\n \"&::before\": {\n content: '\"\"',\n margin: \"auto\",\n display: \"block\",\n width: 0,\n height: 0,\n borderStyle: \"solid\"\n }\n },\n button: {\n display: \"table\",\n position: \"relative\"\n },\n buttonFullWidth: {\n display: \"table\",\n width: \"100%\",\n position: \"relative\"\n }\n })\n\ninterface Props {\n fullWidth?: boolean\n placement?: any\n}\n\nconst decorate = withStyles(styles)\n\nexport const UiToolTip = decorate(\n class extends React.Component, {}> {\n state = {\n arrowRef: null\n }\n\n static get defaultProps() {\n return {\n fullWidth: false,\n placement: \"top\"\n }\n }\n\n handleArrowRef = (node: any) => {\n this.setState({\n arrowRef: node\n })\n }\n\n render() {\n const { classes } = this.props\n const children = React.Children.toArray(this.props.children)\n\n return (\n \n {children[1]}\n \n \n }\n enterTouchDelay={50}\n placement={this.props.placement}\n classes={{ popper: classes.arrowPopper, tooltip: classes.lightTooltip }}\n PopperProps={{\n popperOptions: {\n modifiers: {\n arrow: {\n enabled: Boolean(this.state.arrowRef),\n element: this.state.arrowRef\n }\n }\n }\n }}\n >\n \n {children[0]}\n \n \n )\n }\n }\n)\n","import * as React from \"react\"\nimport { TextLink } from \"../../atoms/text/text.component\"\nimport { Links } from \"../../routes\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { faLock, faLockOpen } from \"@fortawesome/free-solid-svg-icons\"\nimport { formatNumber } from \"@dfuse/explorer\"\nimport { TableIcon, TableIconLight } from \"../../atoms/ui-table/ui-table.component\"\nimport { formatDateFromString } from \"../../helpers/moment.helpers\"\nimport { UiToolTip } from \"../../atoms/ui-tooltip/ui-tooltip\"\nimport { styled, theme } from \"../../theme\"\n\ninterface Props {\n blockTime?: string\n blockNum: number\n blockId: string\n irreversible: boolean\n}\n\nconst UnderlinedTextLink: React.ComponentType = styled(TextLink)`\n border-bottom: 2px dotted ${theme.colors.grey4};\n`\n\nexport class BlockInfoBox extends React.Component {\n renderLock() {\n return this.props.irreversible ? (\n \n ) : (\n \n )\n }\n\n render() {\n return (\n \n \n \n \n {formatNumber(this.props.blockNum)}\n \n\n {this.props.blockTime ? formatDateFromString(this.props.blockTime, false) : null}\n \n \n {this.renderLock()} \n \n )\n }\n}\n","import { t } from \"i18next\"\nimport * as React from \"react\"\nimport { compactString, formatNumber, NBSP } from \"@dfuse/explorer\"\nimport { DeferredOperation, TransactionReceiptStatus } from \"../../models/transaction\"\nimport { Links } from \"../../routes\"\n\nimport { observer } from \"mobx-react\"\nimport {\n UiTableCellPill,\n UiTableCellTop,\n UiTableRowAlternated\n} from \"../../atoms/ui-table/ui-table.component\"\nimport { Text, TextLink } from \"../../atoms/text/text.component\"\nimport { formatDateFromString } from \"../../helpers/moment.helpers\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { BlockInfoBox } from \"../block-info-box/block-info-box.component\"\nimport { ListActionTraces } from \"../transaction/list-action-traces.component\"\nimport { convertDTrxOpsToDeferredOperations } from \"../../helpers/legacy.helpers\"\nimport { ListActions } from \"../transaction/list-actions.component\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport {\n faCaretRight,\n faCaretDown,\n faExclamationCircle,\n faClock\n} from \"@fortawesome/free-solid-svg-icons\"\nimport { theme, styled } from \"../../theme\"\nimport { TransactionTracesWrap } from \"../../services/transaction-traces-wrap\"\nimport { TransactionListInfo } from \"./list-transactions.component\"\nimport { getTransactionStatusColor } from \"../../helpers/transaction.helpers\"\nimport { PageContext } from \"../../models/core\"\n\nconst Row: React.ComponentType = styled(UiTableRowAlternated)`\n align-items: center;\n padding-top: 8px;\n padding-bottom: 8px;\n`\n\ninterface Props {\n transactionInfo: TransactionListInfo\n displayFields: string[]\n initialCollapse: boolean\n pageContext?: PageContext\n}\n\ninterface State {\n collapsed: boolean\n}\n\nconst UiTableCellTopHover = styled(UiTableCellTop)`\n &:hover {\n cursor: pointer;\n }\n`\n\n@observer\nexport class ListTransactionsRow extends React.Component {\n static defaultProps = {\n displayFields: [\"id\", \"blockId\", \"blockTime\"]\n }\n\n state = {\n collapsed: true\n }\n\n renderTimeStamp(timestamp: string) {\n if (!timestamp || timestamp === \"\") {\n return null\n }\n return (\n \n {formatDateFromString(timestamp, false)}\n \n )\n }\n\n renderTransactionId(id: string, status: TransactionReceiptStatus, index: number) {\n const color = getTransactionStatusColor(status)\n let icon\n if (color === \"statusBadgeClock\") {\n icon = faClock\n } else if (color === \"statusBadgeBan\") {\n icon = faExclamationCircle\n }\n\n return (\n \n {color !== \"statusBadgeCheck\" ? (\n \n \n \n ) : null}\n \n {compactString(id, 12, 0)}\n \n \n )\n }\n\n renderBlockInfo(blockTime?: string, blockNum?: number, blockId?: string, irreversible?: boolean) {\n if (blockNum && blockId && irreversible !== undefined) {\n return (\n \n \n \n )\n }\n return null\n }\n\n renderPills(transactionInfo: TransactionListInfo, deferredOperations?: DeferredOperation[]) {\n const actionTraces = transactionInfo.actionTraces || []\n const { actions } = transactionInfo\n if (actionTraces.length === 0 && actions && actions.length > 0) {\n return \n }\n\n return [\n transactionInfo.status === TransactionReceiptStatus.EXPIRED ? (\n {t(\"transaction.detailPanel.statuses.expired\")}\n ) : (\n \"\"\n ),\n \n ]\n }\n\n renderSummaryFields(transaction: TransactionListInfo) {\n let render: any = []\n this.props.displayFields!.forEach((columnName: string, index: number) => {\n switch (columnName) {\n case \"id\":\n render = render.concat([\n this.renderTransactionId(transaction.id, transaction.status, index)\n ])\n break\n case \"blockId\":\n render = render.concat([\n // eslint-disable-next-line react/no-array-index-key\n \n in\n ,\n this.renderBlockInfo(\n transaction.blockTime,\n transaction.blockNum,\n transaction.blockId,\n transaction.irreversible\n )\n ])\n break\n default:\n // Do nothing\n }\n })\n\n return {render}\n }\n\n togglePills = () => {\n this.setState((prevState) => ({\n collapsed: !prevState.collapsed\n }))\n }\n\n renderMoreActionCTA() {\n const transaction = this.props.transactionInfo\n\n const traceWrap = new TransactionTracesWrap(\n transaction.actionTraces || [],\n convertDTrxOpsToDeferredOperations(transaction.id, transaction.dtrxops || []),\n transaction.actionIndexes\n )\n\n const extraDeferred = transaction.dtrxops ? transaction.dtrxops.length : 0\n const caret = this.state.collapsed ? faCaretRight : faCaretDown\n const extraActionCount = traceWrap.hiddenActionsCount()\n if (extraActionCount === 0 && extraDeferred === 0) {\n return null\n }\n\n return (\n \n {this.state.collapsed && extraActionCount > 0 ? (\n \n +{formatNumber(extraActionCount)}\n {extraDeferred > 0 ? \",\" : null}\n {NBSP}\n \n ) : null}\n {this.state.collapsed && extraDeferred > 0 ? (\n \n +{formatNumber(extraDeferred)} def.\n \n ) : null}\n\n \n \n \n \n )\n }\n\n render() {\n const transaction = this.props.transactionInfo\n\n return (\n \n {this.renderSummaryFields(transaction)}\n \n {this.renderPills(\n transaction,\n convertDTrxOpsToDeferredOperations(transaction.id, transaction.dtrxops || [])\n )}\n \n \n {this.renderMoreActionCTA()}\n \n \n )\n }\n}\n","import { t } from \"i18next\"\nimport * as React from \"react\"\nimport { formatTransactionID } from \"@dfuse/explorer\"\nimport { TransactionReceiptStatus } from \"../../models/transaction\"\nimport { Links } from \"../../routes\"\n\nimport { observer } from \"mobx-react\"\nimport {\n UiTable,\n UiTableBody,\n UiTableCell,\n UiTableHead,\n UiTableRow\n} from \"../../atoms/ui-table/ui-table.component\"\nimport { TextLink } from \"../../atoms/text/text.component\"\nimport { formatDateFromString } from \"../../helpers/moment.helpers\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { BlockInfoBox } from \"../block-info-box/block-info-box.component\"\nimport { PageContext } from \"../../models/core\"\nimport { ActionTrace, Action, DTrxOp, DbOp, RAMOp, TableOp } from \"@dfuse/client\"\nimport { ListTransactionsRow } from \"./list-transactions-row.component\"\n\nexport interface TransactionListInfo {\n id: string\n actionIndexes?: number[]\n blockId?: string\n blockNum?: number\n irreversible: boolean\n blockTime?: string\n status: TransactionReceiptStatus\n actionTraces?: ActionTrace[]\n actions?: Action[]\n expandAll?: boolean\n dtrxops?: DTrxOp[]\n dbops?: DbOp[]\n ramops?: RAMOp[]\n tableops?: TableOp[]\n}\n\ninterface Props {\n transactionInfos: TransactionListInfo[]\n displayFields?: string[]\n pageContext?: PageContext\n collapseAll?: boolean\n}\n\n@observer\nexport class ListTransactions extends React.Component {\n static defaultProps = {\n displayFields: [\"id\", \"blockId\", \"blockTime\"],\n collapseAll: true\n }\n\n renderTimeStamp(timestamp: string) {\n if (!timestamp || timestamp === \"\") {\n return null\n }\n return (\n \n {formatDateFromString(timestamp, false)}\n \n )\n }\n\n renderTransactionId(id: string) {\n return (\n \n {formatTransactionID(id)}\n \n )\n }\n\n renderBlockInfo(blockTime?: string, blockNum?: number, blockId?: string, irreversible?: boolean) {\n if (blockNum && blockId && irreversible !== undefined) {\n return (\n \n \n \n )\n }\n return null\n }\n\n renderItem = (transaction: TransactionListInfo) => {\n return (\n \n )\n }\n\n renderItems = () => {\n if (!this.props.transactionInfos) {\n return []\n }\n\n return (\n \n {this.props.transactionInfos.map((transaction: TransactionListInfo) =>\n this.renderItem(transaction)\n )}\n \n )\n }\n\n renderHeader = () => {\n return (\n \n \n \n {this.props.displayFields!.includes(\"blockId\")\n ? t(`transaction.list.header.summary`)\n : t(`transaction.list.header.id`)}\n \n {t(`transaction.list.header.action`)}\n \n {t(`transaction.list.header.moreActions`)}\n \n \n \n )\n }\n\n render() {\n return (\n \n {this.renderHeader()}\n {this.renderItems()}\n \n )\n }\n}\n","import {\n DfuseClient,\n StreamOptions,\n OnStreamMessage,\n Stream,\n InboundMessage,\n TransactionLifecycle\n} from \"@dfuse/client\"\nimport { Account } from \"../../models/account\"\nimport { VoteTally } from \"../../models/vote\"\nimport { legacyHandleDfuseApiError } from \"../rest/api\"\nimport { BlockSummary } from \"../../models/block\"\nimport { SuggestionSection } from \"../../models/typeahead\"\nimport { debugLog } from \"../../services/logger\"\nimport { getDfuseClient } from \"@dfuse/explorer\"\n\n// Account\n\nexport interface AccountData {\n account: Account\n}\n\nexport async function streamAccount(\n client: DfuseClient,\n account: string,\n onMessage: OnStreamMessage,\n options: StreamOptions = {}\n): Promise {\n return client.websocketStream(onMessage, (messageCreator, withDefaultOptions) => {\n return messageCreator(\n // @ts-ignore Private outbound message type not exposed publicly\n \"get_account\",\n { name: account },\n withDefaultOptions({ fetch: true, ...options })\n )\n })\n}\n\n// Blocks\n\nexport async function getBlock(blockID: string): Promise {\n return getDfuseClient()\n .apiRequest(`/v0/blocks/${blockID}`, \"GET\", undefined, undefined)\n .catch(legacyHandleDfuseApiError)\n}\n\nexport async function listBlocks(skip: number, perPage: number): Promise {\n return getDfuseClient()\n .apiRequest(\"/v0/blocks\", \"GET\", { skip, limit: perPage }, undefined)\n .catch(legacyHandleDfuseApiError)\n .then((value) => value || [])\n}\n\nexport async function listBlockTransactions(\n blockID: string,\n cursor: string,\n perPage: number\n): Promise {\n return getDfuseClient()\n .apiRequest(\n `/v0/blocks/${blockID}/transactions`,\n \"GET\",\n { cursor, limit: perPage },\n undefined\n )\n .catch(legacyHandleDfuseApiError)\n}\n\n// Completion\n\nexport async function fetchTypeaheadSuggestions(prefix: string): Promise {\n return getDfuseClient()\n .apiRequest(\"/v0/search/completion\", \"GET\", { prefix }, undefined)\n .catch(legacyHandleDfuseApiError)\n .then((value) => value || [])\n}\n\n// Get Table Rows\n\nexport interface GetTableRowParams {\n json?: boolean\n scope: string\n table: string\n code: string\n table_key?: string\n lower_bound?: string\n upper_bound?: string\n limit?: number\n key_type?: string\n index_position?: string\n}\n\nexport async function getTableRows(params: GetTableRowParams): Promise {\n return getDfuseClient()\n .apiRequest(\n \"/v1/chain/get_table_rows\",\n \"POST\",\n {},\n {\n json: params.json !== undefined ? params.json : true,\n scope: params.scope === \"\" ? params.code : params.scope,\n table: params.table,\n code: params.code,\n table_key: params.table_key,\n lower_bound: params.lower_bound,\n limit: params.limit,\n key_type: params.key_type,\n index_position: params.index_position\n }\n )\n .catch(legacyHandleDfuseApiError)\n}\n\nexport interface ProducerScheduleResponse {\n active: {\n version: number\n producers: ProducerScheduleItem[]\n }\n}\n\nexport interface ProducerScheduleItem {\n producer_name: string\n block_signing_key: string\n}\n\nexport async function getProducerSchedule() {\n return getDfuseClient()\n .apiRequest(\n \"/v1/chain/get_producer_schedule\",\n \"GET\",\n {},\n undefined\n )\n .catch(legacyHandleDfuseApiError)\n}\n\n// Price\n\nexport type PriceData = {\n symbol: string\n price: number\n variation: number\n last_updated: string\n}\n\nexport async function streamPrice(\n client: DfuseClient,\n onMessage: OnStreamMessage,\n options: StreamOptions = {}\n): Promise {\n return client.websocketStream(onMessage, (messageCreator, withDefaultOptions) => {\n return messageCreator(\n // @ts-ignore Private outbound message type not exposed publicly\n \"get_price\",\n {},\n withDefaultOptions({ fetch: true, listen: true, ...options })\n )\n })\n}\n\n// Search\n\nexport type OmniSearchResponse =\n | BlockOmniSearchResponse\n | AccountOmniSearchResponse\n | TransactionOmniSearchResponse\n | GenesisRegisteredOmniSearchResponse\n\ntype AccountOmniSearchResponse = { type: \"account\"; data: Account }\ntype BlockOmniSearchResponse = { type: \"block\"; data: BlockSummary }\ntype TransactionOmniSearchResponse = { type: \"transaction\"; data: TransactionLifecycle }\ntype GenesisRegisteredOmniSearchResponse = {\n type: \"eth_registered\" | \"eth_unregistered\"\n data: string\n}\n\nexport async function omniSearch(query: string): Promise {\n debugLog(\"Performing search query with query [%s].\", query)\n const result = await getDfuseClient()\n .apiRequest(\n \"/v0/simple_search\",\n \"GET\",\n { q: query.replace(/,/g, \"\").trim() },\n undefined\n )\n .catch(legacyHandleDfuseApiError)\n\n if (result == null) {\n debugLog(\"No search result found for query [%s] via API.\", query)\n return undefined\n }\n\n debugLog(\"Search result for query [%s] found via API.\", query, result)\n return result\n}\n\n// Transactions\n\nexport interface ListTransactionsResponse {\n transactions: TransactionLifecycle[]\n cursor: string\n}\n\nexport async function listTransactions(\n cursor: string,\n perPage: number\n): Promise {\n return getDfuseClient()\n .apiRequest(\n \"/v0/transactions\",\n \"GET\",\n { cursor, limit: perPage },\n undefined\n )\n .catch(legacyHandleDfuseApiError)\n}\n\n// Vote Tally\n\nexport type VoteTallyData = {\n vote_tally: VoteTally\n}\n\nexport async function streamVoteTally(\n client: DfuseClient,\n onMessage: OnStreamMessage,\n options: StreamOptions = {}\n): Promise {\n return client.websocketStream(onMessage, (messageCreator, withDefaultOptions) => {\n return messageCreator(\n // @ts-ignore Private outbound message type not exposed publicly\n \"get_vote_tally\",\n {},\n withDefaultOptions({ fetch: true, listen: true, ...options })\n )\n })\n}\n\nexport function isInboundMessageType(message: InboundMessage, expectedType: string): boolean {\n // @ts-ignore Private non-public message type\n return message.type === expectedType\n}\n","import { task } from \"mobx-task\"\nimport { debugLog } from \"./logger\"\nimport { listTransactions } from \"../clients/websocket/eosws\"\nimport { transactionListStore } from \"../stores\"\n\nexport const fetchTransactionList = task(\n async (cursor: string, perPage: number) => {\n return getTransactions(cursor, perPage)\n },\n { swallow: true }\n)\n\nexport const getTransactions = task(\n async (cursor: string, perPage: number) => {\n const response = await listTransactions(cursor, perPage)\n if (!response || response.transactions.length === 0) {\n debugLog(\"No account found for query [%s] via API.\")\n return null\n }\n transactionListStore.results = response.transactions\n transactionListStore.updateCursorCache(response.cursor)\n return response\n },\n { swallow: true }\n)\n","import * as React from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faAngleLeft, faAngleDoubleLeft, faAngleRight } from \"@fortawesome/free-solid-svg-icons\"\n\nimport { Cell } from \"../ui-grid/ui-grid.component\"\nimport { borders, color as color_ } from \"styled-system\"\nimport { theme, styled } from \"../../theme\"\n\ninterface NavigationProps {\n direction: \"next\" | \"previous\" | \"first\"\n onClick?: () => void\n variant?: string\n}\n\nconst ColoredTile: React.ComponentType = styled(Cell)`\n ${borders}\n ${color_}\n\n width: 30px;\n height: 30px;\n text-align: center;\n cursor: pointer;\n display: flex;\n justify-items: center;\n align-items: center;\n justify-content: center;\n &:hover {\n background-color: ${(props) => props.hoverBg};\n color: ${(props) => props.hoverColor};\n }\n`\n\nexport const NavigationButton: React.SFC = ({ direction, onClick, variant }) => {\n variant = variant || \"dark\"\n const color = variant === \"dark\" ? \"white\" : \"ternary\"\n const hoverColor = variant === \"dark\" ? color : \"white\"\n const hoverBg = variant === \"dark\" ? theme.colors.bleu10 : theme.colors.ternary\n const ChevronLeft = \n const ChevronRight = \n const DoubleChevronLeft = \n\n let Chevron = ChevronLeft\n\n if (direction === \"next\") {\n Chevron = ChevronRight\n } else if (direction === \"first\") {\n Chevron = DoubleChevronLeft\n }\n\n return (\n \n {Chevron}\n \n )\n}\n\ninterface NavigationButtonsProps {\n onNext: () => void\n onPrev: () => void\n onFirst?: () => void\n showFirst: boolean\n showNext: boolean\n showPrev: boolean\n variant?: string\n}\n\nexport class NavigationButtons extends React.Component {\n renderNavigationButton(direction: \"next\" | \"previous\" | \"first\", display: boolean) {\n let onClick: () => void\n if (direction === \"next\") {\n onClick = this.props.onNext\n } else if (direction === \"previous\") {\n onClick = this.props.onPrev\n } else if (direction === \"first\" && this.props.onFirst) {\n onClick = this.props.onFirst\n }\n\n if (display) {\n return (\n onClick()}\n />\n )\n }\n\n return null\n }\n render() {\n return (\n \n {this.props.onFirst ? (\n \n {this.renderNavigationButton(\"first\", this.props.showFirst)}\n \n ) : null}\n \n {this.renderNavigationButton(\"previous\", this.props.showPrev)}\n \n \n {this.renderNavigationButton(\"next\", this.props.showNext)}\n \n \n )\n }\n}\n","import * as React from \"react\"\nimport { DataLoading, DataError, DataEmpty } from \"@dfuse/explorer\"\nimport { debugLog } from \"../../services/logger\"\nimport { TaskStatusAware } from \"mobx-task\"\nimport { observer } from \"mobx-react\"\nimport { RouteComponentProps } from \"react-router\"\nimport { CursorCache } from \"../../services/cursor-store\"\nimport { NavigationButtons } from \"../../atoms/navigation-buttons/navigation-buttons\"\nimport queryString from \"query-string\"\nimport { t } from \"i18next\"\n\n@observer\nexport class ListContentLoaderComponent<\n T extends RouteComponentProps,\n S = {}\n> extends React.Component {\n PER_PAGE = 25\n\n cursorCache: CursorCache\n\n constructor(props: T) {\n super(props)\n this.cursorCache = new CursorCache()\n }\n\n componentDidMount(): void {\n this.componentDidMountHandler()\n }\n\n componentDidMountHandler(): void {\n if (this.parsed.cursor && this.parsed.cursor.length > 0) {\n this.cursorCache.setCurrentCursor(decodeURIComponent(this.parsed.cursor as string))\n }\n this.fetchListForCursor(this.cursorCache.currentCursor)\n }\n\n get parsed() {\n return queryString.parse(this.props.location.search)\n }\n\n cursoredUrl = (cursor: string): string => {\n throw new Error(`not implemented for args ${cursor}`)\n }\n\n fetchListForCursor(cursor: string) {\n throw new Error(`not implemented for args ${cursor}`)\n }\n\n onNext = () => {\n const cursor = this.cursorCache.shiftToNextCursor()\n this.props.history.replace(this.cursoredUrl(cursor))\n this.fetchListForCursor(cursor)\n }\n\n onPrev = () => {\n if (this.cursorCache.hasPreviousPage) {\n const cursor = this.cursorCache.shiftToPreviousCursor()\n this.props.history.replace(this.cursoredUrl(cursor))\n this.fetchListForCursor(cursor)\n }\n }\n\n onFirst = () => {\n const cursor = \"\"\n this.cursorCache.resetAll()\n this.props.history.replace(this.cursoredUrl(cursor))\n this.fetchListForCursor(cursor)\n }\n\n renderNavigation = (variant: string, showNext: boolean) => {\n return (\n \n )\n }\n\n renderEmpty() {\n return \n }\n\n renderLoading = (message: string) => {\n return \n }\n\n renderError = (error?: Error) => {\n if (error && error.name !== \"not_found\") {\n debugLog(\"An error occurred while fetching data.\", error)\n }\n\n return \n }\n\n renderContent = (args: any): React.ReactNode => {\n throw new Error(`not implemented for args: ${args}`)\n }\n\n prepareRenderContent = (collection: any[] | any): React.ReactNode => {\n if (!collection || collection.length === 0) {\n return this.renderEmpty()\n }\n\n this.cursorCache.prepareNextCursor(collection[collection.length - 1].key)\n\n return this.renderContent(collection)\n }\n\n handleRender = (service: TaskStatusAware, loadingText: string): React.ReactNode => {\n return service.match({\n rejected: this.renderError,\n pending: () => this.renderLoading(loadingText),\n resolved: this.prepareRenderContent\n })\n }\n}\n","import { t } from \"i18next\"\nimport { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { DataEmpty } from \"@dfuse/explorer\"\nimport { TransactionLifecycle } from \"@dfuse/client\"\nimport { RouteComponentProps } from \"react-router\"\nimport {\n ListTransactions,\n TransactionListInfo\n} from \"../../components/list-transactions/list-transactions.component\"\nimport { Panel } from \"../../atoms/panel/panel.component\"\nimport { fetchTransactionList } from \"../../services/transaction\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { transactionLifecyclesToTransactionInfo } from \"../../helpers/legacy.helpers\"\nimport { ListContentLoaderComponent } from \"../../components/list-content-loader/list-content-loader.component\"\nimport { isTransactionResponseEmpty } from \"../../helpers/transaction.helpers\"\nimport { ListTransactionsResponse } from \"../../clients/websocket/eosws\"\nimport { transactionListStore } from \"../../stores\"\n\ninterface Props extends RouteComponentProps {}\n\n@observer\nexport class PagedTransactions extends ListContentLoaderComponent {\n constructor(props: Props) {\n super(props)\n this.cursorCache = transactionListStore.cursorCache\n }\n fetchListForCursor(cursor: string) {\n fetchTransactionList(cursor, this.PER_PAGE)\n }\n\n cursoredUrl = (cursor: string) => {\n return `?cursor=${encodeURIComponent(cursor)}`\n }\n\n renderEmpty() {\n return \n }\n\n prepareRenderContent = (response: ListTransactionsResponse): React.ReactNode => {\n if (isTransactionResponseEmpty(response)) {\n return this.renderEmpty()\n }\n return this.renderContent(response.transactions)\n }\n\n renderContent = (transactions: TransactionLifecycle[]): React.ReactNode => {\n const transactionInfos: TransactionListInfo[] = transactionLifecyclesToTransactionInfo(\n transactions\n )\n return (\n \n \n \n \n \n \n {this.renderNavigation(\"light\", transactionListStore.hasNextPage)}\n \n \n \n )\n }\n\n render() {\n return (\n this.renderNavigation(\"light\", transactionListStore.hasNextPage)}\n >\n {this.handleRender(fetchTransactionList, t(\"transaction.list.loading\"))}\n \n )\n }\n}\n","import * as React from \"react\"\nimport { styled } from \"../../theme\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport { Box } from \"@dfuse/explorer\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\n\nconst Container: React.ComponentType = styled(Cell)`\n background-color: ${(props) => props.theme.colors.banner};\n margin-bottom: 1px;\n`\nconst BorderBannerContainer: React.ComponentType = styled(Container)`\n border-style: solid;\n border-color: ${(props) => props.theme.colors.bleu6};\n`\n\nexport const BannerTitle: React.ComponentType = styled(Text)`\n color: ${(props) => props.theme.colors.bannerTitle};\n font-family: \"Roboto\", sans-serif;\n text-transform: uppercase;\n font-weight: 400;\n`\n\nexport const BannerDetails: React.ComponentType = styled(Text)`\n margin-top: 0.12em;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n`\n\nexport interface BannerContainerProps {\n titleTip?: string\n containerProps?: any\n}\n\nexport const BannerContainer: React.SFC = ({\n titleTip,\n containerProps,\n children\n}) => (\n \n {children}\n \n)\n\nexport interface BannerItemProps extends BannerContainerProps {\n align?: string[]\n title: string\n details: JSX.Element | string\n}\n\nexport const BannerItem: React.SFC = ({\n align,\n title,\n details,\n titleTip,\n containerProps\n}) => (\n \n \n \n {title}\n \n \n {details}\n \n \n \n)\n\nBannerItem.defaultProps = {\n align: [\"left\", \"left\", \"right\"]\n}\n","import * as React from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { formatVariation, Box } from \"@dfuse/explorer\"\nimport { Text } from \"../../atoms/text/text.component\"\n\nimport { faSortDown, faSortUp } from \"@fortawesome/free-solid-svg-icons\"\n\nimport { t } from \"i18next\"\nimport { UiToolTip } from \"../../atoms/ui-tooltip/ui-tooltip\"\nimport { theme, styled } from \"../../theme\"\n\nconst TrendIconMarginRight = \"8px\"\n\nconst TrendUpIcon: React.ComponentType = styled(FontAwesomeIcon)`\n color: ${(props) => props.theme.colors.trendUp};\n margin-right: ${TrendIconMarginRight};\n transform: translate(0, +4px);\n`\n\nconst TrendDownIcon: React.ComponentType = styled(FontAwesomeIcon)`\n color: ${(props) => props.theme.colors.trendDown};\n margin-right: ${TrendIconMarginRight};\n transform: translate(0, -4px);\n`\n\ntype Props = {\n textColor: string\n variation: number\n}\n\nexport class AmountVariation extends React.Component {\n renderIcon(iconName: any, IconComponent: any) {\n return \n }\n\n render() {\n const formattedVariation = formatVariation(Math.abs(this.props.variation))\n const isUp = this.props.variation >= 0\n const iconName = isUp ? faSortUp : faSortDown\n const IconComponent = isUp ? TrendUpIcon : TrendDownIcon\n return (\n \n {this.renderIcon(iconName, IconComponent)}\n \n \n {formattedVariation}%\n \n \n {t(\"banner.tooltip.last_24h_change\")}\n \n \n \n )\n }\n}\n","import { t } from \"i18next\"\nimport { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { formatAmount, formatNumber, Box } from \"@dfuse/explorer\"\nimport { styled } from \"../../theme\"\nimport { metricsStore } from \"../../stores\"\nimport { Text } from \"../../atoms/text/text.component\"\n\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { BannerContainer, BannerItem, BannerTitle } from \"./banner-item.component\"\nimport { AmountVariation } from \"./variation.component\"\nimport { Link } from \"react-router-dom\"\nimport { Links } from \"../../routes\"\nimport { Config } from \"../../models/config\"\n\nconst BannerWrapper: React.ComponentType = styled(Grid)`\n grid-column-gap: 0px;\n border-style: solid;\n border-color: ${(props) => props.theme.colors.bleu6};\n`\n\nconst Price: React.ComponentType = styled(Text)`\n color: ${(props) => props.theme.colors.bannerValue};\n line-height: 1;\n font-weight: 700;\n font-family: \"Roboto Condensed\", sans-serif;\n`\n\nconst BannerMarketPrice: React.SFC<{ price: number; variation: number }> = ({\n price,\n variation\n}) => {\n let formattedPrice = formatAmount(price)\n if (price < 0) {\n formattedPrice = \"\"\n }\n\n return (\n \n \n \n {formattedPrice}\n \n \n {t(\"banner.eos_usd\")}\n \n \n \n \n \n \n )\n}\n\n@observer\nexport class Banner extends React.Component {\n renderProducerLink(account: string) {\n if (!account || account.length === 0) {\n return (\n \n {account}\n \n )\n }\n return (\n \n \n {account}\n \n \n )\n }\n\n renderBlockLink(blockNum: string, blockId: string) {\n if (!blockId || blockId.length === 0) {\n return (\n \n {blockNum}\n \n )\n }\n return (\n \n \n {blockNum}\n \n \n )\n }\n\n renderBannerPrice() {\n if (!Config.display_price) {\n return \n }\n return (\n \n )\n }\n\n render() {\n return (\n \n \n {this.renderBannerPrice()}\n \n \n \n \n \n )\n }\n}\n","import { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { PagedTransactions } from \"./paged-transactions\"\nimport { Banner } from \"../../components/banner/banner.component\"\nimport { PageContainer } from \"../../components/page-container/page-container\"\nimport { RouteComponentProps } from \"react-router\"\n\ninterface Props extends RouteComponentProps {}\n\n@observer\nexport class TransactionsPage extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n","import * as React from \"react\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { styled } from \"../../theme\"\nimport { LinkStyledText, Text } from \"../../atoms/text/text.component\"\nimport { pagination } from \"../../helpers/pagination-algorithm\"\nimport { NavigationButton } from \"../../atoms/navigation-buttons/navigation-buttons\"\n\nconst PageNumberUl: React.ComponentType = styled.ul`\n text-align: center;\n list-style: none;\n padding: 5px;\n padding-left: 30px;\n margin-top: 0px;\n margin-bottom: 0px;\n`\nconst PageNumberLi: React.ComponentType = styled.li`\n color: ${(props) => props.theme.colors.highlight};\n display: inline-block;\n margin-right: 20px;\n`\n\nconst VotedProducerPaginationContainer: React.ComponentType = styled(Grid)`\n width: 100%;\n`\n\nexport const VotedProducerPagination: React.SFC<{\n currentPage: number\n numberOfPages: number\n showNext: boolean\n showPrev: boolean\n onClickPage: (offset: number) => void\n onPrevClick: () => void\n onNextClick: () => void\n}> = ({\n currentPage,\n numberOfPages,\n showPrev,\n showNext,\n onPrevClick,\n onNextClick,\n onClickPage\n}) => {\n function renderPageNumbers(pageCount: number) {\n const pages = pagination(currentPage, pageCount)\n return pages.map((pageNumber: string, index: number) => {\n if (pageNumber === \"...\") {\n return (\n \n {pageNumber}\n \n )\n }\n\n const pageNumberInt = parseInt(pageNumber, 10)\n return (\n \n onClickPage(pageNumberInt)}\n >\n {pageNumberInt + 1}\n \n \n )\n })\n }\n\n return (\n \n \n {\" \"}\n {showPrev ? (\n onPrevClick()} />\n ) : null}\n \n \n {renderPageNumbers(numberOfPages)}\n \n \n {showNext ? (\n onNextClick()} />\n ) : null}\n \n \n )\n}\n","export function pagination(current: number, total: number) {\n const leftGap = current > 4\n const rightGap = total - current > 4\n\n const items: string[] = []\n\n for (let i = 0; i < total; i++) {\n if (leftGap && i > 1 && i < current - 1) {\n if (items[items.length - 1] !== \"...\") {\n items.push(\"...\")\n }\n } else if (rightGap && i > current + 1 && i < total - 2) {\n if (items[items.length - 1] !== \"...\") {\n items.push(\"...\")\n }\n } else {\n items.push(i.toString())\n }\n }\n\n return Object.assign([], items)\n}\n","import { extractValueWithUnits } from \"@dfuse/explorer\"\nimport { Account, Permission } from \"../models/account\"\nimport { Vote } from \"../models/vote\"\nimport { DonutData } from \"../atoms/pie-chart/donut-chart\"\nimport { t } from \"i18next\"\nimport { theme } from \"../theme\"\nimport numeral from \"numeral\"\nimport { Config } from \"../models/config\"\n\nexport interface HierarchyData {\n depth: number\n lastChild: boolean\n parentDepths: number[]\n permission: Permission\n index?: number\n hasChilds: boolean\n}\n\nexport interface StakeDetail {\n from: string\n to: string\n cpu_weight: string\n net_weight: string\n}\n\nexport function assignHierarchy(\n permissions: Permission[],\n currentHierarchy: HierarchyData[],\n parentHierarchy?: HierarchyData\n): HierarchyData[] {\n if (currentHierarchy.length === 0 && !parentHierarchy) {\n const hierarchyEntry = buildTopLevelHierarchyEntry(permissions)\n\n currentHierarchy = assignHierarchy(permissions, [hierarchyEntry], hierarchyEntry)\n } else if (parentHierarchy) {\n const childPermissions = getChilds(permissions, parentHierarchy.permission)\n\n if (childPermissions.length === 0) {\n return currentHierarchy\n }\n childPermissions.forEach((permission: Permission, index: number) => {\n const lastChild = index === childPermissions.length - 1\n const hierarchyEntry = buildHierarchyEntry(\n permissions,\n permission,\n lastChild,\n parentHierarchy\n )\n currentHierarchy = [...currentHierarchy, hierarchyEntry]\n currentHierarchy = assignHierarchy(permissions, currentHierarchy, hierarchyEntry)\n })\n } else {\n return []\n }\n\n return [...currentHierarchy]\n}\n\nexport function buildTopLevelHierarchyEntry(permissions: Permission[]) {\n const hierarchyDataEntry = {\n lastChild: true,\n parentDepths: [],\n permission: permissions.find((permission: Permission) => !permission.parent),\n depth: 0,\n hasChilds: false,\n } as HierarchyData\n hierarchyDataEntry.hasChilds = getChilds(permissions, hierarchyDataEntry.permission).length > 0\n return hierarchyDataEntry\n}\n\nexport function getChilds(permissions: Permission[], parentPermission: Permission) {\n return permissions.filter(\n (permission: Permission) => permission.parent === parentPermission.perm_name\n )\n}\n\nexport function buildHierarchyEntry(\n permissions: Permission[],\n permission: Permission,\n lastChild: boolean,\n parentHierarchy: HierarchyData\n) {\n const hierarchyEntry = {\n lastChild,\n parentDepths: [],\n permission,\n depth: parentHierarchy.depth + 1,\n hasChilds: false,\n } as HierarchyData\n hierarchyEntry.parentDepths = getParentDepths(parentHierarchy, hierarchyEntry)\n hierarchyEntry.hasChilds = getChilds(permissions, hierarchyEntry.permission).length > 0\n\n return hierarchyEntry\n}\n\nexport function getParentDepths(\n parentHierarchyEntry: HierarchyData,\n hierarchyEntry: HierarchyData\n) {\n const parentDepths = Object.assign([], parentHierarchyEntry.parentDepths)\n if (!hierarchyEntry.lastChild) {\n parentDepths.push(parentHierarchyEntry.depth)\n }\n return parentDepths\n}\n\n// ************************************************************************************* //\n\nexport function getRankInfo(\n account: Account,\n votes: Vote[]\n): { rank: number; votePercent: number; website: string } {\n let rank = 0\n let votePercent = 0\n let website = \"\"\n votes.forEach((vote, index) => {\n if (vote.producer === account.account_name) {\n rank = index + 1\n votePercent = vote.votePercent\n website = vote.website\n }\n })\n return { rank, votePercent, website }\n}\n\nexport function getWebsiteInfo(account: Account, votes: Vote[]) {\n let link: string\n let verified = false\n\n if (!account.account_verifications) {\n link = getRankInfo(account, votes).website\n } else if (\n account.account_verifications.website &&\n account.account_verifications.website.handle !== \"\"\n ) {\n link = account.account_verifications.website.handle\n verified = account.account_verifications.website.verified\n } else {\n link = getRankInfo(account, votes).website\n }\n\n return { link, verified }\n}\n\nexport function getRankStatus(rankInfo: { rank: number; votePercent: number; website: string }) {\n const { rank } = rankInfo\n if (rank < 22) {\n return t(\"vote.list.legend.active\")\n }\n\n if (rankInfo.votePercent < 0.5) {\n return t(\"vote.list.legend.runnerUps\")\n }\n\n return t(\"vote.list.legend.standBy\")\n}\n\nexport function getRankBgColor(rankInfo: { rank: number; votePercent: number; website?: string }) {\n const { rank } = rankInfo\n if (rank < 22) {\n return rank % 2 ? \"#00c8b1\" : \"#27cfb7\"\n }\n\n // The logic is not correct, the Stand-By should be based on the condition Daily EOS Reward > 100 EOS\n // if (rankInfo.votePercent >= 0.5) {\n // return rank % 2 ? \"#fbac53\" : \"#ffb866\"\n // }\n\n // Let's all by runner-ups for now\n return rank % 2 ? \"#bfbfbf\" : \"#d0d0d0\"\n}\n\nexport function sumCPUStakes(stakes: StakeDetail[], accountName: string): number {\n return stakes.reduce((a: number, b: StakeDetail) => {\n if (b.to !== accountName) {\n a += parseFloat(b.cpu_weight.split(\" \")[0])\n }\n return a\n }, 0.0)\n}\n\nexport function sumNETStakes(stakes: StakeDetail[], accountName: string): number {\n return stakes.reduce((a: number, b: StakeDetail) => {\n if (b.to !== accountName) {\n a += parseFloat(b.net_weight.split(\" \")[0])\n }\n return a\n }, 0.0)\n}\n\nexport interface AccountResources {\n cpu: {\n stakedTotal: number\n stakedFromOthers: number\n selfStaked: number\n stakedToOthers: number\n }\n net: {\n stakedTotal: number\n stakedFromOthers: number\n selfStaked: number\n stakedToOthers: number\n }\n rexLiquid: number\n rexFunds: number\n availableFunds: number\n pendingRefund: number\n totalOwnerShip: number\n stakes: StakeDetail[]\n}\n\nexport function getAccountResources(account: Account, stakes: StakeDetail[]): AccountResources {\n const totalResources = account.total_resources\n const selfDelegated = account.self_delegated_bandwidth\n const refundRequest = account.refund_request\n const rexTokens = account.rex_balance\n ? account.rex_balance.vote_stake\n : `0.0000 ${Config.chain_core_symbol_code}`\n const rexFunds = account.rex_funds\n ? account.rex_funds.balance\n : `0.0000 ${Config.chain_core_symbol_code}`\n const rexCpuLoans = account.cpu_loans ? account.cpu_loans : 0\n const rexNetLoans = account.net_loans ? account.net_loans : 0\n\n let stakedCpu = parseFloat(extractValueWithUnits(totalResources.cpu_weight)[0])\n const availableFunds = parseFloat(extractValueWithUnits(account.core_liquid_balance)[0])\n const selfStakedCpu = parseFloat(extractValueWithUnits(selfDelegated.cpu_weight)[0])\n const rexStake = parseFloat(extractValueWithUnits(rexTokens)[0])\n const rexFundsAmount = parseFloat(extractValueWithUnits(rexFunds)[0])\n const stakedCpuFromOthers = stakedCpu - selfStakedCpu\n\n if (stakes.length > 0) {\n stakedCpu += sumCPUStakes(stakes, account.account_name)\n }\n\n let stakedNetwork = parseFloat(extractValueWithUnits(totalResources.net_weight)[0])\n const selfStakedNet = parseFloat(extractValueWithUnits(selfDelegated.net_weight)[0])\n const stakedNetworkFromOthers = stakedNetwork - selfStakedNet\n if (stakes.length > 0) {\n stakedNetwork += sumNETStakes(stakes, account.account_name)\n }\n\n let pendingRefund = 0.0\n if (refundRequest) {\n pendingRefund = parseFloat(extractValueWithUnits(refundRequest.net_amount)[0])\n pendingRefund += parseFloat(extractValueWithUnits(refundRequest.cpu_amount)[0])\n }\n\n const totalOwnerShip =\n stakedCpu +\n stakedNetwork +\n rexStake +\n rexFundsAmount +\n rexCpuLoans +\n rexNetLoans +\n pendingRefund +\n availableFunds -\n stakedNetworkFromOthers -\n stakedCpuFromOthers\n\n return {\n net: {\n stakedTotal: stakedNetwork,\n stakedFromOthers: stakedNetworkFromOthers,\n selfStaked: selfStakedNet,\n stakedToOthers: stakedNetwork - selfStakedNet - stakedNetworkFromOthers,\n },\n cpu: {\n stakedTotal: stakedCpu,\n stakedFromOthers: stakedCpuFromOthers,\n selfStaked: selfStakedCpu,\n stakedToOthers: stakedCpu - selfStakedCpu - stakedCpuFromOthers,\n },\n rexLiquid: rexStake,\n rexFunds: rexNetLoans + rexCpuLoans + rexFundsAmount,\n availableFunds,\n pendingRefund,\n totalOwnerShip,\n stakes: stakes.filter((stake: StakeDetail) => stake.to !== account.account_name),\n }\n}\n\nexport interface PieChartParams {\n pieChartData: DonutData[]\n pieChartCenter: string\n pieChartColorsForPie: string[]\n pieChartColors: string[]\n pieChartDataForPie: DonutData[]\n}\n\nexport function getPieChartParams(\n accountResources: AccountResources,\n wrapperRenderer: (accountResources: AccountResources, type: string, value: number) => JSX.Element\n): PieChartParams {\n const pieChartData: DonutData[] = [\n {\n label: t(\"account.pie_chart.labels.staked_cpu\"),\n value: accountResources.cpu.stakedTotal,\n renderWrapper: (value: any) => wrapperRenderer(accountResources, \"cpu\", value),\n },\n {\n label: t(\"account.pie_chart.labels.staked_network\"),\n value: accountResources.net.stakedTotal,\n renderWrapper: (value: any) => wrapperRenderer(accountResources, \"net\", value),\n },\n {\n label: t(\"account.pie_chart.labels.rex\"),\n value: accountResources.rexLiquid,\n renderWrapper: (value: any) => wrapperRenderer(accountResources, \"REX\", value),\n },\n {\n label: t(\"account.pie_chart.labels.rex_funds\"),\n value: accountResources.rexFunds,\n renderWrapper: (value: any) => wrapperRenderer(accountResources, \"REX_FUNDS\", value),\n },\n {\n label: t(\"account.pie_chart.labels.pending_refund\"),\n value: accountResources.pendingRefund,\n renderWrapper: (value: any) => wrapperRenderer(accountResources, \"refund\", value),\n },\n {\n label: t(\"account.pie_chart.labels.available_funds\"),\n value: accountResources.availableFunds,\n renderWrapper: (value: any) => wrapperRenderer(accountResources, \"available_funds\", value),\n },\n ]\n\n const pieChartColors = [\n theme.colors.stakeCPU,\n theme.colors.stakeNetwork,\n theme.colors.stakeREX,\n theme.colors.stakeREXFunds,\n theme.colors.secondHighlight,\n theme.colors.ternary,\n ]\n\n const pieChartCenter =\n // eslint-disable-next-line prefer-template\n numeral(accountResources.totalOwnerShip).format(\"0,0\") + \" \" + Config.chain_core_symbol_code\n\n let pieChartDataForPie = pieChartData\n let pieChartColorsForPie = pieChartColors\n if (accountResources.totalOwnerShip === 0.0) {\n pieChartColorsForPie = [theme.colors.text]\n pieChartDataForPie = [{ label: \"\", value: 1 }]\n }\n\n return {\n pieChartData,\n pieChartCenter,\n pieChartColors,\n pieChartColorsForPie,\n pieChartDataForPie,\n }\n}\n","import { t } from \"i18next\"\nimport * as React from \"react\"\nimport { formatNumber, Box } from \"@dfuse/explorer\"\nimport { Vote } from \"../../models/vote\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport { Links } from \"../../routes\"\nimport { MonospaceTextLink } from \"../../atoms/text-elements/misc\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { VotedProducerPagination } from \"./voted-producers-pagination.component\"\nimport { theme, styled } from \"../../theme\"\nimport { observer } from \"mobx-react\"\nimport {\n TableCaptionColor,\n TableCaptionItem,\n UiTable,\n UiTableBody,\n UiTableCell,\n UiTableHead,\n UiTableRow,\n UiTableRowAlternated\n} from \"../../atoms/ui-table/ui-table.component\"\nimport { Panel } from \"../../atoms/panel/panel.component\"\nimport { getRankBgColor } from \"../../helpers/account.helpers\"\nimport { Config } from \"../../models/config\"\nimport { LoadingOutlined } from \"@ant-design/icons\"\n\nconst UiTableCellRank: React.ComponentType = styled(UiTableCell)`\n color: white !important;\n background-color: ${(props: any) => props.bg} !important;\n text-align: center !important;\n width: 40px !important;\n padding: 4px 14px 4px 14px !important;\n`\n\nconst UiTableCellAccount: React.ComponentType = styled(UiTableCell)`\n min-width: 180px !important;\n`\n\nconst UiTableCellRankHeader: React.ComponentType = styled(UiTableCell)`\n text-align: center !important;\n width: 30px !important;\n padding: 4px 14px 4px 14px !important;\n`\n\nconst ProducerSpinner: React.ComponentType = styled(LoadingOutlined)`\n transform: scale(0.3) translateY(14px);\n position: absolute;\n top: 5px;\n left: 120px;\n`\n\nconst CaptionItem: React.ComponentType = styled(TableCaptionItem)``\n\nconst CaptionColor: React.ComponentType = styled(TableCaptionColor)``\n\nconst TableCaption: React.ComponentType = styled(Box)`\n border-top: 1px solid ${(props) => props.theme.colors.border};\n`\n\ninterface Props {\n votes: Vote[]\n headBlockProducer: string\n}\n\ntype State = {\n offset: number\n}\n\n@observer\nexport class ListVotedProducers extends React.Component {\n private perPage = 100\n\n constructor(props: Props, state: any) {\n super(props)\n this.state = { offset: 0 }\n }\n\n renderProducerSpinner(producer: string): JSX.Element {\n if (this.props.headBlockProducer === producer) {\n return \n }\n return \n }\n\n renderItem = (vote: Vote, rank: number) => {\n const bgColor = getRankBgColor({ rank, votePercent: vote.votePercent })\n\n return (\n \n \n {rank}\n \n \n \n {vote.producer}\n \n {this.renderProducerSpinner(vote.producer)}\n \n {vote.votePercent.toFixed(3)} %\n \n {formatNumber(vote.decayedVote)} {Config.chain_core_symbol_code}\n \n \n )\n }\n\n onNext = () => {\n this.setState((prevState) => ({ offset: prevState.offset + this.perPage }))\n }\n\n onPrev = () => {\n this.setState((prevState) => ({ offset: prevState.offset - this.perPage }))\n }\n\n renderItems = (): JSX.Element => {\n // @ts-ignore Arguments to `map` are to hard to understand for TypeScript it seems\n\n return (\n \n {this.props.votes\n .slice(this.state.offset, this.state.offset + this.perPage)\n .map((vote: Vote, index: number) => this.renderItem(vote, this.state.offset + index + 1))}\n \n )\n }\n\n renderHeader = (): JSX.Element => {\n return (\n \n \n {t(\"vote.list.header.rank\")}\n {t(\"vote.list.header.account\")}\n \n {t(\"vote.list.header.votePercent\")}\n \n \n {t(\"vote.list.header.decayedVote\")}\n \n \n \n )\n }\n\n renderCaption = (): JSX.Element => {\n return (\n \n \n \n \n {t(\"vote.list.legend.active\")}\n \n \n \n \n \n {t(\"vote.list.legend.standBy\")}\n \n \n \n \n \n {t(\"vote.list.legend.runnerUps\")}\n \n \n \n )\n }\n\n onClickPage = (offset: number) => {\n this.setState((prevState) => ({ offset: prevState.offset * this.perPage }))\n }\n\n render() {\n const numberOfPages = this.props.votes.length / this.perPage\n return (\n (\n \n )}\n >\n \n \n {this.renderHeader()}\n {this.renderItems()}\n \n {this.renderCaption()}\n \n \n \n \n \n \n \n )\n }\n}\n","import { t } from \"i18next\"\nimport { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { Banner } from \"../../components/banner/banner.component\"\nimport { ListVotedProducers } from \"../../components/voted-producers/list-voted-producers.component\"\nimport { Vote } from \"../../models/vote\"\nimport { metricsStore, voteStore } from \"../../stores\"\nimport { PageContainer } from \"../../components/page-container/page-container\"\nimport { registerVoteTallyStream } from \"../../streams/vote-listener\"\nimport { DataError, Box } from \"@dfuse/explorer\"\nimport { Stream, ErrorData } from \"@dfuse/client\"\n\ninterface State {\n fetchError: boolean\n}\n\n@observer\nexport class VoteTally extends React.Component {\n state: State = { fetchError: false }\n voteTallyStream?: Stream\n\n async registerStreams() {\n this.setState({ fetchError: false })\n this.voteTallyStream = await registerVoteTallyStream((error: ErrorData) => {\n this.setState({ fetchError: true })\n })\n }\n\n async unregisterStreams() {\n if (this.voteTallyStream) {\n await this.voteTallyStream.close()\n this.voteTallyStream = undefined\n }\n }\n\n async componentDidMount() {\n await this.registerStreams()\n }\n\n async componentWillUnmount() {\n await this.unregisterStreams()\n }\n\n renderEmpty() {\n return {t(\"vote.list.empty\")}\n }\n\n renderTable(votes: Vote[], headBlockProducer: string) {\n return \n }\n\n render() {\n const { votes } = voteStore\n const { headBlockProducer } = metricsStore\n const isEmpty = votes.length <= 0\n\n if (this.state.fetchError) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n {isEmpty ? this.renderEmpty() : this.renderTable(votes, headBlockProducer)}\n \n )\n }\n}\n","import { streamVoteTally, isInboundMessageType, VoteTallyData } from \"../clients/websocket/eosws\"\nimport { InboundMessage, InboundMessageType, ErrorData } from \"@dfuse/client\"\nimport { voteStore } from \"../stores\"\n\nimport { getDfuseClient } from \"@dfuse/explorer\"\n\nexport async function registerVoteTallyStream(errorCallback: (error: ErrorData) => void) {\n return streamVoteTally(getDfuseClient(), (message: InboundMessage) => {\n if (message.type === InboundMessageType.ERROR) {\n errorCallback(message.data as ErrorData)\n }\n\n if (isInboundMessageType(message, \"vote_tally\")) {\n voteStore.update((message.data as VoteTallyData).vote_tally)\n }\n })\n}\n","import { styled } from \"../../theme\"\nimport Input from \"@material-ui/core/Input\"\nimport * as React from \"react\"\nimport Paper from \"@material-ui/core/Paper/Paper\"\n\nexport const UiInput: React.ComponentType = styled(Input)`\n font-size: 16px !important;\n width: ${(props: any) => (props.width ? props.width : \"250px\")} !important;\n background-color: ${(props) => props.theme.colors.formFieldBg};\n padding-left: 8px;\n box-sizing: border-box;\n height: 35px;\n\n input:-webkit-autofill {\n background-color: ${(props) => props.theme.colors.formFieldBg} !important;\n }\n\n input:-webkit-autofill {\n -webkit-text-fill-color: black;\n -webkit-box-shadow: 0 0 0 30px ${(props) => props.theme.colors.formFieldBg} inset;\n }\n`\n\nexport const UiSearch: React.ComponentType = styled(Input)`\n background-color: ${(props: any) => props.theme.colors.bleu8};\n color: white !important;\n padding: 0.75em 95px 0.75em 25px;\n font-size: 18px !important;\n height: 76px;\n width: 100%;\n outline: none;\n text-align: left;\n font-family: \"Roboto Condensed\", sans-serif !important;\n border-radius: 0px !important;\n\n input:-webkit-autofill {\n color: white !important;\n background-color: ${(props) => props.theme.colors.searchBg} !important;\n }\n\n input:-webkit-autofill {\n -webkit-text-fill-color: white;\n -webkit-box-shadow: 0 0 0 30px ${(props) => props.theme.colors.searchBg} inset;\n }\n\n &:hover,\n &:focus {\n background-color: #7a85ff !important;\n }\n\n input::placeholder {\n opacity: 1;\n font-size: 18px !important;\n font-family: \"Roboto Condensed\", sans-serif !important;\n\n font-weight: 400;\n color: ${(props) => props.theme.colors.bleu5} !important;\n }\n\n @media (max-width: 767px) {\n height: 56px;\n padding: 0.75em 43px 0.75em 55px;\n }\n`\n\nexport const UiPaper: React.ComponentType = styled(Paper)`\n position: absolute;\n z-index: 1;\n margin-top: 0;\n left: 0;\n right: 0;\n`\n","import { debounce } from \"ts-debounce\"\nimport * as React from \"react\"\nimport { SuggestionSection } from \"../../models/typeahead\"\n\ninterface Props {\n searchValue: string | null\n fetchData: (input: string, options: any) => Promise\n onLoaded: (suggestions?: SuggestionSection[], error?: Error) => void\n children: FetcherChildrenFunction\n}\n\nexport type FetcherControllerStateAndHelpers = State\n\nexport type FetcherChildrenFunction = (\n options: FetcherControllerStateAndHelpers\n) => React.ReactNode\n\ninterface State {\n suggestions: SuggestionSection[]\n loading: boolean\n error?: Error\n}\n\nexport class UiTypeaheadFetcher extends React.Component {\n requestId = 0\n state = { loading: false, error: undefined, suggestions: [] }\n mounted = false\n\n fetch = debounce(() => {\n if (!this.mounted) {\n return\n }\n this.requestId++\n this.props\n .fetchData(this.props.searchValue ? this.props.searchValue : \"\", {\n requestId: this.requestId\n })\n .then(\n (suggestions: SuggestionSection[]) => {\n if (this.mounted) {\n this.props.onLoaded(suggestions, undefined)\n this.setState({ loading: false, suggestions })\n }\n },\n (error: Error) => {\n if (this.mounted) {\n this.props.onLoaded(undefined, error)\n this.setState({ loading: false, error })\n }\n }\n )\n }, 300)\n\n reset(overrides: any) {\n this.setState({ loading: false, error: null, suggestions: [], ...overrides })\n }\n\n prepareFetch() {\n this.reset({ loading: true })\n }\n componentDidMount() {\n this.mounted = true\n this.prepareFetch()\n this.fetch()\n }\n componentDidUpdate(prevProps: Props) {\n if (prevProps.searchValue !== this.props.searchValue) {\n this.prepareFetch()\n this.fetch()\n }\n }\n componentWillUnmount() {\n this.mounted = false\n }\n render() {\n return this.props.children ? this.props.children(this.state) : null\n }\n}\n","import * as React from \"react\"\nimport Downshift from \"downshift\"\nimport MenuItem from \"@material-ui/core/MenuItem/MenuItem\"\nimport { UiPaper, UiSearch } from \"../ui-text-field/ui-text-field\"\nimport { Suggestion, SuggestionSection } from \"../../models/typeahead\"\nimport { UiTypeaheadFetcher } from \"./ui-typeahead-fetcher\"\nimport { Cell, Grid } from \"../ui-grid/ui-grid.component\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faUser, faTimes, faSearch, faCube } from \"@fortawesome/free-solid-svg-icons\"\nimport { theme, styled } from \"../../theme\"\nimport { EllipsisText, Text } from \"../text/text.component\"\nimport { UiHrDense } from \"../ui-hr/ui-hr\"\nimport { t } from \"i18next\"\nimport { LoadingOutlined } from \"@ant-design/icons\"\n\ntype OnCloseListener = () => void\n\nconst PaperContainer: React.ComponentType = styled.div`\n position: relative;\n`\n\nconst SearchIcon: React.ComponentType = styled(FontAwesomeIcon)`\n width: 18px;\n`\n\nconst SearchWrapper: React.ComponentType = styled.div`\n position: relative;\n`\n\nconst RoundedSpinnerCube: React.ComponentType = styled(LoadingOutlined)`\n width: 28px !important;\n height: 28px !important;\n margin-right: auto;\n margin-left: auto;\n`\n\nconst SearchButton: React.ComponentType = styled.div`\n position: absolute;\n border: none !important;\n\n cursor: pointer;\n color: #fff;\n border-radius: 0px !important;\n padding: 0 6px;\n\n &:disabled {\n cursor: inherit;\n }\n\n width: fit-content;\n\n top: 19px;\n right: 11px;\n font-size: 38px;\n\n @media (max-width: 767px) {\n top: 12px;\n left: 8px;\n font-size: 28px;\n }\n`\n\nconst SyntaxBox: React.ComponentType = styled.div`\n width: auto;\n font-size: 16px;\n border-radius: 3px;\n padding: 3px 1px;\n line-height: 16px;\n margin-bottom: 5px;\n height: auto;\n display: inline-block;\n background-color: rgba(101, 101, 111, 0.1);\n`\n\nconst DeleteIcon: React.ComponentType = styled(FontAwesomeIcon)`\n position: absolute;\n\n color: #fff;\n &:disabled {\n cursor: inherit;\n }\n &:hover {\n cursor: pointer;\n }\n top: 29px;\n right: 70px;\n\n @media (max-width: 767px) {\n top: 18px;\n right: 15px;\n }\n`\n\nconst ResponsiveContainer: React.ComponentType = styled(Cell)`\n @media (max-width: 767px) {\n div:nth-child(1n + 4) {\n display: none;\n }\n }\n`\n\ninterface Props {\n placeholder: string\n defaultQuery?: string\n getItems: (inputValue: string | null) => Promise\n help?: JSX.Element | string\n clickToFollowTypes?: string[]\n onSubmit: (query: string) => Promise\n}\n\ninterface State {\n value: string\n searching: boolean\n}\n\nfunction renderInput(inputProps: any) {\n const { InputProps, ref, ...other } = inputProps\n\n return (\n \n )\n}\n\nfunction formatBold(content: string) {\n const regex: RegExp = /(\\S*:)/g\n return (\n \n {content.split(regex).map((value: string, index: number) => {\n if (regex.test(value)) {\n return {value}\n }\n\n return value\n })}\n \n )\n}\n\nfunction renderSummary(summary: string, accountName: string, isHighlighted: boolean) {\n return (\n \n {t(`search.suggestions.summary.${summary}`, { accountName })}\n \n )\n}\n\nexport class UiTypeahead extends React.Component {\n suggestions: SuggestionSection[] = []\n\n constructor(props: Props) {\n super(props)\n this.state = {\n value: props.defaultQuery ? props.defaultQuery : \"\",\n searching: false\n }\n }\n\n componentDidUpdate(prevProps: Props): void {\n if (this.props.defaultQuery && this.props.defaultQuery !== prevProps.defaultQuery) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n value: this.props.defaultQuery,\n searching: false\n })\n }\n }\n\n renderSuggestion(params: {\n groupId: string\n suggestion: { label: string; summary?: string }\n index: number\n itemProps: any\n highlightedIndex: number | null\n selectedItem: string\n }) {\n const isHighlighted =\n params.highlightedIndex !== null ? params.highlightedIndex === params.index : false\n const isSelected = (params.selectedItem || \"\").indexOf(params.suggestion.label) > -1\n let icon: any = faSearch\n\n if (params.groupId === \"accounts\") {\n icon = faUser\n } else if (params.groupId === \"blocks\") {\n icon = faCube\n }\n\n return (\n \n \n \n \n \n {formatBold(params.suggestion.label)}\n\n \n {params.suggestion.summary\n ? renderSummary(params.suggestion.summary, this.state.value, isHighlighted)\n : null}\n \n \n \n )\n }\n\n getHighlightedItem(\n highlightedIndex: number\n ): { suggestion: Suggestion | undefined; id: string | undefined } {\n let index = 0\n let suggestion\n let id\n this.suggestions.forEach((suggestionGroup: SuggestionSection) => {\n suggestionGroup.suggestions.forEach((suggestionRef: Suggestion) => {\n if (index === highlightedIndex) {\n suggestion = suggestionRef\n id = suggestionGroup.id\n }\n index += 1\n })\n })\n\n return { suggestion, id }\n }\n\n getItemByValue(\n selectedItemValue: string\n ): { suggestion: Suggestion | undefined; id: string | undefined; index: number } {\n let suggestion\n let id\n let index = 0\n let i = 0\n this.suggestions.forEach((suggestionGroup: SuggestionSection) => {\n suggestionGroup.suggestions.forEach((suggestionRef: Suggestion) => {\n if (suggestionRef.key === selectedItemValue) {\n suggestion = suggestionRef\n id = suggestionGroup.id\n index = i\n }\n i += 1\n })\n })\n\n return { suggestion, id, index }\n }\n\n handleStateChange = (changes: any) => {\n if (changes.type === Downshift.stateChangeTypes.clickItem) {\n // eslint-disable-next-line no-prototype-builtins\n const ref = changes.hasOwnProperty(\"selectedItem\")\n ? this.getItemByValue(changes.selectedItem)\n : this.getItemByValue(this.state.value)\n if (ref.id && (this.props.clickToFollowTypes || []).includes(ref.id)) {\n this.onSubmitInternal(() => {\n return undefined\n }, ref.index)\n } else {\n this.setState({ value: changes.selectedItem })\n }\n }\n\n // eslint-disable-next-line no-prototype-builtins\n if (changes.hasOwnProperty(\"selectedItem\")) {\n this.setState({ value: changes.selectedItem })\n // eslint-disable-next-line no-prototype-builtins\n } else if (changes.hasOwnProperty(\"inputValue\")) {\n this.setState({ value: changes.inputValue })\n }\n }\n\n handleKeyDown = (\n event: KeyboardEvent,\n closeMenu: (cb?: OnCloseListener) => any,\n selectHighlightedItem: (params: any, cb: any) => any,\n highlightedIndex: number | null\n ) => {\n if (event.keyCode === 13) {\n if (highlightedIndex !== null) {\n selectHighlightedItem({}, () => {\n const ref = this.getHighlightedItem(highlightedIndex)\n if (ref.id && (this.props.clickToFollowTypes || []).includes(ref.id)) {\n this.onSubmitInternal(closeMenu, highlightedIndex)\n }\n })\n } else {\n this.onSubmitInternal(closeMenu, null)\n }\n }\n }\n\n handleInputChange = (event: any) => {\n this.setState({ value: event.target.value })\n }\n\n resetField = () => {\n this.setState({\n value: \"\"\n })\n }\n\n renderItems(\n items: SuggestionSection[],\n getItemProps: any,\n highlightedIndex: number | null,\n selectedItem: any\n ) {\n let totalIndex = 0\n return (items || []).map((suggestionGroup: SuggestionSection, index: number) => {\n if (suggestionGroup.suggestions && suggestionGroup.suggestions.length > 0) {\n let groupItems: any = []\n\n const groupItemsContent = suggestionGroup.suggestions.map((suggestion: Suggestion) => {\n const render = this.renderSuggestion({\n groupId: suggestionGroup.id,\n suggestion,\n index: totalIndex,\n itemProps: getItemProps({ item: suggestion.label }),\n highlightedIndex,\n selectedItem\n })\n totalIndex += 1\n return render\n })\n\n groupItems = [\n ...groupItems,\n {groupItemsContent}\n ]\n\n if (index < items.length - 1) {\n groupItems = groupItems.concat([])\n }\n\n return groupItems\n }\n return null\n })\n }\n\n onSubmitInternal = (\n closeMenu: (cb?: OnCloseListener) => any,\n highlightedIndex: number | null\n ) => {\n if (!this.state.searching) {\n closeMenu()\n let { value } = this.state\n let suggestionWithId\n if (highlightedIndex !== null) {\n suggestionWithId = this.getHighlightedItem(highlightedIndex)\n if (suggestionWithId.suggestion) {\n value = suggestionWithId.suggestion.label\n }\n }\n\n this.setState({ value, searching: true }, () => {\n this.props.onSubmit(value).then(\n () => {\n this.setState({ value, searching: false })\n },\n () => {\n this.setState({ value, searching: false })\n }\n )\n })\n }\n }\n\n renderSearchButton(closeMenu: (cb?: OnCloseListener) => any, highlightedIndex: number | null) {\n if (this.state.searching) {\n return (\n \n \n \n )\n }\n\n return (\n this.onSubmitInternal(closeMenu, highlightedIndex)}\n name=\"search\"\n >\n \n \n )\n }\n\n renderDeleteIcon() {\n return this.state.value && this.state.value.length > 0 ? (\n \n ) : null\n }\n\n render() {\n let popperNode: any\n\n const { value } = this.state\n return (\n \n {({\n getInputProps,\n getMenuProps,\n getItemProps,\n isOpen,\n selectedItem,\n inputValue,\n highlightedIndex,\n selectHighlightedItem,\n clearItems,\n setItemCount,\n getRootProps,\n closeMenu,\n setHighlightedIndex\n }) => (\n \n {renderInput({\n fullWidth: true,\n InputProps: getInputProps({\n onChange: this.handleInputChange,\n onKeyDown: (event: KeyboardEvent) =>\n this.handleKeyDown(event, closeMenu, selectHighlightedItem, highlightedIndex),\n placeholder: this.props.placeholder\n }),\n ref: (node: any) => {\n popperNode = node\n }\n })}\n {this.renderSearchButton(closeMenu, highlightedIndex)}\n {this.renderDeleteIcon()}\n \n {isOpen ? (\n \n {\n clearItems()\n if (suggestions) {\n // @ts-ignore\n setHighlightedIndex(null)\n setItemCount(\n suggestions\n .map(\n (suggestionGroup: SuggestionSection) =>\n suggestionGroup.suggestions.length\n )\n .reduce((sum: number, current) => sum + current, 0)\n )\n this.suggestions = suggestions\n }\n }}\n >\n {({ loading, suggestions, error }) => {\n if (loading) {\n return (\n \n {t(\"search.loading\")}\n \n )\n }\n if (error) {\n return (\n \n {t(\"search.errorFetch\")}\n \n )\n }\n\n return this.renderItems(\n suggestions,\n getItemProps,\n highlightedIndex,\n selectedItem\n )\n }}\n \n {this.props.help}\n \n ) : null}\n \n \n )}\n \n )\n }\n}\n","import { searchStore } from \"../stores\"\nimport { SearchTransactionsResponse } from \"@dfuse/client\"\n\nimport { getDfuseClient } from \"@dfuse/explorer\"\n\nexport function performStructuredSearch(cursor: string) {\n if (!searchStore.loadingTransactions) {\n if (searchStore.didRangeFilterChange()) {\n searchStore.cursorCache.resetAll()\n cursor = \"\"\n }\n\n searchStore.saveBlockRange()\n searchStore.loadingTransactions = true\n\n const { q, ...rest } = searchStore.toParams(cursor)\n\n return getDfuseClient()\n .searchTransactions(q, rest)\n .then((response: SearchTransactionsResponse) => {\n searchStore.loadingTransactions = false\n searchStore.results = response.transactions || []\n searchStore.updateCursorCache(response.cursor)\n searchStore.searchError = undefined\n })\n .catch((error: any) => {\n searchStore.loadingTransactions = false\n searchStore.searchError = error\n searchStore.results = []\n })\n }\n\n return cursor\n}\n","import { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { SuggestionSection } from \"../../models/typeahead\"\nimport { UiTypeahead } from \"../../atoms/ui-typeahead/ui-typeahead\"\nimport { Links } from \"../../routes\"\nimport { RouteComponentProps } from \"react-router\"\nimport queryString from \"query-string\"\nimport { metricsStore, searchStore } from \"../../stores\"\nimport { formatNumber, NBSP } from \"@dfuse/explorer\"\nimport { t } from \"i18next\"\nimport { performStructuredSearch } from \"../../services/search\"\nimport { ExternalTextLink } from \"../../atoms/text/text.component\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faQuestionCircle } from \"@fortawesome/free-solid-svg-icons\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { theme } from \"../../theme\"\nimport {\n OmniSearchResponse,\n fetchTypeaheadSuggestions,\n omniSearch\n} from \"../../clients/websocket/eosws\"\n\ninterface Props extends RouteComponentProps<{}> {}\n\n@observer\nexport class SearchBar extends React.Component {\n async getItems(query: string | null): Promise {\n if (query === null || query.length < 1) {\n return []\n }\n\n query = query.replace(/,/g, \"\").toLowerCase()\n\n return fetchTypeaheadSuggestions(query).then((suggestions: SuggestionSection[]) => {\n const blockNumCandidate = parseInt(query!, 10)\n if (Number.isInteger(blockNumCandidate) && blockNumCandidate < metricsStore.headBlockNum) {\n const blockSuggestion: SuggestionSection[] = [\n {\n id: \"blocks\",\n suggestions: [\n { label: formatNumber(blockNumCandidate), key: blockNumCandidate.toString() }\n ]\n }\n ]\n suggestions = [...blockSuggestion, ...suggestions]\n }\n return suggestions\n })\n }\n\n onSubmit = (query: string): Promise => {\n searchStore.query = query\n\n if (query.trim().length <= 0) {\n return Promise.resolve({ done: true })\n }\n\n const sqeMatcher: RegExp = /[a-z]:/\n if (sqeMatcher.test(query)) {\n this.onStructuredSearchSubmit(query)\n return Promise.resolve({ done: true })\n }\n\n return this.onSimpleSearchSubmit(query)\n }\n\n handleSearchResult = (result?: OmniSearchResponse) => {\n if (result === undefined) {\n this.props.history.push(`${Links.searchResults()}?query=${searchStore.query}`)\n } else if (result.type === \"block\") {\n window.location.href = Links.viewBlock({ id: result.data.id })\n } else if (result.type === \"account\") {\n this.props.history.push(Links.viewAccount({ id: result.data.account_name }))\n } else if (result.type === \"transaction\") {\n window.location.href = Links.viewTransaction({ id: result.data.id })\n } else if (result.type === \"eth_registered\") {\n this.props.history.push(Links.viewAccount({ id: result.data }))\n } else if (result.type === \"eth_unregistered\") {\n this.props.history.push(`${Links.searchResults()}?query=${searchStore.query}`)\n } else {\n this.props.history.push(`${Links.searchResults()}?query=${searchStore.query}`)\n }\n }\n\n onSimpleSearchSubmit = (query: string): Promise => {\n if (\n searchStore.query === \"eosio\" ||\n searchStore.query === \"eosio.prods\" ||\n searchStore.query === \"eosio.null\"\n ) {\n this.props.history.push(`${Links.viewAccount({ id: searchStore.query })}`)\n return Promise.resolve()\n }\n\n return omniSearch(query)\n .then(this.handleSearchResult)\n .catch((error: Error) => {})\n }\n\n onStructuredSearchSubmit = (query: string) => {\n this.props.history.push(\n `${Links.viewTransactionSearch()}?${queryString.stringify({\n q: encodeURIComponent(query)\n })}`\n )\n performStructuredSearch(\"\")\n }\n\n renderHelp() {\n return (\n \n \n {t(\"search.sqeDocumentation\")}\n {NBSP}\n \n \n \n )\n }\n\n render() {\n return (\n \n )\n }\n}\n","import * as React from \"react\"\nimport Hidden from \"@material-ui/core/Hidden\"\nimport { Cell } from \"../ui-grid/ui-grid.component\"\nimport { styled } from \"../../theme\"\nimport { observer } from \"mobx-react\"\nimport Drawer from \"@material-ui/core/Drawer/Drawer\"\n\ninterface State {\n opened: boolean\n}\n\nconst NoFocus = styled.div`\n height: 100%;\n &:focus {\n outline: none !important;\n }\n`\n\n// The state of the drawer can be forced from parent\n// with the parameters: onOpen, onClose, opened\ninterface Props {\n onOpen: () => any\n onClose: () => any\n mobileOpener: JSX.Element\n opener: JSX.Element\n content: JSX.Element\n renderMobileContent: (onClose: () => void) => JSX.Element\n opened?: boolean\n}\n\nconst Container: React.ComponentType = styled.div`\n text-align: center;\n`\n\n@observer\nexport class UiDrawer extends React.Component {\n state = {\n opened: false\n }\n\n componentDidUpdate(prevProps: Props): void {\n // Force state from parent if it decides to update the state\n if (this.props.opened !== undefined && prevProps.opened !== this.props.opened) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n opened: this.props.opened\n })\n }\n }\n\n componentDidMount(): void {\n if (this.props.opened !== undefined) {\n if (this.props.opened !== this.state.opened) {\n this.setState({\n opened: this.props.opened\n })\n }\n }\n }\n\n toggleDrawer = (open: boolean) => () => {\n if (open) {\n this.props.onOpen()\n } else {\n this.props.onClose()\n }\n this.setState({\n opened: open\n })\n }\n\n closeDrawer = () => {\n this.props.onClose()\n this.setState({\n opened: false\n })\n }\n\n render() {\n return (\n \n \n {this.props.opener}\n \n \n {this.props.mobileOpener}\n \n \n \n \n {this.props.content}\n
\n \n \n \n \n \n {this.props.renderMobileContent(this.closeDrawer)}\n \n \n \n \n )\n }\n}\n","import { AlignItemsProps, compose, layout, LayoutProps, space, SpaceProps } from \"styled-system\"\nimport { styled } from \"../theme\"\n\nexport type ImgProps = SpaceProps | LayoutProps | AlignItemsProps\n\nconst imgStyle = compose(space, layout)\n\n/**\n * A simple wrapper around `img` with those extra props available:\n * - spacing (margins & paddings)\n */\nexport const Img = styled.img`\n ${imgStyle}\n`\n","import * as React from \"react\"\nimport { color as color_, fontSize } from \"styled-system\"\nimport { Link } from \"react-router-dom\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { Links } from \"../../routes\"\nimport { t } from \"i18next\"\nimport { styled } from \"../../theme\"\nimport { Config } from \"../../models/config\"\nimport { Box, Text } from \"@dfuse/explorer\"\nimport { Img } from \"../../atoms/img\"\n\nconst LogoElement: React.ComponentType = styled.div`\n font-family: \"Lato\", sans-serif;\n font-weight: 600;\n ${color_};\n ${fontSize};\n top: -10px;\n position: relative;\n\n @media (max-width: 767px) {\n top: -6px;\n }\n`\n\nconst Tagline: React.ComponentType = styled.span`\n font-family: \"Lato\", sans-serif;\n font-weight: 600;\n color: ${(props) => props.theme.colors.logo1};\n ${fontSize};\n letter-spacing: 1px;\n`\n\nconst LogoLink: React.ComponentType = styled(Link)`\n display: block;\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\ninterface Props {\n variant: \"dark\" | \"light\"\n}\n\nexport const HeaderLogo: React.FC = () => {\n return (\n \n \n \n \n \n \n \n \n \n {t(\"core.tagline\")}\n \n \n {t(\"core.tagline2\")}\n \n \n \n \n )\n}\n\nconst Logo: React.FC = () => {\n const { network } = Config\n if (network?.logo) {\n if (network.logo_text) {\n return \n }\n\n return \n }\n\n return \n}\n\nconst LogoDefault: React.FC = () => (\n <>\n \n eos\n \n \n q\n \n \n)\n\nconst LogoImage: React.FC<{ image: string }> = ({ image }) => (\n \"Logo\"\n)\n\nconst LogoText = styled(Text)`\n font-family: \"Lato\", sans-serif;\n font-weight: 400;\n`\n\nconst LogoImageAndText: React.FC<{ image: string; text?: string }> = ({ image, text }) => (\n \n \"Logo\"\n {text ? (\n text === \"eosq\" ? (\n \n \n \n ) : (\n \n {text}\n \n )\n ) : null}\n \n)\n","import * as React from \"react\"\r\n\r\nexport const PictoTransactions = (props: any) => (\r\n \r\n \r\n \r\n \r\n)\r\n","import * as React from \"react\"\r\n\r\n// Converted using https://www.smooth-code.com/open-source/svgr/playground/\r\n\r\nexport const PictoProducer = (props: any) => (\r\n \r\n \r\n \r\n)\r\n","import * as React from \"react\"\r\n\r\nexport const PictoBlocks = (props: any) => (\r\n \r\n \r\n \r\n \r\n \r\n)\r\n","import * as React from \"react\"\nimport { withRouter, RouteComponentProps } from \"react-router\"\nimport { t } from \"i18next\"\nimport ListItem from \"@material-ui/core/ListItem/ListItem\"\nimport ListItemText from \"@material-ui/core/ListItemText/ListItemText\"\nimport List from \"@material-ui/core/List/List\"\nimport { theme, styled } from \"../../theme\"\nimport { PictoTransactions } from \"./svg/picto-transactions-01\"\nimport { PictoProducer } from \"./svg/picto-producer-01\"\nimport { PictoBlocks } from \"./svg/picto-blocks-01\"\nimport { TextLink } from \"../../atoms/text/text.component\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\n\nexport const UpperTextLink: React.ComponentType = styled(TextLink)`\n text-transform: uppercase;\n`\n\ninterface Props {\n variant: \"dark\" | \"light\"\n}\n\nclass MainMenuContainer extends React.Component & Props, any> {\n matchesCurrentPath(pathnames: string[]): boolean {\n let isMatch = false\n\n pathnames.forEach((pathName: string) => {\n if (pathName === \"/\") {\n isMatch = isMatch || this.props.location.pathname === pathName\n } else {\n isMatch = isMatch || this.props.location.pathname.includes(pathName)\n }\n })\n return isMatch\n }\n\n renderTextLink(text: string, path: string) {\n return (\n \n {text}\n \n )\n }\n\n get color() {\n return this.props.variant === \"dark\" ? theme.colors.bleu8 : theme.colors.primary\n }\n\n navigate(path: string) {\n this.props.history.push(path)\n }\n\n render() {\n return (\n \n this.navigate(\"/transactions\")}>\n \n \n \n \n \n this.navigate(\"/blocks\")}>\n \n \n \n \n \n this.navigate(\"/producers\")}>\n \n \n \n \n \n \n )\n }\n}\n\nexport const MainMenu = withRouter(MainMenuContainer)\n","import * as React from \"react\"\n\nimport { withRouter, RouteComponentProps } from \"react-router\"\nimport ListItem from \"@material-ui/core/ListItem/ListItem\"\nimport ListItemText from \"@material-ui/core/ListItemText/ListItemText\"\nimport List from \"@material-ui/core/List/List\"\nimport { theme, styled } from \"../../theme\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport { faCheck, faCircle } from \"@fortawesome/free-solid-svg-icons\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\n\nexport const UpperText: React.ComponentType = styled(Text)`\n text-transform: uppercase;\n`\n\ninterface Props extends RouteComponentProps<{}> {\n variant: \"dark\" | \"light\"\n options: { label: string; value: string }[]\n currentOption: string\n onSelect: (value: string) => void\n}\n\nclass SelectorContainer extends React.Component {\n renderActiveIcon() {\n if (this.props.variant === \"dark\") {\n return \n }\n return \n }\n\n renderInactiveIcon() {\n if (this.props.variant === \"dark\") {\n return \n }\n return \n }\n\n onSelect(event: Event, value: string) {\n event.preventDefault()\n this.props.onSelect(value)\n }\n\n renderTextLink(option: { label: string; value: string }) {\n let color = theme.colors.primary\n if (this.props.variant === \"dark\") {\n color = option.value !== this.props.currentOption ? theme.colors.grey5 : theme.colors.bleu8\n }\n return (\n \n {option.label}\n \n )\n }\n\n renderActiveNetworkIcon(option: { label: string; value: string }) {\n if (option.value !== this.props.currentOption) {\n return this.renderInactiveIcon()\n }\n return this.renderActiveIcon()\n }\n\n render() {\n return (\n \n {this.props.options.map((option: { label: string; value: string }) => {\n return (\n this.onSelect(event, option.value)}>\n \n {this.renderActiveNetworkIcon(option)}\n \n \n \n )\n })}\n \n )\n }\n}\n\nexport const SettingsSelector = withRouter(SelectorContainer)\n","import * as React from \"react\"\n\nimport { withRouter, RouteComponentProps } from \"react-router\"\nimport { SettingsSelector } from \"./settings-selector\"\nimport { Config, EosqNetwork } from \"../../models/config\"\nimport { t } from \"../../i18n\"\n\ninterface Props extends RouteComponentProps<{}> {\n variant: \"light\" | \"dark\"\n}\n\ninterface State {\n network: string\n}\n\nclass NetworkSelectorContainer extends React.Component {\n availableNetworks = Config.available_networks.sort((network: EosqNetwork, ref: EosqNetwork) =>\n network.is_test || network.name > ref.name ? 1 : -1\n )\n constructor(props: Props) {\n super(props)\n this.state = { network: Config.network_id }\n }\n\n onSelectNetwork = (value: string) => {\n if (value === this.state.network) {\n return\n }\n\n const selectedNetwork = Config.available_networks.find(\n (network: EosqNetwork) => network.id === value\n )\n if (selectedNetwork) window.location.href = selectedNetwork.url\n }\n\n render() {\n const networks = this.availableNetworks.map((network: EosqNetwork) => {\n return {\n label: t(`core.networkOptions.${network.id.replace(\"-\", \"_\")}`, {\n defaultValue: network.name,\n }),\n value: network.id,\n }\n })\n\n return (\n \n )\n }\n}\n\nexport const NetworkSelector = withRouter(NetworkSelectorContainer)\n","import { i18n } from \"../../i18n\"\n\nexport const LANGUAGE_OPTIONS = [{ label: \"EN\", value: \"en\" }, { label: \"中文\", value: \"zh\" }]\n\nexport function getCurrentLanguageName() {\n const currentLang = getCurrentLanguageValue()\n\n const currentLanguage = LANGUAGE_OPTIONS.find((ref) => ref.value === currentLang)\n\n let languageName = \"EN\"\n if (currentLanguage) {\n languageName = currentLanguage.label\n }\n\n return languageName\n}\n\nexport function getCurrentLanguageValue() {\n const usedLanguages = (i18n as any).languages\n\n const availableLanguages: string[] = LANGUAGE_OPTIONS.map(\n (language: { label: string; value: string }) => language.value\n )\n return usedLanguages.find((lang: string) => availableLanguages.includes(lang))\n}\n","import * as React from \"react\"\n\nimport { withRouter, RouteComponentProps } from \"react-router\"\nimport * as Cookies from \"js-cookie\"\nimport { SettingsSelector } from \"./settings-selector\"\nimport { getCurrentLanguageValue, LANGUAGE_OPTIONS } from \"./settings.helpers\"\n\ninterface Props extends RouteComponentProps<{}> {\n variant: \"dark\" | \"light\"\n}\n\nclass LanguageSelectorContainer extends React.Component {\n onSelectLanguage = (value: string) => {\n Cookies.set(\"i18next\", value)\n\n window.location.reload()\n }\n\n render() {\n return (\n \n )\n }\n}\n\nexport const LanguageSelector = withRouter(LanguageSelectorContainer)\n","import * as React from \"react\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport { HeaderLogo } from \"../header-elements/header-elements\"\nimport { MainMenu } from \"../main-menu/main-menu.component\"\nimport { theme, styled } from \"../../theme\"\nimport { NetworkSelector } from \"../settings-selectors/network-selector\"\nimport { LanguageSelector } from \"../settings-selectors/language-selector\"\nimport { t } from \"i18next\"\nimport { getCurrentLanguageValue } from \"../settings-selectors/settings.helpers\"\n\nconst HeaderWrapper: React.ComponentType = styled(Cell)`\n width: 100%;\n\n background: #474793; /* Old browsers */\n background: -moz-linear-gradient(left, #474793 8%, #5e5ec2 93%); /* FF3.6-15 */\n background: -webkit-linear-gradient(left, #474793 8%, #5e5ec2 93%); /* Chrome10-25,Safari5.1-6 */\n background: linear-gradient(\n to right,\n #474793 8%,\n #5e5ec2 93%\n ); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#474793', endColorstr='#5e5ec2',GradientType=1 ); /* IE6-9 */\n`\n\nexport class HeaderMenu extends React.Component {\n renderSectionTitle(text: string) {\n return (\n \n {text}\n \n )\n }\n\n render() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n\n \n {this.renderSectionTitle(t(\"core.menu.titles.navigation\"))}\n \n \n \n {this.renderSectionTitle(t(\"core.menu.titles.network\"))}\n \n \n \n {this.renderSectionTitle(t(\"core.menu.titles.language\"))}\n \n \n \n \n \n )\n }\n}\n","import * as React from \"react\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { HeaderLogo } from \"../header-elements/header-elements\"\nimport { MainMenu } from \"../main-menu/main-menu.component\"\nimport { theme, styled } from \"../../theme\"\nimport { Box } from \"@dfuse/explorer\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport { t } from \"i18next\"\nimport {\n getCurrentLanguageName,\n getCurrentLanguageValue,\n} from \"../settings-selectors/settings.helpers\"\nimport {\n faGlobeAmericas,\n faChevronLeft,\n faTimes,\n faVectorSquare,\n} from \"@fortawesome/free-solid-svg-icons\"\nimport { NetworkSelector } from \"../settings-selectors/network-selector\"\nimport { LanguageSelector } from \"../settings-selectors/language-selector\"\nimport { Config, EosqNetwork } from \"../../models/config\"\n\nconst HeaderWrapper: React.ComponentType = styled(Cell)`\n width: 100%;\n background-color: white;\n height: 100%;\n &:focus {\n outline: none !important;\n }\n\n div:focus {\n outline: none !important;\n }\n`\n\nconst SelectorWrapper: React.ComponentType = styled(Cell)`\n padding: 8px;\n background-color: ${(props) => props.theme.colors.grey3};\n height: 100vh;\n display: flex;\n flex-direction: column;\n`\n\nconst ChevronContainer: React.ComponentType = styled.div`\n position: absolute;\n top: 12px;\n left: 10px;\n z-index: 1000000;\n`\n\ninterface Props {\n onClose: () => void\n}\n\ninterface State {\n displayedSection: \"main\" | \"network\" | \"language\"\n}\n\nconst StyledIcon = styled(FontAwesomeIcon)`\n width: auto !important;\n height: 24px !important;\n`\n\nexport class HeaderMenuMobile extends React.Component {\n state = { displayedSection: \"main\" } as State\n\n showSection = (section: \"main\" | \"network\" | \"language\") => {\n this.setState({ displayedSection: section })\n }\n\n renderNetworkTitle(color: string, pl: number, width?: string) {\n return [\n \n \n ,\n \n {t(\"core.menu.titles.network\")}\n ,\n ]\n }\n\n renderLanguageTitle(color: string, pl: number, width?: string) {\n return [\n \n \n ,\n \n {t(\"core.menu.titles.language\")}\n ,\n ]\n }\n\n renderNetworkSummary() {\n const network = Config.available_networks.find((ref: EosqNetwork) => {\n return ref.id === Config.network_id\n })\n\n return (\n this.showSection(\"network\")}>\n {this.renderNetworkTitle(theme.colors.bleu8, 3, \"calc(50% - 12px)\")}\n \n {t(`core.networkOptions.${Config.network_id.replace(\"-\", \"_\")}`, {\n defaultValue: network ? network.name : Config.network_id,\n })}\n \n \n )\n }\n\n renderLanguageSummary() {\n const language = getCurrentLanguageName()\n\n return (\n this.showSection(\"language\")}>\n {this.renderLanguageTitle(theme.colors.bleu8, 3, \"calc(50% - 12px)\")}\n \n {language}\n \n \n )\n }\n\n renderNetworkContent() {\n return (\n \n \n this.showSection(\"main\")}>\n \n \n \n {this.renderNetworkTitle(theme.colors.grey6, 1)}\n \n \n \n \n \n \n )\n }\n\n renderLanguageContent() {\n return (\n \n \n this.showSection(\"main\")}>\n \n \n \n {this.renderLanguageTitle(theme.colors.grey6, 1)}\n \n \n \n \n \n \n )\n }\n\n onClose = () => {\n this.props.onClose()\n }\n\n renderMain() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n {this.renderNetworkSummary()}\n \n \n {this.renderLanguageSummary()}\n \n \n \n \n \n \n \n \n \n )\n }\n\n render() {\n switch (this.state.displayedSection) {\n case \"main\":\n return this.renderMain()\n case \"network\":\n return this.renderNetworkContent()\n case \"language\":\n return this.renderLanguageContent()\n default:\n return this.renderMain()\n }\n }\n}\n","import * as React from \"react\"\nimport { withRouter } from \"react-router\"\nimport { Button } from \"@material-ui/core\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { SearchBar } from \"../search-bar/search-bar\"\nimport { UiDrawer } from \"../../atoms/ui-drawer/ui-drawer\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport { HeaderMenu } from \"../header-menu/header-menu\"\nimport { HeaderLogo } from \"../header-elements/header-elements\"\nimport { theme, styled } from \"../../theme\"\nimport { faBars } from \"@fortawesome/free-solid-svg-icons\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { HeaderMenuMobile } from \"../header-menu/header-menu-mobile\"\nimport { menuStore } from \"../../stores\"\nimport { observer } from \"mobx-react\"\nimport { t } from \"i18next\"\n\nconst RoutedOmniSearch = withRouter(SearchBar)\n\ninterface State {\n height: number\n}\n\nconst StyledButton: React.ComponentType = styled(Button)`\n padding: 10px;\n border: 1px solid ${(props) => props.theme.colors.primary} !important;\n border-radius: 0 !important;\n`\n\n@observer\nexport class Header extends React.Component {\n drawerOpened = false\n\n renderMenuOpener() {\n return (\n \n \n {t(\"core.menu.mainTitle\")}\n \n \n \n )\n }\n\n renderMobileMenuOpener() {\n return (\n \n \n \n )\n }\n\n renderMobileContent(onClose: () => void): JSX.Element {\n return \n }\n\n componentDidMount(): void {\n this.drawerOpened = menuStore.opened\n }\n\n componentDidUpdate(): void {\n // forcing drawer state, do not remove\n if (menuStore.opened !== this.drawerOpened) {\n this.drawerOpened = menuStore.opened\n this.forceUpdate()\n }\n }\n\n render() {\n return (\n \n \n \n \n \n \n menuStore.open()}\n onClose={() => menuStore.close()}\n opener={this.renderMenuOpener()}\n mobileOpener={this.renderMobileMenuOpener()}\n content={}\n renderMobileContent={this.renderMobileContent}\n opened={menuStore.opened}\n />\n \n \n )\n }\n}\n","import { t } from \"i18next\"\nimport * as React from \"react\"\nimport { styled } from \"../../theme\"\nimport { Box } from \"@dfuse/explorer\"\n\nconst Title: React.ComponentType = styled.h1`\n display: inline-block;\n border-right: 1px solid ${(props) => props.theme.colors.text};\n margin: 0;\n margin-right: 20px;\n padding: 10px 23px 10px 0;\n font-size: 24px;\n font-weight: 500;\n vertical-align: top;\n color: ${(props) => props.theme.colors.text};\n`\n\nconst Subtitle: React.ComponentType = styled.h2`\n font-size: 14px;\n font-weight: normal;\n line-height: inherit;\n margin: 0;\n padding: 0;\n color: ${(props) => props.theme.colors.text};\n`\n\nconst Content: React.ComponentType = styled(Box)`\n display: inline-block;\n text-align: left;\n line-height: 49px;\n height: 49px;\n vertical-align: middle;\n`\n\nconst Wrapper: React.ComponentType = styled(Box)`\n justify-content: center;\n margin: 35vh 0;\n`\n\nexport const NotFound = () => (\n \n 404\n \n {t(\"core.notFoundErrorMessage\")}\n \n \n)\n","import { task } from \"mobx-task\"\nimport { BlockSummary } from \"../models/block\"\nimport { blockStore } from \"../stores\"\nimport { debugLog } from \"./logger\"\nimport {\n getBlock as getBlockApi,\n listBlocks,\n listBlockTransactions,\n ListTransactionsResponse\n} from \"../clients/websocket/eosws\"\n\nexport const fetchBlock = task(\n async (blockId: string) => {\n debugLog(\"Searching for block id [%s].\", blockId)\n const block = blockStore.findById(blockId)\n if (block !== undefined) {\n debugLog(\"Found block [%s] in blocks cache.\", blockId, block)\n return block\n }\n\n const result = await getBlock(blockId)\n if (result !== null) {\n debugLog(\"Found block [%s] via search API.\", blockId, result)\n return result as BlockSummary\n }\n\n debugLog(\"Block [%s] not found anywhere.\", blockId)\n return null\n },\n { swallow: true }\n)\n\nexport const fetchBlockList = task(\n async (offset: number) => {\n const perPage = 100\n return getBlocks(offset, perPage)\n },\n { swallow: true }\n)\n\nexport const getBlocks = task(\n async (offset: number, perPage: number) => {\n const blocks = await listBlocks(offset, perPage)\n if (!blocks || blocks.length === 0) {\n debugLog(\"No account found for query [%s] via API.\")\n return null\n }\n\n return blocks\n },\n { swallow: true }\n)\n\nexport const getBlock = task(\n async (id: string) => {\n const block = await getBlockApi(id)\n if (!block) {\n debugLog(\"No block found for query [%s] via API.\")\n return null\n }\n\n return block\n },\n { swallow: true }\n)\n\nfunction isEmptyTransactionResponse(response?: ListTransactionsResponse): boolean {\n return !response || response.transactions == null || response.transactions.length === 0\n}\n\nexport const fetchBlockTransactions = async (id: string, cursor: string, perPage: number) => {\n const transactionResponse = await listBlockTransactions(id, cursor, perPage)\n if (isEmptyTransactionResponse(transactionResponse)) {\n debugLog(\"No transactions found for block [%s] via API.\", id)\n return null\n }\n\n return transactionResponse\n}\n","import { t } from \"i18next\"\nimport { max } from \"ramda\"\nimport * as React from \"react\"\nimport { compactCount, compactString, formatNumber } from \"@dfuse/explorer\"\nimport { styled } from \"../../theme\"\nimport { BlockSummary } from \"../../models/block\"\nimport { Links } from \"../../routes\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { MonospaceTextLink } from \"../../atoms/text-elements/misc\"\nimport { faLock, faLockOpen } from \"@fortawesome/free-solid-svg-icons\"\n\nimport {\n TableIcon,\n TableIconLight,\n UiTable,\n UiTableBody,\n UiTableCell,\n UiTableHead,\n UiTableRow,\n UiTableRowAlternated\n} from \"../../atoms/ui-table/ui-table.component\"\nimport { TextLink } from \"../../atoms/text/text.component\"\nimport { formatDateFromString } from \"../../helpers/moment.helpers\"\n\nconst UiTableCellTransactionRatio: React.ComponentType = styled(UiTableCell)`\n border-left: 1px dashed #ddd;\n padding-left: 0px !important;\n`\nconst TransactionRatioCell: React.ComponentType = styled(Cell)`\n height: 30px;\n`\n\nconst Ratio: React.ComponentType = styled(Cell)`\n background-color: ${(props) => props.theme.colors.banner};\n height: 100%;\n float: right;\n`\n\ninterface Props {\n blocks: BlockSummary[]\n}\n\ninterface State {\n blockScheduleSelected: number\n}\n\nexport class ListBlocks extends React.Component {\n renderTimeStamp(timestamp: string) {\n if (!timestamp || timestamp === \"\") {\n return null\n }\n return (\n \n {formatDateFromString(timestamp, false)}\n \n )\n }\n\n renderBlockIrreversible(block: BlockSummary): JSX.Element | null {\n return block.irreversible ? : \n }\n\n renderItem = (block: BlockSummary, maxTransactionCount: number) => {\n const ratioWidth = Math.ceil(\n maxTransactionCount <= 0 ? 0 : (block.transaction_count / maxTransactionCount) * 100\n )\n\n return (\n \n \n \n {formatNumber(block.block_num)}\n \n {this.renderBlockIrreversible(block)}\n \n \n \n {compactString(block.id, 12, 0)}\n \n \n {this.renderTimeStamp(block.header.timestamp)}\n\n \n \n {block.header.producer}\n \n \n \n \n  \n \n \n \n {compactCount(block.transaction_count)}\n \n \n )\n }\n\n findMaxTransactionCount(blocks: BlockSummary[]) {\n return blocks.reduce(\n (maxTransactionCount, block) => max(block.transaction_count, maxTransactionCount),\n 0\n )\n }\n\n renderItems = (): JSX.Element => {\n if (this.props.blocks) {\n const maxTransactionCount = this.findMaxTransactionCount(this.props.blocks)\n\n return (\n \n {this.props.blocks.map((block: BlockSummary) =>\n this.renderItem(block, maxTransactionCount)\n )}\n \n )\n }\n return \n }\n\n renderHeader = () => {\n return (\n \n \n {t(\"block.list.header.block_num\")}\n {t(\"block.list.header.id\")}\n {t(\"block.list.header.timestamp\")}\n {t(\"block.list.header.producer\")}\n {t(\"block.list.header.transactionCount\")}\n  \n \n \n )\n }\n\n render() {\n return (\n \n {this.renderHeader()}\n {this.renderItems()}\n \n )\n }\n}\n","import { t } from \"i18next\"\nimport { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { DataEmpty } from \"@dfuse/explorer\"\nimport { Panel } from \"../../atoms/panel/panel.component\"\nimport { fetchBlockList } from \"../../services/block\"\nimport { ListBlocks } from \"../../components/list-blocks/list-blocks.component\"\nimport { ContentLoaderComponent } from \"../../components/content-loader/content-loader.component\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { NavigationButtons } from \"../../atoms/navigation-buttons/navigation-buttons\"\nimport { metricsStore } from \"../../stores\"\nimport { RouteComponentProps } from \"react-router\"\nimport queryString from \"query-string\"\nimport { Links } from \"../../routes\"\nimport { BlockSummary, BLOCK_NUM_100B } from \"../../models/block\"\n\ntype Props = RouteComponentProps<{}>\n\n@observer\nexport class PagedBlocks extends ContentLoaderComponent {\n firstBlockNum = BLOCK_NUM_100B\n lastBlockNum = BLOCK_NUM_100B\n\n PER_PAGE = 100\n\n get parsed() {\n return queryString.parse(this.props.location.search)\n }\n\n componentDidMount() {\n if (typeof this.parsed.lastBlockNum === \"string\" && this.parsed.lastBlockNum && this.parsed.lastBlockNum.match(/^[0-9]+$/)) {\n this.lastBlockNum = parseInt(this.parsed.lastBlockNum)\n }\n\n fetchBlockList(this.lastBlockNum)\n }\n\n renderEmpty() {\n return \n }\n\n renderContent = (blocks: BlockSummary[]) => {\n if (!blocks) {\n return this.renderEmpty()\n }\n\n this.lastBlockNum = blocks[0].block_num\n this.firstBlockNum = blocks[blocks.length - 1].block_num\n return (\n \n \n \n \n \n \n {this.renderNavigation()}\n \n \n \n )\n }\n\n onFirst = () => {\n this.props.history.replace(`${Links.blocks()}?lastBlockNum=${metricsStore.headBlockNum - 1}`)\n\n fetchBlockList(metricsStore.headBlockNum - 1)\n }\n\n onNext = () => {\n this.props.history.replace(`${Links.blocks()}?lastBlockNum=${this.firstBlockNum - 1}`)\n\n fetchBlockList(this.firstBlockNum - 1)\n }\n\n onPrev = () => {\n this.props.history.replace(\n `${Links.blocks()}?lastBlockNum=${this.lastBlockNum + this.PER_PAGE}`\n )\n\n fetchBlockList(this.lastBlockNum + this.PER_PAGE)\n }\n\n renderNavigation = () => {\n return (\n \n )\n }\n\n render() {\n return (\n this.renderNavigation()}>\n {this.handleRender(fetchBlockList, t(\"block.list.loading\"))}\n \n )\n }\n}\n","import { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { Banner } from \"../../components/banner/banner.component\"\nimport { PagedBlocks } from \"./paged-blocks\"\nimport { PageContainer } from \"../../components/page-container/page-container\"\nimport { RouteComponentProps } from \"react-router\"\n\ninterface Props extends RouteComponentProps {}\n\n@observer\nexport class BlocksPage extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n","import { t } from \"i18next\"\nimport { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { MonospaceText, MonospaceTextLink } from \"../../atoms/text-elements/misc\"\nimport { DetailLine, BULLET, formatNumber, formatPercentage, truncateString } from \"@dfuse/explorer\"\n\nimport { Links } from \"../../routes\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { Age } from \"../../atoms/age/age.component\"\nimport { fetchBlock } from \"../../services/block\"\nimport { metricsStore } from \"../../stores\"\nimport { RouteComponentProps } from \"react-router-dom\"\nimport { BlockProgressPie } from \"./block-progress-pie\"\nimport { computeTransactionTrustPercentage } from \"../../models/transaction\"\nimport { ContentLoaderComponent } from \"../../components/content-loader/content-loader.component\"\nimport { Panel } from \"../../atoms/panel/panel.component\"\nimport { PanelTitleBanner } from \"../../atoms/panel/panel-title-banner\"\nimport { UiToolTip } from \"../../atoms/ui-tooltip/ui-tooltip\"\nimport { NavigationButtons } from \"../../atoms/navigation-buttons/navigation-buttons\"\nimport { PageContainer } from \"../../components/page-container/page-container\"\nimport { theme, styled } from \"../../theme\"\nimport { BlockSummary, ProducerKey } from \"../../models/block\"\n\ninterface Props extends RouteComponentProps {}\n\nconst ScheduleUl: React.ComponentType = styled.ul`\n list-style: none;\n text-align: left;\n -webkit-columns: 3;\n -moz-columns: 3;\n columns: 3;\n list-style-position: inside;\n padding-left: 0px;\n\n @media (max-width: 450px) {\n columns: 2;\n -webkit-columns: 2;\n -moz-columns: 2;\n }\n`\nconst PanelContentWrapper: React.ComponentType = styled(Cell)`\n width: 100%;\n // min-width: 1000px;\n`\n\n@observer\nexport class BlockHeader extends ContentLoaderComponent {\n componentDidMount() {\n this.changeDocumentTitle()\n fetchBlock(this.props.match.params.id)\n }\n\n componentDidUpdate(prevProps: Props) {\n this.changeDocumentTitle()\n if (prevProps.match.params.id !== this.props.match.params.id) {\n fetchBlock(this.props.match.params.id)\n }\n }\n\n changeDocumentTitle() {\n document.title = `${truncateString(this.props.match.params.id, 8).join(\n \"\"\n )} ${BULLET} block ${BULLET} eosq`\n }\n\n hasRecentMetrics(block: BlockSummary) {\n return metricsStore.lastIrreversibleBlockNum > 0 && metricsStore.headBlockNum > block.block_num\n }\n\n renderProducerValue = (producer: string): React.ReactChild => {\n if (!producer || producer === \"\") {\n return {t(\"transaction.detailPanel.producer.unknown\")}\n }\n\n return (\n {producer}\n )\n }\n\n renderAge = (timestamp: string): React.ReactChild => {\n return \n }\n\n renderText = (text: string) => {\n return {text}\n }\n\n renderMonospaceText = (text: string) => {\n return {text}\n }\n\n renderProducerSchedule = (block: BlockSummary): JSX.Element[] => {\n return (block.active_schedule.producers || []).map(\n (scheduleItem: ProducerKey, index: number) => {\n return (\n
  • \n {index + 1}: {scheduleItem.producer_name}\n
  • \n )\n }\n )\n }\n\n blockInactive = (block: BlockSummary): boolean => {\n return metricsStore.lastIrreversibleBlockNum >= block.block_num && !block.irreversible\n }\n\n renderStatus = (block: BlockSummary): JSX.Element | string => {\n const percentage = computeTransactionTrustPercentage(\n block.block_num,\n metricsStore.headBlockNum,\n metricsStore.lastIrreversibleBlockNum\n )\n\n if (!this.hasRecentMetrics(block)) {\n return \"-\"\n }\n\n if (this.blockInactive(block)) {\n return (\n \n {t(\"block.stale\")}\n \n )\n }\n\n if (percentage >= 1) {\n return (\n \n {t(\"block.irreversible\")}\n \n )\n }\n\n return {formatPercentage(percentage)}\n }\n\n getNextBlock(refBlock: BlockSummary) {\n const candidates = (refBlock.sibling_blocks || []).filter((block: BlockSummary) => {\n return block.header.previous === refBlock.id\n })\n\n let winner: any\n if (candidates.length > 1) {\n winner = candidates.find((candidate: BlockSummary) => {\n return candidate.irreversible\n })\n }\n\n return winner || candidates[0]\n }\n\n getPreviousBlock(refBlock: BlockSummary) {\n return (refBlock.sibling_blocks || []).find((block: BlockSummary) => {\n return block.id === refBlock.header.previous\n })\n }\n\n goToBlock = (block: BlockSummary) => {\n this.props.history.push(Links.viewBlock({ id: block.id }))\n }\n\n renderDetail = (block: BlockSummary): JSX.Element => {\n return (\n \n \n {this.renderMonospaceText(formatNumber(block.block_num))}\n \n \n {this.renderAge(block.header.timestamp)}\n \n \n {this.renderMonospaceText(block.id)}\n \n \n {this.renderStatus(block)}\n \n \n {this.renderProducerValue(block.header.producer)}\n \n \n {this.renderText(formatNumber(block.transaction_count))}\n \n \n \n \n {block.header.schedule_version}\n \n \n \n \n {t(\"block.producerSchedule.title\")} #{block.header.schedule_version}\n \n {this.renderProducerSchedule(block)}\n \n \n \n \n {block.dpos_lib_num ? (\n \n {\" \"}\n {this.renderMonospaceText(formatNumber(block.dpos_lib_num))}{\" \"}\n \n ) : null}\n \n )\n }\n\n renderContent = (block: BlockSummary) => {\n if (!block) {\n return
    \n }\n\n const next = this.getNextBlock(block)\n\n const prev = this.getPreviousBlock(block)\n\n return (\n \n \n this.goToBlock(next as BlockSummary)}\n onPrev={() => this.goToBlock(prev as BlockSummary)}\n showNext={!!next}\n showPrev={!!prev}\n showFirst={false}\n />\n \n \n \n \n \n {this.renderDetail(block)}\n \n \n {this.blockInactive(block) || !this.hasRecentMetrics(block) ? null : (\n \n )}\n \n \n \n \n \n )\n }\n\n render() {\n return this.handleRender(fetchBlock, \"Loading block\")\n }\n}\n","import * as React from \"react\"\nimport { task } from \"mobx-task\"\nimport { fetchBlockTransactions } from \"../../services/block\"\nimport { RouteComponentProps } from \"react-router-dom\"\nimport { t } from \"i18next\"\nimport { observer } from \"mobx-react\"\nimport { Panel } from \"../../atoms/panel/panel.component\"\nimport { styled } from \"../../theme\"\nimport { space } from \"styled-system\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport {\n ListTransactions,\n TransactionListInfo\n} from \"../../components/list-transactions/list-transactions.component\"\nimport { transactionLifecyclesToTransactionInfo } from \"../../helpers/legacy.helpers\"\nimport { Links } from \"../../routes\"\nimport { ListContentLoaderComponent } from \"../../components/list-content-loader/list-content-loader.component\"\nimport { TransactionLifecycle } from \"@dfuse/client\"\nimport { isTransactionResponseEmpty } from \"../../helpers/transaction.helpers\"\nimport { ListTransactionsResponse } from \"../../clients/websocket/eosws\"\n\nconst BlockTransactionContainer: React.ComponentType = styled.div`\n ${space};\n`\n\ninterface Props\n extends RouteComponentProps<{\n id: string\n }> {}\n\n@observer\nexport class BlockTransactions extends ListContentLoaderComponent {\n PER_PAGE = 30\n fetcher = task(fetchBlockTransactions, { swallow: true })\n\n cursoredUrl = (cursor: string) => {\n return `${Links.viewBlock({ id: this.props.match.params.id })}?cursor=${encodeURIComponent(\n cursor\n )}`\n }\n\n componentDidUpdate(prevProps: Props) {\n if (prevProps.match.params.id !== this.props.match.params.id) {\n this.componentDidMountHandler()\n }\n }\n\n fetchListForCursor(cursor: string) {\n this.fetcher(this.props.match.params.id, cursor || \"\", this.PER_PAGE)\n }\n\n prepareRenderContent = (response: ListTransactionsResponse): React.ReactNode => {\n if (isTransactionResponseEmpty(response)) {\n return this.renderEmpty()\n }\n\n this.cursorCache.prepareNextCursor(response.cursor)\n\n return this.renderContent(response.transactions)\n }\n\n renderContent = (transactions: TransactionLifecycle[]): React.ReactNode => {\n const transactionInfos: TransactionListInfo[] = transactionLifecyclesToTransactionInfo(\n transactions\n )\n const showNext = this.cursorCache.hasNextPage\n\n return (\n this.renderNavigation(\"light\", showNext)}\n >\n \n \n \n \n \n \n {this.renderNavigation(\"light\", showNext)}\n \n \n \n \n )\n }\n\n render() {\n return (\n \n {this.handleRender(this.fetcher, t(\"transaction.list.loading\"))}\n \n )\n }\n}\n","import { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { BlockHeader } from \"./blocks-detail-header\"\nimport { RouteComponentProps } from \"react-router-dom\"\nimport { BlockTransactions } from \"./block-transactions\"\nimport { PageContainer } from \"../../components/page-container/page-container\"\n\ninterface Props extends RouteComponentProps {}\n@observer\nexport class BlockDetailPage extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n )\n }\n}\n","import * as React from \"react\"\nimport { observer } from \"mobx-react\"\nimport { RouteComponentProps } from \"react-router-dom\"\nimport { Panel } from \"../../atoms/panel/panel.component\"\nimport queryString from \"query-string\"\nimport { styled } from \"../../theme\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport { fontSize } from \"styled-system\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { t } from \"i18next\"\nimport { PageContainer } from \"../../components/page-container/page-container\"\n\ninterface Props extends RouteComponentProps {}\n\nconst BoldText: React.ComponentType = styled.span`\n font-weight: bold;\n ${fontSize};\n`\n\n@observer\nexport class SearchResultPage extends React.Component {\n renderTitle() {\n const parsed = queryString.parse(this.props.location.search)\n let query: string = \"\"\n if (typeof parsed.query === \"string\") {\n query = parsed.query\n }\n\n return (\n \n {t(\"search.result.noResultFoundFor\")}{\" \"}\n {decodeURIComponent(query)}\n \n )\n }\n\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n","import { t } from \"i18next\"\nimport * as React from \"react\"\nimport { ExternalTextLink, Text } from \"../../atoms/text/text.component\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { translate } from \"react-i18next\"\nimport { Links } from \"../../routes\"\nimport { Link } from \"react-router-dom\"\nimport { fontSize, space } from \"styled-system\"\nimport { theme, styled } from \"../../theme\"\nimport { faTelegramPlane } from \"@fortawesome/free-brands-svg-icons\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { BULLET, NBSP } from \"@dfuse/explorer\"\nimport { getCurrentLanguageValue } from \"../settings-selectors/settings.helpers\"\n\nconst LogoLink: React.ComponentType = styled(Link)`\n display: block;\n display: flex;\n align-items: left;\n justify-content: left;\n ${space};\n`\n\nconst LogoFirst: React.ComponentType = styled.div`\n font-family: \"Lato\", sans-serif;\n font-weight: 600;\n color: ${(props) => props.theme.colors.logo1};\n ${fontSize};\n top: -10px;\n position: relative;\n`\n\nconst LogoSecond: React.ComponentType = styled.div`\n font-family: \"Lato\", sans-serif;\n font-weight: 600;\n color: ${(props) => props.theme.colors.logo2};\n ${fontSize};\n top: -10px;\n position: relative;\n`\n\nconst StyledText: React.ComponentType = styled(Text)`\n &:hover {\n color: ${theme.colors.primary};\n }\n`\n\nconst StyledFont: React.ComponentType = styled(FontAwesomeIcon)`\n &:hover {\n color: ${theme.colors.primary};\n }\n`\n\nconst BaseFooter = () => (\n \n \n \n \n \n \n eos\n \n \n q\n \n \n \n \n \n \n {t(\"footer.telegram\")}\n \n \n \n \n \n \n \n \n \n \n {t(\"footer.aboutDfuse\")}\n \n \n \n \n \n {t(\"footer.copyright\", { year: new Date().getFullYear() })}\n \n \n \n \n {t(\"footer.privacyPolicy\")}\n \n \n {NBSP}\n {BULLET}\n {NBSP}\n \n \n {t(\"footer.termsOfServices\")}\n \n \n \n \n \n)\n\nexport const Footer = translate()(BaseFooter)\n","import * as React from \"react\"\nimport { styled } from \"../../theme\"\nimport { Cell, Grid } from \"../ui-grid/ui-grid.component\"\nimport { Text } from \"../text/text.component\"\n\nconst Container: React.ComponentType = styled(Cell)`\n background-color: ${(props) => props.theme.colors.banner};\n margin-bottom: 1px;\n border-style: solid;\n border-color: ${(props) => props.theme.colors.bleu6};\n`\n\nexport interface BannerContainerProps {\n contentLeft: string | JSX.Element | JSX.Element[]\n children?: any\n contentRight?: string | JSX.Element | JSX.Element[]\n rest?: any\n}\n\nexport const CustomTitleBanner: React.SFC = ({\n contentLeft,\n contentRight,\n ...rest\n}) => (\n \n \n \n {contentLeft}\n \n {contentRight ? (\n \n \n {contentRight}\n \n \n ) : null}\n \n \n)\n","import { addGraph, models } from \"nvd3\"\nimport { select } from \"d3\"\nimport * as React from \"react\"\nimport { theme, styled } from \"../../theme\"\nimport { Cell } from \"../ui-grid/ui-grid.component\"\n\nconst StyledSvg: React.ComponentType = styled.svg`\n height: 150px;\n width: 150px;\n`\nexport interface DonutParams {\n data: DonutData[]\n colors: string[]\n}\n\nexport interface DonutData {\n label: string\n value: number\n renderToolTip?: () => JSX.Element\n renderWrapper?: (value: any) => JSX.Element\n}\n\nexport const DonutChartContainer: React.ComponentType = styled.div`\n width: 100%;\n height: 100%;\n // padding: 10px;\n position: relative;\n box-sizing: border-box;\n`\n\nexport const DonutChartCenterWrapper: React.ComponentType = styled.div`\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n align-items: center;\n`\n\nconst DonutChartCenter: React.ComponentType = styled(Cell)`\n position: relative;\n max-width: 400px;\n white-space: normal;\n display: flex;\n width: 160px;\n height: 160px;\n line-height: 18px;\n align-items: center;\n justify-content: center;\n text-align: center;\n`\n\nexport const DonutChart: React.SFC<{ id: string; params: DonutParams; centerContent: string }> = ({\n id,\n params,\n centerContent\n}) => {\n addGraph(() => {\n const chart = models\n .pieChart()\n .x((d: DonutData) => d.label)\n .y((d: DonutData) => d.value)\n .showLabels(false)\n .labelThreshold(0.05)\n .labelType(\"percent\")\n .donut(true)\n .donutRatio(0.7)\n .color(params.colors)\n .showLegend(false)\n .width(160)\n .height(160)\n .margin({ top: 10, left: 10 })\n\n chart.tooltip.contentGenerator((d) => {\n return `

    ${d.data.value}

    `\n })\n\n select(`#${id} svg`)\n .datum(params.data)\n .transition()\n .duration(350)\n .call(chart)\n\n return chart\n })\n\n return (\n \n \n {centerContent}\n \n \n \n )\n}\n","import { styled } from \"../../theme\"\nimport { Text } from \"../text/text.component\"\nimport * as React from \"react\"\n\ninterface ColorTileStyleProps {\n size?: number\n}\n\nexport const ColorTile: React.ComponentType = styled(Text)`\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n min-width: ${(props: ColorTileStyleProps) => {\n return props.size ? `${props.size}px` : \"14px;\"\n }};\n width: ${(props: ColorTileStyleProps) => {\n return props.size ? `${props.size}px` : \"14px;\"\n }};\n height: ${(props: ColorTileStyleProps) => {\n return props.size ? `${props.size}px` : \"14px;\"\n }};\n`\n","import { DonutData, DonutParams } from \"./donut-chart\"\nimport * as React from \"react\"\nimport { Cell, Grid } from \"../ui-grid/ui-grid.component\"\nimport { styled } from \"../../theme\"\nimport { Text } from \"../text/text.component\"\nimport numeral from \"numeral\"\nimport { ColorTile } from \"../color-tile/color-tile\"\nimport { Config } from \"../../models/config\"\n\nconst DonutChartLegendContainer: React.ComponentType = styled.div`\n margin-bottom: 5px;\n`\n\nconst renderEntry = (entry: DonutData, units: string) => {\n if (entry.renderWrapper) {\n return entry.renderWrapper(entry.value)\n }\n\n return (\n \n {numeral(entry.value).format(Config.chain_core_asset_format)} {units}\n \n )\n}\n\nconst renderContent = (data: DonutData[], legendColors: string[], units: string) => {\n return data.map((entry: DonutData, index: number) => {\n return (\n \n \n \n \n \n \n \n {entry.label}\n \n \n \n {renderEntry(entry, units)}\n \n \n \n )\n })\n}\n\nexport const DonutChartLegend: React.SFC<{ id: string; params: DonutParams; units: string }> = ({\n id,\n params,\n units,\n}) => {\n return (\n \n {renderContent(params.data, params.colors, units)}\n \n )\n}\n","import { getTableRows, GetTableRowParams, getProducerSchedule } from \"../websocket/eosws\"\nimport { legacyHandleDfuseApiError } from \"./api\"\nimport { Abi } from \"@dfuse/client\"\n\nimport { getDfuseClient } from \"@dfuse/explorer\"\n\nexport async function requestProducerSchedule() {\n return getProducerSchedule()\n}\n\nexport type StateTableParams = {\n code: string\n scope: string\n table: string\n}\n\nexport async function requestStateTable(params: StateTableParams) {\n return getDfuseClient()\n .stateTable(params.code, params.scope || params.code, params.table)\n .catch(legacyHandleDfuseApiError)\n}\n\nexport async function requestContractTableRows(params: GetTableRowParams) {\n const response = await getTableRows(params)\n if (response === undefined) {\n return []\n }\n\n return response\n}\n\nexport async function requestProducerAccountTableRows(accountName: string) {\n // FIXME: Replacable by `getDfuseClient().stateTableRow`\n\n return requestContractTableRows({\n scope: \"producerjson\",\n table: \"producerjson\",\n code: \"producerjson\",\n lower_bound: accountName,\n limit: 1\n })\n}\n\nexport async function requestAccountLinkedPermissions(accountName: string, blockNum: number) {\n return getDfuseClient()\n .statePermissionLinks(accountName, { blockNum })\n .catch(legacyHandleDfuseApiError)\n}\n\nexport async function requestAccountAbi(accountName: string): Promise<{ abi: Abi } | undefined> {\n return getDfuseClient()\n .stateAbi(accountName)\n .catch(legacyHandleDfuseApiError)\n}\n","import { task } from \"mobx-task\"\nimport {\n requestAccountAbi,\n requestContractTableRows,\n requestStateTable\n} from \"../clients/rest/account\"\nimport { contractTableStore } from \"../stores\"\nimport { GetTableRowParams } from \"../clients/websocket/eosws\"\n\nexport const fetchContractTableRows = task(\n async (params: GetTableRowParams) => {\n return requestContractTableRows(params)\n },\n { swallow: true }\n)\n\nexport const fetchContractTableRowsOnContractPage = task(\n async (params: GetTableRowParams) => {\n contractTableStore.loading = true\n contractTableStore.error = false\n return requestContractTableRows(params)\n .then((tableRows: any) => {\n contractTableStore.loading = false\n contractTableStore.tableRows = tableRows\n return contractTableStore.tableRows\n })\n .catch(() => {\n contractTableStore.loading = false\n contractTableStore.error = true\n })\n },\n { swallow: true }\n)\n\nexport const fetchContractTableRowsFromEOSWS = task(\n async (params: any) => {\n return requestStateTable(params)\n },\n { swallow: true }\n)\n\nexport const fetchContractAbi = task(\n async (accountName: string) => {\n return requestAccountAbi(accountName)\n },\n { swallow: true }\n)\n","import * as React from \"react\"\nimport { t } from \"i18next\"\nimport { observer } from \"mobx-react\"\nimport numeral from \"numeral\"\nimport { NBSP, DataLoading } from \"@dfuse/explorer\"\nimport { DonutChart } from \"../../../atoms/pie-chart/donut-chart\"\nimport { DonutChartLegend } from \"../../../atoms/pie-chart/donut-legend\"\nimport { Text } from \"../../../atoms/text/text.component\"\nimport { Cell, Grid } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport { Account } from \"../../../models/account\"\nimport { theme, styled } from \"../../../theme\"\nimport { fetchContractTableRowsFromEOSWS } from \"../../../services/contract-table\"\nimport {\n AccountResources,\n getAccountResources,\n getPieChartParams,\n PieChartParams,\n StakeDetail,\n} from \"../../../helpers/account.helpers\"\nimport { MonospaceText } from \"../../../atoms/text-elements/misc\"\nimport { SearchShortcut } from \"../../../components/search-shortcut/search-shortcut\"\nimport { UiToolTip } from \"../../../atoms/ui-tooltip/ui-tooltip\"\nimport { Config } from \"../../../models/config\"\n\nconst zeroCoreAsset =\n \"0.\" + \"0\".repeat(Config.chain_core_symbol_precision) + \" \" + Config.chain_core_symbol_code\n\ninterface Props {\n account: Account\n}\n\nconst HidableContainer: React.ComponentType = styled.div`\n @media (max-width: 850px) {\n width: 100%;\n text-align: center;\n }\n`\n\ninterface State {\n stakeDetails: StakeDetail[]\n stakeLoaded: boolean\n}\n\nconst ToolTipUl: React.ComponentType = styled.ul`\n list-style: none;\n padding-left: 10px;\n margin-bottom: 0;\n`\n\n@observer\nexport class AccountPieChart extends React.Component {\n state: State = { stakeDetails: [], stakeLoaded: false }\n\n componentDidMount() {\n this.fetchDelband()\n }\n\n componentDidUpdate(oldProps: Props) {\n if (this.props.account.account_name !== oldProps.account.account_name) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n stakeDetails: [],\n stakeLoaded: false,\n })\n\n this.fetchDelband()\n }\n }\n\n fetchDelband() {\n fetchContractTableRowsFromEOSWS({\n code: \"eosio\",\n json: true,\n limit: -1,\n scope: this.props.account.account_name,\n table: \"delband\",\n table_key: \"\",\n }).then((output: any) => {\n output = output as { more: boolean; rows: StakeDetail[] }\n this.setState({\n stakeDetails: output && output.rows ? output.rows.map((row: any) => row.json) : [],\n stakeLoaded: true,\n })\n })\n }\n\n renderPieChart(pieChartParams: PieChartParams) {\n return (\n \n \n \n \n \n )\n }\n\n renderToolTip(accountResources: AccountResources, type: string): JSX.Element {\n return (\n \n \n Self Staked:{\" \"}\n {accountResources[type].selfStaked.toFixed(Config.chain_core_symbol_precision)}\n {NBSP}\n {Config.chain_core_symbol_code}\n \n \n Staked From Others:{\" \"}\n {accountResources[type].stakedFromOthers.toFixed(Config.chain_core_symbol_precision)}\n {NBSP}\n {Config.chain_core_symbol_code}\n \n\n \n Staked To Others:{\" \"}\n {accountResources[type].stakedToOthers.toFixed(Config.chain_core_symbol_precision)}\n {NBSP}\n {Config.chain_core_symbol_code}\n \n \n {accountResources.stakes\n .filter((stake: StakeDetail) => stake[`${type}_weight`] !== zeroCoreAsset)\n .map((stake: StakeDetail, index: number) => {\n if (index < 20) {\n return (\n
  • \n to{\" \"}\n \n {stake.to}\n \n : {stake[`${type}_weight`]}\n
  • \n )\n }\n return null\n })}\n
    \n {accountResources.stakes.length > 20 ? (\n \n + {accountResources.stakes.length - 20} more\n \n ) : null}\n
    \n )\n }\n\n renderTooltipWrapper = (value: number, toolTip?: JSX.Element) => {\n if (toolTip) {\n return (\n \n \n \n {numeral(value).format(Config.chain_core_asset_format)}{\" \"}\n {Config.chain_core_symbol_code}\n \n \n {toolTip}\n \n )\n }\n return (\n \n {numeral(value).format(Config.chain_core_asset_format)} {Config.chain_core_symbol_code}\n \n )\n }\n\n renderSearchShortcutWrapper = (contents: JSX.Element, query: string) => {\n return (\n \n {contents}\n \n )\n }\n\n renderWrapper = (accountResources: AccountResources, type: string, value: number) => {\n let contents: JSX.Element\n let query = \"\"\n const accountName = this.props.account.account_name\n switch (type) {\n case \"cpu\":\n contents = this.renderTooltipWrapper(value, this.renderToolTip(accountResources, type))\n query = `(action:delegatebw OR action:undelegatebw) receiver:eosio data.receiver:${accountName}`\n return this.renderSearchShortcutWrapper(contents, query)\n case \"net\":\n contents = this.renderTooltipWrapper(value, this.renderToolTip(accountResources, type))\n query = `(action:delegatebw OR action:undelegatebw) receiver:eosio data.receiver:${accountName}`\n return this.renderSearchShortcutWrapper(contents, query)\n case \"refund\":\n contents = this.renderTooltipWrapper(value)\n query = `receiver:eosio action:refund data.owner:${accountName}`\n return this.renderSearchShortcutWrapper(contents, query)\n case \"REX\":\n contents = this.renderTooltipWrapper(value)\n query = `account:eosio (action:rentcpu OR action:rentnet OR action:deposit OR action:withdraw OR action:rentram OR action:updaterex OR action:buyrex OR action:sellrex OR action:cnclrexorder) (data.owner:${accountName} OR data.from:${accountName} OR data.receiver:${accountName})`\n return this.renderSearchShortcutWrapper(contents, query)\n case \"REX_FUNDS\":\n contents = this.renderTooltipWrapper(value)\n query = `account:eosio (action:rentcpu OR action:rentnet OR action:deposit OR action:withdraw OR action:rentram OR action:updaterex OR action:buyrex OR action:sellrex OR action:cnclrexorder) (data.owner:${accountName} OR data.from:${accountName} OR data.receiver:${accountName})`\n return this.renderSearchShortcutWrapper(contents, query)\n case \"available_funds\":\n contents = this.renderTooltipWrapper(value)\n query = `receiver:eosio.token action:transfer (data.from:${accountName} OR data.to:${accountName})`\n return this.renderSearchShortcutWrapper(contents, query)\n default:\n throw new Error(`Wrong type: ${type}`)\n }\n }\n\n render() {\n if (!this.state.stakeLoaded) {\n return (\n \n \n \n )\n }\n const accountResources = getAccountResources(this.props.account, this.state.stakeDetails)\n const pieChartParams = getPieChartParams(accountResources, this.renderWrapper)\n\n return (\n \n \n \n \n {t(\"account.pie_chart.legendTitle\")}\n \n \n \n \n {numeral(accountResources.totalOwnerShip).format(Config.chain_core_asset_format)}{\" \"}\n {Config.chain_core_symbol_code}\n \n \n \n\n \n {this.renderPieChart(pieChartParams)}\n \n \n \n \n \n )\n }\n}\n","import * as React from \"react\"\nimport { styled } from \"../../theme\"\nimport { Cell } from \"../ui-grid/ui-grid.component\"\n\nconst StatusBarContainer: React.ComponentType = styled(Cell)`\n height: 15px;\n`\n\nexport const LargeStatusBarContainer: React.ComponentType = styled(Cell)`\n height: 34px !important;\n // border: 1px solid ${(props) => props.theme.colors.neutral};\n`\n\nconst StatusBarElement = styled(Cell)`\n height: 100%;\n display: inline-block;\n`\n\nexport const StatusBar: React.SFC<{\n content: number[]\n color?: string\n total: number\n large?: boolean\n bg?: string\n children?: any\n}> = ({ content, color, total, large, bg, children }) => {\n if (!total) {\n return \n }\n const bgData = color || \"barDataValue\"\n let firstWidth = (content[0] * 100.0) / total\n if (firstWidth > 100 || content[0] === -1 || total === -1) {\n firstWidth = 100\n bg = \"trendDown\"\n }\n\n // const secondWidth = content.length > 1 ? content[1] * 100.0 / total : 0\n const Container = large ? LargeStatusBarContainer : StatusBarContainer\n return (\n \n \n {children}\n \n \n )\n}\n","import * as React from \"react\"\nimport { Cell, Grid } from \"../ui-grid/ui-grid.component\"\nimport { Text } from \"../text/text.component\"\nimport { theme, styled } from \"../../theme\"\n\nconst Container: React.ComponentType = styled(Grid)`\n margin-bottom: 16px;\n`\n\ninterface Props {\n title: string\n description: string | JSX.Element\n amount: JSX.Element\n}\n\nexport const StatusWidget: React.SFC = ({ title, description, amount }) => {\n return (\n \n \n \n {title}\n \n \n {description}\n \n \n \n {amount}\n \n \n )\n}\n","import { t } from \"i18next\"\nimport { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { StatusBar } from \"../../../atoms/status-bar/status-bar\"\nimport { Text } from \"../../../atoms/text/text.component\"\nimport { Cell, Grid } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport {\n extractValueWithUnits,\n formatBytes,\n formatMicroseconds,\n INFINITY,\n NBSP\n} from \"@dfuse/explorer\"\nimport { Account } from \"../../../models/account\"\nimport numeral from \"numeral\"\nimport { StatusWidget } from \"../../../atoms/status-widget/status-widget\"\nimport { theme, styled } from \"../../../theme\"\nimport { SearchShortcut } from \"../../../components/search-shortcut/search-shortcut\"\nimport { Config } from '../../../models/config'\n\nconst AccountStatusBarsContainer: React.ComponentType = styled.div`\n margin-top: 15px;\n`\n\ninterface Props {\n account: Account\n}\n\n@observer\nexport class AccountStatusBars extends React.Component {\n isInfiniteResources(numerator: number, denominator: number) {\n return Math.round(numerator) === -1 || Math.round(denominator) === -1\n }\n\n renderRatioText(formattedText: string, infinite: boolean) {\n return (\n \n {infinite ? INFINITY : formattedText}\n \n )\n }\n\n renderByteRatio(numerator: number, denominator: number) {\n const infinite = this.isInfiniteResources(numerator, denominator)\n return (\n \n {this.renderRatioText(formatBytes(numerator), infinite)} {this.renderUsed()}/{NBSP}\n {this.renderRatioText(formatBytes(denominator), infinite)}\n \n )\n }\n\n renderUsed() {\n return (\n \n {\" \"}\n {t(\"account.status.used\")}\n {NBSP}\n \n )\n }\n\n renderTimeRatio(numerator: number, denominator: number) {\n const infinite = this.isInfiniteResources(numerator, denominator)\n return (\n \n {this.renderRatioText(formatMicroseconds(numerator), infinite)} {this.renderUsed()}/{NBSP}\n {this.renderRatioText(formatMicroseconds(denominator), infinite)}\n \n )\n }\n\n renderStakeDetails(\n title: string,\n total: string,\n staked: string,\n other: number,\n ): JSX.Element {\n return (\n \n \n \n {t(\"account.summary.staked_by\")}\n \n \n\n \n \n {t(\"account.summary.self\")}\n \n \n {staked} {Config.chain_core_symbol_code}\n \n \n {other === 0.0 ? null : (\n \n \n {t(\"account.summary.tooltip.other\")}\n \n \n {numeral(other).format(Config.chain_core_asset_format)} {Config.chain_core_symbol_code}\n \n \n )}\n \n \n {title}\n \n \n {numeral(total).format(Config.chain_core_asset_format)} {Config.chain_core_symbol_code}\n \n \n \n )\n }\n\n renderRam(memoryContent: number[], memoryTotal: number) {\n let amount = memoryTotal - memoryContent[0]\n if (amount < 0) {\n amount = 0\n }\n return (\n \n \n {formatBytes(amount)}\n \n }\n />\n \n {this.renderByteRatio(memoryContent[0], memoryTotal)}\n \n \n \n \n \n )\n }\n\n renderCPU(\n cpuBandwidthContent: number[],\n cpuBandwidthTotal: number,\n totalCpu: string,\n stakedCpu: string,\n delegatedCpu: number,\n ) {\n const cpuBandwidthTitle = t(\"account.summary.tooltip.cpuTitle\")\n let amount = cpuBandwidthTotal - cpuBandwidthContent[0]\n if (amount < 0) {\n amount = 0\n }\n return (\n \n \n {formatMicroseconds(amount)}\n \n }\n />\n \n {this.renderTimeRatio(cpuBandwidthContent[0], cpuBandwidthTotal)}\n \n \n \n \n {this.renderStakeDetails(cpuBandwidthTitle, totalCpu, stakedCpu, delegatedCpu)}\n \n )\n }\n\n renderNetwork(\n networkBandwidthContent: number[],\n networkBandwidthTotal: number,\n totalNetwork: string,\n stakedNetwork: string,\n delegatedNetwork: number,\n ) {\n const networkBandwidthTitle = t(\"account.summary.tooltip.networkTitle\")\n let amount = networkBandwidthTotal - networkBandwidthContent[0]\n if (amount < 0) {\n amount = 0\n }\n\n return (\n \n \n {formatBytes(amount)}\n \n }\n />\n \n {this.renderByteRatio(networkBandwidthContent[0], networkBandwidthTotal)}\n \n \n \n \n {this.renderStakeDetails(\n networkBandwidthTitle,\n totalNetwork,\n stakedNetwork,\n delegatedNetwork,\n )}\n \n )\n }\n\n render() {\n const { account } = this.props\n const memoryContent = [account.ram_usage]\n const selfDelegatedBandwidth = account.self_delegated_bandwidth\n\n const cpuBandwidthContent = [account.cpu_limit.used, account.cpu_limit.available]\n const networkBandwidthContent = [account.net_limit.used, account.net_limit.available]\n\n const totalNetwork = extractValueWithUnits(account.total_resources.net_weight)[0]\n const totalCpu = extractValueWithUnits(account.total_resources.cpu_weight)[0]\n const stakedCpu = extractValueWithUnits(selfDelegatedBandwidth.cpu_weight)[0]\n const stakedNetwork = extractValueWithUnits(selfDelegatedBandwidth.net_weight)[0]\n const delegatedNetwork = parseFloat(totalNetwork) - parseFloat(stakedNetwork)\n const delegatedCpu = parseFloat(totalCpu) - parseFloat(stakedCpu)\n\n return (\n \n \n {this.renderRam(memoryContent, account.ram_quota)}\n {this.renderCPU(\n cpuBandwidthContent,\n account.cpu_limit.max,\n totalCpu,\n stakedCpu,\n delegatedCpu,\n )}\n {this.renderNetwork(\n networkBandwidthContent,\n account.net_limit.max,\n totalNetwork,\n stakedNetwork,\n delegatedNetwork,\n )}\n \n \n )\n }\n}\n","import { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { Cell, Grid } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport { SubTitle, Text } from \"../../../atoms/text/text.component\"\nimport { t } from \"i18next\"\nimport {\n Account,\n KeyWeight,\n Permission,\n PermissionLevelWeight,\n WaitWeight,\n LinkedPermission\n} from \"../../../models/account\"\nimport { theme, styled } from \"../../../theme\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { Links } from \"../../../routes\"\nimport {\n faCaretDown,\n faCaretRight,\n faClock,\n faKey,\n faUser\n} from \"@fortawesome/free-solid-svg-icons\"\n// eslint-disable-next-line import/no-unresolved\nimport { IconDefinition } from \"@fortawesome/fontawesome-common-types\"\nimport Collapsible from \"react-collapsible\"\nimport { MonospaceTextLink } from \"../../../atoms/text-elements/misc\"\nimport { secondsToTime } from \"@dfuse/explorer\"\nimport { assignHierarchy, HierarchyData } from \"../../../helpers/account.helpers\"\nimport { AutorizationBox } from \"../../../components/authorization-box/authorization-box.component\"\nimport { SearchShortcut } from \"../../../components/search-shortcut/search-shortcut\"\n\ninterface Props {\n account: Account\n}\n\nconst WrapperWithChilds: React.ComponentType = styled(Grid)`\n &:after {\n content: \" \";\n width: 0px;\n height: 0px;\n position: absolute;\n bottom: -6px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid ${(props) => props.theme.colors.grey4};\n left: 5px;\n }\n`\n\nconst CellCorner: React.ComponentType = styled(Cell)`\n position: absolute;\n top: 0px;\n right: 0px;\n width: 13px;\n height: 10px;\n border-left: 2px solid ${(props) => props.theme.colors.grey4};\n border-bottom: 2px solid ${(props) => props.theme.colors.grey4};\n`\n\nconst CellBottomLine: React.ComponentType = styled(Cell)`\n position: absolute;\n bottom: -20px;\n left: 10px;\n width: 16px;\n height: 20px;\n border-left: 2px solid ${(props) => props.theme.colors.grey4};\n`\n\n@observer\nexport class AccountPermissions extends React.Component {\n py = \"15px\"\n\n renderPermissionPill = (permission: Permission) => {\n return (\n \n \n \n {permission.perm_name}\n \n \n \n )\n }\n\n renderLinkedPermissions = (permission: Permission) => {\n return (this.props.account.linked_permissions || [])\n .filter(\n (linkedPermission: LinkedPermission) =>\n linkedPermission.permission_name === permission.perm_name\n )\n .map((linkedPermission: LinkedPermission, index: number) => {\n return (\n \n \n \n {linkedPermission.contract}\n \n \n @{linkedPermission.action}\n \n \n \n )\n })\n }\n\n renderPermissionGroup = (permission: Permission, idx: number, hasChilds: boolean) => {\n const Wrapper = hasChilds ? WrapperWithChilds : Grid\n return (\n \n {hasChilds ? : null}\n {this.renderPermissionPill(permission)}\n {this.renderPermissionValues(permission)}\n \n {this.renderLinkedPermissions(permission)}\n \n \n )\n }\n\n renderPermissionValues = (permission: Permission) => {\n return (\n \n {(permission.required_auth.keys || []).map((keyWeight: KeyWeight, index: number) => {\n return this.renderPermissionContent(\n faKey,\n keyWeight.weight.toString(),\n permission.required_auth.threshold.toString(),\n index,\n () => {\n const { key } = keyWeight\n const query = `(data.auth.keys.key:${key} OR data.active.keys.key:${key} OR data.owner.keys.key:${key})`\n return (\n \n {key}\n \n )\n }\n )\n })}\n {(permission.required_auth.accounts || []).map(\n (level: PermissionLevelWeight, index: number) => {\n return this.renderPermissionContent(\n faUser,\n level.weight.toString(),\n permission.required_auth.threshold.toString(),\n index,\n () => {\n return (\n \n \n \n )\n }\n )\n }\n )}\n {(permission.required_auth.waits || []).map((waitWeight: WaitWeight, index: number) => {\n return this.renderPermissionContent(\n faClock,\n waitWeight.weight.toString(),\n permission.required_auth.threshold.toString(),\n index,\n () => {\n return secondsToTime(waitWeight.wait_sec)\n }\n )\n })}\n \n )\n }\n\n renderPermissionContent = (\n icon: IconDefinition,\n weight: string,\n threshold: string,\n index: number,\n renderValue: () => JSX.Element | string\n ): JSX.Element => {\n // TODO: humanize wait_sec\n return (\n \n \n \n +{weight}/{threshold}\n \n \n \n \n \n \n {renderValue()}\n \n \n )\n }\n\n renderTitle(caret: IconDefinition) {\n return (\n \n \n \n \n \n {t(\"account.permissions.title\")}\n \n \n )\n }\n\n renderFromHierarchy(hierarchyData: HierarchyData[]) {\n return (\n \n {hierarchyData.map((entry: HierarchyData, index: number) => {\n return (\n \n {[...Array(entry.depth)].fill(1).map((_: number, idx: number) => {\n return this.renderLine(entry, idx, index * 100 + idx)\n })}\n {this.renderPermissionGroup(\n entry.permission,\n index * 100 + entry.depth,\n entry.hasChilds\n )}\n \n )\n })}\n \n )\n }\n\n renderLine = (hierarchyDataEntry: HierarchyData, index: number, largeIndex: number) => {\n return (\n \n {index + 1 === hierarchyDataEntry.depth ? : null}\n \n \n )\n }\n\n getGridTemplateColumns(depth: number) {\n const columns = [...Array(depth)]\n .fill(1)\n .map((_: number) => {\n return \"24px\"\n })\n .join(\" \")\n\n return `${columns} 1fr`\n }\n\n render() {\n const hierarchyData = assignHierarchy(this.props.account.permissions, [])\n return (\n \n \n \n \n \n {this.renderFromHierarchy(hierarchyData)}\n \n \n \n \n \n )\n }\n}\n","import { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { Account } from \"../../../../models/account\"\nimport { DetailLine, Cell, compactString } from \"@dfuse/explorer\"\nimport { t } from \"i18next\"\n\nimport { Text, TextLink } from \"../../../../atoms/text/text.component\"\nimport { MonospaceTextLink } from \"../../../../atoms/text-elements/misc\"\nimport { Links } from \"../../../../routes\"\nimport { formatDateFromString } from \"../../../../helpers/moment.helpers\"\n\ninterface Props {\n account: Account\n}\n\n@observer\nexport class DefaultAccountWidget extends React.Component {\n render() {\n const { account } = this.props\n\n return (\n \n \n {formatDateFromString(account.created, false)}\n \n {account.creator\n ? [\n \n \n {account.creator.creator}\n \n ,\n \n \n {compactString(account.creator.trx_id, 12, 0)}\n \n \n ]\n : null}\n \n )\n }\n}\n","import { styled } from \"../../theme\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\"\nimport * as React from \"react\"\nimport { ExternalTextLink } from \"../text/text.component\"\nimport { faCheckCircle } from \"@fortawesome/free-regular-svg-icons\"\n\nexport const SocialIcon: React.ComponentType = styled(FontAwesomeIcon)`\n color: ${(props) => props.theme.colors.grey5};\n width: 30px;\n height: 35px;\n\n display: inline-block;\n &:hover {\n color: ${(props) => props.theme.colors.text};\n }\n`\n\nexport const SocialIconWrapper: React.ComponentType = styled.div`\n display: inline-block;\n width: 30px;\n height: 30px;\n margin-right: 18px;\n position: relative;\n`\n\nexport const BadgeCheck: React.ComponentType = styled(FontAwesomeIcon)`\n color: ${(props) => props.theme.colors.primary};\n\n position: absolute;\n bottom: -10px;\n right: -16px;\n width: 20px;\n height: 20px;\n z-index: 30;\n`\n\nexport const SocialIconBackground: React.ComponentType = styled.div`\n position: absolute;\n bottom: -10px;\n right: -11px;\n width: 18px;\n height: 18px;\n background-color: ${(props) => props.theme.colors.ternary};\n border-radius: 10px;\n z-index: 2;\n box-shadow: 1px 2px 5px 1px ${(props) => props.theme.colors.grey5};\n`\n\nexport const SocialLinksContainer: React.ComponentType = styled.div`\n min-width: 100px;\n padding-top: 6px;\n`\n\nexport interface SocialNetwork {\n url: string\n name: IconProp\n verified: boolean\n}\n\ninterface Props {\n socialNetworks: SocialNetwork[]\n verifiedTitle: string\n}\n\nexport const SocialLinks: React.SFC = ({ socialNetworks, verifiedTitle }) => {\n function renderSocialIcon(socialNetwork: SocialNetwork, index: number): JSX.Element {\n return (\n \n \n \n {socialNetwork.verified ? : null}\n {socialNetwork.verified ? : null}\n \n \n )\n }\n\n function renderSocialIcons(networks: SocialNetwork[]): JSX.Element[] {\n return networks.map((socialNetwork: SocialNetwork, index: number) =>\n renderSocialIcon(socialNetwork, index)\n ) as JSX.Element[]\n }\n\n return {renderSocialIcons(socialNetworks)}\n}\n","import {\n faFacebookSquare,\n faGithubSquare,\n faRedditSquare,\n faTwitterSquare,\n faYoutubeSquare,\n} from \"@fortawesome/free-brands-svg-icons\"\nimport { Account } from \"../models/account\"\nimport { SocialNetwork } from \"../atoms/social-links/social-links.component\"\n\nexport const SOCIAL_NETWORK_BASE_URL = {\n twitter: \"https://www.twitter.com/\",\n youtube: \"https://youtube.com/c/\",\n facebook: \"https://www.facebook.com/\",\n github: \"https://github.com/\",\n reddit: \"https://www.reddit.com/user/\",\n // steemit: \"https://steemit.com/@\"\n}\n\nexport const SOCIAL_ICON_MAP = {\n twitter: faTwitterSquare,\n facebook: faFacebookSquare,\n github: faGithubSquare,\n youtube: faYoutubeSquare,\n reddit: faRedditSquare,\n}\n\nexport const SOCIAL_NETWORKS = [\"twitter\", \"facebook\", \"github\", \"youtube\", \"reddit\"]\n\nexport function processSocialNetworkNames(account: Account): SocialNetwork[] {\n const socialNetworks: SocialNetwork[] = []\n if (!account.account_verifications) {\n return processDefaultSocialNetworkNames(account)\n }\n\n SOCIAL_NETWORKS.forEach((socialNetwork: string) => {\n if (\n account.account_verifications![socialNetwork] != null &&\n account.account_verifications![socialNetwork].handle !== \"\"\n ) {\n socialNetworks.push({\n url: `${SOCIAL_NETWORK_BASE_URL.facebook}${\n account.account_verifications![socialNetwork].handle\n }`,\n name: SOCIAL_ICON_MAP.facebook,\n verified: account.account_verifications![socialNetwork].verified,\n })\n }\n })\n\n if (socialNetworks.length > 0) {\n return socialNetworks\n }\n\n return processDefaultSocialNetworkNames(account)\n}\n\nexport function processDefaultSocialNetworkNames(account: Account) {\n if (!account.block_producer_info) {\n return []\n }\n\n const networkHandles = account.block_producer_info.org.social\n return Object.keys(networkHandles)\n .filter((key) => !!SOCIAL_NETWORK_BASE_URL[key])\n .map((key) => {\n return {\n url: `${SOCIAL_NETWORK_BASE_URL[key]}${networkHandles[key]}`,\n name: SOCIAL_ICON_MAP[key],\n verified: false,\n }\n })\n}\n","import { observer } from \"mobx-react\"\nimport { Cell } from \"../../../../atoms/ui-grid/ui-grid.component\"\nimport * as React from \"react\"\nimport { Account } from \"../../../../models/account\"\nimport { DetailLine, formatTransactionID } from \"@dfuse/explorer\"\nimport { t } from \"i18next\"\n\nimport { Text, TextLink, ExternalTextLink } from \"../../../../atoms/text/text.component\"\nimport { MonospaceTextLink } from \"../../../../atoms/text-elements/misc\"\nimport { Links } from \"../../../../routes\"\nimport { theme, styled } from \"../../../../theme\"\nimport { getRankBgColor, getRankInfo, getRankStatus } from \"../../../../helpers/account.helpers\"\nimport { Vote } from \"../../../../models/vote\"\nimport { SocialLinks } from \"../../../../atoms/social-links/social-links.component\"\nimport { processSocialNetworkNames } from \"../../../../helpers/social-networks.helper\"\nimport { formatDateFromString } from \"../../../../helpers/moment.helpers\"\nimport { UiHrSpaced } from \"../../../../atoms/ui-hr/ui-hr\"\nimport { SearchShortcut } from \"../../../../components/search-shortcut/search-shortcut\"\n\nconst TitleHeader: React.ComponentType = styled(Cell)`\n padding: 10px;\n margin-bottom: 30px;\n`\n\ninterface Props {\n account: Account\n votes: Vote[]\n}\n\n@observer\nexport class ProducerWidget extends React.Component {\n render() {\n const { account } = this.props\n const rankInfo = getRankInfo(account, this.props.votes)\n const rankBgColor = getRankBgColor(rankInfo)\n const socialLinks = processSocialNetworkNames(account)\n\n return (\n \n \n \n {getRankStatus(rankInfo)}\n {\" \"}\n \n \n {t(\"account.summary.block_producer\")}\n \n \n \n \n {formatDateFromString(account.created, false)}\n \n {account.creator\n ? [\n \n \n {account.creator.creator}\n \n ,\n \n \n {formatTransactionID(account.creator.trx_id)}\n \n \n ]\n : null}\n \n \n \n {account.block_producer_info!.org.website}\n \n \n \n \n {account.block_producer_info!.org.email}\n \n \n \n {account.block_producer_info!.org.location.name},{\" \"}\n {account.block_producer_info!.org.location.country}\n \n \n \n )\n }\n}\n","import { Config } from \"../models/config\"\n\nexport const LOGO_PLACEHOLDER =\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder.png\"\n\nexport const LOGO_LG_PLACEHOLDER =\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\"\n\nexport interface TokenInfo {\n name: string\n logo?: string\n logo_lg?: string\n symbol: string\n account: string\n chain: \"bos\" | \"eos\" | \"jungle\" | \"worbli\" | \"wax\" | \"snax\" | \"telos\"\n}\n\nexport function getTokenInfosForNetwork(network: string): TokenInfo[] {\n const chain = networkToName[network]\n if (!chain) {\n return []\n }\n\n return AIRDROPS.filter((element) => element.chain === chain)\n}\n\nexport type TokenInfoKey = string\n\nexport function getTokenInfoKey(info: TokenInfo): TokenInfoKey {\n return info.account + info.symbol\n}\n\nexport function getTokenInfosByKeyMap(): Record {\n const mappings: ReturnType = {}\n getTokenInfosForNetwork(Config.network_id).forEach((info) => {\n mappings[getTokenInfoKey(info)] = info\n })\n\n return mappings\n}\n\nconst networkToName: Record = {\n \"eos-mainnet\": \"eos\",\n \"eos-jungle\": \"jungle\",\n \"eos-worbli\": \"worbli\",\n \"wax-mainnet\": \"wax\",\n}\n\nconst eosCafeList: TokenInfo[] = [\n {\n name: \"VIG\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/VIG.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/VIG-lg.png\",\n symbol: \"VIG\",\n account: \"vig111111111\",\n chain: \"eos\",\n },\n {\n name: \"UPD\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/upd-symbol-icon.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/upd-symbol-icon.png\",\n symbol: \"UPD\",\n account: \"updtokenacct\",\n chain: \"eos\",\n },\n {\n name: \"AdderalCoin\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"ADD\",\n account: \"eosadddddddd\",\n chain: \"eos\",\n },\n {\n name: \"CADEOS.io\",\n logo:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/ADE-logo-225x225.jpg\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/ADE-logo-225x225.jpg\",\n symbol: \"ADE\",\n account: \"cadeositoken\",\n chain: \"eos\",\n },\n {\n name: \"EOSNOW\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosnow.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosnow-lg.png\",\n symbol: \"ANTE\",\n account: \"eosnowbpower\",\n chain: \"eos\",\n },\n {\n name: \"ANOX\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/anx-sm.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/anx-256.png\",\n symbol: \"ANX\",\n account: \"anoxanoxanox\",\n chain: \"eos\",\n },\n {\n name: \"Atidium\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/atidium.jpg\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/atidium-lg.png\",\n symbol: \"ATD\",\n account: \"eosatidiumio\",\n chain: \"eos\",\n },\n {\n name: \"ATMOS\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/atmos.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/atmos.png\",\n symbol: \"ATMOS\",\n account: \"novusphereio\",\n chain: \"eos\",\n },\n {\n name: \"Banker.Bet\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/BBC.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/BBC-lg.png\",\n symbol: \"BBC\",\n account: \"bbctokencode\",\n chain: \"eos\",\n },\n {\n name: \"BEAN\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/bean.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/bean-lg.png\",\n symbol: \"BEAN\",\n account: \"thebeantoken\",\n chain: \"eos\",\n },\n {\n name: \"EOS BET\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosbet.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosbet-lg.png\",\n symbol: \"BET\",\n account: \"betdividends\",\n chain: \"eos\",\n },\n {\n name: \"BetKing.io\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/betking.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/betking-lg.png\",\n symbol: \"BKT\",\n account: \"betkingtoken\",\n chain: \"eos\",\n },\n {\n name: \"eosBLACK\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosblack.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosblack-lg.png\",\n symbol: \"BLACK\",\n account: \"eosblackteam\",\n chain: \"eos\",\n },\n {\n name: \"BNT\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/bancor.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/bancor-lg.png\",\n symbol: \"BNT\",\n account: \"bntbntbntbnt\",\n chain: \"eos\",\n },\n {\n name: \"BNTEOS\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/bnteos.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"BNTEOS\",\n account: \"bnt2eosrelay\",\n chain: \"eos\",\n },\n {\n name: \"BNTUSDT\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/bntusdt.jpeg\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"BNTUSDT\",\n account: \"bancorr11232\",\n chain: \"eos\",\n },\n {\n name: \"BOID\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/boidlogo.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/BoidLogo-lg.png\",\n symbol: \"BOID\",\n account: \"boidcomtoken\",\n chain: \"eos\",\n },\n {\n name: \"BOS\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/bos.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/bos-lg.png\",\n symbol: \"BOS\",\n account: \"eosio.token\",\n chain: \"bos\",\n },\n {\n name: \"BOS\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/bos.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/bos-lg.png\",\n symbol: \"BOS\",\n account: \"bosibc.io\",\n chain: \"eos\",\n },\n {\n name: \"Bitcoin\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosbetbtc.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosbetbtc-lg.png\",\n symbol: \"BTC\",\n account: \"eosbettokens\",\n chain: \"eos\",\n },\n {\n name: \"Bitcoin Cash\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosbetbch.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosbetbch-lg.png\",\n symbol: \"BCH\",\n account: \"eosbettokens\",\n chain: \"eos\",\n },\n {\n name: \"GrandpaBTC\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/grandpa-btc.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/grandpa-btc-lg.png\",\n symbol: \"BTC\",\n account: \"grandpacoins\",\n chain: \"eos\",\n },\n {\n name: \"The EOS Button\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"BTN\",\n account: \"eosbuttonbtn\",\n chain: \"eos\",\n },\n {\n name: \"CARMEL\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/carmel.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/carmel-lg.png\",\n symbol: \"CARMEL\",\n account: \"carmeltokens\",\n chain: \"eos\",\n },\n {\n name: \"Chaince\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/chaince.jpg\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"CET\",\n account: \"eosiochaince\",\n chain: \"eos\",\n },\n {\n name: \"Chintai\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/chintai-chex.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/chintai-chex-lg.png\",\n symbol: \"CHEX\",\n account: \"chexchexchex\",\n chain: \"eos\",\n },\n {\n name: \"Challenge DAC\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/CHLnewPNG500.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/CHLnewPNG500.png\",\n symbol: \"CHL\",\n account: \"challengedac\",\n chain: \"eos\",\n },\n {\n name: \"Carbon\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/carbonlogo-64.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/carbonlogo-128.png\",\n symbol: \"CUSD\",\n account: \"stablecarbon\",\n chain: \"eos\",\n },\n {\n name: \"DABBLE\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/dabble.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/dabble-lg.png\",\n symbol: \"DAB\",\n account: \"eoscafekorea\",\n chain: \"eos\",\n },\n {\n name: \"DAPP Network\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/dapp.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/dapp-lg.png\",\n symbol: \"DAPP\",\n account: \"dappservices\",\n chain: \"eos\",\n },\n {\n name: \"DEOS Games\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/deosgames.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"DEOS\",\n account: \"thedeosgames\",\n chain: \"eos\",\n },\n {\n name: \"DICE\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/dice.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/dice-lg.png\",\n symbol: \"DICE\",\n account: \"betdicetoken\",\n chain: \"eos\",\n },\n {\n name: \"Dig Coin\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/dig.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/dig-lg.png\",\n symbol: \"DIG\",\n account: \"digcoinsmine\",\n chain: \"eos\",\n },\n {\n name: \"Dragon Option\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/dragon.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/dragon-lg.png\",\n symbol: \"DRAGON\",\n account: \"eosdragontkn\",\n chain: \"eos\",\n },\n {\n name: \"DS\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/DS.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/DS.png\",\n symbol: \"DS\",\n account: \"dsdsdsdsdsds\",\n chain: \"eos\",\n },\n {\n name: \"GrandpaDOGE\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/grandpa-doge.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/grandpa-doge-lg.png\",\n symbol: \"DOGE\",\n account: \"grandpacoins\",\n chain: \"eos\",\n },\n {\n name: \"EOS AUCTION PLATFORM\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eap.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eap-lg.png\",\n symbol: \"EAP\",\n account: \"eosauctionpt\",\n chain: \"eos\",\n },\n {\n name: \"EBTC\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"EBTC\",\n account: \"bitpietokens\",\n chain: \"eos\",\n },\n {\n name: \"eosCASH\",\n logo: \"\",\n logo_lg: \"\",\n symbol: \"ECASH\",\n account: \"horustokenio\",\n chain: \"eos\",\n },\n {\n name: \"EDNA\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/edna.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/edna-lg.png\",\n symbol: \"EDNA\",\n account: \"ednazztokens\",\n chain: \"eos\",\n },\n {\n name: \"EETH\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"EETH\",\n account: \"ethsidechain\",\n chain: \"eos\",\n },\n {\n name: \"EETH\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"EETH\",\n account: \"bitpietokens\",\n chain: \"eos\",\n },\n {\n name: \"Effect.AI\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/efx.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/efx-lg.png\",\n symbol: \"EFX\",\n account: \"effecttokens\",\n chain: \"eos\",\n },\n {\n name: \"Emanate MNX\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/emanate-mnx.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/emanate-mnx-lg.png\",\n symbol: \"MNX\",\n account: \"emanatenekot\",\n chain: \"eos\",\n },\n {\n name: \"Emanate\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/emanate.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/emanate-lg.png\",\n symbol: \"EMT\",\n account: \"emanateoneos\",\n chain: \"eos\",\n },\n {\n name: \"eosDAC\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosdac.jpg\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosdac-lg.jpg\",\n symbol: \"EOSDAC\",\n account: \"eosdactokens\",\n chain: \"eos\",\n },\n {\n name: \"EOSN\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosn.jpg\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosn-lg.jpg\",\n symbol: \"EOSN\",\n account: \"eosnationinc\",\n chain: \"eos\",\n },\n {\n name: \"EOX Commerce\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eoxcommerce.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eoxcommerce-lg.png\",\n symbol: \"EOX\",\n account: \"eoxeoxeoxeox\",\n chain: \"eos\",\n },\n {\n name: \"ERO\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/ero.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"ERO\",\n account: \"eoslandadmin\",\n chain: \"eos\",\n },\n {\n name: \"EOSLAND RARE ORE\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/ero.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/ero-lg.png\",\n symbol: \"ERO\",\n account: \"eoslandadmin\",\n chain: \"eos\",\n },\n {\n name: \"Ethereum\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosbeteth.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosbeteth-lg.png\",\n symbol: \"ETH\",\n account: \"eosbettokens\",\n chain: \"eos\",\n },\n {\n name: \"GrandpaETH\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/grandpa-eth.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/grandpa-eth-lg.png\",\n symbol: \"ETH\",\n account: \"grandpacoins\",\n chain: \"eos\",\n },\n {\n name: \"Europechain\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/europechain.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/europechain.png\",\n symbol: \"XEC\",\n account: \"europe.chain\",\n chain: \"eos\",\n },\n {\n name: \"EUSD\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"EUSD\",\n account: \"bitpietokens\",\n chain: \"eos\",\n },\n {\n name: \"FairEOS\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/fair.jpg\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/fair-lg.jpg\",\n symbol: \"FAIR\",\n account: \"faireostoken\",\n chain: \"eos\",\n },\n {\n name: \"FastWin\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/fast.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/fast-lg.png\",\n symbol: \"FAST\",\n account: \"fastecoadmin\",\n chain: \"eos\",\n },\n {\n name: \"UXfyre\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/uxfyre.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/uxfyre-lg.png\",\n symbol: \"FYRE\",\n account: \"uxfyretoken1\",\n chain: \"eos\",\n },\n {\n name: \"Horus Pay\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/horuspay.jpg\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/horuspay-lg.jpg\",\n symbol: \"HORUS\",\n account: \"horustokenio\",\n chain: \"eos\",\n },\n {\n name: \"HASHFUN\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/HFC.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/HFC.png\",\n symbol: \"HFC\",\n account: \"hashfuncoins\",\n chain: \"eos\",\n },\n {\n name: \"HireVibes\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/hvt.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/hvt-lg.png\",\n symbol: \"HVT\",\n account: \"hirevibeshvt\",\n chain: \"eos\",\n },\n {\n name: \"Infinicoin\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/infiniverse.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/infiniverse-lg.png\",\n symbol: \"INF\",\n account: \"infinicoinio\",\n chain: \"eos\",\n },\n {\n name: \"IPOS\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"IPOS\",\n account: \"oo1122334455\",\n chain: \"eos\",\n },\n {\n name: \"Everipedia\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/everipedia.jpg\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/everipedia-lg.png\",\n symbol: \"IQ\",\n account: \"everipediaiq\",\n chain: \"eos\",\n },\n {\n name: \"EOSJacks\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosjacks.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosjacks-lg.png\",\n symbol: \"JKR\",\n account: \"eosjackscoin\",\n chain: \"eos\",\n },\n {\n name: \"KARMA\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/karma.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/karma-lg.png\",\n symbol: \"KARMA\",\n account: \"therealkarma\",\n chain: \"eos\",\n },\n {\n name: \"KEOS\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"KEOS\",\n account: \"keoskorea111\",\n chain: \"eos\",\n },\n {\n name: \"KROWN\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/KROWN.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/KROWN-lg.png\",\n symbol: \"KROWN\",\n account: \"krowndactokn\",\n chain: \"eos\",\n },\n {\n name: \"LED\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/led.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"LED\",\n account: \"okkkkkkkkkkk\",\n chain: \"eos\",\n },\n {\n name: \"LICC\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/licc.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"LICC\",\n account: \"liccommunity\",\n chain: \"eos\",\n },\n {\n name: \"LuckyGo\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/lkg.jpg\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/lkg-lg.jpg\",\n symbol: \"LKG\",\n account: \"luckygotoken\",\n chain: \"eos\",\n },\n {\n name: \"Lelego\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/lelego.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/lelego-lg.png\",\n symbol: \"LLG\",\n account: \"llgonebtotal\",\n chain: \"eos\",\n },\n {\n name: \"Litecoin\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosbetltc.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/eosbetltc-lg.png\",\n symbol: \"LTC\",\n account: \"eosbettokens\",\n chain: \"eos\",\n },\n {\n name: \"LUCKY\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"LUCKY\",\n account: \"eoslucktoken\",\n chain: \"eos\",\n },\n {\n name: \"Lumeos\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/lumeos.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/lumeos-lg.png\",\n symbol: \"LUME\",\n account: \"lumetokenctr\",\n chain: \"eos\",\n },\n {\n name: \"LYNX\",\n logo:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/worktokenbviLYNX.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/worktokenbviLYNX-lg.png\",\n symbol: \"LYNX\",\n account: \"worktokenbvi\",\n chain: \"eos\",\n },\n {\n name: \"dmail\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/dmail.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/dmail-lg.png\",\n symbol: \"MAIL\",\n account: \"d.mail\",\n chain: \"eos\",\n },\n {\n name: \"MAX\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"MAX\",\n account: \"eosmax1token\",\n chain: \"eos\",\n },\n {\n name: \"MEET.ONE\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/meetone.jpg\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/meetone-lg.jpg\",\n symbol: \"MEETONE\",\n account: \"eosiomeetone\",\n chain: \"eos\",\n },\n {\n name: \"Royal Online Vegas\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/mev.jpg\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/mev-lg.jpg\",\n symbol: \"MEV\",\n account: \"eosvegascoin\",\n chain: \"eos\",\n },\n {\n name: \"MORTYS\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/mortys.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/mortys-lg.png\",\n symbol: \"MORTYS\",\n account: \"mrpoopybutt1\",\n chain: \"eos\",\n },\n {\n name: \"Nebula\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/nebula.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/nebula-lg.png\",\n symbol: \"NEB\",\n account: \"nebulatokenn\",\n chain: \"eos\",\n },\n {\n name: \"Effect Network\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/nfx.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/nfx-lg.png\",\n symbol: \"NFX\",\n account: \"effecttokens\",\n chain: \"eos\",\n },\n {\n name: \"NUTS\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/nuts.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/nuts-lg.png\",\n symbol: \"NUTS\",\n account: \"nutscontract\",\n chain: \"eos\",\n },\n {\n name: \"Oracle Chain\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/oraclechain.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/oraclechain-lg.png\",\n symbol: \"OCT\",\n account: \"octtothemoon\",\n chain: \"eos\",\n },\n {\n name: \"OnePlay\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/oneplay.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/oneplay-lg.png\",\n symbol: \"ONE\",\n account: \"oneplaytoken\",\n chain: \"eos\",\n },\n {\n name: \"PEOS\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/peos.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"PEOS\",\n account: \"thepeostoken\",\n chain: \"eos\",\n },\n {\n name: \"pixEOS\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/pixeos.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/pixeos-lg.png\",\n symbol: \"PIXEOS\",\n account: \"pixeos1token\",\n chain: \"eos\",\n },\n {\n name: \"PIZZA\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/PIZZA.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/PIZZA-lg.png\",\n symbol: \"PIZZA\",\n account: \"pizzatotoken\",\n chain: \"eos\",\n },\n {\n name: \"EOS Poker\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/poker.jpg\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/poker-lg.jpg\",\n symbol: \"POKER\",\n account: \"eospokercoin\",\n chain: \"eos\",\n },\n {\n name: \"Poorman Token\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/poorman.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/poorman-lg.png\",\n symbol: \"POOR\",\n account: \"poormantoken\",\n chain: \"eos\",\n },\n {\n name: \"Crypto Peso\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/cryptopeso.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/cryptopeso-lg.png\",\n symbol: \"PSO\",\n account: \"cryptopesosc\",\n chain: \"eos\",\n },\n {\n name: \"PUBLYTO\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/pub.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/pub-lg.png\",\n symbol: \"PUB\",\n account: \"publytoken11\",\n chain: \"eos\",\n },\n {\n name: \"CryptoPIX PXS\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/pixels.jpeg\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/pixels_lg.jpeg\",\n symbol: \"PXS\",\n account: \"pxstokensapp\",\n chain: \"eos\",\n },\n {\n name: \"RAMtoken\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/ramtoken.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/ramtoken-lg.png\",\n symbol: \"RAM\",\n account: \"ramtokenmoon\",\n chain: \"eos\",\n },\n {\n name: \"RIDL\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/ridl.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/ridl-lg.png\",\n symbol: \"RIDL\",\n account: \"ridlridlcoin\",\n chain: \"eos\",\n },\n {\n name: \"Rocket Battles\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/rocketbattle.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/rocketbattle-lg.png\",\n symbol: \"ROCKET\",\n account: \"rocketbattle\",\n chain: \"eos\",\n },\n {\n name: \"ROJI\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/roji.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/roji-lg.png\",\n symbol: \"ROJI\",\n account: \"rojirojiroji\",\n chain: \"eos\",\n },\n {\n name: \"Real World Coupon\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/rwc.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"RWC\",\n account: \"realworldcpn\",\n chain: \"eos\",\n },\n {\n name: \"Parsl Seed\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/seed.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/seed-lg.png\",\n symbol: \"SEED\",\n account: \"parslseed123\",\n chain: \"eos\",\n },\n {\n name: \"Sense\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/sense.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/sense-400.png\",\n symbol: \"SENSE\",\n account: \"sensegenesis\",\n chain: \"eos\",\n },\n {\n name: \"Sprtshubcoin\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/sprtshubcoin.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/sprtshubcoin-lg.png\",\n symbol: \"SHC\",\n account: \"sprtshubcoin\",\n chain: \"eos\",\n },\n {\n name: \"SOLIT\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/solit.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/solit-lg.png\",\n symbol: \"SLT\",\n account: \"nblabtokenss\",\n chain: \"eos\",\n },\n {\n name: \"Nebula Stable\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/nebula.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/nebula-lg.png\",\n symbol: \"SNEB\",\n account: \"nebulatokenn\",\n chain: \"eos\",\n },\n {\n name: \"SNAX\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/SNAX.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/SNAX.png\",\n symbol: \"SNAX\",\n account: \"snax.token\",\n chain: \"snax\",\n },\n {\n name: \"SOV\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/sov.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/sov-lg.png\",\n symbol: \"SOV\",\n account: \"sovmintofeos\",\n chain: \"eos\",\n },\n {\n name: \"eoseven\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"SVN\",\n account: \"eoseventoken\",\n chain: \"eos\",\n },\n {\n name: \"Telos\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/telos.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"TLOS\",\n account: \"eosio.token\",\n chain: \"telos\",\n },\n {\n name: \"TOOKTOOK\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/took.jpg\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/took-lg.jpg\",\n symbol: \"TOOK\",\n account: \"taketooktook\",\n chain: \"eos\",\n },\n {\n name: \"TokenPocket\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"TPT\",\n account: \"eosiotptoken\",\n chain: \"eos\",\n },\n {\n name: \"TokenPocket\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"TPT\",\n account: \"bosibc.io\",\n chain: \"bos\",\n },\n {\n name: \"TRIV\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/triv-token-logo.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/triv-token-logo.png\",\n symbol: \"TRIV\",\n account: \"triviatokens\",\n chain: \"eos\",\n },\n {\n name: \"TRYBE\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/trybe.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/trybe-lg.png\",\n symbol: \"TRYBE\",\n account: \"trybenetwork\",\n chain: \"eos\",\n },\n {\n name: \"USDE\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/USDE.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/USDE-lg.png\",\n symbol: \"USDE\",\n account: \"usdetotokens\",\n chain: \"eos\",\n },\n {\n name: \"USDT\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/USDT.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"USDT\",\n account: \"tethertether\",\n chain: \"eos\",\n },\n {\n name: \"USDT\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/USDT.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"USDT\",\n account: \"bosibc.io\",\n chain: \"bos\",\n },\n {\n name: \"WhaleEx\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/whaleex.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"WAL\",\n account: \"whaleextoken\",\n chain: \"eos\",\n },\n {\n name: \"WECASH\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/wecash.jpg\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"WECASH\",\n account: \"weosservices\",\n chain: \"eos\",\n },\n {\n name: \"WiZZ\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/wizz.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/wizz-lg.png\",\n symbol: \"WIZZ\",\n account: \"wizznetwork1\",\n chain: \"eos\",\n },\n {\n name: \"Worbli\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/worbli.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/placeholder-lg.png\",\n symbol: \"WBI\",\n account: \"eosio.token\",\n chain: \"worbli\",\n },\n {\n name: \"Gamblr\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/gamblr.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/gamblr.png\",\n symbol: \"GAMBLR\",\n account: \"gamblrtokens\",\n chain: \"eos\",\n },\n {\n name: \"WRK\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/worktokenbviWRK.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/worktokenbviWRK-lg.png\",\n symbol: \"WRK\",\n account: \"worktokenbvi\",\n chain: \"eos\",\n },\n {\n name: \"Billionaire Token\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/billionaire.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/billionaire-lg.png\",\n symbol: \"XBL\",\n account: \"billionairet\",\n chain: \"eos\",\n },\n {\n name: \"ZKS\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/zks.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/zks-lg.png\",\n symbol: \"ZKS\",\n account: \"zkstokensr4u\",\n chain: \"eos\",\n },\n {\n name: \"Qubicles\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/qbe.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/qbe-lg.png\",\n symbol: \"QBE\",\n account: \"qubicletoken\",\n chain: \"telos\",\n },\n {\n name: \"Beatitude\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/beatitude.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/beatitude-lg.png\",\n symbol: \"HEART\",\n account: \"revelation21\",\n chain: \"telos\",\n },\n {\n name: \"Cards & Tokens\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/cnt.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/cnt.png\",\n symbol: \"CNT\",\n account: \"vapaeetokens\",\n chain: \"telos\",\n },\n {\n name: \"Viitasphere Token\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/viitasphere.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/viitasphere-lg.png\",\n symbol: \"VIITA\",\n account: \"viitasphere1\",\n chain: \"telos\",\n },\n {\n name: \"VIITA Certificate Token\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/viitasphere.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/viitasphere-lg.png\",\n symbol: \"VIICT\",\n account: \"viitasphere1\",\n chain: \"telos\",\n },\n {\n name: \"Acorn UBI\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/acorn.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/acorn-lg.png\",\n symbol: \"ACORN\",\n account: \"acornaccount\",\n chain: \"telos\",\n },\n {\n name: \"EDNA\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/edna.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/edna-lg.png\",\n symbol: \"EDNA\",\n account: \"ednazztokens\",\n chain: \"telos\",\n },\n {\n name: \"Teachology\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/teach.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/teach-lg.png\",\n symbol: \"TEACH\",\n account: \"teachology14\",\n chain: \"telos\",\n },\n {\n name: \"Proxibots\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/proxibots.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/proxibots-lg.png\",\n symbol: \"ROBO\",\n account: \"proxibotstkn\",\n chain: \"telos\",\n },\n {\n name: \"TelosDAC\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/telosdac.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/telosdac-lg.png\",\n symbol: \"TLOSDAC\",\n account: \"telosdacdrop\",\n chain: \"telos\",\n },\n {\n name: \"Anudit Coin Test\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/anudit-test.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/anudit-test-lg.png\",\n symbol: \"ANT\",\n account: \"antestacc111\",\n chain: \"jungle\",\n },\n {\n name: \"MyCryptoVegas Token\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/cts.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/cts-lg.png\",\n symbol: \"CTS\",\n account: \"cryptovgscts\",\n chain: \"eos\",\n },\n {\n name: \"WORD\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/word.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/word.png\",\n symbol: \"WORD\",\n account: \"wordtokeneos\",\n chain: \"eos\",\n },\n {\n name: \"WORD\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/word.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/word.png\",\n symbol: \"WORD\",\n account: \"wordtokeneos\",\n chain: \"telos\",\n },\n {\n name: \"WORD\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/word.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/word.png\",\n symbol: \"WORD\",\n account: \"wordtokeneos\",\n chain: \"jungle\",\n },\n {\n name: \"Yakee chain\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/YKC.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/YKC.png\",\n symbol: \"YKC\",\n account: \"okkkkkkkkkkk\",\n chain: \"eos\",\n },\n {\n name: \"NUT\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/nut_225x225.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/nut_424x424.png\",\n symbol: \"NUT\",\n account: \"eosdtnutoken\",\n chain: \"eos\",\n },\n {\n name: \"San Diego City Token\",\n logo:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/city-seal-Blue-and-Gold-small-300x300.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/city-seal-Blue-and-Gold-small-300x300.png\",\n symbol: \"SAND\",\n account: \"sandiegocoin\",\n chain: \"eos\",\n },\n {\n name: \"POW\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/pow.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/pow-lg.png\",\n symbol: \"POW\",\n account: \"powhcontract\",\n chain: \"eos\",\n },\n {\n name: \"POWX\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/powx.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/powx-lg.png\",\n symbol: \"POWX\",\n account: \"powxtokenpow\",\n chain: \"eos\",\n },\n {\n name: \"GoldenChip\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/goldenchip.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/goldenchip.png\",\n symbol: \"GCHIP\",\n account: \"goldenchipio\",\n chain: \"eos\",\n },\n {\n name: \"PINK\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/pink.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/pink-lg.png\",\n symbol: \"PINK\",\n account: \"pinknettoken\",\n chain: \"wax\",\n },\n {\n name: \"WAX\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/wax.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/wax.png\",\n symbol: \"WAX\",\n account: \"eosio.token\",\n chain: \"wax\",\n },\n {\n name: \"One Thousand Coin\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/OTCeoslogo1.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/OTCeoslogo1.png\",\n symbol: \"OTC\",\n account: \"thousandcoin\",\n chain: \"eos\",\n },\n {\n name: \"STEEMP on EOS\",\n logo:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/EOSSTEEMpFULLres-527x504.png\",\n logo_lg:\n \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/EOSSTEEMpFULLres-527x504.png\",\n symbol: \"STEEMP\",\n account: \"steemoneosio\",\n chain: \"eos\",\n },\n {\n name: \"SQRL\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/sqrl.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/sqrl-lg.png\",\n symbol: \"SQRL\",\n account: \"sqrlwalletio\",\n chain: \"telos\",\n },\n]\n\nconst extraList: TokenInfo[] = [\n {\n name: \"EDNA\",\n logo: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/edna.png\",\n logo_lg: \"https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/edna-lg.png\",\n symbol: \"EDNA\",\n account: \"ednazztokens\",\n chain: \"worbli\",\n },\n {\n name: \"PLO\",\n symbol: \"PLO\",\n account: \"playeronetkn\",\n chain: \"eos\",\n },\n {\n name: \"BRM\",\n symbol: \"BRM\",\n account: \"openbrmeos11\",\n chain: \"eos\",\n },\n {\n name: \"DAPPHDL\",\n symbol: \"DAPPHDL\",\n account: \"dappairhodl1\",\n chain: \"eos\",\n },\n {\n name: \"EFOR\",\n symbol: \"EFOR\",\n account: \"theforcegrou\",\n chain: \"eos\",\n },\n {\n name: \"BITI\",\n symbol: \"BITI\",\n account: \"biteyebiteye\",\n chain: \"eos\",\n },\n {\n name: \"RWC\",\n symbol: \"RWC\",\n account: \"realworldcpn\",\n chain: \"eos\",\n },\n {\n name: \"SOV\",\n symbol: \"SOV\",\n account: \"sovmintofeos\",\n chain: \"eos\",\n },\n {\n name: \"ESB\",\n symbol: \"ESB\",\n account: \"esbcointoken\",\n chain: \"eos\",\n },\n]\n\n// List of tokens that do not actual work correctly anymore\nconst removedTokens = [\n { chain: \"eos\", account: \"nutscontract\" },\n { chain: \"eos\", account: \"uxfyretoken1\" },\n { chain: \"eos\", account: \"triviatokens\" },\n]\n\nfunction isRemovedToken(tokenInfo: TokenInfo): boolean {\n return removedTokens.some(\n (removedToken) =>\n tokenInfo.chain === removedToken.chain && tokenInfo.account === removedToken.account\n )\n}\n\nexport const AIRDROPS: TokenInfo[] = [...eosCafeList, ...extraList]\n .filter((element) => !isRemovedToken(element))\n .map((element) => {\n if (element.logo === LOGO_PLACEHOLDER) {\n element.logo = undefined\n }\n\n if (element.logo_lg === LOGO_LG_PLACEHOLDER) {\n element.logo_lg = undefined\n }\n\n return element\n })\n","import * as React from \"react\"\nimport { Cell } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport { SubTitle, Text } from \"../../../atoms/text/text.component\"\nimport { t } from \"i18next\"\nimport { theme } from \"../../../theme\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faCaretRight, faCaretDown } from \"@fortawesome/free-solid-svg-icons\"\n// eslint-disable-next-line import/no-unresolved\nimport { IconDefinition } from \"@fortawesome/fontawesome-common-types\"\nimport Collapsible from \"react-collapsible\"\nimport {\n UiTable,\n UiTableBody,\n UiTableCell,\n UiTableCellNarrow,\n UiTableHead,\n UiTableRow,\n UiTableRowAlternated\n} from \"../../../atoms/ui-table/ui-table.component\"\nimport { MonospaceTextLink } from \"../../../atoms/text-elements/misc\"\nimport { Links } from \"../../../routes\"\nimport { SearchShortcut } from \"../../../components/search-shortcut/search-shortcut\"\nimport { LOGO_PLACEHOLDER } from \"../../../helpers/airdrops-list\"\nimport { UserBalance } from \"../../../hooks/use-account-balances\"\n\nconst Title: React.FC<{ icon: IconDefinition }> = ({ icon }) => (\n \n \n \n \n \n {t(\"account.tokens.title\")}\n \n \n)\n\nconst TokenRow: React.FC<{ account: string; token: UserBalance }> = ({ account, token }) => (\n \n \n \n \n \n \n \n \n {token.metadata.name || token.symbol}\n \n \n \n \n {token.balance}\n \n \n \n \n {token.contract}\n \n \n \n)\n\nconst TokenList: React.FC = ({ account, tokens }) => (\n \n \n \n \n \n {t(\"account.tokens.table.token\")}\n \n\n \n {t(\"account.tokens.table.quantity\")}\n \n \n {t(\"account.tokens.table.contract\")}\n \n \n \n \n {tokens.map((token: UserBalance) => (\n \n ))}\n \n \n)\n\ntype Props = { account: string; tokens: UserBalance[] }\n\nexport const AccountTokens: React.FC = ({ account, tokens }) => {\n return (\n \n }\n triggerWhenOpen={}\n >\n <Cell\n bg={[\"#fff\"]}\n borderRadius=\"0px\"\n mt={[3]}\n overflow=\"hidden\"\n overflowX=\"auto\"\n p={[0]}\n border={[\"0px solid #ccc\"]}\n >\n <Cell minWidth=\"800px\" width=\"100%\">\n <TokenList account={account} tokens={tokens} />\n </Cell>\n </Cell>\n </Collapsible>\n </Cell>\n )\n}\n","import gql from \"graphql-tag\"\nimport { getTokenInfosByKeyMap } from \"../helpers/airdrops-list\"\nimport {\n useGraphqlQuery,\n GraphqlQuery,\n PromiseState,\n promiseStateRetype,\n promiseStateResolved\n} from \"@dfuse/explorer\"\nimport { GraphqlResponseError } from \"@dfuse/client\"\n\nexport type UserBalance = {\n contract: string\n symbol: string\n balance: string\n metadata: {\n name: string\n logo?: string\n }\n}\n\nconst document: GraphqlQuery = gql`\n query($account: String!) {\n accountBalances(\n account: $account\n options: EOS_INCLUDE_STAKED\n sortField: AMOUNT\n sortOrder: ASC\n ) {\n edges {\n node {\n contract\n symbol\n balance\n }\n }\n }\n }\n`\n\ntype Document = {\n accountBalances: {\n edges: {\n node: UserBalance\n }[]\n }\n}\n\nconst tokenInfos = getTokenInfosByKeyMap()\n\nexport function useAccountBalances(\n account: string\n): PromiseState<UserBalance[], GraphqlResponseError[]> {\n const response = useGraphqlQuery<Document>(document, { account })\n if (response.state === \"pending\" || response.state === \"rejected\") {\n return promiseStateRetype(response)\n }\n\n const balances = response.result.accountBalances.edges\n .map(({ node }) => node)\n .filter((balance) => balance.contract !== \"eosio.token\" || balance.symbol===\"UTXRAM\")\n\n balances.forEach((balance) => {\n const metadata = tokenInfos[balance.contract + balance.symbol]\n\n balance.metadata = {\n name: (metadata && metadata.name) || balance.symbol,\n logo: metadata && metadata.logo\n }\n })\n\n balances.sort((a, b) => {\n const ma = a.metadata\n const mb = b.metadata\n\n if (ma.logo && !mb.logo) return -1\n if (!ma.logo && mb.logo) return 1\n\n if (ma.name.toLowerCase() < mb.name.toLowerCase()) return -1\n if (ma.name.toLowerCase() > mb.name.toLowerCase()) return 1\n\n return 0\n })\n\n return promiseStateResolved(balances)\n}\n","import { observer } from \"mobx-react\"\nimport { ContentLoaderComponent } from \"../../../components/content-loader/content-loader.component\"\nimport { Cell, Grid } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport { AccountPieChart } from \"./account-pie-chart\"\nimport { AccountStatusBars } from \"./account-status-bars\"\nimport { AccountPermissions } from \"./account-permissions\"\nimport * as React from \"react\"\nimport { Account } from \"../../../models/account\"\nimport { DefaultAccountWidget } from \"./widgets/default-account-widget\"\nimport { ProducerWidget } from \"./widgets/producer-widget\"\nimport { voteStore } from \"../../../stores\"\nimport { AccountTokens } from \"./account-tokens\"\nimport { UiHrDense } from \"../../../atoms/ui-hr/ui-hr\"\nimport { useAccountBalances } from \"../../../hooks/use-account-balances\"\nimport { LCE } from \"@dfuse/explorer\"\n\ninterface Props {\n account: Account\n}\n\nconst Widget: React.FC<Props> = ({ account }) => {\n if (account.block_producer_info && voteStore.votes && voteStore.votes.length > 0) {\n return <ProducerWidget account={account} votes={voteStore.votes} />\n }\n\n return <DefaultAccountWidget account={account} />\n}\n\nconst Tokens: React.FC<{ accountName: string }> = ({ accountName }) => {\n const response = useAccountBalances(accountName)\n const tokens = response.resultOr([])\n\n return (\n <LCE promise={response}>\n {tokens.length <= 0 ? null : (\n <>\n <AccountTokens account={accountName} tokens={tokens} />\n <UiHrDense />\n </>\n )}\n </LCE>\n )\n}\n\n@observer\nexport class AccountSummary extends ContentLoaderComponent<Props, any> {\n render() {\n const { account } = this.props\n\n return (\n <Cell bg=\"white\" pb={[0]} border=\"1px solid\" borderColor=\"border\">\n <Grid\n gridTemplateColumns={[\"1fr\", \"5fr 2fr\", \"5fr 2fr\"]}\n height=\"auto\"\n gridColumnGap={[30]}\n borderBottom=\"1px dotted\"\n borderColor=\"grey6\"\n pb=\"40px\"\n >\n <Grid px={[4]}>\n <AccountPieChart account={account} />\n <Cell mt={[2]}>\n <UiHrDense />\n <AccountStatusBars account={account} />\n </Cell>\n </Grid>\n <Cell pr={[4]}>\n <Widget account={account} />\n </Cell>\n </Grid>\n <Tokens accountName={account.account_name} />\n <AccountPermissions account={account} />\n </Cell>\n )\n }\n}\n","import { styled } from \"../../theme\"\nimport { Cell } from \"../ui-grid/ui-grid.component\"\nimport * as React from \"react\"\n\nexport const Badge: React.ComponentType<any> = styled(Cell)`\n color: ${(props: any) => props.theme.colors.primary};\n font-family: \"Roboto Condensed\";\n text-align: center;\n line-height: 24px;\n font-size: 11px;\n width: 25px;\n height: 25px;\n border-radius: 50%;\n margin-right: 10px;\n display: inline-block;\n border: 1px solid ${(props) => props.theme.colors.primary};\n`\n\nexport const BadgeContainer = styled.div`\n min-width: 100px;\n display: flex;\n`\n","import { observer } from \"mobx-react\"\nimport { ContentLoaderComponent } from \"../../../components/content-loader/content-loader.component\"\nimport { Cell, Grid } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport * as React from \"react\"\nimport { Badge, BadgeContainer } from \"../../../atoms/badge/badge\"\nimport { t } from \"i18next\"\nimport { theme, styled } from \"../../../theme\"\nimport { getRankBgColor, getRankInfo } from \"../../../helpers/account.helpers\"\nimport { voteStore } from \"../../../stores\"\nimport { ColorTile } from \"../../../atoms/color-tile/color-tile\"\nimport { SubTitle, ExternalTextLink } from \"../../../atoms/text/text.component\"\nimport { Account, BlockProducerInfo } from \"../../../models/account\"\nimport { MonospaceText } from \"../../../atoms/text-elements/misc\"\nimport { Config } from \"../../../models/config\"\n\ninterface Props {\n account: Account\n}\n\nconst AccountImg: React.ComponentType<any> = styled.img`\n width: 70px;\n`\n\nconst ClickableBadge = styled(Badge)`\n cursor: pointer;\n`\n\nconst StyledObject: React.ComponentType<any> = styled.object`\n background-color: #fff;\n\n width: 70px;\n height: 70px;\n`\n\n@observer\nexport class AccountTitle extends ContentLoaderComponent<Props, any> {\n renderRank = (account: Account) => {\n const rankInfo = getRankInfo(account, voteStore.votes)\n const bgColor = getRankBgColor(rankInfo)\n\n if (rankInfo.rank > 0) {\n return (\n <ColorTile\n border={`1px solid ${theme.colors.primary}`}\n bg={bgColor}\n color=\"primary\"\n fontWeight=\"bold\"\n size={44}\n fontSize=\"18px\"\n mr={[4]}\n >\n {rankInfo.rank !== 0 ? rankInfo.rank : \"-\"}\n </ColorTile>\n )\n }\n\n return <span />\n }\n\n renderPrivileged(account: Account) {\n return account.privileged ? (\n <Badge title=\"Privileged\" bg=\"neutral\">\n {t(\"account.badges.pv\")}\n </Badge>\n ) : null\n }\n\n renderCo(account: Account) {\n return !this.isLastCodeUpdateEpoch(account.last_code_update) ? (\n <Badge title=\"Contract\" bg={theme.colors.neutral}>\n {t(\"account.badges.co\")}\n </Badge>\n ) : null\n }\n\n renderBp(account: Account) {\n return getRankInfo(account, voteStore.votes).rank > 0 ? (\n <Badge title=\"Block producer\" bg={theme.colors.ternary}>\n {t(\"account.badges.bp\")}\n </Badge>\n ) : null\n }\n\n renderMykey(account: Account) {\n return isAccountCreatedByMykey(account) ? (\n <ExternalTextLink to=\"https://mykey.org\">\n <ClickableBadge title={t(\"account.badges.my.title\")} bg={theme.colors.logo1}>\n <img src=\"/images/mykey.svg\" alt=\"mykey logo\" />\n </ClickableBadge>\n </ExternalTextLink>\n ) : null\n }\n\n isLastCodeUpdateEpoch(lastCodeUpdate: Date) {\n return lastCodeUpdate && new Date(lastCodeUpdate).getFullYear() === 1970\n }\n\n renderBadges(account: Account) {\n return (\n <BadgeContainer>\n {this.renderBp(account)}\n {this.renderCo(account)}\n {this.renderPrivileged(account)}\n {this.renderMykey(account)}\n </BadgeContainer>\n )\n }\n\n renderAccountImage(src: string) {\n return (\n <StyledObject data={src} type=\"image/jpg\">\n <AccountImg alt={this.props.account.account_name} width=\"70px\" height=\"70px\" src={src} />\n </StyledObject>\n )\n }\n\n renderProducerAvatar(account: Account, src: string) {\n return (\n <Grid gridTemplateColumns={[\"auto 1fr\", \"auto 1fr\"]} gridTemplateRows={[\"auto\"]}>\n <Cell gridColumn={[\"1\", \"1\"]} gridRow={[\"1\", \"1\"]}>\n {this.renderRank(account)}\n </Cell>\n <Cell\n gridColumn={[\"2\", \"2\"]}\n gridRow={[\"1\", \"1\"]}\n alignSelf=\"start\"\n height=\"72px\"\n width=\"72px\"\n border=\"1px solid\"\n borderColor=\"grey3\"\n bg=\"white\"\n mr={[4]}\n >\n {this.renderAccountImage(src)}\n </Cell>\n </Grid>\n )\n }\n\n renderProducer(account: Account, blockProducerInfo: BlockProducerInfo) {\n return (\n <Cell py={[0]} gridColumn={[\"1\", \"1\"]} gridRow={[\"1\", \"1\"]}>\n <Grid gridTemplateColumns={[\"1fr\", \"auto auto 1fr\"]} gridTemplateRows={[\"auto\"]}>\n <Cell gridColumn={[\"1\", \"1\"]} gridRow={[\"1\", \"1\"]}>\n {this.renderProducerAvatar(account, blockProducerInfo.org.branding.logo_256)}\n </Cell>\n\n <Cell mt={[2, 0]} gridColumn={[\"1\", \"2\"]} gridRow={[\"2\", \"1\"]} mr={[3]}>\n <MonospaceText color=\"primary\" fontWeight=\"bold\" fontSize={[6]}>\n {account.account_name}\n </MonospaceText>\n <SubTitle fontWeight=\"bold\" color=\"primary\" fontSize={[2]}>\n {blockProducerInfo.org.candidate_name}\n </SubTitle>\n </Cell>\n <Cell gridColumn={[\"1\", \"3\"]} gridRow={[\"3\", \"1\"]} py=\"12px\">\n {this.renderBadges(account)}\n </Cell>\n </Grid>\n </Cell>\n )\n }\n\n renderProducerNoJson(account: Account) {\n return (\n <Cell py={[0]} gridColumn={[\"1\", \"1\"]} gridRow={[\"1\", \"1\"]}>\n <Grid gridTemplateColumns={[\"1fr\", \"auto auto 1fr\"]} gridTemplateRows={[\"auto\"]}>\n <Cell gridColumn={[\"1\", \"1\"]} gridRow={[\"1\", \"1\"]}>\n {this.renderRank(account)}\n </Cell>\n\n <Cell mt={[2, 0]} gridColumn={[\"1\", \"2\"]} gridRow={[\"2\", \"1\"]} mr={[3]}>\n <MonospaceText color=\"primary\" fontWeight=\"bold\" fontSize={[6]}>\n {account.account_name}\n </MonospaceText>\n </Cell>\n <Cell gridColumn={[\"1\", \"3\"]} gridRow={[\"3\", \"1\"]} py=\"12px\">\n {this.renderBadges(account)}\n </Cell>\n </Grid>\n </Cell>\n )\n }\n\n renderDefault(account: Account) {\n return (\n <Cell py={[0]} gridColumn={[\"1\", \"1\"]} gridRow={[\"1\", \"1\"]}>\n <Grid\n gridTemplateColumns={[\"1fr\", \"auto 1fr\"]}\n gridTemplateRows={[\"auto\"]}\n alignItems=\"center\"\n >\n <Cell mt={[2, 0]} gridColumn={[\"1\", \"1\"]} gridRow={[\"1\", \"1\"]} mr={[3]}>\n <MonospaceText color=\"primary\" fontWeight=\"bold\" fontSize={[6]}>\n {account.account_name}\n </MonospaceText>\n </Cell>\n <Cell gridColumn={[\"1\", \"2\"]} gridRow={[\"2\", \"1\"]}>\n {this.renderBadges(account)}\n </Cell>\n </Grid>\n </Cell>\n )\n }\n\n render() {\n const { account } = this.props\n\n if (account.block_producer_info) {\n return this.renderProducer(account, account.block_producer_info)\n }\n\n if (getRankInfo(account, voteStore.votes).rank > 0) {\n return this.renderProducerNoJson(account)\n }\n\n if (!this.isLastCodeUpdateEpoch(account.last_code_update)) {\n return this.renderDefault(account)\n }\n\n return this.renderDefault(account)\n }\n}\n\nfunction isAccountCreatedByMykey(account: Account) {\n return (\n Config.network_id === \"eos-mainnet\" &&\n (account.account_name === \"mykeymanager\" ||\n (account.creator && account.creator.creator === \"mykeymanager\"))\n )\n}\n","import * as React from \"react\"\nimport { t } from \"i18next\"\nimport { observer } from \"mobx-react\"\nimport { Button } from \"@material-ui/core\"\nimport { theme, styled } from \"../../../theme\"\nimport { Cell, Grid } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport { Text } from \"../../../atoms/text/text.component\"\nimport { Account } from \"../../../models/account\"\nimport { ListTransactions } from \"../../../components/list-transactions/list-transactions.component\"\nimport { transactionSearchResultsToTransactionInfo } from \"../../../helpers/legacy.helpers\"\nimport { SearchTransactionRow } from \"@dfuse/client\"\nimport { Links } from \"../../../routes\"\nimport { BorderLessPanel } from \"../../../atoms/panel/panel.component\"\nimport { ListContentLoaderComponent } from \"../../../components/list-content-loader/list-content-loader.component\"\nimport { RouteComponentProps } from \"react-router\"\nimport { searchStore } from \"../../../stores\"\nimport { performStructuredSearch } from \"../../../services/search\"\nimport { FilterTypes, RangeOptions } from \"../../../models/search-filters\"\nimport { BLOCK_NUM_5M } from \"../../../models/block\"\n\nconst StyledButton: React.ComponentType<any> = styled(Button)`\n padding: 12px 30px !important;\n background-color: ${(props) => props.theme.colors.ternary} !important;\n border: none !important;\n font-weight: bold !important;\n border-radius: 0px !important;\n min-height: 35px !important;\n color: ${(props) => props.theme.colors.primary} !important;\n`\n\nconst PanelContentWrapper: React.ComponentType<any> = styled(Cell)`\n width: 100%;\n`\n\ninterface Props extends RouteComponentProps<any> {\n account: Account\n}\n\nexport interface TransactionSearchResultResponse {\n cursor: string\n transactions: SearchTransactionRow[]\n}\n\n@observer\nexport class AccountTransactions extends ListContentLoaderComponent<Props> {\n constructor(props: Props) {\n super(props)\n this.cursorCache = searchStore.cursorCache\n }\n\n componentDidMount() {\n this.componentDidMountHandler()\n }\n\n resetInternalState() {\n this.cursorCache.resetAll()\n this.setState({\n loadingTransactions: false\n })\n }\n\n componentDidUpdate(prevProps: Props) {\n if (prevProps.account.account_name !== this.props.account.account_name) {\n this.resetInternalState()\n this.fetchListForCursor(\"\")\n }\n }\n\n cursoredUrl = (cursor: string) => {\n let url = Links.viewAccountTabs({\n id: this.props.account.account_name,\n currentTab: \"transactions\"\n })\n\n if (cursor.length > 0) {\n url = `${url}?cursor=${encodeURIComponent(cursor)}`\n }\n\n return url\n }\n\n fetchListForCursor(cursor: string) {\n searchStore.rangeOption = RangeOptions.ALL\n searchStore.query = `(auth:${this.props.account.account_name} OR receiver:${this.props.account.account_name})`\n\n this.search(cursor)\n }\n\n search = (cursor?: string) => {\n if (!cursor || cursor.length === 0) {\n cursor = this.cursorCache.currentCursor\n }\n searchStore.limit = 5\n performStructuredSearch(cursor || \"\")\n }\n\n renderNavigationContainer() {\n return (\n <Grid gridTemplateColumns={[\"1fr\"]}>\n <Cell justifySelf=\"right\" alignSelf=\"right\" px={[3]} py={[2]}>\n {this.renderNavigation(\"light\", searchStore.hasNextPage)}\n </Cell>\n </Grid>\n )\n }\n\n renderSearchResults() {\n const transactionInfos = transactionSearchResultsToTransactionInfo(searchStore.results || [])\n return (\n <Cell>\n {this.renderNavigationContainer()}\n <Cell overflowX=\"auto\">\n <ListTransactions\n transactionInfos={transactionInfos}\n pageContext={{ accountName: this.props.account.account_name }}\n />\n </Cell>\n {this.renderNavigationContainer()}\n </Cell>\n )\n }\n extendSearch() {\n const lastBlocks = searchStore.parseField(\n \"lastBlocks\",\n searchStore.blockRange.lastBlocks!\n ) as number\n searchStore.updateFilter(FilterTypes.BLOCK_RANGE, \"lastBlocks\", lastBlocks + BLOCK_NUM_5M)\n performStructuredSearch(this.cursorCache.currentCursor || \"\")\n this.props.history.push(this.cursoredUrl(this.cursorCache.currentCursor || \"\"))\n }\n\n renderNoResultsExtendSearchBox() {\n if (searchStore.blockRange.option === RangeOptions.LAST_BLOCKS) {\n return (\n <Cell textAlign=\"center\" p={[3]}>\n <Text color={theme.colors.green5} fontSize={[5]} mb=\"20px\">\n {t(\"transaction.list.noResultsExtend\", {\n lastBlocks: searchStore.blockRange.lastBlocks\n })}\n </Text>\n <br />\n <StyledButton onClick={() => this.extendSearch()}>\n {t(\"transaction.list.extendSearch\")}\n </StyledButton>\n </Cell>\n )\n }\n return null\n }\n render() {\n let content\n\n if (searchStore.loadingTransactions) {\n content = this.renderLoading(t(\"transaction.list.loading\"))\n } else if (searchStore.results.length > 0) {\n content = this.renderSearchResults()\n } else {\n content = (\n <Cell p={[4]}>\n {this.renderNoResultsExtendSearchBox()}\n </Cell>\n )\n }\n\n return (\n <Cell>\n <BorderLessPanel>\n <PanelContentWrapper>{content}</PanelContentWrapper>\n </BorderLessPanel>\n </Cell>\n )\n }\n}\n","import moment from \"moment\"\nimport { Account } from \"../../../models/account\"\n\nconst BLOCK_EPOCH = 946684800\nconst SECONDS_PER_WEEK = 3600 * 24 * 7\n\nexport function effectivePersonalVoteWeight(account: Account) {\n if (account.voter_info.is_proxy) {\n return account.voter_info.last_vote_weight - account.voter_info.proxied_vote_weight\n }\n\n return account.voter_info.last_vote_weight\n}\n\nexport function calculateVoteStrength(account: Account, staked: number): number {\n const timeDifference = parseInt(moment.utc().format(\"X\"), 10) - BLOCK_EPOCH\n const weight = Math.floor(timeDifference / SECONDS_PER_WEEK) / 52.0\n return effectivePersonalVoteWeight(account) / (weight ** 2 * staked)\n}\n","import {\n streamVoteTally,\n isInboundMessageType,\n streamAccount,\n GetTableRowParams\n} from \"../clients/websocket/eosws\"\nimport { InboundMessage, InboundMessageType, ErrorData } from \"@dfuse/client\"\nimport { voteStore } from \"../stores\"\nimport { Account, RexFunds, RexBalance, RexLoan, BlockProducerInfo } from \"../models/account\"\nimport {\n requestAccountLinkedPermissions,\n requestContractTableRows,\n requestProducerAccountTableRows\n} from \"../clients/rest/account\"\nimport { extractValueWithUnits, getDfuseClient } from \"@dfuse/explorer\"\n\nexport async function registerAccountDetailsListeners(\n accountName: string,\n blockNum: number,\n successCallback: (account: Account) => any,\n errorCallback: (message: ErrorData) => any\n) {\n const voteStream = await streamVoteTally(getDfuseClient(), (message: InboundMessage<any>) => {\n if ((message.type as any) === \"vote_tally\") {\n if (!message.data.vote_tally) {\n return\n }\n\n voteStore.update(message.data.vote_tally)\n }\n })\n\n const accountStream = await streamAccount(\n getDfuseClient(),\n accountName,\n (message: InboundMessage) => {\n if (message.type === InboundMessageType.ERROR) {\n errorCallback(message.data as ErrorData)\n return\n }\n\n if (!isInboundMessageType(message, \"account\")) {\n return\n }\n\n let { account } = message.data as { account: Account }\n let producerInfo: any\n\n const rexParams: GetTableRowParams = {\n json: true,\n scope: \"eosio\",\n table: \"rexbal\",\n code: \"eosio\",\n table_key: \"\",\n lower_bound: accountName,\n upper_bound: \"\",\n limit: 10\n }\n\n const rexfundsParams: GetTableRowParams = {\n json: true,\n scope: \"eosio\",\n table: \"rexfund\",\n code: \"eosio\",\n table_key: \"\",\n lower_bound: accountName,\n upper_bound: \"\",\n limit: 10\n }\n\n const cpuLoans: any = {\n code: \"eosio\",\n json: true,\n scope: \"eosio\",\n table: \"cpuloan\",\n lower_bound: accountName,\n upper_bound: \"zzzzzzzzzzzz\",\n limit: 100,\n index_position: \"3\",\n key_type: \"name\"\n }\n\n const netLoans: any = {\n code: \"eosio\",\n json: true,\n scope: \"eosio\",\n table: \"netloan\",\n lower_bound: accountName,\n upper_bound: \"zzzzzzzzzzzz\",\n limit: 100,\n index_position: \"3\",\n key_type: \"name\"\n }\n\n if (account) {\n Promise.all([\n requestProducerAccountTableRows(accountName),\n requestAccountLinkedPermissions(accountName, blockNum),\n requestContractTableRows(rexParams),\n requestContractTableRows(rexfundsParams),\n requestContractTableRows(cpuLoans),\n requestContractTableRows(netLoans)\n ])\n .then((response: any) => {\n if (response && response.length >= 2) {\n if (response[0]) {\n account = addProducerInfoToAccount(account, response[0])\n }\n\n if (response[1].linked_permissions) {\n account.linked_permissions = response[1].linked_permissions\n }\n\n successCallback(account)\n if (response.length >= 3 && response[2]) {\n account = addRexTokensToAccount(account, response[2])\n }\n\n if (response.length >= 4 && response[3]) {\n account = addRexFundsToAccount(account, response[3])\n }\n\n if (response.length >= 5 && response[4]) {\n account = addRexCpuLoanToAccount(account, response[4])\n }\n\n if (response.length >= 6 && response[5]) {\n account = addRexNetLoanToAccount(account, response[5])\n }\n }\n })\n .catch(() => {\n producerInfo = { rows: [] }\n account = addProducerInfoToAccount(account, producerInfo)\n account.linked_permissions = []\n successCallback(account)\n })\n }\n }\n )\n\n return {\n voteStream,\n accountStream\n }\n}\n\nfunction parseProducerInfo(data: any, accountName: string): BlockProducerInfo | undefined {\n if (data && data.rows && data.rows[0]) {\n const blockProducerInfo = JSON.parse(data.rows[0].json) as BlockProducerInfo\n if (blockProducerInfo.producer_account_name === accountName) {\n return blockProducerInfo\n }\n }\n return undefined\n}\n\nfunction addProducerInfoToAccount(account: Account, producerInfo: any): Account {\n if (producerInfo && producerInfo.rows && producerInfo.rows[0]) {\n account.block_producer_info = parseProducerInfo(producerInfo, account.account_name)\n }\n\n return account\n}\n\nfunction addRexTokensToAccount(account: Account, rexTokens: any): Account {\n if (rexTokens && rexTokens.rows && rexTokens.rows[0]) {\n const rexTokensData = rexTokens.rows.find((row: RexBalance) => {\n return account.account_name === row.owner\n })\n account.rex_balance = rexTokensData\n return account\n }\n return account\n}\n\nfunction addRexFundsToAccount(account: Account, rexTokens: any): Account {\n if (rexTokens && rexTokens.rows && rexTokens.rows[0]) {\n const rexTokensData = rexTokens.rows.find((row: RexFunds) => {\n return account.account_name === row.owner\n })\n account.rex_funds = rexTokensData\n return account\n }\n return account\n}\n\nfunction addRexCpuLoanToAccount(account: Account, rexTokens: any): Account {\n if (rexTokens && rexTokens.rows && rexTokens.rows[0]) {\n const rexTokensData = rexTokens.rows.filter((row: RexLoan) => {\n return account.account_name === row.from\n })\n account.cpu_loans = rexTokensData.reduce((sum: number, row: RexLoan) => {\n return sum + parseFloat(extractValueWithUnits(row.balance)[0])\n }, 0)\n return account\n }\n return account\n}\n\nfunction addRexNetLoanToAccount(account: Account, rexTokens: any): Account {\n if (rexTokens && rexTokens.rows && rexTokens.rows[0]) {\n const rexTokensData = rexTokens.rows.filter((row: RexLoan) => {\n return account.account_name === row.from\n })\n account.net_loans = rexTokensData.reduce((sum: number, row: RexLoan) => {\n return sum + parseFloat(extractValueWithUnits(row.balance)[0])\n }, 0)\n return account\n }\n return account\n}\n","import * as React from \"react\"\nimport { Account } from \"../../../models/account\"\nimport { addIndex, map } from \"ramda\"\nimport { MonospaceTextLink } from \"../../../atoms/text-elements/misc\"\nimport { Links } from \"../../../routes\"\nimport { styled } from \"../../../theme\"\nimport { Cell, Grid } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport { StatusBar } from \"../../../atoms/status-bar/status-bar\"\nimport { Text, TextLink } from \"../../../atoms/text/text.component\"\nimport { t } from \"i18next\"\nimport { formatPercentage, NBSP, DetailLine } from \"@dfuse/explorer\"\nimport numeral from \"numeral\"\n\nimport { calculateVoteStrength } from \"./vote.helpers\"\nimport { Stream } from \"@dfuse/client\"\nimport { registerAccountDetailsListeners } from \"../../../streams/account-listeners\"\nimport { metricsStore } from \"../../../stores\"\nimport { Config } from \"../../../models/config\"\n\ninterface Props {\n account: Account\n}\n\nconst VotedAccount: React.ComponentType<any> = styled(MonospaceTextLink)`\n padding: 10px;\n background-color: ${(props) => props.theme.colors.accountVoteBtn};\n margin-bottom: 10px;\n display: inline-block;\n margin-bottom: 17px;\n text-align: center;\n\n &:hover {\n background-color: ${(props) => props.theme.colors.accountVoteBtnOver};\n color: ${(props) => props.theme.colors.accountVoteBtnOverLink};\n }\n`\n\nconst VoteBarText: React.ComponentType<any> = styled(Text)`\n color: #ffffff !important;\n position: absolute;\n width: max-content;\n`\n\ninterface State {\n voteStrength: number\n proxyAccount?: Account\n}\n\nexport class AccountVotes extends React.Component<Props, State> {\n state: State = { voteStrength: 0, proxyAccount: undefined }\n\n accountStream?: Stream\n\n registerStreams = async (accountName: string) => {\n const streams = await registerAccountDetailsListeners(\n accountName,\n metricsStore.headBlockNum,\n (account: Account) => {\n this.setState({\n voteStrength: calculateVoteStrength(\n this.props.account,\n this.props.account.voter_info.staked\n ),\n proxyAccount: account,\n })\n },\n () => {\n this.setState({\n voteStrength: 0,\n proxyAccount: undefined,\n })\n }\n )\n\n this.accountStream = streams.accountStream\n }\n\n componentDidMount = async () => {\n const { voter_info: voterInfo } = this.props.account\n if (voterInfo.proxy && voterInfo.proxy.length > 0) {\n await this.registerStreams(voterInfo.proxy)\n } else if (voterInfo.producers && voterInfo.producers.length > 0) {\n this.setState({\n voteStrength: calculateVoteStrength(\n this.props.account,\n this.props.account.voter_info.staked\n ),\n })\n }\n }\n\n componentDidUpdate = async (prevProps: Readonly<Props>) => {\n if (prevProps.account.account_name !== this.props.account.account_name) {\n const { voter_info: voterInfo } = this.props.account\n if (voterInfo.proxy && voterInfo.proxy.length > 0) {\n await this.unregisterStreams()\n await this.registerStreams(voterInfo.proxy)\n } else if (voterInfo.producers && voterInfo.producers.length > 0) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n voteStrength: calculateVoteStrength(\n this.props.account,\n this.props.account.voter_info.staked\n ),\n })\n }\n }\n }\n\n componentWillUnmount = async () => {\n await this.unregisterStreams()\n }\n\n unregisterStreams = async () => {\n if (this.accountStream) {\n await this.accountStream.close()\n this.accountStream = undefined\n }\n }\n\n renderAccounts = (accounts: string[]) => {\n const mapIndexed = addIndex<string>(map)\n\n return mapIndexed(\n (account: string, index: number) => this.renderAccountName(account, index),\n accounts || []\n )\n }\n\n renderAccountName = (account: string, index: number) => {\n return (\n <VotedAccount\n mr={[0, 3]}\n width={[\"100%\", \"auto\", \"auto\"]}\n key={index}\n fontSize={[2, 3]}\n to={Links.viewAccount({ id: account })}\n >\n {account}\n </VotedAccount>\n )\n }\n\n renderProxyAccountTitle = () => {\n if (this.props.account.voter_info.is_proxy) {\n return (\n <Cell>\n <Text alignSelf=\"left\" px={[4]} pb={[2]} color=\"header\" fontSize={[25]} fontWeight=\"500\">\n Proxy account\n </Text>\n </Cell>\n )\n }\n return null\n }\n\n renderStatusBar = () => {\n if (this.props.account.voter_info.is_proxy) {\n return null\n }\n return (\n <Cell mt={[4]}>\n <StatusBar\n large={true}\n content={[this.state.voteStrength]}\n total={1}\n bg=\"barVoteBg\"\n color=\"barVote\"\n >\n <Grid gridTemplateColumns={[\"auto 1fr\", \"1fr 1fr\"]} height=\"100%\">\n <VoteBarText alignSelf=\"center\" pl={[2, 3]} fontSize={[1, 2]}>\n <Text color=\"#ffffff\" display=\"inline-block\" fontWeight=\"bold\">\n {t(\"account.summary.voter_info.labels.strength\")}\n {NBSP}\n </Text>\n {formatPercentage(this.state.voteStrength)} ,{NBSP}\n {t(\"account.summary.voter_info.labels.nextDecay\")}\n </VoteBarText>\n </Grid>\n </StatusBar>\n </Cell>\n )\n }\n\n renderVoteWeights() {\n if (this.props.account.voter_info.is_proxy && this.props.account.voter_info.staked === 0) {\n return null\n }\n const voteWeight = this.props.account.voter_info.staked / 10000\n const decayedVoteWeight = voteWeight * this.state.voteStrength\n\n return (\n <Cell alignSelf=\"left\" justifySelf=\"left\" gridColumn={[\"1\"]} mt={[4]}>\n <DetailLine\n mb={2}\n variant=\"compact\"\n label={t(\"account.summary.voter_info.labels.vote_weight\")}\n >\n {numeral(voteWeight).format(Config.chain_core_asset_format)}{\" \"}\n {Config.chain_core_symbol_code}\n </DetailLine>\n <DetailLine\n mb={2}\n variant=\"compact\"\n label={t(\"account.summary.voter_info.labels.decayed_vote_weight\")}\n >\n {numeral(decayedVoteWeight).format(Config.chain_core_asset_format)}{\" \"}\n {Config.chain_core_symbol_code}\n </DetailLine>\n </Cell>\n )\n }\n\n render() {\n if (this.state.voteStrength === 0) {\n return (\n <Cell p={[4]}>\n <Text color=\"text\" display=\"inline-block\" fontWeight=\"bold\">\n {t(\"account.summary.voter_info.noVotes\")}\n </Text>\n </Cell>\n )\n }\n\n const account = this.state.proxyAccount || this.props.account\n return (\n <Cell pt={[2]} pb={[4]}>\n {this.renderProxyAccountTitle()}\n <Cell px={[4]} pb={[5]}>\n {this.renderVoteWeights()}\n {this.renderStatusBar()}\n {this.state.proxyAccount ? (\n <Text fonSize={[3]} pt={[5]}>\n <Cell>\n <Text display=\"inline-block\" fontSize={[3]}>\n Proxied to:{\" \"}\n </Text>\n {NBSP}\n <TextLink\n fontSize={[3]}\n to={Links.viewAccount({\n id: this.state.proxyAccount.account_name,\n })}\n >\n {this.state.proxyAccount.account_name}\n </TextLink>\n </Cell>\n </Text>\n ) : null}\n <Text pt={[4]} fontWeight={[\"800\"]} fontSize={[2]}>\n {this.state.proxyAccount\n ? t(\"account.summary.voter_info.labels.vote_for_proxy\")\n : t(\"account.summary.voter_info.labels.vote_for_producers\")}\n </Text>\n <Cell pt={[2, 3]}>{this.renderAccounts(account.voter_info.producers)}</Cell>\n </Cell>\n </Cell>\n )\n }\n}\n","import { Abi, AbiStruct, AbiStructField, AbiTable, AbiType } from \"@dfuse/client\"\n\nexport class AbiLoader {\n abi: Abi\n\n constructor(abi: Abi) {\n this.abi = abi\n }\n\n get tables(): AbiTable[] {\n return this.abi.tables || []\n }\n\n get tableNames(): string[] {\n return this.tables.map((table: AbiTable) => table.name)\n }\n\n get tableTypes(): string[] {\n return this.tables.map((table: AbiTable) => table.type)\n }\n\n get structs(): AbiStruct[] {\n return this.abi.structs\n }\n\n get baseTypes(): AbiType[] {\n return this.abi.types\n }\n\n getTableFirstKey(tableName: string): string | undefined {\n const table = this.getTable(tableName)\n if (table && table.key_names === undefined) {\n const structRef = this.structs.find((struct: AbiStruct) => {\n return struct.name === table.type\n })\n\n if (structRef) {\n return structRef.fields[0].name\n }\n }\n\n return table && table.key_names && table.key_names.length > 0 ? table.key_names[0] : undefined\n }\n\n get actionNames(): string[] {\n return this.abi.actions.map((action) => action.name)\n }\n\n get composedTypes(): AbiStruct[] {\n return this.abi.structs.filter((struct: any) => {\n return !this.actionNames.includes(struct.name) && !this.tableTypes.includes(struct.name)\n })\n }\n\n get actionStructs(): AbiStruct[] {\n return this.abi.structs.filter((struct: AbiStruct) => {\n return this.actionNames.includes(struct.name)\n })\n }\n\n getTable(tableName: string): AbiTable | undefined {\n return this.tables.find((table: AbiTable) => table.name === tableName)\n }\n\n getTableStructFromType(tableType: string): AbiStruct | undefined {\n return this.structs.find((struct: AbiStruct) => struct.name === tableType)\n }\n\n getTableFields(tableName: string): AbiStructField[] {\n const table = this.getTable(tableName)\n const tableType = table ? table.type : \"\"\n const tableStruct = this.getTableStructFromType(tableType)\n return tableStruct ? tableStruct.fields : []\n }\n}\n","import { faCaretDown } from \"@fortawesome/free-solid-svg-icons\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport FormControl from \"@material-ui/core/FormControl\"\nimport InputLabel from \"@material-ui/core/InputLabel\"\nimport Select from \"@material-ui/core/Select\"\nimport MenuItem from \"@material-ui/core/MenuItem\"\nimport * as React from \"react\"\nimport { theme, styled } from \"../../theme\"\nimport { Text } from \"../text/text.component\"\n\nconst StyledFormControl: React.ComponentType<any> = styled(FormControl)`\n // min-width: 180px !important;\n width: 100%;\n`\n\nconst StyledInputLabel: React.ComponentType<any> = styled(InputLabel)`\n font-size: 16px !important;\n width: 180px !important;\n padding: 0 12px !important;\n z-index: 3;\n`\n\nconst StyledSelect: React.ComponentType<any> = styled(Select)`\n background-color: ${(props: any) => (props.bg ? props.bg : theme.colors.formSelectorBg)};\n`\n\nconst StyledSelectSmall: React.ComponentType<any> = styled(StyledSelect)`\n width: auto;\n padding: 2px 2px 2px 2px;\n`\n\nconst StyledSelectXSmall: React.ComponentType<any> = styled(StyledSelect)`\n width: auto;\n padding: 2px 2px 2px 2px;\n`\n\nconst StyledIconComponent: React.ComponentType<any> = styled(FontAwesomeIcon)`\n top: calc(50% - 7px);\n right: 12px;\n position: absolute;\n pointer-events: none;\n`\n\ninterface Props {\n options: DropDownOption[]\n onSelect: (label: string) => void\n placeholder?: string\n defaultValue?: string\n size?: string\n bg?: string\n selectorBg?: string\n noBorders?: boolean\n color?: string\n label?: string\n fontSize?: string\n id?: string\n value?: string\n}\n\ninterface UiTextEventTarget extends EventTarget {\n index?: number\n}\n\ninterface UiMouseEvent extends React.MouseEvent<HTMLElement> {\n target: UiTextEventTarget\n}\n\nexport interface DropDownOption {\n label: string\n value: string\n}\n\nexport class UiDropDown extends React.Component<Props, any> {\n button = null\n\n componentDidUpdate(prevProps: Props) {\n if (!this.props.value) {\n return\n }\n\n if (\n !this.optionValues.includes(this.props.value) &&\n this.props.defaultValue === this.state.selectedLabel\n ) {\n return\n }\n\n if (\n this.optionValues.includes(this.props.value) &&\n this.props.value !== this.state.selectedLabel\n ) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ selectedLabel: this.props.value })\n } else if (this.props.value !== this.state.selectedLabel) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ selectedLabel: this.props.defaultValue })\n }\n }\n\n get optionValues() {\n return this.props.options.map((option: DropDownOption) => option.value)\n }\n\n handleClick = (event: UiMouseEvent) => {}\n\n handleMenuItemClick = (event: any) => {\n this.setState({ selectedLabel: event.target.value })\n this.props.onSelect(event.target.value)\n }\n\n constructor(props: Props) {\n super(props)\n let selectedLabel = \"\"\n if (this.props.value && this.optionValues.includes(this.props.value)) {\n selectedLabel = this.props.value\n } else if (this.props.defaultValue) {\n selectedLabel = this.props.defaultValue\n }\n\n this.state = {\n selectedLabel\n }\n }\n\n render() {\n let SelectWrapper = StyledSelect as any\n if (this.props.size === \"xs\") {\n SelectWrapper = StyledSelectXSmall as any\n } else if (this.props.size === \"sm\") {\n SelectWrapper = StyledSelectSmall as any\n }\n let selectDisplayStyle: any = {\n paddingLeft: \"12px\"\n }\n\n if (this.props.size === \"sm\" || this.props.size === \"xs\") {\n selectDisplayStyle = {\n padding: \"3px 28px 3px 3px\"\n }\n }\n\n return (\n <StyledFormControl>\n {this.props.label ? (\n <StyledInputLabel htmlFor=\"table-dropdown\">{this.props.label}</StyledInputLabel>\n ) : null}\n <SelectWrapper\n bg={this.props.bg}\n disableUnderline={true}\n value={this.state.selectedLabel}\n onChange={this.handleMenuItemClick}\n SelectDisplayProps={{ style: selectDisplayStyle }}\n IconComponent={() => (\n <StyledIconComponent\n icon={faCaretDown}\n color={this.props.color ? this.props.color : theme.colors.text}\n />\n )}\n style={{\n border: this.props.noBorders\n ? \"none !important\"\n : `1px solid ${theme.colors.formSelectorBorder} !important`\n }}\n inputProps={{\n name: this.props.id || Math.random().toString(),\n id: this.props.id || Math.random().toString(),\n style: {\n paddingRight: \"30px\"\n }\n }}\n MenuProps={{\n PaperProps: {\n style: {\n backgroundColor: this.props.selectorBg ? this.props.selectorBg : this.props.bg\n }\n }\n }}\n >\n {this.props.options.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n <Text\n fontFamily=\"'Roboto Condensed', sans-serif;\"\n color={this.props.color ? this.props.color : \"text\"}\n fontSize={this.props.fontSize ? this.props.fontSize : \"16px\"}\n >\n {option.label}\n </Text>\n </MenuItem>\n ))}\n </SelectWrapper>\n </StyledFormControl>\n )\n }\n}\n","import { Button } from \"@material-ui/core\"\nimport InputLabel from \"@material-ui/core/InputLabel\"\nimport H from \"history\"\nimport { t } from \"i18next\"\nimport { observer } from \"mobx-react\"\nimport queryString from \"query-string\"\nimport * as React from \"react\"\nimport { Text } from \"../../../atoms/text/text.component\"\nimport { DropDownOption, UiDropDown } from \"../../../atoms/ui-dropdown/ui-dropdown.component\"\nimport { Cell, Grid } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport { UiInput } from \"../../../atoms/ui-text-field/ui-text-field\"\nimport { styled } from \"../../../theme\"\nimport { Links } from \"../../../routes\"\nimport { AbiLoader } from \"../../../services/abi-loader\"\nimport { contractTableStore } from \"../../../stores\"\nimport { fetchContractTableRowsOnContractPage } from \"../../../services/contract-table\"\n\nconst StyledButton: React.ComponentType<any> = styled(Button)`\n padding-left: 20px !important;\n padding-right: 20px !important;\n background-color: ${(props) => props.theme.colors.ternary} !important;\n border: none !important;\n font-weight: bold !important;\n border-radius: 0px !important;\n height: 35px !important;\n min-height: 35px !important;\n color: ${(props) => props.theme.colors.primary} !important;\n`\n\ninterface Props {\n abiLoader: AbiLoader\n accountName: string\n location: H.Location\n history: H.History\n}\n\n@observer\nexport class AccountTableSearch extends React.Component<Props> {\n constructor(props: Props) {\n super(props)\n\n this.initContractTableStore()\n }\n\n onClick = () => {\n fetchContractTableRowsOnContractPage(contractTableStore.params)\n\n this.props.history.push(\n `${Links.viewAccountTabs({\n id: this.props.accountName,\n currentTab: \"tables\"\n })}?${queryString.stringify(contractTableStore.urlParams)}`\n )\n }\n\n initContractTableStore() {\n const parsed = queryString.parse(this.props.location.search)\n contractTableStore.initFromUrlParams(this.props.abiLoader, this.props.accountName, parsed)\n }\n\n componentDidMount() {\n fetchContractTableRowsOnContractPage(contractTableStore.params)\n this.initContractTableStore()\n }\n\n selectTableWithHistory = (tableName: string) => {\n contractTableStore.tableName = tableName\n }\n\n renderDropDown(): JSX.Element {\n const dropDownOptions: DropDownOption[] = this.props.abiLoader.tableNames.map((tableName) => {\n return { label: tableName, value: tableName }\n })\n\n const parsed = queryString.parse(this.props.location.search)\n let selectedTableName: string | undefined\n if (typeof parsed.tableName === \"string\" && parsed.tableName) {\n selectedTableName = parsed.tableName\n } else if (this.props.abiLoader.tableNames.length > 0) {\n selectedTableName = this.props.abiLoader.tableNames[0]\n }\n\n if (this.props.abiLoader) {\n return (\n <UiDropDown\n label={t(\"accountTables.tables.dropdown.placeholder\")}\n placeholder={t(\"accountTables.tables.dropdown.placeholder\")}\n options={dropDownOptions}\n defaultValue={selectedTableName}\n onSelect={this.selectTableWithHistory}\n id=\"table-selector\"\n />\n )\n }\n\n return <span />\n }\n\n renderScopeInput() {\n return [\n <InputLabel key=\"scope-input-label\" htmlFor=\"scope-input\">\n <Text pl={[2]} fontSize={[1]}>\n {t(\"accountTables.search.scope\")}\n </Text>\n </InputLabel>,\n <UiInput\n key=\"scope-input\"\n id=\"scope-input\"\n disableUnderline={true}\n value={contractTableStore.scope}\n placeholder={t(\"accountTables.search.scope\")}\n onChange={(e: any) => {\n contractTableStore.scope = e.target.value\n }}\n />\n ]\n }\n\n renderLowerBoundInput() {\n return [\n <InputLabel key=\"lower-bound-input-label\" htmlFor=\"lower-bound-input\">\n <Text pl={[2]} fontSize={[1]}>\n {t(\"accountTables.search.lowerBound\")}\n </Text>\n </InputLabel>,\n <UiInput\n key=\"lower-bound-input\"\n id=\"lower-bound-input\"\n disableUnderline={true}\n value={contractTableStore.lowerBound}\n placeholder={t(\"accountTables.search.lowerBound\")}\n onChange={(e: any) => {\n contractTableStore.lowerBound = e.target.value\n }}\n />\n ]\n }\n\n render() {\n if (!this.props.abiLoader.abi) {\n return null\n }\n\n return (\n <Cell>\n <Grid\n ml={[4]}\n mb={[3]}\n maxWidth=\"600px\"\n gridTemplateColumns={[\"auto\", \"200px 285px 265px 1fr\", \"200px 265px 265px 1fr\"]}\n gridTemplateRows={[\"1fr 1fr 1fr 1fr 1fr\", \"auto\"]}\n >\n <Cell gridColumn={[\"1\"]} gridRow={[\"1\", \"1\"]} mr={[3]}>\n {this.renderDropDown()}\n </Cell>\n <Cell gridColumn={[\"1\", \"2\"]} gridRow={[\"2\", \"1\"]} mt=\"2px\">\n {this.renderScopeInput()}\n </Cell>\n <Cell gridColumn={[\"1\", \"3\"]} gridRow={[\"3\", \"1\"]} mt=\"2px\">\n {this.renderLowerBoundInput()}\n </Cell>\n <Cell gridColumn={[\"1\", \"4\"]} gridRow={[\"4\", \"1\"]} ml={[0, 3]} mt={[3]}>\n <StyledButton onClick={this.onClick}>\n <Text fontWeight=\"bold\" color=\"primary\">\n {t(\"accountTables.search.load\")}\n </Text>\n </StyledButton>\n </Cell>\n </Grid>\n <hr color=\"#f1f1f1\" />\n </Cell>\n )\n }\n}\n","import * as React from \"react\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport { MonospaceTextLink } from \"../../atoms/text-elements/misc\"\nimport { Links } from \"../../routes\"\nimport { formatDateFromString } from \"../../helpers/moment.helpers\"\nimport { formatDateTime } from \"@dfuse/explorer\"\n\ninterface Props {\n value: string | number\n type: string\n label: string\n}\n\nexport class FormattedContractElement extends React.Component<Props> {\n renderAccountName() {\n return (\n <MonospaceTextLink to={Links.viewAccount({ id: this.props.value.toString() })}>\n {this.props.value}\n </MonospaceTextLink>\n )\n }\n\n renderDate() {\n if (typeof this.props.value === \"string\") {\n return /[0-9]+/.test(this.props.value)\n ? this.renderDateFromInt(parseInt(this.props.value, 10))\n : this.renderDateFromString(this.props.value)\n }\n\n if (typeof this.props.value === \"number\") {\n return this.renderDateFromInt(this.props.value)\n }\n\n return this.renderDateFromString(this.props.value)\n }\n\n renderDateFromInt(value: number) {\n let valueInMilliseconds = value\n if (this.isMaybeInSeconds(value)) {\n valueInMilliseconds *= 1000\n }\n return <Text>{formatDateTime(valueInMilliseconds)}</Text>\n }\n\n isMaybeInSeconds(value: number) {\n return new Date(value).getUTCFullYear() < 2000\n }\n\n renderDateFromString(value: string) {\n return <Text>{formatDateFromString(value, true)}</Text>\n }\n\n render() {\n if (this.props.type === \"account_name\" || this.props.type === \"name\") {\n return this.renderAccountName()\n }\n\n if ([\"time_point\", \"time_point_sec\"].includes(this.props.type)) {\n return this.renderDateFromString(this.props.value as string)\n }\n\n if (this.props.label.includes(\"_at\")) {\n return this.renderDate()\n }\n\n return this.props.value.toString()\n }\n}\n","import { t } from \"i18next\"\nimport H from \"history\"\nimport { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport queryString from \"query-string\"\nimport { JsonWrapper, humanizeSnakeCase, NBSP, Box } from \"@dfuse/explorer\"\nimport { BorderLessPanel } from \"../../../atoms/panel/panel.component\"\nimport { Text } from \"../../../atoms/text/text.component\"\nimport { Cell, Grid } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport { UiSwitch } from \"../../../atoms/ui-switch/switch\"\nimport {\n UiTable,\n UiTableBody,\n UiTableCell,\n UiTableHead,\n UiTableRow,\n UiTableRowAlternated\n} from \"../../../atoms/ui-table/ui-table.component\"\nimport { ContentLoaderComponent } from \"../../../components/content-loader/content-loader.component\"\nimport { FormattedContractElement } from \"../../../components/formatted-contract-element/formatted-contract-element\"\n\nimport { fetchContractTableRowsOnContractPage } from \"../../../services/contract-table\"\nimport { Links } from \"../../../routes\"\nimport { NavigationButtons } from \"../../../atoms/navigation-buttons/navigation-buttons\"\nimport { contractTableStore } from \"../../../stores\"\nimport { AbiStructField } from \"@dfuse/client\"\nimport { GetTableRowParams } from \"../../../clients/websocket/eosws\"\n\ninterface Props {\n location: H.Location\n history: H.History\n}\n\ninterface State {\n formatted: boolean\n}\n\n@observer\nexport class AccountTableView extends ContentLoaderComponent<Props, State> {\n gridTemplateColumns = \"\"\n tableFields: AbiStructField[] = []\n\n constructor(props: Props) {\n super(props)\n\n const parsed = queryString.parse(this.props.location.search)\n if (typeof parsed.offset === \"string\" && parsed.offset) {\n contractTableStore.offset = this.extractOffset(parsed.offset)\n }\n\n this.state = {\n formatted: true\n }\n }\n\n extractOffset(value: string): number {\n if (!/[0-9]+/.test(value)) return 0\n\n return parseInt(value, 10)\n }\n\n loadMore = (lastRowKey: string) => {\n contractTableStore.lowerBound = lastRowKey\n contractTableStore.upperBound = undefined\n\n this.fetchContent(1, contractTableStore.params)\n }\n\n fetchContent(direction: number, params: GetTableRowParams) {\n this.setState(\n (prevState: State) => {\n contractTableStore.offset += contractTableStore.limit * direction\n\n return {\n formatted: prevState.formatted\n }\n },\n () => {\n this.props.history.push(\n `${Links.viewAccountTabs({\n id: contractTableStore.accountName,\n currentTab: \"tables\"\n })}?${queryString.stringify(contractTableStore.urlParams)}`\n )\n\n fetchContractTableRowsOnContractPage(params)\n }\n )\n }\n\n loadLess = (lastRowKey: string) => {\n contractTableStore.upperBound = lastRowKey\n contractTableStore.lowerBound = undefined\n\n this.fetchContent(-1, contractTableStore.params)\n }\n\n renderItem = (row: any, index: number) => {\n return <UiTableRowAlternated key={index}>{this.renderRowCells(row)}</UiTableRowAlternated>\n }\n\n renderCellContent(row: any, field: AbiStructField) {\n const value = row[field.name]\n if (value === null) {\n return <Text>null</Text>\n }\n\n // This condition will catch both objects and arrays, which is ok in this case\n if (typeof value === \"object\") {\n return <JsonWrapper>{JSON.stringify(value, null, \" \")}</JsonWrapper>\n }\n\n if (this.state.formatted) {\n return <FormattedContractElement label={field.name} value={value} type={field.type} />\n }\n\n return <Text>{value}</Text>\n }\n\n renderRowCells(row: any) {\n return this.tableFields.map((field: AbiStructField, index: number) => {\n if (row[field.name]) {\n return (\n <UiTableCell fontSize={[2]} key={index}>\n {this.renderCellContent(row, field)}\n {NBSP}\n </UiTableCell>\n )\n }\n\n return <UiTableCell fontSize={[2]} key={index} />\n })\n }\n\n renderItems = (tableRows: any[]): React.ReactChild[] => {\n return tableRows.map((row: any, index: number) => {\n return this.renderItem(row, index)\n })\n }\n\n renderHeaderCells = () => {\n return this.tableFields.map((field: AbiStructField, index: number) => {\n return (\n <UiTableCell fontSize={[3]} key={index}>\n {this.state.formatted ? humanizeSnakeCase(field.name) : field.name}\n </UiTableCell>\n )\n })\n }\n\n renderHeader = (): React.ReactChild => {\n return <UiTableRow>{this.renderHeaderCells()}</UiTableRow>\n }\n\n onSwitchFormat = (formatted: boolean) => {\n this.setState({ formatted })\n }\n\n renderSwitchGrid = (): JSX.Element => {\n return (\n <Grid gridTemplateColumns={[\"1fr\"]}>\n <Grid\n mr={[4]}\n justifyItems=\"center\"\n alignItems=\"center\"\n justifySelf=\"end\"\n gridTemplateColumns={[\"auto auto\"]}\n grid-template-rows={[\"35px\"]}\n >\n <Text pr={[1]} display=\"inline-block\">\n {t(\"account.tables.formatted\")}\n </Text>\n <UiSwitch\n checked={this.state.formatted}\n onChange={(checked: boolean) => this.onSwitchFormat(checked)}\n />\n </Grid>\n </Grid>\n )\n }\n\n renderNavigation = (tableRows: any) => {\n if (!tableRows.rows) {\n return <span />\n }\n const lastRow = tableRows.rows[tableRows.rows.length - 1]\n const { firstTableKey } = contractTableStore\n const lastRowKey = lastRow && firstTableKey ? lastRow[firstTableKey] : 0\n\n return (\n <NavigationButtons\n onNext={() => this.loadMore(lastRowKey)}\n onPrev={() => this.loadLess(lastRowKey)}\n showNext={tableRows.more}\n showPrev={contractTableStore.offset !== 0}\n showFirst={false}\n variant=\"light\"\n />\n )\n }\n\n renderEmptyTable = (): JSX.Element => {\n return (\n <Cell>\n <BorderLessPanel title={contractTableStore.tableName}>\n <Grid>\n <Cell overflowX=\"auto\">\n <UiTable>\n <UiTableHead>{this.renderHeader()}</UiTableHead>\n <UiTableBody>\n <UiTableRowAlternated>\n <tr>\n <Box px=\"20px\" py={[4]}>\n Empty Table\n </Box>\n </tr>\n </UiTableRowAlternated>\n </UiTableBody>\n </UiTable>\n </Cell>\n </Grid>\n </BorderLessPanel>\n </Cell>\n )\n }\n\n renderContent = (tableRows: any): JSX.Element => {\n return (\n <Cell>\n <BorderLessPanel\n title={contractTableStore.tableName}\n renderSideTitle={() => {\n return (\n <Grid gridTemplateColumns={[\"2fr 1fr\"]} alignItems=\"center\">\n {this.renderSwitchGrid()}\n {this.renderNavigation(tableRows)}\n </Grid>\n )\n }}\n >\n <Grid>\n <Cell overflowX=\"auto\">\n <UiTable>\n <UiTableHead>{this.renderHeader()}</UiTableHead>\n <UiTableBody>{this.renderItems(tableRows.rows || [])}</UiTableBody>\n </UiTable>\n </Cell>\n </Grid>\n <Grid gridTemplateColumns={[\"1fr\"]}>\n <Cell justifySelf=\"right\" alignSelf=\"right\" p={[4]}>\n {this.renderNavigation(tableRows)}\n </Cell>\n </Grid>\n </BorderLessPanel>\n </Cell>\n )\n }\n\n render() {\n this.tableFields = contractTableStore.abiLoader!.getTableFields(contractTableStore.tableName)\n this.gridTemplateColumns = \"1fr \".repeat(this.tableFields.length)\n\n if (this.tableFields && contractTableStore.tableName !== \"\") {\n if (contractTableStore.loading) {\n return this.renderLoading(\"loading table\")\n }\n\n if (contractTableStore.error) {\n return this.renderError()\n }\n\n if (contractTableStore.nRows > 0) {\n return this.renderContent(contractTableStore.tableRows)\n }\n\n if (contractTableStore.nRows === 0) {\n return this.renderEmptyTable()\n }\n\n return this.renderError()\n }\n\n return <div />\n }\n}\n","import H from \"history\"\nimport { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { Grid } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport { ContentLoaderComponent } from \"../../../components/content-loader/content-loader.component\"\nimport { AbiLoader } from \"../../../services/abi-loader\"\nimport { AccountTableSearch } from \"./account-table-search\"\nimport { AccountTableView } from \"./account-table-view\"\nimport { Abi } from \"@dfuse/client\"\n\ninterface Props {\n abi: Abi | null\n accountName: string\n location: H.Location\n history: H.History\n}\n\n@observer\nexport class AccountTables extends ContentLoaderComponent<Props> {\n abiLoader?: AbiLoader\n\n constructor(props: Props) {\n super(props)\n\n if (this.props.abi) {\n this.abiLoader = new AbiLoader(this.props.abi)\n }\n }\n\n componentDidUpdate(prevProps: Props) {\n if (prevProps.abi !== this.props.abi && this.props.abi) {\n this.abiLoader = new AbiLoader(this.props.abi)\n this.forceUpdate()\n }\n }\n\n renderContent = () => {\n if (!this.abiLoader) {\n return <div />\n }\n\n return (\n <Grid>\n <AccountTableSearch\n accountName={this.props.accountName}\n location={this.props.location}\n history={this.props.history}\n abiLoader={this.abiLoader}\n />\n {this.renderTableView()}\n </Grid>\n )\n }\n\n renderTableView = () => {\n if (!this.abiLoader) {\n return <div />\n }\n\n return <AccountTableView history={this.props.history} location={this.props.location} />\n }\n\n render() {\n return <Grid>{this.renderContent()}</Grid>\n }\n}\n","import { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { Cell, Grid } from \"../../../atoms/ui-grid/ui-grid.component\"\nimport { ContentLoaderComponent } from \"../../../components/content-loader/content-loader.component\"\nimport { JsonWrapper } from \"@dfuse/explorer\"\nimport { BorderLessPanel } from \"../../../atoms/panel/panel.component\"\nimport { theme } from \"../../../theme\"\nimport { Text } from \"../../../atoms/text/text.component\"\nimport { Abi } from \"@dfuse/client\"\n\ninterface State {\n currentTable: string\n scope: string\n}\n\ninterface Props {\n abi: Abi | null\n}\n\n@observer\nexport class AccountAbi extends ContentLoaderComponent<Props, State> {\n submitRequest = (tableName: string, scope: string) => {\n this.setState({ currentTable: tableName, scope })\n }\n\n renderContent = () => {\n if (!this.props.abi) {\n return <div />\n }\n\n return (\n <BorderLessPanel\n title={\n <Text fontSize={[4]} color={theme.colors.bleu8}>\n Contract ABI\n </Text>\n }\n >\n <Cell px={[4]}>\n <JsonWrapper>{JSON.stringify(this.props.abi, null, \" \")}</JsonWrapper>\n </Cell>\n </BorderLessPanel>\n )\n }\n\n render() {\n return <Grid>{this.renderContent()}</Grid>\n }\n}\n","import { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { styled } from \"../../theme\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { ContentLoaderComponent } from \"../../components/content-loader/content-loader.component\"\nimport { Account } from \"../../models/account\"\nimport { TabbedPanel } from \"../../atoms/tabbed-panel/tabbed-panel\"\nimport { AccountTransactions } from \"./transactions/account-transactions\"\nimport { AccountVotes } from \"./votes/account-votes\"\nimport { Links } from \"../../routes\"\nimport { fetchContractAbi } from \"../../services/contract-table\"\nimport { AccountTables } from \"./tables/account-tables\"\nimport { t } from \"i18next\"\nimport { RouteComponentProps } from \"react-router\"\nimport { AccountAbi } from \"./abi/account-abi\"\nimport { Abi } from \"@dfuse/client\"\n\nconst PanelContentWrapper: React.ComponentType<any> = styled(Cell)`\n width: 100%;\n`\n\ninterface Props extends RouteComponentProps<any> {\n account: Account\n currentTab: string\n}\n\ntype State = { currentTab: string; isContract: boolean; abi: Abi | null }\n\n@observer\nexport class AccountContents extends ContentLoaderComponent<Props, State> {\n limit = 50\n\n constructor(props: Props) {\n super(props)\n\n this.state = this.buildInitialState(props)\n }\n\n buildInitialState = (props: Props) => ({\n currentTab: props.currentTab || \"transactions\",\n isContract: props.currentTab === \"tables\" || false,\n abi: null\n })\n\n componentDidMount() {\n fetchContractAbi(this.props.account.account_name).then((data: { abi: Abi } | undefined) => {\n if (data && data.abi) {\n this.setState({ isContract: true, abi: data.abi })\n } else {\n this.setState(this.buildInitialState(this.props))\n }\n })\n }\n\n componentDidUpdate(prevProps: Readonly<Props>) {\n if (this.props.account.account_name !== prevProps.account.account_name) {\n fetchContractAbi(this.props.account.account_name).then((data: { abi: Abi } | undefined) => {\n if (data && data.abi) {\n this.setState({ isContract: true, abi: data.abi })\n } else {\n this.setState(this.buildInitialState(this.props))\n }\n })\n }\n }\n\n renderTabContent = () => {\n switch (this.state.currentTab) {\n case \"transactions\":\n return (\n <AccountTransactions\n account={this.props.account}\n location={this.props.location}\n history={this.props.history}\n match={this.props.match}\n />\n )\n case \"tables\":\n return (\n <AccountTables\n abi={this.state.abi}\n accountName={this.props.account.account_name}\n location={this.props.location}\n history={this.props.history}\n />\n )\n case \"votes\":\n return <AccountVotes account={this.props.account} />\n case \"abi\":\n return <AccountAbi abi={this.state.abi} />\n default:\n return (\n <AccountTransactions\n account={this.props.account}\n location={this.props.location}\n history={this.props.history}\n match={this.props.match}\n />\n )\n }\n }\n\n onSelectTab = (currentTab: string) => {\n this.setState({ currentTab })\n this.props.history.replace(\n Links.viewAccountTabs({ id: this.props.account.account_name, currentTab })\n )\n }\n\n render() {\n let tabData = [\n { label: \"transactions\", value: t(\"account.tabs.transactions\") },\n { label: \"votes\", value: t(\"account.tabs.vote_title\") }\n ]\n\n if (this.state.isContract) {\n tabData = tabData.concat([\n { label: \"tables\", value: t(\"account.tabs.tables\") },\n { label: \"abi\", value: \"ABI\" }\n ])\n }\n\n return (\n <Cell mt={[3]}>\n <PanelContentWrapper>\n <TabbedPanel\n selected={this.state.currentTab}\n fontSize={[1, 2, 3]}\n tabData={tabData}\n onSelect={this.onSelectTab}\n >\n {this.renderTabContent()}\n </TabbedPanel>\n </PanelContentWrapper>\n </Cell>\n )\n }\n}\n","import { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport * as React from \"react\"\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { theme, styled } from \"../../theme\"\nimport { JsonWrapper } from \"@dfuse/explorer\"\nimport { ErrorData } from \"@dfuse/client\"\n\nconst BoldText: React.ComponentType<any> = styled(Text)`\n font-weight: bold;\n\n font-family: \"Roboto Condensed\", sans-serif;\n margin-bottom: 3px;\n`\n\ninterface Props {\n error: ErrorData\n title: string\n}\n\nconst ErrorWrapper = styled(Cell)`\n background-color: ${(props) => props.theme.colors.statusBadgeClockBg};\n border: 1px solid ${(props) => props.theme.colors.statusBadgeClock};\n margin: 20px;\n word-break: break-word;\n`\n\nexport const FormattedError: React.FC<Props> = ({ title, error }) => (\n <ErrorWrapper px={[4]} py={[4]} alignItems=\"center\">\n <Grid gridTemplateColumns={[\"50px auto\"]}>\n <Cell fontSize={[4]} alignSelf=\"center\">\n <FontAwesomeIcon icon={faExclamationTriangle} color={theme.colors.statusBadgeClock} />\n </Cell>\n\n <Cell>\n <BoldText display=\"inline-block\" fontSize={[4]} color={theme.colors.statusBadgeClock}>\n {title}\n </BoldText>\n </Cell>\n </Grid>\n <Cell />\n <br />\n <Grid gridTemplateColumns={[\"50px auto\"]}>\n <Cell />\n <Grid wordBreak=\"break-word\" gridTemplateRows=\"auto\">\n <BoldText fontSize={[3]}>Message</BoldText>\n <Text fontSize={[3]} mb={[3]}>\n {error.message}\n </Text>\n <BoldText fontSize={[3]}>Code</BoldText>\n <Text fontSize={[3]} mb={[3]}>\n {error.code}\n </Text>\n {error.trace_id\n ? [\n <BoldText key=\"trace-id-label\" fontSize={[3]}>\n Trace_id\n </BoldText>,\n <Text key=\"trace-id-value\" fontSize={[3]} mb={[3]}>\n {error.trace_id}\n </Text>\n ]\n : null}\n\n <BoldText fontSize={[3]}>Details</BoldText>\n\n <Text fontSize={[3]}>\n <JsonWrapper fontSize={[2]}>{JSON.stringify(error.details, null, 2)}</JsonWrapper>\n </Text>\n </Grid>\n </Grid>\n </ErrorWrapper>\n)\n","import { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { Redirect, RouteComponentProps } from \"react-router-dom\"\nimport { Account } from \"../../models/account\"\nimport { Links } from \"../../routes\"\nimport { ContentLoaderComponent } from \"../../components/content-loader/content-loader.component\"\nimport { PageContainer } from \"../../components/page-container/page-container\"\nimport { ErrorData, Stream } from \"@dfuse/client\"\nimport { DataLoading, BULLET } from \"@dfuse/explorer\"\nimport { CustomTitleBanner } from \"../../atoms/panel/custom-title-banner\"\nimport { AccountSummary } from \"./summary/account-summary\"\nimport { AccountTitle } from \"./summary/account-title\"\nimport { metricsStore, voteStore } from \"../../stores\"\nimport { AccountContents } from \"./account-contents\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { NavigationButtons } from \"../../atoms/navigation-buttons/navigation-buttons\"\nimport { Vote } from \"../../models/vote\"\nimport { getRankInfo } from \"../../helpers/account.helpers\"\nimport { registerAccountDetailsListeners } from \"../../streams/account-listeners\"\n\nimport { FormattedError } from \"../../components/formatted-error/formatted-error\"\n\ninterface Props extends RouteComponentProps<any> {}\n\ninterface State {\n account?: Account\n fetchError?: ErrorData\n}\n\n@observer\nexport class AccountDetail extends ContentLoaderComponent<Props, State> {\n state: State = {}\n\n accountStream?: Stream\n voteStream?: Stream\n\n componentDidMount = async () => {\n await this.registerStreams()\n this.changeDocumentTitle()\n }\n\n changeDocumentTitle() {\n document.title = `${this.props.match.params.id} ${BULLET} account ${BULLET} eosq`\n }\n\n componentDidUpdate = async (prevProps: Props) => {\n if (prevProps.match.params.id !== this.props.match.params.id) {\n await this.unregisterStreams()\n await this.registerStreams()\n\n this.changeDocumentTitle()\n }\n }\n\n componentWillUnmount = async () => {\n await this.unregisterStreams()\n }\n\n registerStreams = async () => {\n const streams = await registerAccountDetailsListeners(\n this.props.match.params.id,\n metricsStore.headBlockNum,\n (account: Account) => {\n this.setState({ account })\n },\n (error: ErrorData) => {\n this.setState({ fetchError: error })\n }\n )\n\n this.voteStream = streams.voteStream\n this.accountStream = streams.voteStream\n }\n\n unregisterStreams = async () => {\n if (this.accountStream !== undefined) {\n await this.accountStream.close()\n this.accountStream = undefined\n }\n\n if (this.voteStream !== undefined) {\n await this.voteStream.close()\n this.voteStream = undefined\n }\n }\n\n renderNotFound = () => {\n return <Redirect to={Links.notFound()} />\n }\n\n renderBannerLeft(account: Account) {\n return <AccountTitle account={account} />\n }\n\n getNextProducer() {\n if (this.state.account && voteStore.votes) {\n const { rank } = getRankInfo(this.state.account!, voteStore.votes)\n\n return voteStore.votes.find((vote: Vote, index: number) => {\n return rank + 1 === index + 1\n })\n }\n\n return undefined\n }\n\n getPrevProducer(): Vote | undefined {\n if (this.state.account && voteStore.votes) {\n const { rank } = getRankInfo(this.state.account!, voteStore.votes)\n return voteStore.votes.find((vote: Vote, index: number) => {\n return rank - 1 === index + 1\n })\n }\n return undefined\n }\n\n onNext = () => {\n window.location.href = Links.viewAccount({ id: this.getNextProducer()!.producer })\n }\n\n onPrev = () => {\n window.location.href = Links.viewAccount({ id: this.getPrevProducer()!.producer })\n }\n\n renderBannerRight() {\n if (this.state.account && getRankInfo(this.state.account, voteStore.votes).rank > 0) {\n return (\n <NavigationButtons\n onNext={this.onNext}\n onPrev={this.onPrev}\n showNext={!!this.getNextProducer()}\n showPrev={!!this.getPrevProducer()}\n showFirst={false}\n />\n )\n }\n return <span />\n }\n\n render() {\n if (this.state.fetchError) {\n return (\n <PageContainer>\n <FormattedError error={this.state.fetchError} title=\"Error fetching account\" />\n </PageContainer>\n )\n }\n\n if (!this.state.account) {\n return <DataLoading />\n }\n\n return (\n <Cell>\n <PageContainer>\n <CustomTitleBanner\n contentLeft={this.renderBannerLeft(this.state.account)}\n contentRight={this.renderBannerRight()}\n />\n <AccountSummary account={this.state.account} />\n </PageContainer>\n <PageContainer>\n <AccountContents\n history={this.props.history}\n location={this.props.location}\n match={this.props.match}\n currentTab={this.props.match.params.currentTab}\n account={this.state.account}\n />\n </PageContainer>\n </Cell>\n )\n }\n}\n","import * as React from \"react\"\nimport { styled } from \"../../theme\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nexport const HoverableIcon: React.ComponentType<any> = styled(FontAwesomeIcon)`\n &:hover {\n cursor: pointer;\n color: ${(props) => props.theme.colors.linkHover};\n }\n`\n","import { observer } from \"mobx-react\"\nimport * as React from \"react\"\nimport { Button } from \"@material-ui/core\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { HoverableTextNoHighlight, Text } from \"../../atoms/text/text.component\"\nimport { theme, styled } from \"../../theme\"\nimport { UiInput } from \"../../atoms/ui-text-field/ui-text-field\"\nimport { searchStore } from \"../../stores\"\nimport { FilterSection, FilterTypes, RangeOptions } from \"../../models/search-filters\"\nimport { t } from \"i18next\"\nimport { RouteComponentProps } from \"react-router\"\nimport queryString from \"query-string\"\nimport { performStructuredSearch } from \"../../services/search\"\nimport { Box, formatNumber } from \"@dfuse/explorer\"\nimport { UiDropDown } from \"../../atoms/ui-dropdown/ui-dropdown.component\"\nimport Checkbox from \"@material-ui/core/Checkbox/Checkbox\"\n\nimport { UiSwitch } from \"../../atoms/ui-switch/switch\"\n\ninterface Props extends RouteComponentProps<any> {\n onApply: () => void\n}\n\nconst StyledInput: React.ComponentType<any> = styled(UiInput)`\n height: 32px;\n width: auto !important;\n min-width: 160px !important;\n input {\n color: ${(props) => props.theme.colors.text};\n }\n`\n\nconst StyledButton: React.ComponentType<any> = styled(Button)`\n padding-left: 40px !important;\n padding-right: 40px !important;\n background-color: ${(props) => props.theme.colors.ternary} !important;\n border: none !important;\n span {\n font-weight: 600 !important;\n }\n border-radius: 0px !important;\n height: 30px !important;\n min-height: 35px !important;\n color: ${(props) => props.theme.colors.primary} !important;\n`\n\nconst StyledCheckbox: React.ComponentType<any> = styled(Checkbox)`\n padding: 0 !important;\n`\n\nconst HoverableBox: React.ComponentType<any> = styled(Box)`\n &:hover {\n cursor: pointer;\n }\n`\n\n@observer\nexport class SearchFilters extends React.Component<Props> {\n BLOCK_RANGE_OPTIONS = [\n { label: t(\"filters.rangeOptions.custom\"), value: RangeOptions.CUSTOM },\n { label: t(\"filters.rangeOptions.all\"), value: RangeOptions.ALL },\n { label: t(\"filters.rangeOptions.lastBlocks\"), value: RangeOptions.LAST_BLOCKS }\n ]\n get parsed() {\n return queryString.parse(this.props.location.search)\n }\n\n renderSectionTitle(type: string, color: string) {\n return (\n <Text\n fontFamily=\"'Roboto Condensed', sans-serif;\"\n color={color}\n display=\"inline-block\"\n fontSize={[2]}\n key=\"title\"\n >\n {t(`filters.sections.titles.${type}`)}\n </Text>\n )\n }\n\n renderBlockInput(\n field: \"min\" | \"max\" | \"lastBlocks\",\n value: number,\n type: FilterTypes,\n label: string\n ) {\n return (\n <Grid justifySelf=\"left\" gridTemplateRows={[\"1fr 1fr\"]}>\n <Text\n justifySelf=\"left\"\n display=\"inline-block\"\n fontSize={[2]}\n color={theme.colors.bleu8}\n mr={[2]}\n >\n {label}\n </Text>\n <StyledInput\n inputProps={{ lang: \"en-150\", step: \"1000000\" }}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n this.onChangeField(type, field, event)\n }\n disableUnderline={true}\n mr={[2]}\n value={value >= 0 ? formatNumber(value) : 0}\n />\n </Grid>\n )\n }\n\n onSelectBlockRangeOption = (value: string) => {\n searchStore.updateFilter(FilterTypes.BLOCK_RANGE, \"option\", value as RangeOptions)\n }\n\n renderBlockRangeDropDown(label: string) {\n return (\n <Grid justifySelf=\"left\" gridTemplateRows={[\"1fr 1fr\"]}>\n <Text\n justifySelf=\"left\"\n display=\"inline-block\"\n fontSize={[2]}\n color={theme.colors.bleu8}\n mr={[2]}\n >\n {label}\n </Text>\n <UiDropDown\n defaultValue={searchStore.rangeOption}\n options={this.BLOCK_RANGE_OPTIONS}\n onSelect={this.onSelectBlockRangeOption}\n />\n </Grid>\n )\n }\n\n displayBlockRange(filterSection: FilterSection) {\n const { data } = filterSection\n\n const content = (\n <Grid gridTemplateColumns={[\"1fr\", \"auto auto auto\"]} gridRowGap={[2, 0]} key=\"block-range\">\n <Cell pr={[4]} alignItems=\"center\">\n {this.renderBlockRangeDropDown(t(\"filters.sections.titles.blockRange\"))}\n </Cell>\n {searchStore.rangeOption === RangeOptions.CUSTOM\n ? [\n <Cell key=\"from\" pr={[4]} alignItems=\"center\">\n {this.renderBlockInput(\n \"min\",\n data.min,\n filterSection.type,\n t(\"filters.sections.labels.from\")\n )}\n </Cell>,\n <Cell key=\"to\" pr={[2]} alignItems=\"center\">\n {this.renderBlockInput(\n \"max\",\n data.max,\n filterSection.type,\n t(\"filters.sections.labels.to\")\n )}\n </Cell>\n ]\n : null}\n {searchStore.rangeOption === RangeOptions.LAST_BLOCKS\n ? [\n <Cell key=\"from\" pr={[4]} alignItems=\"center\">\n {this.renderBlockInput(\n \"lastBlocks\",\n data.lastBlocks,\n filterSection.type,\n t(\"filters.sections.labels.lastBlocks\")\n )}\n </Cell>\n ]\n : null}\n </Grid>\n )\n\n return this.displayLine(content, filterSection.type)\n }\n\n onChangeField(type: FilterTypes, field: string, e: React.ChangeEvent<HTMLInputElement>) {\n const value: string = e.target.value.toString()\n searchStore.updateFilter(type, field, searchStore.parseField(field, value))\n }\n\n toggleIrreversibleOnly = () => {\n searchStore.updateFilter(\n FilterTypes.BLOCK_STATUS,\n \"irreversibleOnly\",\n searchStore.withReversible\n )\n }\n\n displayBlockStatus(filterSection: FilterSection) {\n const { data } = filterSection\n const content = (\n <HoverableBox\n onClick={() => this.toggleIrreversibleOnly()}\n key=\"block-status\"\n alignItems=\"center\"\n py={[4]}\n >\n <Cell display=\"inline-block\">\n <StyledCheckbox\n checked={data.irreversibleOnly}\n color=\"default\"\n onChange={(event: any) => {\n searchStore.updateFilter(\n FilterTypes.BLOCK_STATUS,\n \"irreversibleOnly\",\n event.target.checked\n )\n }}\n />\n </Cell>\n <Text display=\"inline-block\" fontSize={[2]} color={theme.colors.bleu8} ml={[1]}>\n {t(\"filters.sections.labels.irreversible\")}\n </Text>\n <Cell />\n </HoverableBox>\n )\n return this.displayLine(content, filterSection.type)\n }\n\n displayLine(content: JSX.Element, type: FilterTypes) {\n return (\n <Cell alignItems={[\"center\"]} height={[\"auto\", \"auto\"]} py={[2, 0]} key={type}>\n {content}\n </Cell>\n )\n }\n\n renderSections() {\n return searchStore.filterSections.map((section: FilterSection) => {\n let content: JSX.Element\n switch (section.type) {\n case FilterTypes.BLOCK_RANGE:\n content = this.displayBlockRange(section)\n break\n case FilterTypes.BLOCK_STATUS:\n content = this.displayBlockStatus(section)\n break\n default:\n throw new Error(`unknown FilterTypes (${section.type}), this shouldn't happen`)\n }\n\n return content\n })\n }\n\n onSubmit = () => {\n const cursor = performStructuredSearch(this.parsed.cursor as string)\n this.props.history.push(this.cursoredUrl(cursor as string))\n this.props.onApply()\n }\n\n cursoredUrl = (cursor: string) => {\n return searchStore.cursoredUrl(cursor)\n }\n\n renderButton() {\n return (\n <Cell textAlign={[\"center\", \"left\"]} py={[3]}>\n <StyledButton onClick={this.onSubmit}>{t(\"filters.apply\")}</StyledButton>\n </Cell>\n )\n }\n\n renderSort() {\n if (searchStore.blockRange.option === RangeOptions.LAST_BLOCKS) {\n return null\n }\n return (\n <Cell>\n <Cell>\n <Text color={theme.colors.bleu8}>SORT</Text>\n </Cell>\n <HoverableTextNoHighlight\n onClick={() => searchStore.toggleSort()}\n display=\"inline-block\"\n fontSize={[2]}\n color={theme.colors.bleu8}\n mr={[1]}\n >\n Ascending\n </HoverableTextNoHighlight>\n <UiSwitch\n key={searchStore.sort}\n checked={searchStore.sort === \"desc\"}\n onChange={() => searchStore.toggleSort()}\n />\n <HoverableTextNoHighlight\n onClick={() => searchStore.toggleSort()}\n display=\"inline-block\"\n fontSize={[2]}\n color={theme.colors.bleu8}\n ml={[1]}\n >\n Descending\n </HoverableTextNoHighlight>\n </Cell>\n )\n }\n\n render() {\n return (\n <Cell maxWidth=\"1800px\" mx=\"auto\">\n <Grid px={[2, 3]} gridTemplateRows={[\"1fr auto 1fr\"]} key=\"b\">\n {this.renderSections()}\n {this.renderSort()}\n {this.renderButton()}\n </Grid>\n </Cell>\n )\n }\n}\n","import * as React from \"react\"\nimport { UiModal } from \"../../atoms/ui-modal/ui-modal\"\nimport { LinkStyledText, Text } from \"../../atoms/text/text.component\"\nimport { t } from \"i18next\"\nimport { Cell } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { HoverableIcon } from \"../../atoms/hoverable/hoverable\"\nimport { faCog } from \"@fortawesome/free-solid-svg-icons\"\nimport { theme } from \"../../theme\"\nimport { SearchFilters } from \"../../components/search-filters/search-filters\"\nimport { observer } from \"mobx-react\"\nimport { RouteComponentProps } from \"react-router\"\n\ninterface State {\n filtersOpened: boolean\n}\n\ninterface Props extends RouteComponentProps<any> {\n title: string\n color?: string\n}\n\n@observer\nexport class FilterModal extends React.Component<Props, State> {\n state = { filtersOpened: false }\n\n onApplyFilters = () => {\n this.setState({ filtersOpened: false })\n }\n\n onOpenFilters = () => {\n this.setState({ filtersOpened: true })\n }\n\n render() {\n return (\n <UiModal\n opened={this.state.filtersOpened}\n onOpen={this.onOpenFilters}\n opener={\n <LinkStyledText\n display=\"inline-block\"\n color={this.props.color ? this.props.color : \"link\"}\n fontSize={[3]}\n fontFamily=\"'Roboto Condensed', sans-serif;\"\n >\n {this.props.title}\n <Cell display=\"inline-block\" ml={[2]}>\n <HoverableIcon icon={faCog as any} size=\"lg\" />\n </Cell>\n </LinkStyledText>\n }\n headerTitle={\n <Text fontSize={[4]} p={[2]} color={theme.colors.bleu8} fontWeight=\"600\">\n {t(\"filters.queryParams\")}\n </Text>\n }\n >\n <SearchFilters onApply={this.onApplyFilters} {...this.props} />\n </UiModal>\n )\n }\n}\n","import * as React from \"react\"\nimport { observer } from \"mobx-react\"\nimport { RouteComponentProps } from \"react-router-dom\"\nimport { Box, JsonWrapper, formatNumber, NBSP } from \"@dfuse/explorer\"\nimport { ErrorData } from \"@dfuse/client\"\nimport { Button } from \"@material-ui/core\"\nimport { Panel } from \"../../atoms/panel/panel.component\"\nimport { Text } from \"../../atoms/text/text.component\"\nimport { fontSize } from \"styled-system\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { PageContainer } from \"../../components/page-container/page-container\"\nimport { transactionSearchResultsToTransactionInfo } from \"../../helpers/legacy.helpers\"\nimport { ListTransactions } from \"../../components/list-transactions/list-transactions.component\"\nimport { t } from \"i18next\"\nimport { ListContentLoaderComponent } from \"../../components/list-content-loader/list-content-loader.component\"\nimport { searchStore } from \"../../stores\"\nimport { performStructuredSearch } from \"../../services/search\"\nimport { FormattedError } from \"../../components/formatted-error/formatted-error\"\nimport { FilterModal } from \"./filter-modal\"\nimport { FilterTypes, RangeOptions } from \"../../models/search-filters\"\nimport { theme, styled } from \"../../theme\"\nimport { BLOCK_NUM_5M } from \"../../models/block\"\n\ninterface Props extends RouteComponentProps<any> {}\n\nconst BoldText: React.ComponentType<any> = styled.span`\n font-weight: bold;\n ${fontSize};\n font-family: \"Roboto Condensed\", sans-serif;\n`\n\nconst StyledButton: React.ComponentType<any> = styled(Button)`\n padding: 12px 30px !important;\n background-color: ${(props) => props.theme.colors.ternary} !important;\n border: none !important;\n font-weight: bold !important;\n border-radius: 0px !important;\n min-height: 35px !important;\n color: ${(props) => props.theme.colors.primary} !important;\n`\n\nconst PanelContentWrapper: React.ComponentType<any> = styled(Cell)`\n width: 100%;\n min-height: 700px;\n`\n\nconst ResultInfoContainer: React.ComponentType<any> = styled(Box)`\n border: 1px solid #25c2ab;\n background-color: rgba(37, 194, 171, 0.12);\n padding: 40px;\n margin: 80px auto;\n`\n\ninterface State {\n filtersOpened: boolean\n}\n\n@observer\nexport class TransactionSearchResultPage extends ListContentLoaderComponent<Props, State> {\n lastQuery = \"\"\n\n constructor(props: Props) {\n super(props)\n this.cursorCache = searchStore.cursorCache\n }\n\n componentDidMount(): void {\n window.scrollTo(0, 0)\n this.parseUrlParams()\n this.componentDidMountHandler()\n }\n\n componentDidUpdate(): void {\n if (this.parseQuery() !== this.lastQuery) {\n window.scrollTo(0, 0)\n this.parseUrlParams()\n this.componentDidMountHandler()\n }\n }\n\n parseQuery() {\n if (typeof this.parsed.q === \"string\") {\n return decodeURIComponent(this.parsed.q)\n }\n\n return \"\"\n }\n\n parseUrlParams() {\n searchStore.updateFromUrlParams(this.parsed as any)\n }\n\n cursoredUrl = (cursor: string) => {\n return searchStore.cursoredUrl(cursor)\n }\n\n fetchListForCursor(cursor: string) {\n if (searchStore.query.length > 0) {\n this.lastQuery = searchStore.query\n this.search(searchStore.query, cursor)\n }\n }\n\n renderResultsTitle() {\n return (\n <Text color=\"header\" fontSize={[5]}>\n {t(\"search.searchResultsFor\")}{\" \"}\n </Text>\n )\n }\n\n search = (query: string, cursor?: string) => {\n if (!cursor || cursor.length === 0) {\n cursor = this.cursorCache.currentCursor\n }\n\n performStructuredSearch(cursor || \"\")\n }\n\n renderNavigationContainer() {\n return (\n <Grid gridTemplateColumns={[\"1fr\"]}>\n <Cell justifySelf=\"right\" alignSelf=\"right\" px={[3]} py={[2]}>\n {this.renderNavigation(\"light\", searchStore.hasNextPage)}\n </Cell>\n </Grid>\n )\n }\n\n renderSearchResults(showMore: boolean) {\n const transactionInfos = transactionSearchResultsToTransactionInfo(searchStore.results || [])\n return (\n <Cell>\n {this.renderNavigationContainer()}\n <Cell overflowX=\"auto\">\n <ListTransactions transactionInfos={transactionInfos} />\n </Cell>\n <Cell px={[4]}>{showMore ? this.renderExtendSearchBox() : null}</Cell>\n {this.renderNavigationContainer()}\n </Cell>\n )\n }\n\n renderSideTitle = (): JSX.Element => {\n const title = t(`filters.currentFilter.${searchStore.filterCombination}`, {\n min: formatNumber(searchStore.blockRange.min || 0),\n max: formatNumber(searchStore.blockRange.max || 0),\n lastBlocks: formatNumber(searchStore.blockRange.lastBlocks || 0)\n })\n return <FilterModal {...this.props} title={title} />\n }\n\n renderSearchError(error: ErrorData) {\n const i18nkey = error.code === \"request_validation_error\" ? error.code : \"generic_error\"\n\n return (\n <Grid p={[4]} alignItems=\"center\">\n <Cell pb={[2]} width=\"100%\">\n <BoldText display=\"inline-block\" fontSize={[4]}>\n {t(\"search.result.errors.label\")}\n </BoldText>\n {NBSP}\n <Text display=\"inline-block\" fontSize={[4]}>\n {t(`search.result.errors.${i18nkey}`)}\n </Text>\n </Cell>\n <br />\n <Cell>\n <JsonWrapper>{JSON.stringify(error, null, 2)}</JsonWrapper>\n </Cell>\n </Grid>\n )\n }\n\n extendSearch() {\n const lastBlocks = searchStore.parseField(\n \"lastBlocks\",\n searchStore.blockRange.lastBlocks!\n ) as number\n searchStore.updateFilter(FilterTypes.BLOCK_RANGE, \"lastBlocks\", lastBlocks + BLOCK_NUM_5M)\n performStructuredSearch(this.cursorCache.currentCursor || \"\")\n this.props.history.push(this.cursoredUrl(this.cursorCache.currentCursor || \"\"))\n }\n\n renderExtendSearchBox() {\n if (searchStore.blockRange.option === RangeOptions.LAST_BLOCKS) {\n return (\n <ResultInfoContainer mt={[4]} mb={[4]} alignItems=\"center\" justifyContent=\"center\">\n <Cell textAlign=\"center\" p={[3]}>\n <Text color={theme.colors.green5} fontSize={[5]} mb=\"20px\">\n {t(\"transaction.list.noMoreResultsExtend\", {\n lastBlocks: searchStore.blockRange.lastBlocks\n })}\n </Text>\n <br />\n <StyledButton onClick={() => this.extendSearch()}>\n {t(\"transaction.list.extendSearch\")}\n </StyledButton>\n <Cell mt=\"20px\" color={theme.colors.grey5}>\n <FilterModal\n title={t(\"transaction.list.advancedOptions\")}\n {...this.props}\n color={theme.colors.grey7}\n />\n </Cell>\n </Cell>\n </ResultInfoContainer>\n )\n }\n return null\n }\n\n renderNoResultsExtendSearchBox() {\n if (searchStore.blockRange.option === RangeOptions.LAST_BLOCKS) {\n return (\n <ResultInfoContainer mt={[4]} mb={[4]} alignItems=\"center\" justifyContent=\"center\">\n <Cell textAlign=\"center\" p={[3]}>\n <Text color={theme.colors.green5} fontSize={[5]} mb=\"20px\">\n {t(\"transaction.list.noResultsExtend\", {\n lastBlocks: searchStore.blockRange.lastBlocks\n })}\n </Text>\n <br />\n <StyledButton onClick={() => this.extendSearch()}>\n {t(\"transaction.list.extendSearch\")}\n </StyledButton>\n\n <Cell mt=\"20px\">\n <FilterModal\n title={t(\"transaction.list.advancedOptions\")}\n {...this.props}\n color={theme.colors.grey7}\n />\n </Cell>\n </Cell>\n </ResultInfoContainer>\n )\n }\n return null\n }\n\n render() {\n let content: JSX.Element | null\n\n if (searchStore.loadingTransactions) {\n content = this.renderLoading(t(\"transaction.list.loading\"))\n } else if (searchStore.searchError) {\n const i18nkey =\n searchStore.searchError.code === \"request_validation_error\"\n ? searchStore.searchError.code\n : \"generic_error\"\n\n content = (\n <FormattedError\n title={t(`search.result.errors.${i18nkey}`)}\n error={searchStore.searchError}\n />\n )\n } else if (\n searchStore.results.length > 0 &&\n searchStore.results.length < searchStore.DEFAULT_PARAMS.limit\n ) {\n content = this.renderSearchResults(true)\n } else if (searchStore.results.length > 0) {\n content = this.renderSearchResults(false)\n } else if (!searchStore.query || searchStore.query.length === 0) {\n content = null\n } else {\n content = (\n <Cell p={[4]} minHeight=\"700px\">\n <Text fontSize={[4]}>\n {t(\"search.result.noResultFoundFor\")}{\" \"}\n <BoldText fontSize={[4]}>{decodeURIComponent(searchStore.query)}</BoldText>\n </Text>\n {this.renderNoResultsExtendSearchBox()}\n </Cell>\n )\n }\n\n return (\n <PageContainer>\n <Panel\n title={searchStore.query ? this.renderResultsTitle() : \"\"}\n renderSideTitle={this.renderSideTitle}\n >\n <PanelContentWrapper>{content}</PanelContentWrapper>\n </Panel>\n </PageContainer>\n )\n }\n}\n","let hidden = \"hidden\"\nlet visibilityChange = \"visibilitychange\"\nif (typeof document.hidden !== \"undefined\") {\n // Opera 12.10 and Firefox 18 and later support\n hidden = \"hidden\"\n visibilityChange = \"visibilitychange\"\n // @ts-ignore\n} else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\"\n visibilityChange = \"msvisibilitychange\"\n // @ts-ignore\n} else if (typeof document.webkitHidden !== \"undefined\") {\n // @ts-ignore\n hidden = \"webkitHidden\"\n visibilityChange = \"webkitvisibilitychange\"\n}\n\nexport const HIDDEN = hidden\n\nexport const VISIBILITYCHANGE = visibilityChange\n\nexport const handleVisibilityChange = (\n visibleCallback?: () => void,\n hiddenCallback?: () => void\n) => {\n return () => {\n if (document[HIDDEN!]) {\n if (hiddenCallback) {\n hiddenCallback()\n }\n } else if (visibleCallback) {\n visibleCallback()\n }\n }\n}\n","import * as React from \"react\"\nimport { Route, RouteComponentProps, Switch } from \"react-router-dom\"\nimport WrappedWithTheme from \"../../hocs/with-theme\"\nimport { TransactionDetailPage } from \"../../pages/transactions/transaction-detail.page\"\nimport { TransactionsPage } from \"../../pages/transactions/transactions.page\"\nimport { VoteTally } from \"../../pages/vote/vote-tally.page\"\nimport { Paths } from \"../../routes\"\nimport { menuStore, metricsStore, serviceWorkerStore } from \"../../stores\"\nimport { Header } from \"../header\"\nimport { NotFound } from \"../not-found/not-found.component\"\nimport { ServerError } from \"../server-error/server-error.component\"\nimport { Cell, Grid } from \"../../atoms/ui-grid/ui-grid.component\"\nimport { BlocksPage } from \"../../pages/blocks/blocks.page\"\nimport { BlockDetailPage } from \"../../pages/blocks/block-detail.page\"\nimport { SearchResultPage } from \"../../pages/search-result/search-result.page\"\nimport { LinkStyledText, Text } from \"../../atoms/text/text.component\"\nimport { Footer } from \"../footer\"\nimport { t } from \"i18next\"\nimport { streamPrice } from \"../../clients/websocket/eosws\"\nimport { InboundMessage, Stream, HeadInfoData } from \"@dfuse/client\"\nimport { AccountDetail } from \"../../pages/account/account-detail.page\"\nimport { TransactionSearchResultPage } from \"../../pages/search-result/transaction-search-result.page\"\nimport { NBSP, getDfuseClient } from \"@dfuse/explorer\"\nimport { observer } from \"mobx-react\"\nimport { theme, styled } from \"../../theme\"\nimport { ServiceWorkerStates } from \"../../stores/service-worker-store\"\nimport { handleVisibilityChange, VISIBILITYCHANGE } from \"../../helpers/focus.helpers\"\nimport { Config, EosqNetwork } from \"../../models/config\"\n\nconst SkewedCell = styled(Cell)`\n position: relative;\n &:before {\n content: \" \";\n position: absolute;\n top: 0;\n left: -18px;\n width: 20px;\n height: 20px;\n z-index: 0;\n background: ${(props) => props.bg};\n border-radius: inherit;\n transform: skew(35deg);\n }\n\n @media (max-width: 767px) {\n &:before {\n content: \"\";\n display: none;\n }\n }\n`\n\nconst NetworkContainer: React.ComponentType<any> = styled(Cell)`\n position: absolute;\n height: 20px;\n width: auto;\n right: 0px;\n top: 5px;\n z-index: 10000;\n\n @media (max-width: 767px) {\n &:before {\n content: \"\";\n }\n\n position: relative;\n top: 0px;\n height: auto;\n }\n`\n\nconst HeaderWrapper: React.ComponentType<any> = styled(Cell)`\n position: fixed !important;\n z-index: 1000;\n width: 100%;\n top: 0px;\n\n background: #474793; /* Old browsers */\n background: -moz-linear-gradient(left, #474793 8%, #5e5ec2 93%); /* FF3.6-15 */\n background: -webkit-linear-gradient(left, #474793 8%, #5e5ec2 93%); /* Chrome10-25,Safari5.1-6 */\n background: linear-gradient(\n to right,\n #474793 8%,\n #5e5ec2 93%\n ); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#474793', endColorstr='#5e5ec2',GradientType=1 ); /* IE6-9 */\n`\n\nconst PageWrapper: React.ComponentType<any> = styled.div`\n background-color: ${(props) => props.theme.colors.primary};\n min-height: 100vh;\n`\n\nconst MaintenanceWrapper: React.ComponentType<any> = styled(Grid)`\n background-color: #ffca28;\n`\n\nconst Maintenance: React.ComponentType<any> = styled(Cell)`\n padding-top: 10px;\n padding-bottom: 10px;\n`\n\ninterface Props extends RouteComponentProps<any> {\n currentTheme: string\n switchTheme: any\n}\n\ninterface State {\n height: number\n}\n\nfunction onElementHeightChange(elm: any, callback: any) {\n let lastHeight = elm.clientHeight\n let newHeight\n ;(function run() {\n newHeight = elm.clientHeight\n if (lastHeight !== newHeight) callback(newHeight)\n lastHeight = newHeight\n\n if (elm.onElementHeightChangeTimer) clearTimeout(elm.onElementHeightChangeTimer)\n\n elm.onElementHeightChangeTimer = setTimeout(run, 150)\n })()\n}\n\n@observer\nclass AppContainer extends React.Component<Props, State> {\n headerElement: any\n\n headInfoStream?: Stream\n priceStream?: Stream\n\n state: State = {\n height: 167,\n }\n\n focusListener = () => {\n this.registerStreams()\n }\n\n defocusListener = () => {\n this.unregisterStreams()\n }\n\n unregisterStreams = async () => {\n if (this.headInfoStream) {\n await this.headInfoStream.close()\n this.headInfoStream = undefined\n }\n\n if (this.priceStream) {\n await this.priceStream.close()\n this.priceStream = undefined\n }\n }\n\n registerStreams = async () => {\n if (!this.headInfoStream) {\n this.headInfoStream = await getDfuseClient().streamHeadInfo((message: InboundMessage) => {\n if (message.type === \"head_info\") {\n metricsStore.setBlockHeight(message.data as HeadInfoData)\n }\n })\n }\n\n if (!this.priceStream) {\n this.priceStream = await streamPrice(getDfuseClient(), (message: InboundMessage<any>) => {\n if ((message.type as string) === \"price\") {\n metricsStore.setPrice(message.data)\n }\n })\n }\n }\n\n componentDidUpdate(prevProps: Readonly<Props>, prevState: Readonly<State>, snapshot?: any): void {\n if (prevProps.location.pathname !== this.props.location.pathname) {\n this.changeDocumentTitle()\n if (menuStore.opened) {\n menuStore.close()\n }\n }\n }\n\n changeDocumentTitle() {\n if (this.isAListPage(this.props.location.pathname)) {\n document.title = \"eosq: High-Precision Block Explorer\"\n }\n }\n\n isAListPage(pathName: string) {\n return (\n !pathName.includes(\"/account/\") && !pathName.includes(\"/tx/\") && !pathName.includes(\"/block/\")\n )\n }\n\n componentDidMount() {\n this.registerStreams()\n\n document.addEventListener(\n VISIBILITYCHANGE,\n handleVisibilityChange(this.focusListener, this.defocusListener),\n false\n )\n\n if (this.headerElement && this.headerElement.clientHeight) {\n const height = this.headerElement!.clientHeight\n\n this.setState({ height })\n\n onElementHeightChange(this.headerElement!, (newHeight: number) => {\n this.setState({ height: newHeight })\n })\n }\n }\n\n componentWillUnmount = async () => {\n clearTimeout(this.headerElement!.onElementHeightChangeTimer)\n document.removeEventListener(\n VISIBILITYCHANGE,\n handleVisibilityChange(this.focusListener, this.defocusListener),\n false\n )\n\n await this.unregisterStreams()\n }\n\n renderRoutes() {\n return (\n <Switch>\n <Route exact={true} path={Paths.home} component={TransactionsPage} />\n\n <Route exact={true} path={Paths.blocks} component={BlocksPage} />\n <Route exact={true} path={Paths.viewBlock} component={BlockDetailPage} />\n <Route exact={true} path={Paths.producers} component={VoteTally} />\n <Route exact={false} path={Paths.searchResults} component={SearchResultPage} />\n <Route exact={true} path={Paths.viewAccountTabs} component={AccountDetail} />\n <Route exact={true} path={Paths.viewAccount} component={AccountDetail} />\n <Route exact={true} path={Paths.transactions} component={TransactionsPage} />\n <Route exact={true} path={Paths.viewTransaction} component={TransactionDetailPage} />\n <Route exact={true} path={Paths.notFound} component={NotFound} />\n <Route\n exact={false}\n path={Paths.viewTransactionSearch}\n component={TransactionSearchResultPage}\n />\n\n <Route exact={true} path={Paths.serverError} component={ServerError} />\n\n <Route component={NotFound} />\n </Switch>\n )\n }\n\n renderTestNetWarning() {\n const network = Config.available_networks.find(\n (ref: EosqNetwork) => ref.id === Config.network_id\n )\n\n if (!network) {\n return null\n }\n\n const bg = !network.is_test ? theme.colors.bleu11 : theme.colors.testnet\n\n return (\n <Cell\n width=\"100%\"\n display={[!network.is_test ? \"none\" : \"block\", \"block\"]}\n py={[1, 0]}\n height={[\"auto\", \"5px\"]}\n bg={bg}\n textAlign=\"center\"\n >\n <NetworkContainer\n onClick={() => menuStore.open()}\n px={[2]}\n justifySelf=\"left\"\n alignSelf=\"left\"\n color={theme.colors.primary}\n bg={bg}\n >\n <SkewedCell px={[3]} justifySelf=\"left\" alignSelf=\"left\" bg={bg}>\n <Text\n zIndex=\"10\"\n fontFamily=\"Roboto Condensed\"\n fontSize={[1]}\n color=\"primary\"\n display=\"inline-block\"\n fontWeight=\"bold\"\n >\n {t(`core.networkOptions.${Config.network_id.replace(\"-\", \"_\")}`, {\n defaultValue: network ? network.name : Config.network_id,\n })}\n </Text>\n </SkewedCell>\n </NetworkContainer>\n </Cell>\n )\n }\n\n reloadPage() {\n window.location.reload(true)\n }\n\n renderNewVersionAvailable() {\n return (\n <MaintenanceWrapper pt={[0]} pb={[0]} px={[1, 0]}>\n <Maintenance mx=\"auto\" maxWidth={[\"1800px\"]} px={[2, 3, 4]}>\n <Text zIndex=\"10\" fontSize=\"14px\" color=\"black\" fontWeight=\"bold\" display=\"inline-block\">\n {t(\"core.newVersionAvailable\")} {NBSP}\n <LinkStyledText fontWeight=\"bold\" onClick={this.reloadPage}>\n {t(\"core.refresh\")}\n </LinkStyledText>\n </Text>\n </Maintenance>\n </MaintenanceWrapper>\n )\n }\n\n renderTitleBar() {\n return (\n <Cell height={`${this.state.height}px`}>\n <HeaderWrapper\n mx=\"auto\"\n ref={(headerElement: any) => {\n this.headerElement = headerElement\n }}\n >\n {serviceWorkerStore.state === ServiceWorkerStates.INSTALLED\n ? this.renderNewVersionAvailable()\n : null}\n\n {this.renderTestNetWarning()}\n <Cell mx=\"auto\" px={[2, 3, 4]}>\n <Header />\n </Cell>\n </HeaderWrapper>\n </Cell>\n )\n }\n\n render() {\n return (\n <PageWrapper id=\"outer-container\">\n {this.renderTitleBar()}\n <Cell minHeight=\"820px\">{this.renderRoutes()}</Cell>\n <Footer />\n </PageWrapper>\n )\n }\n}\n\nexport default WrappedWithTheme(AppContainer)\n","import * as React from \"react\"\nimport Sentry from \"@sentry/browser\"\nimport { serviceWorkerStore } from \"../../stores\"\nimport { ServiceWorkerStates } from \"../../stores/service-worker-store\"\nimport { styled } from \"../../theme\"\nimport { debugLog } from \"../../services/logger\"\n\ninterface State {\n error: any\n installing: boolean\n}\n\nconst Spinner = styled.div`\n margin: 40px auto;\n width: 250px;\n height: 40px;\n text-align: center;\n font-size: 10px;\n\n > div {\n width: 20px;\n margin: 0 3px 0 0;\n background-color: #333;\n height: 100%;\n display: inline-block;\n background-color: #6d6ae8;\n -webkit-animation: sk-stretchdelay 1.5s infinite ease-in-out;\n animation: sk-stretchdelay 1.5s infinite ease-in-out;\n }\n\n .rect2 {\n -webkit-animation-delay: -1.2s;\n animation-delay: -1.2s;\n }\n\n .rect3 {\n -webkit-animation-delay: -0.9s;\n animation-delay: -0.9s;\n }\n\n .rect4 {\n -webkit-animation-delay: -0.6s;\n animation-delay: -0.6s;\n }\n\n .rect5 {\n -webkit-animation-delay: -0.3s;\n animation-delay: -0.3s;\n }\n\n @-webkit-keyframes sk-stretchdelay {\n 0%,\n 40%,\n 100% {\n -webkit-transform: scaleY(0.4);\n }\n 20% {\n -webkit-transform: scaleY(1);\n }\n }\n\n @keyframes sk-stretchdelay {\n 0%,\n 40%,\n 100% {\n transform: scaleY(0.4);\n -webkit-transform: scaleY(0.4);\n }\n 20% {\n transform: scaleY(1);\n -webkit-transform: scaleY(1);\n }\n }\n`\n\nexport class AppErrorBoundary extends React.Component<any, State> {\n state = { error: null, installing: false }\n\n handleError(error: any) {\n let interval: number | undefined = setInterval(() => {\n if (serviceWorkerStore.state === ServiceWorkerStates.INSTALLED) {\n clearInterval(interval!)\n interval = undefined\n window.location.reload()\n return\n }\n\n if (serviceWorkerStore.state !== ServiceWorkerStates.INSTALLING) {\n this.setState({ error, installing: false })\n } else {\n this.setState({ installing: true, error: null })\n }\n }, 250) as any\n\n setTimeout(() => {\n clearInterval(interval!)\n interval = undefined\n }, 15000)\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n this.handleError(error)\n if (Sentry) {\n Sentry.withScope((scope) => {\n Object.keys(errorInfo).forEach((key) => {\n scope.setExtra(key, errorInfo[key])\n })\n\n debugLog(\"Captured an error\", error)\n Sentry.captureException(error)\n })\n }\n }\n\n onReportErrorClicked = () => {\n if (Sentry) {\n Sentry.showReportDialog()\n }\n }\n\n render() {\n if (this.state.installing) {\n return (\n <div\n style={{\n width: \"100%\",\n height: \"100vh\",\n display: \"flex\",\n alignItems: \"center\",\n padding: 30,\n textAlign: \"center\",\n marginTop: 40\n }}\n >\n <div style={{ fontSize: 34, color: \"#6d6ae8\", width: \"100%\" }}>\n Welcome to \n <b style={{ fontSize: 34, color: \"#6d6ae8\" }}>eosq</b>\n <br />\n <br />\n <span style={{ fontSize: 20, color: \"#6d6ae8\" }}>\n Please wait, a new version of the application is being loaded.\n </span>\n <Spinner>\n <div className=\"rect1\" />\n <div className=\"rect2\" />\n <div className=\"rect3\" />\n <div className=\"rect4\" />\n <div className=\"rect5\" />\n </Spinner>\n </div>\n </div>\n )\n }\n\n if (this.state.error) {\n // Render fallback UI\n return (\n <div style={{ padding: 30 }}>\n <p>\n We're sorry\n <span role=\"img\" aria-label=\"emoji\">\n 😳\n </span>\n — something's gone wrong.\n </p>\n <p>\n <button type=\"button\" onClick={this.onReportErrorClicked}>\n Report feedback\n </button>\n Once reported, try going back to the home page and reload the page.\n </p>\n </div>\n )\n }\n\n // When there's not an error, render the children untouched\n return this.props.children\n }\n}\n","import * as React from \"react\"\nimport * as Sentry from \"@sentry/browser\"\nimport { withRouter } from \"react-router\"\nimport AppContainer from \"./components/app-container/app-container.component\"\nimport { AppErrorBoundary } from \"./components/app-error-boundary/app-error-boundary\"\nimport withTheme from \"./hocs/with-theme\"\nimport { Config } from \"./models/config\"\nimport { Helmet } from \"react-helmet\"\n\n// Let's initialize Sentry error handling, if not disabled\nif (!Config.disable_sentry && !Config.isLocalhost) {\n console.log(\"Initializing Sentry!\")\n Sentry.init({\n dsn: \"https://e268f409256b4df6b11d2fa584e734af@sentry.io/1339887\",\n })\n}\n\n// @ts-ignore\nconst Container = withRouter(withTheme(AppContainer))\n\nexport const App = (props: any) => (\n <AppErrorBoundary>\n <DocumentMeta />\n <Container />\n </AppErrorBoundary>\n)\n\nconst DocumentMeta: React.FC = () => {\n const { network } = Config\n if (network == null) {\n return null\n }\n\n const baseURL = new URL(\"\", document.baseURI).href.replace(/\\/+$/, \"\")\n const faviconURL = `${baseURL}${network.favicon_template}.png`\n\n return (\n <Helmet>\n {network?.page_title ? <title>{network?.page_title} : null}\n\n {/* The meta tags must always use full-url */}\n {network?.favicon_template ? : null}\n {network?.favicon_template ? : null}\n {network?.favicon_template ? (\n \n ) : null}\n \n )\n}\n","import { createBrowserHistory } from \"history\"\nimport { Provider } from \"mobx-react\"\nimport { RouterStore, syncHistoryWithStore } from \"mobx-react-router\"\nimport { render } from \"react-dom\"\nimport { Router } from \"react-router\"\nimport { initializeDfuseClientFromConfig } from \"./clients/dfuse\"\nimport \"sanitize.css/sanitize.css\"\nimport { App } from \"./App\"\nimport \"./i18n\"\nimport \"./index.css\"\n\nconst browserHistory = createBrowserHistory()\nconst routingStore = new RouterStore()\n\nconst history = syncHistoryWithStore(browserHistory, routingStore)\n\nconst stores = {\n routing: routingStore,\n}\n\nconst renderApp = (NextApp: any) =>\n render(\n \n \n \n \n ,\n document.querySelector(\"#root\")\n )\n\ninitializeDfuseClientFromConfig()\n\nrenderApp(App)\n","import { initializeDfuseClient } from \"@dfuse/explorer\"\nimport { DfuseClient, createDfuseClient } from \"@dfuse/client\"\nimport { Config } from \"../models/config\"\n\nlet dfuseClient: DfuseClient\nexport const getDfuseClient = () => dfuseClient\n\nexport const initializeDfuseClientFromConfig = () => {\n initializeDfuseClient(\n createDfuseClient({\n apiKey: Config.dfuse_io_api_key,\n network: Config.dfuse_io_endpoint,\n authUrl: Config.dfuse_auth_endpoint,\n secure: Config.secure !== undefined && Config.secure\n })\n )\n}\n"],"sourceRoot":""}