feeles-ide
Version:
The hackable and serializable IDE to make learning material
227 lines (184 loc) • 8.62 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
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 _typestyle = require("typestyle");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
var _Add = _interopRequireDefault(require("@material-ui/icons/Add"));
var _includes = _interopRequireDefault(require("lodash/includes"));
var _CardWindow = _interopRequireDefault(require("../CardWindow"));
var _CardFloatingBar = _interopRequireDefault(require("../CardFloatingBar"));
var _File = require("../../File/");
var _FileDialog = require("../../FileDialog/");
var _Root = _interopRequireDefault(require("./Root"));
var _SearchBar = _interopRequireDefault(require("./SearchBar"));
var cn = {
button: (0, _typestyle.style)({
margin: 16,
alignSelf: 'flex-end'
})
};
var HierarchyCard =
/*#__PURE__*/
function (_PureComponent) {
(0, _inherits2.default)(HierarchyCard, _PureComponent);
function HierarchyCard() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, HierarchyCard);
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)(HierarchyCard)).call.apply(_getPrototypeOf2, [this].concat(args)));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "state", {
openedPaths: [''],
filter: function filter() {
return false;
}
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleNativeDrop", function (files) {
var dir = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
var addFile = _this.props.addFile;
Promise.all(files.map(_File.makeFromFile)).then(function (files) {
files = files.map(function (file) {
return dir ? file.move(dir.path) : file;
});
return Promise.all(files.map(addFile));
}).then(function (files) {
files = files.slice(0, 5);
return Promise.all(files.map(_this.handleFileSelect));
});
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleDirToggle", function (dir) {
var openedPaths = _this.isDirOpened(dir, _this.state.openedPaths.filter(function (path) {
return path !== dir.path;
}), _this.state.openedPaths.concat(dir.path));
_this.setState({
openedPaths: openedPaths
});
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleFileMove", function (file, dir) {
var putFile = _this.props.putFile;
return putFile(file, file.move(dir.path));
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleFileSelect", function (file) {
_this.props.globalEvent.emit('message.editor', {
data: {
value: file.name
}
});
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "isDirOpened", function (dir, passed, failed) {
return (0, _includes.default)(_this.state.openedPaths, dir.path) ? passed : failed;
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleDelete", function () {
var _this$props;
(_this$props = _this.props).deleteFile.apply(_this$props, (0, _toConsumableArray2.default)(_this.props.files.filter(_this.state.filter)));
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleAdd",
/*#__PURE__*/
(0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
var file;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return _this.props.openFileDialog(_FileDialog.AddDialog);
case 2:
file = _context.sent;
if (!file) {
_context.next = 8;
break;
}
_context.next = 6;
return _this.props.addFile(file);
case 6:
_context.next = 8;
return _this.handleFileSelect(file);
case 8:
case "end":
return _context.stop();
}
}
}, _callee, this);
})));
return _this;
}
(0, _createClass2.default)(HierarchyCard, [{
key: "render",
value: function render() {
var _this2 = this;
var _this$props2 = this.props,
files = _this$props2.files,
putFile = _this$props2.putFile,
openFileDialog = _this$props2.openFileDialog,
localization = _this$props2.localization;
var filter = this.state.filter;
var transfer = {
openFileDialog: openFileDialog,
putFile: putFile,
isDirOpened: this.isDirOpened,
handleFileSelect: this.handleFileSelect,
handleDirToggle: this.handleDirToggle,
handleFileMove: this.handleFileMove,
handleNativeDrop: this.handleNativeDrop
};
return _react.default.createElement(_CardWindow.default, (0, _extends2.default)({}, this.props.cardPropsBag, {
fit: true
}), _react.default.createElement(_CardFloatingBar.default, null, this.props.localization.hierarchyCard.title), _react.default.createElement(_SearchBar.default, {
files: files,
filterRef: function filterRef(filter) {
return _this2.setState({
filter: filter
});
},
putFile: putFile,
deleteAll: this.handleDelete,
onOpen: this.handleNativeDrop,
openFileDialog: openFileDialog,
saveAs: this.props.saveAs,
localization: localization
}), _react.default.createElement(_Root.default, (0, _extends2.default)({
files: files.filter(filter)
}, transfer)), _react.default.createElement(_Button.default, {
variant: "contained",
mini: true,
className: cn.button,
onClick: this.handleAdd
}, _react.default.createElement(_Add.default, null)));
}
}]);
return HierarchyCard;
}(_react.PureComponent);
exports.default = HierarchyCard;
(0, _defineProperty2.default)(HierarchyCard, "propTypes", {
files: _propTypes.default.array.isRequired,
addFile: _propTypes.default.func.isRequired,
putFile: _propTypes.default.func.isRequired,
deleteFile: _propTypes.default.func.isRequired,
findFile: _propTypes.default.func.isRequired,
saveAs: _propTypes.default.func.isRequired,
openFileDialog: _propTypes.default.func.isRequired,
localization: _propTypes.default.object.isRequired,
cardPropsBag: _propTypes.default.object.isRequired,
globalEvent: _propTypes.default.object.isRequired
});