UNPKG

7.14 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4var _typeof3 = require("@babel/runtime/helpers/typeof");
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.default = void 0;
9var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
12var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13var _useMergedState5 = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
14var React = _interopRequireWildcard(require("react"));
15var _context = require("./context");
16var _usePreviewItems3 = _interopRequireDefault(require("./hooks/usePreviewItems"));
17var _Preview = _interopRequireDefault(require("./Preview"));
18var _excluded = ["visible", "onVisibleChange", "getContainer", "current", "movable", "minScale", "maxScale", "countRender", "closeIcon", "onChange", "onTransform", "toolbarRender", "imageRender"],
19 _excluded2 = ["src"];
20function _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); }
21function _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; }
22var Group = function Group(_ref) {
23 var _mergedItems$current;
24 var _ref$previewPrefixCls = _ref.previewPrefixCls,
25 previewPrefixCls = _ref$previewPrefixCls === void 0 ? 'rc-image-preview' : _ref$previewPrefixCls,
26 children = _ref.children,
27 _ref$icons = _ref.icons,
28 icons = _ref$icons === void 0 ? {} : _ref$icons,
29 items = _ref.items,
30 preview = _ref.preview,
31 fallback = _ref.fallback;
32 var _ref2 = (0, _typeof2.default)(preview) === 'object' ? preview : {},
33 previewVisible = _ref2.visible,
34 onVisibleChange = _ref2.onVisibleChange,
35 getContainer = _ref2.getContainer,
36 currentIndex = _ref2.current,
37 movable = _ref2.movable,
38 minScale = _ref2.minScale,
39 maxScale = _ref2.maxScale,
40 countRender = _ref2.countRender,
41 closeIcon = _ref2.closeIcon,
42 onChange = _ref2.onChange,
43 onTransform = _ref2.onTransform,
44 toolbarRender = _ref2.toolbarRender,
45 imageRender = _ref2.imageRender,
46 dialogProps = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
47
48 // ========================== Items ===========================
49 var _usePreviewItems = (0, _usePreviewItems3.default)(items),
50 _usePreviewItems2 = (0, _slicedToArray2.default)(_usePreviewItems, 2),
51 mergedItems = _usePreviewItems2[0],
52 register = _usePreviewItems2[1];
53
54 // ========================= Preview ==========================
55 // >>> Index
56 var _useMergedState = (0, _useMergedState5.default)(0, {
57 value: currentIndex
58 }),
59 _useMergedState2 = (0, _slicedToArray2.default)(_useMergedState, 2),
60 current = _useMergedState2[0],
61 setCurrent = _useMergedState2[1];
62 var _useState = (0, React.useState)(false),
63 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
64 keepOpenIndex = _useState2[0],
65 setKeepOpenIndex = _useState2[1];
66
67 // >>> Image
68 var _ref3 = ((_mergedItems$current = mergedItems[current]) === null || _mergedItems$current === void 0 ? void 0 : _mergedItems$current.data) || {},
69 src = _ref3.src,
70 imgCommonProps = (0, _objectWithoutProperties2.default)(_ref3, _excluded2);
71 // >>> Visible
72 var _useMergedState3 = (0, _useMergedState5.default)(!!previewVisible, {
73 value: previewVisible,
74 onChange: function onChange(val, prevVal) {
75 onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(val, prevVal, current);
76 }
77 }),
78 _useMergedState4 = (0, _slicedToArray2.default)(_useMergedState3, 2),
79 isShowPreview = _useMergedState4[0],
80 setShowPreview = _useMergedState4[1];
81
82 // >>> Position
83 var _useState3 = (0, React.useState)(null),
84 _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
85 mousePosition = _useState4[0],
86 setMousePosition = _useState4[1];
87 var onPreviewFromImage = React.useCallback(function (id, mouseX, mouseY) {
88 var index = mergedItems.findIndex(function (item) {
89 return item.id === id;
90 });
91 setShowPreview(true);
92 setMousePosition({
93 x: mouseX,
94 y: mouseY
95 });
96 setCurrent(index < 0 ? 0 : index);
97 setKeepOpenIndex(true);
98 }, [mergedItems]);
99
100 // Reset current when reopen
101 React.useEffect(function () {
102 if (isShowPreview) {
103 if (!keepOpenIndex) {
104 setCurrent(0);
105 }
106 } else {
107 setKeepOpenIndex(false);
108 }
109 }, [isShowPreview]);
110
111 // ========================== Events ==========================
112 var onInternalChange = function onInternalChange(next, prev) {
113 setCurrent(next);
114 onChange === null || onChange === void 0 ? void 0 : onChange(next, prev);
115 };
116 var onPreviewClose = function onPreviewClose() {
117 setShowPreview(false);
118 setMousePosition(null);
119 };
120
121 // ========================= Context ==========================
122 var previewGroupContext = React.useMemo(function () {
123 return {
124 register: register,
125 onPreview: onPreviewFromImage
126 };
127 }, [register, onPreviewFromImage]);
128
129 // ========================== Render ==========================
130 return /*#__PURE__*/React.createElement(_context.PreviewGroupContext.Provider, {
131 value: previewGroupContext
132 }, children, /*#__PURE__*/React.createElement(_Preview.default, (0, _extends2.default)({
133 "aria-hidden": !isShowPreview,
134 movable: movable,
135 visible: isShowPreview,
136 prefixCls: previewPrefixCls,
137 closeIcon: closeIcon,
138 onClose: onPreviewClose,
139 mousePosition: mousePosition,
140 imgCommonProps: imgCommonProps,
141 src: src,
142 fallback: fallback,
143 icons: icons,
144 minScale: minScale,
145 maxScale: maxScale,
146 getContainer: getContainer,
147 current: current,
148 count: mergedItems.length,
149 countRender: countRender,
150 onTransform: onTransform,
151 toolbarRender: toolbarRender,
152 imageRender: imageRender,
153 onChange: onInternalChange
154 }, dialogProps)));
155};
156var _default = Group;
157exports.default = _default;
\No newline at end of file