1
This commit is contained in:
+7
@@ -0,0 +1,7 @@
|
||||
import React from 'react';
|
||||
import type { PreviewConfig } from '..';
|
||||
import type { GroupPreviewConfig } from '../PreviewGroup';
|
||||
declare const useMergedPreviewConfig: <T extends PreviewConfig | GroupPreviewConfig>(previewConfig: T, contextPreviewConfig: T, prefixCls: string, mergedRootClassName: string, getContextPopupContainer: PreviewConfig["getContainer"], icons: PreviewConfig["icons"], defaultCover?: React.ReactNode) => T & {
|
||||
blurClassName?: string;
|
||||
};
|
||||
export default useMergedPreviewConfig;
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var _react = _interopRequireDefault(require("react"));
|
||||
var _clsx = require("clsx");
|
||||
var _hooks = require("../../_util/hooks");
|
||||
var _motion = require("../../_util/motion");
|
||||
const useMergedPreviewConfig = (previewConfig, contextPreviewConfig, prefixCls, mergedRootClassName, getContextPopupContainer, icons, defaultCover) => {
|
||||
const [zIndex] = (0, _hooks.useZIndex)('ImagePreview', previewConfig?.zIndex);
|
||||
const [mergedPreviewMask, blurClassName] = (0, _hooks.useMergedMask)(previewConfig?.mask, contextPreviewConfig?.mask, `${prefixCls}-preview`);
|
||||
return _react.default.useMemo(() => {
|
||||
if (!previewConfig) {
|
||||
return previewConfig;
|
||||
}
|
||||
const {
|
||||
cover,
|
||||
getContainer,
|
||||
closeIcon,
|
||||
rootClassName: previewRootClassName
|
||||
} = previewConfig;
|
||||
const {
|
||||
closeIcon: contextCloseIcon
|
||||
} = contextPreviewConfig ?? {};
|
||||
return {
|
||||
motionName: (0, _motion.getTransitionName)(`${prefixCls}-preview`, 'fade'),
|
||||
...previewConfig,
|
||||
...(defaultCover ? {
|
||||
cover: cover ?? defaultCover
|
||||
} : {}),
|
||||
icons,
|
||||
getContainer: getContainer ?? getContextPopupContainer,
|
||||
zIndex,
|
||||
closeIcon: closeIcon ?? contextCloseIcon,
|
||||
rootClassName: (0, _clsx.clsx)(mergedRootClassName, previewRootClassName),
|
||||
mask: mergedPreviewMask,
|
||||
blurClassName: blurClassName.mask
|
||||
};
|
||||
}, [previewConfig, contextPreviewConfig, prefixCls, mergedRootClassName, getContextPopupContainer, defaultCover, icons, zIndex, mergedPreviewMask, blurClassName]);
|
||||
};
|
||||
var _default = exports.default = useMergedPreviewConfig;
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import type { PreviewConfig } from '..';
|
||||
import type { GroupPreviewConfig } from '../PreviewGroup';
|
||||
export default function usePreviewConfig<T extends PreviewConfig | GroupPreviewConfig>(preview?: boolean | T): [previewConfig: T, rootClassName: string, maskClassName: string];
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = usePreviewConfig;
|
||||
var _react = require("react");
|
||||
var _is = require("../../_util/is");
|
||||
var _warning = require("../../_util/warning");
|
||||
function normalizeMask(mask) {
|
||||
if (/*#__PURE__*/(0, _react.isValidElement)(mask)) {
|
||||
return [mask, undefined];
|
||||
}
|
||||
if (typeof mask === 'boolean' || (0, _is.isPlainObject)(mask)) {
|
||||
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 (0, _is.isPlainObject)(preview) ? 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;
|
||||
}
|
||||
Reference in New Issue
Block a user