{"version":3,"file":"image-viewer.mjs","sources":["../../src/image-viewer/image-viewer.tsx"],"sourcesContent":["import { computed, defineComponent, ref, toRefs, Teleport, watch, Transition } from 'vue';\n\nimport props from './props';\nimport TImageViewerIcon from './base/ImageModalIcon';\nimport TImageViewerUtils from './base/ImageViewerUtils';\nimport TImageItem from './base/ImageItem';\nimport TImageViewerModal from './base/ImageViewerModal';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport useVModel from '../hooks/useVModel';\nimport useDefaultValue from '../hooks/useDefaultValue';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport { TdImageViewerProps } from './type';\nimport { useMirror, useRotate, useScale } from './hooks';\nimport { formatImages, getOverlay } from './utils';\nimport { EVENT_CODE } from './const';\nimport Image from '../image';\n\nexport default defineComponent({\n  name: 'XImageViewer',\n  props: { ...props },\n  setup(props) {\n    const classPrefix = usePrefixClass();\n    const COMPONENT_NAME = usePrefixClass('image-viewer');\n    const renderTNodeJSX = useTNodeJSX();\n    const isExpand = ref(true);\n    const showOverlayValue = computed(() => getOverlay(props));\n\n    const { index, visible, modelValue } = 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\n    const animationEnd = ref(true);\n    const animationTimer = ref();\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 ?? 2600);\n    const toggleExpand = () => {\n      isExpand.value = !isExpand.value;\n    };\n\n    const { mirror, onMirror, resetMirror } = useMirror();\n    const { scale, onZoomIn, onZoomOut, resetScale } = useScale(props.imageScale);\n    const { rotate, onRotate, resetRotate } = useRotate();\n    const onRest = () => {\n      resetMirror();\n      resetScale();\n      resetRotate();\n    };\n\n    const images = computed(() => formatImages(props.images));\n    const currentImage = computed(() => images.value[indexValue.value] ?? { mainImage: '' });\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 openHandler = () => {\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\n    const keydownHandler = (e: KeyboardEvent) => {\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          onClose({ e, trigger: 'esc' });\n          break;\n        default:\n          break;\n      }\n    };\n\n    watch(\n      () => visibleValue.value,\n      (val) => {\n        clearTimeout(animationTimer.value);\n        if (val) {\n          animationEnd.value = false;\n          window.addEventListener('keydown', keydownHandler);\n\n          onRest();\n        } else {\n          animationTimer.value = setTimeout(() => {\n            animationEnd.value = true;\n          }, 200);\n          window.removeEventListener('keydown', keydownHandler);\n        }\n      },\n    );\n\n    const onWheel = (e: WheelEvent) => {\n      e.preventDefault();\n      const { deltaY, ctrlKey } = e;\n      // mac触摸板双指缩放时ctrlKey=true，deltaY>0为缩小  <0为放大\n      if (ctrlKey) {\n        return deltaY > 0 ? onZoomOut() : onZoomIn();\n      }\n      deltaY > 0 ? onZoomIn() : onZoomOut();\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={() => <icon-ri-arrow-down-s-line />}\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                  className={`${COMPONENT_NAME.value}__header-img`}\n                  onClick={() => onImgClick(index)}\n                />\n              </div>\n            ))}\n          </div>\n        </div>\n      </div>\n    );\n    const renderNavigationArrow = (type: 'prev' | 'next') => {\n      const rotateDeg = type === 'prev' ? 0 : 180;\n      const icon = renderTNodeJSX(\n        'navigationArrow',\n        <icon-ri-arrow-left-s-line 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', <icon-ri-close-line size=\"24px\" />)}\n        </div>\n      );\n    };\n\n    return () => {\n      if (props.mode === 'modeless') {\n        return (\n          <>\n            {renderTNodeJSX('trigger', { params: { open: openHandler } })}\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              draggable={props.draggable}\n              showOverlay={showOverlayValue.value}\n              title={props.title}\n            />\n          </>\n        );\n      }\n\n      return (\n        <>\n          {renderTNodeJSX('trigger', { params: { open: openHandler } })}\n          <Teleport to=\"body\">\n            <Transition>\n              {(visibleValue.value || !animationEnd.value) && (\n                <div\n                  v-show={visibleValue.value}\n                  class={wrapClass.value}\n                  style={{ zIndex: zIndexValue.value }}\n                  onWheel={onWheel}\n                >\n                  {!!showOverlayValue.value && (\n                    <div class={`${COMPONENT_NAME.value}__modal-mask`} onClick={clickOverlayHandler} />\n                  )}\n                  {images.value.length > 1 && (\n                    <>\n                      {renderHeader()}\n                      <div class={`${COMPONENT_NAME.value}__modal-index`}>\n                        {props.title && renderTNodeJSX('title')}\n                        {`${indexValue.value + 1}/${images.value.length}`}\n                      </div>\n                      {renderNavigationArrow('prev')}\n                      {renderNavigationArrow('next')}\n                    </>\n                  )}\n                  {renderCloseBtn()}\n                  <TImageViewerUtils\n                    onZoomIn={onZoomIn}\n                    onZoomOut={onZoomOut}\n                    onMirror={onMirror}\n                    onReset={onRest}\n                    onRotate={onRotate}\n                    scale={scale.value}\n                    currentImage={currentImage.value}\n                  />\n                  <TImageItem\n                    scale={scale.value}\n                    rotate={rotate.value}\n                    mirror={mirror.value}\n                    src={currentImage.value.mainImage}\n                    placementSrc={currentImage.value.thumbnail}\n                  />\n                </div>\n              )}\n            </Transition>\n          </Teleport>\n        </>\n      );\n    };\n  },\n});\n"],"names":["name","props","indexValue","setIndexValue","visibleValue","setVisibleValue","isExpand","resetMirror","resetScale","resetRotate","mainImage","onRest","trigger","onClose","e","prevImage","nextImage","onZoomIn","onZoomOut","watch","clearTimeout","window","animationTimer","transform","_createVNode","_resolveComponent","index","_Fragment","params","open","_withDirectives","_vShow"],"mappings":"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"}