Repository URL to install this package:
|
Version:
3.12.18 ▾
|
import { Code, ExternalLink, Link, Languages, Verify } from '@scaleflex/icons';
import getFileLink from '@filerobot/utils/lib/getFileLink';
import copyText from '@filerobot/utils/lib/copyText';
import { isVisibilityPublic } from '@filerobot/utils/lib/visibility';
import isVideo from '@filerobot/utils/lib/isVideo';
import { FILECARD_SHARE_TABS_OBJECTS, PERMISSIONS, PERMISSION_MODELS } from '@filerobot/utils/lib/constants';
import { selectIsUserAuth } from '@filerobot/core/lib/slices/user.slice';
import { useManageAccessModal, useShareFolderModal, useEmbedVideoModal, usePublishModal } from '../Modals';
import { useExplorer } from '../../hooks';
import { useSelector } from 'react-redux';
import { sharePanelOpened } from '../../slices/panels.slice';
import { selectPermissionModel } from '../../slices/common.slice';
import { jsx as _jsx } from "react/jsx-runtime";
var SIZE = 14;
var isMultipleSelection = function isMultipleSelection(_ref) {
var folders = _ref.folders,
files = _ref.files;
return folders.length + files.length > 1;
};
var isFirstFileVisibilityPublic = function isFirstFileVisibilityPublic(files) {
if (files.length === 1) {
var _files$;
var visibility = (_files$ = files[0]) === null || _files$ === void 0 ? void 0 : _files$.visibility;
return isVisibilityPublic(visibility);
}
};
var handleShareViaSharebox = function handleShareViaSharebox(_ref2) {
var foldersUuids = _ref2.foldersUuids,
filesUuids = _ref2.filesUuids,
dispatch = _ref2.dispatch,
triggerShareFolderModal = _ref2.triggerShareFolderModal,
triggerManageAccessModal = _ref2.triggerManageAccessModal;
if (foldersUuids.length === 1 && filesUuids.length === 0) {
triggerShareFolderModal(foldersUuids);
} else if (filesUuids.length > 0 && foldersUuids.length === 0) {
dispatch(sharePanelOpened({
"for": filesUuids
}));
} else {
triggerManageAccessModal({
foldersUuids: foldersUuids,
filesUuids: filesUuids
});
}
};
var isShareBoxHidden = function isShareBoxHidden(_ref3) {
var folders = _ref3.folders,
files = _ref3.files;
return folders.length > 0 && files.length > 0;
};
var hideManageAccessOption = function hideManageAccessOption(_ref4) {
var shareFileSubTabs = _ref4.shareFileSubTabs,
_ref4$folders = _ref4.folders,
folders = _ref4$folders === void 0 ? [] : _ref4$folders,
_ref4$files = _ref4.files,
files = _ref4$files === void 0 ? [] : _ref4$files,
checkUserPermissions = _ref4.checkUserPermissions,
isUserAuth = _ref4.isUserAuth,
enabledManageAccess = _ref4.enabledManageAccess,
permissionModel = _ref4.permissionModel;
return !enabledManageAccess || !isUserAuth || !shareFileSubTabs.includes(FILECARD_SHARE_TABS_OBJECTS.MANAGE_ACCESS.key) || files.length !== 0 && folders.length !== 1 ||
// For now we have ManageAccess only for single folder
permissionModel !== PERMISSION_MODELS.PT_ADVANCED || !checkUserPermissions([folders.length > 0 ? PERMISSIONS.FOLDER_VISIBILITY : '', files.length > 0 ? PERMISSIONS.FILE_VISIBILITY : '']);
};
var hidePublishOption = function hidePublishOption(_ref5) {
var shareFileSubTabs = _ref5.shareFileSubTabs,
_ref5$folders = _ref5.folders,
folders = _ref5$folders === void 0 ? [] : _ref5$folders,
_ref5$files = _ref5.files,
files = _ref5$files === void 0 ? [] : _ref5$files,
checkUserPermissions = _ref5.checkUserPermissions,
isUserAuth = _ref5.isUserAuth,
enablePublishModal = _ref5.enablePublishModal;
return !enablePublishModal || !isUserAuth || !shareFileSubTabs.includes(FILECARD_SHARE_TABS_OBJECTS.PUBLISH.key) || !checkUserPermissions([folders.length > 0 ? PERMISSIONS.FOLDER_VISIBILITY : '', files.length > 0 ? PERMISSIONS.FILE_VISIBILITY : '']);
};
var hideCdnLinkOption = function hideCdnLinkOption(_ref6) {
var folders = _ref6.folders,
files = _ref6.files,
shareFileSubTabs = _ref6.shareFileSubTabs;
return isMultipleSelection({
folders: folders,
files: files
}) || folders.length > 0 || !shareFileSubTabs.includes(FILECARD_SHARE_TABS_OBJECTS.GET_LINK.key) || !isFirstFileVisibilityPublic(files);
};
var hideShareboxOption = function hideShareboxOption(_ref7) {
var shareFileSubTabs = _ref7.shareFileSubTabs,
folders = _ref7.folders,
files = _ref7.files;
return !shareFileSubTabs.includes(FILECARD_SHARE_TABS_OBJECTS.VIA_SHAREBOX.key) || isShareBoxHidden({
folders: folders,
files: files
});
};
var hideEmbedOption = function hideEmbedOption(_ref8) {
var folders = _ref8.folders,
files = _ref8.files,
shareFileSubTabs = _ref8.shareFileSubTabs,
enableEmbed = _ref8.enableEmbed;
return isMultipleSelection({
folders: folders,
files: files
}) || !shareFileSubTabs.includes(FILECARD_SHARE_TABS_OBJECTS.EMBED.key) || !isVideo(files[0]) || !isFirstFileVisibilityPublic(files) || !enableEmbed;
};
var ShareOptions = function ShareOptions() {
var triggerPublishModal = usePublishModal();
var triggerManageAccessModal = useManageAccessModal();
var triggerShareFolderModal = useShareFolderModal();
var triggerEmbedVideoModal = useEmbedVideoModal();
var _useExplorer = useExplorer(),
checkUserPermissions = _useExplorer.checkUserPermissions,
_useExplorer$opts = _useExplorer.opts,
contextMenuSubTabs = _useExplorer$opts.contextMenuSubTabs,
_useExplorer$opts$con = _useExplorer$opts.config,
config = _useExplorer$opts$con === void 0 ? {} : _useExplorer$opts$con,
enabledManageAccess = _useExplorer$opts.enabledManageAccess,
enablePublishModal = _useExplorer$opts.enablePublishModal;
var _ref9 = config.video || {},
enableEmbed = _ref9.enableEmbed;
var shareFileSubTabs = contextMenuSubTabs.fileShare || [];
var isUserAuth = useSelector(selectIsUserAuth);
var permissionModel = useSelector(selectPermissionModel);
return [{
content: 'mutualizedPublishLabel',
prefix: function prefix(_ref10) {
var iconPrimaryColor = _ref10.iconPrimaryColor;
return /*#__PURE__*/_jsx(Languages, {
size: SIZE,
color: iconPrimaryColor
});
},
onClick: function onClick(_ref11) {
var foldersUuids = _ref11.foldersUuids,
filesUuids = _ref11.filesUuids,
folders = _ref11.folders,
files = _ref11.files;
return triggerPublishModal({
foldersUuids: foldersUuids,
filesUuids: filesUuids,
folders: folders,
files: files
});
},
hideOption: function hideOption(_ref12) {
var folders = _ref12.folders,
files = _ref12.files;
return hidePublishOption({
shareFileSubTabs: shareFileSubTabs,
folders: folders,
files: files,
checkUserPermissions: checkUserPermissions,
isUserAuth: isUserAuth,
enablePublishModal: enablePublishModal
});
},
key: FILECARD_SHARE_TABS_OBJECTS.PUBLISH.key
}, {
content: 'mutualizedFileCardManageAccessLabel',
prefix: function prefix(_ref13) {
var iconPrimaryColor = _ref13.iconPrimaryColor;
return /*#__PURE__*/_jsx(Verify, {
size: SIZE,
color: iconPrimaryColor
});
},
onClick: function onClick(_ref14) {
var folders = _ref14.folders,
files = _ref14.files;
return triggerManageAccessModal({
folders: folders,
files: files
});
},
hideOption: function hideOption(_ref15) {
var folders = _ref15.folders,
files = _ref15.files;
return hideManageAccessOption({
shareFileSubTabs: shareFileSubTabs,
folders: folders,
files: files,
checkUserPermissions: checkUserPermissions,
isUserAuth: isUserAuth,
enabledManageAccess: enabledManageAccess,
permissionModel: permissionModel
});
},
key: FILECARD_SHARE_TABS_OBJECTS.MANAGE_ACCESS.key
}, {
content: /*#__PURE__*/_jsx("div", {
className: "filerobot-c-horizontal-separator"
}),
disabled: true,
key: 'SEPARATOR',
hideOption: function hideOption(_ref16) {
var folders = _ref16.folders,
files = _ref16.files,
checkUserPermissions = _ref16.checkUserPermissions;
return hideManageAccessOption({
folders: folders,
files: files,
shareFileSubTabs: shareFileSubTabs,
checkUserPermissions: checkUserPermissions
}) || hidePublishOption({
folders: folders,
files: files,
shareFileSubTabs: shareFileSubTabs,
checkUserPermissions: checkUserPermissions,
isUserAuth: isUserAuth,
enablePublishModal: enablePublishModal
}) || hideCdnLinkOption({
folders: folders,
files: files,
shareFileSubTabs: shareFileSubTabs
}) && hideShareboxOption({
shareFileSubTabs: shareFileSubTabs,
folders: folders,
files: files
}) && hideEmbedOption({
folders: folders,
files: files,
shareFileSubTabs: shareFileSubTabs,
enableEmbed: enableEmbed
});
}
}, {
content: 'mutualizedCDNLinkLabel',
prefix: function prefix(_ref17) {
var iconPrimaryColor = _ref17.iconPrimaryColor;
return /*#__PURE__*/_jsx(Link, {
size: SIZE,
color: iconPrimaryColor
});
},
onClick: function onClick(_ref18) {
var files = _ref18.files,
i18n = _ref18.i18n,
info = _ref18.info;
var fileLink = getFileLink(files[0]);
copyText(fileLink, i18n, info);
},
hideOption: function hideOption(_ref19) {
var folders = _ref19.folders,
files = _ref19.files;
return hideCdnLinkOption({
folders: folders,
files: files,
shareFileSubTabs: shareFileSubTabs
});
},
key: FILECARD_SHARE_TABS_OBJECTS.GET_LINK.key
}, {
content: 'mutualizedShareboxLabel',
prefix: function prefix(_ref20) {
var iconPrimaryColor = _ref20.iconPrimaryColor;
return /*#__PURE__*/_jsx(ExternalLink, {
size: SIZE,
color: iconPrimaryColor
});
},
onClick: function onClick(_ref21) {
var foldersUuids = _ref21.foldersUuids,
filesUuids = _ref21.filesUuids,
dispatch = _ref21.dispatch;
return handleShareViaSharebox({
foldersUuids: foldersUuids,
filesUuids: filesUuids,
dispatch: dispatch,
triggerShareFolderModal: triggerShareFolderModal,
triggerManageAccessModal: triggerManageAccessModal
});
},
hideOption: function hideOption(_ref22) {
var folders = _ref22.folders,
files = _ref22.files;
return hideShareboxOption({
folders: folders,
files: files,
shareFileSubTabs: shareFileSubTabs
});
},
key: FILECARD_SHARE_TABS_OBJECTS.VIA_SHAREBOX.key
}, {
content: 'embedTabLabel',
prefix: function prefix(_ref23) {
var iconPrimaryColor = _ref23.iconPrimaryColor;
return /*#__PURE__*/_jsx(Code, {
size: SIZE,
color: iconPrimaryColor
});
},
onClick: function onClick(_ref24) {
var files = _ref24.files;
return triggerEmbedVideoModal(files[0]);
},
hideOption: function hideOption(_ref25) {
var folders = _ref25.folders,
files = _ref25.files;
return hideEmbedOption({
folders: folders,
files: files,
shareFileSubTabs: shareFileSubTabs,
enableEmbed: enableEmbed
});
},
key: FILECARD_SHARE_TABS_OBJECTS.EMBED.key
}];
};
export default ShareOptions;