{"version":3,"file":"index.mjs","sources":["../../../../components/image-viewer/hooks/index.ts"],"sourcesContent":["import { positiveSubtract, positiveAdd } from '@tdesign/common-js/input-number/number';\nimport { ref, watch } from 'vue';\nimport { ImageScale } from '../type';\nimport { throttle } from 'lodash-es';\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    // only move by left mouse click\n    if ('button' in e && e.button !== 0) return;\n\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\n    const removeHandler = () => {\n      document.removeEventListener('mousemove', mouseMoveHandler);\n      document.removeEventListener('mouseup', mouseUpHandler);\n      document.removeEventListener('mouseleave', mouseLeaveHandler);\n    };\n\n    const mouseUpHandler = () => removeHandler();\n    const mouseLeaveHandler = () => removeHandler();\n\n    document.addEventListener('mousemove', mouseMoveHandler);\n    document.addEventListener('mouseup', mouseUpHandler);\n    document.addEventListener('mouseleave', mouseLeaveHandler);\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) {\n  const params = { max: 2, min: 0.5, step: 0.2, defaultScale: 1, ...imageScale };\n  const { max, min, step, defaultScale } = params;\n  const scale = ref(defaultScale);\n\n  const onZoomIn = throttle(() => {\n    const result = positiveAdd(scale.value, step);\n    setScale(result);\n  }, 50);\n\n  const onZoomOut = throttle(() => {\n    const result = positiveSubtract(scale.value, step);\n    setScale(result);\n  }, 50);\n\n  const resetScale = () => {\n    scale.value = defaultScale;\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  watch(\n    () => imageScale,\n    () => resetScale(),\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":["useDrag","initTransform","transform","ref","mouseDownHandler","e","button","startX","pageX","startY","pageY","_transform$value","value","translateX","translateY","mouseMoveHandler","removeHandler","document","removeEventListener","mouseUpHandler","mouseLeaveHandler","addEventListener","resetTransform","_objectSpread","useMirror","mirror","onMirror","resetMirror","useScale","imageScale","params","max","min","step","defaultScale","scale","onZoomIn","throttle","result","positiveAdd","setScale","onZoomOut","positiveSubtract","resetScale","newScale","watch","useRotate","rotate","ROTATE_DEG","onRotate","resetRotate"],"mappings":"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"}