feeles-ide
Version:
The hackable and serializable IDE to make learning material
170 lines (143 loc) • 5.12 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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _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 _Select = _interopRequireDefault(require("@material-ui/core/Select"));
var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
var MimeTypes = {
'text/javascript': '.js',
'text/x-markdown': '.md',
'application/json': '.json',
'text/html': '.html',
'text/css': '.css',
'text/plain': '',
'text/x-glsl': '.sort'
};
var getUniqueId = function (i) {
return function () {
return ++i;
};
}(0);
var cn = {
dropDown: (0, _typestyle.style)({
height: 43
})
};
var FilenameInput =
/*#__PURE__*/
function (_Component) {
(0, _inherits2.default)(FilenameInput, _Component);
function FilenameInput(props) {
var _this;
(0, _classCallCheck2.default)(this, FilenameInput);
_this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(FilenameInput).call(this, props));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "state", {
name: _this.props.defaultName || 'filename',
type: _this.props.defaultType || 'text/javascript'
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleNameChange", function (event) {
_this.setState({
name: event.target.value
});
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleTypeChange", function (event) {
_this.setState({
type: event.target.value
});
});
_this.id = 'FILENAME_INPUT_' + getUniqueId();
return _this;
}
(0, _createClass2.default)(FilenameInput, [{
key: "componentDidMount",
value: function componentDidMount() {
var _this2 = this;
if (this.input) {
this.timer = window.setTimeout(function () {
_this2.input.focus();
_this2.input.select();
}, 100);
}
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
if (this.timer) {
window.clearTimeout(this.timer);
}
}
}, {
key: "render",
value: function render() {
var _this3 = this;
var _this$state = this.state,
name = _this$state.name,
type = _this$state.type;
var disabled = this.props.disabled;
var style = this.props.style;
return _react.default.createElement("div", {
style: style
}, _react.default.createElement(_TextField.default, {
id: this.id,
ref: function ref(textField) {
return _this3.input = textField && textField.input;
}
}, _react.default.createElement("input", {
autoFocus: true,
defaultValue: name,
disabled: disabled,
onChange: this.handleNameChange
})), _react.default.createElement(_Select.default, {
value: type,
disabled: disabled,
onChange: this.handleTypeChange,
className: cn.dropDown
}, Object.keys(MimeTypes).map(function (type) {
return _react.default.createElement(_MenuItem.default, {
key: type,
value: type
}, MimeTypes[type]);
})));
}
}, {
key: "value",
get: function get() {
var _this$state2 = this.state,
name = _this$state2.name,
type = _this$state2.type;
return name + MimeTypes[type];
}
}, {
key: "name",
get: function get() {
return this.state.name;
}
}, {
key: "type",
get: function get() {
return this.state.type;
}
}]);
return FilenameInput;
}(_react.Component);
exports.default = FilenameInput;
(0, _defineProperty2.default)(FilenameInput, "propTypes", {
defaultName: _propTypes.default.string,
defaultType: _propTypes.default.string,
disabled: _propTypes.default.bool,
style: _propTypes.default.object
});