1 line
28 KiB
Plaintext
1 line
28 KiB
Plaintext
{"version":3,"file":"image-viewer.vue2.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 } from './image-viewer'\n\nimport type { CSSProperties } from 'vue'\nimport type {\n ImageViewerAction,\n ImageViewerMode,\n ImageViewerProps,\n} 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 = withDefaults(defineProps<ImageViewerProps>(), {\n urlList: () => [],\n initialIndex: 0,\n infinite: true,\n closeOnPressEscape: true,\n zoomRate: 1.2,\n scale: 1,\n minScale: 0.2,\n maxScale: 7,\n})\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","_createVNode","_Transition","_createElementVNode","_normalizeClass","_withModifiers","_createCommentVNode","_createElementBlock","_Fragment","$slots","_renderSlot","_resolveDynamicComponent"],"mappings":"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"} |