UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 29.7 kB
{"version":3,"file":"image-viewer2.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 @touchstart=\"handleTouchStart\"\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 {\n useLocale,\n useLockscreen,\n useNamespace,\n useZIndex,\n} from '@element-plus/hooks'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { getEventCode, keysOf } from '@element-plus/utils'\nimport ElFocusTrap from '@element-plus/components/focus-trap'\nimport ElTeleport from '@element-plus/components/teleport'\nimport ElIcon from '@element-plus/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\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 visible = 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\nuseLockscreen(visible, { ns })\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 visible.value = false\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(wrapper, '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 const removeMouseup = useEventListener(document, 'mouseup', () => {\n removeMousemove()\n removeMouseup()\n })\n\n e.preventDefault()\n}\n\nfunction handleTouchStart(e: TouchEvent) {\n if (loading.value || !wrapper.value || e.touches.length !== 1) return\n transform.value.enableTransition = false\n\n const { offsetX, offsetY } = transform.value\n const { pageX: startX, pageY: startY } = e.touches[0]\n\n const dragHandler = throttle((ev: TouchEvent) => {\n const targetTouch = ev.touches[0]\n transform.value = {\n ...transform.value,\n offsetX: offsetX + targetTouch.pageX - startX,\n offsetY: offsetY + targetTouch.pageY - startY,\n }\n })\n const removeTouchmove = useEventListener(document, 'touchmove', dragHandler)\n const removeTouchend = useEventListener(document, 'touchend', () => {\n removeTouchmove()\n removeTouchend()\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 visible.value = true\n registerEventListener()\n\n stopWheelListener = useEventListener('wheel', wheelHandler, {\n passive: false,\n })\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","hideOnClickModal","_createCommentVNode","_withCtx","_openBlock","_createElementBlock","_Fragment","$slots","showProgress","_renderSlot","urlList","_createTextVNode","_resolveDynamicComponent","crossorigin"],"mappings":"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"}