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/lib/PreviewGroup.js

169 lines
5.6 KiB

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.context = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var React = _interopRequireWildcard(require("react"));
var _useMergedState3 = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
var _Preview = _interopRequireDefault(require("./Preview"));
var _excluded = ["visible", "onVisibleChange", "getContainer", "current"];
/* istanbul ignore next */
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;
};
}
});
exports.context = context;
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 = (0, _typeof2.default)(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 = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
var _useState = (0, React.useState)(new Map()),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
previewUrls = _useState2[0],
setPreviewUrls = _useState2[1];
var _useState3 = (0, React.useState)(),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
current = _useState4[0],
setCurrent = _useState4[1];
var _useMergedState = (0, _useMergedState3.default)(!!previewVisible, {
value: previewVisible,
onChange: onPreviewVisibleChange
}),
_useMergedState2 = (0, _slicedToArray2.default)(_useMergedState, 2),
isShowPreview = _useMergedState2[0],
setShowPreview = _useMergedState2[1];
var _useState5 = (0, React.useState)(null),
_useState6 = (0, _slicedToArray2.default)(_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 = (0, _slicedToArray2.default)(_ref3, 2),
canPreview = _ref4[1].canPreview;
return !!canPreview;
}).map(function (_ref5) {
var _ref6 = (0, _slicedToArray2.default)(_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.default, (0, _extends2.default)({
"aria-hidden": !isShowPreview,
visible: isShowPreview,
prefixCls: previewPrefixCls,
onClose: onPreviewClose,
mousePosition: mousePosition,
src: canPreviewUrls.get(current),
icons: icons,
getContainer: getContainer
}, dialogProps)));
};
var _default = Group;
exports.default = _default;