UNPKG

tdesign-vue-next

Version:
1 lines 24.5 kB
{"version":3,"file":"image-viewer.mjs","sources":["../../../components/image-viewer/image-viewer.tsx"],"sourcesContent":["import { ChevronDownIcon, ChevronLeftIcon, CloseIcon } from 'tdesign-icons-vue-next';\nimport { Teleport, Transition, computed, defineComponent, nextTick, ref, toRefs, watch } from 'vue';\n\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport useDefaultValue from '../hooks/useDefaultValue';\nimport usePopupManager from '../hooks/usePopupManager';\nimport useTeleport from '../hooks/useTeleport';\nimport useVModel from '../hooks/useVModel';\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 './consts';\nimport { useMirror, useRotate, useScale } from './hooks';\nimport props from './props';\nimport { TdImageViewerProps } from './type';\nimport { downloadFile, formatImages, 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 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 ?? 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 { isLastDialog } = 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) : downloadFile(url);\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 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 && isLastDialog()) {\n onClose({ e, trigger: 'esc' });\n }\n break;\n default:\n break;\n }\n };\n\n const divRef = ref<HTMLDivElement>();\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 const onWheel = (e: WheelEvent) => {\n e.preventDefault();\n const { deltaY } = e;\n deltaY > 0 ? onZoomOut() : onZoomIn();\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 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 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 onDownload={onDownloadClick}\n draggable={props.draggable}\n showOverlay={showOverlayValue.value}\n title={props.title}\n imageReferrerpolicy={imageReferrerpolicy.value}\n />\n </>\n );\n }\n\n return (\n <>\n {renderTNodeJSX('trigger', { params: { open: openHandler } })}\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 onWheel={onWheel}\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 <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 onDownload={onDownloadClick}\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 isSvg={currentImage.value.isSvg}\n imageReferrerpolicy={imageReferrerpolicy.value}\n />\n </div>\n )}\n </Transition>\n </Teleport>\n </>\n );\n };\n },\n});\n"],"names":["defineComponent","name","props","setup","_props2$defaultIndex","classPrefix","usePrefixClass","COMPONENT_NAME","renderTNodeJSX","useTNodeJSX","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","concat","_defineProperty","headerClass","zIndexValue","_props2$zIndex","zIndex","toggleExpand","_useMirror","useMirror","mirror","onMirror","resetMirror","_useScale","useScale","imageScale","scale","onZoomIn","onZoomOut","resetScale","_useRotate","useRotate","rotate","onRotate","resetRotate","onRest","images","formatImages","currentImage","_images$value$indexVa","mainImage","_usePopupManager","usePopupManager","isLastDialog","prevImage","newIndex","trigger","nextImage","length","onImgClick","i","onDownloadClick","url","onDownload","downloadFile","openHandler","onClose","ctx","_props2$onClose","closeBtnAction","e","clickOverlayHandler","closeOnOverlay","keydownHandler","stopPropagation","code","EVENT_CODE","left","right","up","down","esc","closeOnEscKeydown","divRef","watch","val","clearTimeout","nextTick","then","_divRef$value","_divRef$value$focus","focus","call","setTimeout","onWheel","preventDefault","deltaY","transStyle","transform","renderHeader","_createVNode","TImageViewerIcon","icon","ChevronDownIcon","map","image","Image","thumbnail","onClick","renderNavigationArrow","type","rotateDeg","ChevronLeftIcon","renderCloseBtn","closeBtn","CloseIcon","mode","_Fragment","params","open","TImageViewerModal","draggable","title","Teleport","_default","Transition","_withDirectives","TImageViewerUtils","TImageItem","isSvg","_vShow"],"mappings":"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"}