import React from 'react';
import PropTypes from 'prop-types';
import { pour } from 'sigil-js';
import * as ob from 'urbit-ob';
import ReactSVGComponents from '../ReactSVGComponents';
const isValidPatp = patp => {
let isValid = false;
try {
isValid = ob.isValidPatp(patp);
} catch (err) {
return isValid;
}
return isValid;
};
const ValidatedSigil = ({
className,
children,
style,
color,
patp,
size,
margin,
displayPass,
displayFailure,
focussed,
beenFocussed,
}) => {
const colorStyle = styleSelector(displayPass, displayFailure, focussed);
return (
{isValidPatp(patp) ? (
pour({
patp: patp,
renderer: ReactSVGComponents,
size: size,
colorway: colorStyle,
margin: margin,
})
) : (
)}
{children}
);
};
const styleSelector = (pass, fail, focus) => {
if (fail === true) return ['#FFFFFF', '#F8C134'];
if (pass === true) return ['#FFFFFF', '#2AA779'];
if (focus === true) return ['#FFFFFF', '#4330FC'];
return ['#FFFFFF', '#7F7F7F'];
};
ValidatedSigil.propTypes = {
className: PropTypes.string,
children: PropTypes.node,
style: PropTypes.object,
};
ValidatedSigil.defaultProps = {
className: '',
style: {},
};
export default ValidatedSigil;