import React, { Component } from 'react'; import PropTypes from 'prop-types'; import AnnotationHelpers from '../helpers'; export default class LineDrawComponent extends Component { shouldComponentUpdate(nextProps) { return this.props.version !== nextProps.version; } getCoordinates() { const { slideWidth, slideHeight } = this.props; const { points } = this.props.annotation; const x1 = (points[0] / 100) * slideWidth; const y1 = (points[1] / 100) * slideHeight; const x2 = (points[2] / 100) * slideWidth; const y2 = (points[3] / 100) * slideHeight; return { x1, y1, x2, y2, }; } render() { const results = this.getCoordinates(); const { annotation, slideWidth } = this.props; const { x1, y1, x2, y2 } = results; return ( ); } } LineDrawComponent.propTypes = { // Defines a version of the shape, so that we know if we need to update the component or not version: PropTypes.number.isRequired, // Defines an annotation object, which contains all the basic info we need to draw a line annotation: PropTypes.shape({ points: PropTypes.arrayOf(PropTypes.number).isRequired, color: PropTypes.number.isRequired, thickness: PropTypes.number.isRequired, }).isRequired, // Defines the width of the slide (svg coordinate system), which needed in calculations slideWidth: PropTypes.number.isRequired, // Defines the height of the slide (svg coordinate system), which needed in calculations slideHeight: PropTypes.number.isRequired, };