feeles-ide
Version:
The hackable and serializable IDE to make learning material
215 lines (173 loc) • 7.4 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 _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
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 _styles = require("@material-ui/core/styles");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _typestyle = require("typestyle");
var _reactDnd = require("react-dnd");
var _Paper = _interopRequireDefault(require("@material-ui/core/Paper"));
var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
var _DragHandle = _interopRequireDefault(require("@material-ui/icons/DragHandle"));
var _Settings = _interopRequireDefault(require("@material-ui/icons/Settings"));
var _Filename = _interopRequireDefault(require("./Filename"));
var _FileDialog = require("../../FileDialog/");
var _dragTypes = _interopRequireDefault(require("../../utils/dragTypes"));
var _dec, _class, _class2, _temp;
var cn = {
container: (0, _typestyle.style)({
flex: '1 1 auto',
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center'
})
};
var getCn = function getCn(props) {
return {
root: (0, _typestyle.style)({
marginTop: 4,
marginRight: 8,
transition: props.theme.transitions.create()
}),
card: (0, _typestyle.style)({
boxSizing: 'border-box',
height: 40,
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
paddingLeft: props.theme.spacing.unit * 2,
borderTopRightRadius: props.isSelected ? 0 : 2,
borderBottomRightRadius: props.isSelected ? 0 : 2,
opacity: props.isDragging ? 0.5 : 1,
transition: props.theme.transitions.create()
}),
dragHandle: (0, _typestyle.style)({
flex: '0 0 auto',
cursor: 'move',
width: props.theme.spacing.unit * 3,
height: props.theme.spacing.unit * 3,
marginRight: props.theme.spacing.unit
})
};
};
var FileCard = (_dec = (0, _styles.withTheme)(), _dec(_class = (_temp = _class2 =
/*#__PURE__*/
function (_PureComponent) {
(0, _inherits2.default)(FileCard, _PureComponent);
function FileCard() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, FileCard);
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)(FileCard)).call.apply(_getPrototypeOf2, [this].concat(args)));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleConfirmSettings",
/*#__PURE__*/
function () {
var _ref = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee(event) {
var _this$props, file, openFileDialog, putFile, change;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
event.stopPropagation();
_this$props = _this.props, file = _this$props.file, openFileDialog = _this$props.openFileDialog, putFile = _this$props.putFile;
_context.next = 4;
return openFileDialog(_FileDialog.PreferenceDialog, {
content: file
});
case 4:
change = _context.sent;
if (change) {
putFile(file, file.set(change));
}
case 6:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
return function (_x) {
return _ref.apply(this, arguments);
};
}());
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleNameChange", function (event, name) {
var _this$props2 = _this.props,
file = _this$props2.file,
putFile = _this$props2.putFile;
return putFile(file, file.rename(name));
});
return _this;
}
(0, _createClass2.default)(FileCard, [{
key: "render",
value: function render() {
var dcn = getCn(this.props);
var _this$props3 = this.props,
file = _this$props3.file,
handleFileSelect = _this$props3.handleFileSelect,
connectDragSource = _this$props3.connectDragSource,
connectDragPreview = _this$props3.connectDragPreview;
return connectDragPreview(_react.default.createElement("div", {
className: dcn.root
}, _react.default.createElement(_Paper.default, {
onClick: function onClick() {
return handleFileSelect(file);
},
className: dcn.card
}, connectDragSource(_react.default.createElement("div", {
className: dcn.dragHandle
}, _react.default.createElement(_DragHandle.default, null))), _react.default.createElement("div", {
className: cn.container
}, _react.default.createElement(_Filename.default, {
file: file,
onChange: this.handleNameChange
})), _react.default.createElement(_IconButton.default, {
onClick: this.handleConfirmSettings
}, _react.default.createElement(_Settings.default, null)))));
}
}]);
return FileCard;
}(_react.PureComponent), (0, _defineProperty2.default)(_class2, "propTypes", {
theme: _propTypes.default.object.isRequired,
file: _propTypes.default.object.isRequired,
handleFileSelect: _propTypes.default.func.isRequired,
openFileDialog: _propTypes.default.func.isRequired,
putFile: _propTypes.default.func.isRequired,
connectDragSource: _propTypes.default.func.isRequired,
connectDragPreview: _propTypes.default.func.isRequired,
isDragging: _propTypes.default.bool.isRequired
}), _temp)) || _class);
var spec = {
beginDrag: function beginDrag(props) {
return {
files: [props.file]
};
}
};
var collect = function collect(connect, monitor) {
return {
connectDragSource: connect.dragSource(),
connectDragPreview: connect.dragPreview(),
isDragging: monitor.isDragging()
};
};
var _default = (0, _reactDnd.DragSource)(_dragTypes.default.File, spec, collect)(FileCard);
exports.default = _default;