acud
Version:
acg react 组件库
147 lines (146 loc) • 6.07 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = _interopRequireWildcard(require("react"));
var _reactEasyCrop = _interopRequireDefault(require("react-easy-crop"));
var _slider = _interopRequireDefault(require("../slider"));
var _configProvider = require("../config-provider");
var _constants = require("./constants");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
var EasyCrop = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
var cropperRef = props.cropperRef,
image = props.image,
aspect = props.aspect,
shape = props.shape,
grid = props.grid,
zoom = props.zoom,
rotate = props.rotate,
minZoom = props.minZoom,
maxZoom = props.maxZoom,
cropperProps = props.cropperProps,
customPrefixCls = props.prefixCls;
var _React$useContext = _react["default"].useContext(_configProvider.ConfigContext),
getPrefixCls = _React$useContext.getPrefixCls;
var prefixCls = getPrefixCls('imgcrop', customPrefixCls);
var _useState = (0, _react.useState)({
x: 0,
y: 0
}),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
crop = _useState2[0],
onCropChange = _useState2[1];
var _useState3 = (0, _react.useState)({
width: 0,
height: 0
}),
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
cropSize = _useState4[0],
setCropSize = _useState4[1];
var _useState5 = (0, _react.useState)(_constants.INIT_ZOOM),
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
zoomVal = _useState6[0],
setZoomVal = _useState6[1];
var _useState7 = (0, _react.useState)(_constants.INIT_ROTATE),
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
rotateVal = _useState8[0],
setRotateVal = _useState8[1];
var cropPixelsRef = (0, _react.useRef)({
width: 0,
height: 0,
x: 0,
y: 0
});
var onMediaLoaded = (0, _react.useCallback)(function (mediaSize) {
var width = mediaSize.width,
height = mediaSize.height;
var ratioWidth = height * aspect;
if (width > ratioWidth) {
setCropSize({
width: ratioWidth,
height: height
});
} else {
setCropSize({
width: width,
height: width / aspect
});
}
}, [aspect]);
var onCropComplete = (0, _react.useCallback)(function (_, croppedAreaPixels) {
cropPixelsRef.current = croppedAreaPixels;
}, []);
(0, _react.useImperativeHandle)(ref, function () {
return {
rotateVal: rotateVal,
setZoomVal: setZoomVal,
setRotateVal: setRotateVal,
cropPixelsRef: cropPixelsRef
};
});
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_reactEasyCrop["default"], (0, _extends2["default"])({}, cropperProps, {
ref: cropperRef,
image: image,
crop: crop,
cropSize: cropSize,
onCropChange: onCropChange,
aspect: aspect,
cropShape: shape,
showGrid: grid,
zoomWithScroll: zoom,
zoom: zoomVal,
rotation: rotateVal,
onZoomChange: setZoomVal,
onRotationChange: setRotateVal,
minZoom: minZoom,
maxZoom: maxZoom,
onMediaLoaded: onMediaLoaded,
onCropComplete: onCropComplete,
classes: {
containerClassName: "".concat(prefixCls, "-container"),
mediaClassName: "".concat(prefixCls, "-media")
}
})), zoom && /*#__PURE__*/_react["default"].createElement("section", {
className: "".concat(prefixCls, "-control ").concat(prefixCls, "-control-zoom")
}, /*#__PURE__*/_react["default"].createElement("button", {
onClick: function onClick() {
return setZoomVal(zoomVal - _constants.ZOOM_STEP);
},
disabled: zoomVal - _constants.ZOOM_STEP < minZoom
}, "\uFF0D"), /*#__PURE__*/_react["default"].createElement(_slider["default"], {
min: minZoom,
max: maxZoom,
step: _constants.ZOOM_STEP,
value: zoomVal,
onChange: setZoomVal
}), /*#__PURE__*/_react["default"].createElement("button", {
onClick: function onClick() {
return setZoomVal(zoomVal + _constants.ZOOM_STEP);
},
disabled: zoomVal + _constants.ZOOM_STEP > maxZoom
}, "\uFF0B")), rotate && /*#__PURE__*/_react["default"].createElement("section", {
className: "".concat(prefixCls, "-control ").concat(prefixCls, "-control-rotate")
}, /*#__PURE__*/_react["default"].createElement("button", {
onClick: function onClick() {
return setRotateVal(rotateVal - _constants.ROTATE_STEP);
},
disabled: rotateVal === _constants.MIN_ROTATE
}, "\u21BA"), /*#__PURE__*/_react["default"].createElement(_slider["default"], {
min: _constants.MIN_ROTATE,
max: _constants.MAX_ROTATE,
step: _constants.ROTATE_STEP,
value: rotateVal,
onChange: setRotateVal
}), /*#__PURE__*/_react["default"].createElement("button", {
onClick: function onClick() {
return setRotateVal(rotateVal + _constants.ROTATE_STEP);
},
disabled: rotateVal === _constants.MAX_ROTATE
}, "\u21BB")));
});
var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(EasyCrop);