1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports["default"] = void 0;
|
7 |
|
8 | var _react = _interopRequireWildcard(require("react"));
|
9 |
|
10 | var _Grid = _interopRequireDefault(require("@material-ui/core/Grid"));
|
11 |
|
12 | var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
|
13 |
|
14 | var _withStyles = _interopRequireDefault(require("@material-ui/core/styles/withStyles"));
|
15 |
|
16 | var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
|
17 |
|
18 | var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
19 |
|
20 | var _Delete = _interopRequireDefault(require("@material-ui/icons/Delete"));
|
21 |
|
22 | var _reactImageLightbox = _interopRequireDefault(require("react-image-lightbox"));
|
23 |
|
24 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
25 |
|
26 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
27 |
|
28 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } }
|
29 |
|
30 | function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
31 |
|
32 | function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
|
33 |
|
34 | function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
|
35 |
|
36 | function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
37 |
|
38 | function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
39 |
|
40 | function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
41 |
|
42 | function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
43 |
|
44 | var PicturesJSX = function PicturesJSX(_ref) {
|
45 | var css = _ref.classes,
|
46 | _ref$moreLabel = _ref.moreLabel,
|
47 | moreLabel = _ref$moreLabel === void 0 ? 'more' : _ref$moreLabel,
|
48 | shortLabel = _ref.shortLabel,
|
49 | _ref$pictures = _ref.pictures,
|
50 | pictures = _ref$pictures === void 0 ? [] : _ref$pictures,
|
51 | limit = _ref.limit,
|
52 | deletable = _ref.deletable,
|
53 | handleDelete = _ref.handleDelete,
|
54 | spaced = _ref.spaced,
|
55 | _ref$justify = _ref.justify,
|
56 | justify = _ref$justify === void 0 ? 'flex-start' : _ref$justify,
|
57 | _ref$maxImagesInARow = _ref.maxImagesInARow,
|
58 | maxImagesInARow = _ref$maxImagesInARow === void 0 ? 3 : _ref$maxImagesInARow,
|
59 | _ref$contrast = _ref.contrast,
|
60 | contrast = _ref$contrast === void 0 ? 'dark' : _ref$contrast,
|
61 | rest = _objectWithoutProperties(_ref, ["classes", "moreLabel", "shortLabel", "pictures", "limit", "deletable", "handleDelete", "spaced", "justify", "maxImagesInARow", "contrast"]);
|
62 |
|
63 | var _useState = (0, _react.useState)(false),
|
64 | _useState2 = _slicedToArray(_useState, 2),
|
65 | isOpen = _useState2[0],
|
66 | setIsOpen = _useState2[1];
|
67 |
|
68 | var _useState3 = (0, _react.useState)(0),
|
69 | _useState4 = _slicedToArray(_useState3, 2),
|
70 | index = _useState4[0],
|
71 | setIndex = _useState4[1];
|
72 |
|
73 | var thumbnails = limit && limit > 0 ? pictures.slice(0, limit) : pictures;
|
74 | return _react["default"].createElement(_Grid["default"], _extends({
|
75 | container: true,
|
76 | direction: "row",
|
77 | justify: justify,
|
78 | alignItems: "center",
|
79 | spacing: 16
|
80 | }, rest), thumbnails.map(function (_ref2, i) {
|
81 | var name = _ref2.name,
|
82 | src = _ref2.src;
|
83 | return _react["default"].createElement(_Grid["default"], {
|
84 | item: true,
|
85 | key: name,
|
86 | className: css.wrapper,
|
87 | xs: Math.trunc(12 / maxImagesInARow),
|
88 | container: true,
|
89 | justify: "center"
|
90 | }, _react["default"].createElement("div", {
|
91 | className: deletable ? css["infoWrapper_".concat(contrast)] : css.silentWrapper
|
92 | }, _react["default"].createElement("a", {
|
93 | href: src,
|
94 | onClick: function onClick(e) {
|
95 | e.preventDefault();
|
96 | setIndex(i);
|
97 | setIsOpen(true);
|
98 | },
|
99 | className: deletable ? css.imageContainerDeletable : css.imageContainer
|
100 | }, _react["default"].createElement("img", _extends({
|
101 | src: src
|
102 | }, {
|
103 | alt: name,
|
104 | className: css.picture
|
105 | })), thumbnails.length - 1 === i && pictures.length > i + 1 && _react["default"].createElement("div", {
|
106 | className: css.overlay
|
107 | }, shortLabel ? "+ ".concat(pictures.length - thumbnails.length) : "".concat(pictures.length - thumbnails.length, " ").concat(moreLabel)))), deletable && _react["default"].createElement(_Typography["default"], {
|
108 | variant: "body1",
|
109 | component: "div",
|
110 | className: css["infoZone_".concat(contrast)]
|
111 | }, i + 1, "/", thumbnails.length, _react["default"].createElement(_IconButton["default"], {
|
112 | className: css["noPaddingButton_".concat(contrast)],
|
113 | onClick: function onClick() {
|
114 | return handleDelete && handleDelete(i);
|
115 | }
|
116 | }, _react["default"].createElement(_Delete["default"], {
|
117 | fontSize: "small"
|
118 | }))));
|
119 | }), isOpen && _react["default"].createElement(_reactImageLightbox["default"], {
|
120 | imageTitle: pictures[index].name,
|
121 | imageCaption: pictures[index].caption,
|
122 | mainSrc: pictures[index].src,
|
123 | nextSrc: pictures[(index + 1) % pictures.length].src,
|
124 | prevSrc: pictures[(index + pictures.length - 1) % pictures.length].src,
|
125 | onMoveNextRequest: function onMoveNextRequest() {
|
126 | return setIndex((index + 1) % pictures.length);
|
127 | },
|
128 | onMovePrevRequest: function onMovePrevRequest() {
|
129 | return setIndex((index + pictures.length - 1) % pictures.length);
|
130 | },
|
131 | onCloseRequest: function onCloseRequest() {
|
132 | return setIsOpen(false);
|
133 | },
|
134 | toolbarButtons: [deletable && handleDelete && _react["default"].createElement(_Button["default"], {
|
135 | onClick: function onClick() {
|
136 | setIsOpen(false);
|
137 | handleDelete(index);
|
138 | },
|
139 | style: {
|
140 | color: '#fff',
|
141 | opacity: 0.7
|
142 | }
|
143 | }, _react["default"].createElement(_Delete["default"], null))],
|
144 | animationOnKeyInput: true,
|
145 | reactModalStyle: {
|
146 | overlay: {
|
147 | zIndex: 1200
|
148 | }
|
149 | }
|
150 | }));
|
151 | };
|
152 |
|
153 | PicturesJSX.propTypes = {
|
154 | classes: _propTypes["default"].object.isRequired,
|
155 | moreLabel: _propTypes["default"].string,
|
156 | shortLabel: _propTypes["default"].bool,
|
157 | pictures: _propTypes["default"].arrayOf(_propTypes["default"].object.isRequired).isRequired,
|
158 | limit: _propTypes["default"].number,
|
159 | deletable: _propTypes["default"].bool,
|
160 | handleDelete: _propTypes["default"].func,
|
161 | spaced: _propTypes["default"].bool,
|
162 | justify: _propTypes["default"].string,
|
163 | centered: _propTypes["default"].bool,
|
164 | maxImagesInARow: _propTypes["default"].number,
|
165 | contrast: _propTypes["default"].oneOf(["dark", "light"])
|
166 | };
|
167 | var Pictures = (0, _withStyles["default"])(function (theme) {
|
168 | return {
|
169 | picture: {
|
170 | height: '100%',
|
171 | display: 'block'
|
172 | },
|
173 | wrapper: {
|
174 | position: 'relative',
|
175 | display: 'flex',
|
176 | '&:before': {
|
177 | content: "''",
|
178 | paddingTop: '100%'
|
179 | }
|
180 | },
|
181 | overlay: {
|
182 | backgroundColor: '#6667',
|
183 | width: '100%',
|
184 | height: '100%',
|
185 | position: 'absolute',
|
186 | display: 'flex',
|
187 | justifyContent: 'center',
|
188 | alignItems: 'center',
|
189 | color: '#fff'
|
190 | },
|
191 | imageContainer: {
|
192 | width: 'calc(100% - 16px)',
|
193 | height: 'calc(100% - 16px)',
|
194 | position: 'absolute',
|
195 | overflow: 'hidden',
|
196 | display: 'flex',
|
197 | justifyContent: 'center',
|
198 | alignItems: 'center'
|
199 | },
|
200 | imageContainerDeletable: {
|
201 | extend: 'imageContainer',
|
202 | width: 'calc(100% - 20px)',
|
203 | height: 'calc(100% - 20px)',
|
204 | borderRadius: 3
|
205 | },
|
206 | infoWrapper: {
|
207 | position: 'relative',
|
208 | width: '100%',
|
209 | display: 'flex',
|
210 | flexDirection: 'column',
|
211 | justifyContent: 'center',
|
212 | alignItems: 'center',
|
213 | borderTopRightRadius: 8,
|
214 | borderTopLeftRadius: 8
|
215 | },
|
216 | infoWrapper_dark: {
|
217 | extend: 'infoWrapper',
|
218 | background: theme.palette.secondary.dark
|
219 | },
|
220 | infoWrapper_light: {
|
221 | extend: 'infoWrapper',
|
222 | background: 'transparent'
|
223 | },
|
224 | silentWrapper: {
|
225 | width: '100%'
|
226 | },
|
227 | infoZone: {
|
228 | position: 'relative',
|
229 | top: -5,
|
230 | borderBottomRightRadius: 8,
|
231 | borderBottomLeftRadius: 8,
|
232 | padding: '0 10px 10px 10px',
|
233 | width: '100%',
|
234 | display: 'flex',
|
235 | flexDirection: 'row',
|
236 | justifyContent: 'space-between',
|
237 | alignItems: 'center'
|
238 | },
|
239 | infoZone_dark: {
|
240 | extend: 'infoZone',
|
241 | background: theme.palette.secondary.dark,
|
242 | color: 'white'
|
243 | },
|
244 | infoZone_light: {
|
245 | extend: 'infoZone',
|
246 | background: 'transparent',
|
247 | color: theme.palette.secondary.dark
|
248 | },
|
249 | noPaddingButton_dark: {
|
250 | padding: 0,
|
251 | color: 'white'
|
252 | },
|
253 | noPaddingButton_light: {
|
254 | padding: 0,
|
255 | color: theme.palette.secondary.dark
|
256 | }
|
257 | };
|
258 | })(PicturesJSX);
|
259 | var _default = Pictures;
|
260 | exports["default"] = _default; |
\ | No newline at end of file |