index.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /* eslint-disable @typescript-eslint/camelcase */
  2. import React from 'react';
  3. import { AnnotationType } from '../../constants/type';
  4. import AnnotationSelector from '../AnnotationSelector';
  5. import {
  6. Markup, Popper,
  7. } from './styled';
  8. type Props = AnnotationType & {
  9. isCovered: boolean;
  10. isCollapse: boolean;
  11. mousePosition: Record<string, any>;
  12. onUpdate: (data: any) => void;
  13. onDelete: () => void;
  14. scale: number;
  15. };
  16. const Annotation: React.FunctionComponent<Props> = ({
  17. obj_type,
  18. obj_attr,
  19. isCovered,
  20. mousePosition,
  21. isCollapse,
  22. onUpdate,
  23. onDelete,
  24. scale,
  25. }: any) => {
  26. const {
  27. page, position, bdcolor, transparency,
  28. } = obj_attr;
  29. return (
  30. <>
  31. {
  32. position.map((ele: any, index: number) => (
  33. <Markup
  34. key={`block_${page + index}`}
  35. position={ele}
  36. scale={scale}
  37. bdcolor={bdcolor}
  38. opacity={transparency}
  39. markupType={obj_type}
  40. isCovered={isCovered}
  41. />
  42. ))
  43. }
  44. {
  45. !isCollapse ? (
  46. <Popper position={mousePosition}>
  47. <AnnotationSelector
  48. onUpdate={onUpdate}
  49. onDelete={onDelete}
  50. />
  51. </Popper>
  52. ) : ''
  53. }
  54. </>
  55. );
  56. };
  57. export default Annotation;