{"version":3,"file":"image-viewer.mjs","sources":["../../../common/js/image-viewer/utils.ts","../../../components/image-viewer/image-viewer.tsx"],"sourcesContent":["import { isArray, isString } from 'lodash-es';\nimport type { ImageInfo, Images } from './types';\n\nconst isSameOrigin = (url: string) => {\n  try {\n    const imgUrl = new URL(url, window.location.href);\n    return imgUrl.origin === window.location.origin;\n  } catch {\n    return false;\n  }\n};\n\nconst directDownload = (imgSrc: string, name: string) => {\n  const a = document.createElement('a');\n  a.download = name;\n  a.href = imgSrc;\n  a.click();\n  a.remove();\n};\n\nconst fileDownload = (obj: Blob | MediaSource, name: string) => {\n  const url = URL.createObjectURL(obj);\n  const a = document.createElement('a');\n  a.href = url;\n  a.download = name;\n  a.click();\n  a.remove();\n  URL.revokeObjectURL(url);\n};\n\nconst canvasDownload = (imgSrc: string, name: string) => {\n  const image = new Image();\n  image.setAttribute('crossOrigin', 'anonymous');\n\n  image.onload = () => {\n    const canvas = document.createElement('canvas');\n    canvas.width = image.width;\n    canvas.height = image.height;\n\n    const context = canvas.getContext('2d');\n    context.drawImage(image, 0, 0, image.width, image.height);\n\n    const extension = name.split('.').pop()?.toLowerCase() || 'png';\n    const mimeType = `image/${extension === 'jpg' ? 'jpeg' : extension}`;\n\n    canvas.toBlob((blob) => {\n      fileDownload(blob, name);\n    }, mimeType);\n  };\n  image.src = imgSrc;\n};\n\nexport const downloadImage = (imgSrc: string | File) => {\n  const randomName = Math.random().toString(32).slice(2);\n\n  if (imgSrc instanceof File) {\n    fileDownload(imgSrc, imgSrc.name);\n    return;\n  }\n\n  // fix: https://github.com/Tencent/tdesign-vue-next/issues/2936\n  // 当链接携带了参数时，需处理掉参数再取图片名称，否则扩展名会与参数链接导致原扩展名失效\n  // 例如：img.png?sign=xxx 不处理参数会被转成 img.png_sign=xxx\n  const name = imgSrc?.split?.('?')?.[0]?.split?.('#')?.[0]?.split?.('/').pop() || randomName;\n\n  if (isSameOrigin(imgSrc)) {\n    directDownload(imgSrc, name);\n  } else {\n    canvasDownload(imgSrc, name);\n  }\n};\n\nconst isImageInfo = (image: string | File | ImageInfo): image is ImageInfo =>\n  !!image && !isString(image) && !(image instanceof File);\n\nexport const formatImages = (images: Images): ImageInfo[] => {\n  if (!isArray(images)) return [];\n  return images.map((item) => {\n    if (isImageInfo(item)) {\n      return {\n        download: true,\n        thumbnail: item.mainImage,\n        ...item,\n      };\n    }\n    return {\n      mainImage: item,\n      thumbnail: item,\n      download: true,\n    };\n  });\n};\n","import { BrowseIcon, ChevronDownIcon, ChevronLeftIcon, CloseIcon } from 'tdesign-icons-vue-next';\nimport { Teleport, Transition, computed, defineComponent, nextTick, onBeforeUnmount, ref, toRefs, watch } from 'vue';\nimport { isNumber } from 'lodash-es';\n\nimport {\n  useVModel,\n  useTNodeJSX,\n  useTeleport,\n  usePrefixClass,\n  useDefaultValue,\n  usePopupManager,\n  useConfig,\n} from '@tdesign/shared-hooks';\nimport { isPropsUsed } from '@tdesign/shared-utils';\nimport { downloadImage, formatImages } from '@tdesign/common-js/image-viewer/utils';\nimport { isImageExceedsViewport } from '@tdesign/common-js/image-viewer/transform';\nimport Image from '../image';\nimport TImageItem from './base/ImageItem';\nimport TImageViewerIcon from './base/ImageModalIcon';\nimport TImageViewerModal from './base/ImageViewerModal';\nimport TImageViewerUtils from './base/ImageViewerUtils';\nimport { EVENT_CODE } from './constants';\nimport { useMirror, useRotate, useScale } from './hooks';\nimport props from './props';\nimport { TdImageViewerProps } from './type';\nimport { getOverlay } from './utils';\n\nexport default defineComponent({\n  name: 'TImageViewer',\n  props,\n  setup(props) {\n    const classPrefix = usePrefixClass();\n    const COMPONENT_NAME = usePrefixClass('image-viewer');\n    const renderTNodeJSX = useTNodeJSX();\n    const { globalConfig } = useConfig('imageViewer');\n\n    const isExpand = ref(true);\n    const showOverlayValue = computed(() => getOverlay(props));\n\n    const { index, visible, modelValue, imageReferrerpolicy } = toRefs(props);\n    const [indexValue, setIndexValue] = useDefaultValue(index, props.defaultIndex ?? 0, props.onIndexChange, 'index');\n    const [visibleValue, setVisibleValue] = useVModel(visible, modelValue, props.defaultVisible, () => {}, 'visible');\n    const animationEnd = ref(true);\n    const animationTimer = ref();\n    // teleport容器\n    const teleportElement = useTeleport(() => props.attach);\n\n    const wrapClass = computed(() => [\n      COMPONENT_NAME.value,\n      `${COMPONENT_NAME.value}-preview-image`,\n      {\n        [`${classPrefix.value}-is-hide`]: !visibleValue.value,\n      },\n    ]);\n    const headerClass = computed(() => [\n      `${classPrefix.value}-image-viewer__modal-header`,\n      {\n        [`${classPrefix.value}-is-show`]: isExpand.value,\n      },\n    ]);\n    const zIndexValue = computed(() => props.zIndex ?? 3000);\n    const toggleExpand = () => {\n      isExpand.value = !isExpand.value;\n    };\n\n    const { mirror, onMirror, resetMirror } = useMirror();\n    const { scale, onZoomIn, onZoomOut, resetScale, onTouchStart, onTouchMove, onTouchEnd } = useScale(\n      props.imageScale,\n    );\n    const { rotate, onRotate, resetRotate } = useRotate();\n\n    // imageScale 动态变化时重置缩放\n    watch(\n      () => props.imageScale,\n      () => resetScale(),\n    );\n\n    const onRest = () => {\n      resetMirror();\n      resetScale();\n      resetRotate();\n      imageItemRef.value?.resetTransform?.();\n    };\n\n    const images = computed(() => formatImages(props.images));\n    const currentImage = computed(() => images.value[indexValue.value] ?? { mainImage: '' });\n\n    const { isTopInteractivePopup } = usePopupManager('dialog', {\n      visible: visibleValue,\n    });\n\n    const prevImage = () => {\n      const newIndex = indexValue.value - 1;\n      onRest();\n      setIndexValue(newIndex < 0 ? 0 : newIndex, { trigger: 'prev' });\n    };\n\n    const nextImage = () => {\n      const newIndex = indexValue.value + 1;\n      onRest();\n      setIndexValue(newIndex >= images.value.length ? indexValue.value : newIndex, { trigger: 'next' });\n    };\n\n    const onImgClick = (i: number) => {\n      setIndexValue(i, { trigger: 'current' });\n    };\n\n    const onDownloadClick = (url: string) => {\n      props.onDownload ? props.onDownload(url) : downloadImage(url);\n    };\n\n    const openHandler = (index?: number) => {\n      if (isNumber(index)) {\n        onImgClick(index);\n      }\n\n      setVisibleValue(true);\n    };\n    const onClose: TdImageViewerProps['onClose'] = (ctx) => {\n      setVisibleValue(false);\n      props.onClose?.(ctx);\n    };\n    const closeBtnAction = (e: MouseEvent) => {\n      onClose({ e, trigger: 'close-btn' });\n    };\n    const clickOverlayHandler = (e: MouseEvent) => {\n      if (props.closeOnOverlay) {\n        onClose({ e, trigger: 'overlay' });\n      }\n    };\n    const keydownHandler = (e: KeyboardEvent) => {\n      e.stopPropagation();\n\n      switch (e.code) {\n        case EVENT_CODE.left:\n          prevImage();\n          break;\n        case EVENT_CODE.right:\n          nextImage();\n          break;\n        case EVENT_CODE.up:\n          onZoomIn();\n          break;\n        case EVENT_CODE.down:\n          onZoomOut();\n          break;\n        case EVENT_CODE.esc:\n          if (props.closeOnEscKeydown && isTopInteractivePopup()) {\n            onClose({ e, trigger: 'esc' });\n          }\n          break;\n        default:\n          break;\n      }\n    };\n\n    const divRef = ref<HTMLDivElement>();\n    const imageItemRef = ref<{\n      modalBoxRef?: HTMLDivElement;\n      transform?: { translateX: number; translateY: number };\n      resetTransform?: () => void;\n      enableTransition?: () => void;\n    }>();\n\n    watch(\n      () => visibleValue.value,\n      (val) => {\n        clearTimeout(animationTimer.value);\n        if (val) {\n          animationEnd.value = false;\n          nextTick().then(() => {\n            divRef.value?.focus?.();\n          });\n\n          onRest();\n        } else {\n          animationTimer.value = setTimeout(() => {\n            animationEnd.value = true;\n          }, 200);\n        }\n      },\n    );\n\n    // Clean up timer when component is unmounted to prevent memory leaks and errors\n    onBeforeUnmount(() => {\n      clearTimeout(animationTimer.value);\n    });\n\n    // 滚轮缩放\n    const onWheel = (e: WheelEvent) => {\n      e.preventDefault();\n\n      const isZoomOut = e.deltaY > 0;\n      const container = divRef.value;\n      const modalBox = imageItemRef.value?.modalBoxRef;\n\n      // 无视口信息时，直接缩放\n      if (!container || !modalBox) {\n        isZoomOut ? onZoomOut() : onZoomIn();\n        return;\n      }\n\n      // 缩小且图片超出视口：以视口中心为基准，向视口中心收敛\n      if (isZoomOut && isImageExceedsViewport(container, modalBox)) {\n        const currentTranslate = imageItemRef.value?.transform ?? { translateX: 0, translateY: 0 };\n\n        const result = onZoomOut({\n          mouseOffsetX: 0,\n          mouseOffsetY: 0,\n          currentTranslate,\n        });\n        if (result?.newTranslate) {\n          // 启用向中心缩放的 transition 动画（CSS 类名驱动）\n          imageItemRef.value?.enableTransition?.();\n          imageItemRef.value.transform = result.newTranslate;\n        }\n      } else {\n        // 正常缩放\n        isZoomOut ? onZoomOut() : onZoomIn();\n      }\n    };\n\n    // 容器级 wheel + 触摸缩放事件绑定（原生事件版）\n    // ⚠️ 不能用 Vue JSX 的 onWheel —— 某些浏览器（Chrome 73+）将 wheel 注册为 passive: true，\n    //    导致 e.preventDefault() 无效，无法阻止页面滚动。\n    //    必须用原生 addEventListener + { passive: false } 绕过。\n    const bindContainerEvents = () => {\n      const container = divRef.value;\n      if (!container) return;\n      container.addEventListener('wheel', onWheel, { passive: false });\n      document.addEventListener('touchstart', onTouchStart, { passive: false });\n      document.addEventListener('touchmove', onTouchMove, { passive: false });\n      document.addEventListener('touchend', onTouchEnd);\n    };\n\n    const unbindContainerEvents = () => {\n      const container = divRef.value;\n      if (container) {\n        container.removeEventListener('wheel', onWheel);\n      }\n      document.removeEventListener('touchstart', onTouchStart);\n      document.removeEventListener('touchmove', onTouchMove);\n      document.removeEventListener('touchend', onTouchEnd);\n    };\n\n    // visible 变化时绑定/解绑事件\n    watch(\n      () => visibleValue.value,\n      (val) => {\n        if (val) {\n          // nextTick 确保 DOM 已渲染\n          nextTick().then(() => bindContainerEvents());\n        } else {\n          unbindContainerEvents();\n        }\n      },\n    );\n\n    // 组件卸载时确保清理\n    onBeforeUnmount(() => {\n      unbindContainerEvents();\n    });\n\n    const transStyle = computed(() => ({\n      transform: `translateX(calc(-${indexValue.value} * (40px / 9 * 16 + 4px)))`,\n    }));\n\n    const renderHeader = () => (\n      <div class={headerClass.value}>\n        <TImageViewerIcon\n          icon={() => <ChevronDownIcon />}\n          class={`${COMPONENT_NAME.value}__header-pre-bt`}\n          onClick={toggleExpand}\n        />\n        <div class={`${COMPONENT_NAME.value}__header-prev`}>\n          <div class={`${COMPONENT_NAME.value}__header-trans`} style={transStyle.value}>\n            {images.value.map((image, index) => (\n              <div\n                key={index}\n                class={[\n                  `${COMPONENT_NAME.value}__header-box`,\n                  {\n                    [`${classPrefix.value}-is-active`]: index === indexValue.value,\n                  },\n                ]}\n              >\n                <Image\n                  src={image.thumbnail || image.mainImage}\n                  error=\"\"\n                  class={`${COMPONENT_NAME.value}__header-img`}\n                  onClick={() => onImgClick(index)}\n                />\n              </div>\n            ))}\n          </div>\n        </div>\n      </div>\n    );\n\n    const renderTitle = () => {\n      const titleContent = renderTNodeJSX('title');\n\n      return (\n        <div class={`${COMPONENT_NAME.value}__modal-index`}>\n          {titleContent ? titleContent : `${indexValue.value + 1}/${images.value.length}`}\n        </div>\n      );\n    };\n\n    const renderNavigationArrow = (type: 'prev' | 'next') => {\n      const rotateDeg = type === 'prev' ? 0 : 180;\n      const icon = renderTNodeJSX(\n        'navigationArrow',\n        <ChevronLeftIcon style={{ transform: `rotate(${rotateDeg}deg)` }} size=\"24px\" />,\n      );\n\n      return (\n        <TImageViewerIcon\n          class={`${COMPONENT_NAME.value}__modal-${type}-bt`}\n          onClick={type === 'prev' ? prevImage : nextImage}\n          icon={() => icon}\n        />\n      );\n    };\n\n    const renderCloseBtn = () => {\n      if (props.closeBtn === false) {\n        return;\n      }\n      return (\n        <div\n          class={[`${COMPONENT_NAME.value}__modal-icon`, `${COMPONENT_NAME.value}__modal-close-bt`]}\n          onClick={closeBtnAction}\n        >\n          {renderTNodeJSX('closeBtn', <CloseIcon size=\"24px\" />)}\n        </div>\n      );\n    };\n\n    const renderDefaultTrigger = () => {\n      const firstImage = images.value[0] || '';\n      const imageSrc = typeof firstImage === 'string' ? firstImage : firstImage.thumbnail || firstImage.mainImage;\n      return (\n        <div class={`${COMPONENT_NAME.value}__trigger`}>\n          <Image src={imageSrc} alt=\"preview\" fit=\"contain\" class={`${COMPONENT_NAME.value}__trigger-img`} />\n          <div class={`${COMPONENT_NAME.value}__trigger--hover`} onClick={() => openHandler()}>\n            <span>\n              <BrowseIcon size=\"1.4em\" class={`${COMPONENT_NAME.value}__trigger-icon`} />\n              {globalConfig.value.previewText}\n            </span>\n          </div>\n        </div>\n      );\n    };\n\n    return () => {\n      if (props.mode === 'modeless') {\n        return (\n          <>\n            {isPropsUsed('trigger')\n              ? renderTNodeJSX('trigger', { params: { open: openHandler } })\n              : renderDefaultTrigger()}\n            <TImageViewerModal\n              zIndex={zIndexValue.value}\n              visible={visibleValue.value}\n              index={indexValue.value}\n              images={images.value}\n              scale={scale.value}\n              rotate={rotate.value}\n              mirror={mirror.value}\n              currentImage={currentImage.value}\n              onRotate={onRotate}\n              onZoomIn={onZoomIn}\n              onZoomOut={onZoomOut}\n              onMirror={onMirror}\n              onReset={onRest}\n              onClose={onClose}\n              onDownload={onDownloadClick}\n              draggable={props.draggable}\n              showOverlay={showOverlayValue.value}\n              title={renderTitle}\n              imageReferrerpolicy={imageReferrerpolicy.value}\n            />\n          </>\n        );\n      }\n\n      return (\n        <>\n          {isPropsUsed('trigger')\n            ? renderTNodeJSX('trigger', { params: { open: openHandler } })\n            : renderDefaultTrigger()}\n          <Teleport disabled={!props.attach || !teleportElement.value} to={teleportElement.value}>\n            <Transition>\n              {(visibleValue.value || !animationEnd.value) && (\n                <div\n                  ref={divRef}\n                  v-show={visibleValue.value}\n                  class={wrapClass.value}\n                  style={{ zIndex: zIndexValue.value }}\n                  tabindex={-1}\n                  onKeydown={keydownHandler}\n                >\n                  {!!showOverlayValue.value && (\n                    <div class={`${COMPONENT_NAME.value}__modal-mask`} onClick={clickOverlayHandler} />\n                  )}\n                  {images.value.length > 1 && (\n                    <>\n                      {renderHeader()}\n                      {renderTitle()}\n                      {renderNavigationArrow('prev')}\n                      {renderNavigationArrow('next')}\n                    </>\n                  )}\n                  {renderCloseBtn()}\n                  <TImageViewerUtils\n                    zIndex={zIndexValue.value + 1}\n                    onZoomIn={onZoomIn}\n                    onZoomOut={onZoomOut}\n                    onMirror={onMirror}\n                    onReset={onRest}\n                    onRotate={onRotate}\n                    onDownload={onDownloadClick}\n                    scale={scale.value}\n                    currentImage={currentImage.value}\n                  />\n                  <TImageItem\n                    ref={imageItemRef}\n                    scale={scale.value}\n                    rotate={rotate.value}\n                    mirror={mirror.value}\n                    src={currentImage.value.mainImage}\n                    placementSrc={currentImage.value.thumbnail}\n                    isSvg={currentImage.value.isSvg}\n                    imageReferrerpolicy={imageReferrerpolicy.value}\n                  />\n                </div>\n              )}\n            </Transition>\n          </Teleport>\n        </>\n      );\n    };\n  },\n});\n"],"names":["isSameOrigin","url","imgUrl","URL","window","location","href","origin","_unused","directDownload","imgSrc","name","a","document","createElement","download","click","remove","fileDownload","obj","createObjectURL","revokeObjectURL","canvasDownload","image","Image","setAttribute","onload","_name$split$pop","canvas","width","height","context","getContext","drawImage","extension","split","pop","toLowerCase","mimeType","concat","toBlob","blob","src","downloadImage","_imgSrc$split","_imgSrc$split$split","_imgSrc$split$split$s","randomName","Math","random","toString","slice","File","call","isImageInfo","isString","formatImages","images","isArray","map","item","_objectSpread","thumbnail","mainImage","defineComponent","props","setup","_props2$defaultIndex","classPrefix","usePrefixClass","COMPONENT_NAME","renderTNodeJSX","useTNodeJSX","_useConfig","useConfig","globalConfig","isExpand","ref","showOverlayValue","computed","getOverlay","_toRefs","toRefs","index","visible","modelValue","imageReferrerpolicy","_useDefaultValue","useDefaultValue","defaultIndex","onIndexChange","_useDefaultValue2","_slicedToArray","indexValue","setIndexValue","_useVModel","useVModel","defaultVisible","_useVModel2","visibleValue","setVisibleValue","animationEnd","animationTimer","teleportElement","useTeleport","attach","wrapClass","value","_defineProperty","headerClass","zIndexValue","_props2$zIndex","zIndex","toggleExpand","_useMirror","useMirror","mirror","onMirror","resetMirror","_useScale","useScale","imageScale","scale","onZoomIn","onZoomOut","resetScale","onTouchStart","onTouchMove","onTouchEnd","_useRotate","useRotate","rotate","onRotate","resetRotate","watch","onRest","_imageItemRef$value","_imageItemRef$value$r","imageItemRef","resetTransform","currentImage","_images$value$indexVa","_usePopupManager","usePopupManager","isTopInteractivePopup","prevImage","newIndex","trigger","nextImage","length","onImgClick","i","onDownloadClick","onDownload","openHandler","isNumber","onClose","ctx","_props2$onClose","closeBtnAction","e","clickOverlayHandler","closeOnOverlay","keydownHandler","stopPropagation","code","EVENT_CODE","left","right","up","down","esc","closeOnEscKeydown","divRef","val","clearTimeout","nextTick","then","_divRef$value","_divRef$value$focus","focus","setTimeout","onBeforeUnmount","onWheel","_imageItemRef$value2","preventDefault","isZoomOut","deltaY","container","modalBox","modalBoxRef","isImageExceedsViewport","_imageItemRef$value$t","_imageItemRef$value3","currentTranslate","transform","translateX","translateY","result","mouseOffsetX","mouseOffsetY","newTranslate","_imageItemRef$value4","_imageItemRef$value4$","enableTransition","bindContainerEvents","addEventListener","passive","unbindContainerEvents","removeEventListener","transStyle","renderHeader","_createVNode","TImageViewerIcon","icon","ChevronDownIcon","onClick","renderTitle","titleContent","renderNavigationArrow","type","rotateDeg","ChevronLeftIcon","renderCloseBtn","closeBtn","CloseIcon","renderDefaultTrigger","firstImage","imageSrc","BrowseIcon","previewText","mode","_Fragment","isPropsUsed","params","open","TImageViewerModal","draggable","Teleport","_default","Transition","_withDirectives","TImageViewerUtils","TImageItem","isSvg","_vShow"],"mappings":"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"}