12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
- import { extend, inBrowser } from "../utils/index.mjs";
- import { mountComponent, usePopupState } from "../utils/mount-component.mjs";
- import VanImagePreview from "./ImagePreview.mjs";
- let instance;
- const defaultConfig = {
- loop: true,
- images: [],
- maxZoom: 3,
- minZoom: 1 / 3,
- onScale: void 0,
- onClose: void 0,
- onChange: void 0,
- vertical: false,
- teleport: "body",
- className: "",
- showIndex: true,
- closeable: false,
- closeIcon: "clear",
- transition: void 0,
- beforeClose: void 0,
- doubleScale: true,
- overlayStyle: void 0,
- overlayClass: void 0,
- startPosition: 0,
- swipeDuration: 300,
- showIndicators: false,
- closeOnPopstate: true,
- closeOnClickOverlay: true,
- closeIconPosition: "top-right"
- };
- function initInstance() {
- ({
- instance
- } = mountComponent({
- setup() {
- const {
- state,
- toggle
- } = usePopupState();
- const onClosed = () => {
- state.images = [];
- };
- return () => _createVNode(VanImagePreview, _mergeProps(state, {
- "onClosed": onClosed,
- "onUpdate:show": toggle
- }), null);
- }
- }));
- }
- const showImagePreview = (options, startPosition = 0) => {
- if (!inBrowser) {
- return;
- }
- if (!instance) {
- initInstance();
- }
- options = Array.isArray(options) ? {
- images: options,
- startPosition
- } : options;
- instance.open(extend({}, defaultConfig, options));
- return instance;
- };
- export {
- showImagePreview
- };
|