Repository URL to install this package:
|
Version:
3.12.20 ▾
|
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);