{"version":3,"file":"usePreviewGroup.mjs","names":["componentStyles"],"sources":["../../../src/Image/components/usePreviewGroup.tsx"],"sourcesContent":["import { type GroupPreviewConfig } from 'antd/es/image/PreviewGroup';\nimport { cx } from 'antd-style';\nimport { X } from 'lucide-react';\nimport { useMemo, useState } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { styles as componentStyles, styles } from '../style';\nimport { type PreviewGroupPreviewOptions } from '../type';\nimport Preview from './Preview';\nimport Toolbar from './Toolbar';\n\nexport const usePreview = (\n  props: PreviewGroupPreviewOptions | boolean | undefined,\n): GroupPreviewConfig | boolean => {\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      ...rest\n    }: PreviewGroupPreviewOptions = (\n      props === true ? {} : props || {}\n    ) as PreviewGroupPreviewOptions;\n\n    return {\n      actionsRender: (_, info) => {\n        const originalNode = (\n          <Toolbar info={info} maxScale={maxScale} minScale={minScale}>\n            {toolbarAddon}\n          </Toolbar>\n        );\n        if (toolbarRender) return toolbarRender(originalNode, info);\n        return originalNode;\n      },\n      closeIcon: <Icon color={'#fff'} icon={X} />,\n\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, info: { current: number }) => {\n        setVisible(open);\n        // 支持新的 onOpenChange\n        onOpenChange?.(open, info);\n        // 向后兼容旧的 onVisibleChange (注意参数差异)\n        onVisibleChange?.(open, !open, info.current);\n      },\n      rootClassName: cx(styles.preview, rootClassName),\n      ...rest,\n    } satisfies GroupPreviewConfig;\n  }, [props, visible, componentStyles]);\n};\n\nexport default usePreview;\n"],"mappings":";;;;;;;;;AAYA,MAAa,cACX,UACiC;CACjC,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,GAAG,SAEH,UAAU,OAAO,EAAE,GAAG,SAAS,EAAE;AAGnC,SAAO;GACL,gBAAgB,GAAG,SAAS;IAC1B,MAAM,eACJ,oBAAC,SAAD;KAAe;KAAgB;KAAoB;eAChD;KACO,CAAA;AAEZ,QAAI,cAAe,QAAO,cAAc,cAAc,KAAK;AAC3D,WAAO;;GAET,WAAW,oBAAC,MAAD;IAAM,OAAO;IAAQ,MAAM;IAAK,CAAA;GAE3C,cAAc,cAAc,SAAS;IACnC,MAAM,OAAO,oBAAC,SAAD;KAAkB;eAAU;KAAuB,CAAA;AAChE,QAAI,YAAa,QAAO,YAAY,MAAM,KAAK;AAC/C,WAAO;;GAET;GACA;GACA,eAAe,MAAe,SAA8B;AAC1D,eAAW,KAAK;AAEhB,mBAAe,MAAM,KAAK;AAE1B,sBAAkB,MAAM,CAAC,MAAM,KAAK,QAAQ;;GAE9C,eAAe,GAAG,OAAO,SAAS,cAAc;GAChD,GAAG;GACJ;IACA;EAAC;EAAO;EAASA;EAAgB,CAAC"}