@anaralabs/lector 3.12.6 → 3.12.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +57 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -999,7 +999,12 @@ var defaultAnnotationLayerParams = {
999
999
  var useAnnotationLayer = (params) => {
1000
1000
  const mergedParams = useMemo(() => {
1001
1001
  return { ...defaultAnnotationLayerParams, ...params };
1002
- }, [params]);
1002
+ }, [
1003
+ params.renderForms,
1004
+ params.externalLinksEnabled,
1005
+ params.jumpOptions?.behavior,
1006
+ params.jumpOptions?.align
1007
+ ]);
1003
1008
  const annotationLayerRef = useRef(null);
1004
1009
  const annotationLayerObjectRef = useRef(null);
1005
1010
  const linkService = usePDFLinkService();
@@ -2663,11 +2668,13 @@ var createTextSelectionManager = () => {
2663
2668
  };
2664
2669
  var bindMouseEvents = createTextSelectionManager();
2665
2670
  var TEXT_BUILD_IDLE_MS = 300;
2671
+ var TEXT_SCROLL_SETTLE_MS = 160;
2666
2672
  var useTextLayer = () => {
2667
2673
  const textContainerRef = useRef(null);
2668
2674
  const textLayerRef = useRef(null);
2669
2675
  const pageNumber = usePDFPageNumber();
2670
2676
  const pdfPageProxy = usePdf((state) => state.getPdfPageProxy(pageNumber));
2677
+ const viewportRef = usePdf((state) => state.viewportRef);
2671
2678
  useEffect(() => {
2672
2679
  const textContainer = textContainerRef.current;
2673
2680
  if (!textContainer) {
@@ -2717,6 +2724,55 @@ var useTextLayer = () => {
2717
2724
  }
2718
2725
  };
2719
2726
  }, [pdfPageProxy.streamTextContent, pdfPageProxy.getViewport]);
2727
+ useEffect(() => {
2728
+ const textContainer = textContainerRef.current;
2729
+ const viewport = viewportRef?.current;
2730
+ if (!textContainer || !viewport) return;
2731
+ let settleTimer = null;
2732
+ let pointerDown = false;
2733
+ let selecting = false;
2734
+ const show = () => {
2735
+ textContainer.style.visibility = "";
2736
+ };
2737
+ const onScroll = () => {
2738
+ if (selecting) return;
2739
+ textContainer.style.visibility = "hidden";
2740
+ if (settleTimer) clearTimeout(settleTimer);
2741
+ settleTimer = setTimeout(show, TEXT_SCROLL_SETTLE_MS);
2742
+ };
2743
+ const onPointerDown = () => {
2744
+ pointerDown = true;
2745
+ selecting = false;
2746
+ if (settleTimer) {
2747
+ clearTimeout(settleTimer);
2748
+ settleTimer = null;
2749
+ }
2750
+ show();
2751
+ };
2752
+ const onSelectionChange = () => {
2753
+ if (pointerDown) selecting = true;
2754
+ };
2755
+ const clearPointer = () => {
2756
+ pointerDown = false;
2757
+ selecting = false;
2758
+ };
2759
+ const unsubscribe = subscribeToViewportInvalidation(viewport, onScroll);
2760
+ document.addEventListener("pointerdown", onPointerDown, true);
2761
+ document.addEventListener("pointerup", clearPointer, true);
2762
+ document.addEventListener("pointercancel", clearPointer, true);
2763
+ document.addEventListener("selectionchange", onSelectionChange);
2764
+ window.addEventListener("blur", clearPointer);
2765
+ return () => {
2766
+ unsubscribe();
2767
+ document.removeEventListener("pointerdown", onPointerDown, true);
2768
+ document.removeEventListener("pointerup", clearPointer, true);
2769
+ document.removeEventListener("pointercancel", clearPointer, true);
2770
+ document.removeEventListener("selectionchange", onSelectionChange);
2771
+ window.removeEventListener("blur", clearPointer);
2772
+ if (settleTimer) clearTimeout(settleTimer);
2773
+ show();
2774
+ };
2775
+ }, [viewportRef]);
2720
2776
  return {
2721
2777
  textContainerRef,
2722
2778
  pageNumber: pdfPageProxy.pageNumber
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anaralabs/lector",
3
- "version": "3.12.6",
3
+ "version": "3.12.8",
4
4
  "description": "A headless PDF viewer for React",
5
5
  "author": "andrewdr (https://github.com/andrewdoro)",
6
6
  "license": "MIT",