{"version":3,"file":"usePreview.mjs","names":[],"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,KAAK;CAE5C,OAAO,cAAc;EACnB,IAAI,UAAU,OAAO,OAAO;EAE5B,MAAM,EACJ,iBACA,cACA,WAAW,KACX,WAAW,IACX,cACA,eACA,aACA,eACA,eACA,GAAG,SACqB,UAAU,OAAO,CAAC,IAAI,SAAS,CAAC;EAE1D,OAAO;GACL,eACE,mBACE,GAAG,SAAS;IACZ,MAAM,eACJ,oBAAC,SAAD;KAAe;KAAgB;KAAoB;eAChD;IACM,CAAA;IAGX,IAAI,eAAe,OAAO,cAAc,cAAc,IAAI;IAC1D,OAAO;GACT;GACF,WAAW,oBAAC,MAAD;IAAM,OAAO;IAAQ,MAAM;GAAI,CAAA;GAC1C,cAAc,cAAc,SAAS;IACnC,MAAM,OAAO,oBAAC,SAAD;KAAkB;eAAU;IAAsB,CAAA;IAC/D,IAAI,aAAa,OAAO,YAAY,MAAM,IAAI;IAC9C,OAAO;GACT;GACA;GACA;GACA,eAAe,SAAkB;IAC/B,WAAW,IAAI;IAEf,eAAe,IAAI;IAEnB,kBAAkB,MAAM,CAAC,IAAI;GAC/B;GACA,eAAe,GAAG,OAAO,SAAS,aAAa;GAC/C,QAAQ,EAAE,MAAM,EAAE,gBAAgB,YAAY,EAAE;GAChD,GAAG;EACL;CACF,GAAG;EAAC;EAAO;EAAS;CAAM,CAAC;AAC7B"}