import React from 'react';
import PropTypes from 'prop-types';
import './style.scss';

const currencySigns = {
    USD: '$',
    EUR: '€',
    RUB: '₽',
    BYR: 'BYR',
    CHF: 'CHF',
    CZK: 'Kč',
    GBP: '£',
    JPY: '¥',
    LVL: 'LVL',
    SEK: 'kr',
    SGD: 'S$',
    UAH: 'UAH',
    CAD: 'C$',
    AUD: 'AU$',
    KRW: '₩',
    PLN: 'zł',
};

function formatValue(value, decimalPosition) {
    return value.toFixed(decimalPosition).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');
}

const Currency = ({value, currencyCode, decimalPosition}) => {
    const currencySign = currencySigns[currencyCode.toUpperCase()];

    return (
        <span className="Currency">
            <span className="Currency__sign">{currencySign}</span> {formatValue(value, decimalPosition)}
        </span>
    );
};

Currency.propTypes = {
    value: PropTypes.number.isRequired,
    currencyCode: PropTypes.string,
    decimalPosition: PropTypes.number,
};

Currency.defaultProps = {
    currencyCode: 'USD',
    decimalPosition: 2,
};

export default Currency;
