xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 17.8 kB
Source Map (JSON)
{"version":3,"file":"image-viewer.mjs","sources":["../../src/image-viewer/image-viewer.tsx"],"sourcesContent":["import { computed, defineComponent, ref, toRefs, Teleport, watch, Transition } from 'vue';\n\nimport props from './props';\nimport TImageViewerIcon from './base/ImageModalIcon';\nimport TImageViewerUtils from './base/ImageViewerUtils';\nimport TImageItem from './base/ImageItem';\nimport TImageViewerModal from './base/ImageViewerModal';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport useVModel from '../hooks/useVModel';\nimport useDefaultValue from '../hooks/useDefaultValue';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport { TdImageViewerProps } from './type';\nimport { useMirror, useRotate, useScale } from './hooks';\nimport { formatImages, getOverlay } from './utils';\nimport { EVENT_CODE } from './const';\nimport Image from '../image';\n\nexport default defineComponent({\n name: 'XImageViewer',\n props: { ...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 } = 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\n const animationEnd = ref(true);\n const animationTimer = ref();\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 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 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 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 onClose({ e, trigger: 'esc' });\n break;\n default:\n break;\n }\n };\n\n watch(\n () => visibleValue.value,\n (val) => {\n clearTimeout(animationTimer.value);\n if (val) {\n animationEnd.value = false;\n window.addEventListener('keydown', keydownHandler);\n\n onRest();\n } else {\n animationTimer.value = setTimeout(() => {\n animationEnd.value = true;\n }, 200);\n window.removeEventListener('keydown', keydownHandler);\n }\n },\n );\n\n const onWheel = (e: WheelEvent) => {\n e.preventDefault();\n const { deltaY, ctrlKey } = e;\n // mac触摸板双指缩放时ctrlKey=true,deltaY>0为缩小 <0为放大\n if (ctrlKey) {\n return deltaY > 0 ? onZoomOut() : onZoomIn();\n }\n deltaY > 0 ? onZoomIn() : onZoomOut();\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={() => <icon-ri-arrow-down-s-line />}\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 className={`${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 <icon-ri-arrow-left-s-line 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', <icon-ri-close-line 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 draggable={props.draggable}\n showOverlay={showOverlayValue.value}\n title={props.title}\n />\n </>\n );\n }\n\n return (\n <>\n {renderTNodeJSX('trigger', { params: { open: openHandler } })}\n <Teleport to=\"body\">\n <Transition>\n {(visibleValue.value || !animationEnd.value) && (\n <div\n v-show={visibleValue.value}\n class={wrapClass.value}\n style={{ zIndex: zIndexValue.value }}\n onWheel={onWheel}\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 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 />\n </div>\n )}\n </Transition>\n </Teleport>\n </>\n );\n };\n },\n});\n"],"names":["name","props","indexValue","setIndexValue","visibleValue","setVisibleValue","isExpand","resetMirror","resetScale","resetRotate","mainImage","onRest","trigger","onClose","e","prevImage","nextImage","onZoomIn","onZoomOut","watch","clearTimeout","window","animationTimer","transform","_createVNode","_resolveComponent","index","_Fragment","params","open","_withDirectives","_vShow"],"mappings":"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"}