UNPKG

feeles-ide

Version:

The hackable and serializable IDE to make learning material

227 lines (184 loc) 8.62 kB
"use strict"; 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 });