gdx-ui 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,294 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ImageZoom = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _util = require("../util");
11
+ var _button = require("../button");
12
+ var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
14
+ 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); }
15
+ 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; }
16
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
17
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
18
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
19
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
20
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
21
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
+ var ImageZoom = exports.ImageZoom = function ImageZoom(_ref) {
23
+ var src = _ref.src,
24
+ alt = _ref.alt,
25
+ _ref$width = _ref.width,
26
+ width = _ref$width === void 0 ? '100%' : _ref$width,
27
+ _ref$height = _ref.height,
28
+ height = _ref$height === void 0 ? 600 : _ref$height,
29
+ _ref$bordered = _ref.bordered,
30
+ bordered = _ref$bordered === void 0 ? false : _ref$bordered,
31
+ _ref$maxZoom = _ref.maxZoom,
32
+ maxZoom = _ref$maxZoom === void 0 ? 1.5 : _ref$maxZoom,
33
+ _ref$showHelp = _ref.showHelp,
34
+ showHelp = _ref$showHelp === void 0 ? true : _ref$showHelp;
35
+ var _useState = (0, _react.useState)(),
36
+ _useState2 = _slicedToArray(_useState, 2),
37
+ imageData = _useState2[0],
38
+ setImageData = _useState2[1];
39
+ var _useState3 = (0, _react.useState)(1),
40
+ _useState4 = _slicedToArray(_useState3, 2),
41
+ zoom = _useState4[0],
42
+ setZoom = _useState4[1];
43
+ var _useState5 = (0, _react.useState)(1),
44
+ _useState6 = _slicedToArray(_useState5, 2),
45
+ minZoom = _useState6[0],
46
+ setMinZoom = _useState6[1];
47
+ var _useState7 = (0, _react.useState)(maxZoom),
48
+ _useState8 = _slicedToArray(_useState7, 2),
49
+ maxZoomState = _useState8[0],
50
+ setMaxZoomState = _useState8[1];
51
+ var _useState9 = (0, _react.useState)({
52
+ x: 0,
53
+ y: 0
54
+ }),
55
+ _useState10 = _slicedToArray(_useState9, 2),
56
+ offset = _useState10[0],
57
+ setOffset = _useState10[1];
58
+ var _useState11 = (0, _react.useState)(false),
59
+ _useState12 = _slicedToArray(_useState11, 2),
60
+ dragging = _useState12[0],
61
+ setDragging = _useState12[1];
62
+ var _useState13 = (0, _react.useState)({
63
+ x: 0,
64
+ y: 0
65
+ }),
66
+ _useState14 = _slicedToArray(_useState13, 2),
67
+ dragStart = _useState14[0],
68
+ setDragStart = _useState14[1];
69
+ var _useState15 = (0, _react.useState)({
70
+ x: 0,
71
+ y: 0
72
+ }),
73
+ _useState16 = _slicedToArray(_useState15, 2),
74
+ imgStart = _useState16[0],
75
+ setImgStart = _useState16[1];
76
+ var containerRef = (0, _react.useRef)(null);
77
+
78
+ // Cuando la imagen y el wrapper están listos, calcula el zoom mínimo y máximo
79
+ (0, _react.useEffect)(function () {
80
+ if (!src) return;
81
+ var image = new Image();
82
+ image.src = src;
83
+ image.onload = function () {
84
+ setImageData({
85
+ width: image.width,
86
+ height: image.height
87
+ });
88
+ };
89
+ }, [src]);
90
+ (0, _react.useEffect)(function () {
91
+ if (!imageData || !containerRef.current) return;
92
+ var wrapper = containerRef.current;
93
+ var dispW = wrapper.clientWidth;
94
+ var dispH = wrapper.clientHeight;
95
+ var zoomW = dispW / imageData.width;
96
+ var zoomH = dispH / imageData.height;
97
+ var fitZoom = Math.min(zoomW, zoomH);
98
+ setMinZoom(fitZoom);
99
+ setZoom(fitZoom);
100
+ setMaxZoomState(Math.max(fitZoom, maxZoom));
101
+ setOffset({
102
+ x: 0,
103
+ y: 0
104
+ });
105
+ // eslint-disable-next-line
106
+ }, [imageData, maxZoom, width, height]);
107
+
108
+ // Limita el offset para que la imagen no se salga del área visible
109
+ var clampOffset = function clampOffset(ox, oy, zoomVal) {
110
+ if (!imageData || !containerRef.current) return {
111
+ x: 0,
112
+ y: 0
113
+ };
114
+ var dispW = containerRef.current.clientWidth;
115
+ var dispH = containerRef.current.clientHeight;
116
+ var imgW = imageData.width * zoomVal;
117
+ var imgH = imageData.height * zoomVal;
118
+ var minX = Math.min(0, dispW - imgW);
119
+ var minY = Math.min(0, dispH - imgH);
120
+ return {
121
+ x: Math.max(minX, Math.min(ox, 0)),
122
+ y: Math.max(minY, Math.min(oy, 0))
123
+ };
124
+ };
125
+
126
+ // Drag handlers (mouse & touch)
127
+ var startDrag = function startDrag(clientX, clientY) {
128
+ setDragging(true);
129
+ setDragStart({
130
+ x: clientX,
131
+ y: clientY
132
+ });
133
+ setImgStart(offset);
134
+ };
135
+ var onMouseDown = function onMouseDown(e) {
136
+ if (zoom === minZoom) return;
137
+ e.preventDefault();
138
+ startDrag(e.clientX, e.clientY);
139
+ };
140
+ var onMouseMove = function onMouseMove(e) {
141
+ if (!dragging) return;
142
+ var dx = e.clientX - dragStart.x;
143
+ var dy = e.clientY - dragStart.y;
144
+ setOffset(clampOffset(imgStart.x + dx, imgStart.y + dy, zoom));
145
+ };
146
+ var onMouseUp = function onMouseUp() {
147
+ return setDragging(false);
148
+ };
149
+
150
+ // Touch events
151
+ var onTouchStart = function onTouchStart(e) {
152
+ if (zoom === minZoom) return;
153
+ if (e.touches.length === 1) {
154
+ var t = e.touches[0];
155
+ startDrag(t.clientX, t.clientY);
156
+ }
157
+ };
158
+ var onTouchMove = function onTouchMove(e) {
159
+ if (!dragging || e.touches.length !== 1) return;
160
+ var t = e.touches[0];
161
+ var dx = t.clientX - dragStart.x;
162
+ var dy = t.clientY - dragStart.y;
163
+ setOffset(clampOffset(imgStart.x + dx, imgStart.y + dy, zoom));
164
+ };
165
+ var onTouchEnd = function onTouchEnd() {
166
+ return setDragging(false);
167
+ };
168
+ var handleDoubleClick = function handleDoubleClick(e) {
169
+ if (!imageData || !containerRef.current) return;
170
+ var wrapper = containerRef.current;
171
+ var rect = wrapper.getBoundingClientRect();
172
+ var clickX = e.clientX - rect.left;
173
+ var clickY = e.clientY - rect.top;
174
+ if (zoom < maxZoomState) {
175
+ // Zoom al máximo desde el punto del click
176
+ var newZoom = maxZoomState;
177
+ var dispW = wrapper.clientWidth;
178
+ var dispH = wrapper.clientHeight;
179
+
180
+ // Calcula el punto relativo en la imagen original
181
+ var relX = (clickX - offset.x) / zoom;
182
+ var relY = (clickY - offset.y) / zoom;
183
+
184
+ // Calcula el nuevo offset para centrar ese punto
185
+ var offsetX = dispW / 2 - relX * newZoom;
186
+ var offsetY = dispH / 2 - relY * newZoom;
187
+
188
+ // Limita el offset para no salirte del área visible
189
+ var imgW = imageData.width * newZoom;
190
+ var imgH = imageData.height * newZoom;
191
+ var minX = Math.min(0, dispW - imgW);
192
+ var minY = Math.min(0, dispH - imgH);
193
+ offsetX = Math.max(minX, Math.min(offsetX, 0));
194
+ offsetY = Math.max(minY, Math.min(offsetY, 0));
195
+ setZoom(newZoom);
196
+ setOffset({
197
+ x: offsetX,
198
+ y: offsetY
199
+ });
200
+ } else {
201
+ // Regresa al zoom inicial y centra la imagen
202
+ var _dispW = wrapper.clientWidth;
203
+ var _dispH = wrapper.clientHeight;
204
+ var _imgW = imageData.width * minZoom;
205
+ var _imgH = imageData.height * minZoom;
206
+ var _offsetX = (_dispW - _imgW) / 2;
207
+ var _offsetY = (_dispH - _imgH) / 2;
208
+ setZoom(minZoom);
209
+ setOffset({
210
+ x: _offsetX,
211
+ y: _offsetY
212
+ });
213
+ }
214
+ };
215
+ (0, _react.useEffect)(function () {
216
+ if (!imageData || !containerRef.current) return;
217
+ var wrapper = containerRef.current;
218
+ var dispW = wrapper.clientWidth;
219
+ var dispH = wrapper.clientHeight;
220
+ var zoomW = dispW / imageData.width;
221
+ var zoomH = dispH / imageData.height;
222
+ var fitZoom = Math.min(zoomW, zoomH);
223
+ setMinZoom(fitZoom);
224
+ setZoom(fitZoom);
225
+ setMaxZoomState(Math.max(fitZoom, maxZoom));
226
+
227
+ // Centra la imagen al inicio
228
+ var imgW = imageData.width * fitZoom;
229
+ var imgH = imageData.height * fitZoom;
230
+ var offsetX = (dispW - imgW) / 2;
231
+ var offsetY = (dispH - imgH) / 2;
232
+ setOffset({
233
+ x: offsetX,
234
+ y: offsetY
235
+ });
236
+ // eslint-disable-next-line
237
+ }, [imageData, maxZoom, width, height]);
238
+ (0, _react.useEffect)(function () {
239
+ if (zoom === minZoom && imageData && containerRef.current) {
240
+ var dispW = containerRef.current.clientWidth;
241
+ var dispH = containerRef.current.clientHeight;
242
+ var imgW = imageData.width * minZoom;
243
+ var imgH = imageData.height * minZoom;
244
+ var offsetX = (dispW - imgW) / 2;
245
+ var offsetY = (dispH - imgH) / 2;
246
+ setOffset({
247
+ x: offsetX,
248
+ y: offsetY
249
+ });
250
+ }
251
+ }, [zoom, minZoom, imageData]);
252
+ return /*#__PURE__*/_react["default"].createElement("div", {
253
+ ref: containerRef,
254
+ style: {
255
+ width: width,
256
+ height: height,
257
+ userSelect: dragging ? 'none' : undefined
258
+ },
259
+ onDoubleClick: handleDoubleClick,
260
+ onMouseMove: onMouseMove,
261
+ onMouseUp: onMouseUp,
262
+ onMouseLeave: onMouseUp,
263
+ onTouchMove: onTouchMove,
264
+ onTouchEnd: onTouchEnd,
265
+ className: "image-zoom ".concat(bordered ? 'bordered' : '', " margin-bottom")
266
+ }, showHelp && /*#__PURE__*/_react["default"].createElement("div", {
267
+ className: "image-zoom-caption"
268
+ }, "Doble click para ampliar o reducir la imagen"), imageData ? /*#__PURE__*/_react["default"].createElement("img", {
269
+ src: src,
270
+ alt: alt,
271
+ draggable: false,
272
+ style: {
273
+ width: imageData.width * zoom,
274
+ height: imageData.height * zoom,
275
+ left: offset.x,
276
+ top: offset.y,
277
+ cursor: zoom > minZoom ? dragging ? 'grabbing' : 'grab' : 'default',
278
+ transition: dragging ? 'none' : 'left 0.1s, top 0.1s'
279
+ },
280
+ onMouseDown: zoom > minZoom ? onMouseDown : undefined,
281
+ onTouchStart: zoom > minZoom ? onTouchStart : undefined
282
+ }) : /*#__PURE__*/_react["default"].createElement(_util.Skeleton, {
283
+ width: "100%",
284
+ height: height
285
+ }));
286
+ };
287
+ ImageZoom.propTypes = {
288
+ src: _propTypes["default"].string.isRequired,
289
+ alt: _propTypes["default"].string,
290
+ width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
291
+ height: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
292
+ bordered: _propTypes["default"].bool,
293
+ maxZoom: _propTypes["default"].number
294
+ };
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Picture = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _util = require("../util");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
12
+ 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); }
13
+ 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; }
14
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
15
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
16
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
17
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
18
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
19
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20
+ var Picture = exports.Picture = function Picture(_ref) {
21
+ var src = _ref.src,
22
+ alt = _ref.alt,
23
+ width = _ref.width,
24
+ height = _ref.height,
25
+ _ref$bordered = _ref.bordered,
26
+ bordered = _ref$bordered === void 0 ? false : _ref$bordered,
27
+ _ref$zoom = _ref.zoom,
28
+ zoom = _ref$zoom === void 0 ? 2 : _ref$zoom;
29
+ var _useState = (0, _react.useState)(),
30
+ _useState2 = _slicedToArray(_useState, 2),
31
+ imageData = _useState2[0],
32
+ setImageData = _useState2[1];
33
+ var _useState3 = (0, _react.useState)(false),
34
+ _useState4 = _slicedToArray(_useState3, 2),
35
+ showZoom = _useState4[0],
36
+ setShowZoom = _useState4[1];
37
+ var _useState5 = (0, _react.useState)({
38
+ x: 0,
39
+ y: 0
40
+ }),
41
+ _useState6 = _slicedToArray(_useState5, 2),
42
+ zoomPos = _useState6[0],
43
+ setZoomPos = _useState6[1];
44
+ var imgRef = (0, _react.useRef)(null);
45
+
46
+ // Detecta si es móvil (simple)
47
+ var isMobile = typeof window !== 'undefined' && /Mobi|Android/i.test(window.navigator.userAgent);
48
+ (0, _react.useEffect)(function () {
49
+ var image = new Image();
50
+ image.src = src;
51
+ image.onload = function () {
52
+ setImageData({
53
+ width: image.width,
54
+ height: image.height
55
+ });
56
+ };
57
+ }, [src]);
58
+
59
+ // Tamaño del cuadro de zoom sobre la imagen
60
+ var ZOOM_BOX = 200;
61
+
62
+ // Calcula la posición del cuadro de zoom, limitado a la imagen
63
+ var rectX = 0,
64
+ rectY = 0;
65
+ if (imgRef.current) {
66
+ var imgRect = imgRef.current.getBoundingClientRect();
67
+ rectX = Math.max(0, Math.min(zoomPos.x - ZOOM_BOX / 2, imgRect.width - ZOOM_BOX));
68
+ rectY = Math.max(0, Math.min(zoomPos.y - ZOOM_BOX / 2, imgRect.height - ZOOM_BOX));
69
+ }
70
+ var handleMouseEnter = function handleMouseEnter() {
71
+ return setShowZoom(true);
72
+ };
73
+ var handleMouseMove = function handleMouseMove(e) {
74
+ if (!imgRef.current) return;
75
+ var rect = imgRef.current.getBoundingClientRect();
76
+ var x = e.clientX - rect.left;
77
+ var y = e.clientY - rect.top;
78
+ setZoomPos({
79
+ x: x,
80
+ y: y
81
+ });
82
+ };
83
+ var handleMouseLeave = function handleMouseLeave() {
84
+ return setShowZoom(false);
85
+ };
86
+ return /*#__PURE__*/_react["default"].createElement("div", {
87
+ style: {
88
+ display: 'inline-block',
89
+ position: 'relative'
90
+ }
91
+ }, imageData ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("img", {
92
+ ref: imgRef,
93
+ src: src,
94
+ className: bordered ? 'bordered' : '',
95
+ alt: alt,
96
+ width: width,
97
+ height: height,
98
+ style: {
99
+ display: 'block',
100
+ cursor: !isMobile ? 'zoom-in' : undefined
101
+ },
102
+ onMouseEnter: !isMobile ? handleMouseEnter : undefined,
103
+ onMouseMove: !isMobile ? handleMouseMove : undefined,
104
+ onMouseLeave: !isMobile ? handleMouseLeave : undefined,
105
+ draggable: false
106
+ }), !isMobile && showZoom && /*#__PURE__*/_react["default"].createElement("div", {
107
+ style: {
108
+ position: 'absolute',
109
+ left: rectX,
110
+ top: rectY,
111
+ width: ZOOM_BOX,
112
+ height: ZOOM_BOX,
113
+ background: 'rgba(0,0,0,0.18)',
114
+ border: '2px solid #2196f3',
115
+ pointerEvents: 'none',
116
+ zIndex: 10
117
+ }
118
+ }), !isMobile && showZoom && /*#__PURE__*/_react["default"].createElement("div", {
119
+ style: {
120
+ position: 'absolute',
121
+ top: 0,
122
+ // left: zoomPos,
123
+ left: "calc(100% + 15px)",
124
+ // left: `calc(50% + ${zoomPos} + 16px)`,
125
+ width: ZOOM_BOX * zoom,
126
+ height: ZOOM_BOX * zoom,
127
+ border: '1px solid #ccc',
128
+ background: '#fff',
129
+ overflow: 'hidden',
130
+ zIndex: 1000,
131
+ boxShadow: '0 4px 16px rgba(0,0,0,0.12)',
132
+ pointerEvents: 'none'
133
+ }
134
+ }, /*#__PURE__*/_react["default"].createElement("img", {
135
+ src: src,
136
+ alt: alt,
137
+ style: {
138
+ position: 'absolute',
139
+ left: -rectX * zoom,
140
+ top: -rectY * zoom,
141
+ width: imgRef.current ? imgRef.current.width * zoom : undefined,
142
+ height: imgRef.current ? imgRef.current.height * zoom : undefined,
143
+ userSelect: 'none',
144
+ pointerEvents: 'none'
145
+ },
146
+ draggable: false
147
+ }))) : /*#__PURE__*/_react["default"].createElement(_util.Skeleton, {
148
+ width: width,
149
+ height: height
150
+ }));
151
+ };
152
+ Picture.propTypes = {
153
+ src: _propTypes["default"].string.isRequired,
154
+ alt: _propTypes["default"].string,
155
+ width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
156
+ height: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
157
+ bordered: _propTypes["default"].bool,
158
+ zoom: _propTypes["default"].number
159
+ };