@vue-pdf-viewer/viewer
Version:
A vue-pdf-viewer component for Vue and Nuxt. Suitable for vue-pdf document.
38 lines (37 loc) • 1.51 kB
TypeScript
import { MaybeRef, Ref, ShallowRef, UnwrapRef } from 'vue';
import type { UseScaleCallback, ViewerPdfPage } from '@/utils/types';
import { ViewMode, ZoomLevel } from '@/utils/enumerators';
import type { PDFDocumentProxy } from 'pdfjs-dist';
interface UseScaleProps {
pdfDocument: ShallowRef<PDFDocumentProxy | undefined>;
pagesContainerRef: ShallowRef<HTMLDivElement | undefined>;
viewMode: Ref<ViewMode>;
focusedPage: MaybeRef<ViewerPdfPage | undefined>;
currentScale: Ref<number>;
onScaleRequest?: (newScale: number, options?: {
immediate?: boolean;
origin?: [number, number];
}) => Promise<void>;
}
/**
* Composable for handling zoom operations.
* Calculates scale for ZoomLevel presets and delegates actual scaling to useVirtualPages.
*
* @param props - Scale-related props including PDF document, container, and callbacks
* @param scaleCallback - Optional callback for external scale change listeners
*/
declare const useScale: (props: UnwrapRef<UseScaleProps>, scaleCallback?: ((event: UseScaleCallback) => void) | undefined) => {
currentScale: Ref<number, number>;
zoom: (scale: number | ZoomLevel, options?: {
immediate?: boolean;
origin?: [number, number];
}) => void;
zoomControl: {
scale: number;
zoom: (scale: number | ZoomLevel, options?: {
immediate?: boolean | undefined;
origin?: [number, number] | undefined;
} | undefined) => void;
};
};
export default useScale;