element-plus
Version:
A Component Library for Vue 3
1 lines • 15.8 kB
Source Map (JSON)
{"version":3,"file":"image2.mjs","sources":["../../../../../../packages/components/image/src/image.vue"],"sourcesContent":["<template>\n <div ref=\"container\" :class=\"[ns.b(), $attrs.class]\" :style=\"containerStyle\">\n <slot v-if=\"loading\" name=\"placeholder\">\n <div :class=\"ns.e('placeholder')\" />\n </slot>\n <slot v-else-if=\"hasLoadError\" name=\"error\">\n <div :class=\"ns.e('error')\">{{ t('el.image.error') }}</div>\n </slot>\n <img\n v-else\n v-bind=\"attrs\"\n :src=\"src\"\n :style=\"imageStyle\"\n :class=\"[ns.e('inner'), preview ? ns.e('preview') : '']\"\n @click=\"clickHandler\"\n />\n <template v-if=\"preview\">\n <image-viewer\n v-if=\"showViewer\"\n :z-index=\"zIndex\"\n :initial-index=\"imageIndex\"\n :url-list=\"previewSrcList\"\n :hide-on-click-modal=\"hideOnClickModal\"\n :teleported=\"teleported\"\n @close=\"closeViewer\"\n @switch=\"switchViewer\"\n >\n <div v-if=\"$slots.viewer\">\n <slot name=\"viewer\" />\n </div>\n </image-viewer>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, onMounted, watch, nextTick } from 'vue'\nimport { isString } from '@vue/shared'\nimport {\n useEventListener,\n useThrottleFn,\n isClient,\n isBoolean,\n} from '@vueuse/core'\nimport {\n useAttrs,\n useLocale,\n useNamespace,\n useDeprecated,\n} from '@element-plus/hooks'\nimport ImageViewer from '@element-plus/components/image-viewer'\nimport {\n getScrollContainer,\n isInContainer,\n isElement,\n} from '@element-plus/utils'\nimport { imageEmits, imageProps } from './image'\n\nimport type { CSSProperties, StyleValue } from 'vue'\n\nlet prevOverflow = ''\n\nexport default defineComponent({\n name: 'ElImage',\n components: {\n ImageViewer,\n },\n inheritAttrs: false,\n\n props: imageProps,\n emits: imageEmits,\n\n setup(props, { emit, attrs: rawAttrs }) {\n useDeprecated(\n {\n scope: 'el-image',\n from: 'append-to-body',\n replacement: 'preview-teleported',\n version: '2.2.0',\n ref: 'https://element-plus.org/en-US/component/image.html#image-attributess',\n },\n computed(() => isBoolean(props.appendToBody))\n )\n\n const { t } = useLocale()\n const ns = useNamespace('image')\n\n const attrs = useAttrs()\n const hasLoadError = ref(false)\n const loading = ref(true)\n const imgWidth = ref(0)\n const imgHeight = ref(0)\n const showViewer = ref(false)\n const container = ref<HTMLElement>()\n\n const _scrollContainer = ref<HTMLElement | Window>()\n let stopScrollListener: () => void\n let stopWheelListener: () => void\n\n const containerStyle = computed(() => rawAttrs.style as StyleValue)\n\n const imageStyle = computed<CSSProperties>(() => {\n const { fit } = props\n if (isClient && fit) {\n return { objectFit: fit }\n }\n return {}\n })\n\n const preview = computed(() => {\n const { previewSrcList } = props\n return Array.isArray(previewSrcList) && previewSrcList.length > 0\n })\n\n const teleported = computed(() => {\n return props.appendToBody || props.previewTeleported\n })\n\n const imageIndex = computed(() => {\n const { previewSrcList, initialIndex } = props\n let previewIndex = initialIndex\n if (initialIndex > previewSrcList.length - 1) {\n previewIndex = 0\n }\n return previewIndex\n })\n\n const loadImage = () => {\n if (!isClient) return\n\n // reset status\n loading.value = true\n hasLoadError.value = false\n\n const img = new Image()\n const currentImageSrc = props.src\n\n // load & error callbacks are only responsible for currentImageSrc\n img.addEventListener('load', (e) => {\n if (currentImageSrc !== props.src) {\n return\n }\n handleLoad(e, img)\n })\n img.addEventListener('error', (e) => {\n if (currentImageSrc !== props.src) {\n return\n }\n handleError(e)\n })\n\n // bind html attrs\n // so it can behave consistently\n Object.entries(attrs.value).forEach(([key, value]) => {\n // avoid onload to be overwritten\n if (key.toLowerCase() === 'onload') return\n img.setAttribute(key, value as string)\n })\n img.src = currentImageSrc\n }\n\n function handleLoad(e: Event, img: HTMLImageElement) {\n imgWidth.value = img.width\n imgHeight.value = img.height\n loading.value = false\n hasLoadError.value = false\n }\n\n function handleError(event: Event) {\n loading.value = false\n hasLoadError.value = true\n emit('error', event)\n }\n\n function handleLazyLoad() {\n if (isInContainer(container.value, _scrollContainer.value)) {\n loadImage()\n removeLazyLoadListener()\n }\n }\n\n const lazyLoadHandler = useThrottleFn(handleLazyLoad, 200)\n\n async function addLazyLoadListener() {\n if (!isClient) return\n\n await nextTick()\n\n const { scrollContainer } = props\n if (isElement(scrollContainer)) {\n _scrollContainer.value = scrollContainer\n } else if (isString(scrollContainer) && scrollContainer !== '') {\n _scrollContainer.value =\n document.querySelector<HTMLElement>(scrollContainer) ?? undefined\n } else if (container.value) {\n _scrollContainer.value = getScrollContainer(container.value)\n }\n\n if (_scrollContainer.value) {\n stopScrollListener = useEventListener(\n _scrollContainer,\n 'scroll',\n lazyLoadHandler\n )\n setTimeout(() => handleLazyLoad(), 100)\n }\n }\n\n function removeLazyLoadListener() {\n if (!isClient || !_scrollContainer.value || !lazyLoadHandler) return\n\n stopScrollListener()\n _scrollContainer.value = undefined\n }\n\n function 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\n function clickHandler() {\n // don't show viewer when preview is false\n if (!preview.value) return\n\n stopWheelListener = useEventListener('wheel', wheelHandler, {\n passive: false,\n })\n\n // prevent body scroll\n prevOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n showViewer.value = true\n }\n\n function closeViewer() {\n stopWheelListener?.()\n document.body.style.overflow = prevOverflow\n showViewer.value = false\n emit('close')\n }\n\n function switchViewer(val: number) {\n emit('switch', val)\n }\n\n watch(\n () => props.src,\n () => {\n if (props.lazy) {\n // reset status\n loading.value = true\n hasLoadError.value = false\n removeLazyLoadListener()\n addLazyLoadListener()\n } else {\n loadImage()\n }\n }\n )\n\n onMounted(() => {\n if (props.lazy) {\n addLazyLoadListener()\n } else {\n loadImage()\n }\n })\n\n return {\n attrs,\n loading,\n hasLoadError,\n showViewer,\n containerStyle,\n imageStyle,\n preview,\n imageIndex,\n container,\n ns,\n teleported,\n\n clickHandler,\n closeViewer,\n switchViewer,\n t,\n }\n },\n})\n</script>\n"],"names":["ImageViewer","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_normalizeStyle","_renderSlot","_createElementVNode","_toDisplayString","_mergeProps","_Fragment","_createBlock","_withCtx"],"mappings":"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"}