@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,160 @@
|
|
|
1
|
+
import { THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT } from '../../constants';
|
|
2
|
+
/**
|
|
3
|
+
* Panel component for displaying page thumbnails with lazy loading.
|
|
4
|
+
*/
|
|
5
|
+
export class ThumbnailsPanel {
|
|
6
|
+
container = null;
|
|
7
|
+
callbacks;
|
|
8
|
+
observer = null;
|
|
9
|
+
blobUrls = new Map();
|
|
10
|
+
queue = [];
|
|
11
|
+
isRendering = false;
|
|
12
|
+
pauseRendering = false;
|
|
13
|
+
currentPage = 0;
|
|
14
|
+
pageCount = 0;
|
|
15
|
+
constructor(callbacks) {
|
|
16
|
+
this.callbacks = callbacks;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Render thumbnails into the given container.
|
|
20
|
+
*/
|
|
21
|
+
render(container, pageCount, currentPage) {
|
|
22
|
+
this.container = container;
|
|
23
|
+
this.pageCount = pageCount;
|
|
24
|
+
this.currentPage = currentPage;
|
|
25
|
+
this.clear();
|
|
26
|
+
// Set up IntersectionObserver for lazy loading
|
|
27
|
+
this.observer = new IntersectionObserver((entries) => {
|
|
28
|
+
for (const entry of entries) {
|
|
29
|
+
if (entry.isIntersecting) {
|
|
30
|
+
const img = entry.target;
|
|
31
|
+
const pageIndex = parseInt(img.dataset.pageIndex, 10);
|
|
32
|
+
const width = parseInt(img.dataset.thumbWidth, 10);
|
|
33
|
+
const height = parseInt(img.dataset.thumbHeight, 10);
|
|
34
|
+
// Stop observing this thumbnail
|
|
35
|
+
this.observer?.unobserve(img);
|
|
36
|
+
// Queue the thumbnail for rendering
|
|
37
|
+
this.enqueueThumbnail(pageIndex, img, width, height);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}, {
|
|
41
|
+
root: container.parentElement, // The panel element
|
|
42
|
+
rootMargin: '100px', // Pre-load thumbnails 100px before they become visible
|
|
43
|
+
});
|
|
44
|
+
for (let i = 0; i < pageCount; i++) {
|
|
45
|
+
const { width: pageWidth, height: pageHeight } = this.callbacks.getPageSize(i);
|
|
46
|
+
// Calculate thumbnail size maintaining aspect ratio
|
|
47
|
+
const scale = Math.min(THUMBNAIL_WIDTH / pageWidth, THUMBNAIL_HEIGHT / pageHeight);
|
|
48
|
+
const thumbWidth = Math.round(pageWidth * scale);
|
|
49
|
+
const thumbHeight = Math.round(pageHeight * scale);
|
|
50
|
+
// Create thumbnail container
|
|
51
|
+
const thumb = document.createElement('div');
|
|
52
|
+
thumb.className = 'udoc-thumbnail';
|
|
53
|
+
if (i === currentPage) {
|
|
54
|
+
thumb.classList.add('selected');
|
|
55
|
+
}
|
|
56
|
+
thumb.addEventListener('click', () => this.callbacks.onPageClick(i));
|
|
57
|
+
// Create placeholder image with data attributes for lazy loading
|
|
58
|
+
const img = document.createElement('img');
|
|
59
|
+
img.style.maxWidth = `${thumbWidth}px`;
|
|
60
|
+
img.style.aspectRatio = `${thumbWidth} / ${thumbHeight}`;
|
|
61
|
+
img.alt = `Page ${i + 1}`;
|
|
62
|
+
img.dataset.pageIndex = String(i);
|
|
63
|
+
img.dataset.thumbWidth = String(thumbWidth);
|
|
64
|
+
img.dataset.thumbHeight = String(thumbHeight);
|
|
65
|
+
// Page number label
|
|
66
|
+
const label = document.createElement('div');
|
|
67
|
+
label.className = 'udoc-thumbnail-label';
|
|
68
|
+
label.textContent = String(i + 1);
|
|
69
|
+
thumb.append(img, label);
|
|
70
|
+
container.appendChild(thumb);
|
|
71
|
+
// Observe the image for lazy loading
|
|
72
|
+
this.observer.observe(img);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Update the currently selected page and scroll it into view.
|
|
77
|
+
* @param scrollBehavior - 'auto' for instant scroll, 'smooth' for animated
|
|
78
|
+
*/
|
|
79
|
+
setCurrentPage(pageIndex, scrollBehavior = 'smooth') {
|
|
80
|
+
if (!this.container)
|
|
81
|
+
return;
|
|
82
|
+
if (this.currentPage === pageIndex)
|
|
83
|
+
return;
|
|
84
|
+
this.currentPage = pageIndex;
|
|
85
|
+
const thumbnails = this.container.querySelectorAll('.udoc-thumbnail');
|
|
86
|
+
thumbnails.forEach((thumb, index) => {
|
|
87
|
+
thumb.classList.toggle('selected', index === pageIndex);
|
|
88
|
+
});
|
|
89
|
+
// Scroll selected thumbnail into view
|
|
90
|
+
const selected = this.container.querySelector('.udoc-thumbnail.selected');
|
|
91
|
+
selected?.scrollIntoView({ block: 'nearest', behavior: scrollBehavior });
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Pause thumbnail rendering (e.g., during scroll).
|
|
95
|
+
*/
|
|
96
|
+
pause() {
|
|
97
|
+
this.pauseRendering = true;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Resume thumbnail rendering.
|
|
101
|
+
*/
|
|
102
|
+
resume() {
|
|
103
|
+
this.pauseRendering = false;
|
|
104
|
+
this.processQueue();
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Clear all thumbnails and release resources.
|
|
108
|
+
*/
|
|
109
|
+
clear() {
|
|
110
|
+
// Disconnect observer
|
|
111
|
+
if (this.observer) {
|
|
112
|
+
this.observer.disconnect();
|
|
113
|
+
this.observer = null;
|
|
114
|
+
}
|
|
115
|
+
// Revoke all blob URLs
|
|
116
|
+
for (const url of this.blobUrls.values()) {
|
|
117
|
+
URL.revokeObjectURL(url);
|
|
118
|
+
}
|
|
119
|
+
this.blobUrls.clear();
|
|
120
|
+
// Clear queue
|
|
121
|
+
this.queue = [];
|
|
122
|
+
this.isRendering = false;
|
|
123
|
+
// Clear container
|
|
124
|
+
if (this.container) {
|
|
125
|
+
this.container.innerHTML = '';
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Destroy the panel and release all resources.
|
|
130
|
+
*/
|
|
131
|
+
destroy() {
|
|
132
|
+
this.clear();
|
|
133
|
+
this.container = null;
|
|
134
|
+
}
|
|
135
|
+
enqueueThumbnail(pageIndex, img, width, height) {
|
|
136
|
+
this.queue.push({ pageIndex, img, width, height });
|
|
137
|
+
this.processQueue();
|
|
138
|
+
}
|
|
139
|
+
async processQueue() {
|
|
140
|
+
if (this.pauseRendering || this.isRendering)
|
|
141
|
+
return;
|
|
142
|
+
const next = this.queue.shift();
|
|
143
|
+
if (!next)
|
|
144
|
+
return;
|
|
145
|
+
this.isRendering = true;
|
|
146
|
+
try {
|
|
147
|
+
const url = await this.callbacks.renderThumbnail(next.pageIndex, next.width, next.height);
|
|
148
|
+
this.blobUrls.set(next.pageIndex, url);
|
|
149
|
+
next.img.src = url;
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
console.error(`Failed to render thumbnail for page ${next.pageIndex}:`, error);
|
|
153
|
+
}
|
|
154
|
+
finally {
|
|
155
|
+
this.isRendering = false;
|
|
156
|
+
this.processQueue();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=ThumbnailsPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThumbnailsPanel.js","sourceRoot":"","sources":["../../../src/components/panels/ThumbnailsPanel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ThumbnailsPanel } from './ThumbnailsPanel';
|
|
2
|
+
export type { ThumbnailsPanelCallbacks } from './ThumbnailsPanel';
|
|
3
|
+
export { OutlinePanel } from './OutlinePanel';
|
|
4
|
+
export type { OutlinePanelCallbacks } from './OutlinePanel';
|
|
5
|
+
export { CommentsPanel } from './CommentsPanel';
|
|
6
|
+
export type { CommentsPanelCallbacks } from './CommentsPanel';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/panels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/panels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { UDocViewerOptions } from './types';
|
|
2
|
+
export { PAGE_GAP_SIZE } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Zoom levels for stepped zoom (used by zoomIn/zoomOut buttons).
|
|
5
|
+
*/
|
|
6
|
+
export declare const ZOOM_LEVELS: number[];
|
|
7
|
+
/**
|
|
8
|
+
* Default options for UDocViewer.
|
|
9
|
+
*/
|
|
10
|
+
export declare const DEFAULT_OPTIONS: Required<UDocViewerOptions>;
|
|
11
|
+
/**
|
|
12
|
+
* PDF uses 72 points per inch, CSS uses 96 pixels per inch.
|
|
13
|
+
* This factor converts PDF points to CSS pixels at "actual size" (100% zoom).
|
|
14
|
+
*/
|
|
15
|
+
export declare const POINTS_TO_CSS_PIXELS: number;
|
|
16
|
+
/**
|
|
17
|
+
* Empty 1x1 transparent GIF used as placeholder image.
|
|
18
|
+
*/
|
|
19
|
+
export declare const EMPTY_IMAGE_DATA_URL = "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";
|
|
20
|
+
/**
|
|
21
|
+
* Thumbnail display dimensions.
|
|
22
|
+
*/
|
|
23
|
+
export declare const THUMBNAIL_WIDTH = 120;
|
|
24
|
+
export declare const THUMBNAIL_HEIGHT = 160;
|
|
25
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,WAAW,UAA6D,CAAC;AAEtF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAqBvD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAU,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,oBAAoB,+DAA+D,CAAC;AAEjG;;GAEG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,gBAAgB,MAAM,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Re-export PAGE_GAP_SIZE for convenience
|
|
2
|
+
export { PAGE_GAP_SIZE } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Zoom levels for stepped zoom (used by zoomIn/zoomOut buttons).
|
|
5
|
+
*/
|
|
6
|
+
export const ZOOM_LEVELS = [0.1, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 2.0, 3.0, 4.0, 5.0];
|
|
7
|
+
/**
|
|
8
|
+
* Default options for UDocViewer.
|
|
9
|
+
*/
|
|
10
|
+
export const DEFAULT_OPTIONS = {
|
|
11
|
+
initialZoom: 1.0,
|
|
12
|
+
initialZoomMode: 'fit-page',
|
|
13
|
+
displayMode: 'scroll',
|
|
14
|
+
layoutMode: 'single',
|
|
15
|
+
rotation: 0,
|
|
16
|
+
seamless: false,
|
|
17
|
+
grid: { columns: 2, rows: 2 },
|
|
18
|
+
maxZoom: 5.0,
|
|
19
|
+
minZoom: 0.05,
|
|
20
|
+
zoomStep: 0.25,
|
|
21
|
+
renderFormat: 'png',
|
|
22
|
+
pageCacheSize: 100,
|
|
23
|
+
showHeader: true,
|
|
24
|
+
showSidebar: true,
|
|
25
|
+
sidebarOpen: false,
|
|
26
|
+
showLeftPanel: true,
|
|
27
|
+
leftPanelOpen: false,
|
|
28
|
+
showRightPanel: true,
|
|
29
|
+
rightPanelOpen: false,
|
|
30
|
+
showFloatingBar: true,
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* PDF uses 72 points per inch, CSS uses 96 pixels per inch.
|
|
34
|
+
* This factor converts PDF points to CSS pixels at "actual size" (100% zoom).
|
|
35
|
+
*/
|
|
36
|
+
export const POINTS_TO_CSS_PIXELS = 96 / 72;
|
|
37
|
+
/**
|
|
38
|
+
* Empty 1x1 transparent GIF used as placeholder image.
|
|
39
|
+
*/
|
|
40
|
+
export const EMPTY_IMAGE_DATA_URL = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';
|
|
41
|
+
/**
|
|
42
|
+
* Thumbnail display dimensions.
|
|
43
|
+
*/
|
|
44
|
+
export const THUMBNAIL_WIDTH = 120;
|
|
45
|
+
export const THUMBNAIL_HEIGHT = 160;
|
|
46
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,0CAA0C;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEtF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAgC;IACxD,WAAW,EAAE,GAAG;IAChB,eAAe,EAAE,UAAU;IAC3B,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,QAAQ;IACpB,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IAC7B,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,KAAK;IACnB,aAAa,EAAE,GAAG;IAClB,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,KAAK;IAClB,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,KAAK;IACpB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,KAAK;IACrB,eAAe,EAAE,IAAI;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,4DAA4D,CAAC;AAEjG;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { ViewerState } from './ViewerState';
|
|
2
|
+
import type { LayoutState } from '../layout/LayoutState';
|
|
3
|
+
import type { DestinationDisplay } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* Dependencies required by NavigationController.
|
|
6
|
+
*/
|
|
7
|
+
export interface NavigationDeps {
|
|
8
|
+
state: ViewerState;
|
|
9
|
+
layoutState: LayoutState;
|
|
10
|
+
viewport: HTMLElement;
|
|
11
|
+
getEffectivePadding: () => number;
|
|
12
|
+
getEffectiveBandOffset: (bandIndex: number) => number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Handles scroll position calculations and navigation within the document.
|
|
16
|
+
*
|
|
17
|
+
* This controller manages:
|
|
18
|
+
* - Scrolling to page centers
|
|
19
|
+
* - Scrolling to specific destinations (PDF destinations with various display types)
|
|
20
|
+
* - Calculating page positions in content coordinates
|
|
21
|
+
*/
|
|
22
|
+
export declare class NavigationController {
|
|
23
|
+
private deps;
|
|
24
|
+
private suppressScrollHandling;
|
|
25
|
+
constructor(deps: NavigationDeps);
|
|
26
|
+
/**
|
|
27
|
+
* Scroll to center a page in the viewport.
|
|
28
|
+
*/
|
|
29
|
+
scrollToPageCenter(pageIndex: number): void;
|
|
30
|
+
/**
|
|
31
|
+
* Scroll to a specific destination within a page.
|
|
32
|
+
*
|
|
33
|
+
* Converts document coordinates (points, top-left origin) to viewport scroll position.
|
|
34
|
+
*/
|
|
35
|
+
scrollToDestination(pageIndex: number, display: DestinationDisplay): void;
|
|
36
|
+
/**
|
|
37
|
+
* Get the center position of a page in content coordinates.
|
|
38
|
+
*/
|
|
39
|
+
getPageCenterInContent(pageIndex: number): {
|
|
40
|
+
x: number;
|
|
41
|
+
y: number;
|
|
42
|
+
} | null;
|
|
43
|
+
/**
|
|
44
|
+
* Check if scroll handling is currently suppressed.
|
|
45
|
+
*/
|
|
46
|
+
isScrollSuppressed(): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Execute an action with scroll handling suppressed.
|
|
49
|
+
* This prevents scroll events from triggering page change detection
|
|
50
|
+
* while programmatically setting scroll position.
|
|
51
|
+
*/
|
|
52
|
+
withScrollSuppressed(action: () => void): void;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=NavigationController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavigationController.d.ts","sourceRoot":"","sources":["../../src/core/NavigationController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,WAAW,CAAC;IACtB,mBAAmB,EAAE,MAAM,MAAM,CAAC;IAClC,sBAAsB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CACzD;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,sBAAsB,CAAS;gBAE3B,IAAI,EAAE,cAAc;IAIhC;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAe3C;;;;OAIG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAoFzE;;OAEG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAe1E;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,IAAI;CAOjD"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { POINTS_TO_CSS_PIXELS } from './constants';
|
|
2
|
+
/**
|
|
3
|
+
* Handles scroll position calculations and navigation within the document.
|
|
4
|
+
*
|
|
5
|
+
* This controller manages:
|
|
6
|
+
* - Scrolling to page centers
|
|
7
|
+
* - Scrolling to specific destinations (PDF destinations with various display types)
|
|
8
|
+
* - Calculating page positions in content coordinates
|
|
9
|
+
*/
|
|
10
|
+
export class NavigationController {
|
|
11
|
+
deps;
|
|
12
|
+
suppressScrollHandling = false;
|
|
13
|
+
constructor(deps) {
|
|
14
|
+
this.deps = deps;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Scroll to center a page in the viewport.
|
|
18
|
+
*/
|
|
19
|
+
scrollToPageCenter(pageIndex) {
|
|
20
|
+
const center = this.getPageCenterInContent(pageIndex);
|
|
21
|
+
if (!center)
|
|
22
|
+
return;
|
|
23
|
+
const { viewport } = this.deps;
|
|
24
|
+
const padding = this.deps.getEffectivePadding();
|
|
25
|
+
const scrollLeft = center.x + padding - viewport.clientWidth / 2;
|
|
26
|
+
const scrollTop = center.y + padding - viewport.clientHeight / 2;
|
|
27
|
+
this.withScrollSuppressed(() => {
|
|
28
|
+
viewport.scrollLeft = scrollLeft;
|
|
29
|
+
viewport.scrollTop = scrollTop;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Scroll to a specific destination within a page.
|
|
34
|
+
*
|
|
35
|
+
* Converts document coordinates (points, top-left origin) to viewport scroll position.
|
|
36
|
+
*/
|
|
37
|
+
scrollToDestination(pageIndex, display) {
|
|
38
|
+
const entry = this.deps.layoutState.getSlotForPage(pageIndex);
|
|
39
|
+
if (!entry) {
|
|
40
|
+
// Fallback to page center if slot not found
|
|
41
|
+
this.scrollToPageCenter(pageIndex);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const { state, viewport } = this.deps;
|
|
45
|
+
const padding = this.deps.getEffectivePadding();
|
|
46
|
+
const zoom = state.get('zoom');
|
|
47
|
+
const displayMode = state.get('displayMode');
|
|
48
|
+
const bandOffset = displayMode === 'scroll'
|
|
49
|
+
? this.deps.getEffectiveBandOffset(entry.bandIndex)
|
|
50
|
+
: 0;
|
|
51
|
+
// Page origin in content coordinates (CSS pixels × zoom)
|
|
52
|
+
const pageOriginX = entry.slot.x;
|
|
53
|
+
const pageOriginY = bandOffset + entry.slot.y;
|
|
54
|
+
// Calculate scroll position based on display type
|
|
55
|
+
let scrollLeft;
|
|
56
|
+
let scrollTop;
|
|
57
|
+
switch (display.type) {
|
|
58
|
+
case 'fitH':
|
|
59
|
+
case 'fitBH': {
|
|
60
|
+
// Fit width - scroll Y to specified top position
|
|
61
|
+
const top = display.top ?? 0;
|
|
62
|
+
const contentY = pageOriginY + top * POINTS_TO_CSS_PIXELS * zoom;
|
|
63
|
+
// Center horizontally, position top at viewport top
|
|
64
|
+
scrollLeft = pageOriginX + entry.slot.width / 2 + padding - viewport.clientWidth / 2;
|
|
65
|
+
scrollTop = contentY + padding;
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
case 'fitV':
|
|
69
|
+
case 'fitBV': {
|
|
70
|
+
// Fit height - scroll X to specified left position
|
|
71
|
+
const left = display.left ?? 0;
|
|
72
|
+
const contentX = pageOriginX + left * POINTS_TO_CSS_PIXELS * zoom;
|
|
73
|
+
// Position left at viewport left, center vertically
|
|
74
|
+
scrollLeft = contentX + padding;
|
|
75
|
+
scrollTop = pageOriginY + entry.slot.height / 2 + padding - viewport.clientHeight / 2;
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
case 'xyz': {
|
|
79
|
+
// Go to specific position
|
|
80
|
+
const left = display.left ?? 0;
|
|
81
|
+
const top = display.top ?? 0;
|
|
82
|
+
const contentX = pageOriginX + left * POINTS_TO_CSS_PIXELS * zoom;
|
|
83
|
+
const contentY = pageOriginY + top * POINTS_TO_CSS_PIXELS * zoom;
|
|
84
|
+
// Position (left, top) at viewport top-left corner
|
|
85
|
+
scrollLeft = contentX + padding;
|
|
86
|
+
scrollTop = contentY + padding;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
case 'fitR': {
|
|
90
|
+
// Fit rectangle - scroll to center of rectangle
|
|
91
|
+
const centerX = (display.left + display.right) / 2;
|
|
92
|
+
const centerY = (display.top + display.bottom) / 2;
|
|
93
|
+
const contentX = pageOriginX + centerX * POINTS_TO_CSS_PIXELS * zoom;
|
|
94
|
+
const contentY = pageOriginY + centerY * POINTS_TO_CSS_PIXELS * zoom;
|
|
95
|
+
// Center the rectangle in viewport
|
|
96
|
+
scrollLeft = contentX + padding - viewport.clientWidth / 2;
|
|
97
|
+
scrollTop = contentY + padding - viewport.clientHeight / 2;
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
default:
|
|
101
|
+
// For fit/fitB, just center the page
|
|
102
|
+
this.scrollToPageCenter(pageIndex);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
this.withScrollSuppressed(() => {
|
|
106
|
+
viewport.scrollLeft = Math.max(0, scrollLeft);
|
|
107
|
+
viewport.scrollTop = Math.max(0, scrollTop);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get the center position of a page in content coordinates.
|
|
112
|
+
*/
|
|
113
|
+
getPageCenterInContent(pageIndex) {
|
|
114
|
+
const entry = this.deps.layoutState.getSlotForPage(pageIndex);
|
|
115
|
+
if (!entry)
|
|
116
|
+
return null;
|
|
117
|
+
const displayMode = this.deps.state.get('displayMode');
|
|
118
|
+
const bandOffset = displayMode === 'scroll'
|
|
119
|
+
? this.deps.getEffectiveBandOffset(entry.bandIndex)
|
|
120
|
+
: 0;
|
|
121
|
+
return {
|
|
122
|
+
x: entry.slot.x + entry.slot.width / 2,
|
|
123
|
+
y: bandOffset + entry.slot.y + entry.slot.height / 2,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Check if scroll handling is currently suppressed.
|
|
128
|
+
*/
|
|
129
|
+
isScrollSuppressed() {
|
|
130
|
+
return this.suppressScrollHandling;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Execute an action with scroll handling suppressed.
|
|
134
|
+
* This prevents scroll events from triggering page change detection
|
|
135
|
+
* while programmatically setting scroll position.
|
|
136
|
+
*/
|
|
137
|
+
withScrollSuppressed(action) {
|
|
138
|
+
this.suppressScrollHandling = true;
|
|
139
|
+
action();
|
|
140
|
+
requestAnimationFrame(() => {
|
|
141
|
+
this.suppressScrollHandling = false;
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=NavigationController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavigationController.js","sourceRoot":"","sources":["../../src/core/NavigationController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance timing helper for debugging and profiling.
|
|
3
|
+
* Provides simple start/end markers with elapsed time logging.
|
|
4
|
+
*/
|
|
5
|
+
export declare class PerfTimer {
|
|
6
|
+
private startTime;
|
|
7
|
+
private marks;
|
|
8
|
+
constructor();
|
|
9
|
+
start(name: string): void;
|
|
10
|
+
end(name: string): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=PerfTimer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PerfTimer.d.ts","sourceRoot":"","sources":["../../src/core/PerfTimer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAkC;;IAO/C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOzB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAY1B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance timing helper for debugging and profiling.
|
|
3
|
+
* Provides simple start/end markers with elapsed time logging.
|
|
4
|
+
*/
|
|
5
|
+
export class PerfTimer {
|
|
6
|
+
startTime;
|
|
7
|
+
marks = new Map();
|
|
8
|
+
constructor() {
|
|
9
|
+
this.startTime = performance.now();
|
|
10
|
+
console.log('[perf] timer-start @0.0ms');
|
|
11
|
+
}
|
|
12
|
+
start(name) {
|
|
13
|
+
const now = performance.now();
|
|
14
|
+
const elapsed = now - this.startTime;
|
|
15
|
+
this.marks.set(name, now);
|
|
16
|
+
console.log(`[perf] ${name}-start @${elapsed.toFixed(1)}ms`);
|
|
17
|
+
}
|
|
18
|
+
end(name) {
|
|
19
|
+
const now = performance.now();
|
|
20
|
+
const startTime = this.marks.get(name);
|
|
21
|
+
const elapsed = now - this.startTime;
|
|
22
|
+
if (startTime !== undefined) {
|
|
23
|
+
const duration = now - startTime;
|
|
24
|
+
console.log(`[perf] ${name}-end @${elapsed.toFixed(1)}ms (duration: ${duration.toFixed(1)}ms)`);
|
|
25
|
+
this.marks.delete(name);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
console.log(`[perf] ${name}-end @${elapsed.toFixed(1)}ms (no start)`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=PerfTimer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PerfTimer.js","sourceRoot":"","sources":["../../src/core/PerfTimer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,SAAS;IACV,SAAS,CAAS;IAClB,KAAK,GAAwB,IAAI,GAAG,EAAE,CAAC;IAE/C;QACI,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,IAAY;QACd,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,GAAG,CAAC,IAAY;QACZ,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QACrC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,GAAG,GAAG,SAAS,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,SAAS,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAChG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,SAAS,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC1E,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import type { ZoomMode, DisplayMode, LayoutMode, Rotation, GridOptions, LeftPanelTab, RightPanelTab, Tool } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Map of all viewer state properties and their types.
|
|
4
|
+
*/
|
|
5
|
+
export interface ViewerStateMap {
|
|
6
|
+
isLoading: boolean;
|
|
7
|
+
isLoaded: boolean;
|
|
8
|
+
pageCount: number;
|
|
9
|
+
currentPage: number;
|
|
10
|
+
zoom: number;
|
|
11
|
+
zoomMode: ZoomMode;
|
|
12
|
+
displayMode: DisplayMode;
|
|
13
|
+
layoutMode: LayoutMode;
|
|
14
|
+
rotation: Rotation;
|
|
15
|
+
seamless: boolean;
|
|
16
|
+
grid: GridOptions;
|
|
17
|
+
leftPanelOpen: boolean;
|
|
18
|
+
rightPanelOpen: boolean;
|
|
19
|
+
leftPanelActiveTab: LeftPanelTab;
|
|
20
|
+
rightPanelActiveTab: RightPanelTab;
|
|
21
|
+
activeTool: Tool;
|
|
22
|
+
isFullscreen: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Default state values for the viewer.
|
|
26
|
+
*/
|
|
27
|
+
export declare const DEFAULT_STATE: ViewerStateMap;
|
|
28
|
+
/**
|
|
29
|
+
* Callback type for state change listeners.
|
|
30
|
+
*/
|
|
31
|
+
export type StateListener<K extends keyof ViewerStateMap> = (value: ViewerStateMap[K], oldValue: ViewerStateMap[K]) => void;
|
|
32
|
+
/**
|
|
33
|
+
* Centralized reactive state management for the viewer.
|
|
34
|
+
*
|
|
35
|
+
* Provides a simple pub/sub pattern for state changes, allowing components
|
|
36
|
+
* to subscribe to specific state keys and be notified when they change.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const state = new ViewerState();
|
|
41
|
+
*
|
|
42
|
+
* // Subscribe to zoom changes
|
|
43
|
+
* const unsubscribe = state.subscribe('zoom', (newZoom, oldZoom) => {
|
|
44
|
+
* console.log(`Zoom changed from ${oldZoom} to ${newZoom}`);
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* // Update state
|
|
48
|
+
* state.set('zoom', 1.5);
|
|
49
|
+
*
|
|
50
|
+
* // Cleanup
|
|
51
|
+
* unsubscribe();
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare class ViewerState {
|
|
55
|
+
private state;
|
|
56
|
+
private listeners;
|
|
57
|
+
private batchDepth;
|
|
58
|
+
private pendingNotifications;
|
|
59
|
+
constructor(initialState?: Partial<ViewerStateMap>);
|
|
60
|
+
/**
|
|
61
|
+
* Get a state value.
|
|
62
|
+
*/
|
|
63
|
+
get<K extends keyof ViewerStateMap>(key: K): ViewerStateMap[K];
|
|
64
|
+
/**
|
|
65
|
+
* Get a snapshot of the entire state.
|
|
66
|
+
*/
|
|
67
|
+
getAll(): Readonly<ViewerStateMap>;
|
|
68
|
+
/**
|
|
69
|
+
* Set a state value and notify subscribers.
|
|
70
|
+
* Uses strict equality (===) to determine if the value has changed.
|
|
71
|
+
*/
|
|
72
|
+
set<K extends keyof ViewerStateMap>(key: K, value: ViewerStateMap[K]): void;
|
|
73
|
+
/**
|
|
74
|
+
* Subscribe to state changes for a specific key.
|
|
75
|
+
* @returns Unsubscribe function
|
|
76
|
+
*/
|
|
77
|
+
subscribe<K extends keyof ViewerStateMap>(key: K, callback: StateListener<K>): () => void;
|
|
78
|
+
/**
|
|
79
|
+
* Batch multiple state updates together.
|
|
80
|
+
* Notifications are deferred until the batch completes.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* state.batch(() => {
|
|
85
|
+
* state.set('zoom', 1.5);
|
|
86
|
+
* state.set('zoomMode', 'custom');
|
|
87
|
+
* });
|
|
88
|
+
* // Both notifications fire together after batch completes
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
batch(updates: () => void): void;
|
|
92
|
+
/**
|
|
93
|
+
* Update multiple state values at once.
|
|
94
|
+
* This is a convenience method that wraps updates in a batch.
|
|
95
|
+
*/
|
|
96
|
+
update(updates: Partial<ViewerStateMap>): void;
|
|
97
|
+
/**
|
|
98
|
+
* Reset state to initial values, optionally with overrides.
|
|
99
|
+
*/
|
|
100
|
+
reset(overrides?: Partial<ViewerStateMap>): void;
|
|
101
|
+
/**
|
|
102
|
+
* Remove all listeners. Useful for cleanup.
|
|
103
|
+
*/
|
|
104
|
+
clearListeners(): void;
|
|
105
|
+
private notify;
|
|
106
|
+
private flushNotifications;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=ViewerState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerState.d.ts","sourceRoot":"","sources":["../../src/core/ViewerState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,aAAa,EACb,IAAI,EACP,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,cAAc;IAE3B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IAGpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;IAGlB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,YAAY,CAAC;IACjC,mBAAmB,EAAE,aAAa,CAAC;IAGnC,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,cAkB3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,cAAc,IAAI,CACxD,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EACxB,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,KAC1B,IAAI,CAAC;AAEV;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,SAAS,CAAqD;IACtE,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,oBAAoB,CAA0E;gBAE1F,YAAY,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAKlD;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAI9D;;OAEG;IACH,MAAM,IAAI,QAAQ,CAAC,cAAc,CAAC;IAIlC;;;OAGG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAoB3E;;;OAGG;IACH,SAAS,CAAC,CAAC,SAAS,MAAM,cAAc,EACpC,GAAG,EAAE,CAAC,EACN,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAC3B,MAAM,IAAI;IAYb;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAYhC;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAQ9C;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAShD;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB,OAAO,CAAC,MAAM;IAkBd,OAAO,CAAC,kBAAkB;CAQ7B"}
|