{"version":3,"file":"image-preview-global.mjs","sources":["../../../../../src/components/ivue-image/image-preview-global.ts"],"sourcesContent":["import { createApp, h, getCurrentInstance } from 'vue';\r\nimport ImagePreview from './image-preview.vue';\r\n\r\nimport { isClient } from '../../utils/helpers';\r\n\r\nImagePreview.newInstance = (properties) => {\r\n  if (!isClient) {\r\n    return;\r\n  }\r\n\r\n  const _props = properties || {};\r\n\r\n  let _instance = null;\r\n\r\n  // 创建实例\r\n  const Instance = createApp({\r\n    data() {\r\n      return Object.assign({}, _props, {\r\n        /**\r\n         * 显示\r\n         *\r\n         * @type {Boolean}\r\n         */\r\n        visible: false,\r\n        /**\r\n         * 图片预览列表\r\n         *\r\n         * @type {Array}\r\n         */\r\n        previewList: [],\r\n        /**\r\n         * 打开预览的第一项\r\n         *\r\n         * @type {Number}\r\n         */\r\n        initialIndex: 0,\r\n        /**\r\n         * 图片预览操作栏选项，按数组顺序排序\r\n         *\r\n         * @type {Array}\r\n         */\r\n        toolbar: [\r\n          'zoomIn',\r\n          'zoomOut',\r\n          'original',\r\n          'rotateLeft',\r\n          'rotateRight',\r\n          'download',\r\n        ],\r\n        /**\r\n         * 是否循环切换\r\n         *\r\n         * @type {Boolean}\r\n         */\r\n        infinite: true,\r\n        /**\r\n         * 是否允许点击遮罩层关闭\r\n         *\r\n         * @type {Boolean}\r\n         */\r\n        maskClosable: true,\r\n        /**\r\n         * 是否将弹层放置于 body 内\r\n         *\r\n         * @type {Boolean}\r\n         */\r\n        transfer: true,\r\n      });\r\n    },\r\n    created() {\r\n      _instance = getCurrentInstance();\r\n    },\r\n    methods: {\r\n      // 关闭弹窗\r\n      handleClose() {\r\n        this.visible = false;\r\n\r\n        setTimeout(() => {\r\n          this.destroy();\r\n          this.removeInstance();\r\n        }, 300);\r\n      },\r\n      // 注销实例\r\n      destroy() {\r\n        // 注销实例\r\n        Instance.unmount();\r\n\r\n        document.body.removeChild(container);\r\n      },\r\n      // 删除实例\r\n      removeInstance() {},\r\n    },\r\n    render() {\r\n      return h(\r\n        ImagePreview,\r\n        Object.assign({}, _props, {\r\n          ref: 'imagePreview',\r\n          modelValue: this.visible,\r\n          previewList: this.previewList,\r\n          initialIndex: this.initialIndex,\r\n          toolbar: this.toolbar,\r\n          infinite: this.infinite,\r\n          maskClosable: this.maskClosable,\r\n          transfer: this.transfer,\r\n          'onOn-close': this.handleClose,\r\n        })\r\n      );\r\n    },\r\n  });\r\n\r\n  // 挂载实例到dom\r\n  const container = document.createElement('div');\r\n  document.body.appendChild(container);\r\n  Instance.mount(container);\r\n\r\n  // 获取当前节点\r\n  const imagePreview = _instance.refs.imagePreview;\r\n\r\n  return {\r\n    show(options) {\r\n      // 导入props\r\n      Object.keys(options).forEach((key) => {\r\n        imagePreview.$parent[key] = options[key];\r\n      });\r\n\r\n      // 显示预览\r\n      imagePreview.$parent.visible = true;\r\n    },\r\n    component: imagePreview,\r\n  };\r\n};\r\n\r\nexport default ImagePreview;\r\n"],"names":[],"mappings":";;;;;AAKA,YAAa,CAAA,WAAA,GAAc,CAAC,UAAe,KAAA;AACzC,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAA,OAAA;AAAA,GACF;AAEA,EAAM,MAAA,MAAA,GAAS,cAAc,EAAC,CAAA;AAE9B,EAAA,IAAI,SAAY,GAAA,IAAA,CAAA;AAGhB,EAAA,MAAM,WAAW,SAAU,CAAA;AAAA,IACzB,IAAO,GAAA;AACL,MAAA,OAAO,MAAO,CAAA,MAAA,CAAO,EAAC,EAAG,MAAQ,EAAA;AAAA,QAM/B,OAAS,EAAA,KAAA;AAAA,QAMT,aAAa,EAAC;AAAA,QAMd,YAAc,EAAA,CAAA;AAAA,QAMd,OAAS,EAAA;AAAA,UACP,QAAA;AAAA,UACA,SAAA;AAAA,UACA,UAAA;AAAA,UACA,YAAA;AAAA,UACA,aAAA;AAAA,UACA,UAAA;AAAA,SACF;AAAA,QAMA,QAAU,EAAA,IAAA;AAAA,QAMV,YAAc,EAAA,IAAA;AAAA,QAMd,QAAU,EAAA,IAAA;AAAA,OACX,CAAA,CAAA;AAAA,KACH;AAAA,IACA,OAAU,GAAA;AACR,MAAA,SAAA,GAAY,kBAAmB,EAAA,CAAA;AAAA,KACjC;AAAA,IACA,OAAS,EAAA;AAAA,MAEP,WAAc,GAAA;AACZ,QAAA,IAAA,CAAK,OAAU,GAAA,KAAA,CAAA;AAEf,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,IAAA,CAAK,OAAQ,EAAA,CAAA;AACb,UAAA,IAAA,CAAK,cAAe,EAAA,CAAA;AAAA,WACnB,GAAG,CAAA,CAAA;AAAA,OACR;AAAA,MAEA,OAAU,GAAA;AAER,QAAA,QAAA,CAAS,OAAQ,EAAA,CAAA;AAEjB,QAAS,QAAA,CAAA,IAAA,CAAK,YAAY,SAAS,CAAA,CAAA;AAAA,OACrC;AAAA,MAEA,cAAiB,GAAA;AAAA,OAAC;AAAA,KACpB;AAAA,IACA,MAAS,GAAA;AACP,MAAO,OAAA,CAAA;AAAA,QACL,YAAA;AAAA,QACA,MAAO,CAAA,MAAA,CAAO,EAAC,EAAG,MAAQ,EAAA;AAAA,UACxB,GAAK,EAAA,cAAA;AAAA,UACL,YAAY,IAAK,CAAA,OAAA;AAAA,UACjB,aAAa,IAAK,CAAA,WAAA;AAAA,UAClB,cAAc,IAAK,CAAA,YAAA;AAAA,UACnB,SAAS,IAAK,CAAA,OAAA;AAAA,UACd,UAAU,IAAK,CAAA,QAAA;AAAA,UACf,cAAc,IAAK,CAAA,YAAA;AAAA,UACnB,UAAU,IAAK,CAAA,QAAA;AAAA,UACf,cAAc,IAAK,CAAA,WAAA;AAAA,SACpB,CAAA;AAAA,OACH,CAAA;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAGD,EAAM,MAAA,SAAA,GAAY,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAC9C,EAAS,QAAA,CAAA,IAAA,CAAK,YAAY,SAAS,CAAA,CAAA;AACnC,EAAA,QAAA,CAAS,MAAM,SAAS,CAAA,CAAA;AAGxB,EAAM,MAAA,YAAA,GAAe,UAAU,IAAK,CAAA,YAAA,CAAA;AAEpC,EAAO,OAAA;AAAA,IACL,KAAK,OAAS,EAAA;AAEZ,MAAA,MAAA,CAAO,IAAK,CAAA,OAAO,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACpC,QAAa,YAAA,CAAA,OAAA,CAAQ,OAAO,OAAQ,CAAA,GAAA,CAAA,CAAA;AAAA,OACrC,CAAA,CAAA;AAGD,MAAA,YAAA,CAAa,QAAQ,OAAU,GAAA,IAAA,CAAA;AAAA,KACjC;AAAA,IACA,SAAW,EAAA,YAAA;AAAA,GACb,CAAA;AACF,CAAA"}