@docmentis/udoc-viewer 0.1.0 → 0.1.1
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/wasm/udoc_bg.wasm +0 -0
- package/dist/worker/WorkerClient.js +1 -1
- package/package.json +11 -3
- package/dist/WorkerClient.d.ts +0 -36
- package/dist/WorkerClient.d.ts.map +0 -1
- package/dist/WorkerClient.js +0 -121
- package/dist/WorkerClient.js.map +0 -1
- package/dist/annotation/AnnotationLayer.d.ts +0 -166
- package/dist/annotation/AnnotationLayer.d.ts.map +0 -1
- package/dist/annotation/AnnotationLayer.js +0 -1090
- package/dist/annotation/AnnotationLayer.js.map +0 -1
- package/dist/annotation/index.d.ts +0 -6
- package/dist/annotation/index.d.ts.map +0 -1
- package/dist/annotation/index.js +0 -6
- package/dist/annotation/index.js.map +0 -1
- package/dist/components/FloatingBar.d.ts +0 -102
- package/dist/components/FloatingBar.d.ts.map +0 -1
- package/dist/components/FloatingBar.js +0 -513
- package/dist/components/FloatingBar.js.map +0 -1
- package/dist/components/Header.d.ts +0 -46
- package/dist/components/Header.d.ts.map +0 -1
- package/dist/components/Header.js +0 -93
- package/dist/components/Header.js.map +0 -1
- package/dist/components/index.d.ts +0 -6
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js +0 -4
- package/dist/components/index.js.map +0 -1
- package/dist/components/panels/CommentsPanel.d.ts +0 -33
- package/dist/components/panels/CommentsPanel.d.ts.map +0 -1
- package/dist/components/panels/CommentsPanel.js +0 -176
- package/dist/components/panels/CommentsPanel.js.map +0 -1
- package/dist/components/panels/OutlinePanel.d.ts +0 -30
- package/dist/components/panels/OutlinePanel.d.ts.map +0 -1
- package/dist/components/panels/OutlinePanel.js +0 -144
- package/dist/components/panels/OutlinePanel.js.map +0 -1
- package/dist/components/panels/ThumbnailsPanel.d.ts +0 -51
- package/dist/components/panels/ThumbnailsPanel.d.ts.map +0 -1
- package/dist/components/panels/ThumbnailsPanel.js +0 -160
- package/dist/components/panels/ThumbnailsPanel.js.map +0 -1
- package/dist/components/panels/index.d.ts +0 -7
- package/dist/components/panels/index.d.ts.map +0 -1
- package/dist/components/panels/index.js +0 -4
- package/dist/components/panels/index.js.map +0 -1
- package/dist/constants.d.ts +0 -25
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -46
- package/dist/constants.js.map +0 -1
- package/dist/core/NavigationController.d.ts +0 -54
- package/dist/core/NavigationController.d.ts.map +0 -1
- package/dist/core/NavigationController.js +0 -145
- package/dist/core/NavigationController.js.map +0 -1
- package/dist/core/PerfTimer.d.ts +0 -12
- package/dist/core/PerfTimer.d.ts.map +0 -1
- package/dist/core/PerfTimer.js +0 -32
- package/dist/core/PerfTimer.js.map +0 -1
- package/dist/core/ViewerState.d.ts +0 -108
- package/dist/core/ViewerState.d.ts.map +0 -1
- package/dist/core/ViewerState.js +0 -179
- package/dist/core/ViewerState.js.map +0 -1
- package/dist/core/constants.d.ts +0 -24
- package/dist/core/constants.d.ts.map +0 -1
- package/dist/core/constants.js +0 -42
- package/dist/core/constants.js.map +0 -1
- package/dist/core/index.d.ts +0 -8
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -11
- package/dist/core/index.js.map +0 -1
- package/dist/core/types.d.ts +0 -573
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -5
- package/dist/core/types.js.map +0 -1
- package/dist/icons/icons.d.ts +0 -41
- package/dist/icons/icons.d.ts.map +0 -1
- package/dist/icons/icons.js +0 -51
- package/dist/icons/icons.js.map +0 -1
- package/dist/icons/index.d.ts +0 -3
- package/dist/icons/index.d.ts.map +0 -1
- package/dist/icons/index.js +0 -2
- package/dist/icons/index.js.map +0 -1
- package/dist/layout/BandManager.d.ts +0 -87
- package/dist/layout/BandManager.d.ts.map +0 -1
- package/dist/layout/BandManager.js +0 -185
- package/dist/layout/BandManager.js.map +0 -1
- package/dist/layout/LayoutCalculator.d.ts +0 -42
- package/dist/layout/LayoutCalculator.d.ts.map +0 -1
- package/dist/layout/LayoutCalculator.js +0 -180
- package/dist/layout/LayoutCalculator.js.map +0 -1
- package/dist/layout/LayoutState.d.ts +0 -46
- package/dist/layout/LayoutState.d.ts.map +0 -1
- package/dist/layout/LayoutState.js +0 -109
- package/dist/layout/LayoutState.js.map +0 -1
- package/dist/layout/TransitionCoordinator.d.ts +0 -11
- package/dist/layout/TransitionCoordinator.d.ts.map +0 -1
- package/dist/layout/TransitionCoordinator.js +0 -22
- package/dist/layout/TransitionCoordinator.js.map +0 -1
- package/dist/layout/index.d.ts +0 -7
- package/dist/layout/index.d.ts.map +0 -1
- package/dist/layout/index.js +0 -4
- package/dist/layout/index.js.map +0 -1
- package/dist/rendering/BandManager.d.ts +0 -87
- package/dist/rendering/BandManager.d.ts.map +0 -1
- package/dist/rendering/BandManager.js +0 -185
- package/dist/rendering/BandManager.js.map +0 -1
- package/dist/rendering/PageCache.d.ts +0 -75
- package/dist/rendering/PageCache.d.ts.map +0 -1
- package/dist/rendering/PageCache.js +0 -122
- package/dist/rendering/PageCache.js.map +0 -1
- package/dist/rendering/RenderQueue.d.ts +0 -75
- package/dist/rendering/RenderQueue.d.ts.map +0 -1
- package/dist/rendering/RenderQueue.js +0 -105
- package/dist/rendering/RenderQueue.js.map +0 -1
- package/dist/rendering/ThumbnailQueue.d.ts +0 -57
- package/dist/rendering/ThumbnailQueue.d.ts.map +0 -1
- package/dist/rendering/ThumbnailQueue.js +0 -85
- package/dist/rendering/ThumbnailQueue.js.map +0 -1
- package/dist/rendering/index.d.ts +0 -13
- package/dist/rendering/index.d.ts.map +0 -1
- package/dist/rendering/index.js +0 -10
- package/dist/rendering/index.js.map +0 -1
- package/dist/rendering/types.d.ts +0 -72
- package/dist/rendering/types.d.ts.map +0 -1
- package/dist/rendering/types.js +0 -5
- package/dist/rendering/types.js.map +0 -1
- package/dist/styles/index.d.ts +0 -6
- package/dist/styles/index.d.ts.map +0 -1
- package/dist/styles/index.js +0 -1221
- package/dist/styles/index.js.map +0 -1
- package/dist/types.d.ts +0 -6
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -6
- package/dist/types.js.map +0 -1
- package/dist/ui/Component.d.ts +0 -127
- package/dist/ui/Component.d.ts.map +0 -1
- package/dist/ui/Component.js +0 -201
- package/dist/ui/Component.js.map +0 -1
- package/dist/ui/annotation/AnnotationLayer.d.ts +0 -90
- package/dist/ui/annotation/AnnotationLayer.d.ts.map +0 -1
- package/dist/ui/annotation/AnnotationLayer.js +0 -322
- package/dist/ui/annotation/AnnotationLayer.js.map +0 -1
- package/dist/ui/annotation/LinkRenderer.d.ts +0 -32
- package/dist/ui/annotation/LinkRenderer.d.ts.map +0 -1
- package/dist/ui/annotation/LinkRenderer.js +0 -74
- package/dist/ui/annotation/LinkRenderer.js.map +0 -1
- package/dist/ui/annotation/MarkupRenderer.d.ts +0 -40
- package/dist/ui/annotation/MarkupRenderer.d.ts.map +0 -1
- package/dist/ui/annotation/MarkupRenderer.js +0 -154
- package/dist/ui/annotation/MarkupRenderer.js.map +0 -1
- package/dist/ui/annotation/ShapeRenderer.d.ts +0 -46
- package/dist/ui/annotation/ShapeRenderer.d.ts.map +0 -1
- package/dist/ui/annotation/ShapeRenderer.js +0 -376
- package/dist/ui/annotation/ShapeRenderer.js.map +0 -1
- package/dist/ui/annotation/TextRenderer.d.ts +0 -36
- package/dist/ui/annotation/TextRenderer.d.ts.map +0 -1
- package/dist/ui/annotation/TextRenderer.js +0 -199
- package/dist/ui/annotation/TextRenderer.js.map +0 -1
- package/dist/ui/annotation/index.d.ts +0 -17
- package/dist/ui/annotation/index.d.ts.map +0 -1
- package/dist/ui/annotation/index.js +0 -13
- package/dist/ui/annotation/index.js.map +0 -1
- package/dist/ui/annotation/utils.d.ts +0 -40
- package/dist/ui/annotation/utils.d.ts.map +0 -1
- package/dist/ui/annotation/utils.js +0 -62
- package/dist/ui/annotation/utils.js.map +0 -1
- package/dist/ui/components/CommentsContent.d.ts +0 -35
- package/dist/ui/components/CommentsContent.d.ts.map +0 -1
- package/dist/ui/components/CommentsContent.js +0 -203
- package/dist/ui/components/CommentsContent.js.map +0 -1
- package/dist/ui/components/FloatingBar.d.ts +0 -55
- package/dist/ui/components/FloatingBar.d.ts.map +0 -1
- package/dist/ui/components/FloatingBar.js +0 -585
- package/dist/ui/components/FloatingBar.js.map +0 -1
- package/dist/ui/components/Header.d.ts +0 -29
- package/dist/ui/components/Header.d.ts.map +0 -1
- package/dist/ui/components/Header.js +0 -127
- package/dist/ui/components/Header.js.map +0 -1
- package/dist/ui/components/LeftPanel.d.ts +0 -54
- package/dist/ui/components/LeftPanel.d.ts.map +0 -1
- package/dist/ui/components/LeftPanel.js +0 -202
- package/dist/ui/components/LeftPanel.js.map +0 -1
- package/dist/ui/components/OutlineContent.d.ts +0 -34
- package/dist/ui/components/OutlineContent.d.ts.map +0 -1
- package/dist/ui/components/OutlineContent.js +0 -147
- package/dist/ui/components/OutlineContent.js.map +0 -1
- package/dist/ui/components/RightPanel.d.ts +0 -52
- package/dist/ui/components/RightPanel.d.ts.map +0 -1
- package/dist/ui/components/RightPanel.js +0 -142
- package/dist/ui/components/RightPanel.js.map +0 -1
- package/dist/ui/components/Viewport.d.ts +0 -70
- package/dist/ui/components/Viewport.d.ts.map +0 -1
- package/dist/ui/components/Viewport.js +0 -173
- package/dist/ui/components/Viewport.js.map +0 -1
- package/dist/ui/components/index.d.ts +0 -11
- package/dist/ui/components/index.d.ts.map +0 -1
- package/dist/ui/components/index.js +0 -10
- package/dist/ui/components/index.js.map +0 -1
- package/dist/ui/icons/icons.d.ts +0 -43
- package/dist/ui/icons/icons.d.ts.map +0 -1
- package/dist/ui/icons/icons.js +0 -46
- package/dist/ui/icons/icons.js.map +0 -1
- package/dist/ui/icons/index.d.ts +0 -11
- package/dist/ui/icons/index.d.ts.map +0 -1
- package/dist/ui/icons/index.js +0 -18
- package/dist/ui/icons/index.js.map +0 -1
- package/dist/ui/index.d.ts +0 -7
- package/dist/ui/index.d.ts.map +0 -1
- package/dist/ui/index.js +0 -9
- package/dist/ui/index.js.map +0 -1
- package/dist/ui/styles/base.css.d.ts +0 -5
- package/dist/ui/styles/base.css.d.ts.map +0 -1
- package/dist/ui/styles/base.css.js +0 -49
- package/dist/ui/styles/base.css.js.map +0 -1
- package/dist/ui/styles/floating-bar.css.d.ts +0 -5
- package/dist/ui/styles/floating-bar.css.d.ts.map +0 -1
- package/dist/ui/styles/floating-bar.css.js +0 -417
- package/dist/ui/styles/floating-bar.css.js.map +0 -1
- package/dist/ui/styles/header.css.d.ts +0 -5
- package/dist/ui/styles/header.css.d.ts.map +0 -1
- package/dist/ui/styles/header.css.js +0 -49
- package/dist/ui/styles/header.css.js.map +0 -1
- package/dist/ui/styles/index.d.ts +0 -21
- package/dist/ui/styles/index.d.ts.map +0 -1
- package/dist/ui/styles/index.js +0 -48
- package/dist/ui/styles/index.js.map +0 -1
- package/dist/ui/styles/panels.css.d.ts +0 -5
- package/dist/ui/styles/panels.css.d.ts.map +0 -1
- package/dist/ui/styles/panels.css.js +0 -446
- package/dist/ui/styles/panels.css.js.map +0 -1
- package/dist/ui/styles/responsive.css.d.ts +0 -5
- package/dist/ui/styles/responsive.css.d.ts.map +0 -1
- package/dist/ui/styles/responsive.css.js +0 -201
- package/dist/ui/styles/responsive.css.js.map +0 -1
- package/dist/ui/styles/variables.css.d.ts +0 -6
- package/dist/ui/styles/variables.css.d.ts.map +0 -1
- package/dist/ui/styles/variables.css.js +0 -75
- package/dist/ui/styles/variables.css.js.map +0 -1
- package/dist/ui/styles/viewport.css.d.ts +0 -5
- package/dist/ui/styles/viewport.css.d.ts.map +0 -1
- package/dist/ui/styles/viewport.css.js +0 -87
- package/dist/ui/styles/viewport.css.js.map +0 -1
- package/dist/view/LayoutCalculator.d.ts +0 -42
- package/dist/view/LayoutCalculator.d.ts.map +0 -1
- package/dist/view/LayoutCalculator.js +0 -180
- package/dist/view/LayoutCalculator.js.map +0 -1
- package/dist/view/TransitionCoordinator.d.ts +0 -11
- package/dist/view/TransitionCoordinator.d.ts.map +0 -1
- package/dist/view/TransitionCoordinator.js +0 -22
- package/dist/view/TransitionCoordinator.js.map +0 -1
- package/dist/view/ViewState.d.ts +0 -46
- package/dist/view/ViewState.d.ts.map +0 -1
- package/dist/view/ViewState.js +0 -109
- package/dist/view/ViewState.js.map +0 -1
- package/dist/view/index.d.ts +0 -7
- package/dist/view/index.d.ts.map +0 -1
- package/dist/view/index.js +0 -4
- package/dist/view/index.js.map +0 -1
- package/dist/worker/types.d.ts +0 -81
- package/dist/worker/types.d.ts.map +0 -1
- package/dist/worker/types.js +0 -6
- package/dist/worker/types.js.map +0 -1
- package/dist/worker.d.ts +0 -2
- package/dist/worker.d.ts.map +0 -1
- package/dist/worker.js +0 -205
- package/dist/worker.js.map +0 -1
package/dist/icons/icons.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SVG icons used by the document viewer.
|
|
3
|
-
* All icons use currentColor for fill/stroke to inherit text color.
|
|
4
|
-
*/
|
|
5
|
-
export const ICONS = {
|
|
6
|
-
// Navigation
|
|
7
|
-
menu: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg>`,
|
|
8
|
-
chevronLeft: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/></svg>`,
|
|
9
|
-
chevronRight: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/></svg>`,
|
|
10
|
-
chevronDown: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"/></svg>`,
|
|
11
|
-
// Fullscreen
|
|
12
|
-
fullscreen: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"/></svg>`,
|
|
13
|
-
fullscreenExit: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"/></svg>`,
|
|
14
|
-
// Zoom
|
|
15
|
-
zoomIn: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/></svg>`,
|
|
16
|
-
zoomOut: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M19 13H5v-2h14v2z"/></svg>`,
|
|
17
|
-
// Settings
|
|
18
|
-
settings: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/></svg>`,
|
|
19
|
-
// Display mode icons
|
|
20
|
-
displaySingle: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="5" y="4" width="14" height="16" rx="1"/></svg>`,
|
|
21
|
-
displayScroll: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 2 L5 11 L19 11 L19 2"/><path d="M5 24 L5 15 L19 15 L19 24"/></svg>`,
|
|
22
|
-
// Layout mode icons
|
|
23
|
-
layout1up: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="6" y="3" width="12" height="18" rx="1"/></svg>`,
|
|
24
|
-
layout2up: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="4" width="8" height="16" rx="1"/><rect x="14" y="4" width="8" height="16" rx="1"/></svg>`,
|
|
25
|
-
layout2upCover: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="4" width="8" height="16" rx="1" stroke-dasharray="3 2"/><rect x="14" y="4" width="8" height="16" rx="1"/></svg>`,
|
|
26
|
-
layoutGrid: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/></svg>`,
|
|
27
|
-
// Rotation icons (page with corner fold indicating orientation)
|
|
28
|
-
rotate0: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 4 L14 4 L18 8 L18 20 L6 20 Z"/><path d="M14 4 L14 8 L18 8"/></svg>`,
|
|
29
|
-
rotate90: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 18 L20 10 L16 6 L4 6 L4 18 Z"/><path d="M20 10 L16 10 L16 6"/></svg>`,
|
|
30
|
-
rotate180: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 20 L10 20 L6 16 L6 4 L18 4 Z"/><path d="M10 20 L10 16 L6 16"/></svg>`,
|
|
31
|
-
rotate270: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 6 L4 14 L8 18 L20 18 L20 6 Z"/><path d="M4 14 L8 14 L8 18"/></svg>`,
|
|
32
|
-
// Panel tab icons
|
|
33
|
-
thumbnails: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="8" rx="1"/><rect x="14" y="3" width="7" height="8" rx="1"/><rect x="3" y="13" width="7" height="8" rx="1"/><rect x="14" y="13" width="7" height="8" rx="1"/></svg>`,
|
|
34
|
-
outline: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M3 9h14V7H3v2zm0 4h14v-2H3v2zm0 4h14v-2H3v2zm16-12v2h2V5h-2zm0 6h2v-2h-2v2zm0 6h2v-2h-2v2z"/></svg>`,
|
|
35
|
-
bookmark: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M17 3H7c-1.1 0-2 .9-2 2v16l7-3 7 3V5c0-1.1-.9-2-2-2z"/></svg>`,
|
|
36
|
-
attachment: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5a2.5 2.5 0 0 1 5 0v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5a2.5 2.5 0 0 0 5 0V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z"/></svg>`,
|
|
37
|
-
comments: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M21 6h-2V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h2v3a1 1 0 0 0 1 1h13l4 3v-17zM7 14H4V4h12v10H7z"/></svg>`,
|
|
38
|
-
annotations: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04a.996.996 0 0 0 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"/></svg>`,
|
|
39
|
-
search: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/></svg>`,
|
|
40
|
-
properties: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>`,
|
|
41
|
-
rightPanel: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14h-6V6h6v12z"/></svg>`,
|
|
42
|
-
// Tool icons
|
|
43
|
-
toolSelect: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M7 2l12 11.2-5.8.5 3.3 7.3-2.2 1-3.2-7.4L7 18.5V2z"/></svg>`,
|
|
44
|
-
toolHand: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 11V6a2 2 0 0 0-2-2 2 2 0 0 0-2 2v0"/><path d="M14 10V4a2 2 0 0 0-2-2 2 2 0 0 0-2 2v2"/><path d="M10 10.5V6a2 2 0 0 0-2-2 2 2 0 0 0-2 2v8"/><path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/></svg>`,
|
|
45
|
-
// Seamless mode icons (4-page intersection: L-corners pointing to center vs cross)
|
|
46
|
-
seamlessOff: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M10 2v8H2M14 2v8h8M10 22v-8H2M14 22v-8h8"/></svg>`,
|
|
47
|
-
seamlessOn: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M2 12h20"/></svg>`,
|
|
48
|
-
// Sticky note icon for text annotations
|
|
49
|
-
stickyNote: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M19 3H4.99c-1.11 0-1.98.89-1.98 2L3 19c0 1.1.88 2 1.99 2H15l6-6V5c0-1.11-.9-2-2-2zm-7 8H7V9h5v2zm5-4H7V5h10v2zm-1 10v-4.5c0-.28.22-.5.5-.5H21l-5 5z"/></svg>`,
|
|
50
|
-
};
|
|
51
|
-
//# sourceMappingURL=icons.js.map
|
package/dist/icons/icons.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/icons/icons.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACjB,aAAa;IACb,IAAI,EAAE,8GAA8G;IACpH,WAAW,EAAE,8GAA8G;IAC3H,YAAY,EAAE,+GAA+G;IAC7H,WAAW,EAAE,wHAAwH;IAErI,aAAa;IACb,UAAU,EAAE,+IAA+I;IAC3J,cAAc,EAAE,8IAA8I;IAE9J,OAAO;IACP,MAAM,EAAE,oGAAoG;IAC5G,OAAO,EAAE,kFAAkF;IAE3F,WAAW;IACX,QAAQ,EAAE,8vBAA8vB;IAExwB,qBAAqB;IACrB,aAAa,EAAE,qIAAqI;IACpJ,aAAa,EAAE,4JAA4J;IAE3K,oBAAoB;IACpB,SAAS,EAAE,qIAAqI;IAChJ,SAAS,EAAE,qLAAqL;IAChM,cAAc,EAAE,4MAA4M;IAC5N,UAAU,EAAE,oRAAoR;IAEhS,gEAAgE;IAChE,OAAO,EAAE,4JAA4J;IACrK,QAAQ,EAAE,+JAA+J;IACzK,SAAS,EAAE,+JAA+J;IAC1K,SAAS,EAAE,4JAA4J;IAEvK,kBAAkB;IAClB,UAAU,EAAE,oRAAoR;IAChS,OAAO,EAAE,2JAA2J;IACpK,QAAQ,EAAE,qHAAqH;IAC/H,UAAU,EAAE,+QAA+Q;IAC3R,QAAQ,EAAE,0KAA0K;IACpL,WAAW,EAAE,kNAAkN;IAC/N,MAAM,EAAE,2QAA2Q;IACnR,UAAU,EAAE,iKAAiK;IAC7K,UAAU,EAAE,6JAA6J;IAEzK,aAAa;IACb,UAAU,EAAE,mHAAmH;IAC/H,QAAQ,EAAE,wYAAwY;IAElZ,mFAAmF;IACnF,WAAW,EAAE,wIAAwI;IACrJ,UAAU,EAAE,gHAAgH;IAE5H,wCAAwC;IACxC,UAAU,EAAE,oNAAoN;CAC1N,CAAC"}
|
package/dist/icons/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/icons/index.js
DELETED
package/dist/icons/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import type { ViewerState } from '../core/ViewerState';
|
|
2
|
-
import type { LayoutState } from './LayoutState';
|
|
3
|
-
import type { AnnotationLayer } from '../ui/annotation';
|
|
4
|
-
/**
|
|
5
|
-
* Dependencies required by BandManager.
|
|
6
|
-
*/
|
|
7
|
-
export interface BandManagerDeps {
|
|
8
|
-
state: ViewerState;
|
|
9
|
-
layoutState: LayoutState;
|
|
10
|
-
bandContainer: HTMLDivElement;
|
|
11
|
-
content: HTMLDivElement;
|
|
12
|
-
topSpacer: HTMLDivElement;
|
|
13
|
-
bottomSpacer: HTMLDivElement;
|
|
14
|
-
annotationLayer: AnnotationLayer;
|
|
15
|
-
getEffectivePadding: () => number;
|
|
16
|
-
getEffectiveTotalHeight: () => number;
|
|
17
|
-
getCurrentBandIndex: () => number;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Callbacks for page-related operations during band updates.
|
|
21
|
-
*/
|
|
22
|
-
export interface BandPageCallbacks {
|
|
23
|
-
ensurePageView: (pageIndex: number) => HTMLElement;
|
|
24
|
-
preparePageRender: (pageIndex: number, width: number, height: number, token: number) => void;
|
|
25
|
-
getDisplaySize: (pageIndex: number) => {
|
|
26
|
-
width: number;
|
|
27
|
-
height: number;
|
|
28
|
-
};
|
|
29
|
-
cleanupInactivePages: (activePages: Set<number>) => void;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Manages band virtualization and DOM rendering.
|
|
33
|
-
*
|
|
34
|
-
* Bands are horizontal rows of pages that are rendered into the viewport.
|
|
35
|
-
* This class handles:
|
|
36
|
-
* - Creating and updating band DOM elements
|
|
37
|
-
* - Managing band positioning with pixel-snapping to avoid gaps
|
|
38
|
-
* - Coordinating with page rendering through callbacks
|
|
39
|
-
*/
|
|
40
|
-
export declare class BandManager {
|
|
41
|
-
private deps;
|
|
42
|
-
private callbacks;
|
|
43
|
-
private bandElements;
|
|
44
|
-
private isApplyingLayout;
|
|
45
|
-
constructor(deps: BandManagerDeps, callbacks: BandPageCallbacks);
|
|
46
|
-
/**
|
|
47
|
-
* Check if layout is currently being applied.
|
|
48
|
-
*/
|
|
49
|
-
isApplying(): boolean;
|
|
50
|
-
/**
|
|
51
|
-
* Get the band elements map (for external management if needed).
|
|
52
|
-
*/
|
|
53
|
-
getBandElements(): Map<number, HTMLDivElement>;
|
|
54
|
-
/**
|
|
55
|
-
* Clear all band elements.
|
|
56
|
-
*/
|
|
57
|
-
clearBandElements(): void;
|
|
58
|
-
/**
|
|
59
|
-
* Snap a value to device pixel boundaries to eliminate sub-pixel rendering gaps.
|
|
60
|
-
*/
|
|
61
|
-
private snapToPixel;
|
|
62
|
-
/**
|
|
63
|
-
* Get the snapped top position for a band by accumulating snapped heights.
|
|
64
|
-
* This ensures no gaps between adjacent bands regardless of zoom level.
|
|
65
|
-
*/
|
|
66
|
-
getSnappedBandTop(bandIndex: number): number;
|
|
67
|
-
/**
|
|
68
|
-
* Apply layout to the DOM for the given window of bands.
|
|
69
|
-
*/
|
|
70
|
-
applyLayoutToDom(window: {
|
|
71
|
-
start: number;
|
|
72
|
-
end: number;
|
|
73
|
-
}, token: number): void;
|
|
74
|
-
/**
|
|
75
|
-
* Create a new band element.
|
|
76
|
-
*/
|
|
77
|
-
private createBandElement;
|
|
78
|
-
/**
|
|
79
|
-
* Update a band element with current slot content.
|
|
80
|
-
*/
|
|
81
|
-
private updateBandElement;
|
|
82
|
-
/**
|
|
83
|
-
* Clear the display - reset all band-related DOM elements.
|
|
84
|
-
*/
|
|
85
|
-
clearDisplay(): void;
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=BandManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BandManager.d.ts","sourceRoot":"","sources":["../../src/layout/BandManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,cAAc,CAAC;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,cAAc,CAAC;IAC1B,YAAY,EAAE,cAAc,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,mBAAmB,EAAE,MAAM,MAAM,CAAC;IAClC,uBAAuB,EAAE,MAAM,MAAM,CAAC;IACtC,mBAAmB,EAAE,MAAM,MAAM,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,WAAW,CAAC;IACnD,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7F,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,oBAAoB,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;CAC5D;AAED;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,gBAAgB,CAAS;gBAErB,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,iBAAiB;IAK/D;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAI9C;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAW5C;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAgE7E;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2DzB;;OAEG;IACH,YAAY,IAAI,IAAI;CAUvB"}
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import { PAGE_GAP_SIZE } from '../core/types';
|
|
2
|
-
/**
|
|
3
|
-
* Manages band virtualization and DOM rendering.
|
|
4
|
-
*
|
|
5
|
-
* Bands are horizontal rows of pages that are rendered into the viewport.
|
|
6
|
-
* This class handles:
|
|
7
|
-
* - Creating and updating band DOM elements
|
|
8
|
-
* - Managing band positioning with pixel-snapping to avoid gaps
|
|
9
|
-
* - Coordinating with page rendering through callbacks
|
|
10
|
-
*/
|
|
11
|
-
export class BandManager {
|
|
12
|
-
deps;
|
|
13
|
-
callbacks;
|
|
14
|
-
bandElements = new Map();
|
|
15
|
-
isApplyingLayout = false;
|
|
16
|
-
constructor(deps, callbacks) {
|
|
17
|
-
this.deps = deps;
|
|
18
|
-
this.callbacks = callbacks;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Check if layout is currently being applied.
|
|
22
|
-
*/
|
|
23
|
-
isApplying() {
|
|
24
|
-
return this.isApplyingLayout;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Get the band elements map (for external management if needed).
|
|
28
|
-
*/
|
|
29
|
-
getBandElements() {
|
|
30
|
-
return this.bandElements;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Clear all band elements.
|
|
34
|
-
*/
|
|
35
|
-
clearBandElements() {
|
|
36
|
-
this.bandElements.clear();
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Snap a value to device pixel boundaries to eliminate sub-pixel rendering gaps.
|
|
40
|
-
*/
|
|
41
|
-
snapToPixel(value) {
|
|
42
|
-
const dpr = globalThis.devicePixelRatio || 1;
|
|
43
|
-
return Math.round(value * dpr) / dpr;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Get the snapped top position for a band by accumulating snapped heights.
|
|
47
|
-
* This ensures no gaps between adjacent bands regardless of zoom level.
|
|
48
|
-
*/
|
|
49
|
-
getSnappedBandTop(bandIndex) {
|
|
50
|
-
const { state, layoutState } = this.deps;
|
|
51
|
-
const gap = this.snapToPixel(state.get('seamless') ? 0 : PAGE_GAP_SIZE * state.get('zoom'));
|
|
52
|
-
let top = 0;
|
|
53
|
-
for (let i = 0; i < bandIndex; i++) {
|
|
54
|
-
const band = layoutState.getBand(i);
|
|
55
|
-
if (band)
|
|
56
|
-
top += this.snapToPixel(band.height) + gap;
|
|
57
|
-
}
|
|
58
|
-
return top;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Apply layout to the DOM for the given window of bands.
|
|
62
|
-
*/
|
|
63
|
-
applyLayoutToDom(window, token) {
|
|
64
|
-
const { state, layoutState, bandContainer, content, topSpacer, bottomSpacer, annotationLayer } = this.deps;
|
|
65
|
-
const bandCount = layoutState.getBandCount();
|
|
66
|
-
if (bandCount === 0)
|
|
67
|
-
return;
|
|
68
|
-
this.isApplyingLayout = true;
|
|
69
|
-
const gapSize = state.get('seamless') ? 0 : PAGE_GAP_SIZE * state.get('zoom');
|
|
70
|
-
const snappedGap = this.snapToPixel(gapSize);
|
|
71
|
-
const currentBandIndex = this.deps.getCurrentBandIndex();
|
|
72
|
-
const displayMode = state.get('displayMode');
|
|
73
|
-
const activeWindow = displayMode === 'single'
|
|
74
|
-
? { start: currentBandIndex, end: currentBandIndex }
|
|
75
|
-
: window;
|
|
76
|
-
let totalHeight = layoutState.getTotalHeight();
|
|
77
|
-
let totalWidth = layoutState.getTotalWidth();
|
|
78
|
-
if (displayMode === 'single') {
|
|
79
|
-
const band = layoutState.getBand(currentBandIndex);
|
|
80
|
-
if (band) {
|
|
81
|
-
totalHeight = band.height;
|
|
82
|
-
totalWidth = band.width;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
totalHeight = this.deps.getEffectiveTotalHeight();
|
|
87
|
-
}
|
|
88
|
-
const effectivePadding = this.deps.getEffectivePadding();
|
|
89
|
-
content.style.width = `${Math.max(0, totalWidth) + effectivePadding * 2}px`;
|
|
90
|
-
content.style.height = `${Math.max(0, totalHeight) + effectivePadding * 2}px`;
|
|
91
|
-
content.style.padding = `${effectivePadding}px`;
|
|
92
|
-
topSpacer.style.height = '0px';
|
|
93
|
-
bottomSpacer.style.height = '0px';
|
|
94
|
-
bandContainer.style.height = `${Math.max(0, totalHeight)}px`;
|
|
95
|
-
const fragment = document.createDocumentFragment();
|
|
96
|
-
const activePages = new Set();
|
|
97
|
-
// Compute band positions from accumulated snapped heights to eliminate sub-pixel gaps
|
|
98
|
-
let bandTop = this.getSnappedBandTop(activeWindow.start);
|
|
99
|
-
for (let i = activeWindow.start; i <= activeWindow.end; i++) {
|
|
100
|
-
const band = layoutState.getBand(i);
|
|
101
|
-
if (!band)
|
|
102
|
-
continue;
|
|
103
|
-
for (const slot of band.slots) {
|
|
104
|
-
activePages.add(slot.pageIndex);
|
|
105
|
-
}
|
|
106
|
-
const bandEl = this.bandElements.get(i) ?? this.createBandElement(i);
|
|
107
|
-
bandEl.style.top = displayMode === 'scroll' ? `${bandTop}px` : '0px';
|
|
108
|
-
this.updateBandElement(bandEl, band, gapSize, token);
|
|
109
|
-
fragment.appendChild(bandEl);
|
|
110
|
-
bandTop += this.snapToPixel(band.height) + snappedGap;
|
|
111
|
-
}
|
|
112
|
-
bandContainer.replaceChildren(fragment);
|
|
113
|
-
this.callbacks.cleanupInactivePages(activePages);
|
|
114
|
-
this.isApplyingLayout = false;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Create a new band element.
|
|
118
|
-
*/
|
|
119
|
-
createBandElement(bandIndex) {
|
|
120
|
-
const bandEl = document.createElement('div');
|
|
121
|
-
bandEl.className = 'udoc-band';
|
|
122
|
-
bandEl.dataset.bandIndex = String(bandIndex);
|
|
123
|
-
const inner = document.createElement('div');
|
|
124
|
-
inner.className = 'udoc-band-inner';
|
|
125
|
-
bandEl.appendChild(inner);
|
|
126
|
-
this.bandElements.set(bandIndex, bandEl);
|
|
127
|
-
return bandEl;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Update a band element with current slot content.
|
|
131
|
-
*/
|
|
132
|
-
updateBandElement(bandEl, band, gapSize, token) {
|
|
133
|
-
const inner = bandEl.firstElementChild;
|
|
134
|
-
if (!inner)
|
|
135
|
-
return;
|
|
136
|
-
const { state, annotationLayer } = this.deps;
|
|
137
|
-
const snappedHeight = this.snapToPixel(band.height);
|
|
138
|
-
const snappedWidth = this.snapToPixel(band.width);
|
|
139
|
-
const snappedGap = this.snapToPixel(gapSize);
|
|
140
|
-
bandEl.style.height = `${snappedHeight}px`;
|
|
141
|
-
inner.style.width = `${snappedWidth}px`;
|
|
142
|
-
inner.style.height = `${snappedHeight}px`;
|
|
143
|
-
inner.style.gridTemplateColumns = band.colWidths.map((w) => `${this.snapToPixel(w)}px`).join(' ');
|
|
144
|
-
inner.style.gridTemplateRows = band.rowHeights.map((h) => `${this.snapToPixel(h)}px`).join(' ');
|
|
145
|
-
inner.style.columnGap = `${snappedGap}px`;
|
|
146
|
-
inner.style.rowGap = `${snappedGap}px`;
|
|
147
|
-
// Update annotation layer zoom before rendering
|
|
148
|
-
annotationLayer.setZoom(state.get('zoom'));
|
|
149
|
-
const fragment = document.createDocumentFragment();
|
|
150
|
-
for (const slot of band.slots) {
|
|
151
|
-
const slotEl = document.createElement('div');
|
|
152
|
-
slotEl.className = 'udoc-slot';
|
|
153
|
-
slotEl.style.gridColumn = String(slot.col + 1);
|
|
154
|
-
slotEl.style.gridRow = String(slot.row + 1);
|
|
155
|
-
// Create a wrapper to hold both the page and annotation overlay
|
|
156
|
-
const wrapper = document.createElement('div');
|
|
157
|
-
wrapper.className = 'udoc-page-wrapper';
|
|
158
|
-
wrapper.style.position = 'relative';
|
|
159
|
-
wrapper.dataset.pageIndex = String(slot.pageIndex);
|
|
160
|
-
const viewElement = this.callbacks.ensurePageView(slot.pageIndex);
|
|
161
|
-
wrapper.appendChild(viewElement);
|
|
162
|
-
// Render annotations into the wrapper
|
|
163
|
-
annotationLayer.renderPageAnnotations(wrapper, slot.pageIndex);
|
|
164
|
-
slotEl.appendChild(wrapper);
|
|
165
|
-
fragment.appendChild(slotEl);
|
|
166
|
-
const displaySize = this.callbacks.getDisplaySize(slot.pageIndex);
|
|
167
|
-
this.callbacks.preparePageRender(slot.pageIndex, displaySize.width || slot.width, displaySize.height || slot.height, token);
|
|
168
|
-
}
|
|
169
|
-
inner.replaceChildren(fragment);
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Clear the display - reset all band-related DOM elements.
|
|
173
|
-
*/
|
|
174
|
-
clearDisplay() {
|
|
175
|
-
const { bandContainer, topSpacer, bottomSpacer, content } = this.deps;
|
|
176
|
-
this.bandElements.clear();
|
|
177
|
-
bandContainer.replaceChildren();
|
|
178
|
-
topSpacer.style.height = '0px';
|
|
179
|
-
bottomSpacer.style.height = '0px';
|
|
180
|
-
bandContainer.style.height = '';
|
|
181
|
-
content.style.width = '';
|
|
182
|
-
content.style.height = '';
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
//# sourceMappingURL=BandManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BandManager.js","sourceRoot":"","sources":["../../src/layout/BandManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export type LayoutMode = 'single' | 'double' | 'double-cover' | 'grid';
|
|
2
|
-
export type Rotation = 0 | 90 | 180 | 270;
|
|
3
|
-
export type PageLayout = 'default' | 'odd-pages-right' | 'odd-pages-left';
|
|
4
|
-
export interface GridOptions {
|
|
5
|
-
columns: number;
|
|
6
|
-
rows: number;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Default gap size between pages when not in seamless mode.
|
|
10
|
-
*/
|
|
11
|
-
export declare const PAGE_GAP_SIZE = 16;
|
|
12
|
-
export interface PageSize {
|
|
13
|
-
width: number;
|
|
14
|
-
height: number;
|
|
15
|
-
}
|
|
16
|
-
export interface SlotLayout {
|
|
17
|
-
pageIndex: number;
|
|
18
|
-
row: number;
|
|
19
|
-
col: number;
|
|
20
|
-
baseWidth: number;
|
|
21
|
-
baseHeight: number;
|
|
22
|
-
baseX: number;
|
|
23
|
-
baseY: number;
|
|
24
|
-
}
|
|
25
|
-
export interface BandLayout {
|
|
26
|
-
index: number;
|
|
27
|
-
slots: SlotLayout[];
|
|
28
|
-
columns: number;
|
|
29
|
-
rows: number;
|
|
30
|
-
colWidths: number[];
|
|
31
|
-
rowHeights: number[];
|
|
32
|
-
baseWidth: number;
|
|
33
|
-
baseHeight: number;
|
|
34
|
-
}
|
|
35
|
-
export interface LayoutResult {
|
|
36
|
-
bands: BandLayout[];
|
|
37
|
-
pageToBand: number[];
|
|
38
|
-
}
|
|
39
|
-
export declare class LayoutCalculator {
|
|
40
|
-
static computeLayout(pageSizes: PageSize[], layoutMode: LayoutMode, rotation: Rotation, seamless: boolean, grid?: GridOptions, pageLayout?: PageLayout): LayoutResult;
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=LayoutCalculator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LayoutCalculator.d.ts","sourceRoot":"","sources":["../../src/layout/LayoutCalculator.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,MAAM,CAAC;AACvE,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1C,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAE1E,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,MAAM,WAAW,QAAQ;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB;AA4BD,qBAAa,gBAAgB;IACzB,MAAM,CAAC,aAAa,CAChB,SAAS,EAAE,QAAQ,EAAE,EACrB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,OAAO,EACjB,IAAI,GAAE,WAA0B,EAChC,UAAU,GAAE,UAAsB,GACnC,YAAY;CAqNlB"}
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default gap size between pages when not in seamless mode.
|
|
3
|
-
*/
|
|
4
|
-
export const PAGE_GAP_SIZE = 16;
|
|
5
|
-
const DEFAULT_GRID = { columns: 1, rows: 1 };
|
|
6
|
-
function rotateSize(size, rotation) {
|
|
7
|
-
if (rotation === 90 || rotation === 270) {
|
|
8
|
-
return { width: size.height, height: size.width };
|
|
9
|
-
}
|
|
10
|
-
return size;
|
|
11
|
-
}
|
|
12
|
-
function clampGrid(value) {
|
|
13
|
-
return Number.isFinite(value) && value > 0 ? Math.floor(value) : 1;
|
|
14
|
-
}
|
|
15
|
-
export class LayoutCalculator {
|
|
16
|
-
static computeLayout(pageSizes, layoutMode, rotation, seamless, grid = DEFAULT_GRID, pageLayout = 'default') {
|
|
17
|
-
const rotatedSizes = pageSizes.map((size) => rotateSize(size, rotation));
|
|
18
|
-
const bands = [];
|
|
19
|
-
const pageToBand = new Array(pageSizes.length).fill(-1);
|
|
20
|
-
const gapSize = seamless ? 0 : PAGE_GAP_SIZE;
|
|
21
|
-
const buildBand = (bandIndex, slots, rows, columns, options = {}) => {
|
|
22
|
-
const colWidths = new Array(columns).fill(0);
|
|
23
|
-
const rowHeights = new Array(rows).fill(0);
|
|
24
|
-
for (const slot of slots) {
|
|
25
|
-
colWidths[slot.col] = Math.max(colWidths[slot.col], slot.width);
|
|
26
|
-
rowHeights[slot.row] = Math.max(rowHeights[slot.row], slot.height);
|
|
27
|
-
pageToBand[slot.pageIndex] = bandIndex;
|
|
28
|
-
}
|
|
29
|
-
// For single-page bands in double-cover mode, make both columns symmetric
|
|
30
|
-
if (options.coverRight && columns === 2) {
|
|
31
|
-
if (colWidths[0] === 0 && colWidths[1] > 0) {
|
|
32
|
-
// Cover page on right: fill left column
|
|
33
|
-
colWidths[0] = colWidths[1];
|
|
34
|
-
}
|
|
35
|
-
else if (colWidths[1] === 0 && colWidths[0] > 0) {
|
|
36
|
-
// Last page on left: fill right column
|
|
37
|
-
colWidths[1] = colWidths[0];
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (options.normalizeEmptyGrid) {
|
|
41
|
-
const maxCol = Math.max(...colWidths);
|
|
42
|
-
const maxRow = Math.max(...rowHeights);
|
|
43
|
-
for (let i = 0; i < colWidths.length; i++) {
|
|
44
|
-
if (colWidths[i] === 0) {
|
|
45
|
-
colWidths[i] = maxCol;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
for (let i = 0; i < rowHeights.length; i++) {
|
|
49
|
-
if (rowHeights[i] === 0) {
|
|
50
|
-
rowHeights[i] = maxRow;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
const colOffsets = [];
|
|
55
|
-
const rowOffsets = [];
|
|
56
|
-
let x = 0;
|
|
57
|
-
for (let col = 0; col < columns; col++) {
|
|
58
|
-
colOffsets[col] = x;
|
|
59
|
-
x += colWidths[col] + (col < columns - 1 ? gapSize : 0);
|
|
60
|
-
}
|
|
61
|
-
let y = 0;
|
|
62
|
-
for (let row = 0; row < rows; row++) {
|
|
63
|
-
rowOffsets[row] = y;
|
|
64
|
-
y += rowHeights[row] + (row < rows - 1 ? gapSize : 0);
|
|
65
|
-
}
|
|
66
|
-
const bandSlots = slots.map((slot) => ({
|
|
67
|
-
pageIndex: slot.pageIndex,
|
|
68
|
-
row: slot.row,
|
|
69
|
-
col: slot.col,
|
|
70
|
-
baseWidth: slot.width,
|
|
71
|
-
baseHeight: slot.height,
|
|
72
|
-
baseX: colOffsets[slot.col],
|
|
73
|
-
baseY: rowOffsets[slot.row],
|
|
74
|
-
}));
|
|
75
|
-
const baseWidth = colWidths.reduce((sum, width) => sum + width, 0)
|
|
76
|
-
+ Math.max(0, columns - 1) * gapSize;
|
|
77
|
-
const baseHeight = rowHeights.reduce((sum, height) => sum + height, 0)
|
|
78
|
-
+ Math.max(0, rows - 1) * gapSize;
|
|
79
|
-
bands.push({
|
|
80
|
-
index: bandIndex,
|
|
81
|
-
slots: bandSlots,
|
|
82
|
-
columns,
|
|
83
|
-
rows,
|
|
84
|
-
colWidths,
|
|
85
|
-
rowHeights,
|
|
86
|
-
baseWidth,
|
|
87
|
-
baseHeight,
|
|
88
|
-
});
|
|
89
|
-
};
|
|
90
|
-
if (layoutMode === 'single') {
|
|
91
|
-
for (let i = 0; i < rotatedSizes.length; i++) {
|
|
92
|
-
const size = rotatedSizes[i];
|
|
93
|
-
buildBand(bands.length, [{ pageIndex: i, row: 0, col: 0, width: size.width, height: size.height }], 1, 1);
|
|
94
|
-
}
|
|
95
|
-
return { bands, pageToBand };
|
|
96
|
-
}
|
|
97
|
-
if (layoutMode === 'double') {
|
|
98
|
-
let i = 0;
|
|
99
|
-
while (i < rotatedSizes.length) {
|
|
100
|
-
const left = rotatedSizes[i];
|
|
101
|
-
const isLastPageAlone = i + 1 >= rotatedSizes.length;
|
|
102
|
-
if (isLastPageAlone) {
|
|
103
|
-
// Last page alone: position on left (col 0) with symmetric columns
|
|
104
|
-
buildBand(bands.length, [{ pageIndex: i, row: 0, col: 0, width: left.width, height: left.height }], 1, 2, { coverRight: true } // Fill empty right column for symmetry
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
const right = rotatedSizes[i + 1];
|
|
109
|
-
buildBand(bands.length, [
|
|
110
|
-
{ pageIndex: i, row: 0, col: 0, width: left.width, height: left.height },
|
|
111
|
-
{ pageIndex: i + 1, row: 0, col: 1, width: right.width, height: right.height },
|
|
112
|
-
], 1, 2);
|
|
113
|
-
}
|
|
114
|
-
i += 2;
|
|
115
|
-
}
|
|
116
|
-
return { bands, pageToBand };
|
|
117
|
-
}
|
|
118
|
-
if (layoutMode === 'double-cover') {
|
|
119
|
-
// Determine cover position based on document's page layout preference
|
|
120
|
-
// odd-pages-right (default): cover on right (col 1), spreads: 2|3, 4|5...
|
|
121
|
-
// odd-pages-left: cover on left (col 0), spreads: 2|3, 4|5...
|
|
122
|
-
const coverOnRight = pageLayout !== 'odd-pages-left';
|
|
123
|
-
const coverCol = coverOnRight ? 1 : 0;
|
|
124
|
-
if (rotatedSizes.length > 0) {
|
|
125
|
-
const cover = rotatedSizes[0];
|
|
126
|
-
buildBand(bands.length, [{ pageIndex: 0, row: 0, col: coverCol, width: cover.width, height: cover.height }], 1, 2, { coverRight: coverOnRight });
|
|
127
|
-
}
|
|
128
|
-
let i = 1;
|
|
129
|
-
while (i < rotatedSizes.length) {
|
|
130
|
-
const isLastPageAlone = i + 1 >= rotatedSizes.length;
|
|
131
|
-
if (isLastPageAlone) {
|
|
132
|
-
// Last page alone: position opposite to cover for symmetry
|
|
133
|
-
// coverOnRight: last page on left (col 0)
|
|
134
|
-
// coverOnLeft: last page on right (col 1)
|
|
135
|
-
const lastCol = coverOnRight ? 0 : 1;
|
|
136
|
-
const last = rotatedSizes[i];
|
|
137
|
-
buildBand(bands.length, [{ pageIndex: i, row: 0, col: lastCol, width: last.width, height: last.height }], 1, 2, { coverRight: true } // Always fill the empty column for symmetry
|
|
138
|
-
);
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
// Normal spread: left page in col 0, right page in col 1
|
|
142
|
-
const left = rotatedSizes[i];
|
|
143
|
-
const right = rotatedSizes[i + 1];
|
|
144
|
-
buildBand(bands.length, [
|
|
145
|
-
{ pageIndex: i, row: 0, col: 0, width: left.width, height: left.height },
|
|
146
|
-
{ pageIndex: i + 1, row: 0, col: 1, width: right.width, height: right.height },
|
|
147
|
-
], 1, 2);
|
|
148
|
-
}
|
|
149
|
-
i += 2;
|
|
150
|
-
}
|
|
151
|
-
return { bands, pageToBand };
|
|
152
|
-
}
|
|
153
|
-
const columns = clampGrid(grid.columns);
|
|
154
|
-
const rows = clampGrid(grid.rows);
|
|
155
|
-
const slotsPerBand = columns * rows;
|
|
156
|
-
let index = 0;
|
|
157
|
-
while (index < rotatedSizes.length) {
|
|
158
|
-
const slots = [];
|
|
159
|
-
for (let offset = 0; offset < slotsPerBand; offset++) {
|
|
160
|
-
const pageIndex = index + offset;
|
|
161
|
-
if (pageIndex >= rotatedSizes.length)
|
|
162
|
-
break;
|
|
163
|
-
const size = rotatedSizes[pageIndex];
|
|
164
|
-
const row = Math.floor(offset / columns);
|
|
165
|
-
const col = offset % columns;
|
|
166
|
-
slots.push({
|
|
167
|
-
pageIndex,
|
|
168
|
-
row,
|
|
169
|
-
col,
|
|
170
|
-
width: size.width,
|
|
171
|
-
height: size.height,
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
buildBand(bands.length, slots, rows, columns, { normalizeEmptyGrid: true });
|
|
175
|
-
index += slotsPerBand;
|
|
176
|
-
}
|
|
177
|
-
return { bands, pageToBand };
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
//# sourceMappingURL=LayoutCalculator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LayoutCalculator.js","sourceRoot":"","sources":["../../src/layout/LayoutCalculator.ts"],"names":[],"mappings":"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"}
|