{"version":3,"file":"ImageItem.mjs","sources":["../../../src/image-viewer/base/ImageItem.tsx"],"sourcesContent":["import { computed, defineComponent, PropType, ref, toRefs, watch } from 'vue';\nimport { usePrefixClass, useConfig } from '../../hooks/useConfig';\nimport { useDrag } from '../hooks';\nimport { useImagePreviewUrl } from '../../hooks/useImagePreviewUrl';\n\nexport default defineComponent({\n  name: 'XImageItem',\n  props: {\n    rotate: Number,\n    scale: Number,\n    mirror: Number,\n    src: [String, Object] as PropType<string | File>,\n    placementSrc: [String, Object] as PropType<string | File>,\n  },\n\n  setup(props) {\n    const { src, placementSrc } = toRefs(props);\n    const classPrefix = usePrefixClass();\n    const error = ref(false);\n    const loaded = ref(false);\n    const { transform, mouseDownHandler } = useDrag({ translateX: 0, translateY: 0 });\n    const { globalConfig } = useConfig('imageViewer');\n    const errorText = globalConfig.value.errorText ?? '图片加载失败，可尝试重新加载';\n\n    const imgStyle = computed(() => ({\n      transform: `rotate(${props.rotate}deg) scale(${props.scale})`,\n      display: !props.placementSrc || loaded.value ? 'block' : 'none',\n    }));\n    const placementImgStyle = computed(() => ({\n      transform: `rotate(${props.rotate}deg) scale(${props.scale})`,\n      display: !loaded.value ? 'block' : 'none',\n    }));\n    const boxStyle = computed(() => {\n      const { translateX, translateY } = transform.value;\n      return {\n        transform: `translate(${translateX}px, ${translateY}px) scale(${props.mirror}, 1)`,\n      };\n    });\n\n    const resetStatus = () => {\n      error.value = false;\n      loaded.value = false;\n    };\n\n    watch(\n      () => props.src,\n      () => {\n        resetStatus();\n      },\n    );\n\n    const { previewUrl: mainImagePreviewUrl } = useImagePreviewUrl(src);\n    const { previewUrl: placementImagePreviewUrl } = useImagePreviewUrl(placementSrc);\n\n    return () => (\n      <div class={`${classPrefix.value}-image-viewer__modal-pic`}>\n        <div class={`${classPrefix.value}-image-viewer__modal-box`} style={boxStyle.value}>\n          {error.value && (\n            <div class={`${classPrefix.value}-image-viewer__img-error`}>\n              {/* 脱离文档流 */}\n              <div class={`${classPrefix.value}-image-viewer__img-error-content`}>\n                <icon-ri-file-close-line size=\"4em\" />\n                <div class={`${classPrefix.value}-image-viewer__img-error-text`}>{errorText}</div>\n              </div>\n            </div>\n          )}\n\n          {!error.value && !!props.placementSrc && placementImagePreviewUrl.value && (\n            <img\n              class={`${classPrefix.value}-image-viewer__modal-image`}\n              onMousedown={(event: MouseEvent) => {\n                event.stopPropagation();\n                mouseDownHandler(event);\n              }}\n              src={placementImagePreviewUrl.value}\n              style={placementImgStyle.value}\n              alt=\"image\"\n              draggable=\"false\"\n            />\n          )}\n\n          {!error.value && mainImagePreviewUrl.value && (\n            <img\n              class={`${classPrefix.value}-image-viewer__modal-image`}\n              onMousedown={(event: MouseEvent) => {\n                event.stopPropagation();\n                mouseDownHandler(event);\n              }}\n              src={mainImagePreviewUrl.value}\n              onLoad={() => (loaded.value = true)}\n              onError={() => (error.value = true)}\n              style={imgStyle.value}\n              alt=\"image\"\n              draggable=\"false\"\n            />\n          )}\n        </div>\n      </div>\n    );\n  },\n});\n"],"names":["name","props","rotate","scale","mirror","src","placementSrc","translateX","translateY","transform","display","watch","resetStatus","_createVNode","_resolveComponent"],"mappings":"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"}