index.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import React from 'react';
  2. import AnnotationSelector from '../AnnotationSelector';
  3. import Markup from '../Markup';
  4. import { rectCalc } from '../../helpers/position';
  5. import { Popper } from './styled';
  6. const Highlight: React.SFC<AnnotationElementPropsType> = ({
  7. obj_type,
  8. obj_attr: { page, position, bdcolor, transparency },
  9. isCovered,
  10. mousePosition,
  11. isCollapse,
  12. onUpdate,
  13. onDelete,
  14. scale,
  15. viewport,
  16. }: AnnotationElementPropsType) => (
  17. <>
  18. {Array.isArray(position) &&
  19. position.map((ele: any, index: number) => {
  20. const annotRect = rectCalc(ele, viewport.height, scale);
  21. return (
  22. <Markup
  23. key={`block_${page + index}`}
  24. position={{
  25. top: `${annotRect.top.toFixed(2)}px`,
  26. left: `${annotRect.left.toFixed(2)}px`,
  27. width: `${annotRect.width.toFixed(2)}px`,
  28. height: `${annotRect.height.toFixed(2)}px`,
  29. }}
  30. bdcolor={bdcolor || ''}
  31. opacity={transparency || 0}
  32. markupType={obj_type}
  33. isCovered={isCovered}
  34. />
  35. );
  36. })}
  37. {!isCollapse ? (
  38. <Popper position={mousePosition}>
  39. <AnnotationSelector
  40. onUpdate={onUpdate}
  41. onDelete={onDelete}
  42. colorProps={bdcolor}
  43. opacityProps={transparency ? transparency * 100 : 0}
  44. />
  45. </Popper>
  46. ) : (
  47. ''
  48. )}
  49. </>
  50. );
  51. export default Highlight;