"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;