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 _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 ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
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 { memo, useCallback, useEffect, useRef } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import Drawer from '@filerobot/explorer/lib/components/Drawer';
import { useExplorer, useIsSmallScreen } from '../../hooks';
import { selectIsDetailsViewOpened, detailsViewToggled } from '../../slices/panels.slice';
import AssetsList from '../AssetsList';
import Details from '../Details';
import DragImage from '../DnD/DragImage';
import TopSection from '../TopSection';
import AssetsStyled from '../AssetsView/AssetsView.styled';
import FoldersTree from './FoldersTree';
import { selectFilesOffset, selectFilesUuids } from '../../slices/files.slice';
import { fetchSortedFolders, selectIsFoldersTreeOpened, selectFoldersUuids, selectCurrentFolderPath, selectIsFoldersLoading, selectFoldersError, toggleFoldersTree, fetchFolderFiles, openBaseFolder } from '../../slices/folders.slice';
import { selectSortedBy, selectSortOrder } from '../../slices/common.slice';
import Sort from '../common/Sort';
import { FOLDERS_VIEW_SORT_OPTIONS } from '../common/Sort/Sort.constants';
import { selectIsListLayout } from '../../slices/views.slice';
import { selectIsDraggingMultipleItems } from '../../slices/drag.slice';
import ErroredViewPlaceholder from '../Views/ErroredViewPlaceholder';
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
import { Fragment as _Fragment } from "react/jsx-runtime";
var FoldersView = function FoldersView() {
  var dispatch = useDispatch();
  var _useExplorer = useExplorer(),
    opts = _useExplorer.opts,
    i18n = _useExplorer.i18n;
  var isWidgetSmallSize = useIsSmallScreen();
  var isDetailsViewOpened = useSelector(selectIsDetailsViewOpened);
  var isFoldersTreeOpened = useSelector(selectIsFoldersTreeOpened);
  var foldersUuids = useSelector(selectFoldersUuids);
  var filesUuids = useSelector(selectFilesUuids);
  var isLoading = useSelector(selectIsFoldersLoading);
  var sortBy = useSelector(selectSortedBy);
  var sortOrder = useSelector(selectSortOrder);
  var currentFolderPath = useSelector(selectCurrentFolderPath);
  var filesOffset = useSelector(selectFilesOffset);
  var isListLayout = useSelector(selectIsListLayout);
  var error = useSelector(selectFoldersError);
  var isDraggingMultipleItems = useSelector(selectIsDraggingMultipleItems);
  var offsetRef = useRef();
  var floaty = opts.floaty,
    hideHeaderBar = opts.hideHeaderBar,
    showBar = opts.showBar,
    noItemsBrowser = opts.noItemsBrowser;
  useEffect(function () {
    offsetRef.current = filesOffset;
  }, [filesOffset]);
  var fetchNextFiles = useCallback(function () {
    dispatch(fetchFolderFiles({
      offset: offsetRef.current,
      withStats: false
    }));
  }, []);
  var fetchNextFolders = function fetchNextFolders() {
    dispatch(fetchSortedFolders({
      path: currentFolderPath,
      replaceOldFolders: false,
      skipPendingDispatch: true,
      withStats: false
    }));
  };
  var openRootFolder = function openRootFolder() {
    // As already folders tree is fetch no need to re-fetch it again.
    dispatch(openBaseFolder({
      dontFetchFoldersTree: true
    }));
  };
  var applyLeftSideNavigation = function applyLeftSideNavigation(child, closeFunc) {
    return /*#__PURE__*/_jsx(Drawer, {
      direction: "e",
      position: "left",
      closeFn: closeFunc,
      showCloseIcon: !isLoading,
      children: child
    });
  };
  var applyRightSideNavigation = function applyRightSideNavigation(child, closeFunc) {
    return /*#__PURE__*/_jsx(Drawer, {
      direction: "w",
      position: "right",
      closeFn: closeFunc,
      style: {
        overflow: floaty ? 'inherit' : undefined
      },
      showCloseIcon: !floaty || isDetailsViewOpened,
      children: child
    });
  };
  var renderLeftSideNavigation = function renderLeftSideNavigation(showSideTree) {
    return showSideTree && applyLeftSideNavigation( /*#__PURE__*/_jsx(FoldersTree, {}), function () {
      return dispatch(toggleFoldersTree());
    });
  };
  var renderRightSideNavigation = function renderRightSideNavigation() {
    return isDetailsViewOpened && applyRightSideNavigation( /*#__PURE__*/_jsx(Details, {}), function () {
      return dispatch(detailsViewToggled());
    });
  };
  var handleChangeSort = function handleChangeSort(sortedBy, order) {
    dispatch(fetchSortedFolders({
      path: currentFolderPath,
      sortBy: sortedBy,
      sortOrder: order,
      updateGlobalSorting: true,
      fetchFiles: true,
      withStats: false,
      skipPendingDispatch: false
    }));
  };
  var sortProps = {
    options: FOLDERS_VIEW_SORT_OPTIONS,
    sortBy: sortBy,
    sortOrder: sortOrder,
    disabled: isLoading
  };
  var SortElement = /*#__PURE__*/_jsx(Sort, _objectSpread({
    onChange: handleChangeSort
  }, sortProps));
  var renderTopSection = function renderTopSection(hideTopSection) {
    return /*#__PURE__*/_jsx(TopSection, {
      showTopBar: showBar && !noItemsBrowser,
      showHeaderBar: !hideHeaderBar,
      SortElement: SortElement,
      hideTopSection: hideTopSection
    });
  };
  return /*#__PURE__*/_jsxs(_Fragment, {
    children: [renderTopSection(!isWidgetSmallSize), /*#__PURE__*/_jsxs(AssetsStyled.BrowserBody, {
      isListLayout: isListLayout,
      className: "filerobot-ProviderBrowser-body",
      children: [isDraggingMultipleItems && /*#__PURE__*/_jsx(DragImage, {}), renderLeftSideNavigation(isFoldersTreeOpened), /*#__PURE__*/_jsxs("div", {
        className: "filerobot-ProviderBrowser-mainContent",
        children: [renderTopSection(isWidgetSmallSize), !isLoading && error ? /*#__PURE__*/_jsx(ErroredViewPlaceholder, {
          title: (error === null || error === void 0 ? void 0 : error.message) || error,
          description: error === null || error === void 0 ? void 0 : error.details,
          backTo: openRootFolder,
          backToLabel: i18n('foldersViewGoToRootLabel')
        }) : /*#__PURE__*/_jsx(AssetsList, {
          foldersUuids: foldersUuids,
          filesUuids: filesUuids,
          fetchNextFiles: fetchNextFiles,
          fetchNextFolders: fetchNextFolders,
          isFoldersLoading: isLoading,
          sortProps: sortProps
        })]
      }), renderRightSideNavigation()]
    })]
  });
};
export default /*#__PURE__*/memo(FoldersView);