UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

1 lines 2.98 kB
{"version":3,"file":"usePreview.mjs","names":["Toolbar","Icon","Preview"],"sources":["../../../src/Image/components/usePreview.tsx"],"sourcesContent":["import type { ImageProps as AntdImageProps } from 'antd';\nimport { cx } from 'antd-style';\nimport { X } from 'lucide-react';\nimport { useMemo, useState } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { styles } from '../style';\nimport type { ImagePreviewOptions } from '../type';\nimport Preview from './Preview';\nimport Toolbar from './Toolbar';\n\nexport const usePreview = (\n props: ImagePreviewOptions | boolean | undefined,\n): AntdImageProps['preview'] => {\n const [visible, setVisible] = useState(false);\n\n return useMemo(() => {\n if (props === false) return props;\n\n const {\n onVisibleChange,\n onOpenChange,\n minScale = 0.32,\n maxScale = 32,\n toolbarAddon,\n rootClassName,\n imageRender,\n toolbarRender,\n actionsRender,\n ...rest\n }: ImagePreviewOptions = (props === true ? {} : props || {}) as ImagePreviewOptions;\n\n return {\n actionsRender:\n actionsRender ||\n ((_, info) => {\n const originalNode = (\n <Toolbar info={info} maxScale={maxScale} minScale={minScale}>\n {toolbarAddon}\n </Toolbar>\n );\n // 向后兼容 toolbarRender\n if (toolbarRender) return toolbarRender(originalNode, info);\n return originalNode;\n }),\n closeIcon: <Icon color={'#fff'} icon={X} />,\n imageRender: (originalNode, info) => {\n const node = <Preview visible={visible}>{originalNode}</Preview>;\n if (imageRender) return imageRender(node, info);\n return node;\n },\n maxScale,\n minScale,\n onOpenChange: (open: boolean) => {\n setVisible(open);\n // 支持新的 onOpenChange\n onOpenChange?.(open);\n // 向后兼容旧的 onVisibleChange\n onVisibleChange?.(open, !open);\n },\n rootClassName: cx(styles.preview, rootClassName),\n styles: { mask: { backdropFilter: 'blur(8px)' } },\n ...rest,\n };\n }, [props, visible, styles]);\n};\n\nexport default usePreview;\n"],"mappings":";;;;;;;;;;AAYA,MAAa,cACX,UAC8B;CAC9B,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;AAE7C,QAAO,cAAc;AACnB,MAAI,UAAU,MAAO,QAAO;EAE5B,MAAM,EACJ,iBACA,cACA,WAAW,KACX,WAAW,IACX,cACA,eACA,aACA,eACA,eACA,GAAG,SACqB,UAAU,OAAO,EAAE,GAAG,SAAS,EAAE;AAE3D,SAAO;GACL,eACE,mBACE,GAAG,SAAS;IACZ,MAAM,eACJ,oBAACA;KAAc;KAAgB;KAAoB;eAChD;MACO;AAGZ,QAAI,cAAe,QAAO,cAAc,cAAc,KAAK;AAC3D,WAAO;;GAEX,WAAW,oBAACC;IAAK,OAAO;IAAQ,MAAM;KAAK;GAC3C,cAAc,cAAc,SAAS;IACnC,MAAM,OAAO,oBAACC;KAAiB;eAAU;MAAuB;AAChE,QAAI,YAAa,QAAO,YAAY,MAAM,KAAK;AAC/C,WAAO;;GAET;GACA;GACA,eAAe,SAAkB;AAC/B,eAAW,KAAK;AAEhB,mBAAe,KAAK;AAEpB,sBAAkB,MAAM,CAAC,KAAK;;GAEhC,eAAe,GAAG,OAAO,SAAS,cAAc;GAChD,QAAQ,EAAE,MAAM,EAAE,gBAAgB,aAAa,EAAE;GACjD,GAAG;GACJ;IACA;EAAC;EAAO;EAAS;EAAO,CAAC;;AAG9B,yBAAe"}