You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
InternshipProject/node_modules/rc-image/es/PreviewGroup.js

150 lines
4.9 KiB

import _extends from "@babel/runtime/helpers/esm/extends";
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import _typeof from "@babel/runtime/helpers/esm/typeof";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
var _excluded = ["visible", "onVisibleChange", "getContainer", "current"];
import * as React from 'react';
import { useState } from 'react';
import useMergedState from "rc-util/es/hooks/useMergedState";
import Preview from './Preview';
/* istanbul ignore next */
export var context = /*#__PURE__*/React.createContext({
previewUrls: new Map(),
setPreviewUrls: function setPreviewUrls() {
return null;
},
current: null,
setCurrent: function setCurrent() {
return null;
},
setShowPreview: function setShowPreview() {
return null;
},
setMousePosition: function setMousePosition() {
return null;
},
registerImage: function registerImage() {
return function () {
return null;
};
}
});
var Provider = context.Provider;
var Group = function Group(_ref) {
var _ref$previewPrefixCls = _ref.previewPrefixCls,
previewPrefixCls = _ref$previewPrefixCls === void 0 ? 'rc-image-preview' : _ref$previewPrefixCls,
children = _ref.children,
_ref$icons = _ref.icons,
icons = _ref$icons === void 0 ? {} : _ref$icons,
preview = _ref.preview;
var _ref2 = _typeof(preview) === 'object' ? preview : {},
_ref2$visible = _ref2.visible,
previewVisible = _ref2$visible === void 0 ? undefined : _ref2$visible,
_ref2$onVisibleChange = _ref2.onVisibleChange,
onPreviewVisibleChange = _ref2$onVisibleChange === void 0 ? undefined : _ref2$onVisibleChange,
_ref2$getContainer = _ref2.getContainer,
getContainer = _ref2$getContainer === void 0 ? undefined : _ref2$getContainer,
_ref2$current = _ref2.current,
currentIndex = _ref2$current === void 0 ? 0 : _ref2$current,
dialogProps = _objectWithoutProperties(_ref2, _excluded);
var _useState = useState(new Map()),
_useState2 = _slicedToArray(_useState, 2),
previewUrls = _useState2[0],
setPreviewUrls = _useState2[1];
var _useState3 = useState(),
_useState4 = _slicedToArray(_useState3, 2),
current = _useState4[0],
setCurrent = _useState4[1];
var _useMergedState = useMergedState(!!previewVisible, {
value: previewVisible,
onChange: onPreviewVisibleChange
}),
_useMergedState2 = _slicedToArray(_useMergedState, 2),
isShowPreview = _useMergedState2[0],
setShowPreview = _useMergedState2[1];
var _useState5 = useState(null),
_useState6 = _slicedToArray(_useState5, 2),
mousePosition = _useState6[0],
setMousePosition = _useState6[1];
var isControlled = previewVisible !== undefined;
var previewUrlsKeys = Array.from(previewUrls.keys());
var currentControlledKey = previewUrlsKeys[currentIndex];
var canPreviewUrls = new Map(Array.from(previewUrls).filter(function (_ref3) {
var _ref4 = _slicedToArray(_ref3, 2),
canPreview = _ref4[1].canPreview;
return !!canPreview;
}).map(function (_ref5) {
var _ref6 = _slicedToArray(_ref5, 2),
id = _ref6[0],
url = _ref6[1].url;
return [id, url];
}));
var registerImage = function registerImage(id, url) {
var canPreview = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var unRegister = function unRegister() {
setPreviewUrls(function (oldPreviewUrls) {
var clonePreviewUrls = new Map(oldPreviewUrls);
var deleteResult = clonePreviewUrls.delete(id);
return deleteResult ? clonePreviewUrls : oldPreviewUrls;
});
};
setPreviewUrls(function (oldPreviewUrls) {
return new Map(oldPreviewUrls).set(id, {
url: url,
canPreview: canPreview
});
});
return unRegister;
};
var onPreviewClose = function onPreviewClose(e) {
e.stopPropagation();
setShowPreview(false);
setMousePosition(null);
};
React.useEffect(function () {
setCurrent(currentControlledKey);
}, [currentControlledKey]);
React.useEffect(function () {
if (!isShowPreview && isControlled) {
setCurrent(currentControlledKey);
}
}, [currentControlledKey, isControlled, isShowPreview]);
return /*#__PURE__*/React.createElement(Provider, {
value: {
isPreviewGroup: true,
previewUrls: canPreviewUrls,
setPreviewUrls: setPreviewUrls,
current: current,
setCurrent: setCurrent,
setShowPreview: setShowPreview,
setMousePosition: setMousePosition,
registerImage: registerImage
}
}, children, /*#__PURE__*/React.createElement(Preview, _extends({
"aria-hidden": !isShowPreview,
visible: isShowPreview,
prefixCls: previewPrefixCls,
onClose: onPreviewClose,
mousePosition: mousePosition,
src: canPreviewUrls.get(current),
icons: icons,
getContainer: getContainer
}, dialogProps)));
};
export default Group;