Repository URL to install this package:
|
Version:
3.12.20 ▾
|
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); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
import { useEffect, memo } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import classNames from 'classnames';
import { TooltipV2 } from '@scaleflex/ui/core';
import ignoreEvent from '@filerobot/utils/lib/ignoreEvent';
import { selectUploadCapabilities } from '@filerobot/core/lib/slices/uploads.slice';
import { useContextMenu } from '@filerobot/core/lib/hooks';
import { CONTEXTMENU_MODES } from '@filerobot/utils/lib/constants';
import checkConnection from '@filerobot/utils/lib/checkConnection';
import isUploadableFile from '@filerobot/utils/lib/isUploadableFile';
import PreUploadFileThumbnail from './PreUploadFileThumbnail';
import FileInfo from './FileInfo';
import Styled from './FileItem.styled';
import { useExplorer } from '../../hooks';
import { selectCurrentFileByIdOrUuid } from '../../slices/files.slice';
import { fileWindowUpdated } from '../../slices/panels.slice';
import FileUploadTopOptions from './FileUploadTopOptions';
import FileTopOptions from '../AssetsList/GridView/FilesSection/FileTopOptions';
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
var FileItem = function FileItem(_ref) {
var _originalFile$respons, _originalFile$respons2;
var fileIdOrUuid = _ref.fileIdOrUuid,
role = _ref.role,
isUploadsPanel = _ref.isUploadsPanel,
onRemove = _ref.onRemove;
var dispatch = useDispatch();
var toggleContextMenu = useContextMenu();
var originalFile = useSelector(function (state) {
return selectCurrentFileByIdOrUuid(state, fileIdOrUuid);
});
var _useSelector = useSelector(selectUploadCapabilities),
allowResumableUploads = _useSelector.allowResumableUploads,
allowIndividualCancellation = _useSelector.allowIndividualCancellation;
var _useExplorer = useExplorer(),
i18n = _useExplorer.i18n,
handleRequestThumbnail = _useExplorer.handleRequestThumbnail,
handleCancelThumbnail = _useExplorer.handleCancelThumbnail;
useEffect(function () {
if (!(originalFile !== null && originalFile !== void 0 && originalFile.preview)) {
handleRequestThumbnail(originalFile);
}
return function () {
if (!(originalFile !== null && originalFile !== void 0 && originalFile.preview)) {
handleCancelThumbnail(originalFile);
}
};
}, []);
if (!originalFile) {
return;
}
var isOnline = checkConnection();
var uploadedFile = (_originalFile$respons = originalFile.response) === null || _originalFile$respons === void 0 ? void 0 : (_originalFile$respons2 = _originalFile$respons.body) === null || _originalFile$respons2 === void 0 ? void 0 : _originalFile$respons2.file;
var afterOrBeforeUploadFile = uploadedFile ? _objectSpread(_objectSpread({}, uploadedFile), {}, {
idBeforeUpload: originalFile.id
}) : originalFile;
var error = isUploadsPanel && !isOnline;
var triggerContextMenu = function triggerContextMenu(event, file) {
return toggleContextMenu({
event: event,
items: file.idBeforeUpload ? [file.idBeforeUpload] : [],
itemsPropName: 'filesIdsBeforeUpload',
filesUuids: [file.uuid || file.id],
mode: isUploadableFile(afterOrBeforeUploadFile) ? CONTEXTMENU_MODES.BEFORE_UPLOAD : CONTEXTMENU_MODES.FILE
});
};
var renderFileStatusLabel = function renderFileStatusLabel() {
if (error) return i18n('mutualizedUploadError');
return i18n('mutualizedUploadWarning');
};
var openFileWindow = function openFileWindow(event) {
if (event.target.tagName === 'INPUT') return;
dispatch(fileWindowUpdated(afterOrBeforeUploadFile.uuid || afterOrBeforeUploadFile.id));
};
var openContextMenuIfNotUploading = function openContextMenuIfNotUploading(e) {
return !isUploadsPanel ? ignoreEvent(e) : triggerContextMenu(e, afterOrBeforeUploadFile);
};
var explorerItemClass = classNames({
'is-error': !!error,
'is-resumable': allowResumableUploads,
'is-noIndividualCancellation': !allowIndividualCancellation
});
return /*#__PURE__*/_jsxs(Styled.FileItem, {
id: "filerobot_".concat(originalFile.id),
role: role,
className: explorerItemClass,
error: Boolean(error),
onDoubleClick: openFileWindow,
onContextMenu: openContextMenuIfNotUploading,
children: [uploadedFile ? /*#__PURE__*/_jsx(FileTopOptions, {
file: afterOrBeforeUploadFile,
onContextMenu: openContextMenuIfNotUploading,
toggleFileWindow: openFileWindow
}) : /*#__PURE__*/_jsx(FileUploadTopOptions, {
file: originalFile,
openFileWindow: openFileWindow
}), /*#__PURE__*/_jsxs(Styled.UploadInfoBar, {
error: Boolean(error),
children: [renderFileStatusLabel(), /*#__PURE__*/_jsx(TooltipV2, {
title: i18n('mutualizedUnknownErrorMessage'),
children: /*#__PURE__*/_jsx(Styled.InfoIcon, {
size: 12
})
})]
}), /*#__PURE__*/_jsx(Styled.FileItemIconWrapper, {
children: /*#__PURE__*/_jsx(PreUploadFileThumbnail, {
file: originalFile,
error: error,
onContextMenu: openContextMenuIfNotUploading,
isUploadsPanel: isUploadsPanel
})
}), /*#__PURE__*/_jsx(FileInfo, {
file: afterOrBeforeUploadFile,
error: error,
handleContextMenuToggle: openContextMenuIfNotUploading,
renameOnDblClick: true,
showMenuBtn: true,
showMeta: true,
noTruncate: true
})]
});
};
export default /*#__PURE__*/memo(FileItem);