amis-rpc-design/node_modules/rc-image/lib/Image.js

187 lines
9.2 KiB
JavaScript
Raw Normal View History

2023-10-07 19:42:30 +08:00
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof3 = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
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 _classnames = _interopRequireDefault(require("classnames"));
var _css = require("rc-util/lib/Dom/css");
var _useMergedState3 = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
var React = _interopRequireWildcard(require("react"));
var _common = require("./common");
var _context = require("./context");
var _useRegisterImage = _interopRequireDefault(require("./hooks/useRegisterImage"));
var _useStatus3 = _interopRequireDefault(require("./hooks/useStatus"));
var _Preview = _interopRequireDefault(require("./Preview"));
var _PreviewGroup = _interopRequireDefault(require("./PreviewGroup"));
var _excluded = ["src", "alt", "onPreviewClose", "prefixCls", "previewPrefixCls", "placeholder", "fallback", "width", "height", "style", "preview", "className", "onClick", "onError", "wrapperClassName", "wrapperStyle", "rootClassName"],
_excluded2 = ["src", "visible", "onVisibleChange", "getContainer", "mask", "maskClassName", "movable", "icons", "scaleStep", "minScale", "maxScale", "imageRender", "toolbarRender"];
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
var ImageInternal = function ImageInternal(props) {
var imgSrc = props.src,
alt = props.alt,
onInitialPreviewClose = props.onPreviewClose,
_props$prefixCls = props.prefixCls,
prefixCls = _props$prefixCls === void 0 ? 'rc-image' : _props$prefixCls,
_props$previewPrefixC = props.previewPrefixCls,
previewPrefixCls = _props$previewPrefixC === void 0 ? "".concat(prefixCls, "-preview") : _props$previewPrefixC,
placeholder = props.placeholder,
fallback = props.fallback,
width = props.width,
height = props.height,
style = props.style,
_props$preview = props.preview,
preview = _props$preview === void 0 ? true : _props$preview,
className = props.className,
onClick = props.onClick,
onError = props.onError,
wrapperClassName = props.wrapperClassName,
wrapperStyle = props.wrapperStyle,
rootClassName = props.rootClassName,
otherProps = (0, _objectWithoutProperties2.default)(props, _excluded);
var isCustomPlaceholder = placeholder && placeholder !== true;
var _ref = (0, _typeof2.default)(preview) === 'object' ? preview : {},
previewSrc = _ref.src,
_ref$visible = _ref.visible,
previewVisible = _ref$visible === void 0 ? undefined : _ref$visible,
_ref$onVisibleChange = _ref.onVisibleChange,
onPreviewVisibleChange = _ref$onVisibleChange === void 0 ? onInitialPreviewClose : _ref$onVisibleChange,
_ref$getContainer = _ref.getContainer,
getPreviewContainer = _ref$getContainer === void 0 ? undefined : _ref$getContainer,
previewMask = _ref.mask,
maskClassName = _ref.maskClassName,
movable = _ref.movable,
icons = _ref.icons,
scaleStep = _ref.scaleStep,
minScale = _ref.minScale,
maxScale = _ref.maxScale,
imageRender = _ref.imageRender,
toolbarRender = _ref.toolbarRender,
dialogProps = (0, _objectWithoutProperties2.default)(_ref, _excluded2);
var src = previewSrc !== null && previewSrc !== void 0 ? previewSrc : imgSrc;
var _useMergedState = (0, _useMergedState3.default)(!!previewVisible, {
value: previewVisible,
onChange: onPreviewVisibleChange
}),
_useMergedState2 = (0, _slicedToArray2.default)(_useMergedState, 2),
isShowPreview = _useMergedState2[0],
setShowPreview = _useMergedState2[1];
var _useStatus = (0, _useStatus3.default)({
src: imgSrc,
isCustomPlaceholder: isCustomPlaceholder,
fallback: fallback
}),
_useStatus2 = (0, _slicedToArray2.default)(_useStatus, 3),
getImgRef = _useStatus2[0],
srcAndOnload = _useStatus2[1],
status = _useStatus2[2];
var _useState = (0, React.useState)(null),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
mousePosition = _useState2[0],
setMousePosition = _useState2[1];
var groupContext = (0, React.useContext)(_context.PreviewGroupContext);
var canPreview = !!preview;
var onPreviewClose = function onPreviewClose() {
setShowPreview(false);
setMousePosition(null);
};
var wrapperClass = (0, _classnames.default)(prefixCls, wrapperClassName, rootClassName, (0, _defineProperty2.default)({}, "".concat(prefixCls, "-error"), status === 'error'));
// ========================= ImageProps =========================
var imgCommonProps = (0, React.useMemo)(function () {
var obj = {};
_common.COMMON_PROPS.forEach(function (prop) {
if (props[prop] !== undefined) {
obj[prop] = props[prop];
}
});
return obj;
}, _common.COMMON_PROPS.map(function (prop) {
return props[prop];
}));
// ========================== Register ==========================
var registerData = (0, React.useMemo)(function () {
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, imgCommonProps), {}, {
src: src
});
}, [src, imgCommonProps]);
var imageId = (0, _useRegisterImage.default)(canPreview, registerData);
// ========================== Preview ===========================
var onPreview = function onPreview(e) {
var _getOffset = (0, _css.getOffset)(e.target),
left = _getOffset.left,
top = _getOffset.top;
if (groupContext) {
groupContext.onPreview(imageId, left, top);
} else {
setMousePosition({
x: left,
y: top
});
setShowPreview(true);
}
onClick === null || onClick === void 0 ? void 0 : onClick(e);
};
// =========================== Render ===========================
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", (0, _extends2.default)({}, otherProps, {
className: wrapperClass,
onClick: canPreview ? onPreview : onClick,
style: (0, _objectSpread2.default)({
width: width,
height: height
}, wrapperStyle)
}), /*#__PURE__*/React.createElement("img", (0, _extends2.default)({}, imgCommonProps, {
className: (0, _classnames.default)("".concat(prefixCls, "-img"), (0, _defineProperty2.default)({}, "".concat(prefixCls, "-img-placeholder"), placeholder === true), className),
style: (0, _objectSpread2.default)({
height: height
}, style),
ref: getImgRef
}, srcAndOnload, {
width: width,
height: height,
onError: onError
})), status === 'loading' && /*#__PURE__*/React.createElement("div", {
"aria-hidden": "true",
className: "".concat(prefixCls, "-placeholder")
}, placeholder), previewMask && canPreview && /*#__PURE__*/React.createElement("div", {
className: (0, _classnames.default)("".concat(prefixCls, "-mask"), maskClassName),
style: {
display: (style === null || style === void 0 ? void 0 : style.display) === 'none' ? 'none' : undefined
}
}, previewMask)), !groupContext && canPreview && /*#__PURE__*/React.createElement(_Preview.default, (0, _extends2.default)({
"aria-hidden": !isShowPreview,
visible: isShowPreview,
prefixCls: previewPrefixCls,
onClose: onPreviewClose,
mousePosition: mousePosition,
src: src,
alt: alt,
fallback: fallback,
getContainer: getPreviewContainer,
icons: icons,
movable: movable,
scaleStep: scaleStep,
minScale: minScale,
maxScale: maxScale,
rootClassName: rootClassName,
imageRender: imageRender,
imgCommonProps: imgCommonProps,
toolbarRender: toolbarRender
}, dialogProps)));
};
ImageInternal.PreviewGroup = _PreviewGroup.default;
ImageInternal.displayName = 'Image';
var _default = ImageInternal;
exports.default = _default;