UNPKG

@stakefish/ui

Version:

<div align="center"> <a href="https://www.npmjs.com/package/@stakefish/ui"><img src="https://gateway.pinata.cloud/ipfs/QmbZL1ceA8Yiz2pKALTg919jYx141DPUGegC9L4XpyayW5" width="300" /></a> </div>

405 lines (342 loc) 15.9 kB
import { _ as __assign } from '../tslib.es6-35932c2c.js'; import { jsxs, jsx } from 'react/jsx-runtime'; import React__default from 'react'; import { styled } from '@mui/material/styles'; import MuiBox from '@mui/material/Box'; import boxShadow from '../theme/boxShadow.js'; import Typography from './Typography.js'; import IconButton from './IconButton.js'; import '../_commonjsHelpers-1789f0cf.js'; import '@mui/material/Typography'; import '../theme/typography.js'; import '@mui/material/IconButton'; import './Icon.js'; import '../icons/ArrowLeft.js'; import '../icons/ArrowRight.js'; import '../icons/CloseCircle.js'; import '../icons/InfoCircle.js'; import '../icons/ErrorCircle.js'; import '../icons/Attention.js'; import '../icons/HelpCircle.js'; import '../icons/Document.js'; import '../icons/DocumentText.js'; import '../icons/Lock.js'; import '../icons/Delete.js'; import '../icons/Users.js'; import '../icons/Stakefish.js'; import '../icons/Sound.js'; import '../icons/Beacon.js'; import '../icons/TriangleRight.js'; import '../icons/TriangleLeft.js'; import '../icons/TriangleUp.js'; import '../icons/TriangleDown.js'; import '../icons/Sent.js'; import '../icons/Download.js'; import '../icons/Faster.js'; import '../icons/Slower.js'; import '../icons/Usb.js'; import '../icons/Key.js'; import '../icons/Edit.js'; import '../icons/Expand.js'; import '../icons/Collapse.js'; import '../icons/Success.js'; import '../icons/SuccessCircle.js'; import '../icons/Fail.js'; import '../icons/Desktop.js'; import '../icons/Mobile.js'; import '../icons/Loading.js'; import '../icons/Upload.js'; import '../icons/Check.js'; import '../icons/ChevronLeft.js'; import '../icons/ChevronRight.js'; import '../icons/Plus.js'; import '../icons/Minus.js'; import '../icons/Globe.js'; import '../icons/Link.js'; import '../icons/Copy.js'; import '../icons/Medium.js'; import '../icons/Twitter.js'; import '../icons/Telegram.js'; import '../icons/Eth.js'; import '../icons/Sort.js'; import '../icons/Close.js'; import '../icons/DollarSign.js'; import '../icons/Search.js'; import '../icons/Range.js'; import '../icons/Instagram.js'; import '../icons/LinkedIn.js'; import '../icons/Reddit.js'; import '../icons/YouTube.js'; import '../icons/Chrome.js'; import '../icons/CloudConnect.js'; import '../icons/Update.js'; import '../icons/Menu.js'; import '../icons/Settings.js'; var Component = {}; var toggleSelection = function () { var selection = document.getSelection(); if (!selection.rangeCount) { return function () {}; } var active = document.activeElement; var ranges = []; for (var i = 0; i < selection.rangeCount; i++) { ranges.push(selection.getRangeAt(i)); } switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML case 'INPUT': case 'TEXTAREA': active.blur(); break; default: active = null; break; } selection.removeAllRanges(); return function () { selection.type === 'Caret' && selection.removeAllRanges(); if (!selection.rangeCount) { ranges.forEach(function(range) { selection.addRange(range); }); } active && active.focus(); }; }; var deselectCurrent = toggleSelection; var clipboardToIE11Formatting = { "text/plain": "Text", "text/html": "Url", "default": "Text" }; var defaultMessage = "Copy to clipboard: #{key}, Enter"; function format(message) { var copyKey = (/mac os x/i.test(navigator.userAgent) ? "⌘" : "Ctrl") + "+C"; return message.replace(/#{\s*key\s*}/g, copyKey); } function copy(text, options) { var debug, message, reselectPrevious, range, selection, mark, success = false; if (!options) { options = {}; } debug = options.debug || false; try { reselectPrevious = deselectCurrent(); range = document.createRange(); selection = document.getSelection(); mark = document.createElement("span"); mark.textContent = text; // reset user styles for span element mark.style.all = "unset"; // prevents scrolling to the end of the page mark.style.position = "fixed"; mark.style.top = 0; mark.style.clip = "rect(0, 0, 0, 0)"; // used to preserve spaces and line breaks mark.style.whiteSpace = "pre"; // do not inherit user-select (it may be `none`) mark.style.webkitUserSelect = "text"; mark.style.MozUserSelect = "text"; mark.style.msUserSelect = "text"; mark.style.userSelect = "text"; mark.addEventListener("copy", function(e) { e.stopPropagation(); if (options.format) { e.preventDefault(); if (typeof e.clipboardData === "undefined") { // IE 11 debug && console.warn("unable to use e.clipboardData"); debug && console.warn("trying IE specific stuff"); window.clipboardData.clearData(); var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting["default"]; window.clipboardData.setData(format, text); } else { // all other browsers e.clipboardData.clearData(); e.clipboardData.setData(options.format, text); } } if (options.onCopy) { e.preventDefault(); options.onCopy(e.clipboardData); } }); document.body.appendChild(mark); range.selectNodeContents(mark); selection.addRange(range); var successful = document.execCommand("copy"); if (!successful) { throw new Error("copy command was unsuccessful"); } success = true; } catch (err) { debug && console.error("unable to copy using execCommand: ", err); debug && console.warn("trying IE specific stuff"); try { window.clipboardData.setData(options.format || "text", text); options.onCopy && options.onCopy(window.clipboardData); success = true; } catch (err) { debug && console.error("unable to copy using clipboardData: ", err); debug && console.error("falling back to prompt"); message = format("message" in options ? options.message : defaultMessage); window.prompt(message, text); } } finally { if (selection) { if (typeof selection.removeRange == "function") { selection.removeRange(range); } else { selection.removeAllRanges(); } } if (mark) { document.body.removeChild(mark); } reselectPrevious(); } return success; } var copyToClipboard = copy; Object.defineProperty(Component, "__esModule", { value: true }); Component.CopyToClipboard = void 0; var _react = _interopRequireDefault(React__default); var _copyToClipboard = _interopRequireDefault(copyToClipboard); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var CopyToClipboard$1 = /*#__PURE__*/ function (_React$PureComponent) { _inherits(CopyToClipboard, _React$PureComponent); function CopyToClipboard() { var _getPrototypeOf2; var _this; _classCallCheck(this, CopyToClipboard); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CopyToClipboard)).call.apply(_getPrototypeOf2, [this].concat(args))); _defineProperty(_assertThisInitialized(_this), "onClick", function (event) { var _this$props = _this.props, text = _this$props.text, onCopy = _this$props.onCopy, children = _this$props.children, options = _this$props.options; var elem = _react["default"].Children.only(children); var result = (0, _copyToClipboard["default"])(text, options); if (onCopy) { onCopy(text, result); } // Bypass onClick if it was present if (elem && elem.props && typeof elem.props.onClick === 'function') { elem.props.onClick(event); } }); return _this; } _createClass(CopyToClipboard, [{ key: "render", value: function render() { var _this$props2 = this.props; _this$props2.text; _this$props2.onCopy; _this$props2.options; var children = _this$props2.children, props = _objectWithoutProperties(_this$props2, ["text", "onCopy", "options", "children"]); var elem = _react["default"].Children.only(children); return _react["default"].cloneElement(elem, _objectSpread({}, props, { onClick: this.onClick })); } }]); return CopyToClipboard; }(_react["default"].PureComponent); Component.CopyToClipboard = CopyToClipboard$1; _defineProperty(CopyToClipboard$1, "defaultProps", { onCopy: undefined, options: undefined }); var _require = Component, CopyToClipboard = _require.CopyToClipboard; CopyToClipboard.CopyToClipboard = CopyToClipboard; var lib = CopyToClipboard; var Image = styled("img")(function (_a) { var theme = _a.theme; return ({ width: "100%", borderRadius: theme.borders.radius.rounded, boxShadow: boxShadow.md }); }); var TextBox = styled(MuiBox)(function (_a) { var theme = _a.theme, $isSubtitle = _a.$isSubtitle; return ({ display: "flex", alignItems: "center", paddingTop: $isSubtitle ? theme.spacing(0.75) : 0, "& button": { display: "inline", padding: "0 0 0 ".concat(theme.spacing(0.75), "px"), margin: "-14px 0", opacity: 0, pointerEvents: "none", transition: theme.transitions.create(["opacity"]) }, "&:hover button": { opacity: 1, pointerEvents: "initial" }, "& span": { wordBreak: $isSubtitle ? "break-word" : "initial" } }); }); var BarBox = styled(MuiBox)(function (_a) { var theme = _a.theme; return ({ display: "flex", alignItems: "center", width: "100%", "& p": { lineHeight: 1 }, "& span": { lineHeight: 1, fontSize: theme.typography.fontSizeS } }); }); var CopyIconButton = function (_a) { var text = _a.text; return (jsx(lib.CopyToClipboard, __assign({ text: text }, { children: jsx(IconButton, { iconProps: { iconKey: "copy", color: "secondary", size: "sm" } }, void 0) }), void 0)); }; var thumbnailLinkWrapper = function (children, link) { if (!link) return children; return (jsx("a", __assign({ href: link, target: "_blank", rel: "noopener noreferrer" }, { children: children }), void 0)); }; var ThumbnailInfoBar = function (_a) { var thumbnailUrl = _a.thumbnailUrl, thumbnailAlt = _a.thumbnailAlt, thumbnailAnchorLink = _a.thumbnailAnchorLink, title = _a.title, subtitle = _a.subtitle, _b = _a.isTitleCopyable, isTitleCopyable = _b === void 0 ? false : _b, _c = _a.isSubtitleCopyable, isSubtitleCopyable = _c === void 0 ? false : _c; return (jsxs(BarBox, __assign({ id: "thumbnail" }, { children: [thumbnailLinkWrapper(jsx(MuiBox, __assign({ width: 48, display: "flex", alignItems: "center", mr: 2 }, { children: jsx(Image, { src: thumbnailUrl, alt: thumbnailAlt }, void 0) }), void 0), thumbnailAnchorLink), jsxs(MuiBox, { children: [title && (jsxs(TextBox, __assign({ "$isSubtitle": false }, { children: [jsx(Typography, __assign({ variant: "calloutBold", component: "p" }, { children: title }), void 0), isTitleCopyable && jsx(CopyIconButton, { text: title }, void 0)] }), void 0)), subtitle && (jsxs(TextBox, __assign({ "$isSubtitle": true }, { children: [jsx(Typography, __assign({ variant: "supporting", component: "span", color: "secondary" }, { children: subtitle }), void 0), isSubtitleCopyable && jsx(CopyIconButton, { text: subtitle }, void 0)] }), void 0))] }, void 0)] }), void 0)); }; export { ThumbnailInfoBar as default };