{"version":3,"file":"index.cjs","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/utils/globalUtils.tsx","../src/utils/movementUtils.tsx","../src/assets/svgCollection.tsx","../src/components/BaseImage.tsx","../src/components/ZoomImage.tsx","../src/utils/animations.tsx","../src/ImageMagnifier.tsx"],"sourcesContent":["function styleInject(css, ref) {\n  if ( ref === void 0 ) ref = {};\n  var insertAt = ref.insertAt;\n\n  if (!css || typeof document === 'undefined') { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (insertAt === 'top') {\n    if (head.firstChild) {\n      head.insertBefore(style, head.firstChild);\n    } else {\n      head.appendChild(style);\n    }\n  } else {\n    head.appendChild(style);\n  }\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nexport default styleInject;\n","import React from 'react'\nimport { IImageTypes, ZoomFallbackBoundaryProps, ZoomFallbackBoundaryState } from '../ImageMagnifier.types'\n\nexport type PageCoords = { x: number; y: number }\nexport type OffSetCoords = { left: number; top: number }\nexport type PageDimensions = { width: number; height: number }\n\nexport function isTouchEvent(\n  e: MouseEvent | TouchEvent | React.MouseEvent | React.TouchEvent | React.KeyboardEvent | KeyboardEvent\n): e is TouchEvent | React.TouchEvent {\n  return 'touches' in e || ('nativeEvent' in e && 'touches' in e.nativeEvent)\n}\n\n// Defaulted values to 0 to make the functions SSR safe\nexport function getPageCoords(\n  e: MouseEvent | TouchEvent | React.MouseEvent | React.TouchEvent | React.KeyboardEvent | KeyboardEvent,\n  fallbackElement?: HTMLElement | null\n): PageCoords {\n  if ('touches' in e && e.touches && e.touches.length > 0) {\n    return { x: e.touches[0].pageX, y: e.touches[0].pageY }\n  } else if ('pageX' in e && 'pageY' in e) {\n    return { x: (e as any).pageX, y: (e as any).pageY } // Could further narrow with type guards\n  } else if (fallbackElement) {\n    const rect = fallbackElement.getBoundingClientRect()\n    return {\n      x: rect.left + rect.width / 2,\n      y: rect.top + rect.height / 2,\n    }\n  }\n  return { x: 0, y: 0 }\n}\n\nexport const getOffsets = (pageX: number, pageY: number, left: number, top: number): PageCoords => {\n  return {\n    x: pageX - left,\n    y: pageY - top,\n  }\n}\n\nexport const getBounds = (container: HTMLDivElement | null): DOMRect | { width: number; height: number; left: number; top: number } => {\n  return container ? container.getBoundingClientRect() : { width: 0, height: 0, left: 0, top: 0 }\n}\n\nexport const getRatios = (\n  bounds: { width: number; height: number },\n  natural: { width: number; height: number },\n  zoomScale: number\n): PageCoords => {\n  const scaledWidth = natural.width * zoomScale\n  const scaledHeight = natural.height * zoomScale\n  return {\n    x: (scaledWidth - bounds.width) / bounds.width,\n    y: (scaledHeight - bounds.height) / bounds.height,\n  }\n}\n\nexport function clampToBounds(left: number, top: number, bounds: { minLeft: number; maxLeft: number; minTop: number; maxTop: number }): OffSetCoords {\n  return {\n    left: Math.max(Math.min(left, bounds.maxLeft), bounds.minLeft),\n    top: Math.max(Math.min(top, bounds.maxTop), bounds.minTop),\n  }\n}\nexport function calculateDragPosition(pageX: number, pageY: number, offsets: { x: number; y: number }): OffSetCoords {\n  return {\n    left: pageX - offsets.x,\n    top: pageY - offsets.y,\n  }\n}\n\nexport const getScaledDimensions = (zoomedImgRef: HTMLImageElement, zoomScale: number): PageDimensions => {\n  if (!zoomedImgRef || !zoomedImgRef.naturalWidth || !zoomedImgRef.naturalHeight) {\n    return { width: 0, height: 0 }\n  }\n  return {\n    width: zoomedImgRef.naturalWidth * zoomScale,\n    height: zoomedImgRef.naturalHeight * zoomScale,\n  }\n}\n\nexport const getDefaults = (): IImageTypes => {\n  const defaultCoordinates = { x: 0, y: 0 }\n  return {\n    onLoadCallback: null,\n    bounds: { width: 0, height: 0, left: 0, top: 0 },\n    offsets: defaultCoordinates,\n    ratios: defaultCoordinates,\n    scaledDimensions: { width: 0, height: 0 },\n    dragStartCoords: defaultCoordinates,\n    wasDragging: false,\n    velocity: { vx: 0, vy: 0 },\n    prevDragCoords: { x: 0, y: 0, time: 0 },\n    lastDragCoords: { x: 0, y: 0, time: 0 },\n  }\n}\n\nexport class ZoomFallbackBoundary extends React.Component<ZoomFallbackBoundaryProps, ZoomFallbackBoundaryState> {\n  constructor(props: ZoomFallbackBoundaryProps) {\n    super(props)\n    this.state = { hasError: false }\n  }\n\n  static getDerivedStateFromError() {\n    return { hasError: true }\n  }\n\n  componentDidCatch(error: any, info: any) {\n    console.error('ZoomImage runtime error:', error, info)\n  }\n\n  render() {\n    if (this.state.hasError) {\n      return this.props.fallback ?? null\n    }\n    return this.props.children\n  }\n}\n","import { IImageTypes } from '../ImageMagnifier.types'\nimport { calculateDragPosition, clampToBounds, getBounds, getOffsets } from './globalUtils'\n\nexport const applyMouseMove = (\n  pageX: number,\n  pageY: number,\n  zoomContextRef: React.MutableRefObject<IImageTypes>,\n  setLeft: (val: number) => void,\n  setTop: (val: number) => void\n) => {\n  const { left, top } = calculateDragPosition(pageX, pageY, zoomContextRef.current.offsets)\n\n  const bounds = { minLeft: 0, maxLeft: zoomContextRef.current.bounds.width, minTop: 0, maxTop: zoomContextRef.current.bounds.height }\n  const clamped = clampToBounds(left, top, bounds)\n  setLeft(clamped.left * -zoomContextRef.current.ratios.x)\n  setTop(clamped.top * -zoomContextRef.current.ratios.y)\n}\n\nexport const initializeFollowZoomPosition = (\n  pageX: number,\n  pageY: number,\n  container: HTMLDivElement | null,\n  zoomContextRef: React.MutableRefObject<IImageTypes>,\n  setLeft: (val: number) => void,\n  setTop: (val: number) => void\n) => {\n  // SSR check: only run if window and container are available\n  if (typeof window === 'undefined' || !container) {\n    zoomContextRef.current.bounds = { left: 0, top: 0, width: 0, height: 0 }\n    zoomContextRef.current.offsets = { x: 0, y: 0 }\n    setLeft(0)\n    setTop(0)\n    return\n  }\n\n  const bounds = getBounds(container)\n  zoomContextRef.current.bounds = bounds\n\n  const offsets = getOffsets(window.pageXOffset, window.pageYOffset, -bounds.left, -bounds.top)\n  zoomContextRef.current.offsets = offsets\n\n  applyMouseMove(pageX, pageY, zoomContextRef, setLeft, setTop)\n}\n\nexport function applyDragMove(\n  x: number,\n  y: number,\n  zoomContextRef: React.MutableRefObject<IImageTypes>,\n  setLeft: (val: number) => void,\n  setTop: (val: number) => void\n) {\n\n  // This is setting up the animation\n  const now = Date.now()\n  zoomContextRef.current.prevDragCoords = zoomContextRef.current.lastDragCoords\n  zoomContextRef.current.lastDragCoords = { x, y, time: now }\n\n  // Calculate new position using the stored offset\n  const { left: newLeft, top: newTop } = calculateDragPosition(x, y, zoomContextRef.current.dragStartCoords)\n\n  // Clamp to bounds\n  const { width, height } = zoomContextRef.current.bounds\n  const maxLeft = 0\n  const minLeft = width * -zoomContextRef.current.ratios.x\n  const maxTop = 0\n  const minTop = height * -zoomContextRef.current.ratios.y\n\n  const clamped = clampToBounds(newLeft, newTop, { minLeft, maxLeft, minTop, maxTop })\n\n  setLeft(clamped.left)\n  setTop(clamped.top)\n}\n","export const CloseIcon = ({ className = 'c-zoom-close-button-icon' }: { className?: string }) => (\n  <svg xmlns='http://www.w3.org/2000/svg' className={className} viewBox='0 0 24 24' fill='none'>\n    <path\n      fillRule='evenodd'\n      clipRule='evenodd'\n      d='M5.29289 5.29289C5.68342 4.90237 6.31658 4.90237 6.70711 5.29289L12 10.5858L17.2929 5.29289C17.6834 4.90237 18.3166 4.90237 18.7071 5.29289C19.0976 5.68342 19.0976 6.31658 18.7071 6.70711L13.4142 12L18.7071 17.2929C19.0976 17.6834 19.0976 18.3166 18.7071 18.7071C18.3166 19.0976 17.6834 19.0976 17.2929 18.7071L12 13.4142L6.70711 18.7071C6.31658 19.0976 5.68342 19.0976 5.29289 18.7071C4.90237 18.3166 4.90237 17.6834 5.29289 17.2929L10.5858 12L5.29289 6.70711C4.90237 6.31658 4.90237 5.68342 5.29289 5.29289Z'\n      fill='#000'\n    />\n  </svg>\n)\n\nexport const FallbackImage = ({ className = 'c-fp-fallback-image' }: { className?: string }) => (\n  <svg className={className} viewBox='0 0 2153 1548' fill='none' xmlns='http://www.w3.org/2000/svg'>\n    <rect width='100%' height='100%' fill='white' />\n    <path\n      d='M762 504.5H1392C1425.97 504.5 1453.5 532.034 1453.5 566V982C1453.5 1015.97 1425.97 1043.5 1392 1043.5H762C728.034 1043.5 700.5 1015.97 700.5 982V566C700.5 532.034 728.034 504.5 762 504.5Z'\n      fill='#EBEEF0'\n      stroke='#8495A2'\n      strokeWidth='25'\n    />\n    <path\n      d='M901.252 812.329C880.253 832.829 710.25 1012.23 707.251 1014.33C704.252 1016.43 728.751 1038.83 745.252 1038.83C761.752 1038.83 1381.75 1039.33 1388.25 1038.83C1394.75 1038.33 1443.75 1036.33 1445.75 981.832C1447.75 927.332 1445.75 946.332 1445.75 946.332C1445.75 946.332 1243.75 723.83 1225.75 705.829C1207.75 687.827 1194.25 681.832 1170.25 705.829C1146.25 729.826 1012.47 866.329 1012.47 866.329C1012.47 866.329 976.253 827.329 957.752 808.829C939.252 790.329 922.252 791.829 901.252 812.329Z'\n      fill='#CBD4DB'\n    />\n    <path\n      d='M1056.25 912.329L1012.47 866.329M1012.47 866.329C1012.47 866.329 976.253 827.329 957.752 808.829C939.252 790.329 922.252 791.829 901.252 812.329C880.253 832.829 710.25 1012.23 707.251 1014.33C704.252 1016.43 728.751 1038.83 745.252 1038.83C761.752 1038.83 1381.75 1039.33 1388.25 1038.83C1394.75 1038.33 1443.75 1036.33 1445.75 981.832C1447.75 927.332 1445.75 946.332 1445.75 946.332C1445.75 946.332 1243.75 723.83 1225.75 705.829C1207.75 687.827 1194.25 681.832 1170.25 705.829C1146.25 729.826 1012.47 866.329 1012.47 866.329Z'\n      stroke='#8595A1'\n      strokeWidth='25'\n      strokeLinecap='round'\n    />\n    <circle cx='891.5' cy='689.5' r='60' fill='#CBD4DA' stroke='#8496A2' strokeWidth='25' />\n  </svg>\n)\n","import React from 'react'\nimport { IBaseImageTypes } from '../ImageMagnifier.types'\nimport styles from '../styles.module.scss'\nimport { FallbackImage } from '../assets/svgCollection'\n\nconst BaseImage = ({\n  src,\n  sources,\n  baseImageStyle = {},\n  isZoomed,\n  fadeDuration,\n  baseImageClassName,\n  alt,\n  loadingPlaceholder,\n  errorPlaceholder,\n  onError,\n  disableLoadingFallbacks = false,\n  disableErrorFallbacks = false,\n}: IBaseImageTypes) => {\n  const imgRef = React.useRef<HTMLImageElement | null>(null)\n  const [isLoading, setIsLoading] = React.useState(true)\n  const [hasError, setHasError] = React.useState(false)\n\n  React.useEffect(() => {\n    setIsLoading(true)\n    setHasError(false)\n  }, [src])\n\n  const handleLoad = () => {\n    setIsLoading(false)\n  }\n\n  const handleError = () => {\n    setHasError(true)\n    setIsLoading(false)\n    onError?.()\n  }\n\n  React.useEffect(() => {\n    const img = imgRef.current\n    if (img && img.complete && img.naturalWidth > 0) {\n      handleLoad()\n    }\n  }, [src])\n\n  const imageStyle = React.useMemo(\n    () => ({\n      '--fade-duration': `${isZoomed ? fadeDuration : 0}ms`,\n      ...baseImageStyle,\n    }),\n    [isZoomed, fadeDuration, baseImageStyle]\n  )\n\n  const imageClass = [styles['c-point-focus__img'], baseImageClassName].filter(Boolean).join(' ')\n\n  const defaultImg =\n    !hasError && src ? (\n      <img\n        ref={imgRef}\n        alt={alt}\n        src={src}\n        style={imageStyle}\n        onLoad={handleLoad}\n        onError={handleError}\n        className={imageClass}\n        data-hidden={isZoomed}\n        data-testid='pf-base-image'\n        crossOrigin='anonymous'\n      />\n    ) : null\n\n  const wrappedImage =\n    sources && sources.length > 0 ? (\n      <picture style={{ width: '100%', height: '100%' }}>\n        {sources\n          .filter(s => s.srcSet)\n          .map((source, i) => (\n            <source key={i} {...source} />\n          ))}\n        {defaultImg}\n      </picture>\n    ) : (\n      defaultImg\n    )\n\n  return (\n    <>\n      {wrappedImage}\n\n      {!disableLoadingFallbacks && isLoading && !hasError && (\n        <div className={styles['c-point-focus__placeholder']} style={{ zIndex: 0 }} data-testid='pf-base-loading'>\n          {loadingPlaceholder ?? <span className={styles['c-point-focus__loader']} />}\n        </div>\n      )}\n\n      {!disableErrorFallbacks && hasError && (\n        <div className={styles['c-point-focus__placeholder']} style={{ zIndex: 0 }} data-testid='pf-base-error'>\n          {errorPlaceholder ?? <FallbackImage />}\n        </div>\n      )}\n    </>\n  )\n}\n\nexport default BaseImage\n","import React from 'react'\nimport { IZoomImageTypes } from '../ImageMagnifier.types'\nimport styles from '../styles.module.scss'\nimport { CloseIcon, FallbackImage } from '../assets/svgCollection'\n\nconst ZoomImage = React.forwardRef<HTMLImageElement, IZoomImageTypes>(\n  (\n    {\n      src,\n      fadeDuration,\n      top,\n      left,\n      isZoomed,\n      onLoad,\n      onDragStart,\n      onDragEnd,\n      onClose,\n      onFadeOut,\n      closeButtonRef,\n      onTouchStart,\n      onTouchEnd,\n      zoomImageClassName,\n      closeButtonClassName,\n      alt,\n      closeButtonAriaLabel,\n      zoomImageAriaLabel,\n      onKeyDown,\n      closeButtonContent,\n      onError,\n      loadingPlaceholder,\n      errorPlaceholder,\n      zoomScale,\n      disableLoadingFallbacks = false,\n      disableErrorFallbacks = false,\n    },\n    ref\n  ) => {\n    const [isLoading, setIsLoading] = React.useState(true)\n    const [hasError, setHasError] = React.useState(false)\n\n    React.useEffect(() => {\n      if (!isZoomed) {\n        setIsLoading(true)\n        setHasError(false)\n      }\n    }, [isZoomed])\n\n    const handleLoad = (e: React.SyntheticEvent<HTMLImageElement>) => {\n      setIsLoading(false)\n      onLoad?.(e)\n    }\n\n    const handleError = () => {\n      setIsLoading(false)\n      setHasError(true)\n      onError?.()\n    }\n\n    const zoomImgClass = [styles['c-point-focus__zoom-img'], zoomImageClassName].filter(Boolean).join(' ')\n\n    return (\n      <>\n        <img\n          ref={ref}\n          data-testid='pf-zoom-image'\n          data-visible={isZoomed}\n          className={zoomImgClass}\n          style={{\n            transform: `translate(${left}px, ${top}px)  scale(${zoomScale})`,\n            transformOrigin: 'top left',\n            transition: `opacity ${fadeDuration}ms linear, visibility ${fadeDuration}ms linear`,\n          }}\n          src={src}\n          onLoad={handleLoad}\n          onError={handleError}\n          onMouseDown={onDragStart}\n          onMouseUp={onDragEnd}\n          onTouchStart={onTouchStart}\n          onTouchEnd={onTouchEnd}\n          onTransitionEnd={onFadeOut}\n          draggable={false}\n          alt={`${alt} zoomed`}\n          aria-label={zoomImageAriaLabel}\n          onKeyDown={onKeyDown}\n          tabIndex={0}\n        />\n\n        {!disableErrorFallbacks && hasError && isZoomed && (\n          <div className={styles['c-point-focus__placeholder']} data-testid='pf-zoom-error'>\n            {errorPlaceholder ?? <FallbackImage />}\n          </div>\n        )}\n\n        {!disableLoadingFallbacks && isLoading && !hasError && isZoomed && (\n          <div className={styles['c-point-focus__placeholder']} data-testid='pf-zoom-loading'>\n            {loadingPlaceholder ?? <span className={styles['c-point-focus__loader']} />}\n          </div>\n        )}\n\n        {onClose && (\n          <button\n            type='button'\n            ref={closeButtonRef}\n            title='Close Zoom'\n            data-testid='pf-close-button'\n            aria-label={closeButtonAriaLabel ?? 'Zoom out'}\n            data-visible={isZoomed}\n            data-action-type='close'\n            className={closeButtonClassName || styles['c-point-focus__button']}\n            style={{\n              transition: `opacity ${fadeDuration}ms linear, visibility ${fadeDuration}ms linear`,\n            }}\n            onClick={() => onClose?.('click')}\n            onKeyDown={onKeyDown}>\n            {closeButtonContent ?? <CloseIcon />}\n          </button>\n        )}\n      </>\n    )\n  }\n)\n\nZoomImage.displayName = 'ZoomImage'\nexport default ZoomImage\n","import { InertiaOptions } from '../ImageMagnifier.types'\nimport { clampToBounds } from './globalUtils'\n\nexport function startInertia({\n  initialLeft,\n  initialTop,\n  velocity,\n  setLeft,\n  setTop,\n  bounds,\n  friction = 0.95,\n  minVelocity = 10,\n  onEnd,\n  contextRef,\n}: InertiaOptions & { contextRef: React.MutableRefObject<any> }) {\n  let left = initialLeft\n  let top = initialTop\n  let vx = velocity.vx\n  let vy = velocity.vy\n\n  function step() {\n    vx *= friction\n    vy *= friction\n\n    left += vx * (1 / 60)\n    top += vy * (1 / 60)\n\n    const clamped = clampToBounds(left, top, bounds)\n    setLeft(clamped.left)\n    setTop(clamped.top)\n\n    if (Math.abs(vx) > minVelocity || Math.abs(vy) > minVelocity) {\n      contextRef.current.rafId = requestAnimationFrame(step) // 👈 Store rafId\n    } else {\n      contextRef.current.rafId = null\n      setLeft(clamped.left)\n      setTop(clamped.top)\n      onEnd?.()\n    }\n  }\n\n  contextRef.current.rafId = requestAnimationFrame(step)\n}\n","import React from 'react'\nimport { getBounds, getDefaults, getOffsets, getPageCoords, getRatios, isTouchEvent, ZoomFallbackBoundary } from './utils/globalUtils'\nimport { applyMouseMove, initializeFollowZoomPosition, applyDragMove } from './utils/movementUtils'\nimport { IImageMagnifierTypes, IImageTypes, IInteractionTYpe, IZoomImageTypes } from './ImageMagnifier.types'\nimport styles from './styles.module.scss'\n\nimport BaseImage from './components/BaseImage'\nimport ZoomImage from './components/ZoomImage'\nimport { startInertia } from './utils/animations'\nimport { FallbackImage } from './assets/svgCollection'\n\nconst ImageMagnifier = ({\n  src,\n  sources,\n  width,\n  height,\n  zoomSrc,\n  zoomScale = 1,\n  zoomPreload,\n  fadeDuration = 150,\n  moveType = 'follow',\n  zoomType = 'click',\n  baseImageStyle,\n  hideCloseButton,\n  containerClassName,\n  baseImageClassName,\n  zoomImageClassName,\n  closeButtonClassName,\n  onMouseEnter,\n  onZoomedMouseMove,\n  onMouseLeave,\n  onClickImage,\n  onZoom,\n  onClose,\n  afterZoomImgLoaded,\n  afterZoomOut,\n  onBaseImageError,\n  onZoomImageError,\n  onDragStart,\n  onDragEnd,\n  alt,\n  containerAriaLabel,\n  closeButtonAriaLabel,\n  zoomImageAriaLabel,\n  tabIndex = 0,\n  closeButtonContent,\n  overlay,\n  disableDrag,\n  disableInertia,\n  loadingPlaceholder,\n  errorPlaceholder,\n  clickToZoomOut = false,\n  externalZoomState,\n  setExternalZoomState,\n  disableMobile,\n  disableLoadingFallbacks,\n  disableErrorFallbacks,\n}: IImageMagnifierTypes) => {\n  const containerRef = React.useRef<HTMLDivElement | null>(null)\n  const closeButtonRef = React.useRef<HTMLButtonElement | null>(null)\n  const zoomedImgRef = React.useRef<HTMLImageElement | null>(null)\n  const zoomContextRef = React.useRef<IImageTypes>(getDefaults())\n\n  const isControlled = externalZoomState !== undefined\n  const [internalZoom, setInternalZoom] = React.useState(false)\n  const isZoomed = isControlled ? externalZoomState : internalZoom\n\n  const [isActive, setIsActive] = React.useState<boolean | undefined>(zoomPreload)\n  const [isDragging, setIsDragging] = React.useState<boolean>(false)\n  const [isFading, setIsFading] = React.useState<boolean>(false)\n  const [left, setLeft] = React.useState<number>(0)\n  const [top, setTop] = React.useState<number>(0)\n\n  const safeZoomScale = Math.max(1, Math.min(zoomScale, 5))\n\n  const updateZoomState = (val: boolean) => {\n    if (isControlled) {\n      setExternalZoomState?.(val)\n    } else {\n      setInternalZoom(val)\n    }\n  }\n\n  const zoomIn = (pageX: number, pageY: number, method: IInteractionTYpe) => {\n    updateZoomState(true)\n    initializeFollowZoomPosition(pageX, pageY, containerRef.current, zoomContextRef, setLeft, setTop)\n    onZoom?.({ at: { x: pageX, y: pageY }, method: method })\n\n    setTimeout(() => {\n      closeButtonRef.current?.focus()\n    }, 0)\n  }\n\n  const zoomOut = () => {\n    if (!zoomPreload) {\n      setIsFading(true)\n    }\n\n    zoomContextRef.current.onLoadCallback = null\n    zoomContextRef.current.wasDragging = false\n    zoomContextRef.current.dragStartCoords = { x: 0, y: 0 }\n    zoomContextRef.current.velocity = null\n    zoomContextRef.current.prevDragCoords = null\n    zoomContextRef.current.lastDragCoords = null\n\n    setLeft(0)\n    setTop(0)\n    updateZoomState(false)\n  }\n\n  const handleDragStart = React.useCallback(\n    (e: React.MouseEvent | React.TouchEvent) => {\n      if (!isZoomed || disableDrag || (disableMobile && isTouchEvent(e))) return\n\n      if (zoomContextRef.current.rafId != null) {\n        cancelAnimationFrame(zoomContextRef.current.rafId)\n        zoomContextRef.current.rafId = null\n      }\n\n      const { x, y } = getPageCoords(e)\n      setIsDragging(true)\n      zoomContextRef.current.dragStartCoords = getOffsets(x, y, left, top)\n      onDragStart?.({\n        start: { x, y },\n        source: isTouchEvent(e) ? 'touch' : 'mouse',\n      })\n    },\n    [isZoomed, disableDrag, disableMobile, left, top, onDragStart]\n  )\n\n  const handleDragMove = React.useCallback(\n    (e: MouseEvent | TouchEvent) => {\n      if (!isDragging) return\n      const { x, y } = getPageCoords(e)\n      applyDragMove(x, y, zoomContextRef, setLeft, setTop)\n      if ('touches' in e) e.preventDefault?.()\n    },\n    [isDragging, setLeft, setTop]\n  )\n\n  const handleDragEnd = React.useCallback(() => {\n    setIsDragging(false)\n    zoomContextRef.current.dragStartCoords = { x: 0, y: 0 }\n\n    // Animation on end\n    // Calculate velocity\n    const last = zoomContextRef.current.lastDragCoords\n    const prev = zoomContextRef.current.prevDragCoords\n\n    let vx = 0,\n      vy = 0\n    if (last && prev) {\n      const dt = (last.time - prev.time) / 1000\n      if (dt > 0) {\n        vx = (last.x - prev.x) / dt\n        vy = (last.y - prev.y) / dt\n      }\n    }\n    zoomContextRef.current.velocity = { vx, vy }\n\n    // Calculate bounds\n    const { width, height } = zoomContextRef.current.bounds\n    const maxLeft = 0\n    const minLeft = width * -zoomContextRef.current.ratios.x\n    const maxTop = 0\n    const minTop = height * -zoomContextRef.current.ratios.y\n\n    if (!disableInertia) {\n      startInertia({\n        initialLeft: left,\n        initialTop: top,\n        velocity: { vx, vy },\n        setLeft,\n        setTop,\n        bounds: { minLeft, maxLeft, minTop, maxTop },\n        friction: 0.95,\n        minVelocity: 10,\n        onEnd: () => {\n          // Optionally, snap to bounds or do something else\n        },\n        contextRef: zoomContextRef,\n      })\n    }\n    onDragEnd?.({\n      velocity: { vx, vy },\n      final: { x: left, y: top },\n    })\n  }, [disableInertia, left, top, setLeft, setTop, onDragEnd])\n\n  const applyImageLoad = (el: HTMLImageElement) => {\n    const naturalDimensions = {\n      width: el.naturalWidth,\n      height: el.naturalHeight,\n    }\n\n    const bounds = getBounds(containerRef.current)\n\n    zoomedImgRef.current = el\n\n    zoomContextRef.current.scaledDimensions = {\n      width: naturalDimensions.width * safeZoomScale,\n      height: naturalDimensions.height * safeZoomScale,\n    }\n\n    zoomContextRef.current.bounds = bounds\n    zoomContextRef.current.ratios = getRatios(bounds, naturalDimensions, safeZoomScale)\n\n    if (zoomContextRef.current.onLoadCallback) {\n      zoomContextRef.current.onLoadCallback()\n      zoomContextRef.current.onLoadCallback = null\n    }\n  }\n\n  const handleLoad = React.useCallback(\n    (e: React.SyntheticEvent<HTMLImageElement>) => {\n      applyImageLoad(e.currentTarget)\n      afterZoomImgLoaded?.()\n    },\n    [applyImageLoad, afterZoomImgLoaded]\n  )\n\n  const handleClose = React.useCallback(\n    (method: IInteractionTYpe) => {\n      onClose?.({ triggeredBy: method })\n      zoomOut()\n    },\n    [onClose, zoomOut]\n  )\n\n  const handleClick = React.useCallback(\n    (e: React.MouseEvent | React.TouchEvent, method: IInteractionTYpe) => {\n      if (disableMobile && isTouchEvent(e)) return\n\n      const { x, y } = getPageCoords(e)\n      onClickImage?.({ x, y, source: isTouchEvent(e) ? 'touch' : 'mouse' })\n\n      if (zoomContextRef.current.wasDragging) {\n        zoomContextRef.current.wasDragging = false\n        return\n      }\n\n      if (isZoomed) {\n        if (clickToZoomOut) {\n          handleClose(method)\n        }\n        return\n      } // is important to keep it to avoid issues when dragging the image with the animation\n\n      if (zoomedImgRef.current) {\n        applyImageLoad(zoomedImgRef.current)\n        zoomIn(x, y, method)\n      } else {\n        zoomContextRef.current.onLoadCallback = () => zoomIn(x, y, method)\n      }\n    },\n    [disableMobile, isTouchEvent, getPageCoords, onClickImage, isZoomed, clickToZoomOut, handleClose, applyImageLoad, zoomIn]\n  )\n\n  const handleKeyDown = React.useCallback(\n    (e: React.KeyboardEvent) => {\n      if ((e.key === 'Enter' || e.key === ' ') && !isZoomed) {\n        e.preventDefault()\n        const { x, y } = getPageCoords(e, containerRef.current)\n        zoomIn(x, y, 'keyboard')\n      }\n\n      if (e.key === 'Escape' && isZoomed) {\n        e.preventDefault()\n        handleClose('keyboard')\n      }\n    },\n    [isZoomed, getPageCoords, zoomIn, handleClose]\n  )\n\n  const handleZoomLayerKeyDown = React.useCallback(\n    (e: React.KeyboardEvent) => {\n      if (e.key === 'Escape' && isZoomed) {\n        e.preventDefault()\n        handleClose('keyboard')\n      }\n    },\n    [isZoomed, handleClose]\n  )\n\n  const throttledZoomedMouseMove = React.useCallback(\n    (x: number, y: number, bounds: DOMRect) => {\n      zoomContextRef.current.lastMoveEvent = { x, y, bounds }\n      if (zoomContextRef.current.rafId == null) {\n        zoomContextRef.current.rafId = window.requestAnimationFrame(() => {\n          const evt = zoomContextRef.current.lastMoveEvent\n          if (evt && onZoomedMouseMove) {\n            onZoomedMouseMove(evt)\n          }\n          zoomContextRef.current.rafId = null\n        })\n      }\n    },\n    [onZoomedMouseMove]\n  )\n\n  const handleMouseEnter = React.useCallback(\n    (e: React.MouseEvent | React.TouchEvent) => {\n      setIsActive(true)\n      setIsFading(false)\n      onMouseEnter?.({ source: isTouchEvent(e) ? 'touch' : 'mouse' })\n      if (zoomType === 'hover' && !isZoomed && !(disableMobile && isTouchEvent(e))) {\n        handleClick(e, 'hover')\n      }\n    },\n    [setIsActive, setIsFading, onMouseEnter, zoomType, isZoomed, disableMobile, handleClick]\n  )\n  const handleMouseMove = React.useCallback(\n    (e: React.MouseEvent | React.TouchEvent) => {\n      if (moveType === 'follow' && isZoomed) {\n        const { x, y } = getPageCoords(e)\n        const bounds = zoomContextRef.current.bounds as DOMRect\n        if (!bounds || typeof bounds.left !== 'number') return\n        throttledZoomedMouseMove(x, y, zoomContextRef.current.bounds as DOMRect)\n        applyMouseMove(x, y, zoomContextRef, setLeft, setTop)\n      }\n    },\n    [moveType, isZoomed, throttledZoomedMouseMove, setLeft, setTop]\n  )\n\n  const handleMouseLeave = React.useCallback(\n    (e: React.MouseEvent | React.TouchEvent) => {\n      onMouseLeave?.({ source: isTouchEvent(e) ? 'touch' : 'mouse' })\n      handleClose('hover')\n    },\n    [onMouseLeave, handleClose]\n  )\n\n  const handleFadeOut = React.useCallback(\n    (e?: React.TransitionEvent<HTMLImageElement> | TransitionEvent, noTransition?: boolean) => {\n      if (noTransition || (e && 'propertyName' in e && e.propertyName === 'opacity' && containerRef?.current?.contains(e.target as Node))) {\n        if (!zoomPreload) {\n          zoomedImgRef.current = null\n          zoomContextRef.current = getDefaults()\n          setIsActive(false)\n        }\n        setIsFading(false)\n        afterZoomOut?.()\n      }\n    },\n    [zoomPreload, setIsActive, setIsFading, afterZoomOut]\n  )\n\n  React.useEffect(() => {\n    zoomContextRef.current = getDefaults()\n    return () => {\n      if (zoomContextRef.current.rafId != null) {\n        cancelAnimationFrame(zoomContextRef.current.rafId)\n        zoomContextRef.current.rafId = null\n      }\n    }\n  }, [])\n\n  React.useEffect(() => {\n    if (isDragging && !disableDrag) {\n      window.addEventListener('mousemove', handleDragMove)\n      window.addEventListener('mouseup', handleDragEnd)\n      window.addEventListener('touchmove', handleDragMove, { passive: false })\n      window.addEventListener('touchend', handleDragEnd)\n      return () => {\n        window.removeEventListener('mousemove', handleDragMove)\n        window.removeEventListener('mouseup', handleDragEnd)\n        window.removeEventListener('touchmove', handleDragMove)\n        window.removeEventListener('touchend', handleDragEnd)\n      }\n    }\n  }, [isDragging])\n\n  const zoomImageProps: IZoomImageTypes = {\n    src: zoomSrc || src,\n    fadeDuration: fadeDuration,\n    top,\n    left,\n    isZoomed,\n    onLoad: handleLoad,\n    onError: onZoomImageError,\n    onDragStart: moveType === 'drag' && !disableDrag ? handleDragStart : undefined,\n    onDragEnd: moveType === 'drag' && !disableDrag ? handleDragEnd : undefined,\n    onTouchStart: handleDragStart,\n    onTouchEnd: handleDragEnd,\n    onClose: !hideCloseButton ? handleClose : undefined,\n    onFadeOut: isFading ? handleFadeOut : undefined,\n    closeButtonRef: closeButtonRef,\n    zoomImageClassName: zoomImageClassName,\n    closeButtonClassName: closeButtonClassName,\n    alt: alt,\n    closeButtonAriaLabel: closeButtonAriaLabel,\n    zoomImageAriaLabel: zoomImageAriaLabel,\n    onKeyDown: handleZoomLayerKeyDown,\n    closeButtonContent: closeButtonContent,\n    loadingPlaceholder: loadingPlaceholder,\n    errorPlaceholder: errorPlaceholder,\n    zoomScale: safeZoomScale,\n    disableLoadingFallbacks: disableLoadingFallbacks,\n    disableErrorFallbacks: disableErrorFallbacks,\n  }\n\n  const containerClass = [styles['c-point-focus'], containerClassName].filter(Boolean).join(' ')\n\n  return (\n    <figure\n      role='group'\n      ref={containerRef}\n      tabIndex={tabIndex}\n      data-movetype={moveType}\n      data-testid='pf-image-magnifier-container'\n      aria-label={containerAriaLabel ?? 'Zoomable image'}\n      className={containerClass}\n      style={{ width: width, height: height }}\n      onClick={e => handleClick(e, 'hover')}\n      onTouchStart={e => {\n        if (disableMobile) {\n          e.preventDefault()\n        }\n      }}\n      onKeyDown={handleKeyDown}\n      onMouseEnter={handleMouseEnter}\n      onMouseMove={isZoomed ? handleMouseMove : undefined}\n      onMouseLeave={handleMouseLeave}>\n      <BaseImage\n        src={src}\n        alt={alt}\n        sources={sources}\n        width={width}\n        height={height}\n        baseImageStyle={baseImageStyle}\n        baseImageClassName={baseImageClassName}\n        fadeDuration={fadeDuration}\n        isZoomed={isZoomed}\n        onError={onBaseImageError}\n        loadingPlaceholder={loadingPlaceholder}\n        errorPlaceholder={errorPlaceholder}\n        disableLoadingFallbacks={disableLoadingFallbacks}\n        disableErrorFallbacks={disableErrorFallbacks}\n      />\n      {isActive && (\n        <>\n          {overlay && (\n            <div className={styles['c-point-focus__overlay']} data-testid='pf-overlay'>\n              {overlay}\n            </div>\n          )}\n          <ZoomFallbackBoundary fallback={errorPlaceholder ?? <FallbackImage />}>\n            <ZoomImage key={isZoomed && clickToZoomOut ? 'zoomed' : 'unzoomed'} ref={zoomedImgRef} {...zoomImageProps} />\n          </ZoomFallbackBoundary>\n        </>\n      )}\n    </figure>\n  )\n}\n\nexport default ImageMagnifier\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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","x_google_ignoreList":[0]}