{"version":3,"file":"PreviewGroup.cjs","sources":["../../../../../../packages/vue-components/vc-image/src/PreviewGroup.tsx"],"sourcesContent":["import type { PropType } from 'vue';\nimport type { ImagePreviewType, PreviewGroupPreview, PreviewUrl } from './interface';\nimport type { PreviewProps } from './Preview';\n\nimport { useMergedState } from '@antdv/hooks';\nimport {\n  computed,\n  defineComponent,\n  reactive,\n  ref,\n  shallowRef,\n  watch,\n  watchEffect,\n} from 'vue';\nimport { imageContext } from './context';\nimport Preview from './Preview';\nimport { mergeDefaultValue } from './utils';\n\nexport function imageGroupProps() {\n  return {\n    previewPrefixCls: String,\n    preview: {\n      type: [Boolean, Object] as PropType<boolean | ImagePreviewType>,\n      default: true as boolean | ImagePreviewType,\n    },\n    icons: {\n      type: Object as PropType<PreviewProps['icons']>,\n      default: () => ({}),\n    },\n  };\n}\n\nconst Group = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'PreviewGroup',\n  inheritAttrs: false,\n  props: imageGroupProps(),\n  setup(props, { slots }) {\n    const preview = computed<PreviewGroupPreview>(() => {\n      const defaultValues = {\n        visible: undefined,\n        onVisibleChange: () => {},\n        getContainer: undefined,\n        current: 0,\n      };\n      return typeof props.preview === 'object'\n        ? mergeDefaultValue(props.preview, defaultValues)\n        : defaultValues;\n    });\n    const previewUrls = reactive(new Map<number, PreviewUrl>());\n    const current = ref<number>();\n\n    const previewVisible = computed(() => preview.value.visible);\n    const getPreviewContainer = computed(() => preview.value.getContainer);\n    const onPreviewVisibleChange = (val, preVal) => {\n      preview.value.onVisibleChange?.(val, preVal);\n    };\n    const [isShowPreview, setShowPreview] = useMergedState(!!previewVisible.value, {\n      value: previewVisible,\n      onChange: onPreviewVisibleChange,\n    });\n\n    const mousePosition = ref<{ x: number; y: number }>(null);\n    const isControlled = computed(() => previewVisible.value !== undefined);\n    const previewUrlsKeys = computed(() => Array.from(previewUrls.keys()));\n    const currentControlledKey = computed(() => previewUrlsKeys.value[preview.value.current]);\n    const canPreviewUrls = computed(\n      () =>\n        new Map<number, string>(\n          Array.from(previewUrls as Map<number, any>)\n            .filter(([, { canPreview }]) => !!canPreview)\n            .map(([id, { url }]) => [id, url]),\n        ),\n    );\n\n    const setPreviewUrls = (id: number, url: string, canPreview = true) => {\n      previewUrls.set(id, {\n        url,\n        canPreview,\n        imgCommonProps: {},\n      });\n    };\n    const setCurrent = (val: number) => {\n      current.value = val;\n    };\n    const setMousePosition = (val: null | { x: number; y: number }) => {\n      mousePosition.value = val;\n    };\n\n    const registerImage = (id: number, url: string, canPreview = true, imgCommonProps = {}) => {\n      const unRegister = () => {\n        previewUrls.delete(id);\n      };\n      previewUrls.set(id, {\n        url,\n        canPreview,\n        imgCommonProps,\n      });\n      return unRegister;\n    };\n\n    const onPreviewClose = (e: any) => {\n      e?.stopPropagation();\n      setShowPreview(false);\n      setMousePosition(null);\n    };\n\n    watch(\n      currentControlledKey,\n      (val) => {\n        setCurrent(val);\n      },\n      {\n        immediate: true,\n        flush: 'post',\n      },\n    );\n    watchEffect(\n      () => {\n        if (isShowPreview.value && isControlled.value)\n          setCurrent(currentControlledKey.value);\n      },\n      {\n        flush: 'post',\n      },\n    );\n\n    imageContext.provide({\n      isPreviewGroup: shallowRef(true),\n      previewUrls: canPreviewUrls,\n      setPreviewUrls,\n      current,\n      setCurrent,\n      setShowPreview,\n      setMousePosition,\n      registerImage,\n    });\n\n    return () => {\n      const { ...dialogProps } = preview.value;\n      return (\n        <>\n          {slots.default && slots.default()}\n          <Preview\n            {...dialogProps}\n            ria-hidden={!isShowPreview.value}\n            visible={isShowPreview.value}\n            prefixCls={props.previewPrefixCls}\n            onClose={onPreviewClose}\n            mousePosition={mousePosition.value}\n            src={canPreviewUrls.value.get(current.value)}\n            icons={props.icons}\n            getContainer={getPreviewContainer.value}\n            imgCommonProps={previewUrls.get(current.value)?.imgCommonProps}\n          />\n        </>\n      );\n    };\n  },\n});\n\nexport default Group;\n"],"names":["imageGroupProps","previewPrefixCls","String","preview","type","Boolean","Object","default","icons","Group","defineComponent","compatConfig","MODE","name","inheritAttrs","props","setup","slots","computed","defaultValues","visible","undefined","onVisibleChange","getContainer","current","mergeDefaultValue","previewUrls","reactive","Map","ref","previewVisible","value","getPreviewContainer","onPreviewVisibleChange","val","preVal","isShowPreview","setShowPreview","useMergedState","onChange","mousePosition","isControlled","previewUrlsKeys","Array","from","keys","currentControlledKey","canPreviewUrls","filter","canPreview","map","id","url","setPreviewUrls","set","imgCommonProps","setCurrent","setMousePosition","registerImage","unRegister","delete","onPreviewClose","e","stopPropagation","watch","immediate","flush","watchEffect","imageContext","provide","isPreviewGroup","shallowRef","dialogProps","_createVNode","_Fragment","Preview","get"],"mappings":"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"}