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.
169 lines
5.6 KiB
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; |