metadata-based-explorer1
Version:
Box UI Elements
221 lines (186 loc) • 10.1 kB
JavaScript
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
/**
*
* @file Content Sidebar Panels component
* @author Box
*/
import * as React from 'react';
import { Redirect, Route, Switch } from 'react-router-dom';
import SidebarUtils from './SidebarUtils';
import { ORIGIN_ACTIVITY_SIDEBAR, ORIGIN_DETAILS_SIDEBAR, ORIGIN_METADATA_SIDEBAR, ORIGIN_SKILLS_SIDEBAR, ORIGIN_VERSIONS_SIDEBAR, SIDEBAR_VIEW_ACTIVITY, SIDEBAR_VIEW_DETAILS, SIDEBAR_VIEW_METADATA, SIDEBAR_VIEW_SKILLS, SIDEBAR_VIEW_VERSIONS } from '../../constants';
// TODO: place into code splitting logic
var BASE_EVENT_NAME = '_JS_LOADING';
var MARK_NAME_JS_LOADING_DETAILS = "".concat(ORIGIN_DETAILS_SIDEBAR).concat(BASE_EVENT_NAME);
var MARK_NAME_JS_LOADING_ACTIVITY = "".concat(ORIGIN_ACTIVITY_SIDEBAR).concat(BASE_EVENT_NAME);
var MARK_NAME_JS_LOADING_SKILLS = "".concat(ORIGIN_SKILLS_SIDEBAR).concat(BASE_EVENT_NAME);
var MARK_NAME_JS_LOADING_METADATA = "".concat(ORIGIN_METADATA_SIDEBAR).concat(BASE_EVENT_NAME);
var MARK_NAME_JS_LOADING_VERSIONS = "".concat(ORIGIN_VERSIONS_SIDEBAR).concat(BASE_EVENT_NAME);
var LoadableDetailsSidebar = SidebarUtils.getAsyncSidebarContent(SIDEBAR_VIEW_DETAILS, MARK_NAME_JS_LOADING_DETAILS);
var LoadableActivitySidebar = SidebarUtils.getAsyncSidebarContent(SIDEBAR_VIEW_ACTIVITY, MARK_NAME_JS_LOADING_ACTIVITY);
var LoadableSkillsSidebar = SidebarUtils.getAsyncSidebarContent(SIDEBAR_VIEW_SKILLS, MARK_NAME_JS_LOADING_SKILLS);
var LoadableMetadataSidebar = SidebarUtils.getAsyncSidebarContent(SIDEBAR_VIEW_METADATA, MARK_NAME_JS_LOADING_METADATA);
var LoadableVersionsSidebar = SidebarUtils.getAsyncSidebarContent(SIDEBAR_VIEW_VERSIONS, MARK_NAME_JS_LOADING_VERSIONS);
var SidebarPanels =
/*#__PURE__*/
function (_React$Component) {
_inherits(SidebarPanels, _React$Component);
function SidebarPanels() {
var _getPrototypeOf2;
var _this;
_classCallCheck(this, SidebarPanels);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(SidebarPanels)).call.apply(_getPrototypeOf2, [this].concat(args)));
_defineProperty(_assertThisInitialized(_this), "activitySidebar", React.createRef());
_defineProperty(_assertThisInitialized(_this), "detailsSidebar", React.createRef());
_defineProperty(_assertThisInitialized(_this), "metadataSidebar", React.createRef());
_defineProperty(_assertThisInitialized(_this), "versionsSidebar", React.createRef());
return _this;
}
_createClass(SidebarPanels, [{
key: "refresh",
/**
* Refreshes the contents of the active sidebar
* @returns {void}
*/
value: function refresh() {
var activitySidebar = this.activitySidebar.current;
var detailsSidebar = this.detailsSidebar.current;
var metadataSidebar = this.metadataSidebar.current;
var versionsSidebar = this.versionsSidebar.current;
if (activitySidebar) {
activitySidebar.refresh();
}
if (detailsSidebar) {
detailsSidebar.refresh();
}
if (metadataSidebar) {
metadataSidebar.refresh();
}
if (versionsSidebar) {
versionsSidebar.refresh();
}
}
}, {
key: "render",
value: function render() {
var _this2 = this;
var _this$props = this.props,
activitySidebarProps = _this$props.activitySidebarProps,
currentUser = _this$props.currentUser,
detailsSidebarProps = _this$props.detailsSidebarProps,
file = _this$props.file,
fileId = _this$props.fileId,
getPreview = _this$props.getPreview,
getViewer = _this$props.getViewer,
hasActivity = _this$props.hasActivity,
hasDetails = _this$props.hasDetails,
hasMetadata = _this$props.hasMetadata,
hasSkills = _this$props.hasSkills,
hasVersions = _this$props.hasVersions,
isOpen = _this$props.isOpen,
metadataSidebarProps = _this$props.metadataSidebarProps,
onVersionChange = _this$props.onVersionChange,
onVersionHistoryClick = _this$props.onVersionHistoryClick,
versionsSidebarProps = _this$props.versionsSidebarProps;
if (!isOpen) {
return null;
}
return React.createElement(Switch, null, hasSkills && React.createElement(Route, {
exact: true,
path: "/".concat(SIDEBAR_VIEW_SKILLS),
render: function render() {
return React.createElement(LoadableSkillsSidebar, {
key: file.id,
file: file,
getPreview: getPreview,
getViewer: getViewer,
startMarkName: MARK_NAME_JS_LOADING_SKILLS
});
}
}), hasActivity && React.createElement(Route, {
exact: true,
path: "/".concat(SIDEBAR_VIEW_ACTIVITY),
render: function render() {
return React.createElement(LoadableActivitySidebar, _extends({
currentUser: currentUser,
file: file,
onVersionHistoryClick: onVersionHistoryClick,
ref: _this2.activitySidebar,
startMarkName: MARK_NAME_JS_LOADING_ACTIVITY
}, activitySidebarProps));
}
}), hasDetails && React.createElement(Route, {
exact: true,
path: "/".concat(SIDEBAR_VIEW_DETAILS),
render: function render() {
return React.createElement(LoadableDetailsSidebar, _extends({
fileId: fileId,
key: fileId,
hasVersions: hasVersions,
onVersionHistoryClick: onVersionHistoryClick,
ref: _this2.detailsSidebar,
startMarkName: MARK_NAME_JS_LOADING_DETAILS
}, detailsSidebarProps));
}
}), hasMetadata && React.createElement(Route, {
exact: true,
path: "/".concat(SIDEBAR_VIEW_METADATA),
render: function render() {
return React.createElement(LoadableMetadataSidebar, _extends({
fileId: fileId,
ref: _this2.metadataSidebar,
startMarkName: MARK_NAME_JS_LOADING_METADATA
}, metadataSidebarProps));
}
}), hasVersions && React.createElement(Route, {
path: "/:sidebar/versions/:versionId?",
render: function render(_ref) {
var match = _ref.match;
return React.createElement(LoadableVersionsSidebar, _extends({
fileId: fileId,
key: fileId,
onVersionChange: onVersionChange,
parentName: match.params.sidebar,
ref: _this2.versionsSidebar,
versionId: match.params.versionId
}, versionsSidebarProps));
}
}), React.createElement(Route, {
render: function render() {
var redirect = '';
if (hasSkills) {
redirect = SIDEBAR_VIEW_SKILLS;
} else if (hasActivity) {
redirect = SIDEBAR_VIEW_ACTIVITY;
} else if (hasDetails) {
redirect = SIDEBAR_VIEW_DETAILS;
} else if (hasMetadata) {
redirect = SIDEBAR_VIEW_METADATA;
}
return React.createElement(Redirect, {
to: {
pathname: "/".concat(redirect),
state: {
silent: true
}
}
});
}
}));
}
}]);
return SidebarPanels;
}(React.Component);
export default SidebarPanels;