Repository URL to install this package:
|
Version:
3.12.20 ▾
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
import { useState, useRef, useEffect, Fragment } from 'react';
import { FitScreen, Variants as VariantsIcon } from '@scaleflex/icons';
import { useTheme } from '@scaleflex/ui/theme/hooks';
import { Skeleton } from '@scaleflex/ui/core';
import { PLUGINS_IDS } from '@filerobot/utils/lib/constants';
import { usePlugin } from '@filerobot/core/lib/hooks';
import isUploadableFile from '@filerobot/utils/lib/isUploadableFile';
import isSvg from '@filerobot/utils/lib/isSvg';
import getFileAssetsTokenUrl from '@filerobot/utils/lib/getFileAssetsTokenUrl';
import { selectIsUserAuth } from '@filerobot/core/lib/slices/user.slice';
import { useExplorer } from '../../../hooks';
import Styled from './Body.styled';
import FooterVariants from './Variants';
import ActionButtons from './ActionButtons';
import { useSelector } from 'react-redux';
import { selectIsShareboxView } from '../../../slices/views.slice';
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
var Footer = function Footer(_ref) {
var _mediaQueryList$curre;
var _ref$originalFile = _ref.originalFile,
originalFile = _ref$originalFile === void 0 ? {} : _ref$originalFile,
_ref$previewedFile = _ref.previewedFile,
previewedFile = _ref$previewedFile === void 0 ? {} : _ref$previewedFile,
setDisplayedFileVariant = _ref.setDisplayedFileVariant,
zoomRatio = _ref.zoomRatio,
setZoomRatio = _ref.setZoomRatio,
displayedFileVariant = _ref.displayedFileVariant,
isPdfFile = _ref.isPdfFile,
isPdfPreviewSupported = _ref.isPdfPreviewSupported,
isImageFile = _ref.isImageFile,
isVideoFile = _ref.isVideoFile,
isCommentsTabOpened = _ref.isCommentsTabOpened,
isAudioFileAndSupportsPlayback = _ref.isAudioFileAndSupportsPlayback,
videoEl = _ref.videoEl,
isVideoFileAndSupportsPlayback = _ref.isVideoFileAndSupportsPlayback,
isFileLoading = _ref.isFileLoading,
isMediaLoadingFailed = _ref.isMediaLoadingFailed;
var theme = useTheme();
var _useExplorer = useExplorer(),
isDevEnv = _useExplorer.isDevEnv,
isFastToken = _useExplorer.opts.isFastToken;
var mediaPlayerPlugin = usePlugin(PLUGINS_IDS.MEDIA_PLAYER);
var isShareboxView = useSelector(selectIsShareboxView);
var isUserAuth = useSelector(selectIsUserAuth);
var isPreUpload = isUploadableFile(previewedFile);
var isSvgImage = isSvg(originalFile);
var isVariantsAvailable = !isCommentsTabOpened && !isPreUpload && isUserAuth && !isShareboxView && !isFastToken && !isSvgImage;
var mediaQueryList = useRef(window && window.matchMedia("(max-width: ".concat(theme.breakpoints.values.lg, "px)")));
var _useState = useState((_mediaQueryList$curre = mediaQueryList.current) === null || _mediaQueryList$curre === void 0 ? void 0 : _mediaQueryList$curre.matches),
_useState2 = _slicedToArray(_useState, 2),
isWidgetInSmallSize = _useState2[0],
setIsWidgetInSmallSize = _useState2[1];
var _useState3 = useState(false),
_useState4 = _slicedToArray(_useState3, 2),
isVariantsOpened = _useState4[0],
setIsVariantsOpened = _useState4[1];
var audioUrl = '';
var toggleVariantsVisibility = function toggleVariantsVisibility() {
if (!isVariantsAvailable) {
return;
}
setIsVariantsOpened(function (_isOpened) {
return !_isOpened;
});
};
var handleVideoFullScreenClick = function handleVideoFullScreenClick() {
videoEl.current.requestFullscreen();
};
var toggleIsWidgetInSmallSize = function toggleIsWidgetInSmallSize(e) {
setIsWidgetInSmallSize(e.matches);
};
useEffect(function () {
mediaQueryList.current.addEventListener('change', toggleIsWidgetInSmallSize);
return function () {
mediaQueryList.current.removeEventListener('change', toggleIsWidgetInSmallSize);
};
}, []);
useEffect(function () {
if (isCommentsTabOpened || !isImageFile || isSvgImage) {
setIsVariantsOpened(false);
}
}, [isCommentsTabOpened, isImageFile, isSvgImage]);
useEffect(function () {
return function () {
URL.revokeObjectURL(previewedFile === null || previewedFile === void 0 ? void 0 : previewedFile.data);
};
}, []);
if (isAudioFileAndSupportsPlayback && mediaPlayerPlugin) {
var _previewedFile$info, _previewedFile$remote, _previewedFile$remote2, _previewedFile$url;
audioUrl = ((_previewedFile$info = previewedFile.info) === null || _previewedFile$info === void 0 ? void 0 : _previewedFile$info.preview) || (previewedFile === null || previewedFile === void 0 ? void 0 : previewedFile.preview) || (previewedFile === null || previewedFile === void 0 ? void 0 : (_previewedFile$remote = previewedFile.remote) === null || _previewedFile$remote === void 0 ? void 0 : (_previewedFile$remote2 = _previewedFile$remote.body) === null || _previewedFile$remote2 === void 0 ? void 0 : _previewedFile$remote2.url) || previewedFile.blob || getFileAssetsTokenUrl(previewedFile === null || previewedFile === void 0 ? void 0 : (_previewedFile$url = previewedFile.url) === null || _previewedFile$url === void 0 ? void 0 : _previewedFile$url.cdn, isDevEnv) || '';
return /*#__PURE__*/_jsx(Fragment, {
children: /*#__PURE__*/_jsx(mediaPlayerPlugin.render, {
audioPath: audioUrl
})
}, mediaPlayerPlugin.id);
}
var renderVideoActionButtons = function renderVideoActionButtons() {
return /*#__PURE__*/_jsx(Styled.VideoActions, {
children: /*#__PURE__*/_jsx(Styled.FooterActionBtn, {
size: "lg",
color: "basic",
isVisible: true,
onClick: handleVideoFullScreenClick,
children: /*#__PURE__*/_jsx(FitScreen, {
size: 18
})
})
});
};
if (isVideoFileAndSupportsPlayback && !isMediaLoadingFailed && mediaPlayerPlugin) {
return /*#__PURE__*/_jsx(Fragment, {
children: /*#__PURE__*/_jsx(mediaPlayerPlugin.render, {
type: "video",
videoRef: videoEl,
extraControllers: renderVideoActionButtons
})
}, mediaPlayerPlugin.id);
}
var renderVariants = function renderVariants() {
return isVariantsAvailable && isVariantsOpened && /*#__PURE__*/_jsx(FooterVariants, {
originalFile: originalFile,
previewedFile: previewedFile,
closeVariants: toggleVariantsVisibility,
setDisplayedFileVariant: setDisplayedFileVariant,
displayedFileVariant: displayedFileVariant || previewedFile
});
};
if (isFileLoading) {
return /*#__PURE__*/_jsxs(Styled.Footer, {
$floatRight: isShareboxView,
$isPdfPreview: isPdfPreviewSupported,
$hideBottomBorder: isCommentsTabOpened || isVariantsOpened,
children: [/*#__PURE__*/_jsx(Skeleton, {
width: 140,
height: 24
}), /*#__PURE__*/_jsx(Skeleton, {
width: 140,
height: 24
})]
});
}
return /*#__PURE__*/_jsxs("div", {
"data-expand-height": isVariantsOpened,
children: [!isWidgetInSmallSize && renderVariants(), /*#__PURE__*/_jsxs(Styled.Footer, {
$centered: !isVariantsAvailable,
$isPdfPreview: isPdfPreviewSupported,
$hideBottomBorder: isCommentsTabOpened || isVariantsOpened,
children: [isVariantsAvailable && /*#__PURE__*/_jsx(Styled.VariantsButton, {
color: isVariantsOpened ? 'link-basic-primary' : 'link-secondary',
startIcon: /*#__PURE__*/_jsx(VariantsIcon, {}),
endIcon: /*#__PURE__*/_jsx(Styled.VariantsButtonArrowBottom, {
$isRotated: isVariantsOpened
}),
active: isVariantsOpened,
onClick: toggleVariantsVisibility,
isVisible: isImageFile,
isPdfPreviewSupported: isPdfPreviewSupported,
children: (displayedFileVariant === null || displayedFileVariant === void 0 ? void 0 : displayedFileVariant.name) || previewedFile.name
}), !isCommentsTabOpened && /*#__PURE__*/_jsx(ActionButtons, {
zoomRatio: zoomRatio,
setZoomRatio: setZoomRatio,
isVideoFile: isVideoFile,
isImageOrPdf: isImageFile || isPdfFile
})]
}), isWidgetInSmallSize && renderVariants()]
});
};
export default Footer;