Operations.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. var _typeof = require("@babel/runtime/helpers/typeof");
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = void 0;
  8. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  9. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  10. var _portal = _interopRequireDefault(require("@rc-component/portal"));
  11. var _classnames4 = _interopRequireDefault(require("classnames"));
  12. var _rcMotion = _interopRequireDefault(require("rc-motion"));
  13. var _KeyCode = _interopRequireDefault(require("rc-util/lib/KeyCode"));
  14. var _react = _interopRequireWildcard(require("react"));
  15. var React = _react;
  16. var _context = require("./context");
  17. function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
  18. function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
  19. var Operations = function Operations(props) {
  20. var visible = props.visible,
  21. maskTransitionName = props.maskTransitionName,
  22. getContainer = props.getContainer,
  23. prefixCls = props.prefixCls,
  24. rootClassName = props.rootClassName,
  25. icons = props.icons,
  26. countRender = props.countRender,
  27. showSwitch = props.showSwitch,
  28. showProgress = props.showProgress,
  29. current = props.current,
  30. transform = props.transform,
  31. count = props.count,
  32. scale = props.scale,
  33. minScale = props.minScale,
  34. maxScale = props.maxScale,
  35. closeIcon = props.closeIcon,
  36. onActive = props.onActive,
  37. onClose = props.onClose,
  38. onZoomIn = props.onZoomIn,
  39. onZoomOut = props.onZoomOut,
  40. onRotateRight = props.onRotateRight,
  41. onRotateLeft = props.onRotateLeft,
  42. onFlipX = props.onFlipX,
  43. onFlipY = props.onFlipY,
  44. onReset = props.onReset,
  45. toolbarRender = props.toolbarRender,
  46. zIndex = props.zIndex,
  47. image = props.image;
  48. var groupContext = (0, _react.useContext)(_context.PreviewGroupContext);
  49. var rotateLeft = icons.rotateLeft,
  50. rotateRight = icons.rotateRight,
  51. zoomIn = icons.zoomIn,
  52. zoomOut = icons.zoomOut,
  53. close = icons.close,
  54. left = icons.left,
  55. right = icons.right,
  56. flipX = icons.flipX,
  57. flipY = icons.flipY;
  58. var toolClassName = "".concat(prefixCls, "-operations-operation");
  59. React.useEffect(function () {
  60. var onKeyDown = function onKeyDown(e) {
  61. if (e.keyCode === _KeyCode.default.ESC) {
  62. onClose();
  63. }
  64. };
  65. if (visible) {
  66. window.addEventListener('keydown', onKeyDown);
  67. }
  68. return function () {
  69. window.removeEventListener('keydown', onKeyDown);
  70. };
  71. }, [visible]);
  72. var handleActive = function handleActive(e, offset) {
  73. e.preventDefault();
  74. e.stopPropagation();
  75. onActive(offset);
  76. };
  77. var renderOperation = React.useCallback(function (_ref) {
  78. var type = _ref.type,
  79. disabled = _ref.disabled,
  80. onClick = _ref.onClick,
  81. icon = _ref.icon;
  82. return /*#__PURE__*/React.createElement("div", {
  83. key: type,
  84. className: (0, _classnames4.default)(toolClassName, "".concat(prefixCls, "-operations-operation-").concat(type), (0, _defineProperty2.default)({}, "".concat(prefixCls, "-operations-operation-disabled"), !!disabled)),
  85. onClick: onClick
  86. }, icon);
  87. }, [toolClassName, prefixCls]);
  88. var switchPrevNode = showSwitch ? renderOperation({
  89. icon: left,
  90. onClick: function onClick(e) {
  91. return handleActive(e, -1);
  92. },
  93. type: 'prev',
  94. disabled: current === 0
  95. }) : undefined;
  96. var switchNextNode = showSwitch ? renderOperation({
  97. icon: right,
  98. onClick: function onClick(e) {
  99. return handleActive(e, 1);
  100. },
  101. type: 'next',
  102. disabled: current === count - 1
  103. }) : undefined;
  104. var flipYNode = renderOperation({
  105. icon: flipY,
  106. onClick: onFlipY,
  107. type: 'flipY'
  108. });
  109. var flipXNode = renderOperation({
  110. icon: flipX,
  111. onClick: onFlipX,
  112. type: 'flipX'
  113. });
  114. var rotateLeftNode = renderOperation({
  115. icon: rotateLeft,
  116. onClick: onRotateLeft,
  117. type: 'rotateLeft'
  118. });
  119. var rotateRightNode = renderOperation({
  120. icon: rotateRight,
  121. onClick: onRotateRight,
  122. type: 'rotateRight'
  123. });
  124. var zoomOutNode = renderOperation({
  125. icon: zoomOut,
  126. onClick: onZoomOut,
  127. type: 'zoomOut',
  128. disabled: scale <= minScale
  129. });
  130. var zoomInNode = renderOperation({
  131. icon: zoomIn,
  132. onClick: onZoomIn,
  133. type: 'zoomIn',
  134. disabled: scale === maxScale
  135. });
  136. var toolbarNode = /*#__PURE__*/React.createElement("div", {
  137. className: "".concat(prefixCls, "-operations")
  138. }, flipYNode, flipXNode, rotateLeftNode, rotateRightNode, zoomOutNode, zoomInNode);
  139. return /*#__PURE__*/React.createElement(_rcMotion.default, {
  140. visible: visible,
  141. motionName: maskTransitionName
  142. }, function (_ref2) {
  143. var className = _ref2.className,
  144. style = _ref2.style;
  145. return /*#__PURE__*/React.createElement(_portal.default, {
  146. open: true,
  147. getContainer: getContainer !== null && getContainer !== void 0 ? getContainer : document.body
  148. }, /*#__PURE__*/React.createElement("div", {
  149. className: (0, _classnames4.default)("".concat(prefixCls, "-operations-wrapper"), className, rootClassName),
  150. style: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, style), {}, {
  151. zIndex: zIndex
  152. })
  153. }, closeIcon === null ? null : /*#__PURE__*/React.createElement("button", {
  154. className: "".concat(prefixCls, "-close"),
  155. onClick: onClose
  156. }, closeIcon || close), showSwitch && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
  157. className: (0, _classnames4.default)("".concat(prefixCls, "-switch-left"), (0, _defineProperty2.default)({}, "".concat(prefixCls, "-switch-left-disabled"), current === 0)),
  158. onClick: function onClick(e) {
  159. return handleActive(e, -1);
  160. }
  161. }, left), /*#__PURE__*/React.createElement("div", {
  162. className: (0, _classnames4.default)("".concat(prefixCls, "-switch-right"), (0, _defineProperty2.default)({}, "".concat(prefixCls, "-switch-right-disabled"), current === count - 1)),
  163. onClick: function onClick(e) {
  164. return handleActive(e, 1);
  165. }
  166. }, right)), /*#__PURE__*/React.createElement("div", {
  167. className: "".concat(prefixCls, "-footer")
  168. }, showProgress && /*#__PURE__*/React.createElement("div", {
  169. className: "".concat(prefixCls, "-progress")
  170. }, countRender ? countRender(current + 1, count) : /*#__PURE__*/React.createElement("bdi", null, "".concat(current + 1, " / ").concat(count))), toolbarRender ? toolbarRender(toolbarNode, (0, _objectSpread2.default)((0, _objectSpread2.default)({
  171. icons: {
  172. prevIcon: switchPrevNode,
  173. nextIcon: switchNextNode,
  174. flipYIcon: flipYNode,
  175. flipXIcon: flipXNode,
  176. rotateLeftIcon: rotateLeftNode,
  177. rotateRightIcon: rotateRightNode,
  178. zoomOutIcon: zoomOutNode,
  179. zoomInIcon: zoomInNode
  180. },
  181. actions: {
  182. onActive: onActive,
  183. onFlipY: onFlipY,
  184. onFlipX: onFlipX,
  185. onRotateLeft: onRotateLeft,
  186. onRotateRight: onRotateRight,
  187. onZoomOut: onZoomOut,
  188. onZoomIn: onZoomIn,
  189. onReset: onReset,
  190. onClose: onClose
  191. },
  192. transform: transform
  193. }, groupContext ? {
  194. current: current,
  195. total: count
  196. } : {}), {}, {
  197. image: image
  198. })) : toolbarNode)));
  199. });
  200. };
  201. var _default = exports.default = Operations;