feeles-ide
Version:
The hackable and serializable IDE to make learning material
207 lines (179 loc) • 6.65 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _core = require("@material-ui/core");
var _styles = require("@material-ui/core/styles");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _typestyle = require("typestyle");
var _red = _interopRequireDefault(require("@material-ui/core/colors/red"));
var _Restore = _interopRequireDefault(require("@material-ui/icons/Restore"));
var _dec, _class, _class2, _temp;
var cn = {
dialogRoot: (0, _typestyle.style)({
position: 'absolute',
top: 0,
left: 0,
width: '100%',
zIndex: 1001
}),
error: (0, _typestyle.style)({
margin: 16,
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
borderStyle: 'double',
borderColor: _red.default['500'],
backgroundColor: _red.default['50'],
overflow: 'hidden'
}),
heading: (0, _typestyle.style)({
color: 'rgba(255, 0, 0, .5)'
}),
close: (0, _typestyle.style)({
alignSelf: 'flex-end'
}),
blank: (0, _typestyle.style)({
flex: '0 0 1rem'
}),
messageText: (0, _typestyle.style)({
margin: 8,
color: _red.default['500'],
fontFamily: 'Consolas, "Liberation Mono", Menlo, Courier, monospace'
})
};
var getCn = function getCn(props, state) {
return {
root: (0, _typestyle.style)({
borderTopWidth: 3,
borderTopStyle: state.show ? 'double' : 'none',
borderTopColor: props.theme.palette.primary.main
}),
message: (0, _typestyle.style)({
position: 'relative',
maxHeight: props.error ? state.expanded ? 1000 : 48 : 0,
width: '100%',
boxSizing: 'border-box',
paddingLeft: 8,
overflow: 'scroll',
cursor: 'pointer'
})
};
};
var ErrorPane = (_dec = (0, _styles.withTheme)(), _dec(_class = (_temp = _class2 =
/*#__PURE__*/
function (_PureComponent) {
(0, _inherits2.default)(ErrorPane, _PureComponent);
function ErrorPane() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, ErrorPane);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(ErrorPane)).call.apply(_getPrototypeOf2, [this].concat(args)));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "state", {
show: false,
expanded: false
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleClose", function () {
_this.setState({
show: false
});
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleRestore", function () {
_this.setState({
show: false
}, function () {
_this.props.onRestore();
});
});
return _this;
}
(0, _createClass2.default)(ErrorPane, [{
key: "componentDidUpdate",
value: function componentDidUpdate(prevProps) {
if (prevProps.error !== this.props.error) {
this.setState({
show: !!this.props.error
});
}
}
}, {
key: "renderAsDialog",
value: function renderAsDialog() {
var _this$props = this.props,
localization = _this$props.localization,
canRestore = _this$props.canRestore;
return _react.default.createElement("div", {
className: cn.dialogRoot
}, _react.default.createElement(_core.Paper, {
key: "error",
elevation: 2,
className: cn.error
}, _react.default.createElement(_core.Button, {
variant: "text",
color: "primary",
className: cn.close,
onClick: this.handleClose
}, localization.common.close), _react.default.createElement("h2", {
className: cn.heading
}, localization.editorCard.error), _react.default.createElement("div", {
className: cn.blank
}), _react.default.createElement(_core.Button, {
variant: "contained",
color: "primary",
onClick: this.handleRestore,
disabled: !canRestore
}, _react.default.createElement(_Restore.default, null), localization.editorCard.restore), _react.default.createElement("div", {
className: cn.blank
})));
}
}, {
key: "renderAsDock",
value: function renderAsDock(className) {
var _this2 = this;
var expanded = this.state.expanded;
return _react.default.createElement("div", {
className: className,
onClick: function onClick() {
return _this2.setState({
expanded: !expanded
});
}
}, _react.default.createElement("pre", {
className: cn.messageText
}, this.props.error && this.props.error.message));
}
}, {
key: "render",
value: function render() {
var dcn = getCn(this.props, this.state);
var show = this.state.show;
return _react.default.createElement("div", {
className: dcn.root
}, this.renderAsDock(dcn.message), _react.default.createElement(_core.Zoom, {
in: show
}, this.renderAsDialog()));
}
}]);
return ErrorPane;
}(_react.PureComponent), (0, _defineProperty2.default)(_class2, "propTypes", {
theme: _propTypes.default.object.isRequired,
error: _propTypes.default.object,
localization: _propTypes.default.object.isRequired,
onRestore: _propTypes.default.func.isRequired,
canRestore: _propTypes.default.bool.isRequired
}), _temp)) || _class);
exports.default = ErrorPane;