UNPKG

feeles-ide

Version:

The hackable and serializable IDE to make learning material

153 lines (120 loc) 4.94 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 _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 _propTypes = _interopRequireDefault(require("prop-types")); var _typestyle = require("typestyle"); var _TextField = _interopRequireDefault(require("@material-ui/core/TextField")); var _Typography = _interopRequireDefault(require("@material-ui/core/Typography")); var _File = require("../../File/"); var cn = { root: (0, _typestyle.style)({ display: 'flex', justifyContent: 'flex-start', alignItems: 'baseline' }), textField: (0, _typestyle.style)({ width: 'auto', flex: '0 1 auto', height: 40 }) }; var Filename = /*#__PURE__*/ function (_PureComponent) { (0, _inherits2.default)(Filename, _PureComponent); function Filename() { var _getPrototypeOf2; var _this; (0, _classCallCheck2.default)(this, Filename); 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)(Filename)).call.apply(_getPrototypeOf2, [this].concat(args))); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "state", { isEditing: false }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleInput", function (ref) { var _this$props = _this.props, file = _this$props.file, onChange = _this$props.onChange; if (!ref) return; ref.input.onchange = function (_ref) { var target = _ref.target; onChange(file, target.value); _this.setState({ isEditing: false }); }; ref.input.onblur = function () { _this.setState({ isEditing: false }); }; }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "touchFlag", false); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleDoubleTap", function (event) { event.stopPropagation(); if (_this.touchFlag) { _this.setState({ isEditing: true }); return; } _this.touchFlag = true; setTimeout(function () { return _this.touchFlag = false; }, 200); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleTextFieldTap", function (event) { event.stopPropagation(); }); return _this; } (0, _createClass2.default)(Filename, [{ key: "render", value: function render() { var file = this.props.file; var isEditing = this.state.isEditing; var _separate = (0, _File.separate)(file.name), path = _separate.path, plain = _separate.plain, ext = _separate.ext, name = _separate.name; return _react.default.createElement("div", { className: cn.root }, _react.default.createElement(_Typography.default, { color: "textSecondary" }, path), isEditing ? _react.default.createElement(_TextField.default, { id: name, defaultValue: plain, ref: this.handleInput, className: cn.textField, onClick: this.handleTextFieldTap }) : _react.default.createElement(_Typography.default, { color: "textPrimary", onClick: this.handleDoubleTap }, plain), _react.default.createElement(_Typography.default, { color: "textSecondary", variant: "caption" }, ext)); } }]); return Filename; }(_react.PureComponent); exports.default = Filename; (0, _defineProperty2.default)(Filename, "propTypes", { file: _propTypes.default.object.isRequired, onChange: _propTypes.default.func.isRequired });