{"version":3,"file":"image-preview.mjs","sources":["../../../../../../../packages/components/image-preview/src/image-preview.tsx"],"sourcesContent":["import {\n  type CSSProperties,\n  type ExtractPropTypes,\n  type PropType,\n  type TeleportProps,\n  defineComponent,\n  nextTick,\n  onMounted,\n  reactive,\n  ref,\n  watch,\n} from 'vue'\n\n// Utils\n\nimport {\n  HAPTICS_FEEDBACK,\n  callInterceptor,\n  createNamespace,\n  makeArrayProp,\n  makeNumericProp,\n  makeStringProp,\n  pick,\n  truthProp,\n  unknownProp,\n  windowHeight,\n  windowWidth,\n} from '@xzx-design/utils'\n\nimport { useExpose, useRect } from '@xzx-design/hooks'\n\nimport { Icon, Popup, Swipe } from '@xzx-design/components'\nimport ImagePreviewItem from './image-preview-item'\n\n// Types\nimport type {\n  ImagePreviewItemInstance,\n  ImagePreviewScaleEventParams,\n} from './types'\n\nimport type {\n  PopupCloseIconPosition,\n  SwipeInstance,\n  SwipeToOptions,\n} from '@xzx-design/components'\n\nimport type { Interceptor } from '@xzx-design/utils'\n\nconst [name, bem] = createNamespace('image-preview')\n\nconst popupProps = [\n  'show',\n  'teleport',\n  'transition',\n  'overlayStyle',\n  'closeOnPopstate',\n] as const\n\nexport const imagePreviewProps = {\n  show: Boolean,\n  loop: truthProp,\n  images: makeArrayProp<string>(),\n  minZoom: makeNumericProp(1 / 3),\n  maxZoom: makeNumericProp(3),\n  overlay: truthProp,\n  vertical: Boolean,\n  closeable: Boolean,\n  showIndex: truthProp,\n  className: unknownProp,\n  closeIcon: makeStringProp('clear'),\n  transition: String,\n  beforeClose: Function as PropType<Interceptor>,\n  doubleScale: truthProp,\n  overlayClass: unknownProp,\n  overlayStyle: Object as PropType<CSSProperties>,\n  swipeDuration: makeNumericProp(300),\n  startPosition: makeNumericProp(0),\n  showIndicators: Boolean,\n  closeOnPopstate: truthProp,\n  closeOnClickImage: truthProp,\n  closeOnClickOverlay: truthProp,\n  closeIconPosition: makeStringProp<PopupCloseIconPosition>('top-right'),\n  teleport: [String, Object] as PropType<TeleportProps['to']>,\n}\n\nexport type ImagePreviewProps = ExtractPropTypes<typeof imagePreviewProps>\n\nexport default defineComponent({\n  name,\n\n  props: imagePreviewProps,\n\n  emits: ['scale', 'close', 'closed', 'change', 'longPress', 'update:show'],\n\n  setup(props, { emit, slots }) {\n    const swipeRef = ref<SwipeInstance>()\n    const activedPreviewItemRef = ref<ImagePreviewItemInstance>()\n\n    const state = reactive({\n      active: 0,\n      rootWidth: 0,\n      rootHeight: 0,\n      disableZoom: false,\n    })\n\n    const resize = () => {\n      if (swipeRef.value) {\n        const rect = useRect(swipeRef.value.$el)\n        state.rootWidth = rect.width\n        state.rootHeight = rect.height\n        swipeRef.value.resize()\n      }\n    }\n\n    const emitScale = (args: ImagePreviewScaleEventParams) =>\n      emit('scale', args)\n\n    const updateShow = (show: boolean) => emit('update:show', show)\n\n    const emitClose = () => {\n      callInterceptor(props.beforeClose, {\n        args: [state.active],\n        done: () => updateShow(false),\n      })\n    }\n\n    const setActive = (active: number) => {\n      if (active !== state.active) {\n        state.active = active\n        emit('change', active)\n      }\n    }\n\n    const renderIndex = () => {\n      if (props.showIndex) {\n        return (\n          <div class={bem('index')}>\n            {slots.index\n              ? slots.index({ index: state.active })\n              : `${state.active + 1} / ${props.images.length}`}\n          </div>\n        )\n      }\n    }\n\n    const renderCover = () => {\n      if (slots.cover) {\n        return <div class={bem('cover')}>{slots.cover()}</div>\n      }\n    }\n\n    const onDragStart = () => {\n      state.disableZoom = true\n    }\n\n    const onDragEnd = () => {\n      state.disableZoom = false\n    }\n\n    const renderImages = () => (\n      <Swipe\n        ref={swipeRef}\n        lazyRender\n        loop={props.loop}\n        class={bem('swipe')}\n        vertical={props.vertical}\n        duration={props.swipeDuration}\n        initialSwipe={props.startPosition}\n        showIndicators={props.showIndicators}\n        indicatorColor=\"white\"\n        onChange={setActive}\n        onDragEnd={onDragEnd}\n        onDragStart={onDragStart}\n      >\n        {props.images.map((image, index) => (\n          <ImagePreviewItem\n            v-slots={{\n              image: slots.image,\n            }}\n            ref={(item: ImagePreviewItemInstance) => {\n              if (index === state.active) {\n                activedPreviewItemRef.value = item\n              }\n            }}\n            src={image}\n            show={props.show}\n            active={state.active}\n            maxZoom={props.maxZoom}\n            minZoom={props.minZoom}\n            rootWidth={state.rootWidth}\n            rootHeight={state.rootHeight}\n            disableZoom={state.disableZoom}\n            doubleScale={props.doubleScale}\n            closeOnClickImage={props.closeOnClickImage}\n            closeOnClickOverlay={props.closeOnClickOverlay}\n            vertical={props.vertical}\n            onScale={emitScale}\n            onClose={emitClose}\n            onLongPress={() => emit('longPress', { index })}\n          />\n        ))}\n      </Swipe>\n    )\n\n    const renderClose = () => {\n      if (props.closeable) {\n        return (\n          <Icon\n            role=\"button\"\n            name={props.closeIcon}\n            class={[\n              bem('close-icon', props.closeIconPosition),\n              HAPTICS_FEEDBACK,\n            ]}\n            onClick={emitClose}\n          />\n        )\n      }\n    }\n\n    const onClosed = () => emit('closed')\n\n    const swipeTo = (index: number, options?: SwipeToOptions) =>\n      swipeRef.value?.swipeTo(index, options)\n\n    useExpose({\n      resetScale: () => {\n        activedPreviewItemRef.value?.resetScale()\n      },\n      swipeTo,\n    })\n\n    onMounted(resize)\n\n    watch([windowWidth, windowHeight], resize)\n\n    watch(\n      () => props.startPosition,\n      (value) => setActive(+value)\n    )\n\n    watch(\n      () => props.show,\n      (value) => {\n        const { images, startPosition } = props\n        if (value) {\n          setActive(+startPosition)\n          nextTick(() => {\n            resize()\n            swipeTo(+startPosition, { immediate: true })\n          })\n        } else {\n          emit('close', {\n            index: state.active,\n            url: images[state.active],\n          })\n        }\n      }\n    )\n\n    return () => (\n      <Popup\n        class={[bem(), props.className]}\n        overlayClass={[bem('overlay'), props.overlayClass]}\n        onClosed={onClosed}\n        onUpdate:show={updateShow}\n        {...pick(props, popupProps)}\n      >\n        {renderClose()}\n        {renderImages()}\n        {renderIndex()}\n        {renderCover()}\n      </Popup>\n    )\n  },\n})\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","name","bem","createNamespace","popupProps","imagePreviewProps","show","Boolean","loop","truthProp","images","makeArrayProp","minZoom","makeNumericProp","maxZoom","overlay","vertical","closeable","showIndex","className","unknownProp","closeIcon","makeStringProp","transition","String","beforeClose","Function","doubleScale","overlayClass","overlayStyle","swipeDuration","startPosition","showIndicators","closeOnPopstate","closeOnClickImage","closeOnClickOverlay","closeIconPosition","teleport","defineComponent","props","emits","setup","emit","slots","swipeRef","ref","activedPreviewItemRef","state","reactive","active","rootWidth","rootHeight","disableZoom","resize","value","rect","useRect","$el","width","height","emitScale","args","updateShow","emitClose","callInterceptor","done","setActive","renderIndex","_createVNode","index","length","renderCover","cover","onDragStart","onDragEnd","renderImages","_slot","Swipe","map","image","ImagePreviewItem","item","onLongPress","default","renderClose","Icon","HAPTICS_FEEDBACK","onClosed","swipeTo","options","useExpose","resetScale","onMounted","watch","windowWidth","windowHeight","nextTick","immediate","url","Popup","_mergeProps","pick"],"mappings":"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"}