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    
@filerobot/explorer / lib / components / FileWindowPanel / Header / BeforeUploadActionBtns.js
Size: Mime:
import { useDispatch, useSelector } from 'react-redux';
import { Remove } from '@scaleflex/icons';
import { useTheme } from '@scaleflex/ui/theme/hooks';
import { PC } from '@filerobot/common';
import { selectCurrentFiles, selectCurrentFilesIdsOrUuids } from '../../../slices/files.slice';
import Styled from './FileWindowHeader.styled';
import { useExplorer, useExplorerInformer } from '../../../hooks';
import { fileWindowUpdated, showAddFilesPanelUpdated } from '../../../slices/panels.slice';
import { useDeleteModal } from '../../Modals';
import { jsx as _jsx } from "react/jsx-runtime";
var BeforeUploadActionButtons = function BeforeUploadActionButtons(_ref) {
  var originalFile = _ref.originalFile;
  var _useExplorer = useExplorer(),
    i18n = _useExplorer.i18n,
    removeUploadFiles = _useExplorer.removeUploadFiles;
  var dispatch = useDispatch();
  var theme = useTheme();
  var triggerDeleteModal = useDeleteModal();
  var info = useExplorerInformer();
  var currentFilesIdsOrUuids = useSelector(selectCurrentFilesIdsOrUuids);
  var currentFiles = useSelector(selectCurrentFiles);
  var fileIdOrUuid = originalFile.uuid || originalFile.id;
  var filesLength = currentFilesIdsOrUuids.length;
  var iconPrimaryColor = theme.palette[PC.IconsPrimary];
  var updateFileWindow = function updateFileWindow(nextFileIdOrUuid) {
    dispatch(fileWindowUpdated(nextFileIdOrUuid));
    if (filesLength === 1) dispatch(showAddFilesPanelUpdated(true));
  };

  /**
   * Navigates to the next item or closes the file window.
   *
   * @param {number} indexOffset - The offset from the current index. Defaults to 0.
  */
  var navigateNextItemOrCloseFileWindow = function navigateNextItemOrCloseFileWindow() {
    var indexOffset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
    var currentIndex = currentFilesIdsOrUuids.indexOf(fileIdOrUuid);
    var nextIndex = (currentIndex + indexOffset + 1) % filesLength;
    var nextFileIdOrUuid = currentFilesIdsOrUuids[nextIndex];
    var nextFile = currentFiles[nextFileIdOrUuid];
    updateFileWindow(nextFile.uuid || nextFile.id);
  };
  var handleDelete = function handleDelete() {
    if (filesLength) {
      navigateNextItemOrCloseFileWindow();
    }
    try {
      removeUploadFiles([fileIdOrUuid], true);
      info(i18n('deleteAssetSuccessToastMessage', {
        name: originalFile.name
      }), 'success');
    } catch (_unused) {
      info(i18n('deleteAssetFailToastMessage', {
        name: originalFile.name
      }), 'error');
    }
  };
  var onClickDelete = function onClickDelete() {
    triggerDeleteModal({
      modalPrimaryButtonColor: 'error-primary',
      title: i18n('mutualizedDeleteAssetLabel'),
      content: i18n('deleteAssetConfirmationMessage', {
        name: originalFile.name
      }),
      onConfirm: handleDelete
    });
  };
  return /*#__PURE__*/_jsx(Styled.HeaderActionBtns, {
    children: /*#__PURE__*/_jsx(Styled.HeaderActionBtn, {
      onClick: onClickDelete,
      size: "lg",
      color: "basic",
      children: /*#__PURE__*/_jsx(Remove, {
        size: 18,
        color: iconPrimaryColor
      })
    })
  });
};
export default BeforeUploadActionButtons;