createZoomImageHover - 1.28 KB
Basic Usage
ts
const { cleanup } = createZoomImageHover(container, { zoomImageSource: "large-image.webp", }) // Call cleanup when you don't need it anymore cleanup()Type Declaration
ts
type ZoomedImgStatus = "idle" | "loading" | "loaded" | "error" type ZoomImageHoverState = { zoomedImgStatus: ZoomedImgStatus enabled: boolean } type Listener = (state: ZoomImageHoverState, prevState: ZoomImageHoverState) => void type ZoomImageHoverStateUpdate = { enabled: boolean } type ZoomImageHoverOptions = { // The size of zoomed window where zoomed image will be displayed customZoom: { width: number; height: number } // Props for the zoomed image zoomImageProps?: { alt?: string } // The source of zoomed image, default is the same as the original image zoomImageSource?: string // The css classes will be added to zoom lens element zoomLensClass?: string // The smaller the value, the bigger zoomed image and smaller zoom lens, default is 1 zoomLensScale?: Partial<CSSStyleDeclaration> // The container of zoomed image zoomTarget: HTMLElement // The css classes will be added to zoomed image container on zoom zoomTargetClass?: string // The scale of zoomed image, default is 2 scale?: number // Disable scroll lock on zoom, default is false disableScrollLock?: boolean } function createZoomImageHover( container: HTMLElement, options?: ZoomImageHoverOptions, ): { // Remove all event listeners, remove zoom lens and zoomed image cleanup: () => void // Subscribe to state changes, returns a function to unsubscribe subscribe: (listener: Listener) => () => void // Get current state getState: () => ZoomImageHoverState // Update current state setState(value: ZoomImageHoverStateUpdate): void }