UNPKG

@metacell/geppetto-meta-ui

Version:

React components from geppetto-meta to create neuroscience applications and visualize data.

160 lines 7.37 kB
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 _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } import React, { Component, Fragment } from 'react'; import { PropTypes } from 'prop-types'; import Backdrop from '@mui/material/Backdrop'; import CircularProgress from '@mui/material/CircularProgress'; import LinearProgress from '@mui/material/LinearProgress'; import Typography from '@mui/material/Typography'; import Grid from '@mui/material/Grid'; var styles = { backdrop: function backdrop(theme) { return { zIndex: theme.zIndex.drawer + 1 }; } }; var Loader = /*#__PURE__*/function (_Component) { function Loader(props) { var _this; _classCallCheck(this, Loader); _this = _callSuper(this, Loader, [props]); _this.state = { messageIndex: 0 }; return _this; } _inherits(Loader, _Component); return _createClass(Loader, [{ key: "render", value: function render() { var _this2 = this; var _this$props = this.props, active = _this$props.active, fullscreen = _this$props.fullscreen, handleClose = _this$props.handleClose, messages = _this$props.messages, elapsed = _this$props.elapsed, backgroundStyle = _this$props.backgroundStyle, children = _this$props.children, className = _this$props.className, messagesInterval = _this$props.messagesInterval; if (messagesInterval && messages.length) { setTimeout(function () { var messageIndex = _this2.state.messageIndex; var _this2$props = _this2.props, messages = _this2$props.messages, active = _this2$props.active; if (messages.length && active) { _this2.setState({ messageIndex: (messageIndex + 1) % messages.length }); } }, messagesInterval); } var message = messages.length > 0 ? messages[this.state.messageIndex % messages.length] : ''; var progress = elapsed ? /*#__PURE__*/React.createElement(LinearProgress, { variant: "determinate", value: elapsed * 100, style: { width: '200px' } }) : /*#__PURE__*/React.createElement(CircularProgress, { color: "inherit" }); var content = children ? children : /*#__PURE__*/React.createElement(Grid, { container: true, spacing: 1 }, /*#__PURE__*/React.createElement(Grid, { container: true, item: true, spacing: 3, justifyContent: "center" }, /*#__PURE__*/React.createElement(Grid, { item: true }, progress)), /*#__PURE__*/React.createElement(Grid, { container: true, item: true, spacing: 3, justifyContent: "center" }, /*#__PURE__*/React.createElement(Grid, { item: true }, /*#__PURE__*/React.createElement(Typography, { className: className, display: "block", variant: "subtitle1", gutterBottom: true }, message)))); var backdrop = fullscreen ? /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Backdrop, { sx: styles.backdrop, open: active, onClick: handleClose, style: backgroundStyle }, content)) : /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Backdrop, { open: active, onClick: handleClose, style: backgroundStyle, sx: styles.backdrop }, content)); return backdrop; } }]); }(Component); Loader.defaultProps = { active: true, fullscreen: true, messages: [], messagesInterval: 10000, elapsed: null, backgroundStyle: { backgroundColor: 'rgba(255,142,0,0.1)' }, handleClose: function handleClose() {} }; Loader.propTypes = { /** * Flag to show/hide the Loader */ active: PropTypes.bool, /** * Flag to show/hide the Loader in fullscreen */ fullscreen: PropTypes.bool, /** * Function to handle the close of the Loader */ handleClose: PropTypes.func, /** * Array of Custom messages to display */ messages: PropTypes.array, /** * Number of milliseconds between custom messages */ messagesInterval: PropTypes.number, /** * Number of the progress value to show in linear determinate (in percentage) */ elapsed: PropTypes.number, /** * Style to be applied to the Loader background */ backgroundStyle: PropTypes.shape({ /** * Loader's background color. Defaults to rgba(255,142,0,0.1) */ backgroundColor: PropTypes.string }) }; export default Loader;