Disable Resize of Annotations

Q: How do I disable resizing of certain annotation types?

A: Here’s how you would disable resizing of an ink signature:

// Customize PSPDFKit.Options here

PSPDFKit.load({
  container: "#container",
  pdf: "./assets/example.pdf",
  licenseKey: ""
}).then(instance => {
  let isInkSignatureSelected = false;
  let draggingInkSignature = false;
  let resizingInkSignature = false;

  instance.addEventListener(
    "annotations.press",
    event => {
      isInkSignatureSelected =
        event.annotation instanceof PSPDFKit.Annotations.InkAnnotation &&
        event.annotation.isSignature;

      if (!isInkSignatureSelected) {
        draggingInkSignature = false;
        resizingInkSignature = false;
        return;
      }

      const { nativeEvent } = event;
      let target = nativeEvent.target;
      if (target.matches(".PSPDFKit-Resize-Anchor")) {
        // ".PSPDFKit-Resize-Anchor" is present on our internal resize handle
        resizingInkSignature = true;
        draggingInkSignature = false;
        instance.contentDocument.addEventListener(
          "pointerup",
          () => {
            resizingInkSignature = false;
          },
          { capture: true, once: true }
        );
      } else if (target.matches(".PSPDFKit-Selection-Outline-Border")) {
        // ".PSPDFKit-Selection-Outline-Border" is present on our internal drag handle
        draggingInkSignature = true;
        instance.contentDocument.addEventListener(
          "pointerup",
          () => {
            draggingInkSignature = false;
          },
          { capture: true, once: true }
        );
      } else {
        draggingInkSignature = false;
      }
    },
    true
  );

  instance.contentDocument.addEventListener(
    "pointermove",
    event => {
      if (resizingInkSignature) {
        // avoid running computation is not needed
        event.stopImmediatePropagation();
      } else {
        if (draggingInkSignature) {
          return;
        }
        let target = event.target;
        const annotation = instance.getSelectedAnnotation();
        const isInkSignatureSelected =
          annotation &&
          annotation instanceof PSPDFKit.Annotations.InkAnnotation;
        if (
          !draggingInkSignature &&
          isInkSignatureSelected &&
          target.matches(".PSPDFKit-Selection-Outline-Border")
        ) {
          draggingInkSignature = true;
          event.stopImmediatePropagation();
        }
      }
    },
    { capture: true }
  );
});