UNPKG

@braineet/ui

Version:

Braineet design system

114 lines (110 loc) 4.58 kB
"use strict"; exports.__esModule = true; exports.UploadList = void 0; var _react = _interopRequireDefault(require("react")); var _reactSpring = require("react-spring"); var _ModalMediaViewer = _interopRequireDefault(require("../../modal-media-viewer/ModalMediaViewer")); var _useUploadState = require("../useUploadState"); var _useUploadStore = require("../useUploadStore"); var _styles = require("./styles"); var _UploadItem = require("./UploadItem"); var _jsxRuntime = require("react/jsx-runtime"); var _excluded = ["items"]; /* eslint-disable react/no-array-index-key */ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _objectDestructuringEmpty(t) { if (null == t) throw new TypeError("Cannot destructure " + t); } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } var UploadList = exports.UploadList = function UploadList(_ref) { var state = _ref.state, uploadItemStatus = _ref.uploadItemStatus, transformItem = _ref.transformItem, texts = _ref.texts; var store = (0, _useUploadStore.useUploadStore)(state); var items = store.items, internalStore = _objectWithoutPropertiesLoose(store, _excluded); var localItems = _react.default.useMemo(function () { if (!transformItem) return items; return items.map(transformItem); }, [items, transformItem]); var _React$useState = _react.default.useState(null), mediaViewed = _React$useState[0], setMediaViewed = _React$useState[1]; /** handles */ var handleOpenModalViewer = _react.default.useCallback(function (media) { setMediaViewed(media); }, []); var handleCloseModalViewer = _react.default.useCallback(function () { setMediaViewed(null); }, []); /** constants */ var enterStyles = function enterStyles(item) { var _item$maxHeight, _item$maxHeight2, _item$maxHeight3; var hasError = (item == null ? void 0 : item.status) === _useUploadState.UPLOAD_ITEM_STATUS.ERROR && (item == null ? void 0 : item.errorText); var itemMaxHeightByStatus = { default: (item == null || (_item$maxHeight = item.maxHeight) == null ? void 0 : _item$maxHeight.default) || 40, uploading: (item == null || (_item$maxHeight2 = item.maxHeight) == null ? void 0 : _item$maxHeight2.uploading) || 40, error: (item == null || (_item$maxHeight3 = item.maxHeight) == null ? void 0 : _item$maxHeight3.error) || 40 }; return { maxHeight: (itemMaxHeightByStatus[item.status] || itemMaxHeightByStatus.default) + (hasError ? 18 : 0), opacity: 1, paddingBottom: 4, overflow: 'hidden' }; }; var leaveStyles = function leaveStyles() { return { maxHeight: 0, opacity: 0, paddingBottom: 0, overflow: 'hidden' }; }; var transitions = (0, _reactSpring.useTransition)(localItems, function (d) { return d == null ? void 0 : d.uid; }, { initial: enterStyles, from: leaveStyles, leave: leaveStyles, enter: enterStyles, update: enterStyles, config: function config(_, s) { switch (s) { case 'leave': return { tension: 300 }; default: return { tension: 170 }; } } }); return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_styles.UploadListContainer, { as: "ul", children: transitions.map(function (_ref2) { var item = _ref2.item, rest = _extends({}, (_objectDestructuringEmpty(_ref2.props), _ref2.props)), s = _ref2.state; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_UploadItem.UploadItem, _extends({ item: item, state: s, uploadItemStatus: uploadItemStatus, style: _extends({ width: '100%', boxSizing: 'content-box' }, rest) }, internalStore, { onPreview: handleOpenModalViewer }), item.uid); }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ModalMediaViewer.default, _extends({ isOpen: !!mediaViewed, onClose: handleCloseModalViewer, texts: texts }, mediaViewed))] }); };