{"version":3,"file":"hooks.mjs","sources":["../../src/image-viewer/hooks.ts"],"sourcesContent":["import { ref } from 'vue';\nimport { ImageScale } from './type';\n\ninterface InitTransform {\n  translateX: number;\n  translateY: number;\n}\n\nexport function useDrag(initTransform: InitTransform) {\n  const transform = ref(initTransform);\n\n  const mouseDownHandler = (e: MouseEvent) => {\n    const { pageX: startX, pageY: startY } = e;\n    const { translateX, translateY } = transform.value;\n    const mouseMoveHandler = (e: MouseEvent) => {\n      const { pageX, pageY } = e;\n      transform.value = {\n        translateX: translateX + pageX - startX,\n        translateY: translateY + pageY - startY,\n      };\n    };\n    const mouseUpHandler = () => {\n      document.removeEventListener('mousemove', mouseMoveHandler);\n      document.removeEventListener('mouseup', mouseUpHandler);\n    };\n\n    document.addEventListener('mousemove', mouseMoveHandler);\n    document.addEventListener('mouseup', mouseUpHandler);\n  };\n\n  const resetTransform = () => {\n    transform.value = { ...initTransform };\n  };\n\n  return { transform, mouseDownHandler, resetTransform };\n}\n\nexport function useMirror() {\n  const mirror = ref(1);\n  const onMirror = () => {\n    mirror.value *= -1;\n  };\n  const resetMirror = () => {\n    mirror.value = 1;\n  };\n\n  return { mirror, onMirror, resetMirror };\n}\n\nexport function useScale(imageScale: ImageScale = { max: 2, min: 0.5, step: 0.5 }) {\n  const { max, min, step } = imageScale;\n  const scale = ref(1);\n  const onZoomIn = () => {\n    setScale(scale.value + step);\n  };\n  const onZoomOut = () => {\n    setScale(scale.value - step);\n  };\n  const resetScale = () => {\n    scale.value = 1;\n  };\n\n  const setScale = (newScale: number) => {\n    let value = newScale;\n    if (newScale < min) {\n      value = min;\n    }\n    if (newScale > max) {\n      value = max;\n    }\n    scale.value = value;\n  };\n\n  return { scale, onZoomIn, onZoomOut, resetScale };\n}\n\nexport function useRotate() {\n  const rotate = ref(0);\n  const ROTATE_DEG = 90;\n\n  const onRotate = () => {\n    rotate.value += ROTATE_DEG;\n  };\n  const resetRotate = () => {\n    rotate.value = 0;\n  };\n\n  return { rotate, onRotate, resetRotate };\n}\n"],"names":["translateX","translateY","document","transform","mouseDownHandler","resetTransform","mirror","onMirror","resetMirror","max","min","step","setScale","value","scale","onZoomIn","onZoomOut","resetScale","rotate","onRotate","resetRotate"],"mappings":"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"}