@varlet/ui
Version:
A Vue3 component library based on Material Design 2 and 3, supporting mobile and desktop.
88 lines (87 loc) • 3.22 kB
JavaScript
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
import { nextTick, reactive } from "vue";
import { call, inBrowser, isArray, isString } from "@varlet/shared";
import { mountInstance, withInstall, withPropsDefaultsSetter } from "../utils/components.mjs";
import VarImagePreview from "./ImagePreview.mjs";
import { props as imagePreviewProps } from "./props.mjs";
let singletonOptions;
let defaultOptions = {};
function normalizeOptions(options = {}) {
if (isString(options)) {
return __spreadProps(__spreadValues({}, defaultOptions), { images: [options] });
}
if (isArray(options)) {
return __spreadProps(__spreadValues({}, defaultOptions), { images: options });
}
return __spreadValues(__spreadValues({}, defaultOptions), options);
}
function ImagePreview(options) {
if (!inBrowser()) {
return;
}
ImagePreview.close();
const imagePreviewOptions = normalizeOptions(options);
const reactiveImagePreviewOptions = reactive(imagePreviewOptions);
reactiveImagePreviewOptions.teleport = "body";
singletonOptions = reactiveImagePreviewOptions;
const { unmountInstance } = mountInstance(VarImagePreview, reactiveImagePreviewOptions, {
onClose: () => call(reactiveImagePreviewOptions.onClose),
onClosed: () => {
call(reactiveImagePreviewOptions.onClosed);
unmountInstance();
singletonOptions === reactiveImagePreviewOptions && (singletonOptions = null);
},
onRouteChange: () => {
unmountInstance();
singletonOptions === reactiveImagePreviewOptions && (singletonOptions = null);
},
"onUpdate:show": (value) => {
reactiveImagePreviewOptions.show = value;
}
});
reactiveImagePreviewOptions.show = true;
}
ImagePreview.close = () => {
if (singletonOptions != null) {
const prevSingletonOptions = singletonOptions;
singletonOptions = null;
nextTick().then(() => {
prevSingletonOptions.show = false;
});
}
};
ImagePreview.setDefaultOptions = (options) => {
defaultOptions = options;
};
ImagePreview.resetDefaultOptions = () => {
defaultOptions = {};
};
ImagePreview.Component = VarImagePreview;
withInstall(VarImagePreview);
withInstall(VarImagePreview, ImagePreview);
withPropsDefaultsSetter(ImagePreview, imagePreviewProps);
const _ImagePreviewComponent = VarImagePreview;
var stdin_default = ImagePreview;
export {
_ImagePreviewComponent,
stdin_default as default,
imagePreviewProps
};