{"version":3,"file":"image-viewer.mjs","sources":["../../../../../../../packages/components/image-viewer/src/image-viewer.vue"],"sourcesContent":["<template>\n  <el-teleport to=\"body\" :disabled=\"!teleported\">\n    <transition name=\"viewer-fade\" appear>\n      <div\n        ref=\"wrapper\"\n        :tabindex=\"-1\"\n        :class=\"ns.e('wrapper')\"\n        :style=\"{ zIndex }\"\n      >\n        <el-focus-trap\n          loop\n          trapped\n          :focus-trap-el=\"wrapper\"\n          focus-start-el=\"container\"\n          @focusout-prevented=\"onFocusoutPrevented\"\n          @release-requested=\"onCloseRequested\"\n        >\n          <div :class=\"ns.e('mask')\" @click.self=\"hideOnClickModal && hide()\" />\n\n          <!-- CLOSE -->\n          <span :class=\"[ns.e('btn'), ns.e('close')]\" @click=\"hide\">\n            <el-icon>\n              <Close />\n            </el-icon>\n          </span>\n\n          <!-- ARROW -->\n          <template v-if=\"!isSingle\">\n            <span :class=\"arrowPrevKls\" @click=\"prev\">\n              <el-icon>\n                <ArrowLeft />\n              </el-icon>\n            </span>\n            <span :class=\"arrowNextKls\" @click=\"next\">\n              <el-icon>\n                <ArrowRight />\n              </el-icon>\n            </span>\n          </template>\n          <div\n            v-if=\"$slots.progress || showProgress\"\n            :class=\"[ns.e('btn'), ns.e('progress')]\"\n          >\n            <slot\n              name=\"progress\"\n              :active-index=\"activeIndex\"\n              :total=\"urlList.length\"\n            >\n              {{ progress }}\n            </slot>\n          </div>\n          <!-- ACTIONS -->\n          <div :class=\"[ns.e('btn'), ns.e('actions')]\">\n            <div :class=\"ns.e('actions__inner')\">\n              <slot\n                name=\"toolbar\"\n                :actions=\"handleActions\"\n                :prev=\"prev\"\n                :next=\"next\"\n                :reset=\"toggleMode\"\n                :active-index=\"activeIndex\"\n                :set-active-item=\"setActiveItem\"\n              >\n                <el-icon @click=\"handleActions('zoomOut')\">\n                  <ZoomOut />\n                </el-icon>\n                <el-icon @click=\"handleActions('zoomIn')\">\n                  <ZoomIn />\n                </el-icon>\n                <i :class=\"ns.e('actions__divider')\" />\n                <el-icon @click=\"toggleMode\">\n                  <component :is=\"mode.icon\" />\n                </el-icon>\n                <i :class=\"ns.e('actions__divider')\" />\n                <el-icon @click=\"handleActions('anticlockwise')\">\n                  <RefreshLeft />\n                </el-icon>\n                <el-icon @click=\"handleActions('clockwise')\">\n                  <RefreshRight />\n                </el-icon>\n              </slot>\n            </div>\n          </div>\n          <!-- CANVAS -->\n          <div :class=\"ns.e('canvas')\">\n            <slot\n              v-if=\"loadError && $slots['viewer-error']\"\n              name=\"viewer-error\"\n              :active-index=\"activeIndex\"\n              :src=\"currentImg\"\n            />\n            <img\n              v-else\n              ref=\"imgRef\"\n              :key=\"currentImg\"\n              :src=\"currentImg\"\n              :style=\"imgStyle\"\n              :class=\"ns.e('img')\"\n              :crossorigin=\"crossorigin\"\n              @load=\"handleImgLoad\"\n              @error=\"handleImgError\"\n              @mousedown=\"handleMouseDown\"\n            />\n          </div>\n          <slot />\n        </el-focus-trap>\n      </div>\n    </transition>\n  </el-teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  effectScope,\n  markRaw,\n  nextTick,\n  onMounted,\n  ref,\n  shallowRef,\n  watch,\n} from 'vue'\nimport { clamp, useEventListener } from '@vueuse/core'\nimport { throttle } from 'lodash-unified'\nimport { useLocale, useNamespace, useZIndex } from '@hd-front-end/hooks'\nimport { EVENT_CODE } from '@hd-front-end/constants'\nimport { getEventCode, keysOf } from '@hd-front-end/utils'\nimport ElFocusTrap from '@hd-front-end/components/focus-trap'\nimport ElTeleport from '@hd-front-end/components/teleport'\nimport ElIcon from '@hd-front-end/components/icon'\nimport {\n  ArrowLeft,\n  ArrowRight,\n  Close,\n  FullScreen,\n  RefreshLeft,\n  RefreshRight,\n  ScaleToOriginal,\n  ZoomIn,\n  ZoomOut,\n} from '@element-plus/icons-vue'\nimport { imageViewerEmits, imageViewerProps } from './image-viewer'\n\nimport type { CSSProperties } from 'vue'\nimport type { ImageViewerAction, ImageViewerMode } from './image-viewer'\n\nconst modes: Record<'CONTAIN' | 'ORIGINAL', ImageViewerMode> = {\n  CONTAIN: {\n    name: 'contain',\n    icon: markRaw(FullScreen),\n  },\n  ORIGINAL: {\n    name: 'original',\n    icon: markRaw(ScaleToOriginal),\n  },\n}\n\ndefineOptions({\n  name: 'ElImageViewer',\n})\n\nconst props = defineProps(imageViewerProps)\nconst emit = defineEmits(imageViewerEmits)\n\nlet stopWheelListener: (() => void) | undefined\nlet prevOverflow = ''\n\nconst { t } = useLocale()\nconst ns = useNamespace('image-viewer')\nconst { nextZIndex } = useZIndex()\nconst wrapper = ref<HTMLDivElement>()\nconst imgRef = ref<HTMLImageElement>()\n\nconst scopeEventListener = effectScope()\n\nconst scaleClamped = computed(() => {\n  const { scale, minScale, maxScale } = props\n  return clamp(scale, minScale, maxScale)\n})\n\nconst loading = ref(true)\nconst loadError = ref(false)\nconst activeIndex = ref(props.initialIndex)\nconst mode = shallowRef<ImageViewerMode>(modes.CONTAIN)\nconst transform = ref({\n  scale: scaleClamped.value,\n  deg: 0,\n  offsetX: 0,\n  offsetY: 0,\n  enableTransition: false,\n})\nconst zIndex = ref(props.zIndex ?? nextZIndex())\n\nconst isSingle = computed(() => {\n  const { urlList } = props\n  return urlList.length <= 1\n})\n\nconst isFirst = computed(() => activeIndex.value === 0)\n\nconst isLast = computed(() => activeIndex.value === props.urlList.length - 1)\n\nconst currentImg = computed(() => props.urlList[activeIndex.value])\n\nconst arrowPrevKls = computed(() => [\n  ns.e('btn'),\n  ns.e('prev'),\n  ns.is('disabled', !props.infinite && isFirst.value),\n])\n\nconst arrowNextKls = computed(() => [\n  ns.e('btn'),\n  ns.e('next'),\n  ns.is('disabled', !props.infinite && isLast.value),\n])\n\nconst imgStyle = computed(() => {\n  const { scale, deg, offsetX, offsetY, enableTransition } = transform.value\n  let translateX = offsetX / scale\n  let translateY = offsetY / scale\n\n  const radian = (deg * Math.PI) / 180\n  const cosRadian = Math.cos(radian)\n  const sinRadian = Math.sin(radian)\n  translateX = translateX * cosRadian + translateY * sinRadian\n  translateY = translateY * cosRadian - (offsetX / scale) * sinRadian\n\n  const style: CSSProperties = {\n    transform: `scale(${scale}) rotate(${deg}deg) translate(${translateX}px, ${translateY}px)`,\n    transition: enableTransition ? 'transform .3s' : '',\n  }\n  if (mode.value.name === modes.CONTAIN.name) {\n    style.maxWidth = style.maxHeight = '100%'\n  }\n  return style\n})\n\nconst progress = computed(\n  () => `${activeIndex.value + 1} / ${props.urlList.length}`\n)\n\nfunction hide() {\n  unregisterEventListener()\n  stopWheelListener?.()\n  document.body.style.overflow = prevOverflow\n  emit('close')\n}\n\nfunction registerEventListener() {\n  const keydownHandler = throttle((e: KeyboardEvent) => {\n    const code = getEventCode(e)\n\n    switch (code) {\n      // ESC\n      case EVENT_CODE.esc:\n        props.closeOnPressEscape && hide()\n        break\n      // SPACE\n      case EVENT_CODE.space:\n        toggleMode()\n        break\n      // LEFT_ARROW\n      case EVENT_CODE.left:\n        prev()\n        break\n      // UP_ARROW\n      case EVENT_CODE.up:\n        handleActions('zoomIn')\n        break\n      // RIGHT_ARROW\n      case EVENT_CODE.right:\n        next()\n        break\n      // DOWN_ARROW\n      case EVENT_CODE.down:\n        handleActions('zoomOut')\n        break\n    }\n  })\n  const mousewheelHandler = throttle((e: WheelEvent) => {\n    const delta = e.deltaY || e.deltaX\n    handleActions(delta < 0 ? 'zoomIn' : 'zoomOut', {\n      zoomRate: props.zoomRate,\n      enableTransition: false,\n    })\n  })\n\n  scopeEventListener.run(() => {\n    useEventListener(document, 'keydown', keydownHandler)\n    useEventListener(document, 'wheel', mousewheelHandler)\n  })\n}\n\nfunction unregisterEventListener() {\n  scopeEventListener.stop()\n}\n\nfunction handleImgLoad() {\n  loading.value = false\n}\n\nfunction handleImgError(e: Event) {\n  loadError.value = true\n  loading.value = false\n  emit('error', e)\n  ;(e.target as HTMLImageElement).alt = t('el.image.error')\n}\n\nfunction handleMouseDown(e: MouseEvent) {\n  if (loading.value || e.button !== 0 || !wrapper.value) return\n  transform.value.enableTransition = false\n\n  const { offsetX, offsetY } = transform.value\n  const startX = e.pageX\n  const startY = e.pageY\n\n  const dragHandler = throttle((ev: MouseEvent) => {\n    transform.value = {\n      ...transform.value,\n      offsetX: offsetX + ev.pageX - startX,\n      offsetY: offsetY + ev.pageY - startY,\n    }\n  })\n  const removeMousemove = useEventListener(document, 'mousemove', dragHandler)\n  useEventListener(document, 'mouseup', () => {\n    removeMousemove()\n  })\n\n  e.preventDefault()\n}\n\nfunction reset() {\n  transform.value = {\n    scale: scaleClamped.value,\n    deg: 0,\n    offsetX: 0,\n    offsetY: 0,\n    enableTransition: false,\n  }\n}\n\nfunction toggleMode() {\n  if (loading.value || loadError.value) return\n\n  const modeNames = keysOf(modes)\n  const modeValues = Object.values(modes)\n  const currentMode = mode.value.name\n  const index = modeValues.findIndex((i) => i.name === currentMode)\n  const nextIndex = (index + 1) % modeNames.length\n  mode.value = modes[modeNames[nextIndex]]\n  reset()\n}\n\nfunction setActiveItem(index: number) {\n  loadError.value = false\n  const len = props.urlList.length\n  activeIndex.value = (index + len) % len\n}\n\nfunction prev() {\n  if (isFirst.value && !props.infinite) return\n  setActiveItem(activeIndex.value - 1)\n}\n\nfunction next() {\n  if (isLast.value && !props.infinite) return\n  setActiveItem(activeIndex.value + 1)\n}\n\nfunction handleActions(action: ImageViewerAction, options = {}) {\n  if (loading.value || loadError.value) return\n  const { minScale, maxScale } = props\n  const { zoomRate, rotateDeg, enableTransition } = {\n    zoomRate: props.zoomRate,\n    rotateDeg: 90,\n    enableTransition: true,\n    ...options,\n  }\n  switch (action) {\n    case 'zoomOut':\n      if (transform.value.scale > minScale) {\n        transform.value.scale = Number.parseFloat(\n          (transform.value.scale / zoomRate).toFixed(3)\n        )\n      }\n      break\n    case 'zoomIn':\n      if (transform.value.scale < maxScale) {\n        transform.value.scale = Number.parseFloat(\n          (transform.value.scale * zoomRate).toFixed(3)\n        )\n      }\n      break\n    case 'clockwise':\n      transform.value.deg += rotateDeg\n      emit('rotate', transform.value.deg)\n      break\n    case 'anticlockwise':\n      transform.value.deg -= rotateDeg\n      emit('rotate', transform.value.deg)\n      break\n  }\n  transform.value.enableTransition = enableTransition\n}\n\nfunction onFocusoutPrevented(event: CustomEvent) {\n  if (event.detail?.focusReason === 'pointer') {\n    event.preventDefault()\n  }\n}\n\nfunction onCloseRequested() {\n  if (props.closeOnPressEscape) {\n    hide()\n  }\n}\n\nfunction wheelHandler(e: WheelEvent) {\n  if (!e.ctrlKey) return\n\n  if (e.deltaY < 0) {\n    e.preventDefault()\n    return false\n  } else if (e.deltaY > 0) {\n    e.preventDefault()\n    return false\n  }\n}\n\nwatch(\n  () => scaleClamped.value,\n  (val) => {\n    transform.value.scale = val\n  }\n)\n\nwatch(currentImg, () => {\n  nextTick(() => {\n    const $img = imgRef.value\n    if (!$img?.complete) {\n      loading.value = true\n    }\n  })\n})\n\nwatch(activeIndex, (val) => {\n  reset()\n  emit('switch', val)\n})\n\nonMounted(() => {\n  registerEventListener()\n\n  stopWheelListener = useEventListener('wheel', wheelHandler, {\n    passive: false,\n  })\n\n  // prevent body scroll\n  prevOverflow = document.body.style.overflow\n  document.body.style.overflow = 'hidden'\n})\n\ndefineExpose({\n  /**\n   * @description manually switch image\n   */\n  setActiveItem,\n})\n</script>\n"],"names":["_a","_createBlock","_unref","teleported","_createVNode","_Transition","_createElementVNode","_normalizeClass","_normalizeStyle","_withModifiers","hideOnClickModal","_createCommentVNode","_withCtx","_openBlock","_createElementBlock","_Fragment","$slots","showProgress","_renderSlot","urlList","_createTextVNode","_resolveDynamicComponent","crossorigin"],"mappings":"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"}