@koi-br/ocr-web-sdk 1.0.36 → 1.0.37

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.
@@ -1,4 +1,4 @@
1
- import { g as getAugmentedNamespace, a as getDefaultExportFromCjs } from "./index-BK8otfpE.mjs";
1
+ import { g as getAugmentedNamespace, a as getDefaultExportFromCjs } from "./index-Dq2fZsJv.mjs";
2
2
  function _mergeNamespaces(U, W) {
3
3
  for (var Z = 0; Z < W.length; Z++) {
4
4
  const s0 = W[Z];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koi-br/ocr-web-sdk",
3
- "version": "1.0.36",
3
+ "version": "1.0.37",
4
4
  "description": "一个支持多种Office文件格式预览的Vue3组件SDK,包括PDF、Word、Excel、图片、OFD、TIF等格式",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -841,10 +841,18 @@ const switchToPage = (page: number) => {
841
841
  `[data-page-number="${page}"]`
842
842
  ) as HTMLElement;
843
843
  if (pageElement) {
844
+ // 标记这是翻页滚动,不应该被同步滚动干扰
845
+ containerRef.value.dataset.pageScrolling = 'true';
844
846
  pageElement.scrollIntoView({ behavior: "smooth", block: "start" });
845
847
  // 更新 lastScrollTop,确保滚动方向判断准确
846
848
  nextTick(() => {
847
849
  lastScrollTop = containerRef.value?.scrollTop || 0;
850
+ // 延迟清除标记,确保滚动完成
851
+ setTimeout(() => {
852
+ if (containerRef.value) {
853
+ delete containerRef.value.dataset.pageScrolling;
854
+ }
855
+ }, 500); // scrollIntoView 的 smooth 动画通常需要 300-500ms
848
856
  });
849
857
  }
850
858
  }
@@ -1840,6 +1848,33 @@ const saveAnnotation = () => {
1840
1848
  * 处理滚动事件(隐藏批注按钮和文本块高亮,以及滚动翻页)
1841
1849
  */
1842
1850
  const handleScroll = (e: Event) => {
1851
+ const container = e.target as HTMLElement;
1852
+
1853
+ // 检查是否是同步滚动触发的
1854
+ const isSyncing = container?.dataset?.syncingScroll === 'true';
1855
+ if (isSyncing) {
1856
+ // 即使是被同步滚动触发的,也应该立即更新页码(但不触发翻页动画)
1857
+ // 使用 requestAnimationFrame 确保在浏览器渲染后立即更新
1858
+ if (
1859
+ props.enableScrollPaging &&
1860
+ totalPages.value > 1 &&
1861
+ !isScrollPaging.value
1862
+ ) {
1863
+ // 立即更新页码,不等待防抖
1864
+ requestAnimationFrame(() => {
1865
+ updateCurrentPageFromScroll();
1866
+ // 清除标记(在页码更新后)
1867
+ delete container.dataset.syncingScroll;
1868
+ });
1869
+ } else {
1870
+ // 如果没有启用滚动翻页,立即清除标记
1871
+ delete container.dataset.syncingScroll;
1872
+ }
1873
+
1874
+ // 同步滚动时,不执行其他逻辑(如隐藏批注按钮等)
1875
+ return;
1876
+ }
1877
+
1843
1878
  if (hideTimer) {
1844
1879
  clearTimeout(hideTimer);
1845
1880
  }
@@ -1861,16 +1896,22 @@ const handleScroll = (e: Event) => {
1861
1896
  scale.value = initialAutoFitScale.value;
1862
1897
  }
1863
1898
 
1864
- // 滚动翻页功能
1899
+ // 滚动翻页功能(用户主动滚动时)
1865
1900
  if (
1866
1901
  props.enableScrollPaging &&
1867
1902
  totalPages.value > 1 &&
1868
1903
  !isScrollPaging.value
1869
1904
  ) {
1905
+ // 立即更新页码(使用 requestAnimationFrame 确保在渲染后更新)
1906
+ requestAnimationFrame(() => {
1907
+ updateCurrentPageFromScroll();
1908
+ });
1909
+ // 同时使用防抖处理其他逻辑(如事件触发)
1870
1910
  handleScrollPaging(e);
1871
1911
  }
1872
1912
  };
1873
1913
 
1914
+
1874
1915
  // 记录上次滚动位置,用于判断滚动方向
1875
1916
  let lastScrollTop = 0;
1876
1917
 
@@ -1939,6 +1980,7 @@ const handleScrollPaging = (e: Event) => {
1939
1980
  }
1940
1981
 
1941
1982
  // 使用防抖,避免频繁触发
1983
+ // 减少延迟到50ms,提高响应速度
1942
1984
  scrollPagingTimer = setTimeout(() => {
1943
1985
  // 再次检查是否正在翻页
1944
1986
  if (isScrollPaging.value) {
@@ -1947,7 +1989,7 @@ const handleScrollPaging = (e: Event) => {
1947
1989
 
1948
1990
  // 更新当前页码(基于视口中心最近的页面)
1949
1991
  updateCurrentPageFromScroll();
1950
- }, 100);
1992
+ }, 50);
1951
1993
  };
1952
1994
 
1953
1995
  /**