UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

82 lines (81 loc) 2.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = usePreviewConfig; var _react = require("react"); var _warning = require("../../_util/warning"); function normalizeMask(mask) { if (/*#__PURE__*/(0, _react.isValidElement)(mask)) { return [mask, undefined]; } if (typeof mask === 'boolean' || mask && typeof mask === 'object') { return [undefined, mask]; } return [undefined, undefined]; } function usePreviewConfig(preview) { // Get origin preview config const rawPreviewConfig = (0, _react.useMemo)(() => { if (typeof preview === 'boolean') { return preview ? {} : null; } return preview && typeof preview === 'object' ? preview : {}; }, [preview]); const splittedPreviewConfig = (0, _react.useMemo)(() => { if (!rawPreviewConfig) { return [rawPreviewConfig, '', '']; } const { open, onOpenChange, cover, actionsRender, visible, onVisibleChange, rootClassName, maskClassName, mask, forceRender: _forceRender, destroyOnClose: _destroyOnClose, toolbarRender, ...restPreviewConfig } = rawPreviewConfig; let onInternalOpenChange; if (onOpenChange) { onInternalOpenChange = onOpenChange; } else if (onVisibleChange) { onInternalOpenChange = (nextOpen, info) => { const { current } = info || {}; if (current !== undefined) { onVisibleChange(nextOpen, !nextOpen, current); } else { onVisibleChange(nextOpen, !nextOpen); } }; } const [coverElement, maskConfig] = normalizeMask(mask); return [{ ...restPreviewConfig, open: open ?? visible, onOpenChange: onInternalOpenChange, cover: cover ?? coverElement, mask: maskConfig, actionsRender: actionsRender ?? toolbarRender }, rootClassName, maskClassName]; }, [rawPreviewConfig]); if (process.env.NODE_ENV !== 'production') { const warning = (0, _warning.devUseWarning)('Image'); if (rawPreviewConfig) { [['visible', 'open'], ['onVisibleChange', 'onOpenChange'], ['maskClassName', 'classNames.cover'], ['rootClassName', 'classNames.root'], ['toolbarRender', 'actionsRender']].forEach(([deprecatedName, newName]) => { warning.deprecated(!(deprecatedName in rawPreviewConfig), deprecatedName, newName); }); process.env.NODE_ENV !== "production" ? warning(! /*#__PURE__*/(0, _react.isValidElement)(rawPreviewConfig.mask), 'deprecated', '`mask` used as ReactNode is deprecated. Please use `cover` instead.') : void 0; process.env.NODE_ENV !== "production" ? warning(!('forceRender' in rawPreviewConfig), 'breaking', '`forceRender` is no longer supported.') : void 0; process.env.NODE_ENV !== "production" ? warning(!('destroyOnClose' in rawPreviewConfig), 'breaking', '`destroyOnClose` is no longer supported.') : void 0; } } return splittedPreviewConfig; }