UNPKG

feeles-ide

Version:

The hackable and serializable IDE to make learning material

143 lines (110 loc) 4.64 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 _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 _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton")); var _reactDnd = require("react-dnd"); var _Computer = _interopRequireDefault(require("@material-ui/icons/Computer")); var _dragTypes = _interopRequireDefault(require("../../utils/dragTypes")); var _dec, _class, _class2, _temp; var cn = { input: (0, _typestyle.style)({ display: 'none' }) }; var getCn = function getCn(props) { return { icon: (0, _typestyle.style)({ borderWidth: 0, borderStyle: 'solid', borderColor: 'transparent', borderRadius: 2, borderTopWidth: props.isOver ? props.theme.spacing.unit : 0, backgroundColor: props.isOver ? props.theme.palette.disabledColor : 'transparent' }) }; }; var _DesktopFile = (_dec = (0, _styles.withTheme)(), _dec(_class = (_temp = _class2 = /*#__PURE__*/ function (_PureComponent) { (0, _inherits2.default)(_DesktopFile, _PureComponent); function _DesktopFile() { var _getPrototypeOf2; var _this; (0, _classCallCheck2.default)(this, _DesktopFile); 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)(_DesktopFile)).call.apply(_getPrototypeOf2, [this].concat(args))); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleChange", function (event) { _this.props.onOpen(Array.from(event.target.files)); }); return _this; } (0, _createClass2.default)(_DesktopFile, [{ key: "render", value: function render() { var _this2 = this; var dcn = getCn(this.props); var connectDropTarget = this.props.connectDropTarget; return connectDropTarget(_react.default.createElement("div", null, _react.default.createElement("input", { multiple: true, type: "file", className: cn.input, ref: function ref(_ref) { return _ref && (_this2.input = _ref); }, onChange: this.handleChange }), _react.default.createElement(_IconButton.default, { className: dcn.icon, onClick: function onClick() { return _this2.input && _this2.input.click(); } }, _react.default.createElement(_Computer.default, null)))); } }]); return _DesktopFile; }(_react.PureComponent), (0, _defineProperty2.default)(_class2, "propTypes", { theme: _propTypes.default.object.isRequired, onOpen: _propTypes.default.func.isRequired, saveAs: _propTypes.default.func.isRequired, connectDropTarget: _propTypes.default.func.isRequired, isOver: _propTypes.default.bool.isRequired }), _temp)) || _class); var spec = { drop: function drop(props, monitor, component) { var _monitor$getItem = monitor.getItem(), files = _monitor$getItem.files; files.reduce(function (p, c) { return p.then(function () { return component.props.saveAs(c); }); }, Promise.resolve()); return {}; } }; var collect = function collect(connect, monitor) { return { connectDropTarget: connect.dropTarget(), isOver: monitor.isOver({ shallow: true }) }; }; var DesktopFile = (0, _reactDnd.DropTarget)(_dragTypes.default.File, spec, collect)(_DesktopFile); var _default = DesktopFile; exports.default = _default;