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    
Size: Mime:
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;