All files / src/components/ui/buttons ZoomButton.tsx

0% Statements 0/12
0% Branches 0/14
0% Functions 0/4
0% Lines 0/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64                                                                                                                               
import React from "react";
import {
  StyledZoomButton,
  StyledZoomInnerButton,
  StyledZoomLabel,
} from "ui/buttons/style";
import { MinusIcon, PlusIcon } from "ui/icons/Icons";
 
export interface ZoomButtonProps {
  readonly zoom: number;
  readonly size?: "small" | "medium";
  readonly variant?: "normal" | "transparent";
  readonly title?: string;
  readonly titleIn?: string;
  readonly titleOut?: string;
  readonly onZoomIn?: () => void;
  readonly onZoomOut?: () => void;
  readonly onZoomReset?: () => void;
}
 
export const ZoomButton: React.FC<ZoomButtonProps> = ({
  zoom = 100,
  title,
  titleIn,
  titleOut,
  onZoomIn,
  onZoomOut,
  onZoomReset,
  size = "medium",
  variant,
}) => (
  <StyledZoomButton
    title={title}
    onClick={(event) => {
      event.stopPropagation();
      onZoomReset?.();
    }}
  >
    <StyledZoomInnerButton
      title={titleOut}
      $pin="left"
      onClick={(event) => {
        event.stopPropagation();
        onZoomOut?.();
      }}
    >
      <MinusIcon />
    </StyledZoomInnerButton>
    <StyledZoomLabel $size={size} $variant={variant}>
      {zoom}%
    </StyledZoomLabel>
    <StyledZoomInnerButton
      title={titleIn}
      $pin="right"
      onClick={(event) => {
        event.stopPropagation();
        onZoomIn?.();
      }}
    >
      <PlusIcon />
    </StyledZoomInnerButton>
  </StyledZoomButton>
);