>, MutableRefObject];\n\n// Добавляет ref, по которому текущее значение стейта можно получить\n// сразу вместо того чтобы ждать следующего рендера\nconst useCurrentState = (initialState: S | (() => S)): CurrentStateType => {\n const [state, setState] = useState(() => {\n return typeof initialState === 'function' ? (initialState as () => S)() : initialState;\n });\n const ref = useRef(initialState as S);\n\n useEffect(() => {\n ref.current = state;\n }, [state]);\n\n const setValue = (val: SetStateAction) => {\n const result = typeof val === 'function' ? (val as (prevState: S) => S)(ref.current) : val;\n ref.current = result;\n setState(result);\n };\n\n return [state, setValue, ref];\n};\n\nexport default useCurrentState;\n","import React, { ReactNode } from 'react';\nimport cn from 'classnames';\n\ntype TextVariant =\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | 'subtitle1'\n | 'subtitle2'\n | 'body-text1'\n | 'body-text2'\n | 'small-text1'\n | 'small-text2'\n | 'small-text3';\n\nexport type TextColor =\n | 'brandOrange'\n | 'purple'\n | 'black'\n | 'spaceGray'\n | 'gray5'\n | 'gray4'\n | 'gray3'\n | 'gray2'\n | 'gray1'\n | 'white'\n | 'orange'\n | 'red'\n | 'green'\n | 'blue'\n | 'blueHover'\n | 'brandOrangeHover'\n | 'brandOrangeActive'\n | 'purpleHover'\n | 'purpleActive';\n\nexport type TextComponent = 'span' | 'p' | 'div' | 'h1' | 'label' | 'h2' | 'h3';\n\ninterface IText {\n children?: ReactNode;\n variant?: TextVariant;\n xl?: TextVariant;\n lg?: TextVariant;\n md?: TextVariant;\n sm?: TextVariant;\n component?: TextComponent;\n color?: TextColor;\n className?: string;\n dangerouslySetInnerHTML?: any;\n htmlFor?: string;\n}\n\nconst Text = ({\n children,\n variant,\n component,\n color,\n className,\n dangerouslySetInnerHTML,\n ...props\n}: IText) => {\n const currentVariant = variant;\n\n const Component = component || 'p';\n\n if (dangerouslySetInnerHTML) {\n return (\n <>\n \n\n \n >\n );\n }\n\n return (\n \n {children}\n \n \n );\n};\n\nexport default Text;\n","import React from 'react';\n\n// Прокидывает default параметры в компонент\nconst withDefaults = (component: React.ComponentType
, defaultProps: DP) => {\n type Props = Partial & Omit;\n // eslint-disable-next-line\n component.defaultProps = defaultProps;\n return component as React.ComponentType;\n};\n\nexport default withDefaults;\n","import React, { useEffect, useState } from 'react';\nimport withDefaults from 'utils/withDefaults';\n\ninterface Props {\n visible?: boolean;\n enterTime?: number;\n leaveTime?: number;\n clearTime?: number;\n className?: string;\n name?: string;\n}\n\nconst defaultProps = {\n visible: false,\n enterTime: 60,\n leaveTime: 60,\n clearTime: 60,\n className: '',\n name: 'transition',\n};\n\nexport type CSSTransitionProps = Props & typeof defaultProps;\n\nconst CSSTransition: React.FC> = ({\n children,\n className,\n visible,\n enterTime,\n leaveTime,\n clearTime,\n name,\n ...props\n}) => {\n const [classes, setClasses] = useState('');\n const [renderable, setRenderable] = useState(visible);\n\n useEffect(() => {\n const statusClassName = visible ? 'enter' : 'leave';\n const time = visible ? enterTime : leaveTime;\n if (visible && !renderable) {\n setRenderable(true);\n }\n\n setClasses(`${name}-${statusClassName}`);\n\n // set class to active\n const timer = setTimeout(() => {\n setClasses(`${name}-${statusClassName} ${name}-${statusClassName}-active`);\n clearTimeout(timer);\n }, time);\n\n // remove classess when animation over\n const clearClassesTimer = setTimeout(() => {\n if (!visible) {\n setClasses('');\n setRenderable(false);\n }\n clearTimeout(clearClassesTimer);\n }, time + clearTime);\n\n return () => {\n clearTimeout(timer);\n clearTimeout(clearClassesTimer);\n };\n }, [visible, renderable]);\n if (!React.isValidElement(children) || !renderable) return null;\n\n return React.cloneElement(children, {\n ...props,\n className: `${children.props.className} ${className} ${classes}`,\n });\n};\n\nexport default withDefaults(CSSTransition, defaultProps);\n","import React, { MouseEvent, useCallback, ReactElement } from 'react';\nimport withDefaults from 'utils/withDefaults';\nimport useCurrentState from 'hooks/useCurrentState';\nimport cn from 'classnames';\nimport CssTransition from '../CssTransition/CssTransition';\nimport styles from './Backdrop.module.scss';\n\ninterface Props {\n onClick?: (event: MouseEvent) => void;\n visible?: boolean;\n children?: ReactElement;\n className?: string;\n}\n\nconst defaultProps = {\n onClick: () => {},\n visible: false,\n};\n\nexport type BackdropProps = Props & typeof defaultProps;\n\nconst Backdrop: React.FC> = React.memo(\n ({ children, onClick, visible, className }: BackdropProps) => {\n const [, setIsContentMouseDown, IsContentMouseDownRef] = useCurrentState(false);\n const clickHandler = (event: MouseEvent) => {\n if (IsContentMouseDownRef.current) return;\n if (onClick) {\n onClick(event);\n }\n };\n const childrenClickHandler = useCallback((event: MouseEvent) => {\n event.stopPropagation();\n }, []);\n const mouseUpHandler = () => {\n if (!IsContentMouseDownRef.current) return;\n const timer = setTimeout(() => {\n setIsContentMouseDown(false);\n clearTimeout(timer);\n }, 0);\n };\n\n return (\n \n \n
\n
setIsContentMouseDown(true)}\n >\n {children}\n
\n
\n \n );\n },\n);\n\nexport default withDefaults(Backdrop, defaultProps);\n","import React from 'react';\n\nexport interface ModalConfig {\n close?: () => void;\n}\n\nconst defaultContext = {};\n\nexport const ModalContext = React.createContext(defaultContext);\n\nexport const useModalContext = (): ModalConfig => React.useContext(ModalContext);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _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; }\n\nfunction _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; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.7951 9.30799C10.3844 8.89734 9.71865 8.89734 9.30799 9.30799C8.89734 9.71865 8.89734 10.3844 9.30799 10.7951L14.5129 16L9.30799 21.2049C8.89734 21.6156 8.89734 22.2814 9.30799 22.692C9.71865 23.1027 10.3844 23.1027 10.7951 22.692L16 17.4871L21.2049 22.692C21.6156 23.1027 22.2814 23.1027 22.692 22.692C23.1027 22.2814 23.1027 21.6156 22.692 21.2049L17.4871 16L22.692 10.7951C23.1027 10.3844 23.1027 9.71865 22.692 9.30799C22.2814 8.89734 21.6156 8.89734 21.2049 9.30799L16 14.5129L10.7951 9.30799Z\",\n fill: \"#76767A\"\n});\n\nvar SvgClose = function SvgClose(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgClose, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/close.feae5a5c.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _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; }\n\nfunction _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; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.6668 0.666748H2.66683C1.9335 0.666748 1.3335 1.26675 1.3335 2.00008V11.3334H2.66683V2.00008H10.6668V0.666748ZM10.0002 3.33341L14.0002 7.33341V14.0001C14.0002 14.7334 13.4002 15.3334 12.6668 15.3334H5.32683C4.5935 15.3334 4.00016 14.7334 4.00016 14.0001L4.00683 4.66675C4.00683 3.93341 4.60016 3.33341 5.3335 3.33341H10.0002ZM9.3335 8.00008H13.0002L9.3335 4.33341V8.00008Z\",\n fill: \"#0078FF\"\n});\n\nvar SvgCopyicon = function SvgCopyicon(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCopyicon, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/copy.icon.835ebda7.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _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; }\n\nfunction _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; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.3332 7.99992C13.3332 8.36811 13.0347 8.66659 12.6665 8.66659H3.33317C2.96498 8.66659 2.6665 8.36811 2.6665 7.99992C2.6665 7.63173 2.96498 7.33325 3.33317 7.33325H12.6665C13.0347 7.33325 13.3332 7.63173 13.3332 7.99992Z\",\n fill: \"#0078FF\"\n});\n\nvar SvgRemove = function SvgRemove(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgRemove, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/remove.94c0849a.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\n\nimport { ReactComponent as copyIcon } from '../../../assets/images/icons/copy.icon.svg';\nimport { ReactComponent as removeIcon } from '../../../assets/images/icons/remove.svg';\n\nexport interface IconProps {\n className?: string;\n}\n\nexport const makeIcon = (Icon: any, className?: string) => {\n return ;\n};\n\nexport const CopyIcon = ({ className }: IconProps) => {\n return makeIcon(copyIcon, className);\n};\n\nexport const RemoveIcon = ({ className }: IconProps) => {\n return makeIcon(removeIcon, className);\n};\n","import { ReactComponent as closeImage } from 'assets/images/icons/close.svg';\nimport { makeIcon, IconProps } from './icons';\n\nexport const CloseIcon = ({ className }: IconProps) => {\n return makeIcon(closeImage, className);\n};\n","import React, { useEffect, useMemo, useCallback } from 'react';\nimport { createPortal } from 'react-dom';\nimport usePortal from 'hooks/usePortal';\nimport useBodyScroll from 'hooks/useBodyScroll';\nimport useCurrentState from 'hooks/useCurrentState';\nimport Text from 'components/common/Text/Text';\nimport Backdrop from '../Backdrop/Backdrop';\nimport { ModalConfig, ModalContext } from './modal-context';\nimport CssTransition from '../CssTransition/CssTransition';\nimport { CloseIcon } from '../icons/CloseIcon';\n\ninterface Props {\n title?: React.ReactNode;\n description?: React.ReactNode;\n primaryButtonContent: React.ReactNode;\n secondaryButtonContent: React.ReactNode;\n disableBackdropClick?: boolean;\n onClose?: () => void;\n onOpen?: () => void;\n onPrimaryHandler?: () => void;\n onSecondaryHandler?: () => void;\n open?: boolean;\n width?: string;\n wrapClassName?: string;\n}\n\nconst defaultProps = {\n width: '26rem',\n wrapClassName: '',\n disableBackdropClick: false,\n};\n\ntype NativeAttrs = Omit, keyof Props>;\nexport type ModalProps = Props & typeof defaultProps & NativeAttrs;\n\nconst InfoModal: React.FC> = ({\n title,\n description,\n primaryButtonContent,\n secondaryButtonContent,\n disableBackdropClick,\n onClose,\n onOpen,\n onPrimaryHandler,\n onSecondaryHandler,\n open,\n}) => {\n const portal = usePortal('modal');\n const [, setBodyHidden] = useBodyScroll(null, { scrollLayer: true });\n const [visible, setVisible, visibleRef] = useCurrentState(false);\n\n const closeModal = useCallback(() => {\n if (onClose) {\n onClose();\n }\n setVisible(false);\n setBodyHidden(false);\n }, [onClose, setVisible, setBodyHidden]);\n\n useEffect(() => {\n if (open === undefined) return;\n if (open && onOpen) {\n onOpen();\n }\n if (!open && visibleRef.current && onClose) {\n onClose();\n }\n\n setVisible(open);\n setBodyHidden(open);\n }, [open]);\n\n const closeFromBackdrop = () => {\n if (disableBackdropClick) return;\n closeModal();\n };\n\n const primaryButtonClickHandler = () => {\n if (onPrimaryHandler) {\n onPrimaryHandler();\n }\n if (onClose) {\n onClose();\n }\n };\n\n const secondaryButtonClickHandler = () => {\n if (onSecondaryHandler) {\n onSecondaryHandler();\n }\n if (onClose) {\n onClose();\n }\n };\n\n const modalConfig: ModalConfig = useMemo(\n () => ({\n close: closeModal,\n }),\n [closeModal],\n );\n\n if (!portal) return null;\n\n return createPortal(\n \n \n \n \n
\n
{title}
\n \n {description}\n \n \n \n \n
\n\n \n
\n \n \n ,\n portal,\n );\n};\n\ntype ModalComponent = React.FC
;\ntype ComponentProps = Partial &\n Omit &\n NativeAttrs;\n\nInfoModal.defaultProps = defaultProps;\n\nexport default InfoModal as ModalComponent;\n","import React, { useState, useCallback } from 'react';\nimport { Form, Field } from 'react-final-form';\nimport InfoModal from 'components/common/InfoModal/InfoModal';\nimport cn from 'classnames';\nimport nodeApi from '../../../../../api/api';\nimport customToast from '../../../../../utils/toast';\nimport CopyToClipboard from '../../../../common/CopyToClipboard';\nimport constants from '../../../../../utils/constants';\n\ntype Errors = {\n recipientAddress?: string;\n amount?: string;\n fee?: string;\n asset?: string;\n assetAmount?: string;\n};\n\nconst PaymentSendForm = ({\n apiKey,\n walletBalanceData,\n getWalletBalance,\n explorerSubdomain,\n}: {\n apiKey: string;\n walletBalanceData: any;\n getWalletBalance: any;\n explorerSubdomain: string;\n}) => {\n const currentBalance = walletBalanceData?.balance;\n\n const [transactionId, setTransactionId] = useState(null);\n const [isSentModalOpen, setIsSentModalOpen] = useState(false);\n const [assetCheckbox, setAssetCheckbox] = useState(false);\n\n const paymentSend = useCallback(\n ({ recipientAddress, amount, fee, asset, assetAmount }) => {\n const request = {\n address: recipientAddress.trim(),\n value: Number((parseFloat(amount) * constants.nanoErgInErg).toFixed(1)),\n assets:\n assetCheckbox && asset !== 'none' && assetAmount > 0\n ? [{ tokenId: asset, amount: Number(assetAmount) }]\n : [],\n };\n return nodeApi.post(\n '/wallet/transaction/send',\n {\n requests: [request],\n fee: Number((parseFloat(fee) * constants.nanoErgInErg).toFixed(1)),\n },\n {\n headers: {\n api_key: apiKey,\n },\n },\n );\n },\n [assetCheckbox, apiKey],\n );\n\n const resetForm = (form: any) => {\n form.restart();\n setIsSentModalOpen(false);\n };\n\n const sendForm = useCallback(\n (values) => {\n if (values.recipientAddress.trim() === '' || !values.recipientAddress) {\n return;\n }\n\n paymentSend(values)\n .then(({ data }) => {\n setTransactionId(data);\n setIsSentModalOpen(true);\n getWalletBalance();\n })\n .catch((err) => {\n const errMessage = err.data ? err.data.detail : err.message;\n customToast('error', errMessage);\n });\n },\n [paymentSend, getWalletBalance],\n );\n\n const validateForm = useCallback(\n (values) => {\n const errors: Errors = {};\n\n const totalFeeAndAmount =\n (Number(values.amount) + Number(values.fee)) * constants.nanoErgInErg;\n\n if (!values.recipientAddress || values.recipientAddress?.trim() === '') {\n errors.recipientAddress = 'The field cannot be empty';\n }\n\n if (!values.fee || values.fee < 0.001) {\n errors.fee = 'Minimum 0.001 ERG';\n }\n\n if (values.asset === 'none') {\n errors.asset = 'You need to choose asset';\n }\n\n if (\n walletBalanceData &&\n values.assetAmount &&\n values.asset !== 'none' &&\n values.assetAmount > walletBalanceData.assets[values.asset]\n ) {\n errors.assetAmount = `Maximum ${walletBalanceData.assets[values.asset]}`;\n }\n\n if (assetCheckbox && !values.assetAmount) {\n errors.assetAmount = \"The field can't be empty\";\n }\n\n if (currentBalance < totalFeeAndAmount) {\n errors.amount = `Maximum ${Math.abs(\n currentBalance / constants.nanoErgInErg - Number(values.fee),\n )} ERG`;\n }\n if (values.amount < 0) {\n errors.amount = \"Amount can't be negative\";\n }\n\n if (currentBalance === 0) {\n errors.amount = 'Your balance is empty';\n }\n\n if (values.fee < 0) {\n errors.fee = \"Fee can't be negative\";\n }\n\n return errors;\n },\n [assetCheckbox, walletBalanceData, currentBalance],\n );\n\n return (\n \n
\n
Payment send
\n
\n\n
{\n setIsSentModalOpen(false);\n }}\n title=\"Payment sent\"\n description={\n <>\n \n Your payment has been sent successfully. The transaction ID is -{' '}\n {transactionId}\n
\n \n \n Click Here To Go To The Explorer\n \n
\n >\n }\n primaryButtonContent={OK}\n secondaryButtonContent=\"Send again\"\n onPrimaryHandler={() => resetForm(form)}\n />\n >\n );\n }}\n />\n \n
\n );\n};\n\nexport default PaymentSendForm;\n","import React, { useCallback, useState } from 'react';\nimport { Field, Form } from 'react-final-form';\n\nimport cn from 'classnames';\nimport InfoModal from 'components/common/InfoModal/InfoModal';\nimport CopyToClipboard from 'components/common/CopyToClipboard';\nimport customToast from 'utils/toast';\nimport nodeApi from 'api/api';\nimport constants from '../../../../../utils/constants';\n\ntype AssetIssueFormData = {\n name?: string;\n amount?: string;\n decimals?: string;\n description?: string;\n fee?: string;\n};\n\nconst AssetIssueForm = ({\n apiKey,\n getWalletBalance,\n explorerSubdomain,\n}: {\n apiKey: string;\n getWalletBalance: any;\n explorerSubdomain: string;\n}) => {\n const [transactionId, setTransactionId] = useState(null);\n const [isSentModalOpen, setIsSentModalOpen] = useState(false);\n const [assetAmount, setAssetAmount] = useState(null);\n const [assetName, setAssetName] = useState(null);\n\n const issueAsset = useCallback(\n ({ name, amount, decimals, description, fee }) => {\n setAssetAmount(amount);\n setAssetName(name);\n const request = {\n name,\n amount,\n decimals,\n description,\n };\n\n return nodeApi.post(\n '/wallet/transaction/send',\n {\n requests: [request],\n fee: Number((parseFloat(fee) * constants.nanoErgInErg).toFixed(1)),\n },\n {\n headers: {\n api_key: apiKey,\n },\n },\n );\n },\n [apiKey, setAssetAmount, setAssetName],\n );\n\n const submitForm = useCallback(\n (formData) => {\n return issueAsset(formData)\n .then(({ data }) => {\n const generatedTransactionId = data;\n setTransactionId(generatedTransactionId);\n setIsSentModalOpen(true);\n getWalletBalance();\n })\n .catch((err) => {\n const errMessage = err.data ? err.data.detail : err.message;\n customToast('error', errMessage);\n });\n },\n [issueAsset, getWalletBalance],\n );\n\n const resetForm = (form: any) => {\n form.restart();\n setIsSentModalOpen(false);\n };\n\n const validateForm = (values: AssetIssueFormData) => {\n const errors: AssetIssueFormData = {};\n\n if (!values.name) {\n errors.name = 'The field cannot be empty';\n }\n\n if (!values.amount) {\n errors.amount = 'The field cannot be empty';\n }\n\n if (!values.decimals) {\n errors.decimals = 'The field cannot be empty';\n }\n\n if (!values.description) {\n errors.description = 'The field cannot be empty';\n }\n\n if (!values.fee || Number(values.fee) < 0.001) {\n errors.fee = 'Minimum 0.001 ERG';\n }\n\n if (!Number.isInteger(Number(values.amount)) && values.amount) {\n errors.amount = 'Should be an integer';\n }\n\n if (!Number.isInteger(Number(values.decimals)) && values.decimals) {\n errors.decimals = 'Should be an integer';\n }\n\n if (Number(values.fee) < 0) {\n errors.fee = \"Fee can't be negative\";\n }\n\n return errors;\n };\n\n return (\n \n
Issue Tokens
\n
\n\n
{\n setIsSentModalOpen(false);\n }}\n title=\"Congratulations!\"\n description={\n <>\n \n {`You have successfully issued ${assetAmount} ${assetName} tokens! The transaction ID is\\n`}\n {transactionId}\n
\n \n \n Click Here To View Transaction\n \n
\n >\n }\n primaryButtonContent={OK}\n secondaryButtonContent=\"Send again\"\n onPrimaryHandler={() => resetForm(form)}\n />\n >\n );\n }}\n />\n \n );\n};\n\nexport default AssetIssueForm;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _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; }\n\nfunction _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; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.622,21.746l-6.749,6.75c-0.562,0.562-1.326,0.879-2.122,0.879s-1.56-0.316-2.121-0.879l-6.75-6.75 c-1.171-1.171-1.171-3.071,0-4.242c1.171-1.172,3.071-1.172,4.242,0l1.832,1.832C27.486,13.697,22.758,9.25,17,9.25 c-6.064,0-11,4.935-11,11c0,6.064,4.936,11,11,11c1.657,0,3,1.343,3,3s-1.343,3-3,3c-9.373,0-17-7.626-17-17s7.627-17,17-17 c8.936,0,16.266,6.933,16.936,15.698l1.442-1.444c1.172-1.172,3.072-1.172,4.242,0C40.792,18.674,40.792,20.574,39.622,21.746z\"\n}));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref9 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref10 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref11 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref12 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref13 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref14 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref15 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref16 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref17 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar SvgRedoArrowSymbol = function SvgRedoArrowSymbol(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n x: \"0px\",\n y: \"0px\",\n width: \"32px\",\n height: \"32px\",\n viewBox: \"0 0 40.499 40.5\",\n style: {\n enableBackground: \"new 0 0 40.499 40.5\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgRedoArrowSymbol, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/redo-arrow-symbol.e801de31.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactComponent as redoImage } from 'assets/images/icons/redo-arrow-symbol.svg';\nimport { makeIcon, IconProps } from './icons';\n\nexport const RedoIcon = ({ className }: IconProps) => {\n return makeIcon(redoImage, className);\n};\n","import React, { useState, useEffect, useCallback, useMemo } from 'react';\nimport cn from 'classnames';\nimport './index.scss';\nimport { connect } from 'react-redux';\nimport { RedoIcon } from 'components/common/icons/RedoIcon';\nimport constants from 'utils/constants';\nimport { RemoveIcon } from '../../../../common/icons/icons';\nimport {\n walletBalanceDataSelector,\n ergPriceSelector,\n walletAddressesSelector,\n} from '../../../../../store/selectors/wallet';\nimport { explorerSelector } from '../../../../../store/selectors/node';\nimport walletActions from '../../../../../store/actions/walletActions';\n\nconst WalletInformationTableItem = ({ name, value }: any) => {\n const [isOpen, setIsOpen] = useState(false);\n let resultTitle;\n let resultContent;\n\n if (Array.isArray(value)) {\n resultTitle = value.length;\n\n resultContent = (\n \n {value.map((item) => (\n
\n
\n {item.value || ''} {item.name || ''}\n
\n
\n
\n ))}\n
\n );\n } else {\n resultTitle = value;\n resultContent = value;\n }\n\n return (\n \n
\n {isOpen &&
{resultContent}
}\n
\n );\n};\n\nconst WalletInformationTable = (props: any) => {\n const {\n walletBalance,\n dispatchGetWalletBalance,\n dispatchGetErgPrice,\n dispatchGetWalletAddresses,\n walletAddresses,\n explorerSubdomain,\n } = props;\n\n const getValues = useCallback(() => {\n dispatchGetWalletBalance();\n dispatchGetErgPrice();\n dispatchGetWalletAddresses();\n }, [dispatchGetWalletBalance, dispatchGetErgPrice, dispatchGetWalletAddresses]);\n\n const getAddreses = useCallback((addresses: String[], subdomain: String) => {\n if (addresses.length === 0) {\n return 0;\n }\n\n return addresses.map((item) => ({\n value: (\n \n {item}\n \n ),\n }));\n }, []);\n\n const getAssets = useCallback((assets) => {\n if (Object.values(assets).length === 0) {\n return 0;\n }\n\n return Object.keys(assets).map((key) => ({\n name: {key},\n value: {assets[key]},\n }));\n }, []);\n\n useEffect(() => {\n getValues();\n }, [getValues]);\n\n const data = useMemo(\n () => [\n {\n name: 'Balance',\n value: walletBalance\n ? `${walletBalance.balance / constants.nanoErgInErg} ERG`\n : 'loading...',\n },\n // {\n // name: 'Balance in USD',\n // value: walletBalance\n // ? `$ ${(walletBalance.balance / constants.nanoErgInErg) * ergPrice}`\n // : 'Loading...',\n // },\n {\n name: 'Assets',\n value: walletBalance ? getAssets(walletBalance.assets) : `Loading...`,\n },\n {\n name: 'Addresses',\n value: walletAddresses ? getAddreses(walletAddresses, explorerSubdomain) : `Loading...`,\n },\n ],\n [walletBalance, getAssets, walletAddresses, getAddreses, explorerSubdomain],\n );\n\n const updateValues = useCallback(() => {\n getValues();\n }, [getValues]);\n\n return (\n \n
\n
\n Wallet Information{' '}\n \n
\n \n
\n {data.map(({ value, name }) => (\n \n ))}\n
\n
\n );\n};\n\nconst mapStateToProps = (state: any) => ({\n walletBalance: walletBalanceDataSelector(state),\n ergPrice: ergPriceSelector(state),\n walletAddresses: walletAddressesSelector(state),\n explorerSubdomain: explorerSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch: any) => ({\n dispatchGetWalletBalance: () => dispatch(walletActions.getWalletBalance()),\n dispatchGetErgPrice: () => dispatch(walletActions.getErgPrice()),\n dispatchGetWalletAddresses: () => dispatch(walletActions.getWalletAddresses()),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(WalletInformationTable);\n","import React, { Component, memo } from 'react';\nimport { connect } from 'react-redux';\nimport walletActions from 'store/actions/walletActions';\nimport PaymentSendForm from './components/PaymentSendForm/index';\nimport AssetIssueForm from './components/AssetIssueForm/index';\nimport { apiKeySelector } from '../../../store/selectors/app';\nimport { explorerSelector } from '../../../store/selectors/node';\nimport {\n isWalletInitializedSelector,\n isWalletUnlockedSelector,\n walletBalanceDataSelector,\n} from '../../../store/selectors/wallet';\nimport WalletInformationTable from './components/WalletInformationTable/index';\nimport './index.scss';\n\nconst mapStateToProps = (state) => ({\n apiKey: apiKeySelector(state),\n isWalletInitialized: isWalletInitializedSelector(state),\n isWalletUnlocked: isWalletUnlockedSelector(state),\n walletBalanceData: walletBalanceDataSelector(state),\n explorerSubdomain: explorerSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n dispatchGetWalletBalance: () => dispatch(walletActions.getWalletBalance()),\n});\n\nclass Wallet extends Component {\n renderState = (state) =>\n ({\n unlocked: (apiKey, walletBalanceData, getWalletBalance, explorerSubdomain) =>\n this.renderWalletUnlockedState(\n apiKey,\n walletBalanceData,\n getWalletBalance,\n explorerSubdomain,\n ),\n locked: () => this.renderWalletLockedState(),\n initialized: (apiKey) => this.renderInitializedState(apiKey),\n }[state]);\n\n renderWalletLockedState = () => (\n \n
The wallet UI is locked. You need to unlock the wallet to access its UI.
\n
\n );\n\n renderInitializedState = () => (\n \n
You need to initialize your wallet to access wallet UI.
\n
\n );\n\n renderWalletUnlockedState = (\n apiKey,\n walletBalanceData,\n dispatchGetWalletBalance,\n explorerSubdomain,\n ) => (\n \n );\n\n render() {\n const {\n apiKey,\n isWalletUnlocked,\n isWalletInitialized,\n walletBalanceData,\n dispatchGetWalletBalance,\n explorerSubdomain,\n } = this.props;\n\n if (apiKey === '') {\n return (\n \n
To continue, please set your API key.
\n
\n );\n }\n\n if (!isWalletInitialized) {\n return this.renderState('initialized')(apiKey);\n }\n\n if (isWalletUnlocked) {\n return this.renderState('unlocked')(\n apiKey,\n walletBalanceData,\n dispatchGetWalletBalance,\n explorerSubdomain,\n );\n }\n\n return this.renderState('locked')();\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(memo(Wallet));\n","import React, { memo, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { BrowserRouter, Switch, Route } from 'react-router-dom';\nimport nodeActions from 'store/actions/nodeActions';\nimport { Layout } from '../components/layout';\nimport Dashboard from '../components/pages/Dashboard';\nimport Wallet from '../components/pages/Wallet';\n\nconst mapDispatchToProps = (dispatch) => ({\n dispatchGetNetwork: () => dispatch(nodeActions.getNetwork()),\n});\n\nconst Router = (props) => {\n const { dispatchGetNetwork } = props;\n\n useEffect(() => {\n dispatchGetNetwork();\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default connect(null, mapDispatchToProps)(memo(Router));\n","import { combineReducers } from 'redux';\nimport appSlice from '../slices/appSlice';\nimport nodeSlice from '../slices/nodeSlice';\nimport walletSlice from '../slices/walletSlice';\n\nexport default combineReducers({\n app: appSlice.reducer,\n node: nodeSlice.reducer,\n wallet: walletSlice.reducer,\n});\n","// import Axios from 'axios';\nimport walletActions from '../actions/walletActions';\nimport nodeApi from '../../api/api';\nimport { apiKeySelector } from '../selectors/app';\n// import oracleApi from '../../api/oracleApi';\n\nexport default (store) => (next) => (action) => {\n const { dispatch, getState } = store;\n const apiKey = apiKeySelector(getState());\n\n switch (action.type) {\n case walletActions.checkWalletStatus.type:\n nodeApi\n .get('/wallet/status', {\n headers: {\n api_key: apiKey,\n },\n })\n .then(({ data: walletData }) => {\n dispatch(walletActions.setIsWalletUnlocked(walletData.isUnlocked));\n dispatch(walletActions.setIsWalletInitialized(walletData.isInitialized));\n dispatch(walletActions.setWalletStatusData(walletData));\n })\n .catch(() => {});\n\n break;\n\n case walletActions.getWalletBalance.type:\n nodeApi\n .get('/wallet/balances', {\n headers: {\n api_key: apiKey,\n },\n })\n .then(({ data: walletData }) => {\n dispatch(walletActions.setWalletBalanceData(walletData));\n })\n .catch(() => {});\n\n break;\n\n // case walletActions.getErgPrice.type:\n // oracleApi\n // .get('/frontendData', {\n // transformResponse: [...Axios.defaults.transformResponse, (data) => JSON.parse(data)],\n // })\n // .then(({ data }) => {\n // dispatch(walletActions.setErgPrice(data.latest_price));\n // })\n // .catch(() => {});\n\n // break;\n\n case walletActions.getWalletAddresses.type:\n nodeApi\n .get('/wallet/addresses', {\n headers: {\n api_key: apiKey,\n },\n })\n .then(({ data: walletAddresses }) => {\n dispatch(walletActions.setWalletAddresses(walletAddresses));\n })\n .catch(() => {});\n\n break;\n\n default:\n break;\n }\n next(action);\n};\n","// import Axios from 'axios';\nimport nodeActions from '../actions/nodeActions';\nimport nodeApi from '../../api/api';\n\nexport default (store) => (next) => (action) => {\n const { dispatch } = store;\n\n switch (action.type) {\n case nodeActions.getNetwork.type:\n nodeApi\n .get('/info', {})\n .then(({ data: nodeData }) => {\n dispatch(nodeActions.setNetwork(nodeData.network));\n })\n .catch(() => {});\n\n break;\n\n default:\n break;\n }\n next(action);\n};\n","import React from 'react';\nimport { toast } from 'react-toastify';\nimport { Provider } from 'react-redux';\nimport Router from './router/router';\nimport createStore from './store';\n\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport './assets/styles/index.scss';\nimport 'react-toastify/dist/ReactToastify.min.css';\n\ntoast.configure();\nconst store = createStore();\n\nconst App = () => {\n return (\n \n \n \n );\n};\n\nexport default App;\n","import { configureStore, getDefaultMiddleware } from 'redux-starter-kit';\nimport rootReducer from './reducers/rootReducer';\nimport walletMiddleware from './middlewares/walletMiddleware';\nimport nodeMiddleware from './middlewares/nodeMiddleware';\n\nexport default () => {\n const store = configureStore({\n reducer: rootReducer,\n middleware: [...getDefaultMiddleware(), walletMiddleware, nodeMiddleware],\n });\n\n return store;\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\n\nReactDOM.render(, document.getElementById('root'));\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"backdrop\":\"Backdrop_backdrop__PmdBI\",\"content\":\"Backdrop_content__2Kmrw\",\"layer\":\"Backdrop_layer__3V2YH\"};","module.exports = __webpack_public_path__ + \"static/media/logotype_white.4dcfd639.svg\";"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["store/slices/nodeSlice.js","store/actions/nodeActions.js","utils/constants.js","store/selectors/node.js","components/common/MenuList/components/Explorer.js","components/common/MenuList/index.js","store/selectors/app.js","store/selectors/wallet.js","store/slices/walletSlice.js","store/actions/walletActions.js","store/slices/appSlice.js","store/actions/appActions.js","utils/environment.js","api/api.js","utils/toast/index.js","components/Header/ApiKeyModal/ApiKeyModalView.js","components/Header/ApiKeyModal/index.js","components/Header/ApiKeyModal/ApiKeyModalContainer.js","components/Header/utils.js","components/Header/WalletStatusModal/index.js","components/common/CopyToClipboard/index.js","components/elements/WalletInitializeForm/index.js","components/elements/RestoreWalletForm/index.js","components/Header/WalletInitModal/index.js","components/Header/HeaderView.js","components/Header/index.js","components/Header/HeaderContainer.js","components/layout/index.js","components/pages/Dashboard/InfoCard/index.js","components/pages/Dashboard/SynchCard/index.js","components/pages/Dashboard/WalletSyncCard/index.js","components/common/ErgoLoader/index.js","components/pages/Dashboard/DashboardView.js","hooks/usePrevious.js","components/pages/Dashboard/DashboardContainer.js","components/pages/Dashboard/index.js","hooks/usePortal.ts","hooks/useBodyScroll.ts","hooks/useCurrentState.ts","components/common/Text/Text.tsx","utils/withDefaults.ts","components/common/CssTransition/CssTransition.tsx","components/common/Backdrop/Backdrop.tsx","components/common/InfoModal/modal-context.ts","assets/images/icons/close.svg","assets/images/icons/copy.icon.svg","assets/images/icons/remove.svg","components/common/icons/icons.tsx","components/common/icons/CloseIcon.tsx","components/common/InfoModal/InfoModal.tsx","components/pages/Wallet/components/PaymentSendForm/index.tsx","components/pages/Wallet/components/AssetIssueForm/index.tsx","assets/images/icons/redo-arrow-symbol.svg","components/common/icons/RedoIcon.tsx","components/pages/Wallet/components/WalletInformationTable/index.tsx","components/pages/Wallet/index.js","router/router.js","store/reducers/rootReducer.js","store/middlewares/walletMiddleware.js","store/middlewares/nodeMiddleware.js","App.js","store/index.js","index.js","components/common/Backdrop/Backdrop.module.scss","assets/images/logotype_white.svg"],"names":["createSlice","name","initialState","network","reducers","setNetwork","state","payload","getNetwork","createAction","nodeSlice","actions","nodeSelector","node","explorerSelector","createSelector","icon","faWpexplorer","Explorer","explorerSubdomain","this","props","ref","exporerRef","key","className","clsx","href","rel","target","Component","connect","localRouteList","dashboard","faChartLine","title","wallet","faExchangeAlt","externalRouteList","swaggerInterface","constants","faBook","website","faGlobe","withRouter","pathname","location","Object","values","map","index","active","to","apiKeySelector","app","apiKey","walletSelector","isWalletUnlockedSelector","isWalletUnlocked","isWalletInitializedSelector","isWalletInitialized","walletStatusDataSelector","walletStatusData","walletBalanceDataSelector","walletBalanceData","walletAddressesSelector","walletAddresses","ergPriceSelector","ergPrice","setIsWalletUnlocked","setIsWalletInitialized","setWalletStatusData","setWalletBalanceData","setErgPrice","setWalletAddresses","checkWalletStatus","getWalletBalance","getErgPrice","getWalletAddresses","walletSlice","setApiKey","action","appSlice","nodeApiLink","oracleApiLink","NetworkError","status","message","data","statusText","prototype","create","Error","nodeApi","axios","baseURL","environment","timeout","crossDomain","headers","interceptors","response","use","Promise","resolve","error","reject","toastStates","success","text","options","toast","position","autoClose","hideProgressBar","closeOnClick","pauseOnHover","draggable","bodyClassName","progressClassName","info","ApiKeyModalView","showModal","handleHide","submitForm","handleShow","uuid","uuidv4","type","onClick","renderButton","Modal","show","onHide","centered","initialValues","onSubmit","Header","closeButton","Title","Body","placeholder","Footer","ApiKeyModalContainer","dispatch","dispatchSetApiKey","appActions","memo","useState","setShowModal","get","api_key","then","trim","customToast","catch","MODAL_STATES","WalletStatusForm","onOpen","setState","walletUnlock","pass","post","walletLock","submitWalletUnlockForm","setSubmitting","resetForm","setStatus","dispatchSetIsWalletUnlocked","err","errMessage","detail","submitWalletLockForm","confirm","aria-labelledby","isSubmitting","id","htmlFor","disabled","isWalletUnlock","walletActions","CopyToClipboard","startTimer","timerId","setTimeout","showTooltip","onCopy","e","preventDefault","copy","children","handleOnTooltipClose","myRef","React","createRef","clearTimeout","Overlay","current","placement","Tooltip","PureComponent","initialFormValues","walletPassword","mnemonicPass","WalletInitializeForm","isShowMnemonic","walletInit","a","handleSubmit","result","msg","mnemonic","role","aria-hidden","RestoreWalletForm","walletRestore","String","required","WalletInitModal","dispatchCheckWalletStatus","size","isApiKeySetted","openedModal","setOpenedModal","Navbar","expand","Brand","src","logo","alt","ApiKeyModal","WalletStatusModal","renderWalletForms","HeaderContainer","useEffect","Layout","InfoCard","color","SynchCard","renderActiveSynchronization","faSync","spin","renderCompleteSynchronization","faCheck","renderSynchronizationState","complete","getSynchronizationState","fullHeight","headersHeight","nextProps","nodeInfo","currentSynchState","WalletSyncCard","renderErrorSynchronization","faTimes","length","walletHeight","LoaderLogo","xmlns","width","height","viewBox","fill","d","fillRule","clipRule","DashboardView","faExclamationTriangle","peersCount","bestHeaderId","launchTime","appVersion","isMining","format","Date","getWalletStatus","isUnlocked","balance","Number","toFixed","assets","usePrevious","value","useRef","dispatchGetWalletBalance","dispatchGetErgPrice","setNodeInfo","setError","setTimerId","setNodeCurrentState","useCallback","setTimer","newTimerId","setInterval","prevError","clearInterval","DashboardContainer","useSSR","browser","setBrowser","Boolean","window","document","createElement","isBrowser","isServer","el","setAttribute","usePortal","selectId","Math","random","toString","slice","isUsingBrowser","elSnapshot","setElSnapshot","hasElement","querySelector","body","appendChild","defaultOptions","scrollLayer","elementStack","Map","touchHandler","event","touches","useBodyScroll","elementRef","t","elRef","hidden","setHidden","safeOptions","isIosWithCustom","navigator","test","platform","lastOverflow","style","overflow","has","addEventListener","passive","set","last","removeEventListener","store","delete","useCurrentState","val","Text","variant","component","dangerouslySetInnerHTML","currentVariant","cn","colored","withDefaults","defaultProps","visible","enterTime","leaveTime","clearTime","classes","setClasses","renderable","setRenderable","statusClassName","time","timer","clearClassesTimer","isValidElement","cloneElement","setIsContentMouseDown","IsContentMouseDownRef","childrenClickHandler","stopPropagation","CssTransition","styles","backdrop","onMouseUp","layer","content","onMouseDown","ModalContext","createContext","_extends","assign","i","arguments","source","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_ref","svgRef","ForwardRef","forwardRef","makeIcon","Icon","focusable","RemoveIcon","removeIcon","CloseIcon","closeImage","InfoModal","description","primaryButtonContent","secondaryButtonContent","disableBackdropClick","onClose","onPrimaryHandler","onSecondaryHandler","open","portal","setBodyHidden","setVisible","visibleRef","closeModal","undefined","modalConfig","useMemo","close","createPortal","Provider","xl","sm","wrapClassName","PaymentSendForm","currentBalance","transactionId","setTransactionId","isSentModalOpen","setIsSentModalOpen","assetCheckbox","setAssetCheckbox","paymentSend","recipientAddress","amount","fee","asset","assetAmount","request","address","parseFloat","tokenId","requests","sendForm","validateForm","errors","totalFeeAndAmount","abs","validate","render","submitting","pristine","form","input","meta","touched","blur","checked","onChange","restart","AssetIssueForm","setAssetAmount","assetName","setAssetName","issueAsset","decimals","formData","isInteger","_ref10","_ref11","_ref12","_ref13","_ref14","_ref15","_ref16","_ref17","x","y","enableBackground","xmlSpace","RedoIcon","redoImage","WalletInformationTableItem","resultTitle","resultContent","isOpen","setIsOpen","Array","isArray","item","prev","walletBalance","dispatchGetWalletAddresses","getValues","getAddreses","addresses","subdomain","getAssets","updateValues","Wallet","renderState","unlocked","renderWalletUnlockedState","locked","renderWalletLockedState","initialized","renderInitializedState","dispatchGetNetwork","nodeActions","basename","exact","path","Dashboard","combineReducers","reducer","next","getState","walletData","isInitialized","nodeData","configure","configureStore","rootReducer","middleware","getDefaultMiddleware","walletMiddleware","nodeMiddleware","App","ReactDOM","getElementById","module","exports"],"mappings":"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","file":"static/js/main.2df85f5c.chunk.js","sourcesContent":["import { createSlice } from 'redux-starter-kit';\n\nconst initialState = {\n network: 'mainnet',\n};\n\nexport default createSlice({\n name: 'nodeSlice',\n initialState,\n reducers: {\n setNetwork: (state, { payload }) => {\n state.network = payload;\n },\n },\n});\n","import { createAction } from 'redux-starter-kit';\nimport nodeSlice from '../slices/nodeSlice';\n\nconst getNetwork = createAction('getNetwork');\n\nexport default {\n ...nodeSlice.actions,\n getNetwork,\n};\n","export default {\n swaggerInterface: '/swagger',\n website: 'https://ergoplatform.org',\n nanoErgInErg: 1000000000,\n};\n","import { createSelector } from 'redux-starter-kit';\n\nexport const nodeSelector = (state) => state.node;\n\nexport const networkSelector = createSelector(nodeSelector, (node) => node.network);\n\nexport const explorerSelector = createSelector(nodeSelector, (node) =>\n node.network === 'mainnet' ? 'explorer' : node.network,\n);\n","import React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { connect } from 'react-redux';\nimport clsx from 'clsx';\nimport { faWpexplorer } from '@fortawesome/free-brands-svg-icons';\nimport { explorerSelector } from 'store/selectors/node';\n\nconst mapStateToProps = (state) => ({ explorerSubdomain: explorerSelector(state) });\n\nconst icon = ;\nconst title = 'Explorer';\n\nclass Explorer extends Component {\n render() {\n const { explorerSubdomain } = this.props;\n\n return (\n \n {icon} {title}\n \n );\n }\n}\n\nexport default connect(mapStateToProps, null)(Explorer);\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faChartLine, faExchangeAlt, faGlobe, faBook } from '@fortawesome/free-solid-svg-icons';\nimport clsx from 'clsx';\nimport { withRouter, Link } from 'react-router-dom';\nimport constants from '../../../utils/constants';\nimport Explorer from './components/Explorer';\n\nconst localRouteList = {\n dashboard: {\n href: '/',\n icon: ,\n title: 'Dashboard',\n },\n wallet: {\n href: '/wallet',\n icon: ,\n title: 'Wallet',\n },\n};\n\nconst externalRouteList = {\n swaggerInterface: {\n href: constants.swaggerInterface,\n icon: ,\n title: 'Swagger',\n },\n website: {\n href: constants.website,\n icon: ,\n title: 'Website',\n },\n};\n\nconst MenuList = ({ location: { pathname } }) => {\n return (\n \n
Menu
\n
\n
\n {Object.values(localRouteList).map(({ href, icon, title }, index) => (\n \n {icon} {title}\n \n ))}\n
\n
External links
\n
\n
\n {Object.values(externalRouteList).map(({ href, icon, title }, index) => (\n
\n {icon} {title}\n \n ))}\n
\n
\n
\n );\n};\n\nexport default withRouter(MenuList);\n","import { createSelector } from 'redux-starter-kit';\n\nexport const appSelector = (state) => state.app;\n\nexport const apiKeySelector = createSelector(appSelector, (app) => app.apiKey);\n","import { createSelector } from 'redux-starter-kit';\n\nexport const walletSelector = (state) => state.wallet;\n\nexport const isWalletUnlockedSelector = createSelector(\n walletSelector,\n (wallet) => wallet.isWalletUnlocked,\n);\n\nexport const isWalletInitializedSelector = createSelector(\n walletSelector,\n (wallet) => wallet.isWalletInitialized,\n);\n\nexport const walletStatusDataSelector = createSelector(\n walletSelector,\n (wallet) => wallet.walletStatusData,\n);\n\nexport const walletBalanceDataSelector = createSelector(\n walletSelector,\n (wallet) => wallet.walletBalanceData,\n);\n\nexport const walletAddressesSelector = createSelector(\n walletSelector,\n (wallet) => wallet.walletAddresses,\n);\n\nexport const ergPriceSelector = createSelector(walletSelector, (wallet) => wallet.ergPrice);\n","import { createSlice } from 'redux-starter-kit';\n\nconst initialState = {\n isWalletUnlocked: null,\n isWalletInitialized: null,\n walletStatusData: null,\n walletBalanceData: null,\n ergPrice: null,\n walletAddresses: null,\n};\n\nexport default createSlice({\n name: 'walletSlice',\n initialState,\n reducers: {\n setIsWalletUnlocked: (state, { payload }) => {\n state.isWalletUnlocked = payload;\n },\n setIsWalletInitialized: (state, { payload }) => {\n state.isWalletInitialized = payload;\n },\n setWalletStatusData: (state, { payload }) => {\n state.walletStatusData = payload;\n },\n setWalletBalanceData: (state, { payload }) => {\n state.walletBalanceData = payload;\n },\n setErgPrice: (state, { payload }) => {\n state.ergPrice = payload;\n },\n setWalletAddresses: (state, { payload }) => {\n state.walletAddresses = payload;\n },\n },\n});\n","import { createAction } from 'redux-starter-kit';\nimport walletSlice from '../slices/walletSlice';\n\nconst checkWalletStatus = createAction('checkWalletStatus');\nconst getWalletBalance = createAction('getWalletBalance');\nconst getErgPrice = createAction('getErgPrice');\nconst getWalletAddresses = createAction('getWalletAddresses');\n\nexport default {\n ...walletSlice.actions,\n checkWalletStatus,\n getWalletBalance,\n getErgPrice,\n getWalletAddresses,\n};\n","import { createSlice } from 'redux-starter-kit';\n\nconst initialState = {\n apiKey: '',\n};\n\nexport default createSlice({\n name: 'appSlice',\n initialState,\n reducers: {\n setApiKey: (state, action) => {\n state.apiKey = action.payload;\n },\n },\n});\n","import appSlice from '../slices/appSlice';\n\nexport default {\n ...appSlice.actions,\n};\n","const appConfig = () => {\n return {\n nodeApiLink: '/',\n oracleApiLink: 'https://erg-usd-ergo-oracle.emurgo.io',\n };\n};\n\nexport default {\n ...appConfig(),\n};\n","import axios from 'axios';\nimport environment from '../utils/environment';\n\nfunction NetworkError({ status, message, data, statusText }) {\n this.name = 'NetworkError';\n this.message = message || statusText;\n this.status = status;\n this.data = data;\n}\n\nNetworkError.prototype = Object.create(Error.prototype);\n\nconst nodeApi = axios.create({\n baseURL: environment.nodeApiLink,\n timeout: 1000 * 10,\n crossDomain: true,\n headers: {\n 'Content-Type': 'application/json',\n },\n});\n\nnodeApi.interceptors.response.use(\n (response) => Promise.resolve(response),\n (error) => Promise.reject(new NetworkError(error.response || error)),\n);\n\nexport default nodeApi;\n","import { toast } from 'react-toastify';\nimport './index.scss';\n\nconst toastStates = {\n success: (text, options) =>\n toast.success(text, {\n position: 'top-right',\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n className: 'n-toast n-toast--success',\n bodyClassName: 'n-toast__body',\n progressClassName: 'n-toast__progress--success',\n ...options,\n }),\n error: (text, options) =>\n toast.error(text, {\n position: 'top-right',\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n className: 'n-toast n-toast--error',\n bodyClassName: 'n-toast__body',\n progressClassName: 'n-toast__progress--error',\n ...options,\n }),\n info: toast.info,\n};\n\nexport default (state, text, options) =>\n toastStates[state] ? toastStates[state](text, options) : new Error(`Bad toast state`);\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { Formik, Form, Field } from 'formik';\nimport { v4 as uuidv4 } from 'uuid';\n\nconst renderButton = (apiKey, handleShow) => {\n if (apiKey === '') {\n return (\n \n );\n }\n\n return (\n \n );\n};\n\nconst ApiKeyModalView = ({ showModal, handleHide, submitForm, apiKey, handleShow }) => {\n const uuid = uuidv4();\n return (\n \n {renderButton(apiKey, handleShow)}\n
handleHide()} centered>\n submitForm(values, uuid)}\n >\n {() => (\n \n )}\n \n \n
\n );\n};\n\nexport default ApiKeyModalView;\n","import ApiKeyModalContainer from './ApiKeyModalContainer';\n\nexport default ApiKeyModalContainer;\n","import React, { memo, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { apiKeySelector } from '../../../store/selectors/app';\nimport appActions from '../../../store/actions/appActions';\nimport nodeApi from '../../../api/api';\nimport customToast from '../../../utils/toast';\nimport ApiKeyModalView from './ApiKeyModalView';\n\nconst mapStateToProps = (state) => ({\n apiKey: apiKeySelector(state),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n dispatchSetApiKey: (apiKey) => dispatch(appActions.setApiKey(apiKey)),\n});\n\nconst ApiKeyModalContainer = (props) => {\n const { dispatchSetApiKey, apiKey } = props;\n\n const [showModal, setShowModal] = useState(false);\n\n const handleShow = () => {\n setShowModal(true);\n };\n\n const handleHide = () => {\n setShowModal(false);\n };\n\n const submitForm = (values, uuid) => {\n // Check API key for random get method\n nodeApi\n .get('/wallet/status', {\n headers: {\n api_key: values[`apiKey${uuid}`],\n },\n })\n .then(() => {\n dispatchSetApiKey(values[`apiKey${uuid}`].trim());\n customToast('success', 'API key is set successfully');\n handleHide();\n })\n .catch(() => {\n customToast('error', 'Bad API key');\n });\n };\n\n return (\n \n );\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(memo(ApiKeyModalContainer));\n","export const MODAL_STATES = {\n INIT: 'INIT',\n STATUS: 'STATUS',\n};\n","import React, { Component, memo } from 'react';\nimport Modal from 'react-bootstrap/Modal';\nimport { Formik, Field, Form } from 'formik';\nimport { connect } from 'react-redux';\nimport { isWalletUnlockedSelector } from '../../../store/selectors/wallet';\nimport walletActions from '../../../store/actions/walletActions';\nimport { apiKeySelector } from '../../../store/selectors/app';\nimport customToast from '../../../utils/toast';\nimport nodeApi from '../../../api/api';\nimport { MODAL_STATES } from '../utils';\n\nconst mapStateToProps = (state) => ({\n isWalletUnlocked: isWalletUnlockedSelector(state),\n apiKey: apiKeySelector(state),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n dispatchSetIsWalletUnlocked: (isWalletUnlock) =>\n dispatch(walletActions.setIsWalletUnlocked(isWalletUnlock)),\n});\n\nclass WalletStatusForm extends Component {\n state = {\n showModal: false,\n };\n\n handleShow = () => {\n this.props.onOpen(MODAL_STATES.STATUS);\n this.setState({ showModal: true });\n };\n\n handleHide = () => {\n this.props.onOpen(null);\n this.setState({ showModal: false });\n };\n\n walletUnlock = (pass) =>\n nodeApi.post(\n '/wallet/unlock',\n { pass },\n {\n headers: {\n api_key: this.props.apiKey,\n },\n },\n );\n\n walletLock = () =>\n nodeApi.get('/wallet/lock', {\n headers: {\n api_key: this.props.apiKey,\n },\n });\n\n submitWalletUnlockForm = ({ pass }, { setSubmitting, resetForm, setStatus }) => {\n setStatus({ status: 'submitting' });\n this.walletUnlock(pass)\n .then(() => {\n resetForm({ pass: '' });\n customToast('success', 'Your wallet is unlocked successfully');\n this.props.dispatchSetIsWalletUnlocked(true);\n this.handleHide();\n })\n .catch((err) => {\n const errMessage = err.data ? err.data.detail : err.message;\n customToast('error', errMessage);\n setSubmitting(false);\n });\n };\n\n submitWalletLockForm = () => {\n // eslint-disable-next-line\n if (confirm('Are you sure want to lock wallet?')) {\n this.walletLock()\n .then(() => {\n customToast('success', 'Your wallet is locked successfully');\n this.props.dispatchSetIsWalletUnlocked(false);\n })\n .catch((err) => {\n const errMessage = err.data ? err.data.detail : err.message;\n customToast('error', errMessage);\n });\n }\n };\n\n renderButton = () => {\n if (!this.props.isWalletUnlocked) {\n return (\n \n );\n }\n\n return (\n \n );\n };\n\n render() {\n return (\n \n {this.renderButton()}\n
this.handleHide()}\n centered\n aria-labelledby=\"example-custom-modal-styling-title\"\n >\n \n {({ isSubmitting }) => (\n \n )}\n \n \n
\n );\n }\n}\nexport default connect(mapStateToProps, mapDispatchToProps)(memo(WalletStatusForm));\n","import React from 'react';\nimport copy from 'clipboard-copy';\nimport { Overlay, Tooltip } from 'react-bootstrap';\n\nclass CopyToClipboard extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.myRef = React.createRef();\n this.state = { showTooltip: false };\n }\n\n componentWillUnmount() {\n clearTimeout(this.state.timerId);\n }\n\n startTimer = () => {\n const timerId = setTimeout(() => this.setState({ showTooltip: false }), 1500);\n this.setState({ timerId });\n };\n\n onCopy = (e) => {\n e.preventDefault();\n copy(this.props.children);\n this.setState({ showTooltip: true });\n this.startTimer();\n };\n\n handleOnTooltipClose = () => {\n this.setState({ showTooltip: false });\n };\n\n render() {\n return (\n <>\n \n {this.props.children}\n \n \n Copied!\n \n >\n );\n }\n}\n\nexport default CopyToClipboard;\n","import React, { Component, memo } from 'react';\nimport { Formik, Field, Form } from 'formik';\nimport nodeApi from '../../../api/api';\nimport CopyToClipboard from '../../common/CopyToClipboard';\nimport customToast from '../../../utils/toast';\n\nconst initialFormValues = {\n walletPassword: '',\n mnemonicPass: '',\n};\n\nclass WalletInitializeForm extends Component {\n state = { isShowMnemonic: false };\n\n walletInit = async ({ walletPassword, mnemonicPass }) => {\n const { data } = await nodeApi.post(\n '/wallet/init',\n { pass: walletPassword, mnemonicPass },\n {\n headers: {\n api_key: this.props.apiKey,\n },\n },\n );\n\n return data;\n };\n\n handleSubmit = (values, { setSubmitting, resetForm, setStatus }) => {\n setStatus({ status: 'submitting' });\n this.walletInit(values)\n .then((result) => {\n resetForm(initialFormValues);\n setStatus({\n state: 'success',\n msg: (\n <>\n Your wallet successfully initialized. Please, save your mnemonic -{' '}\n {result.mnemonic}\n >\n ),\n });\n this.setState({ isShowMnemonic: true });\n })\n .catch((err) => {\n const errMessage = err.data ? err.data.detail : err.message;\n customToast('error', errMessage);\n setSubmitting(false);\n });\n };\n\n render() {\n return (\n \n
Initialize wallet
\n
\n {({ status, isSubmitting }) => (\n \n )}\n \n
\n );\n }\n}\n\nexport default memo(WalletInitializeForm);\n","import React, { Component, memo } from 'react';\nimport { Formik, Field, Form } from 'formik';\nimport { v4 as uuidv4 } from 'uuid';\nimport nodeApi from '../../../api/api';\nimport customToast from '../../../utils/toast';\n\nconst initialFormValues = {\n walletPassword: '',\n mnemonicPass: '',\n mnemonic: '',\n};\n\nclass RestoreWalletForm extends Component {\n walletRestore = async (values, uuid) => {\n const { walletPassword, mnemonicPass = '' } = values;\n if (!values[`mnemonic${uuid}`] || !String(values[`mnemonic${uuid}`]).trim()) {\n throw Error('Need to set mnemonic');\n }\n\n return nodeApi.post(\n '/wallet/restore',\n {\n pass: walletPassword || '',\n mnemonicPass: mnemonicPass || '',\n mnemonic: values[`mnemonic${uuid}`],\n },\n {\n headers: {\n api_key: this.props.apiKey,\n },\n },\n );\n };\n\n handleSubmit = (values, { setSubmitting, resetForm, setStatus }, uuid) => {\n setStatus({ status: 'submitting' });\n this.walletRestore(values, uuid)\n .then(() => {\n resetForm(initialFormValues);\n customToast('success', 'Your wallet successfully re-stored');\n })\n .catch((err) => {\n const errMessage = err.data ? err.data.detail : err.message;\n customToast('error', errMessage);\n setSubmitting(false);\n });\n };\n\n render() {\n const uuid = uuidv4();\n\n return (\n \n
Re-store wallet
\n
this.handleSubmit(values, props, uuid)}\n >\n {({ status, isSubmitting }) => (\n \n )}\n \n
\n );\n }\n}\n\nexport default memo(RestoreWalletForm);\n","import React, { Component, memo } from 'react';\nimport Modal from 'react-bootstrap/Modal';\nimport { connect } from 'react-redux';\nimport { apiKeySelector } from '../../../store/selectors/app';\nimport appActions from '../../../store/actions/appActions';\nimport WalletInitializeForm from '../../elements/WalletInitializeForm';\nimport RestoreWalletForm from '../../elements/RestoreWalletForm';\nimport walletActions from '../../../store/actions/walletActions';\nimport { MODAL_STATES } from '../utils';\n\nconst mapStateToProps = (state) => ({\n apiKey: apiKeySelector(state),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n dispatchCheckWalletStatus: () => dispatch(walletActions.checkWalletStatus()),\n dispatchSetApiKey: (apiKey) => dispatch(appActions.setApiKey(apiKey)),\n});\n\nclass WalletInitModal extends Component {\n state = {\n showModal: false,\n };\n\n handleShow = () => {\n this.props.onOpen(MODAL_STATES.INIT);\n this.setState({ showModal: true });\n };\n\n handleHide = () => {\n this.props.onOpen(null);\n this.props.dispatchCheckWalletStatus();\n this.setState({ showModal: false });\n };\n\n renderButton = () => {\n return (\n \n );\n };\n\n render() {\n const { apiKey } = this.props;\n\n return (\n \n {this.renderButton()}\n
this.handleHide()} centered size=\"lg\">\n \n Wallet initialization\n \n \n \n \n
\n \n \n
\n \n \n \n \n \n
\n );\n }\n}\nexport default connect(mapStateToProps, mapDispatchToProps)(memo(WalletInitModal));\n","import React, { memo, useState } from 'react';\nimport { Navbar } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport ApiKeyModal from './ApiKeyModal';\nimport WalletStatusModal from './WalletStatusModal';\nimport WalletInitModal from './WalletInitModal';\nimport logo from '../../assets/images/logotype_white.svg';\nimport { MODAL_STATES } from './utils';\n\nconst renderWalletForms = (isWalletInitialized, openedModal, setOpenedModal) => {\n if (isWalletInitialized === null) {\n return <>>;\n }\n\n if (isWalletInitialized && openedModal !== MODAL_STATES.INIT) {\n return (\n \n \n
\n );\n }\n\n return (\n \n \n
\n );\n};\n\nconst HeaderView = ({ isApiKeySetted, isWalletInitialized }) => {\n const [openedModal, setOpenedModal] = useState(null);\n\n return (\n \n \n \n
\n \n \n \n {isApiKeySetted && renderWalletForms(isWalletInitialized, openedModal, setOpenedModal)}\n \n );\n};\n\nexport default memo(HeaderView);\n","import HeaderContainer from './HeaderContainer';\n\nexport default HeaderContainer;\n","import React, { memo, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { apiKeySelector } from '../../store/selectors/app';\nimport { isWalletInitializedSelector } from '../../store/selectors/wallet';\nimport walletActions from '../../store/actions/walletActions';\nimport HeaderView from './HeaderView';\n\nconst mapStateToProps = (state) => ({\n apiKey: apiKeySelector(state),\n isWalletInitialized: isWalletInitializedSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n dispatchCheckWalletStatus: () => dispatch(walletActions.checkWalletStatus()),\n});\n\nconst HeaderContainer = (props) => {\n const { apiKey, dispatchCheckWalletStatus, isWalletInitialized } = props;\n\n useEffect(() => {\n if (apiKey !== '') {\n dispatchCheckWalletStatus();\n }\n }, [apiKey, dispatchCheckWalletStatus]);\n\n const isApiKeySetted = apiKey !== '';\n\n return ;\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(memo(HeaderContainer));\n","import React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport MenuList from '../common/MenuList';\nimport './index.scss';\nimport Header from '../Header';\n\nexport const Layout = withRouter((props) => {\n return (\n \n
\n
\n \n
\n
\n {props.children}
\n \n
\n );\n});\n","import React from 'react';\nimport clsx from 'clsx';\nimport './index.scss';\n\nconst InfoCard = ({ color, children, className }) => {\n return (\n \n {children}\n
\n );\n};\n\nexport default InfoCard;\n","import React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faSync, faCheck } from '@fortawesome/free-solid-svg-icons';\nimport InfoCard from '../InfoCard';\n\nexport default class SynchCard extends Component {\n shouldComponentUpdate(nextProps) {\n if (\n this.getSynchronizationState(nextProps) !== this.getSynchronizationState(this.props.nodeInfo)\n ) {\n return true;\n }\n\n return false;\n }\n\n renderActiveSynchronization = () => (\n <>\n Synchronization state
\n \n Active synchronization\n
\n >\n );\n\n renderCompleteSynchronization = () => (\n <>\n Synchronization state
\n \n Node is synced\n
\n >\n );\n\n renderSynchronizationState = (state) =>\n ({\n active: this.renderActiveSynchronization,\n complete: this.renderCompleteSynchronization,\n }[state]);\n\n getSynchronizationState = ({ fullHeight, headersHeight }) => {\n if (fullHeight !== null && headersHeight !== null && fullHeight === headersHeight) {\n return 'complete';\n }\n\n return 'active';\n };\n\n render() {\n const currentSynchState = this.getSynchronizationState(this.props.nodeInfo);\n return (\n \n {this.renderSynchronizationState(currentSynchState)()}\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faSync, faCheck, faTimes } from '@fortawesome/free-solid-svg-icons';\nimport InfoCard from '../InfoCard';\n\nexport default class WalletSyncCard extends Component {\n renderActiveSynchronization = () => (\n <>\n Synchronization state
\n \n Active synchronization\n
\n >\n );\n\n renderCompleteSynchronization = () => (\n <>\n Synchronization state
\n \n Wallet is synced\n
\n >\n );\n\n renderErrorSynchronization = () => (\n <>\n Synchronization state
\n \n Error - {this.props.walletStatusData.error}\n
\n >\n );\n\n renderSynchronizationState = (state) =>\n ({\n active: this.renderActiveSynchronization,\n complete: this.renderCompleteSynchronization,\n error: this.renderErrorSynchronization,\n }[state]);\n\n getSynchronizationState = (walletStatusData, headersHeight) => {\n if (walletStatusData.error?.trim().length !== 0) {\n return 'error';\n }\n\n if (\n walletStatusData.walletHeight !== null &&\n headersHeight !== null &&\n walletStatusData.walletHeight === headersHeight\n ) {\n return 'complete';\n }\n\n return 'active';\n };\n\n render() {\n const { walletStatusData, headersHeight } = this.props;\n const currentSynchState = this.getSynchronizationState(walletStatusData, headersHeight);\n return (\n \n {this.renderSynchronizationState(currentSynchState)()}\n \n );\n }\n}\n","import React from 'react';\nimport './index.scss';\n\nconst LoaderLogo = () => {\n return (\n \n );\n};\n\nexport default LoaderLogo;\n","import React from 'react';\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { format } from 'date-fns';\nimport constants from 'utils/constants';\nimport InfoCard from './InfoCard';\nimport SynchCard from './SynchCard';\nimport WalletSyncCard from './WalletSyncCard';\nimport LoaderLogo from '../../common/ErgoLoader/index';\n\nconst getWalletStatus = (isWalletInitialized) => {\n if (!isWalletInitialized) {\n return 'Not initialized';\n }\n\n return 'Initialized';\n};\n\nconst DashboardView = ({\n error,\n nodeInfo,\n isWalletInitialized,\n walletStatusData,\n walletBalanceData,\n ergPrice,\n}) => {\n if (error !== null) {\n return (\n <>\n \n
\n \n \n {error}\n
\n
\n >\n );\n }\n\n if (nodeInfo === null) {\n return (\n <>\n \n \n
\n >\n );\n }\n\n const { peersCount, bestHeaderId, launchTime, fullHeight, appVersion, isMining } = nodeInfo;\n\n return (\n <>\n \n
Node Information
\n
\n
\n
\n Version
\n {appVersion}
\n \n
\n
\n \n
\n
\n
\n Started at
\n \n {format(new Date(launchTime), 'MM-dd-yyyy HH:mm:ss')}\n
\n \n
\n {fullHeight === null ? null : (\n
\n
\n Current height
\n {fullHeight}
\n \n
\n )}\n {bestHeaderId === null ? null : (\n
\n
\n Best block id
\n {bestHeaderId}
\n \n
\n )}\n
\n
\n Mining enabled
\n {isMining ? 'Yes' : 'No'}
\n \n
\n
\n
\n Peers connected
\n {peersCount}
\n \n
\n
\n
\n {ergPrice && (\n \n
ERG Information
\n
\n
\n
\n \n ERG price in $
\n (based on oracle pool data)\n
\n {ergPrice}
\n \n
\n
\n
\n )}\n {walletStatusData && (\n \n
Wallet Information
\n
\n
\n
\n Initialization state
\n {getWalletStatus(isWalletInitialized)}
\n \n
\n
\n
\n Lock state
\n \n {walletStatusData.isUnlocked ? 'Unlocked' : 'Locked'}\n
\n \n
\n
\n \n
\n {walletBalanceData && (\n
\n
\n Balance
\n \n {walletBalanceData.balance / constants.nanoErgInErg} ERG{' '}\n {ergPrice &&\n `~ $${Number(\n ergPrice * (walletBalanceData.balance / constants.nanoErgInErg),\n ).toFixed(2)}`}\n
\n \n
\n )}\n {walletBalanceData && (\n
\n
\n Assets
\n \n {Object.values(walletBalanceData.assets).length || '0'}\n
\n \n
\n )}\n
\n
\n )}\n >\n );\n};\n\nexport default DashboardView;\n","import { useEffect, useRef } from 'react';\n\nfunction usePrevious(value) {\n // The ref object is a generic container whose current property is mutable ...\n // ... and can hold any value, similar to an instance property on a class\n const ref = useRef();\n\n // Store current value in ref\n useEffect(() => {\n ref.current = value;\n }, [value]); // Only re-run if value changes\n\n // Return previous value (happens before update in useEffect above)\n return ref.current;\n}\n\nexport default usePrevious;\n","import React, { useState, useEffect, useCallback, memo } from 'react';\nimport { connect } from 'react-redux';\nimport nodeApi from '../../../api/api';\nimport DashboardView from './DashboardView';\nimport {\n isWalletInitializedSelector,\n isWalletUnlockedSelector,\n walletStatusDataSelector,\n walletBalanceDataSelector,\n ergPriceSelector,\n} from '../../../store/selectors/wallet';\nimport { apiKeySelector } from '../../../store/selectors/app';\nimport usePrevious from '../../../hooks/usePrevious';\nimport walletActions from '../../../store/actions/walletActions';\n\nconst mapStateToProps = (state) => ({\n apiKey: apiKeySelector(state),\n isWalletInitialized: isWalletInitializedSelector(state),\n isWalletUnlocked: isWalletUnlockedSelector(state),\n walletStatusData: walletStatusDataSelector(state),\n walletBalanceData: walletBalanceDataSelector(state),\n ergPrice: ergPriceSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n dispatchCheckWalletStatus: () => dispatch(walletActions.checkWalletStatus()),\n dispatchGetWalletBalance: () => dispatch(walletActions.getWalletBalance()),\n dispatchGetErgPrice: () => dispatch(walletActions.getErgPrice()),\n});\n\nconst DashboardContainer = (props) => {\n const {\n isWalletInitialized,\n isWalletUnlocked,\n apiKey,\n dispatchCheckWalletStatus,\n dispatchGetWalletBalance,\n dispatchGetErgPrice,\n walletStatusData,\n walletBalanceData,\n ergPrice,\n } = props;\n\n const [nodeInfo, setNodeInfo] = useState(null);\n const [error, setError] = useState(null);\n const [timerId, setTimerId] = useState(null);\n\n const getNodeCurrentState = () => nodeApi.get('/info');\n\n const setNodeCurrentState = useCallback(async () => {\n try {\n const { data } = await getNodeCurrentState();\n\n setNodeInfo(data);\n setError(null);\n } catch {\n setError('Node connection is lost.');\n }\n }, []);\n\n const setTimer = useCallback(() => {\n const newTimerId = setInterval(() => {\n setNodeCurrentState();\n dispatchGetErgPrice();\n\n if (apiKey) {\n dispatchCheckWalletStatus();\n dispatchGetWalletBalance();\n }\n }, 2000);\n\n setTimerId(newTimerId);\n }, [\n apiKey,\n dispatchCheckWalletStatus,\n dispatchGetErgPrice,\n dispatchGetWalletBalance,\n setNodeCurrentState,\n ]);\n\n const prevError = usePrevious(error);\n useEffect(() => {\n if (prevError && prevError !== error) {\n dispatchCheckWalletStatus();\n dispatchGetWalletBalance();\n dispatchGetErgPrice();\n }\n }, [dispatchCheckWalletStatus, dispatchGetErgPrice, dispatchGetWalletBalance, error, prevError]);\n\n useEffect(() => {\n setNodeCurrentState();\n dispatchGetErgPrice();\n\n if (apiKey) {\n dispatchCheckWalletStatus();\n dispatchGetWalletBalance();\n }\n\n setTimer();\n // eslint-disable-next-line\n }, [apiKey]);\n\n useEffect(\n () => () => {\n clearInterval(timerId);\n },\n [timerId, apiKey],\n );\n\n return (\n \n );\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(memo(DashboardContainer));\n","import DashboardContainer from './DashboardContainer';\nimport './index.scss';\n\nexport default DashboardContainer;\n","import { useEffect, useState } from 'react';\n\nconst isBrowser = (): boolean => {\n return Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);\n};\n\ntype SSRState = {\n isBrowser: boolean;\n isServer: boolean;\n};\n\nconst useSSR = (): SSRState => {\n const [browser, setBrowser] = useState(false);\n useEffect(() => {\n setBrowser(isBrowser());\n }, []);\n\n return {\n isBrowser: browser,\n isServer: !browser,\n };\n};\n\nconst createElement = (id: string): HTMLElement => {\n const el = document.createElement('div');\n el.setAttribute('id', id);\n return el;\n};\n\nconst usePortal = (\n selectId: string = Math.random().toString(32).slice(2, 10),\n): HTMLElement | null => {\n const id = `id-${selectId}`;\n const isUsingBrowser = useSSR().isBrowser;\n const [elSnapshot, setElSnapshot] = useState(\n isUsingBrowser ? createElement(id) : null,\n );\n\n useEffect(() => {\n const hasElement = document.querySelector(`#${id}`);\n const el = hasElement || createElement(id);\n\n if (!hasElement) {\n document.body.appendChild(el);\n }\n setElSnapshot(el);\n }, []);\n\n return elSnapshot;\n};\n\nexport default usePortal;\n","import { Dispatch, RefObject, SetStateAction, useEffect, useRef, useState } from 'react';\n/* eslint-disable */\nexport type ElementStackItem = {\n last: string;\n};\n\nexport type BodyScrollOptions = {\n scrollLayer: boolean;\n};\n\nconst defaultOptions: BodyScrollOptions = {\n scrollLayer: false,\n};\n\nconst elementStack = new Map();\n\nconst isIos = () => {\n /* istanbul ignore next */\n if (typeof window === 'undefined' || !window.navigator) return false;\n return /iP(ad|hone|od)/.test(window.navigator.platform);\n};\n\nconst touchHandler = (event: TouchEvent): boolean => {\n if (event.touches && event.touches.length > 1) return true;\n event.preventDefault();\n return false;\n};\n\nconst useBodyScroll = (\n elementRef?: RefObject | null,\n options?: BodyScrollOptions\n): [boolean, Dispatch>] => {\n if (typeof document === 'undefined')\n return [false, (t: SetStateAction) => t];\n const elRef = elementRef || useRef(document.body);\n const [hidden, setHidden] = useState(false);\n const safeOptions = {\n ...defaultOptions,\n ...(options || {}),\n };\n\n // don't prevent touch event when layer contain scroll\n const isIosWithCustom = () => {\n if (safeOptions.scrollLayer) return false;\n return isIos();\n };\n\n useEffect(() => {\n if (!elRef || !elRef.current) return;\n const lastOverflow = elRef.current.style.overflow;\n if (hidden) {\n if (elementStack.has(elRef.current)) return;\n if (!isIosWithCustom()) {\n elRef.current.style.overflow = 'hidden';\n } else {\n document.addEventListener('touchmove', touchHandler, {\n passive: false,\n });\n }\n elementStack.set(elRef.current, {\n last: lastOverflow,\n });\n return;\n }\n\n // reset element overflow\n if (!elementStack.has(elRef.current)) return;\n if (!isIosWithCustom()) {\n const store = elementStack.get(elRef.current) as ElementStackItem;\n elRef.current.style.overflow = store.last;\n } else {\n document.removeEventListener('touchmove', touchHandler);\n }\n elementStack.delete(elRef.current);\n }, [hidden, elRef]);\n\n return [hidden, setHidden];\n};\n\nexport default useBodyScroll;\n\n/* eslint-disable */\n","import { Dispatch, MutableRefObject, SetStateAction, useEffect, useRef, useState } from 'react';\n\nexport type CurrentStateType = [S, Dispatch>, MutableRefObject];\n\n// Добавляет ref, по которому текущее значение стейта можно получить\n// сразу вместо того чтобы ждать следующего рендера\nconst useCurrentState = (initialState: S | (() => S)): CurrentStateType => {\n const [state, setState] = useState(() => {\n return typeof initialState === 'function' ? (initialState as () => S)() : initialState;\n });\n const ref = useRef(initialState as S);\n\n useEffect(() => {\n ref.current = state;\n }, [state]);\n\n const setValue = (val: SetStateAction) => {\n const result = typeof val === 'function' ? (val as (prevState: S) => S)(ref.current) : val;\n ref.current = result;\n setState(result);\n };\n\n return [state, setValue, ref];\n};\n\nexport default useCurrentState;\n","import React, { ReactNode } from 'react';\nimport cn from 'classnames';\n\ntype TextVariant =\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | 'subtitle1'\n | 'subtitle2'\n | 'body-text1'\n | 'body-text2'\n | 'small-text1'\n | 'small-text2'\n | 'small-text3';\n\nexport type TextColor =\n | 'brandOrange'\n | 'purple'\n | 'black'\n | 'spaceGray'\n | 'gray5'\n | 'gray4'\n | 'gray3'\n | 'gray2'\n | 'gray1'\n | 'white'\n | 'orange'\n | 'red'\n | 'green'\n | 'blue'\n | 'blueHover'\n | 'brandOrangeHover'\n | 'brandOrangeActive'\n | 'purpleHover'\n | 'purpleActive';\n\nexport type TextComponent = 'span' | 'p' | 'div' | 'h1' | 'label' | 'h2' | 'h3';\n\ninterface IText {\n children?: ReactNode;\n variant?: TextVariant;\n xl?: TextVariant;\n lg?: TextVariant;\n md?: TextVariant;\n sm?: TextVariant;\n component?: TextComponent;\n color?: TextColor;\n className?: string;\n dangerouslySetInnerHTML?: any;\n htmlFor?: string;\n}\n\nconst Text = ({\n children,\n variant,\n component,\n color,\n className,\n dangerouslySetInnerHTML,\n ...props\n}: IText) => {\n const currentVariant = variant;\n\n const Component = component || 'p';\n\n if (dangerouslySetInnerHTML) {\n return (\n <>\n \n\n \n >\n );\n }\n\n return (\n \n {children}\n \n \n );\n};\n\nexport default Text;\n","import React from 'react';\n\n// Прокидывает default параметры в компонент\nconst withDefaults = (component: React.ComponentType
, defaultProps: DP) => {\n type Props = Partial & Omit;\n // eslint-disable-next-line\n component.defaultProps = defaultProps;\n return component as React.ComponentType;\n};\n\nexport default withDefaults;\n","import React, { useEffect, useState } from 'react';\nimport withDefaults from 'utils/withDefaults';\n\ninterface Props {\n visible?: boolean;\n enterTime?: number;\n leaveTime?: number;\n clearTime?: number;\n className?: string;\n name?: string;\n}\n\nconst defaultProps = {\n visible: false,\n enterTime: 60,\n leaveTime: 60,\n clearTime: 60,\n className: '',\n name: 'transition',\n};\n\nexport type CSSTransitionProps = Props & typeof defaultProps;\n\nconst CSSTransition: React.FC> = ({\n children,\n className,\n visible,\n enterTime,\n leaveTime,\n clearTime,\n name,\n ...props\n}) => {\n const [classes, setClasses] = useState('');\n const [renderable, setRenderable] = useState(visible);\n\n useEffect(() => {\n const statusClassName = visible ? 'enter' : 'leave';\n const time = visible ? enterTime : leaveTime;\n if (visible && !renderable) {\n setRenderable(true);\n }\n\n setClasses(`${name}-${statusClassName}`);\n\n // set class to active\n const timer = setTimeout(() => {\n setClasses(`${name}-${statusClassName} ${name}-${statusClassName}-active`);\n clearTimeout(timer);\n }, time);\n\n // remove classess when animation over\n const clearClassesTimer = setTimeout(() => {\n if (!visible) {\n setClasses('');\n setRenderable(false);\n }\n clearTimeout(clearClassesTimer);\n }, time + clearTime);\n\n return () => {\n clearTimeout(timer);\n clearTimeout(clearClassesTimer);\n };\n }, [visible, renderable]);\n if (!React.isValidElement(children) || !renderable) return null;\n\n return React.cloneElement(children, {\n ...props,\n className: `${children.props.className} ${className} ${classes}`,\n });\n};\n\nexport default withDefaults(CSSTransition, defaultProps);\n","import React, { MouseEvent, useCallback, ReactElement } from 'react';\nimport withDefaults from 'utils/withDefaults';\nimport useCurrentState from 'hooks/useCurrentState';\nimport cn from 'classnames';\nimport CssTransition from '../CssTransition/CssTransition';\nimport styles from './Backdrop.module.scss';\n\ninterface Props {\n onClick?: (event: MouseEvent) => void;\n visible?: boolean;\n children?: ReactElement;\n className?: string;\n}\n\nconst defaultProps = {\n onClick: () => {},\n visible: false,\n};\n\nexport type BackdropProps = Props & typeof defaultProps;\n\nconst Backdrop: React.FC> = React.memo(\n ({ children, onClick, visible, className }: BackdropProps) => {\n const [, setIsContentMouseDown, IsContentMouseDownRef] = useCurrentState(false);\n const clickHandler = (event: MouseEvent) => {\n if (IsContentMouseDownRef.current) return;\n if (onClick) {\n onClick(event);\n }\n };\n const childrenClickHandler = useCallback((event: MouseEvent) => {\n event.stopPropagation();\n }, []);\n const mouseUpHandler = () => {\n if (!IsContentMouseDownRef.current) return;\n const timer = setTimeout(() => {\n setIsContentMouseDown(false);\n clearTimeout(timer);\n }, 0);\n };\n\n return (\n \n \n
\n
setIsContentMouseDown(true)}\n >\n {children}\n
\n
\n \n );\n },\n);\n\nexport default withDefaults(Backdrop, defaultProps);\n","import React from 'react';\n\nexport interface ModalConfig {\n close?: () => void;\n}\n\nconst defaultContext = {};\n\nexport const ModalContext = React.createContext(defaultContext);\n\nexport const useModalContext = (): ModalConfig => React.useContext(ModalContext);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _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; }\n\nfunction _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; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.7951 9.30799C10.3844 8.89734 9.71865 8.89734 9.30799 9.30799C8.89734 9.71865 8.89734 10.3844 9.30799 10.7951L14.5129 16L9.30799 21.2049C8.89734 21.6156 8.89734 22.2814 9.30799 22.692C9.71865 23.1027 10.3844 23.1027 10.7951 22.692L16 17.4871L21.2049 22.692C21.6156 23.1027 22.2814 23.1027 22.692 22.692C23.1027 22.2814 23.1027 21.6156 22.692 21.2049L17.4871 16L22.692 10.7951C23.1027 10.3844 23.1027 9.71865 22.692 9.30799C22.2814 8.89734 21.6156 8.89734 21.2049 9.30799L16 14.5129L10.7951 9.30799Z\",\n fill: \"#76767A\"\n});\n\nvar SvgClose = function SvgClose(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgClose, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/close.feae5a5c.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _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; }\n\nfunction _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; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.6668 0.666748H2.66683C1.9335 0.666748 1.3335 1.26675 1.3335 2.00008V11.3334H2.66683V2.00008H10.6668V0.666748ZM10.0002 3.33341L14.0002 7.33341V14.0001C14.0002 14.7334 13.4002 15.3334 12.6668 15.3334H5.32683C4.5935 15.3334 4.00016 14.7334 4.00016 14.0001L4.00683 4.66675C4.00683 3.93341 4.60016 3.33341 5.3335 3.33341H10.0002ZM9.3335 8.00008H13.0002L9.3335 4.33341V8.00008Z\",\n fill: \"#0078FF\"\n});\n\nvar SvgCopyicon = function SvgCopyicon(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCopyicon, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/copy.icon.835ebda7.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _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; }\n\nfunction _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; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.3332 7.99992C13.3332 8.36811 13.0347 8.66659 12.6665 8.66659H3.33317C2.96498 8.66659 2.6665 8.36811 2.6665 7.99992C2.6665 7.63173 2.96498 7.33325 3.33317 7.33325H12.6665C13.0347 7.33325 13.3332 7.63173 13.3332 7.99992Z\",\n fill: \"#0078FF\"\n});\n\nvar SvgRemove = function SvgRemove(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgRemove, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/remove.94c0849a.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\n\nimport { ReactComponent as copyIcon } from '../../../assets/images/icons/copy.icon.svg';\nimport { ReactComponent as removeIcon } from '../../../assets/images/icons/remove.svg';\n\nexport interface IconProps {\n className?: string;\n}\n\nexport const makeIcon = (Icon: any, className?: string) => {\n return ;\n};\n\nexport const CopyIcon = ({ className }: IconProps) => {\n return makeIcon(copyIcon, className);\n};\n\nexport const RemoveIcon = ({ className }: IconProps) => {\n return makeIcon(removeIcon, className);\n};\n","import { ReactComponent as closeImage } from 'assets/images/icons/close.svg';\nimport { makeIcon, IconProps } from './icons';\n\nexport const CloseIcon = ({ className }: IconProps) => {\n return makeIcon(closeImage, className);\n};\n","import React, { useEffect, useMemo, useCallback } from 'react';\nimport { createPortal } from 'react-dom';\nimport usePortal from 'hooks/usePortal';\nimport useBodyScroll from 'hooks/useBodyScroll';\nimport useCurrentState from 'hooks/useCurrentState';\nimport Text from 'components/common/Text/Text';\nimport Backdrop from '../Backdrop/Backdrop';\nimport { ModalConfig, ModalContext } from './modal-context';\nimport CssTransition from '../CssTransition/CssTransition';\nimport { CloseIcon } from '../icons/CloseIcon';\n\ninterface Props {\n title?: React.ReactNode;\n description?: React.ReactNode;\n primaryButtonContent: React.ReactNode;\n secondaryButtonContent: React.ReactNode;\n disableBackdropClick?: boolean;\n onClose?: () => void;\n onOpen?: () => void;\n onPrimaryHandler?: () => void;\n onSecondaryHandler?: () => void;\n open?: boolean;\n width?: string;\n wrapClassName?: string;\n}\n\nconst defaultProps = {\n width: '26rem',\n wrapClassName: '',\n disableBackdropClick: false,\n};\n\ntype NativeAttrs = Omit, keyof Props>;\nexport type ModalProps = Props & typeof defaultProps & NativeAttrs;\n\nconst InfoModal: React.FC> = ({\n title,\n description,\n primaryButtonContent,\n secondaryButtonContent,\n disableBackdropClick,\n onClose,\n onOpen,\n onPrimaryHandler,\n onSecondaryHandler,\n open,\n}) => {\n const portal = usePortal('modal');\n const [, setBodyHidden] = useBodyScroll(null, { scrollLayer: true });\n const [visible, setVisible, visibleRef] = useCurrentState(false);\n\n const closeModal = useCallback(() => {\n if (onClose) {\n onClose();\n }\n setVisible(false);\n setBodyHidden(false);\n }, [onClose, setVisible, setBodyHidden]);\n\n useEffect(() => {\n if (open === undefined) return;\n if (open && onOpen) {\n onOpen();\n }\n if (!open && visibleRef.current && onClose) {\n onClose();\n }\n\n setVisible(open);\n setBodyHidden(open);\n }, [open]);\n\n const closeFromBackdrop = () => {\n if (disableBackdropClick) return;\n closeModal();\n };\n\n const primaryButtonClickHandler = () => {\n if (onPrimaryHandler) {\n onPrimaryHandler();\n }\n if (onClose) {\n onClose();\n }\n };\n\n const secondaryButtonClickHandler = () => {\n if (onSecondaryHandler) {\n onSecondaryHandler();\n }\n if (onClose) {\n onClose();\n }\n };\n\n const modalConfig: ModalConfig = useMemo(\n () => ({\n close: closeModal,\n }),\n [closeModal],\n );\n\n if (!portal) return null;\n\n return createPortal(\n \n \n \n \n
\n
{title}
\n \n {description}\n \n \n \n \n
\n\n \n
\n \n \n ,\n portal,\n );\n};\n\ntype ModalComponent = React.FC
;\ntype ComponentProps = Partial &\n Omit &\n NativeAttrs;\n\nInfoModal.defaultProps = defaultProps;\n\nexport default InfoModal as ModalComponent;\n","import React, { useState, useCallback } from 'react';\nimport { Form, Field } from 'react-final-form';\nimport InfoModal from 'components/common/InfoModal/InfoModal';\nimport cn from 'classnames';\nimport nodeApi from '../../../../../api/api';\nimport customToast from '../../../../../utils/toast';\nimport CopyToClipboard from '../../../../common/CopyToClipboard';\nimport constants from '../../../../../utils/constants';\n\ntype Errors = {\n recipientAddress?: string;\n amount?: string;\n fee?: string;\n asset?: string;\n assetAmount?: string;\n};\n\nconst PaymentSendForm = ({\n apiKey,\n walletBalanceData,\n getWalletBalance,\n explorerSubdomain,\n}: {\n apiKey: string;\n walletBalanceData: any;\n getWalletBalance: any;\n explorerSubdomain: string;\n}) => {\n const currentBalance = walletBalanceData?.balance;\n\n const [transactionId, setTransactionId] = useState(null);\n const [isSentModalOpen, setIsSentModalOpen] = useState(false);\n const [assetCheckbox, setAssetCheckbox] = useState(false);\n\n const paymentSend = useCallback(\n ({ recipientAddress, amount, fee, asset, assetAmount }) => {\n const request = {\n address: recipientAddress.trim(),\n value: Number((parseFloat(amount) * constants.nanoErgInErg).toFixed(1)),\n assets:\n assetCheckbox && asset !== 'none' && assetAmount > 0\n ? [{ tokenId: asset, amount: Number(assetAmount) }]\n : [],\n };\n return nodeApi.post(\n '/wallet/transaction/send',\n {\n requests: [request],\n fee: Number((parseFloat(fee) * constants.nanoErgInErg).toFixed(1)),\n },\n {\n headers: {\n api_key: apiKey,\n },\n },\n );\n },\n [assetCheckbox, apiKey],\n );\n\n const resetForm = (form: any) => {\n form.restart();\n setIsSentModalOpen(false);\n };\n\n const sendForm = useCallback(\n (values) => {\n if (values.recipientAddress.trim() === '' || !values.recipientAddress) {\n return;\n }\n\n paymentSend(values)\n .then(({ data }) => {\n setTransactionId(data);\n setIsSentModalOpen(true);\n getWalletBalance();\n })\n .catch((err) => {\n const errMessage = err.data ? err.data.detail : err.message;\n customToast('error', errMessage);\n });\n },\n [paymentSend, getWalletBalance],\n );\n\n const validateForm = useCallback(\n (values) => {\n const errors: Errors = {};\n\n const totalFeeAndAmount =\n (Number(values.amount) + Number(values.fee)) * constants.nanoErgInErg;\n\n if (!values.recipientAddress || values.recipientAddress?.trim() === '') {\n errors.recipientAddress = 'The field cannot be empty';\n }\n\n if (!values.fee || values.fee < 0.001) {\n errors.fee = 'Minimum 0.001 ERG';\n }\n\n if (values.asset === 'none') {\n errors.asset = 'You need to choose asset';\n }\n\n if (\n walletBalanceData &&\n values.assetAmount &&\n values.asset !== 'none' &&\n values.assetAmount > walletBalanceData.assets[values.asset]\n ) {\n errors.assetAmount = `Maximum ${walletBalanceData.assets[values.asset]}`;\n }\n\n if (assetCheckbox && !values.assetAmount) {\n errors.assetAmount = \"The field can't be empty\";\n }\n\n if (currentBalance < totalFeeAndAmount) {\n errors.amount = `Maximum ${Math.abs(\n currentBalance / constants.nanoErgInErg - Number(values.fee),\n )} ERG`;\n }\n if (values.amount < 0) {\n errors.amount = \"Amount can't be negative\";\n }\n\n if (currentBalance === 0) {\n errors.amount = 'Your balance is empty';\n }\n\n if (values.fee < 0) {\n errors.fee = \"Fee can't be negative\";\n }\n\n return errors;\n },\n [assetCheckbox, walletBalanceData, currentBalance],\n );\n\n return (\n \n
\n
Payment send
\n
\n\n
{\n setIsSentModalOpen(false);\n }}\n title=\"Payment sent\"\n description={\n <>\n \n Your payment has been sent successfully. The transaction ID is -{' '}\n {transactionId}\n
\n \n \n Click Here To Go To The Explorer\n \n
\n >\n }\n primaryButtonContent={OK}\n secondaryButtonContent=\"Send again\"\n onPrimaryHandler={() => resetForm(form)}\n />\n >\n );\n }}\n />\n \n
\n );\n};\n\nexport default PaymentSendForm;\n","import React, { useCallback, useState } from 'react';\nimport { Field, Form } from 'react-final-form';\n\nimport cn from 'classnames';\nimport InfoModal from 'components/common/InfoModal/InfoModal';\nimport CopyToClipboard from 'components/common/CopyToClipboard';\nimport customToast from 'utils/toast';\nimport nodeApi from 'api/api';\nimport constants from '../../../../../utils/constants';\n\ntype AssetIssueFormData = {\n name?: string;\n amount?: string;\n decimals?: string;\n description?: string;\n fee?: string;\n};\n\nconst AssetIssueForm = ({\n apiKey,\n getWalletBalance,\n explorerSubdomain,\n}: {\n apiKey: string;\n getWalletBalance: any;\n explorerSubdomain: string;\n}) => {\n const [transactionId, setTransactionId] = useState(null);\n const [isSentModalOpen, setIsSentModalOpen] = useState(false);\n const [assetAmount, setAssetAmount] = useState(null);\n const [assetName, setAssetName] = useState(null);\n\n const issueAsset = useCallback(\n ({ name, amount, decimals, description, fee }) => {\n setAssetAmount(amount);\n setAssetName(name);\n const request = {\n name,\n amount,\n decimals,\n description,\n };\n\n return nodeApi.post(\n '/wallet/transaction/send',\n {\n requests: [request],\n fee: Number((parseFloat(fee) * constants.nanoErgInErg).toFixed(1)),\n },\n {\n headers: {\n api_key: apiKey,\n },\n },\n );\n },\n [apiKey, setAssetAmount, setAssetName],\n );\n\n const submitForm = useCallback(\n (formData) => {\n return issueAsset(formData)\n .then(({ data }) => {\n const generatedTransactionId = data;\n setTransactionId(generatedTransactionId);\n setIsSentModalOpen(true);\n getWalletBalance();\n })\n .catch((err) => {\n const errMessage = err.data ? err.data.detail : err.message;\n customToast('error', errMessage);\n });\n },\n [issueAsset, getWalletBalance],\n );\n\n const resetForm = (form: any) => {\n form.restart();\n setIsSentModalOpen(false);\n };\n\n const validateForm = (values: AssetIssueFormData) => {\n const errors: AssetIssueFormData = {};\n\n if (!values.name) {\n errors.name = 'The field cannot be empty';\n }\n\n if (!values.amount) {\n errors.amount = 'The field cannot be empty';\n }\n\n if (!values.decimals) {\n errors.decimals = 'The field cannot be empty';\n }\n\n if (!values.description) {\n errors.description = 'The field cannot be empty';\n }\n\n if (!values.fee || Number(values.fee) < 0.001) {\n errors.fee = 'Minimum 0.001 ERG';\n }\n\n if (!Number.isInteger(Number(values.amount)) && values.amount) {\n errors.amount = 'Should be an integer';\n }\n\n if (!Number.isInteger(Number(values.decimals)) && values.decimals) {\n errors.decimals = 'Should be an integer';\n }\n\n if (Number(values.fee) < 0) {\n errors.fee = \"Fee can't be negative\";\n }\n\n return errors;\n };\n\n return (\n \n
Issue Tokens
\n
\n\n
{\n setIsSentModalOpen(false);\n }}\n title=\"Congratulations!\"\n description={\n <>\n \n {`You have successfully issued ${assetAmount} ${assetName} tokens! The transaction ID is\\n`}\n {transactionId}\n
\n \n \n Click Here To View Transaction\n \n
\n >\n }\n primaryButtonContent={OK}\n secondaryButtonContent=\"Send again\"\n onPrimaryHandler={() => resetForm(form)}\n />\n >\n );\n }}\n />\n \n );\n};\n\nexport default AssetIssueForm;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _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; }\n\nfunction _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; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.622,21.746l-6.749,6.75c-0.562,0.562-1.326,0.879-2.122,0.879s-1.56-0.316-2.121-0.879l-6.75-6.75 c-1.171-1.171-1.171-3.071,0-4.242c1.171-1.172,3.071-1.172,4.242,0l1.832,1.832C27.486,13.697,22.758,9.25,17,9.25 c-6.064,0-11,4.935-11,11c0,6.064,4.936,11,11,11c1.657,0,3,1.343,3,3s-1.343,3-3,3c-9.373,0-17-7.626-17-17s7.627-17,17-17 c8.936,0,16.266,6.933,16.936,15.698l1.442-1.444c1.172-1.172,3.072-1.172,4.242,0C40.792,18.674,40.792,20.574,39.622,21.746z\"\n}));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref9 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref10 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref11 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref12 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref13 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref14 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref15 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref16 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref17 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar SvgRedoArrowSymbol = function SvgRedoArrowSymbol(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n x: \"0px\",\n y: \"0px\",\n width: \"32px\",\n height: \"32px\",\n viewBox: \"0 0 40.499 40.5\",\n style: {\n enableBackground: \"new 0 0 40.499 40.5\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgRedoArrowSymbol, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/redo-arrow-symbol.e801de31.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactComponent as redoImage } from 'assets/images/icons/redo-arrow-symbol.svg';\nimport { makeIcon, IconProps } from './icons';\n\nexport const RedoIcon = ({ className }: IconProps) => {\n return makeIcon(redoImage, className);\n};\n","import React, { useState, useEffect, useCallback, useMemo } from 'react';\nimport cn from 'classnames';\nimport './index.scss';\nimport { connect } from 'react-redux';\nimport { RedoIcon } from 'components/common/icons/RedoIcon';\nimport constants from 'utils/constants';\nimport { RemoveIcon } from '../../../../common/icons/icons';\nimport {\n walletBalanceDataSelector,\n ergPriceSelector,\n walletAddressesSelector,\n} from '../../../../../store/selectors/wallet';\nimport { explorerSelector } from '../../../../../store/selectors/node';\nimport walletActions from '../../../../../store/actions/walletActions';\n\nconst WalletInformationTableItem = ({ name, value }: any) => {\n const [isOpen, setIsOpen] = useState(false);\n let resultTitle;\n let resultContent;\n\n if (Array.isArray(value)) {\n resultTitle = value.length;\n\n resultContent = (\n \n {value.map((item) => (\n
\n
\n {item.value || ''} {item.name || ''}\n
\n
\n
\n ))}\n
\n );\n } else {\n resultTitle = value;\n resultContent = value;\n }\n\n return (\n \n
\n {isOpen &&
{resultContent}
}\n
\n );\n};\n\nconst WalletInformationTable = (props: any) => {\n const {\n walletBalance,\n dispatchGetWalletBalance,\n dispatchGetErgPrice,\n dispatchGetWalletAddresses,\n walletAddresses,\n explorerSubdomain,\n } = props;\n\n const getValues = useCallback(() => {\n dispatchGetWalletBalance();\n dispatchGetErgPrice();\n dispatchGetWalletAddresses();\n }, [dispatchGetWalletBalance, dispatchGetErgPrice, dispatchGetWalletAddresses]);\n\n const getAddreses = useCallback((addresses: String[], subdomain: String) => {\n if (addresses.length === 0) {\n return 0;\n }\n\n return addresses.map((item) => ({\n value: (\n \n {item}\n \n ),\n }));\n }, []);\n\n const getAssets = useCallback((assets) => {\n if (Object.values(assets).length === 0) {\n return 0;\n }\n\n return Object.keys(assets).map((key) => ({\n name: {key},\n value: {assets[key]},\n }));\n }, []);\n\n useEffect(() => {\n getValues();\n }, [getValues]);\n\n const data = useMemo(\n () => [\n {\n name: 'Balance',\n value: walletBalance\n ? `${walletBalance.balance / constants.nanoErgInErg} ERG`\n : 'loading...',\n },\n // {\n // name: 'Balance in USD',\n // value: walletBalance\n // ? `$ ${(walletBalance.balance / constants.nanoErgInErg) * ergPrice}`\n // : 'Loading...',\n // },\n {\n name: 'Assets',\n value: walletBalance ? getAssets(walletBalance.assets) : `Loading...`,\n },\n {\n name: 'Addresses',\n value: walletAddresses ? getAddreses(walletAddresses, explorerSubdomain) : `Loading...`,\n },\n ],\n [walletBalance, getAssets, walletAddresses, getAddreses, explorerSubdomain],\n );\n\n const updateValues = useCallback(() => {\n getValues();\n }, [getValues]);\n\n return (\n \n
\n
\n Wallet Information{' '}\n \n
\n \n
\n {data.map(({ value, name }) => (\n \n ))}\n
\n
\n );\n};\n\nconst mapStateToProps = (state: any) => ({\n walletBalance: walletBalanceDataSelector(state),\n ergPrice: ergPriceSelector(state),\n walletAddresses: walletAddressesSelector(state),\n explorerSubdomain: explorerSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch: any) => ({\n dispatchGetWalletBalance: () => dispatch(walletActions.getWalletBalance()),\n dispatchGetErgPrice: () => dispatch(walletActions.getErgPrice()),\n dispatchGetWalletAddresses: () => dispatch(walletActions.getWalletAddresses()),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(WalletInformationTable);\n","import React, { Component, memo } from 'react';\nimport { connect } from 'react-redux';\nimport walletActions from 'store/actions/walletActions';\nimport PaymentSendForm from './components/PaymentSendForm/index';\nimport AssetIssueForm from './components/AssetIssueForm/index';\nimport { apiKeySelector } from '../../../store/selectors/app';\nimport { explorerSelector } from '../../../store/selectors/node';\nimport {\n isWalletInitializedSelector,\n isWalletUnlockedSelector,\n walletBalanceDataSelector,\n} from '../../../store/selectors/wallet';\nimport WalletInformationTable from './components/WalletInformationTable/index';\nimport './index.scss';\n\nconst mapStateToProps = (state) => ({\n apiKey: apiKeySelector(state),\n isWalletInitialized: isWalletInitializedSelector(state),\n isWalletUnlocked: isWalletUnlockedSelector(state),\n walletBalanceData: walletBalanceDataSelector(state),\n explorerSubdomain: explorerSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n dispatchGetWalletBalance: () => dispatch(walletActions.getWalletBalance()),\n});\n\nclass Wallet extends Component {\n renderState = (state) =>\n ({\n unlocked: (apiKey, walletBalanceData, getWalletBalance, explorerSubdomain) =>\n this.renderWalletUnlockedState(\n apiKey,\n walletBalanceData,\n getWalletBalance,\n explorerSubdomain,\n ),\n locked: () => this.renderWalletLockedState(),\n initialized: (apiKey) => this.renderInitializedState(apiKey),\n }[state]);\n\n renderWalletLockedState = () => (\n \n
The wallet UI is locked. You need to unlock the wallet to access its UI.
\n
\n );\n\n renderInitializedState = () => (\n \n
You need to initialize your wallet to access wallet UI.
\n
\n );\n\n renderWalletUnlockedState = (\n apiKey,\n walletBalanceData,\n dispatchGetWalletBalance,\n explorerSubdomain,\n ) => (\n \n );\n\n render() {\n const {\n apiKey,\n isWalletUnlocked,\n isWalletInitialized,\n walletBalanceData,\n dispatchGetWalletBalance,\n explorerSubdomain,\n } = this.props;\n\n if (apiKey === '') {\n return (\n \n
To continue, please set your API key.
\n
\n );\n }\n\n if (!isWalletInitialized) {\n return this.renderState('initialized')(apiKey);\n }\n\n if (isWalletUnlocked) {\n return this.renderState('unlocked')(\n apiKey,\n walletBalanceData,\n dispatchGetWalletBalance,\n explorerSubdomain,\n );\n }\n\n return this.renderState('locked')();\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(memo(Wallet));\n","import React, { memo, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { BrowserRouter, Switch, Route } from 'react-router-dom';\nimport nodeActions from 'store/actions/nodeActions';\nimport { Layout } from '../components/layout';\nimport Dashboard from '../components/pages/Dashboard';\nimport Wallet from '../components/pages/Wallet';\n\nconst mapDispatchToProps = (dispatch) => ({\n dispatchGetNetwork: () => dispatch(nodeActions.getNetwork()),\n});\n\nconst Router = (props) => {\n const { dispatchGetNetwork } = props;\n\n useEffect(() => {\n dispatchGetNetwork();\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default connect(null, mapDispatchToProps)(memo(Router));\n","import { combineReducers } from 'redux';\nimport appSlice from '../slices/appSlice';\nimport nodeSlice from '../slices/nodeSlice';\nimport walletSlice from '../slices/walletSlice';\n\nexport default combineReducers({\n app: appSlice.reducer,\n node: nodeSlice.reducer,\n wallet: walletSlice.reducer,\n});\n","// import Axios from 'axios';\nimport walletActions from '../actions/walletActions';\nimport nodeApi from '../../api/api';\nimport { apiKeySelector } from '../selectors/app';\n// import oracleApi from '../../api/oracleApi';\n\nexport default (store) => (next) => (action) => {\n const { dispatch, getState } = store;\n const apiKey = apiKeySelector(getState());\n\n switch (action.type) {\n case walletActions.checkWalletStatus.type:\n nodeApi\n .get('/wallet/status', {\n headers: {\n api_key: apiKey,\n },\n })\n .then(({ data: walletData }) => {\n dispatch(walletActions.setIsWalletUnlocked(walletData.isUnlocked));\n dispatch(walletActions.setIsWalletInitialized(walletData.isInitialized));\n dispatch(walletActions.setWalletStatusData(walletData));\n })\n .catch(() => {});\n\n break;\n\n case walletActions.getWalletBalance.type:\n nodeApi\n .get('/wallet/balances', {\n headers: {\n api_key: apiKey,\n },\n })\n .then(({ data: walletData }) => {\n dispatch(walletActions.setWalletBalanceData(walletData));\n })\n .catch(() => {});\n\n break;\n\n // case walletActions.getErgPrice.type:\n // oracleApi\n // .get('/frontendData', {\n // transformResponse: [...Axios.defaults.transformResponse, (data) => JSON.parse(data)],\n // })\n // .then(({ data }) => {\n // dispatch(walletActions.setErgPrice(data.latest_price));\n // })\n // .catch(() => {});\n\n // break;\n\n case walletActions.getWalletAddresses.type:\n nodeApi\n .get('/wallet/addresses', {\n headers: {\n api_key: apiKey,\n },\n })\n .then(({ data: walletAddresses }) => {\n dispatch(walletActions.setWalletAddresses(walletAddresses));\n })\n .catch(() => {});\n\n break;\n\n default:\n break;\n }\n next(action);\n};\n","// import Axios from 'axios';\nimport nodeActions from '../actions/nodeActions';\nimport nodeApi from '../../api/api';\n\nexport default (store) => (next) => (action) => {\n const { dispatch } = store;\n\n switch (action.type) {\n case nodeActions.getNetwork.type:\n nodeApi\n .get('/info', {})\n .then(({ data: nodeData }) => {\n dispatch(nodeActions.setNetwork(nodeData.network));\n })\n .catch(() => {});\n\n break;\n\n default:\n break;\n }\n next(action);\n};\n","import React from 'react';\nimport { toast } from 'react-toastify';\nimport { Provider } from 'react-redux';\nimport Router from './router/router';\nimport createStore from './store';\n\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport './assets/styles/index.scss';\nimport 'react-toastify/dist/ReactToastify.min.css';\n\ntoast.configure();\nconst store = createStore();\n\nconst App = () => {\n return (\n \n \n \n );\n};\n\nexport default App;\n","import { configureStore, getDefaultMiddleware } from 'redux-starter-kit';\nimport rootReducer from './reducers/rootReducer';\nimport walletMiddleware from './middlewares/walletMiddleware';\nimport nodeMiddleware from './middlewares/nodeMiddleware';\n\nexport default () => {\n const store = configureStore({\n reducer: rootReducer,\n middleware: [...getDefaultMiddleware(), walletMiddleware, nodeMiddleware],\n });\n\n return store;\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\n\nReactDOM.render(, document.getElementById('root'));\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"backdrop\":\"Backdrop_backdrop__PmdBI\",\"content\":\"Backdrop_content__2Kmrw\",\"layer\":\"Backdrop_layer__3V2YH\"};","module.exports = __webpack_public_path__ + \"static/media/logotype_white.4dcfd639.svg\";"],"sourceRoot":""}
\ No newline at end of file