Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
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);