index.ts 943 B

123456789101112131415161718192021222324252627282930313233
  1. import ImageViewer from './src/ImageViewer.vue'
  2. import { isClient } from '@/utils/is'
  3. import { createVNode, render, VNode } from 'vue'
  4. import { ImageViewerProps } from './src/types'
  5. let instance: Nullable<VNode> = null
  6. export function createImageViewer(options: ImageViewerProps) {
  7. if (!isClient) return
  8. const {
  9. urlList,
  10. initialIndex = 0,
  11. infinite = true,
  12. hideOnClickModal = false,
  13. appendToBody = false,
  14. zIndex = 2000,
  15. show = true
  16. } = options
  17. const propsData: Partial<ImageViewerProps> = {}
  18. const container = document.createElement('div')
  19. propsData.urlList = urlList
  20. propsData.initialIndex = initialIndex
  21. propsData.infinite = infinite
  22. propsData.hideOnClickModal = hideOnClickModal
  23. propsData.appendToBody = appendToBody
  24. propsData.zIndex = zIndex
  25. propsData.show = show
  26. document.body.appendChild(container)
  27. instance = createVNode(ImageViewer, propsData)
  28. render(instance, container)
  29. }