@anaralabs/lector 3.12.7 → 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.
- package/dist/index.js +51 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2668,11 +2668,13 @@ var createTextSelectionManager = () => {
|
|
|
2668
2668
|
};
|
|
2669
2669
|
var bindMouseEvents = createTextSelectionManager();
|
|
2670
2670
|
var TEXT_BUILD_IDLE_MS = 300;
|
|
2671
|
+
var TEXT_SCROLL_SETTLE_MS = 160;
|
|
2671
2672
|
var useTextLayer = () => {
|
|
2672
2673
|
const textContainerRef = useRef(null);
|
|
2673
2674
|
const textLayerRef = useRef(null);
|
|
2674
2675
|
const pageNumber = usePDFPageNumber();
|
|
2675
2676
|
const pdfPageProxy = usePdf((state) => state.getPdfPageProxy(pageNumber));
|
|
2677
|
+
const viewportRef = usePdf((state) => state.viewportRef);
|
|
2676
2678
|
useEffect(() => {
|
|
2677
2679
|
const textContainer = textContainerRef.current;
|
|
2678
2680
|
if (!textContainer) {
|
|
@@ -2722,6 +2724,55 @@ var useTextLayer = () => {
|
|
|
2722
2724
|
}
|
|
2723
2725
|
};
|
|
2724
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]);
|
|
2725
2776
|
return {
|
|
2726
2777
|
textContainerRef,
|
|
2727
2778
|
pageNumber: pdfPageProxy.pageNumber
|