{"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","opKey","op","family","action","EditIndicator","DBOperations","renderContentNew","dbop","new","hex","renderContentOld","old","renderTableOps","tableops","tableop","path","pb","pt","renderDBOps","dbops","zeroName","dbopScope","trim","dbopKey","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","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","powerTitle","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_power","delegated_cpu","delegated_network","pending_refund","available_funds","votes_staked","transactions_value","status_bar","units","kb","mb","titles","available","memory","cpu_bandwidth","network_bandwidth","power_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","kv_add","kv_update","kv_remove","unknown","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","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","availableFunds","core_liquid_balance","stakedPower","power_weight","selfStakedPower","stakedPowerFromOthers","reduce","a","sumPowerStakes","pendingRefund","power_amount","power","stakedTotal","stakedFromOthers","selfStaked","stakedToOthers","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","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","LogoLink","span","HeaderLogo","Logo","logo_text","LogoImageAndText","image","LogoImage","LogoUltra","LogoDefault","stroke","stroke-width","fill-rule","x","y","points","d","LogoText","pa","flexWrap","PictoTransactions","strokeWidth","strokeMiterlimit","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","StyledText","Footer","year","getFullYear","CustomTitleBanner","contentLeft","contentRight","StyledSvg","DonutChartContainer","DonutChartCenterWrapper","DonutChartCenter","DonutChart","centerContent","addGraph","chart","models","pieChart","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","micro","AccountStatusBars","isInfiniteResources","numerator","denominator","round","renderRatioText","formattedText","infinite","INFINITY","renderByteRatio","renderUsed","renderTimeRatio","renderStakeDetails","staked","renderRam","memoryContent","memoryTotal","renderPower","cpuBandwidthContent","cpuBandwidthTotal","networkBandwidthContent","networkBandwidthTotal","totalPower","delegatedPower","powerBandwidthTitle","amountCpu","amountNetwork","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","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","addProducerInfoToAccount","cpu_weight","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","faviconURL","baseURI","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.45675034.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: \"#ffffff\",\n secondary: \"#fff\",\n ternary: \"#312d36\",\n green5: \"#1ccab0\",\n secondHighlight: \"#FFB866\",\n logo: \"#322E37\",\n logo1: \"#fff\",\n logo2: \"#7e90fb\",\n highlight: \"#322E37\",\n highlight2: \"#7A85FF\",\n border: \"#ffffff\",\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: \"#25262B\",\n link: \"#7A85FF\",\n link2: \"#7A85FF\",\n link3: \"#7A85FF\",\n bleu11: \"#302B35\",\n bleu10: \"#302B35\",\n bleu9: \"#fff\",\n bleu8: \"#835DD4\",\n bleu7: \"#322E37\",\n bleu6: \"#fff\",\n bleu5: \"#fff\",\n bleu4: \"#fff\",\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: \"#322E37\",\n bannerHover: \"#322E37\",\n bannerTitle: \"#fff\",\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: \"#322E37\",\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: \"#322E37\",\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: \"#322E37\",\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 let opKey = \"transaction.ramUsage.operations.unknown\"\n if (ramop.op !== \"deprecated\") {\n opKey = `transaction.ramUsage.operations.${ramop.op}`\n } else {\n opKey = `transaction.ramUsage.operations.${ramop.family}_${ramop.action}`\n }\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(opKey),\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 //ultra-andrey-bezrukov --- BLOCK-516-Fix Dfuse explorer not display primary key correctly in DB Operations\n const zeroName = \".............\";\n let dbopScope = zeroName;\n if(dbop.scope !== undefined && dbop.scope.trim().length !== 0) dbopScope = dbop.scope;\n\n let dbopKey = zeroName;\n if(dbop.key !== undefined && dbop.key.trim().length !== 0) dbopKey = dbop.key;\n\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: dbopScope\n },\n {\n name: \"primaryKey\",\n type: \"bold\",\n value: dbopKey\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//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\n// networkTitle: \"Total\",\n// cpuTitle: \"Total\",\n powerTitle: \"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 staked_power: \"STAKED FOR POWER\",\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: \"POWER@CPU\",\n network_bandwidth: \"POWER@NETWORK\",\n power_bandwidth: \"POWER\"\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 kv_add: \"storing a key/value pair\",\n kv_update: \"updating a key/value pair\",\n kv_remove: \"removing a key/value pair\",\n unknown: \"unknown\",\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: \"\",\n aboutDfuse: \"\",\n copyright: \"© 2018-{{year}} Ultra. All Rights Reserved.\",\n privacyPolicy: \"\",\n privacyPolicyLink: \"\",\n termsOfServices: \"Terms of Service\",\n termsOfServicesLink: \"https://ultra.io/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//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\n// networkTitle: \"网络带宽总计\",\n// cpuTitle: \"CPU带宽总计\",\n powerTitle: \"POWER带宽总计\"\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 staked_power: \"POWER抵押数量\",\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: \"POWER@CPU\",\n network_bandwidth: \"POWER@网络带宽\",\n power_bandwidth: \"POWER\"\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: \"\",\n aboutDfuse: \"\",\n copyright: \"© 2018-{{year}} Ultra. All Rights Reserved.\",\n privacyPolicy: \"\",\n privacyPolicyLink: \"\",\n termsOfServices: \"Terms of Service\",\n termsOfServicesLink: \"https://ultra.io/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//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\n// cpu_weight: string\n// net_weight: string\n power_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\n//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\n// cpu_weight: string\n//export 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//\n//export 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 function sumPowerStakes(stakes: StakeDetail[], accountName: string): number {\n return stakes.reduce((a: number, b: StakeDetail) => {\n if (b.to !== accountName) {\n a += parseFloat(b.power_weight.split(\" \")[0])\n }\n return a\n }, 0.0)\n}\n\nexport interface AccountResources {\n//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\n// cpu_weight: string\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 power: {\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//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\n// cpu_weight: string\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 stakedPower = parseFloat(extractValueWithUnits(totalResources.power_weight)[0])\n const selfStakedPower = parseFloat(extractValueWithUnits(selfDelegated.power_weight)[0])\n const stakedPowerFromOthers = stakedPower - selfStakedPower\n if (stakes.length > 0) {\n stakedPower += sumPowerStakes(stakes, account.account_name)\n }\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 pendingRefund += parseFloat(extractValueWithUnits(refundRequest.power_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 const totalOwnerShip =\n stakedPower +\n pendingRefund +\n availableFunds -\n stakedPowerFromOthers;\n\n return {\n//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\n// cpu_weight: string\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 power: {\n stakedTotal: stakedPower,\n stakedFromOthers: stakedPowerFromOthers,\n selfStaked: selfStakedPower,\n stakedToOthers: stakedPower - selfStakedPower - stakedPowerFromOthers,\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.staked_power\"),\n value: accountResources.power.stakedTotal,\n renderWrapper: (value: any) => wrapperRenderer(accountResources, \"power\", 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: #8964D9 !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\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 LogoUltra: React.FC = () => (\n <>\n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n\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: #1E1F23; /* Old browsers */\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 {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 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 {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# ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\n# list-style: none;\n# padding-left: 10px;\n padding-left: 1em;\n margin-top: 0;\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 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//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\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 \"power\":\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//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\n// formatMicroseconds,\n INFINITY, microSecondsToSeconds,\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//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\n function formatMicroseconds(micro: number) {\n if(micro == -1) {\n // special case. Treat it as unlimited\n return \"unlimited\";\n }\n let unit: string = \"us\";\n\n if( micro > 1000000*60*60 ) {\n micro /= 1000000*60*60;\n unit = \"hr\";\n }\n else if( micro > 1000000*60 ) {\n micro /= 1000000*60;\n unit = \"min\";\n }\n else if( micro > 1000000 ) {\n micro /= 1000000;\n unit = \"sec\";\n }\n else if( micro > 1000 ) {\n micro /= 1000;\n unit = \"ms\";\n }\n return micro.toFixed(1)+unit;\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//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\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 renderPower(\n cpuBandwidthContent: number[],\n cpuBandwidthTotal: number,\n networkBandwidthContent: number[],\n networkBandwidthTotal: number,\n totalPower: string,\n stakedPower: string,\n delegatedPower: number,\n ) {\n const powerBandwidthTitle = t(\"account.summary.tooltip.powerTitle\")\n let amountCpu = cpuBandwidthTotal - cpuBandwidthContent[0]\n if (amountCpu < 0) {\n amountCpu = 0\n }\n let amountNetwork = networkBandwidthTotal - networkBandwidthContent[0]\n if (amountNetwork < 0) {\n amountNetwork = 0\n }\n return (\n \n \n \n \n {formatMicroseconds(amountCpu)}\n \n }\n />\n \n {this.renderTimeRatio(cpuBandwidthContent[0], cpuBandwidthTotal)}\n \n \n \n \n \n \n \n {formatBytes(amountNetwork)}\n \n }\n />\n \n {this.renderByteRatio(networkBandwidthContent[0], networkBandwidthTotal)}\n \n \n \n \n \n \n \n {this.renderStakeDetails(powerBandwidthTitle, totalPower, stakedPower, delegatedPower)}\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//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\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 const totalPower = extractValueWithUnits(account.total_resources.power_weight)[0]\n const stakedPower= extractValueWithUnits(selfDelegatedBandwidth.power_weight)[0]\n const delegatedPower = parseFloat(totalPower) - parseFloat(stakedPower)\n\n//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\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 return (\n \n \n {this.renderRam(memoryContent, account.ram_quota)}\n {this.renderPower(\n cpuBandwidthContent,\n account.cpu_limit.max,\n networkBandwidthContent,\n account.net_limit.max,\n totalPower,\n stakedPower,\n delegatedPower,\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\")\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\"\n//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\n//import { Account, RexFunds, RexBalance, RexLoan, BlockProducerInfo } from \"../models/account\"\nimport { Account, BlockProducerInfo } from \"../models/account\"\nimport {\n requestAccountLinkedPermissions,\n requestContractTableRows,\n requestProducerAccountTableRows\n} from \"../clients/rest/account\"\n//import { extractValueWithUnits, getDfuseClient } from \"@dfuse/explorer\"\nimport { 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//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\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 // ultra-keisuke --- BLOCK-1685 --- examine and fix some code in eosq block explorer\n // commmented out below two lines, because the below handling of them had already been commented out.\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 if(account.cpu_weight)\n account.power_weight = account.cpu_weight;\n\n successCallback(account)\n \n//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\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\n//ultra-andrey-bezrukov --- BLOCK-80 Integrate ultra power into dfuse and remove rex related tables\n//function 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//\n//function 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//\n//function 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//\n//function 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(value: any, field: AbiStructField) {\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 /*ultra-duncan---BLOCK-154 Fix display for 0 value field --- */\n let value = row[field.name]\n if (value === 0 || value === null)\n value = `${value}`\n if (value) {\n return (\n <UiTableCell fontSize={[2]} key={index}>\n {this.renderCellContent(value, 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 // ultra-keisuke --- BLOCK-1685 --- examine and fix some code in eosq block explorer\n this.accountStream = streams.accountStream\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: #7650C7; /* Old browsers */\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":""}