@docmentis/udoc-viewer 0.1.0
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/README.md +180 -0
- package/dist/UDocClient.d.ts +197 -0
- package/dist/UDocClient.d.ts.map +1 -0
- package/dist/UDocClient.js +170 -0
- package/dist/UDocClient.js.map +1 -0
- package/dist/UDocViewer.d.ts +196 -0
- package/dist/UDocViewer.d.ts.map +1 -0
- package/dist/UDocViewer.js +427 -0
- package/dist/UDocViewer.js.map +1 -0
- package/dist/WorkerClient.d.ts +36 -0
- package/dist/WorkerClient.d.ts.map +1 -0
- package/dist/WorkerClient.js +121 -0
- package/dist/WorkerClient.js.map +1 -0
- package/dist/annotation/AnnotationLayer.d.ts +166 -0
- package/dist/annotation/AnnotationLayer.d.ts.map +1 -0
- package/dist/annotation/AnnotationLayer.js +1090 -0
- package/dist/annotation/AnnotationLayer.js.map +1 -0
- package/dist/annotation/index.d.ts +6 -0
- package/dist/annotation/index.d.ts.map +1 -0
- package/dist/annotation/index.js +6 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/components/FloatingBar.d.ts +102 -0
- package/dist/components/FloatingBar.d.ts.map +1 -0
- package/dist/components/FloatingBar.js +513 -0
- package/dist/components/FloatingBar.js.map +1 -0
- package/dist/components/Header.d.ts +46 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +93 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/index.d.ts +6 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +4 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/panels/CommentsPanel.d.ts +33 -0
- package/dist/components/panels/CommentsPanel.d.ts.map +1 -0
- package/dist/components/panels/CommentsPanel.js +176 -0
- package/dist/components/panels/CommentsPanel.js.map +1 -0
- package/dist/components/panels/OutlinePanel.d.ts +30 -0
- package/dist/components/panels/OutlinePanel.d.ts.map +1 -0
- package/dist/components/panels/OutlinePanel.js +144 -0
- package/dist/components/panels/OutlinePanel.js.map +1 -0
- package/dist/components/panels/ThumbnailsPanel.d.ts +51 -0
- package/dist/components/panels/ThumbnailsPanel.d.ts.map +1 -0
- package/dist/components/panels/ThumbnailsPanel.js +160 -0
- package/dist/components/panels/ThumbnailsPanel.js.map +1 -0
- package/dist/components/panels/index.d.ts +7 -0
- package/dist/components/panels/index.d.ts.map +1 -0
- package/dist/components/panels/index.js +4 -0
- package/dist/components/panels/index.js.map +1 -0
- package/dist/constants.d.ts +25 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +46 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/NavigationController.d.ts +54 -0
- package/dist/core/NavigationController.d.ts.map +1 -0
- package/dist/core/NavigationController.js +145 -0
- package/dist/core/NavigationController.js.map +1 -0
- package/dist/core/PerfTimer.d.ts +12 -0
- package/dist/core/PerfTimer.d.ts.map +1 -0
- package/dist/core/PerfTimer.js +32 -0
- package/dist/core/PerfTimer.js.map +1 -0
- package/dist/core/ViewerState.d.ts +108 -0
- package/dist/core/ViewerState.d.ts.map +1 -0
- package/dist/core/ViewerState.js +179 -0
- package/dist/core/ViewerState.js.map +1 -0
- package/dist/core/constants.d.ts +24 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +42 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +11 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/types.d.ts +573 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/icons/icons.d.ts +41 -0
- package/dist/icons/icons.d.ts.map +1 -0
- package/dist/icons/icons.js +51 -0
- package/dist/icons/icons.js.map +1 -0
- package/dist/icons/index.d.ts +3 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/index.js +2 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/BandManager.d.ts +87 -0
- package/dist/layout/BandManager.d.ts.map +1 -0
- package/dist/layout/BandManager.js +185 -0
- package/dist/layout/BandManager.js.map +1 -0
- package/dist/layout/LayoutCalculator.d.ts +42 -0
- package/dist/layout/LayoutCalculator.d.ts.map +1 -0
- package/dist/layout/LayoutCalculator.js +180 -0
- package/dist/layout/LayoutCalculator.js.map +1 -0
- package/dist/layout/LayoutState.d.ts +46 -0
- package/dist/layout/LayoutState.d.ts.map +1 -0
- package/dist/layout/LayoutState.js +109 -0
- package/dist/layout/LayoutState.js.map +1 -0
- package/dist/layout/TransitionCoordinator.d.ts +11 -0
- package/dist/layout/TransitionCoordinator.d.ts.map +1 -0
- package/dist/layout/TransitionCoordinator.js +22 -0
- package/dist/layout/TransitionCoordinator.js.map +1 -0
- package/dist/layout/index.d.ts +7 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +4 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/rendering/BandManager.d.ts +87 -0
- package/dist/rendering/BandManager.d.ts.map +1 -0
- package/dist/rendering/BandManager.js +185 -0
- package/dist/rendering/BandManager.js.map +1 -0
- package/dist/rendering/PageCache.d.ts +75 -0
- package/dist/rendering/PageCache.d.ts.map +1 -0
- package/dist/rendering/PageCache.js +122 -0
- package/dist/rendering/PageCache.js.map +1 -0
- package/dist/rendering/RenderQueue.d.ts +75 -0
- package/dist/rendering/RenderQueue.d.ts.map +1 -0
- package/dist/rendering/RenderQueue.js +105 -0
- package/dist/rendering/RenderQueue.js.map +1 -0
- package/dist/rendering/ThumbnailQueue.d.ts +57 -0
- package/dist/rendering/ThumbnailQueue.d.ts.map +1 -0
- package/dist/rendering/ThumbnailQueue.js +85 -0
- package/dist/rendering/ThumbnailQueue.js.map +1 -0
- package/dist/rendering/index.d.ts +13 -0
- package/dist/rendering/index.d.ts.map +1 -0
- package/dist/rendering/index.js +10 -0
- package/dist/rendering/index.js.map +1 -0
- package/dist/rendering/types.d.ts +72 -0
- package/dist/rendering/types.d.ts.map +1 -0
- package/dist/rendering/types.js +5 -0
- package/dist/rendering/types.js.map +1 -0
- package/dist/styles/index.d.ts +6 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/styles/index.js +1221 -0
- package/dist/styles/index.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/Component.d.ts +127 -0
- package/dist/ui/Component.d.ts.map +1 -0
- package/dist/ui/Component.js +201 -0
- package/dist/ui/Component.js.map +1 -0
- package/dist/ui/annotation/AnnotationLayer.d.ts +90 -0
- package/dist/ui/annotation/AnnotationLayer.d.ts.map +1 -0
- package/dist/ui/annotation/AnnotationLayer.js +322 -0
- package/dist/ui/annotation/AnnotationLayer.js.map +1 -0
- package/dist/ui/annotation/LinkRenderer.d.ts +32 -0
- package/dist/ui/annotation/LinkRenderer.d.ts.map +1 -0
- package/dist/ui/annotation/LinkRenderer.js +74 -0
- package/dist/ui/annotation/LinkRenderer.js.map +1 -0
- package/dist/ui/annotation/MarkupRenderer.d.ts +40 -0
- package/dist/ui/annotation/MarkupRenderer.d.ts.map +1 -0
- package/dist/ui/annotation/MarkupRenderer.js +154 -0
- package/dist/ui/annotation/MarkupRenderer.js.map +1 -0
- package/dist/ui/annotation/ShapeRenderer.d.ts +46 -0
- package/dist/ui/annotation/ShapeRenderer.d.ts.map +1 -0
- package/dist/ui/annotation/ShapeRenderer.js +376 -0
- package/dist/ui/annotation/ShapeRenderer.js.map +1 -0
- package/dist/ui/annotation/TextRenderer.d.ts +36 -0
- package/dist/ui/annotation/TextRenderer.d.ts.map +1 -0
- package/dist/ui/annotation/TextRenderer.js +199 -0
- package/dist/ui/annotation/TextRenderer.js.map +1 -0
- package/dist/ui/annotation/index.d.ts +17 -0
- package/dist/ui/annotation/index.d.ts.map +1 -0
- package/dist/ui/annotation/index.js +13 -0
- package/dist/ui/annotation/index.js.map +1 -0
- package/dist/ui/annotation/utils.d.ts +40 -0
- package/dist/ui/annotation/utils.d.ts.map +1 -0
- package/dist/ui/annotation/utils.js +62 -0
- package/dist/ui/annotation/utils.js.map +1 -0
- package/dist/ui/components/CommentsContent.d.ts +35 -0
- package/dist/ui/components/CommentsContent.d.ts.map +1 -0
- package/dist/ui/components/CommentsContent.js +203 -0
- package/dist/ui/components/CommentsContent.js.map +1 -0
- package/dist/ui/components/FloatingBar.d.ts +55 -0
- package/dist/ui/components/FloatingBar.d.ts.map +1 -0
- package/dist/ui/components/FloatingBar.js +585 -0
- package/dist/ui/components/FloatingBar.js.map +1 -0
- package/dist/ui/components/Header.d.ts +29 -0
- package/dist/ui/components/Header.d.ts.map +1 -0
- package/dist/ui/components/Header.js +127 -0
- package/dist/ui/components/Header.js.map +1 -0
- package/dist/ui/components/LeftPanel.d.ts +54 -0
- package/dist/ui/components/LeftPanel.d.ts.map +1 -0
- package/dist/ui/components/LeftPanel.js +202 -0
- package/dist/ui/components/LeftPanel.js.map +1 -0
- package/dist/ui/components/OutlineContent.d.ts +34 -0
- package/dist/ui/components/OutlineContent.d.ts.map +1 -0
- package/dist/ui/components/OutlineContent.js +147 -0
- package/dist/ui/components/OutlineContent.js.map +1 -0
- package/dist/ui/components/RightPanel.d.ts +52 -0
- package/dist/ui/components/RightPanel.d.ts.map +1 -0
- package/dist/ui/components/RightPanel.js +142 -0
- package/dist/ui/components/RightPanel.js.map +1 -0
- package/dist/ui/components/Viewport.d.ts +70 -0
- package/dist/ui/components/Viewport.d.ts.map +1 -0
- package/dist/ui/components/Viewport.js +173 -0
- package/dist/ui/components/Viewport.js.map +1 -0
- package/dist/ui/components/index.d.ts +11 -0
- package/dist/ui/components/index.d.ts.map +1 -0
- package/dist/ui/components/index.js +10 -0
- package/dist/ui/components/index.js.map +1 -0
- package/dist/ui/framework/component.d.ts +68 -0
- package/dist/ui/framework/component.d.ts.map +1 -0
- package/dist/ui/framework/component.js +87 -0
- package/dist/ui/framework/component.js.map +1 -0
- package/dist/ui/framework/dom.d.ts +19 -0
- package/dist/ui/framework/dom.d.ts.map +1 -0
- package/dist/ui/framework/dom.js +29 -0
- package/dist/ui/framework/dom.js.map +1 -0
- package/dist/ui/framework/events.d.ts +18 -0
- package/dist/ui/framework/events.d.ts.map +1 -0
- package/dist/ui/framework/events.js +23 -0
- package/dist/ui/framework/events.js.map +1 -0
- package/dist/ui/framework/index.d.ts +15 -0
- package/dist/ui/framework/index.d.ts.map +1 -0
- package/dist/ui/framework/index.js +15 -0
- package/dist/ui/framework/index.js.map +1 -0
- package/dist/ui/framework/selectors.d.ts +51 -0
- package/dist/ui/framework/selectors.d.ts.map +1 -0
- package/dist/ui/framework/selectors.js +30 -0
- package/dist/ui/framework/selectors.js.map +1 -0
- package/dist/ui/framework/store.d.ts +37 -0
- package/dist/ui/framework/store.d.ts.map +1 -0
- package/dist/ui/framework/store.js +54 -0
- package/dist/ui/framework/store.js.map +1 -0
- package/dist/ui/icons/icons.d.ts +43 -0
- package/dist/ui/icons/icons.d.ts.map +1 -0
- package/dist/ui/icons/icons.js +46 -0
- package/dist/ui/icons/icons.js.map +1 -0
- package/dist/ui/icons/index.d.ts +11 -0
- package/dist/ui/icons/index.d.ts.map +1 -0
- package/dist/ui/icons/index.js +18 -0
- package/dist/ui/icons/index.js.map +1 -0
- package/dist/ui/index.d.ts +7 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +9 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/styles/base.css.d.ts +5 -0
- package/dist/ui/styles/base.css.d.ts.map +1 -0
- package/dist/ui/styles/base.css.js +49 -0
- package/dist/ui/styles/base.css.js.map +1 -0
- package/dist/ui/styles/floating-bar.css.d.ts +5 -0
- package/dist/ui/styles/floating-bar.css.d.ts.map +1 -0
- package/dist/ui/styles/floating-bar.css.js +417 -0
- package/dist/ui/styles/floating-bar.css.js.map +1 -0
- package/dist/ui/styles/header.css.d.ts +5 -0
- package/dist/ui/styles/header.css.d.ts.map +1 -0
- package/dist/ui/styles/header.css.js +49 -0
- package/dist/ui/styles/header.css.js.map +1 -0
- package/dist/ui/styles/index.d.ts +21 -0
- package/dist/ui/styles/index.d.ts.map +1 -0
- package/dist/ui/styles/index.js +48 -0
- package/dist/ui/styles/index.js.map +1 -0
- package/dist/ui/styles/panels.css.d.ts +5 -0
- package/dist/ui/styles/panels.css.d.ts.map +1 -0
- package/dist/ui/styles/panels.css.js +446 -0
- package/dist/ui/styles/panels.css.js.map +1 -0
- package/dist/ui/styles/responsive.css.d.ts +5 -0
- package/dist/ui/styles/responsive.css.d.ts.map +1 -0
- package/dist/ui/styles/responsive.css.js +201 -0
- package/dist/ui/styles/responsive.css.js.map +1 -0
- package/dist/ui/styles/variables.css.d.ts +6 -0
- package/dist/ui/styles/variables.css.d.ts.map +1 -0
- package/dist/ui/styles/variables.css.js +75 -0
- package/dist/ui/styles/variables.css.js.map +1 -0
- package/dist/ui/styles/viewport.css.d.ts +5 -0
- package/dist/ui/styles/viewport.css.d.ts.map +1 -0
- package/dist/ui/styles/viewport.css.js +87 -0
- package/dist/ui/styles/viewport.css.js.map +1 -0
- package/dist/ui/viewer/actions.d.ts +103 -0
- package/dist/ui/viewer/actions.d.ts.map +1 -0
- package/dist/ui/viewer/actions.js +2 -0
- package/dist/ui/viewer/actions.js.map +1 -0
- package/dist/ui/viewer/annotation/LinkRenderer.d.ts +9 -0
- package/dist/ui/viewer/annotation/LinkRenderer.d.ts.map +1 -0
- package/dist/ui/viewer/annotation/LinkRenderer.js +17 -0
- package/dist/ui/viewer/annotation/LinkRenderer.js.map +1 -0
- package/dist/ui/viewer/annotation/MarkupRenderer.d.ts +21 -0
- package/dist/ui/viewer/annotation/MarkupRenderer.d.ts.map +1 -0
- package/dist/ui/viewer/annotation/MarkupRenderer.js +138 -0
- package/dist/ui/viewer/annotation/MarkupRenderer.js.map +1 -0
- package/dist/ui/viewer/annotation/ShapeRenderer.d.ts +33 -0
- package/dist/ui/viewer/annotation/ShapeRenderer.d.ts.map +1 -0
- package/dist/ui/viewer/annotation/ShapeRenderer.js +378 -0
- package/dist/ui/viewer/annotation/ShapeRenderer.js.map +1 -0
- package/dist/ui/viewer/annotation/TextRenderer.d.ts +23 -0
- package/dist/ui/viewer/annotation/TextRenderer.d.ts.map +1 -0
- package/dist/ui/viewer/annotation/TextRenderer.js +196 -0
- package/dist/ui/viewer/annotation/TextRenderer.js.map +1 -0
- package/dist/ui/viewer/annotation/index.d.ts +8 -0
- package/dist/ui/viewer/annotation/index.d.ts.map +1 -0
- package/dist/ui/viewer/annotation/index.js +8 -0
- package/dist/ui/viewer/annotation/index.js.map +1 -0
- package/dist/ui/viewer/annotation/render.d.ts +24 -0
- package/dist/ui/viewer/annotation/render.d.ts.map +1 -0
- package/dist/ui/viewer/annotation/render.js +184 -0
- package/dist/ui/viewer/annotation/render.js.map +1 -0
- package/dist/ui/viewer/annotation/types.d.ts +239 -0
- package/dist/ui/viewer/annotation/types.d.ts.map +1 -0
- package/dist/ui/viewer/annotation/types.js +7 -0
- package/dist/ui/viewer/annotation/types.js.map +1 -0
- package/dist/ui/viewer/annotation/utils.d.ts +37 -0
- package/dist/ui/viewer/annotation/utils.d.ts.map +1 -0
- package/dist/ui/viewer/annotation/utils.js +82 -0
- package/dist/ui/viewer/annotation/utils.js.map +1 -0
- package/dist/ui/viewer/components/AnnotationPanel.d.ts +19 -0
- package/dist/ui/viewer/components/AnnotationPanel.d.ts.map +1 -0
- package/dist/ui/viewer/components/AnnotationPanel.js +284 -0
- package/dist/ui/viewer/components/AnnotationPanel.js.map +1 -0
- package/dist/ui/viewer/components/FloatingToolbar.d.ts +9 -0
- package/dist/ui/viewer/components/FloatingToolbar.d.ts.map +1 -0
- package/dist/ui/viewer/components/FloatingToolbar.js +305 -0
- package/dist/ui/viewer/components/FloatingToolbar.js.map +1 -0
- package/dist/ui/viewer/components/LeftPanel.d.ts +10 -0
- package/dist/ui/viewer/components/LeftPanel.d.ts.map +1 -0
- package/dist/ui/viewer/components/LeftPanel.js +165 -0
- package/dist/ui/viewer/components/LeftPanel.js.map +1 -0
- package/dist/ui/viewer/components/OutlinePanel.d.ts +10 -0
- package/dist/ui/viewer/components/OutlinePanel.d.ts.map +1 -0
- package/dist/ui/viewer/components/OutlinePanel.js +169 -0
- package/dist/ui/viewer/components/OutlinePanel.js.map +1 -0
- package/dist/ui/viewer/components/RightPanel.d.ts +9 -0
- package/dist/ui/viewer/components/RightPanel.d.ts.map +1 -0
- package/dist/ui/viewer/components/RightPanel.js +102 -0
- package/dist/ui/viewer/components/RightPanel.js.map +1 -0
- package/dist/ui/viewer/components/Spread.d.ts +41 -0
- package/dist/ui/viewer/components/Spread.d.ts.map +1 -0
- package/dist/ui/viewer/components/Spread.js +278 -0
- package/dist/ui/viewer/components/Spread.js.map +1 -0
- package/dist/ui/viewer/components/ThumbnailPanel.d.ts +11 -0
- package/dist/ui/viewer/components/ThumbnailPanel.d.ts.map +1 -0
- package/dist/ui/viewer/components/ThumbnailPanel.js +206 -0
- package/dist/ui/viewer/components/ThumbnailPanel.js.map +1 -0
- package/dist/ui/viewer/components/Toolbar.d.ts +9 -0
- package/dist/ui/viewer/components/Toolbar.d.ts.map +1 -0
- package/dist/ui/viewer/components/Toolbar.js +93 -0
- package/dist/ui/viewer/components/Toolbar.js.map +1 -0
- package/dist/ui/viewer/components/ViewModeMenu.d.ts +9 -0
- package/dist/ui/viewer/components/ViewModeMenu.d.ts.map +1 -0
- package/dist/ui/viewer/components/ViewModeMenu.js +169 -0
- package/dist/ui/viewer/components/ViewModeMenu.js.map +1 -0
- package/dist/ui/viewer/components/Viewport.d.ts +10 -0
- package/dist/ui/viewer/components/Viewport.d.ts.map +1 -0
- package/dist/ui/viewer/components/Viewport.js +793 -0
- package/dist/ui/viewer/components/Viewport.js.map +1 -0
- package/dist/ui/viewer/effects.d.ts +9 -0
- package/dist/ui/viewer/effects.d.ts.map +1 -0
- package/dist/ui/viewer/effects.js +179 -0
- package/dist/ui/viewer/effects.js.map +1 -0
- package/dist/ui/viewer/icons.d.ts +32 -0
- package/dist/ui/viewer/icons.d.ts.map +1 -0
- package/dist/ui/viewer/icons.js +44 -0
- package/dist/ui/viewer/icons.js.map +1 -0
- package/dist/ui/viewer/index.d.ts +6 -0
- package/dist/ui/viewer/index.d.ts.map +1 -0
- package/dist/ui/viewer/index.js +6 -0
- package/dist/ui/viewer/index.js.map +1 -0
- package/dist/ui/viewer/layout/index.d.ts +3 -0
- package/dist/ui/viewer/layout/index.d.ts.map +1 -0
- package/dist/ui/viewer/layout/index.js +3 -0
- package/dist/ui/viewer/layout/index.js.map +1 -0
- package/dist/ui/viewer/layout/pixelAlign.d.ts +7 -0
- package/dist/ui/viewer/layout/pixelAlign.d.ts.map +1 -0
- package/dist/ui/viewer/layout/pixelAlign.js +22 -0
- package/dist/ui/viewer/layout/pixelAlign.js.map +1 -0
- package/dist/ui/viewer/layout/spreadLayout.d.ts +93 -0
- package/dist/ui/viewer/layout/spreadLayout.d.ts.map +1 -0
- package/dist/ui/viewer/layout/spreadLayout.js +303 -0
- package/dist/ui/viewer/layout/spreadLayout.js.map +1 -0
- package/dist/ui/viewer/navigation.d.ts +80 -0
- package/dist/ui/viewer/navigation.d.ts.map +1 -0
- package/dist/ui/viewer/navigation.js +59 -0
- package/dist/ui/viewer/navigation.js.map +1 -0
- package/dist/ui/viewer/reducer.d.ts +4 -0
- package/dist/ui/viewer/reducer.d.ts.map +1 -0
- package/dist/ui/viewer/reducer.js +229 -0
- package/dist/ui/viewer/reducer.js.map +1 -0
- package/dist/ui/viewer/rendering/RenderManager.d.ts +76 -0
- package/dist/ui/viewer/rendering/RenderManager.d.ts.map +1 -0
- package/dist/ui/viewer/rendering/RenderManager.js +236 -0
- package/dist/ui/viewer/rendering/RenderManager.js.map +1 -0
- package/dist/ui/viewer/shell.d.ts +29 -0
- package/dist/ui/viewer/shell.d.ts.map +1 -0
- package/dist/ui/viewer/shell.js +70 -0
- package/dist/ui/viewer/shell.js.map +1 -0
- package/dist/ui/viewer/state.d.ts +72 -0
- package/dist/ui/viewer/state.d.ts.map +1 -0
- package/dist/ui/viewer/state.js +47 -0
- package/dist/ui/viewer/state.js.map +1 -0
- package/dist/view/LayoutCalculator.d.ts +42 -0
- package/dist/view/LayoutCalculator.d.ts.map +1 -0
- package/dist/view/LayoutCalculator.js +180 -0
- package/dist/view/LayoutCalculator.js.map +1 -0
- package/dist/view/TransitionCoordinator.d.ts +11 -0
- package/dist/view/TransitionCoordinator.d.ts.map +1 -0
- package/dist/view/TransitionCoordinator.js +22 -0
- package/dist/view/TransitionCoordinator.js.map +1 -0
- package/dist/view/ViewState.d.ts +46 -0
- package/dist/view/ViewState.d.ts.map +1 -0
- package/dist/view/ViewState.js +109 -0
- package/dist/view/ViewState.js.map +1 -0
- package/dist/view/index.d.ts +7 -0
- package/dist/view/index.d.ts.map +1 -0
- package/dist/view/index.js +4 -0
- package/dist/view/index.js.map +1 -0
- package/dist/wasm/udoc.d.ts +202 -0
- package/dist/wasm/udoc.js +929 -0
- package/dist/wasm/udoc_bg.wasm +0 -0
- package/dist/wasm/udoc_bg.wasm.d.ts +28 -0
- package/dist/worker/WorkerClient.d.ts +103 -0
- package/dist/worker/WorkerClient.d.ts.map +1 -0
- package/dist/worker/WorkerClient.js +182 -0
- package/dist/worker/WorkerClient.js.map +1 -0
- package/dist/worker/index.d.ts +4 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +2 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker/types.d.ts +81 -0
- package/dist/worker/types.d.ts.map +1 -0
- package/dist/worker/types.js +6 -0
- package/dist/worker/types.js.map +1 -0
- package/dist/worker/worker.d.ts +191 -0
- package/dist/worker/worker.d.ts.map +1 -0
- package/dist/worker/worker.js +127 -0
- package/dist/worker/worker.js.map +1 -0
- package/dist/worker.d.ts +2 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +205 -0
- package/dist/worker.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { ICONS } from '../icons';
|
|
2
|
+
/**
|
|
3
|
+
* Header bar component with panel toggles and action buttons.
|
|
4
|
+
*/
|
|
5
|
+
export class Header {
|
|
6
|
+
callbacks;
|
|
7
|
+
elements = null;
|
|
8
|
+
constructor(callbacks) {
|
|
9
|
+
this.callbacks = callbacks;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Create and return the header element.
|
|
13
|
+
*/
|
|
14
|
+
create(options) {
|
|
15
|
+
const header = document.createElement('div');
|
|
16
|
+
header.className = 'udoc-header';
|
|
17
|
+
let leftPanelToggleBtn = null;
|
|
18
|
+
let searchBtn = null;
|
|
19
|
+
let commentsBtn = null;
|
|
20
|
+
// Left panel toggle button
|
|
21
|
+
if (options.showLeftPanel) {
|
|
22
|
+
leftPanelToggleBtn = document.createElement('button');
|
|
23
|
+
leftPanelToggleBtn.className = 'udoc-header-btn';
|
|
24
|
+
leftPanelToggleBtn.innerHTML = ICONS.menu;
|
|
25
|
+
leftPanelToggleBtn.title = 'Toggle left panel';
|
|
26
|
+
leftPanelToggleBtn.addEventListener('click', () => this.callbacks.onLeftPanelToggle());
|
|
27
|
+
header.appendChild(leftPanelToggleBtn);
|
|
28
|
+
}
|
|
29
|
+
// Action buttons (right side)
|
|
30
|
+
const actions = document.createElement('div');
|
|
31
|
+
actions.className = 'udoc-header-actions';
|
|
32
|
+
// Search button (opens right panel with search tab)
|
|
33
|
+
if (options.showRightPanel) {
|
|
34
|
+
searchBtn = document.createElement('button');
|
|
35
|
+
searchBtn.className = 'udoc-header-btn';
|
|
36
|
+
searchBtn.innerHTML = ICONS.search;
|
|
37
|
+
searchBtn.title = 'Search';
|
|
38
|
+
searchBtn.addEventListener('click', () => this.callbacks.onSearchClick());
|
|
39
|
+
actions.appendChild(searchBtn);
|
|
40
|
+
// Comments button (opens right panel with comments tab)
|
|
41
|
+
commentsBtn = document.createElement('button');
|
|
42
|
+
commentsBtn.className = 'udoc-header-btn';
|
|
43
|
+
commentsBtn.innerHTML = ICONS.comments;
|
|
44
|
+
commentsBtn.title = 'Comments';
|
|
45
|
+
commentsBtn.addEventListener('click', () => this.callbacks.onCommentsClick());
|
|
46
|
+
actions.appendChild(commentsBtn);
|
|
47
|
+
}
|
|
48
|
+
// Fullscreen button
|
|
49
|
+
const fullscreenBtn = document.createElement('button');
|
|
50
|
+
fullscreenBtn.className = 'udoc-header-btn';
|
|
51
|
+
fullscreenBtn.innerHTML = ICONS.fullscreen;
|
|
52
|
+
fullscreenBtn.title = 'Fullscreen';
|
|
53
|
+
fullscreenBtn.addEventListener('click', () => this.callbacks.onFullscreenToggle());
|
|
54
|
+
actions.appendChild(fullscreenBtn);
|
|
55
|
+
header.appendChild(actions);
|
|
56
|
+
this.elements = {
|
|
57
|
+
header,
|
|
58
|
+
leftPanelToggleBtn,
|
|
59
|
+
searchBtn,
|
|
60
|
+
commentsBtn,
|
|
61
|
+
fullscreenBtn,
|
|
62
|
+
};
|
|
63
|
+
return this.elements;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Update the left panel toggle button's active state.
|
|
67
|
+
*/
|
|
68
|
+
setLeftPanelActive(active) {
|
|
69
|
+
this.elements?.leftPanelToggleBtn?.classList.toggle('active', active);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Update the comments button's active state.
|
|
73
|
+
*/
|
|
74
|
+
setCommentsActive(active) {
|
|
75
|
+
this.elements?.commentsBtn?.classList.toggle('active', active);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Update the search button's active state.
|
|
79
|
+
*/
|
|
80
|
+
setSearchActive(active) {
|
|
81
|
+
this.elements?.searchBtn?.classList.toggle('active', active);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Update the fullscreen button icon based on fullscreen state.
|
|
85
|
+
*/
|
|
86
|
+
setFullscreen(isFullscreen) {
|
|
87
|
+
if (this.elements?.fullscreenBtn) {
|
|
88
|
+
this.elements.fullscreenBtn.innerHTML = isFullscreen ? ICONS.fullscreenExit : ICONS.fullscreen;
|
|
89
|
+
this.elements.fullscreenBtn.title = isFullscreen ? 'Exit fullscreen' : 'Fullscreen';
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=Header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/components/Header.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './panels';
|
|
2
|
+
export { Header } from './Header';
|
|
3
|
+
export type { HeaderCallbacks, HeaderOptions, HeaderElements } from './Header';
|
|
4
|
+
export { FloatingBar } from './FloatingBar';
|
|
5
|
+
export type { FloatingBarCallbacks, FloatingBarState, FloatingBarElements } from './FloatingBar';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Annotation } from '../../types';
|
|
2
|
+
export interface CommentsPanelCallbacks {
|
|
3
|
+
onPageClick: (pageIndex: number) => void;
|
|
4
|
+
getAnnotationsByPage: () => Map<number, Annotation[]>;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Panel component for displaying document comments/annotations.
|
|
8
|
+
*/
|
|
9
|
+
export declare class CommentsPanel {
|
|
10
|
+
private container;
|
|
11
|
+
private callbacks;
|
|
12
|
+
constructor(callbacks: CommentsPanelCallbacks);
|
|
13
|
+
/**
|
|
14
|
+
* Render comments into the given container.
|
|
15
|
+
*/
|
|
16
|
+
render(container: HTMLElement): void;
|
|
17
|
+
/**
|
|
18
|
+
* Clear the comments panel.
|
|
19
|
+
*/
|
|
20
|
+
clear(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Destroy the panel and release resources.
|
|
23
|
+
*/
|
|
24
|
+
destroy(): void;
|
|
25
|
+
private renderPlaceholder;
|
|
26
|
+
/**
|
|
27
|
+
* Render a single comment item with its replies.
|
|
28
|
+
* @param depth - Nesting depth (0 = top-level, 1+ = replies)
|
|
29
|
+
*/
|
|
30
|
+
private renderCommentItem;
|
|
31
|
+
private getAnnotationTypeIcon;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=CommentsPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommentsPanel.d.ts","sourceRoot":"","sources":["../../../src/components/panels/CommentsPanel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,WAAW,sBAAsB;IACnC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,oBAAoB,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;CACzD;AAED;;GAEG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,SAAS,CAAyB;gBAE9B,SAAS,EAAE,sBAAsB;IAI7C;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAyDpC;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,iBAAiB;IAOzB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA4FzB,OAAO,CAAC,qBAAqB;CAchC"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { ICONS } from '../../icons';
|
|
2
|
+
/**
|
|
3
|
+
* Panel component for displaying document comments/annotations.
|
|
4
|
+
*/
|
|
5
|
+
export class CommentsPanel {
|
|
6
|
+
container = null;
|
|
7
|
+
callbacks;
|
|
8
|
+
constructor(callbacks) {
|
|
9
|
+
this.callbacks = callbacks;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Render comments into the given container.
|
|
13
|
+
*/
|
|
14
|
+
render(container) {
|
|
15
|
+
this.container = container;
|
|
16
|
+
container.innerHTML = '';
|
|
17
|
+
const annotationsByPage = this.callbacks.getAnnotationsByPage();
|
|
18
|
+
if (annotationsByPage.size === 0) {
|
|
19
|
+
this.renderPlaceholder(container);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const list = document.createElement('div');
|
|
23
|
+
list.className = 'udoc-comments-list';
|
|
24
|
+
// Sort pages by index
|
|
25
|
+
const sortedPages = Array.from(annotationsByPage.keys()).sort((a, b) => a - b);
|
|
26
|
+
for (const pageIndex of sortedPages) {
|
|
27
|
+
const annotations = annotationsByPage.get(pageIndex);
|
|
28
|
+
// Page group container
|
|
29
|
+
const pageGroup = document.createElement('div');
|
|
30
|
+
pageGroup.className = 'udoc-comments-page-group';
|
|
31
|
+
// Page header (foldable)
|
|
32
|
+
const pageHeader = document.createElement('div');
|
|
33
|
+
pageHeader.className = 'udoc-comments-page-header';
|
|
34
|
+
pageHeader.innerHTML = `${ICONS.chevronDown}<span>Page ${pageIndex + 1}</span><span class="udoc-comments-page-count">${annotations.length}</span>`;
|
|
35
|
+
pageGroup.appendChild(pageHeader);
|
|
36
|
+
// Page content container
|
|
37
|
+
const pageContent = document.createElement('div');
|
|
38
|
+
pageContent.className = 'udoc-comments-page-content';
|
|
39
|
+
// Render each annotation
|
|
40
|
+
for (const annotation of annotations) {
|
|
41
|
+
this.renderCommentItem(pageContent, annotation, pageIndex, 0);
|
|
42
|
+
}
|
|
43
|
+
pageGroup.appendChild(pageContent);
|
|
44
|
+
// Toggle click handler for page header
|
|
45
|
+
pageHeader.addEventListener('click', () => {
|
|
46
|
+
const isCollapsed = pageGroup.classList.contains('udoc-comments-page-collapsed');
|
|
47
|
+
if (isCollapsed) {
|
|
48
|
+
pageGroup.classList.remove('udoc-comments-page-collapsed');
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
pageGroup.classList.add('udoc-comments-page-collapsed');
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
list.appendChild(pageGroup);
|
|
55
|
+
}
|
|
56
|
+
container.appendChild(list);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Clear the comments panel.
|
|
60
|
+
*/
|
|
61
|
+
clear() {
|
|
62
|
+
if (this.container) {
|
|
63
|
+
this.container.innerHTML = '';
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Destroy the panel and release resources.
|
|
68
|
+
*/
|
|
69
|
+
destroy() {
|
|
70
|
+
this.clear();
|
|
71
|
+
this.container = null;
|
|
72
|
+
}
|
|
73
|
+
renderPlaceholder(container) {
|
|
74
|
+
const placeholder = document.createElement('div');
|
|
75
|
+
placeholder.className = 'udoc-panel-placeholder';
|
|
76
|
+
placeholder.innerHTML = `${ICONS.comments}<div>Comments</div><div>No comments in this document</div>`;
|
|
77
|
+
container.appendChild(placeholder);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Render a single comment item with its replies.
|
|
81
|
+
* @param depth - Nesting depth (0 = top-level, 1+ = replies)
|
|
82
|
+
*/
|
|
83
|
+
renderCommentItem(container, annotation, pageIndex, depth = 0) {
|
|
84
|
+
const item = document.createElement('div');
|
|
85
|
+
item.className = depth > 0 ? `udoc-comment-item udoc-comment-reply udoc-comment-depth-${Math.min(depth, 3)}` : 'udoc-comment-item';
|
|
86
|
+
// Icon on the left
|
|
87
|
+
const icon = document.createElement('div');
|
|
88
|
+
icon.className = 'udoc-comment-icon';
|
|
89
|
+
icon.innerHTML = this.getAnnotationTypeIcon(annotation.type);
|
|
90
|
+
item.appendChild(icon);
|
|
91
|
+
// Body container for title, contents, and toggle button
|
|
92
|
+
const body = document.createElement('div');
|
|
93
|
+
body.className = 'udoc-comment-body';
|
|
94
|
+
// Header with title (author first, fallback to subject) and status badge
|
|
95
|
+
const header = document.createElement('div');
|
|
96
|
+
header.className = 'udoc-comment-header';
|
|
97
|
+
const meta = annotation.metadata;
|
|
98
|
+
const title = meta?.author || meta?.subject;
|
|
99
|
+
if (title) {
|
|
100
|
+
const titleEl = document.createElement('span');
|
|
101
|
+
titleEl.className = 'udoc-comment-author';
|
|
102
|
+
titleEl.textContent = title;
|
|
103
|
+
header.appendChild(titleEl);
|
|
104
|
+
}
|
|
105
|
+
// Status badge
|
|
106
|
+
if (meta?.state) {
|
|
107
|
+
const badge = document.createElement('span');
|
|
108
|
+
badge.className = `udoc-comment-status udoc-comment-status-${meta.state.toLowerCase()}`;
|
|
109
|
+
badge.textContent = meta.state;
|
|
110
|
+
header.appendChild(badge);
|
|
111
|
+
}
|
|
112
|
+
body.appendChild(header);
|
|
113
|
+
// Contents
|
|
114
|
+
if (meta?.contents) {
|
|
115
|
+
const contents = document.createElement('div');
|
|
116
|
+
contents.className = 'udoc-comment-contents';
|
|
117
|
+
contents.textContent = meta.contents;
|
|
118
|
+
body.appendChild(contents);
|
|
119
|
+
}
|
|
120
|
+
// Reply toggle button (inside body so it aligns with content)
|
|
121
|
+
if (annotation.replies && annotation.replies.length > 0) {
|
|
122
|
+
const toggleBtn = document.createElement('button');
|
|
123
|
+
toggleBtn.className = 'udoc-comment-toggle';
|
|
124
|
+
toggleBtn.innerHTML = `${ICONS.chevronRight}<span>${annotation.replies.length} ${annotation.replies.length === 1 ? 'reply' : 'replies'}</span>`;
|
|
125
|
+
toggleBtn.title = 'Show replies';
|
|
126
|
+
body.appendChild(toggleBtn);
|
|
127
|
+
}
|
|
128
|
+
item.appendChild(body);
|
|
129
|
+
// Click to navigate
|
|
130
|
+
item.addEventListener('click', (e) => {
|
|
131
|
+
e.stopPropagation();
|
|
132
|
+
this.callbacks.onPageClick(pageIndex);
|
|
133
|
+
});
|
|
134
|
+
container.appendChild(item);
|
|
135
|
+
// Render replies (foldable, collapsed by default)
|
|
136
|
+
if (annotation.replies && annotation.replies.length > 0) {
|
|
137
|
+
const toggleBtn = body.querySelector('.udoc-comment-toggle');
|
|
138
|
+
const repliesContainer = document.createElement('div');
|
|
139
|
+
repliesContainer.className = 'udoc-comment-replies udoc-comment-replies-collapsed';
|
|
140
|
+
for (const reply of annotation.replies) {
|
|
141
|
+
this.renderCommentItem(repliesContainer, reply, pageIndex, depth + 1);
|
|
142
|
+
}
|
|
143
|
+
container.appendChild(repliesContainer);
|
|
144
|
+
// Toggle click handler
|
|
145
|
+
toggleBtn.addEventListener('click', (e) => {
|
|
146
|
+
e.stopPropagation();
|
|
147
|
+
const isCollapsed = repliesContainer.classList.contains('udoc-comment-replies-collapsed');
|
|
148
|
+
if (isCollapsed) {
|
|
149
|
+
repliesContainer.classList.remove('udoc-comment-replies-collapsed');
|
|
150
|
+
toggleBtn.classList.add('udoc-comment-toggle-expanded');
|
|
151
|
+
toggleBtn.title = 'Hide replies';
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
repliesContainer.classList.add('udoc-comment-replies-collapsed');
|
|
155
|
+
toggleBtn.classList.remove('udoc-comment-toggle-expanded');
|
|
156
|
+
toggleBtn.title = 'Show replies';
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
getAnnotationTypeIcon(type) {
|
|
162
|
+
switch (type) {
|
|
163
|
+
case 'Text':
|
|
164
|
+
case 'FreeText':
|
|
165
|
+
return ICONS.stickyNote;
|
|
166
|
+
case 'Highlight':
|
|
167
|
+
case 'Underline':
|
|
168
|
+
case 'StrikeOut':
|
|
169
|
+
case 'Squiggly':
|
|
170
|
+
return ICONS.annotations;
|
|
171
|
+
default:
|
|
172
|
+
return ICONS.comments;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=CommentsPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommentsPanel.js","sourceRoot":"","sources":["../../../src/components/panels/CommentsPanel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { OutlineItem, Destination } from '../../types';
|
|
2
|
+
export interface OutlinePanelCallbacks {
|
|
3
|
+
onNavigate: (destination: Destination) => void;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Panel component for displaying document outline (table of contents).
|
|
7
|
+
*/
|
|
8
|
+
export declare class OutlinePanel {
|
|
9
|
+
private container;
|
|
10
|
+
private callbacks;
|
|
11
|
+
private collapsedItems;
|
|
12
|
+
constructor(callbacks: OutlinePanelCallbacks);
|
|
13
|
+
/**
|
|
14
|
+
* Render the outline into the given container.
|
|
15
|
+
*/
|
|
16
|
+
render(container: HTMLElement, items: OutlineItem[]): void;
|
|
17
|
+
/**
|
|
18
|
+
* Clear the outline panel.
|
|
19
|
+
*/
|
|
20
|
+
clear(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Destroy the panel and release resources.
|
|
23
|
+
*/
|
|
24
|
+
destroy(): void;
|
|
25
|
+
private renderPlaceholder;
|
|
26
|
+
private initializeCollapseState;
|
|
27
|
+
private renderItems;
|
|
28
|
+
private toggleItem;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=OutlinePanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutlinePanel.d.ts","sourceRoot":"","sources":["../../../src/components/panels/OutlinePanel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG5D,MAAM,WAAW,qBAAqB;IAClC,UAAU,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;CAClD;AAED;;GAEG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,cAAc,CAA0B;gBAEpC,SAAS,EAAE,qBAAqB;IAI5C;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI;IAsB1D;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,WAAW;IAkEnB,OAAO,CAAC,UAAU;CAmBrB"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { ICONS } from '../../icons';
|
|
2
|
+
/**
|
|
3
|
+
* Panel component for displaying document outline (table of contents).
|
|
4
|
+
*/
|
|
5
|
+
export class OutlinePanel {
|
|
6
|
+
container = null;
|
|
7
|
+
callbacks;
|
|
8
|
+
collapsedItems = new Set();
|
|
9
|
+
constructor(callbacks) {
|
|
10
|
+
this.callbacks = callbacks;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Render the outline into the given container.
|
|
14
|
+
*/
|
|
15
|
+
render(container, items) {
|
|
16
|
+
this.container = container;
|
|
17
|
+
container.innerHTML = '';
|
|
18
|
+
if (items.length === 0) {
|
|
19
|
+
this.renderPlaceholder(container);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
// Initialize collapsed state from PDF data
|
|
23
|
+
this.initializeCollapseState(items, '');
|
|
24
|
+
// Create outline container
|
|
25
|
+
const outlineEl = document.createElement('div');
|
|
26
|
+
outlineEl.className = 'udoc-outline';
|
|
27
|
+
// Render outline items recursively
|
|
28
|
+
this.renderItems(outlineEl, items, 0);
|
|
29
|
+
container.appendChild(outlineEl);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Clear the outline panel.
|
|
33
|
+
*/
|
|
34
|
+
clear() {
|
|
35
|
+
if (this.container) {
|
|
36
|
+
this.container.innerHTML = '';
|
|
37
|
+
}
|
|
38
|
+
this.collapsedItems.clear();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Destroy the panel and release resources.
|
|
42
|
+
*/
|
|
43
|
+
destroy() {
|
|
44
|
+
this.clear();
|
|
45
|
+
this.container = null;
|
|
46
|
+
}
|
|
47
|
+
renderPlaceholder(container) {
|
|
48
|
+
const placeholder = document.createElement('div');
|
|
49
|
+
placeholder.className = 'udoc-panel-placeholder';
|
|
50
|
+
placeholder.innerHTML = `${ICONS.outline}<div>Outline</div><div>No outline available</div>`;
|
|
51
|
+
container.appendChild(placeholder);
|
|
52
|
+
}
|
|
53
|
+
initializeCollapseState(items, pathPrefix) {
|
|
54
|
+
for (let i = 0; i < items.length; i++) {
|
|
55
|
+
const item = items[i];
|
|
56
|
+
const itemPath = pathPrefix ? `${pathPrefix}.${i}` : `${i}`;
|
|
57
|
+
// If the PDF specifies this item should be initially collapsed, add to set
|
|
58
|
+
if (item.initiallyCollapsed && item.children && item.children.length > 0) {
|
|
59
|
+
this.collapsedItems.add(itemPath);
|
|
60
|
+
}
|
|
61
|
+
// Recurse into children
|
|
62
|
+
if (item.children && item.children.length > 0) {
|
|
63
|
+
this.initializeCollapseState(item.children, itemPath);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
renderItems(container, items, level, pathPrefix = '') {
|
|
68
|
+
for (let i = 0; i < items.length; i++) {
|
|
69
|
+
const item = items[i];
|
|
70
|
+
const itemPath = pathPrefix ? `${pathPrefix}.${i}` : `${i}`;
|
|
71
|
+
const hasChildren = item.children && item.children.length > 0;
|
|
72
|
+
const isCollapsed = this.collapsedItems.has(itemPath);
|
|
73
|
+
// Create node container (item + children)
|
|
74
|
+
const nodeEl = document.createElement('div');
|
|
75
|
+
nodeEl.className = 'udoc-outline-node';
|
|
76
|
+
// Create outline item element
|
|
77
|
+
const itemEl = document.createElement('div');
|
|
78
|
+
itemEl.className = 'udoc-outline-item';
|
|
79
|
+
itemEl.style.paddingLeft = `${12 + level * 16}px`;
|
|
80
|
+
// Children element reference for toggle
|
|
81
|
+
let childrenEl = null;
|
|
82
|
+
// Add expand/collapse toggle for items with children
|
|
83
|
+
if (hasChildren) {
|
|
84
|
+
const toggle = document.createElement('span');
|
|
85
|
+
toggle.className = 'udoc-outline-toggle' + (isCollapsed ? ' collapsed' : '');
|
|
86
|
+
toggle.innerHTML = ICONS.chevronDown;
|
|
87
|
+
toggle.addEventListener('click', (e) => {
|
|
88
|
+
e.stopPropagation();
|
|
89
|
+
this.toggleItem(itemPath, toggle, childrenEl);
|
|
90
|
+
});
|
|
91
|
+
itemEl.appendChild(toggle);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// Placeholder to maintain alignment
|
|
95
|
+
const placeholder = document.createElement('span');
|
|
96
|
+
placeholder.className = 'udoc-outline-toggle-placeholder';
|
|
97
|
+
itemEl.appendChild(placeholder);
|
|
98
|
+
}
|
|
99
|
+
// Title text
|
|
100
|
+
const title = document.createElement('span');
|
|
101
|
+
title.className = 'udoc-outline-title';
|
|
102
|
+
title.textContent = item.title;
|
|
103
|
+
itemEl.appendChild(title);
|
|
104
|
+
// Make clickable if has destination
|
|
105
|
+
if (item.destination) {
|
|
106
|
+
itemEl.classList.add('clickable');
|
|
107
|
+
const dest = item.destination;
|
|
108
|
+
itemEl.addEventListener('click', (e) => {
|
|
109
|
+
e.stopPropagation();
|
|
110
|
+
this.callbacks.onNavigate(dest);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
nodeEl.appendChild(itemEl);
|
|
114
|
+
// Render children container if any
|
|
115
|
+
if (hasChildren) {
|
|
116
|
+
childrenEl = document.createElement('div');
|
|
117
|
+
childrenEl.className = 'udoc-outline-children' + (isCollapsed ? ' collapsed' : '');
|
|
118
|
+
this.renderItems(childrenEl, item.children, level + 1, itemPath);
|
|
119
|
+
nodeEl.appendChild(childrenEl);
|
|
120
|
+
}
|
|
121
|
+
container.appendChild(nodeEl);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
toggleItem(itemPath, toggle, childrenEl) {
|
|
125
|
+
const isCollapsed = this.collapsedItems.has(itemPath);
|
|
126
|
+
if (isCollapsed) {
|
|
127
|
+
// Expand
|
|
128
|
+
this.collapsedItems.delete(itemPath);
|
|
129
|
+
toggle.classList.remove('collapsed');
|
|
130
|
+
if (childrenEl) {
|
|
131
|
+
childrenEl.classList.remove('collapsed');
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
// Collapse
|
|
136
|
+
this.collapsedItems.add(itemPath);
|
|
137
|
+
toggle.classList.add('collapsed');
|
|
138
|
+
if (childrenEl) {
|
|
139
|
+
childrenEl.classList.add('collapsed');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=OutlinePanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutlinePanel.js","sourceRoot":"","sources":["../../../src/components/panels/OutlinePanel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export interface ThumbnailsPanelCallbacks {
|
|
2
|
+
onPageClick: (pageIndex: number) => void;
|
|
3
|
+
getPageSize: (pageIndex: number) => {
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
};
|
|
7
|
+
renderThumbnail: (pageIndex: number, width: number, height: number) => Promise<string>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Panel component for displaying page thumbnails with lazy loading.
|
|
11
|
+
*/
|
|
12
|
+
export declare class ThumbnailsPanel {
|
|
13
|
+
private container;
|
|
14
|
+
private callbacks;
|
|
15
|
+
private observer;
|
|
16
|
+
private blobUrls;
|
|
17
|
+
private queue;
|
|
18
|
+
private isRendering;
|
|
19
|
+
private pauseRendering;
|
|
20
|
+
private currentPage;
|
|
21
|
+
private pageCount;
|
|
22
|
+
constructor(callbacks: ThumbnailsPanelCallbacks);
|
|
23
|
+
/**
|
|
24
|
+
* Render thumbnails into the given container.
|
|
25
|
+
*/
|
|
26
|
+
render(container: HTMLElement, pageCount: number, currentPage: number): void;
|
|
27
|
+
/**
|
|
28
|
+
* Update the currently selected page and scroll it into view.
|
|
29
|
+
* @param scrollBehavior - 'auto' for instant scroll, 'smooth' for animated
|
|
30
|
+
*/
|
|
31
|
+
setCurrentPage(pageIndex: number, scrollBehavior?: ScrollBehavior): void;
|
|
32
|
+
/**
|
|
33
|
+
* Pause thumbnail rendering (e.g., during scroll).
|
|
34
|
+
*/
|
|
35
|
+
pause(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Resume thumbnail rendering.
|
|
38
|
+
*/
|
|
39
|
+
resume(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Clear all thumbnails and release resources.
|
|
42
|
+
*/
|
|
43
|
+
clear(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Destroy the panel and release all resources.
|
|
46
|
+
*/
|
|
47
|
+
destroy(): void;
|
|
48
|
+
private enqueueThumbnail;
|
|
49
|
+
private processQueue;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=ThumbnailsPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThumbnailsPanel.d.ts","sourceRoot":"","sources":["../../../src/components/panels/ThumbnailsPanel.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,wBAAwB;IACrC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1F;AASD;;GAEG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAAK;gBAEV,SAAS,EAAE,wBAAwB;IAI/C;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAoE5E;;;OAGG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,GAAE,cAAyB,GAAG,IAAI;IAelF;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,MAAM,IAAI,IAAI;IAKd;;OAEG;IACH,KAAK,IAAI,IAAI;IAuBb;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,gBAAgB;YAKV,YAAY;CAkB7B"}
|