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, useEffect, useMemo, useRef } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import isPdf from '@filerobot/utils/lib/isPdf';
import isVideo from '@filerobot/utils/lib/isVideo';
import isAudio from '@filerobot/utils/lib/isAudio';
import isAudioAndSupportsPlayback from '@filerobot/utils/lib/isAudioAndSupportsPlayback';
import isSupportedVideo from '@filerobot/utils/lib/isSupportedVideo';
import isImage from '@filerobot/utils/lib/isImage';
import { usePluginsType } from '@filerobot/core/lib/hooks';
import { PLUGINS_IDS } from '@filerobot/utils/lib/constants';
import isObjectURL from '@filerobot/utils/lib/isObjectURL';
import isEmptyObject from '@filerobot/utils/lib/isEmptyObject';
import StyledFileWindow from './FileWindow.styled';
import SideColumn from './SideColumn';
import Header from './Header';
import Body from './Body';
import { TABS_IDS } from './tabs/tabs.constants';
import { useExplorer } from '../../hooks';
import { fileWindowUpdated, selectFileWindow, selectFileWindowTabId } from '../../slices/panels.slice';
import { fetchFileByUuid } from '../../slices/files.slice';
import isUploadableFile from '@filerobot/utils/lib/isUploadableFile';
import { selectIsShareboxView } from '../../slices/views.slice';
import { useConfirmationModal } from '../Modals';
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
var FileWindow = function FileWindow(_ref) {
  var originalFile = _ref.originalFile;
  var dispatch = useDispatch();
  var triggerConfirmationModal = useConfirmationModal();
  var _useExplorer = useExplorer(),
    i18n = _useExplorer.i18n,
    _useExplorer$opts = _useExplorer.opts,
    currentUserInfo = _useExplorer$opts.currentUserInfo,
    usersAndTeams = _useExplorer$opts.usersAndTeams;
  var isEditing = useSelector(function (state) {
    return selectFileWindow(state).enableEdit;
  });
  var isMediaPlayerSupported = usePluginsType(PLUGINS_IDS.MEDIA_PLAYER);
  // TODO: pdfjs plugin is not working with new babel configuration so we are temp. commenting this till fixing.
  // const isPdfPreviewSupported = usePluginsType(PLUGINS_IDS.PDF_JS)
  var isPdfPreviewSupported = false;

  // As file window is used for both pre-uploads or new uploads and current files,
  // we need to get files from the right place depending on the ids/uuids

  var activeTabId = useSelector(function (state) {
    return selectFileWindowTabId(state) || TABS_IDS.DETAILS;
  });
  var isShareboxView = useSelector(selectIsShareboxView);

  // Previewed file might be any variant/version of the file, but original file is the original file itself.
  var _useState = useState({}),
    _useState2 = _slicedToArray(_useState, 2),
    previewedFile = _useState2[0],
    setPreviewedFile = _useState2[1];
  var hasUnsavedChangesRef = useRef(false);
  var isPreUpload = isUploadableFile(originalFile);
  var isCommentsTabOpened = activeTabId === TABS_IDS.COMMENTS;
  var members = useMemo(function () {
    return isCommentsTabOpened ? usersAndTeams.filter(function (item) {
      return !item.isTeam;
    }) : [];
  }, [usersAndTeams, isCommentsTabOpened]);
  var annotatingProps = {
    currentUserInfo: currentUserInfo,
    members: members,
    i18n: i18n
  };
  var isPdfFile = isPdf(originalFile);
  var isImageFile = isImage(originalFile);
  var isVideoFile = isVideo(originalFile);
  var isAudioFile = isAudio(originalFile);
  var fileIdOrUuid = originalFile.uuid || originalFile.id;
  var isAudioFileAndSupportsPlayback = isMediaPlayerSupported && isAudioAndSupportsPlayback(originalFile);
  var isVideoFileAndSupportsPlayback = isMediaPlayerSupported && isSupportedVideo(originalFile);
  var isSupportAnnotationFile = isImageFile || isVideoFile;
  var setFileData = function setFileData() {
    var fetchedFilePromise = dispatch(fetchFileByUuid(originalFile.uuid));
    fetchedFilePromise.then(setPreviewedFile);
    return fetchedFilePromise;
  };
  var setActiveTabId = function setActiveTabId(newTabId) {
    dispatch(fileWindowUpdated({
      tabId: newTabId
    }));
  };
  var alertUnsavedChangesFirst = function alertUnsavedChangesFirst(_onConfirm) {
    if (isEditing && hasUnsavedChangesRef.current) {
      triggerConfirmationModal({
        title: i18n('fileWindowDiscardChangesModalTitle'),
        description: i18n('fileWindowDiscardChangesModalDesc', {
          asset_name: originalFile.name
        }),
        onConfirm: function onConfirm() {
          hasUnsavedChangesRef.current = false;
          if (typeof _onConfirm === 'function') {
            _onConfirm();
          }
        }
      });
      return;
    }
    _onConfirm();
  };
  useEffect(function () {
    if (isShareboxView) return;
    var abortFileFetching;
    if ((originalFile === null || originalFile === void 0 ? void 0 : originalFile.uuid) !== (previewedFile === null || previewedFile === void 0 ? void 0 : previewedFile.uuid)) {
      var _setFileData = setFileData(),
        abort = _setFileData.abort;
      abortFileFetching = abort;
    } else if (isPreUpload ||
    // If original file is a blob image, then set it as previewed file.
    isObjectURL(originalFile === null || originalFile === void 0 ? void 0 : originalFile.preview) && (isEmptyObject(previewedFile) || (previewedFile === null || previewedFile === void 0 ? void 0 : previewedFile.id) !== originalFile.id)) {
      setPreviewedFile(originalFile);
    }
    return function () {
      if (abortFileFetching) {
        abortFileFetching();
      }
    };
  }, [fileIdOrUuid]);
  useEffect(function () {
    // If the original file object is updated and the previewed file is the same as the original file, then update it too.

    if (!(previewedFile !== null && previewedFile !== void 0 && previewedFile.uuid) || !(previewedFile !== null && previewedFile !== void 0 && previewedFile.id) || fileIdOrUuid === ((previewedFile === null || previewedFile === void 0 ? void 0 : previewedFile.uuid) || (previewedFile === null || previewedFile === void 0 ? void 0 : previewedFile.id))) {
      setPreviewedFile(originalFile);
    }
  }, [originalFile]);
  if (isShareboxView) {
    return /*#__PURE__*/_jsxs(StyledFileWindow.Wrapper, {
      children: [/*#__PURE__*/_jsx(Header, {
        i18n: i18n,
        isPdfFile: isPdfFile,
        isAudioFile: isAudioFile,
        isVideoFile: isVideoFile,
        originalFile: originalFile,
        previewedFile: previewedFile,
        setPreviewedFile: setPreviewedFile,
        alertUnsavedChangesFirst: alertUnsavedChangesFirst
      }), /*#__PURE__*/_jsx(StyledFileWindow.Content, {
        children: /*#__PURE__*/_jsx(Body, {
          originalFile: originalFile,
          previewedFile: previewedFile,
          setPreviewedFile: setPreviewedFile,
          activeTabId: activeTabId,
          isPdfFile: isPdfFile,
          isAudioFile: isAudioFile,
          isImageFile: isImageFile,
          isVideoFile: isVideoFile,
          annotatingFieldProps: annotatingProps,
          isPdfPreviewSupported: isPdfPreviewSupported,
          isAudioFileAndSupportsPlayback: isAudioFileAndSupportsPlayback,
          isVideoFileAndSupportsPlayback: isVideoFileAndSupportsPlayback,
          setActiveTabId: setActiveTabId,
          isSupportAnnotationFile: isSupportAnnotationFile,
          isCommentsTabOpened: isCommentsTabOpened,
          alertUnsavedChangesFirst: alertUnsavedChangesFirst
        })
      })]
    });
  }
  return /*#__PURE__*/_jsxs(StyledFileWindow.Wrapper, {
    children: [/*#__PURE__*/_jsx(Header, {
      i18n: i18n,
      isPdfFile: isPdfFile,
      isAudioFile: isAudioFile,
      isVideoFile: isVideoFile,
      isImageFile: isImageFile,
      originalFile: originalFile,
      previewedFile: previewedFile,
      setPreviewedFile: setPreviewedFile,
      alertUnsavedChangesFirst: alertUnsavedChangesFirst
    }), /*#__PURE__*/_jsxs(StyledFileWindow.Content, {
      children: [/*#__PURE__*/_jsx(Body, {
        originalFile: originalFile,
        previewedFile: previewedFile,
        setPreviewedFile: setPreviewedFile,
        activeTabId: activeTabId,
        setActiveTabId: setActiveTabId,
        isPdfFile: isPdfFile,
        isAudioFile: isAudioFile,
        isImageFile: isImageFile,
        isVideoFile: isVideoFile,
        isPdfPreviewSupported: isPdfPreviewSupported,
        isAudioFileAndSupportsPlayback: isAudioFileAndSupportsPlayback,
        isVideoFileAndSupportsPlayback: isVideoFileAndSupportsPlayback,
        isSupportAnnotationFile: isSupportAnnotationFile,
        setFileData: setFileData,
        isCommentsTabOpened: isCommentsTabOpened,
        annotatingFieldProps: annotatingProps,
        alertUnsavedChangesFirst: alertUnsavedChangesFirst
      }), /*#__PURE__*/_jsx(SideColumn, {
        originalFile: originalFile,
        previewedFile: previewedFile,
        commentsTabProps: annotatingProps,
        activeTabId: activeTabId,
        isPreUpload: isPreUpload,
        setPreviewedFile: setPreviewedFile,
        setActiveTabId: setActiveTabId,
        alertUnsavedChangesFirst: alertUnsavedChangesFirst,
        hasUnsavedChangesRef: hasUnsavedChangesRef
      })]
    })]
  });
};
export default FileWindow;