UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 15 kB
{"version":3,"file":"image2.mjs","sources":["../../../../../../packages/components/image/src/image.vue"],"sourcesContent":["<template>\n <div ref=\"container\" v-bind=\"containerAttrs\" :class=\"[ns.b(), $attrs.class]\">\n <slot v-if=\"hasLoadError\" name=\"error\">\n <div :class=\"ns.e('error')\">{{ t('el.image.error') }}</div>\n </slot>\n <template v-else>\n <img\n v-if=\"imageSrc !== undefined\"\n v-bind=\"imgAttrs\"\n :src=\"imageSrc\"\n :loading=\"loading\"\n :style=\"imageStyle\"\n :class=\"imageKls\"\n :crossorigin=\"crossorigin\"\n @click=\"clickHandler\"\n @load=\"handleLoad\"\n @error=\"handleError\"\n />\n <div v-if=\"isLoading\" :class=\"ns.e('wrapper')\">\n <slot name=\"placeholder\">\n <div :class=\"ns.e('placeholder')\" />\n </slot>\n </div>\n </template>\n <template v-if=\"preview\">\n <image-viewer\n v-if=\"showViewer\"\n :z-index=\"zIndex\"\n :initial-index=\"imageIndex\"\n :infinite=\"infinite\"\n :zoom-rate=\"zoomRate\"\n :min-scale=\"minScale\"\n :max-scale=\"maxScale\"\n :show-progress=\"showProgress\"\n :url-list=\"previewSrcList\"\n :scale=\"scale\"\n :crossorigin=\"crossorigin\"\n :hide-on-click-modal=\"hideOnClickModal\"\n :teleported=\"previewTeleported\"\n :close-on-press-escape=\"closeOnPressEscape\"\n @close=\"closeViewer\"\n @switch=\"switchViewer\"\n >\n <div v-if=\"$slots.viewer\">\n <slot name=\"viewer\" />\n </div>\n <template v-if=\"$slots.progress\" #progress=\"progress\">\n <slot name=\"progress\" v-bind=\"progress\" />\n </template>\n <template #toolbar=\"toolbar\">\n <slot name=\"toolbar\" v-bind=\"toolbar\" />\n </template>\n <template v-if=\"$slots['viewer-error']\" #viewer-error=\"viewerError\">\n <slot name=\"viewer-error\" v-bind=\"viewerError\" />\n </template>\n </image-viewer>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n useAttrs as useRawAttrs,\n watch,\n} from 'vue'\nimport { useIntersectionObserver, useThrottleFn } from '@vueuse/core'\nimport { fromPairs } from 'lodash-unified'\nimport { useAttrs, useLocale, useNamespace } from '@element-plus/hooks'\nimport ImageViewer from '@element-plus/components/image-viewer'\nimport {\n getScrollContainer,\n isArray,\n isClient,\n isElement,\n isString,\n isWindow,\n} from '@element-plus/utils'\nimport { imageEmits, imageProps } from './image'\n\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n name: 'ElImage',\n inheritAttrs: false,\n})\n\nconst props = defineProps(imageProps)\nconst emit = defineEmits(imageEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('image')\nconst rawAttrs = useRawAttrs()\n\nconst containerAttrs = computed(() => {\n return fromPairs(\n Object.entries(rawAttrs).filter(\n ([key]) => /^(data-|on[A-Z])/i.test(key) || ['id', 'style'].includes(key)\n )\n )\n})\n\nconst imgAttrs = useAttrs({\n excludeListeners: true,\n excludeKeys: computed<string[]>(() => {\n return Object.keys(containerAttrs.value)\n }),\n})\n\nconst imageSrc = ref<string | undefined>()\nconst hasLoadError = ref(false)\nconst isLoading = ref(true)\nconst showViewer = ref(false)\nconst container = ref<HTMLElement>()\nconst _scrollContainer = ref<HTMLElement | undefined>()\n\nconst supportLoading = isClient && 'loading' in HTMLImageElement.prototype\nlet stopScrollListener: (() => void) | undefined\n\nconst imageKls = computed(() => [\n ns.e('inner'),\n preview.value && ns.e('preview'),\n isLoading.value && ns.is('loading'),\n])\n\nconst imageStyle = computed<CSSProperties>(() => {\n const { fit } = props\n if (isClient && fit) {\n return { objectFit: fit }\n }\n return {}\n})\n\nconst preview = computed(() => {\n const { previewSrcList } = props\n return isArray(previewSrcList) && previewSrcList.length > 0\n})\n\nconst 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\nconst isManual = computed(() => {\n if (props.loading === 'eager') return false\n return (!supportLoading && props.loading === 'lazy') || props.lazy\n})\n\nconst loadImage = () => {\n if (!isClient) return\n\n // reset status\n isLoading.value = true\n hasLoadError.value = false\n imageSrc.value = props.src\n}\n\nfunction handleLoad(event: Event) {\n isLoading.value = false\n hasLoadError.value = false\n emit('load', event)\n}\n\nfunction handleError(event: Event) {\n isLoading.value = false\n hasLoadError.value = true\n emit('error', event)\n}\n\nfunction handleLazyLoad(isIntersecting: boolean) {\n if (isIntersecting) {\n loadImage()\n removeLazyLoadListener()\n }\n}\n\nconst lazyLoadHandler = useThrottleFn(handleLazyLoad, 200, true)\n\nasync 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 const scrollContainer = getScrollContainer(container.value)\n _scrollContainer.value = isWindow(scrollContainer)\n ? undefined\n : scrollContainer\n }\n\n const { stop } = useIntersectionObserver(\n container,\n ([entry]) => {\n lazyLoadHandler(entry.isIntersecting)\n },\n { root: _scrollContainer }\n )\n stopScrollListener = stop\n}\n\nfunction removeLazyLoadListener() {\n if (!isClient || !lazyLoadHandler) return\n\n stopScrollListener?.()\n _scrollContainer.value = undefined\n stopScrollListener = undefined\n}\n\nfunction clickHandler() {\n // don't show viewer when preview is false\n if (!preview.value) return\n showViewer.value = true\n emit('show')\n}\n\nfunction closeViewer() {\n showViewer.value = false\n emit('close')\n}\n\nfunction switchViewer(val: number) {\n emit('switch', val)\n}\n\nwatch(\n () => props.src,\n () => {\n if (isManual.value) {\n // reset status\n isLoading.value = true\n hasLoadError.value = false\n removeLazyLoadListener()\n addLazyLoadListener()\n } else {\n loadImage()\n }\n }\n)\n\nonMounted(() => {\n if (isManual.value) {\n addLazyLoadListener()\n } else {\n loadImage()\n }\n})\n\ndefineExpose({\n /** @description manually open preview */\n showPreview: clickHandler,\n})\n</script>\n"],"names":["useRawAttrs","useAttrs","scrollContainer","_openBlock","_createElementBlock","_mergeProps","_unref","$attrs","_renderSlot","_createElementVNode","_normalizeClass","_Fragment","loading","crossorigin","_createCommentVNode","_createBlock","ImageViewer","zIndex","infinite","zoomRate","minScale","maxScale","showProgress","previewSrcList","scale","hideOnClickModal","previewTeleported","closeOnPressEscape","_createSlots","_withCtx","$slots"],"mappings":"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"}