UNPKG

7.18 kBSource Map (JSON)View Raw
1{"version":3,"file":"TokenBadge.js","sources":["../src/components/TokenBadge/TokenBadge.js"],"sourcesContent":["import React, { useCallback, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { ImageExists } from '../../hooks'\nimport { GU } from '../../style'\nimport { isAddress, tokenIconUrl, warn } from '../../utils'\nimport BadgeBase from '../BadgeBase/BadgeBase'\nimport TokenBadgePopover from './TokenBadgePopover'\n\nconst TokenBadge = React.memo(function TokenBadge({\n address,\n badgeOnly,\n className,\n compact,\n name,\n networkType,\n style,\n symbol,\n}) {\n const badgeRef = useRef(null)\n\n const [opened, setOpened] = useState(false)\n const handleClose = useCallback(() => setOpened(false), [])\n const handleOpen = useCallback(() => setOpened(true), [])\n\n const isValidAddress = isAddress(address)\n const iconSrc =\n isValidAddress && networkType === 'main' ? tokenIconUrl(address) : null\n const title = name && symbol ? `${name} (${symbol})` : symbol\n\n if (!isValidAddress) {\n warn(`TokenBadge: provided invalid address (${address})`)\n }\n\n return (\n <BadgeBase\n badgeRef={badgeRef}\n className={className}\n compact={compact}\n disabled={badgeOnly}\n icon={\n <ImageExists src={iconSrc}>\n {({ exists }) => exists && <Icon compact={compact} src={iconSrc} />}\n </ImageExists>\n }\n label={\n <span\n css={`\n position: relative;\n top: 1px;\n display: flex;\n flex-shrink: 1;\n min-width: 0;\n margin-left: ${compact ? 0 : `${1 * GU}px`};\n `}\n >\n {name && <Name>{name}</Name>}\n <Symbol>{name ? `(${symbol})` : symbol}</Symbol>\n </span>\n }\n onClick={isValidAddress ? handleOpen : undefined}\n style={style}\n title={`${title} − ${address || 'No address'}`}\n >\n {popoverDisabled =>\n !popoverDisabled &&\n address && (\n <TokenBadgePopover\n address={address}\n iconSrc={iconSrc}\n networkType={networkType}\n onClose={handleClose}\n opener={badgeRef.current}\n title={title}\n visible={opened}\n />\n )\n }\n </BadgeBase>\n )\n})\nTokenBadge.propTypes = {\n address: PropTypes.string,\n badgeOnly: PropTypes.bool,\n className: PropTypes.string,\n compact: PropTypes.bool,\n name: PropTypes.string,\n networkType: PropTypes.string,\n style: PropTypes.object,\n symbol: PropTypes.string.isRequired,\n}\nTokenBadge.defaultProps = {\n address: '',\n name: '',\n networkType: 'main',\n}\n\nfunction Icon({ compact, src, ...props }) {\n const margin = 1 * GU\n return (\n <span\n css={`\n flex-shrink: 0;\n display: block;\n width: 18px;\n height: 18px;\n margin: 0 ${compact ? margin : 0}px 0 ${compact ? 0 : margin}px;\n background-size: contain;\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-image: url(${src});\n `}\n {...props}\n />\n )\n}\nIcon.propTypes = {\n compact: PropTypes.bool,\n src: PropTypes.string.isRequired,\n}\n\nconst Name = styled.span`\n flex-shrink: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 20%;\n margin-right: ${0.5 * GU}px;\n`\n\nconst Symbol = styled.span`\n flex-shrink: 0;\n`\n\nexport default TokenBadge\n"],"names":["TokenBadge","React","memo","address","badgeOnly","className","compact","name","networkType","style","symbol","badgeRef","useRef","useState","opened","setOpened","handleClose","useCallback","handleOpen","isValidAddress","isAddress","iconSrc","tokenIconUrl","title","warn","BadgeBase","ImageExists","exists","GU","undefined","popoverDisabled","TokenBadgePopover","current","propTypes","PropTypes","string","bool","object","isRequired","defaultProps","Icon","src","props","margin","Name","styled","span","Symbol"],"mappings":"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"}
\No newline at end of file