UNPKG

feeles-ide

Version:

The hackable and serializable IDE to make learning material

215 lines (173 loc) 7.4 kB
"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;