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 / ContextMenu / ContextMenu.utils.js
Size: Mime:
var _modeToOptions;
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 _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 { CONTEXTMENU_MODES } from '@filerobot/utils/lib/constants';
import CommonOptions from './CommonOptions';
import FileOptions from './FileOptions';
import FolderOptions from './FolderOptions';
import { useSelector } from 'react-redux';
import { selectIsProductView } from '../../slices/views.slice';
import ShareOptions from './ShareOptions';
import { BeforeUploadFileOptions } from './FileOptions/DefaultModeOptions';
export var getAccurateElementCoordinates = function getAccurateElementCoordinates(rootElement, event) {
  var clientX = event.clientX,
    clientY = event.clientY;
  var _rootElement$querySel = rootElement.querySelector('.filerobot-Explorer-inner').getBoundingClientRect(),
    x = _rootElement$querySel.x,
    y = _rootElement$querySel.y;
  var yDim = clientY - y;
  var xDim = clientX - x;
  return [xDim, yDim];
};
export var modeToOptions = (_modeToOptions = {}, _defineProperty(_modeToOptions, CONTEXTMENU_MODES.FILE, function () {
  return FileOptions(false, false);
}), _defineProperty(_modeToOptions, CONTEXTMENU_MODES.SHAREBOX, function () {
  return FileOptions(true, false);
}), _defineProperty(_modeToOptions, CONTEXTMENU_MODES.SHARE, ShareOptions), _defineProperty(_modeToOptions, CONTEXTMENU_MODES.PRODUCT, function () {
  return FileOptions(false, true);
}), _defineProperty(_modeToOptions, CONTEXTMENU_MODES.FOLDER, FolderOptions), _defineProperty(_modeToOptions, CONTEXTMENU_MODES.COMMON, CommonOptions), _defineProperty(_modeToOptions, CONTEXTMENU_MODES.BEFORE_UPLOAD, BeforeUploadFileOptions), _defineProperty(_modeToOptions, CONTEXTMENU_MODES.AUTO, function (_ref) {
  var _ref$folders = _ref.folders,
    folders = _ref$folders === void 0 ? [] : _ref$folders,
    _ref$files = _ref.files,
    files = _ref$files === void 0 ? [] : _ref$files,
    _ref$isShareboxView = _ref.isShareboxView,
    isShareboxView = _ref$isShareboxView === void 0 ? false : _ref$isShareboxView;
  // auto detect mode, 1 file => file, 1 file from upload => options for before upload,
  // 1 folder => folder, 1 file + 1 folder or +2 file/folders/mix => common, uses sharebox if enabled
  // any file/folder in products view will be considered as products mode.
  // for other modes should be provided manually while opening the context menu
  var foldersCount = folders.length;
  var filesCount = files.length;
  var isProductsView = useSelector(selectIsProductView);
  if (isProductsView) {
    return this[CONTEXTMENU_MODES.PRODUCT]();
  }
  if (foldersCount === 0 && filesCount === 1) {
    if (isShareboxView) {
      return this[CONTEXTMENU_MODES.SHAREBOX]();
    }
    return this[CONTEXTMENU_MODES.FILE]();
  }
  if (foldersCount === 1 && filesCount === 0) {
    return this[CONTEXTMENU_MODES.FOLDER]();
  }
  if (foldersCount > 0 || filesCount > 0) {
    return this[CONTEXTMENU_MODES.COMMON]();
  }
  return this[CONTEXTMENU_MODES.FOLDER](); // if no items (folders/files) selected then show the FolderOptions to show the current folder's options
}), _modeToOptions);