@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
59 lines (57 loc) • 1.72 kB
JavaScript
import Icon_default from "../../Icon/Icon.mjs";
import { styles } from "../style.mjs";
import Preview_default from "./Preview.mjs";
import Toolbar_default from "./Toolbar.mjs";
import { useMemo, useState } from "react";
import { jsx } from "react/jsx-runtime";
import { cx } from "antd-style";
import { X } from "lucide-react";
//#region src/Image/components/usePreviewGroup.tsx
const usePreview = (props) => {
const [visible, setVisible] = useState(false);
return useMemo(() => {
if (props === false) return props;
const { onVisibleChange, onOpenChange, minScale = .32, maxScale = 32, toolbarAddon, rootClassName, imageRender, toolbarRender, ...rest } = props === true ? {} : props || {};
return {
actionsRender: (_, info) => {
const originalNode = /* @__PURE__ */ jsx(Toolbar_default, {
info,
maxScale,
minScale,
children: toolbarAddon
});
if (toolbarRender) return toolbarRender(originalNode, info);
return originalNode;
},
closeIcon: /* @__PURE__ */ jsx(Icon_default, {
color: "#fff",
icon: X
}),
imageRender: (originalNode, info) => {
const node = /* @__PURE__ */ jsx(Preview_default, {
visible,
children: originalNode
});
if (imageRender) return imageRender(node, info);
return node;
},
maxScale,
minScale,
onOpenChange: (open, info) => {
setVisible(open);
onOpenChange?.(open, info);
onVisibleChange?.(open, !open, info.current);
},
rootClassName: cx(styles.preview, rootClassName),
...rest
};
}, [
props,
visible,
styles
]);
};
var usePreviewGroup_default = usePreview;
//#endregion
export { usePreviewGroup_default as default };
//# sourceMappingURL=usePreviewGroup.mjs.map