UNPKG

feeles-ide

Version:

The hackable and serializable IDE to make learning material

170 lines (143 loc) 5.12 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 _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 });