@docmentis/udoc-viewer 0.6.25 → 0.6.27

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 (111) hide show
  1. package/README.md +9 -0
  2. package/dist/package.json +1 -1
  3. package/dist/src/UDocClient.d.ts +9 -2
  4. package/dist/src/UDocClient.d.ts.map +1 -1
  5. package/dist/src/UDocClient.js +6 -5
  6. package/dist/src/UDocClient.js.map +1 -1
  7. package/dist/src/UDocViewer.d.ts +12 -2
  8. package/dist/src/UDocViewer.d.ts.map +1 -1
  9. package/dist/src/UDocViewer.js +21 -3
  10. package/dist/src/UDocViewer.js.map +1 -1
  11. package/dist/src/index.d.ts +1 -1
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/ui/viewer/actions.d.ts +8 -1
  14. package/dist/src/ui/viewer/actions.d.ts.map +1 -1
  15. package/dist/src/ui/viewer/components/FloatingToolbar.d.ts.map +1 -1
  16. package/dist/src/ui/viewer/components/FloatingToolbar.js +46 -0
  17. package/dist/src/ui/viewer/components/FloatingToolbar.js.map +1 -1
  18. package/dist/src/ui/viewer/components/Spread.d.ts +9 -0
  19. package/dist/src/ui/viewer/components/Spread.d.ts.map +1 -1
  20. package/dist/src/ui/viewer/components/Spread.js +94 -9
  21. package/dist/src/ui/viewer/components/Spread.js.map +1 -1
  22. package/dist/src/ui/viewer/components/SubToolbar.d.ts.map +1 -1
  23. package/dist/src/ui/viewer/components/SubToolbar.js +9 -1
  24. package/dist/src/ui/viewer/components/SubToolbar.js.map +1 -1
  25. package/dist/src/ui/viewer/components/ViewModeMenu.d.ts.map +1 -1
  26. package/dist/src/ui/viewer/components/ViewModeMenu.js +18 -6
  27. package/dist/src/ui/viewer/components/ViewModeMenu.js.map +1 -1
  28. package/dist/src/ui/viewer/components/Viewport.d.ts.map +1 -1
  29. package/dist/src/ui/viewer/components/Viewport.js +141 -42
  30. package/dist/src/ui/viewer/components/Viewport.js.map +1 -1
  31. package/dist/src/ui/viewer/i18n/ar.d.ts.map +1 -1
  32. package/dist/src/ui/viewer/i18n/ar.js +3 -0
  33. package/dist/src/ui/viewer/i18n/ar.js.map +1 -1
  34. package/dist/src/ui/viewer/i18n/de.d.ts.map +1 -1
  35. package/dist/src/ui/viewer/i18n/de.js +3 -0
  36. package/dist/src/ui/viewer/i18n/de.js.map +1 -1
  37. package/dist/src/ui/viewer/i18n/en.d.ts.map +1 -1
  38. package/dist/src/ui/viewer/i18n/en.js +3 -0
  39. package/dist/src/ui/viewer/i18n/en.js.map +1 -1
  40. package/dist/src/ui/viewer/i18n/es.d.ts.map +1 -1
  41. package/dist/src/ui/viewer/i18n/es.js +3 -0
  42. package/dist/src/ui/viewer/i18n/es.js.map +1 -1
  43. package/dist/src/ui/viewer/i18n/fr.d.ts.map +1 -1
  44. package/dist/src/ui/viewer/i18n/fr.js +3 -0
  45. package/dist/src/ui/viewer/i18n/fr.js.map +1 -1
  46. package/dist/src/ui/viewer/i18n/ja.d.ts.map +1 -1
  47. package/dist/src/ui/viewer/i18n/ja.js +3 -0
  48. package/dist/src/ui/viewer/i18n/ja.js.map +1 -1
  49. package/dist/src/ui/viewer/i18n/ko.d.ts.map +1 -1
  50. package/dist/src/ui/viewer/i18n/ko.js +3 -0
  51. package/dist/src/ui/viewer/i18n/ko.js.map +1 -1
  52. package/dist/src/ui/viewer/i18n/pt-BR.d.ts.map +1 -1
  53. package/dist/src/ui/viewer/i18n/pt-BR.js +3 -0
  54. package/dist/src/ui/viewer/i18n/pt-BR.js.map +1 -1
  55. package/dist/src/ui/viewer/i18n/ru.d.ts.map +1 -1
  56. package/dist/src/ui/viewer/i18n/ru.js +3 -0
  57. package/dist/src/ui/viewer/i18n/ru.js.map +1 -1
  58. package/dist/src/ui/viewer/i18n/types.d.ts +3 -0
  59. package/dist/src/ui/viewer/i18n/types.d.ts.map +1 -1
  60. package/dist/src/ui/viewer/i18n/zh-CN.d.ts.map +1 -1
  61. package/dist/src/ui/viewer/i18n/zh-CN.js +3 -0
  62. package/dist/src/ui/viewer/i18n/zh-CN.js.map +1 -1
  63. package/dist/src/ui/viewer/i18n/zh-TW.d.ts.map +1 -1
  64. package/dist/src/ui/viewer/i18n/zh-TW.js +3 -0
  65. package/dist/src/ui/viewer/i18n/zh-TW.js.map +1 -1
  66. package/dist/src/ui/viewer/icons.d.ts +2 -0
  67. package/dist/src/ui/viewer/icons.d.ts.map +1 -1
  68. package/dist/src/ui/viewer/icons.js +5 -0
  69. package/dist/src/ui/viewer/icons.js.map +1 -1
  70. package/dist/src/ui/viewer/layout/spreadLayout.d.ts +73 -0
  71. package/dist/src/ui/viewer/layout/spreadLayout.d.ts.map +1 -1
  72. package/dist/src/ui/viewer/layout/spreadLayout.js +230 -0
  73. package/dist/src/ui/viewer/layout/spreadLayout.js.map +1 -1
  74. package/dist/src/ui/viewer/reducer.d.ts.map +1 -1
  75. package/dist/src/ui/viewer/reducer.js +35 -2
  76. package/dist/src/ui/viewer/reducer.js.map +1 -1
  77. package/dist/src/ui/viewer/shell.d.ts +1 -1
  78. package/dist/src/ui/viewer/shell.d.ts.map +1 -1
  79. package/dist/src/ui/viewer/shell.js +4 -4
  80. package/dist/src/ui/viewer/shell.js.map +1 -1
  81. package/dist/src/ui/viewer/state.d.ts +16 -0
  82. package/dist/src/ui/viewer/state.d.ts.map +1 -1
  83. package/dist/src/ui/viewer/state.js +12 -2
  84. package/dist/src/ui/viewer/state.js.map +1 -1
  85. package/dist/src/ui/viewer/styles-inline.d.ts +1 -1
  86. package/dist/src/ui/viewer/styles-inline.d.ts.map +1 -1
  87. package/dist/src/ui/viewer/styles-inline.js +85 -0
  88. package/dist/src/ui/viewer/styles-inline.js.map +1 -1
  89. package/dist/src/ui/viewer/tools/AnnotationDrawController.d.ts.map +1 -1
  90. package/dist/src/ui/viewer/tools/AnnotationDrawController.js +13 -5
  91. package/dist/src/ui/viewer/tools/AnnotationDrawController.js.map +1 -1
  92. package/dist/src/ui/viewer/tools/ViewToolController.d.ts.map +1 -1
  93. package/dist/src/ui/viewer/tools/ViewToolController.js +11 -26
  94. package/dist/src/ui/viewer/tools/ViewToolController.js.map +1 -1
  95. package/dist/src/ui/viewer/transition-gl.d.ts +25 -0
  96. package/dist/src/ui/viewer/transition-gl.d.ts.map +1 -0
  97. package/dist/src/ui/viewer/transition-gl.js +823 -0
  98. package/dist/src/ui/viewer/transition-gl.js.map +1 -0
  99. package/dist/src/ui/viewer/transition.d.ts.map +1 -1
  100. package/dist/src/ui/viewer/transition.js +9 -0
  101. package/dist/src/ui/viewer/transition.js.map +1 -1
  102. package/dist/src/wasm/udoc.d.ts +117 -89
  103. package/dist/src/wasm/udoc.js +6 -6
  104. package/dist/src/wasm/udoc_bg.wasm +0 -0
  105. package/dist/src/wasm/udoc_bg.wasm.d.ts +3 -3
  106. package/dist/src/worker/WorkerClient.d.ts +14 -0
  107. package/dist/src/worker/WorkerClient.d.ts.map +1 -1
  108. package/dist/src/worker/WorkerClient.js.map +1 -1
  109. package/dist/src/worker/worker-inline.js +1 -1
  110. package/dist/src/worker/worker.js +6 -6
  111. package/package.json +1 -1
@@ -1,12 +1,17 @@
1
1
  import { subscribeSelector } from "../../framework/selectors";
2
2
  import { on } from "../../framework/events";
3
- import { ICON_VIEW_MODE, ICON_SCROLL_SPREAD, ICON_SCROLL_CONTINUOUS, ICON_LAYOUT_SINGLE, ICON_LAYOUT_DOUBLE, ICON_LAYOUT_DOUBLE_ODD_RIGHT, ICON_LAYOUT_DOUBLE_ODD_LEFT, ICON_ROTATE_0, ICON_ROTATE_90, ICON_ROTATE_180, ICON_ROTATE_270, ICON_SPACING_ALL, ICON_SPACING_NONE, ICON_SPACING_SPREAD, ICON_SPACING_PAGE, } from "../icons";
3
+ import { ICON_VIEW_MODE, ICON_VIEW_PAGED, ICON_VIEW_CONTINUOUS, ICON_SCROLL_SPREAD, ICON_SCROLL_CONTINUOUS, ICON_LAYOUT_SINGLE, ICON_LAYOUT_DOUBLE, ICON_LAYOUT_DOUBLE_ODD_RIGHT, ICON_LAYOUT_DOUBLE_ODD_LEFT, ICON_ROTATE_0, ICON_ROTATE_90, ICON_ROTATE_180, ICON_ROTATE_270, ICON_SPACING_ALL, ICON_SPACING_NONE, ICON_SPACING_SPREAD, ICON_SPACING_PAGE, } from "../icons";
4
4
  function sliceEqual(a, b) {
5
- return (a.scrollMode === b.scrollMode &&
5
+ return (a.viewMode === b.viewMode &&
6
+ a.scrollMode === b.scrollMode &&
6
7
  a.layoutMode === b.layoutMode &&
7
8
  a.pageRotation === b.pageRotation &&
8
9
  a.spacingMode === b.spacingMode);
9
10
  }
11
+ const VIEW_MODE_OPTIONS = [
12
+ { value: "paged", icon: ICON_VIEW_PAGED, label: "viewMode.paged" },
13
+ { value: "continuous", icon: ICON_VIEW_CONTINUOUS, label: "viewMode.continuousView" },
14
+ ];
10
15
  const SCROLL_OPTIONS = [
11
16
  { value: "spread", icon: ICON_SCROLL_SPREAD, label: "viewMode.spread" },
12
17
  { value: "continuous", icon: ICON_SCROLL_CONTINUOUS, label: "viewMode.continuous" },
@@ -103,22 +108,28 @@ export function createViewModeMenu() {
103
108
  dropdownListeners = [];
104
109
  // Clear existing content
105
110
  dropdown.innerHTML = "";
111
+ const isPaged = slice.viewMode === "paged";
112
+ // View mode section (paged vs continuous)
113
+ dropdown.appendChild(createSection(i18nRef.t("viewMode.view"), VIEW_MODE_OPTIONS, slice.viewMode, (mode) => {
114
+ storeRef?.dispatch({ type: "SET_VIEW_MODE", mode });
115
+ }));
116
+ const disabledInContinuous = !isPaged ? { disabled: true, allowNoSelection: true } : {};
106
117
  // Scroll mode section
107
118
  dropdown.appendChild(createSection(i18nRef.t("viewMode.scroll"), SCROLL_OPTIONS, slice.scrollMode, (mode) => {
108
119
  storeRef?.dispatch({ type: "SET_SCROLL_MODE", mode });
109
- }));
120
+ }, disabledInContinuous));
110
121
  // Layout mode section
111
122
  dropdown.appendChild(createSection(i18nRef.t("viewMode.layout"), LAYOUT_OPTIONS, slice.layoutMode, (mode) => {
112
123
  storeRef?.dispatch({ type: "SET_LAYOUT_MODE", mode });
113
- }));
124
+ }, disabledInContinuous));
114
125
  // Page rotation section
115
126
  dropdown.appendChild(createSection(i18nRef.t("viewMode.rotation"), ROTATION_OPTIONS, slice.pageRotation, (rotation) => {
116
127
  storeRef?.dispatch({ type: "SET_PAGE_ROTATION", rotation });
117
- }));
128
+ }, disabledInContinuous));
118
129
  // Spacing section
119
130
  dropdown.appendChild(createSection(i18nRef.t("viewMode.spacing"), SPACING_OPTIONS, slice.spacingMode, (mode) => {
120
131
  storeRef?.dispatch({ type: "SET_SPACING_MODE", mode });
121
- }));
132
+ }, disabledInContinuous));
122
133
  }
123
134
  function toggleDropdown() {
124
135
  isOpen = !isOpen;
@@ -185,6 +196,7 @@ export function createViewModeMenu() {
185
196
  }
186
197
  function selectSlice(state) {
187
198
  return {
199
+ viewMode: state.viewMode,
188
200
  scrollMode: state.scrollMode,
189
201
  layoutMode: state.layoutMode,
190
202
  pageRotation: state.pageRotation,
@@ -1 +1 @@
1
- {"version":3,"file":"ViewModeMenu.js","sourceRoot":"","sources":["../../../../../src/ui/viewer/components/ViewModeMenu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ViewModeMenu.js","sourceRoot":"","sources":["../../../../../src/ui/viewer/components/ViewModeMenu.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Viewport.d.ts","sourceRoot":"","sources":["../../../../../src/ui/viewer/components/Viewport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAEH,KAAK,WAAW,EAQnB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAqZ7C,wBAAgB,cAAc,CAAC,eAAe,UAAO;;oBA8P1B,WAAW,SAAS,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,YAAY,SAAS,IAAI,KAAG,IAAI;mBAu+BvF,IAAI;EA4B3B"}
1
+ {"version":3,"file":"Viewport.d.ts","sourceRoot":"","sources":["../../../../../src/ui/viewer/components/Viewport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAEH,KAAK,WAAW,EAUnB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AA6a7C,wBAAgB,cAAc,CAAC,eAAe,UAAO;;oBA8P1B,WAAW,SAAS,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,YAAY,SAAS,IAAI,KAAG,IAAI;mBA8jCvF,IAAI;EA4B3B"}
@@ -1,7 +1,7 @@
1
1
  import { subscribeSelector } from "../../framework/selectors";
2
2
  import { getPointsToPixels, } from "../state";
3
3
  import { showAnnotationPopup, closeAnnotationPopup } from "../annotation";
4
- import { calculateSpreads, calculateSpreadLayouts, findSpreadForPage, findVisibleSpreadRange, getSpreadPrimaryPage, getSpreadDimensions, } from "../layout/spreadLayout";
4
+ import { calculateSpreads, calculateSpreadLayouts, calculateContinuousLayout, findSpreadForPage, findVisibleSpreadRange, getSpreadPrimaryPage, getSpreadDimensions, } from "../layout/spreadLayout";
5
5
  import { createSpread } from "./Spread";
6
6
  import { createFloatingToolbar } from "./FloatingToolbar";
7
7
  import { on } from "../../framework/events";
@@ -15,6 +15,7 @@ function viewportSliceEqual(a, b) {
15
15
  a.page === b.page &&
16
16
  a.pageCount === b.pageCount &&
17
17
  a.pageInfos === b.pageInfos &&
18
+ a.viewMode === b.viewMode &&
18
19
  a.scrollMode === b.scrollMode &&
19
20
  a.layoutMode === b.layoutMode &&
20
21
  a.zoomMode === b.zoomMode &&
@@ -28,7 +29,8 @@ function viewportSliceEqual(a, b) {
28
29
  a.highlightedAnnotation === b.highlightedAnnotation &&
29
30
  a.pageText === b.pageText &&
30
31
  a.searchMatches === b.searchMatches &&
31
- a.searchActiveIndex === b.searchActiveIndex);
32
+ a.searchActiveIndex === b.searchActiveIndex &&
33
+ a.zoomAnchor === b.zoomAnchor);
32
34
  }
33
35
  let cachedScrollbarSize = null;
34
36
  /** Number of spreads to render above/below viewport for smooth scrolling */
@@ -217,6 +219,17 @@ function computeScale(slice, metrics, spreads, scrollbarVisible) {
217
219
  function buildLayout(slice, metrics, scrollbarVisible) {
218
220
  const spreads = calculateSpreads(slice.pageCount, slice.layoutMode);
219
221
  const scale = computeScale(slice, metrics, spreads, scrollbarVisible);
222
+ if (slice.viewMode === "continuous") {
223
+ const contLayout = calculateContinuousLayout(spreads, slice.pageInfos, scale, slice.dpi, slice.pageRotation);
224
+ return {
225
+ spreads,
226
+ layouts: contLayout.layouts,
227
+ contentWidth: contLayout.contentWidth,
228
+ contentHeight: contLayout.contentHeight,
229
+ scale,
230
+ continuousLayout: contLayout,
231
+ };
232
+ }
220
233
  const layout = calculateSpreadLayouts(spreads, slice.pageInfos, scale, slice.pageSpacing, slice.spreadSpacing, slice.dpi, slice.pageRotation);
221
234
  return {
222
235
  spreads,
@@ -224,6 +237,7 @@ function buildLayout(slice, metrics, scrollbarVisible) {
224
237
  contentWidth: layout.contentWidth,
225
238
  contentHeight: layout.contentHeight,
226
239
  scale,
240
+ continuousLayout: null,
227
241
  };
228
242
  }
229
243
  function computeViewportUpdate(prevSlice, nextSlice, prevMetrics, nextMetrics) {
@@ -232,6 +246,7 @@ function computeViewportUpdate(prevSlice, nextSlice, prevMetrics, nextMetrics) {
232
246
  nextSlice.docId !== prevSlice.docId ||
233
247
  nextSlice.pageCount !== prevSlice.pageCount ||
234
248
  nextSlice.pageInfos !== prevSlice.pageInfos ||
249
+ nextSlice.viewMode !== prevSlice.viewMode ||
235
250
  nextSlice.scrollMode !== prevSlice.scrollMode ||
236
251
  nextSlice.layoutMode !== prevSlice.layoutMode ||
237
252
  nextSlice.zoomMode !== prevSlice.zoomMode ||
@@ -246,6 +261,7 @@ function computeViewportUpdate(prevSlice, nextSlice, prevMetrics, nextMetrics) {
246
261
  nextSlice.docId !== prevSlice.docId ||
247
262
  nextSlice.pageCount !== prevSlice.pageCount ||
248
263
  nextSlice.pageInfos !== prevSlice.pageInfos ||
264
+ nextSlice.viewMode !== prevSlice.viewMode ||
249
265
  nextSlice.layoutMode !== prevSlice.layoutMode;
250
266
  const shouldClearSpreads = layoutChanged && spreadsChanged;
251
267
  // Scroll to page on document change or zoom mode change (explicit user actions)
@@ -703,9 +719,11 @@ export function createViewport(showAttribution = true) {
703
719
  });
704
720
  }
705
721
  function applyState(slice) {
706
- scrollArea.style.paddingLeft = `${slice.pageSpacing}px`;
707
- scrollArea.style.paddingRight = `${slice.pageSpacing}px`;
708
- el.classList.toggle("udoc-viewport--seamless", slice.spacingMode === "none");
722
+ const sidePadding = slice.viewMode === "continuous" ? 0 : slice.pageSpacing;
723
+ scrollArea.style.paddingLeft = `${sidePadding}px`;
724
+ scrollArea.style.paddingRight = `${sidePadding}px`;
725
+ el.classList.toggle("udoc-viewport--seamless", slice.spacingMode === "none" || slice.viewMode === "continuous");
726
+ el.classList.toggle("udoc-viewport--continuous", slice.viewMode === "continuous");
709
727
  const metrics = readViewportMetrics(scrollArea, container);
710
728
  const hasDoc = !!slice.docId && slice.pageCount > 0 && slice.pageInfos.length > 0;
711
729
  if (!hasDoc || metrics.innerWidth <= 0 || metrics.innerHeight <= 0) {
@@ -737,50 +755,64 @@ export function createViewport(showAttribution = true) {
737
755
  syncEffectiveZoom(slice, layoutState);
738
756
  if (slice.scrollMode === "continuous") {
739
757
  applyContinuousLayout(metrics, layoutState);
740
- if (plan.shouldScrollToPage) {
741
- scrollToPage(slice.page, metrics);
742
- }
743
- else if (plan.shouldRestorePosition && viewportTopPosition) {
744
- restoreViewportPosition(viewportTopPosition, metrics, layoutState);
758
+ if (!slice.zoomAnchor) {
759
+ if (plan.shouldScrollToPage) {
760
+ scrollToPage(slice.page, metrics);
761
+ }
762
+ else if (plan.shouldRestorePosition && viewportTopPosition) {
763
+ restoreViewportPosition(viewportTopPosition, metrics, layoutState);
764
+ }
745
765
  }
746
766
  updateVisibleSpreads(slice, metrics, layoutState);
747
767
  }
748
768
  else {
749
769
  applySingleLayout(slice, metrics, layoutState);
750
- if (plan.shouldScrollToPage) {
751
- scrollArea.scrollTop = 0;
752
- scrollArea.scrollLeft = 0;
753
- lastOverflowX = null;
754
- lastOverflowY = null;
755
- }
756
- else if (plan.shouldRestorePosition && viewportTopPosition) {
757
- // In spread mode, restore position by showing the correct page
758
- const targetPage = viewportTopPosition.page;
759
- if (slice.page !== targetPage && storeRef) {
760
- storeRef.dispatch({ type: "SET_PAGE", page: targetPage });
761
- }
762
- // Reset scroll and try to restore position within the spread if it's scrollable
763
- scrollArea.scrollLeft = 0;
764
- const spreadIndex = findSpreadForPage(layoutState.spreads, targetPage);
765
- const layout = layoutState.layouts[spreadIndex];
766
- if (layout && layout.height > metrics.innerHeight && !viewportTopPosition.inSpacing) {
767
- // Spread is larger than viewport and we have a content offset
768
- // Calculate scroll position to show the same relative position
769
- const spreadTopInContainer = getCenteredOffset(containerSize.height, layout.height);
770
- const offsetPixels = viewportTopPosition.offset * layout.height;
771
- scrollArea.scrollTop = Math.max(0, spreadTopInContainer + offsetPixels);
772
- }
773
- else {
770
+ if (!slice.zoomAnchor) {
771
+ if (plan.shouldScrollToPage) {
774
772
  scrollArea.scrollTop = 0;
773
+ scrollArea.scrollLeft = 0;
774
+ lastOverflowX = null;
775
+ lastOverflowY = null;
776
+ }
777
+ else if (plan.shouldRestorePosition && viewportTopPosition) {
778
+ // In spread mode, restore position by showing the correct page
779
+ const targetPage = viewportTopPosition.page;
780
+ if (slice.page !== targetPage && storeRef) {
781
+ storeRef.dispatch({ type: "SET_PAGE", page: targetPage });
782
+ }
783
+ // Reset scroll and try to restore position within the spread if it's scrollable
784
+ scrollArea.scrollLeft = 0;
785
+ const spreadIndex = findSpreadForPage(layoutState.spreads, targetPage);
786
+ const layout = layoutState.layouts[spreadIndex];
787
+ if (layout && layout.height > metrics.innerHeight && !viewportTopPosition.inSpacing) {
788
+ // Spread is larger than viewport and we have a content offset
789
+ // Calculate scroll position to show the same relative position
790
+ const spreadTopInContainer = getCenteredOffset(containerSize.height, layout.height);
791
+ const offsetPixels = viewportTopPosition.offset * layout.height;
792
+ scrollArea.scrollTop = Math.max(0, spreadTopInContainer + offsetPixels);
793
+ }
794
+ else {
795
+ scrollArea.scrollTop = 0;
796
+ }
797
+ lastOverflowX = null;
798
+ lastOverflowY = null;
775
799
  }
776
- lastOverflowX = null;
777
- lastOverflowY = null;
778
800
  }
779
801
  showSingleSpread(slice, metrics, layoutState);
780
802
  }
781
803
  updateOverflow(slice, metrics);
804
+ // Apply zoom anchor AFTER overflow is resolved, so that setting
805
+ // overflow to "hidden" (when content shrinks on zoom-out) doesn't
806
+ // reset the scroll position we're about to set.
807
+ if (slice.zoomAnchor) {
808
+ applyZoomAnchor(slice.zoomAnchor, metrics);
809
+ }
782
810
  // Update tracked viewport position after layout is applied
783
811
  updateViewportTopPosition(slice, layoutState);
812
+ // Clear zoom anchor after it has been consumed
813
+ if (slice.zoomAnchor && storeRef) {
814
+ storeRef.dispatch({ type: "CLEAR_ZOOM_ANCHOR" });
815
+ }
784
816
  lastSlice = slice;
785
817
  }
786
818
  function updateOverflow(_slice, _metrics) {
@@ -946,6 +978,27 @@ export function createViewport(showAttribution = true) {
946
978
  const maxScrollTop = Math.max(0, containerSize.height - metrics.innerHeight);
947
979
  scrollArea.scrollTop = clamp(targetScrollTop, 0, maxScrollTop);
948
980
  }
981
+ /**
982
+ * Adjusts scroll position after a zoom-tool click so that the clicked
983
+ * point in the document stays under the cursor.
984
+ */
985
+ function applyZoomAnchor(anchor, metrics) {
986
+ const newScrollWidth = scrollArea.scrollWidth;
987
+ const newScrollHeight = scrollArea.scrollHeight;
988
+ if (anchor.scrollWidth === 0 || anchor.scrollHeight === 0)
989
+ return;
990
+ const scaleX = newScrollWidth / anchor.scrollWidth;
991
+ const scaleY = newScrollHeight / anchor.scrollHeight;
992
+ // The point under the cursor in the old scroll coordinate space
993
+ const pointX = anchor.scrollLeft + anchor.viewX * metrics.innerWidth;
994
+ const pointY = anchor.scrollTop + anchor.viewY * metrics.innerHeight;
995
+ // Where that same point is in the new scroll coordinate space
996
+ const newPointX = pointX * scaleX;
997
+ const newPointY = pointY * scaleY;
998
+ // Adjust scroll so the point stays under the cursor
999
+ scrollArea.scrollLeft = newPointX - anchor.viewX * metrics.innerWidth;
1000
+ scrollArea.scrollTop = newPointY - anchor.viewY * metrics.innerHeight;
1001
+ }
949
1002
  function updateVisibleSpreads(slice, metrics, state) {
950
1003
  if (!workerClient || !slice.docId)
951
1004
  return;
@@ -954,12 +1007,20 @@ export function createViewport(showAttribution = true) {
954
1007
  const scrollTop = scrollArea.scrollTop;
955
1008
  const visibleRange = findVisibleSpreadRange(state.layouts, scrollTop, metrics.innerHeight, RENDER_BUFFER);
956
1009
  const rangeChanged = visibleRange.start !== lastVisibleRange.start || visibleRange.end !== lastVisibleRange.end;
1010
+ const isContinuousView = slice.viewMode === "continuous";
1011
+ const contLayout = state.continuousLayout;
1012
+ const cropMode = isContinuousView
1013
+ ? contLayout?.isGridLayout
1014
+ ? "full"
1015
+ : "vertical"
1016
+ : "none";
957
1017
  const layoutOptions = {
958
1018
  pageInfos: slice.pageInfos,
959
1019
  scale: state.scale,
960
1020
  dpi: slice.dpi,
961
1021
  rotation: slice.pageRotation,
962
1022
  pageSpacing: slice.pageSpacing,
1023
+ cropMode,
963
1024
  };
964
1025
  if (layoutDirty || rangeChanged) {
965
1026
  for (const [index, spread] of spreadComponents) {
@@ -986,16 +1047,52 @@ export function createViewport(showAttribution = true) {
986
1047
  }
987
1048
  spreadComp.updateLayout(layoutOptions);
988
1049
  // Set spread position and dimensions from layout.
989
- // Layout values are pre-snapped with cumulative consistency.
990
- // Use left:0 + right:0 instead of explicit width so the spread
991
- // fills the container via CSS (responds to resize without JS lag).
992
1050
  const spreadEl = spreadComp.getElement();
993
1051
  spreadEl.style.position = "absolute";
994
1052
  spreadEl.style.top = `${layout.top}px`;
995
1053
  spreadEl.style.height = `${layout.height}px`;
996
- spreadEl.style.left = "0px";
997
- spreadEl.style.right = "0px";
998
- spreadEl.style.width = "";
1054
+ if (isContinuousView && contLayout?.isGridLayout) {
1055
+ // Grid continuous (XLSX): position using left offset from row layout
1056
+ const pageIndex = layout.slots[0] ? layout.slots[0] - 1 : i;
1057
+ const rowLayout = contLayout.rowLayouts.find((r) => r.pages.some((p) => p.pageIndex === pageIndex));
1058
+ const pageDef = rowLayout?.pages.find((p) => p.pageIndex === pageIndex);
1059
+ if (pageDef) {
1060
+ spreadEl.style.left = `${pageDef.left}px`;
1061
+ spreadEl.style.width = `${pageDef.width}px`;
1062
+ spreadEl.style.right = "";
1063
+ }
1064
+ else {
1065
+ spreadEl.style.left = "0px";
1066
+ spreadEl.style.right = "0px";
1067
+ spreadEl.style.width = "";
1068
+ }
1069
+ // No centering in grid mode — content is flush to left
1070
+ spreadEl.style.justifyContent = "flex-start";
1071
+ // Mark last-col / last-row for stitch line hiding
1072
+ const isLastCol = pageDef ? pageDef.col === contLayout.columnWidths.length - 1 : false;
1073
+ const isLastRow = rowLayout
1074
+ ? rowLayout.row === contLayout.rowLayouts[contLayout.rowLayouts.length - 1].row
1075
+ : false;
1076
+ spreadEl.classList.toggle("udoc-spread--last-col", isLastCol);
1077
+ spreadEl.classList.toggle("udoc-spread--last-row", isLastRow);
1078
+ }
1079
+ else if (isContinuousView) {
1080
+ // Linear continuous: center, single column = always last col
1081
+ spreadEl.style.left = "0px";
1082
+ spreadEl.style.right = "0px";
1083
+ spreadEl.style.width = "";
1084
+ spreadEl.style.justifyContent = "";
1085
+ spreadEl.classList.add("udoc-spread--last-col");
1086
+ spreadEl.classList.toggle("udoc-spread--last-row", i === state.layouts.length - 1);
1087
+ }
1088
+ else {
1089
+ // Paged mode
1090
+ spreadEl.style.left = "0px";
1091
+ spreadEl.style.right = "0px";
1092
+ spreadEl.style.width = "";
1093
+ spreadEl.style.justifyContent = "";
1094
+ spreadEl.classList.remove("udoc-spread--last-col", "udoc-spread--last-row");
1095
+ }
999
1096
  spreadEl.style.transform = "none";
1000
1097
  // Skip render during resize animation (renders debounced separately)
1001
1098
  if (!rendersPaused) {
@@ -1450,6 +1547,7 @@ function selectViewport(state) {
1450
1547
  page: state.page,
1451
1548
  pageCount: state.pageCount,
1452
1549
  pageInfos: state.pageInfos,
1550
+ viewMode: state.viewMode,
1453
1551
  scrollMode: state.scrollMode,
1454
1552
  layoutMode: state.layoutMode,
1455
1553
  zoomMode: state.zoomMode,
@@ -1464,6 +1562,7 @@ function selectViewport(state) {
1464
1562
  pageText: state.pageText,
1465
1563
  searchMatches: state.searchMatches,
1466
1564
  searchActiveIndex: state.searchActiveIndex,
1565
+ zoomAnchor: state.zoomAnchor,
1467
1566
  };
1468
1567
  }
1469
1568
  //# sourceMappingURL=Viewport.js.map