UNPKG

feeles-ide

Version:

The hackable and serializable IDE to make learning material

223 lines (181 loc) 7.25 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 _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray")); 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 _Checkbox = _interopRequireDefault(require("@material-ui/core/Checkbox")); var _EditableLabel = _interopRequireDefault(require("../../jsx/EditableLabel")); var cn = { root: (0, _typestyle.style)({ width: '100%', display: 'flex', flexWrap: 'wrap', alignItems: 'center', paddingTop: 12, paddingBottom: 12 }), key: (0, _typestyle.style)({ flex: '1 1 auto', maxWidth: 100 }), value: (0, _typestyle.style)({ flex: '1 1 auto', margin: '0 4px' }), tooltip: (0, _typestyle.style)({ flex: '1 1 auto', fontSize: '.8em', maxWidth: 140 }), checkbox: (0, _typestyle.style)({ width: 40 }), numberField: (0, _typestyle.style)({ width: 100 }), stringField: (0, _typestyle.style)({ width: 200 }) }; var EnvItem = /*#__PURE__*/ function (_PureComponent) { (0, _inherits2.default)(EnvItem, _PureComponent); function EnvItem() { var _getPrototypeOf2; var _this; (0, _classCallCheck2.default)(this, EnvItem); 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)(EnvItem)).call.apply(_getPrototypeOf2, [this].concat(args))); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "changeKey", function (key) { var _updateEnv; var _this$props = _this.props, itemKey = _this$props.itemKey, updateEnv = _this$props.updateEnv; var _this$props$item = (0, _toArray2.default)(_this.props.item), item = _this$props$item.slice(0); updateEnv((_updateEnv = {}, (0, _defineProperty2.default)(_updateEnv, itemKey, undefined), (0, _defineProperty2.default)(_updateEnv, key, item), _updateEnv)); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "changeValue", function (value) { var _this$props2 = _this.props, itemKey = _this$props2.itemKey, updateEnv = _this$props2.updateEnv; var _this$props$item2 = (0, _slicedToArray2.default)(_this.props.item, 3), type = _this$props$item2[1], tooltip = _this$props$item2[2]; var item = [value, type, tooltip]; updateEnv((0, _defineProperty2.default)({}, itemKey, item)); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "changeTooltip", function (tooltip) { var _this$props3 = _this.props, itemKey = _this$props3.itemKey, updateEnv = _this$props3.updateEnv; var _this$props$item3 = (0, _slicedToArray2.default)(_this.props.item, 2), value = _this$props$item3[0], type = _this$props$item3[1]; var item = [value, type, tooltip]; updateEnv((0, _defineProperty2.default)({}, itemKey, item)); }); return _this; } (0, _createClass2.default)(EnvItem, [{ key: "render", value: function render() { var _this$props4 = this.props, itemKey = _this$props4.itemKey, localization = _this$props4.localization; var _this$props$item4 = (0, _slicedToArray2.default)(this.props.item, 3), value = _this$props$item4[0], type = _this$props$item4[1], tooltip = _this$props$item4[2]; return _react.default.createElement("div", { className: cn.root }, _react.default.createElement(_EditableLabel.default, { id: "tf1", className: cn.key, defaultValue: itemKey, tapTwiceQuickly: localization.common.tapTwiceQuickly, onEditEnd: this.changeKey }), _react.default.createElement("div", { className: cn.value }, _react.default.createElement(Configurable, { type: type, value: value, onChange: this.changeValue })), _react.default.createElement(_EditableLabel.default, { id: "tf2", className: cn.tooltip, defaultValue: tooltip, tapTwiceQuickly: localization.common.tapTwiceQuickly, onEditEnd: this.changeTooltip })); } }]); return EnvItem; }(_react.PureComponent); exports.default = EnvItem; (0, _defineProperty2.default)(EnvItem, "propTypes", { item: _propTypes.default.array.isRequired, itemKey: _propTypes.default.any.isRequired, updateEnv: _propTypes.default.func.isRequired, localization: _propTypes.default.object.isRequired }); var Configurable = function Configurable(props) { switch (props.type) { case 'boolean': return _react.default.createElement(_Checkbox.default, { className: cn.checkbox, defaultChecked: props.value, onCheck: function onCheck(e, value) { return props.onChange(value); } }); case 'number': return _react.default.createElement(_TextField.default, { id: "tf", className: cn.numberField, defaultValue: props.value // inputStyle={{ textAlign: 'right' }} , onChange: function onChange(e) { var float = parseFloat(e.target.value); if (!isNaN(float)) { props.onChange(float); } } }); case 'string': return _react.default.createElement(_TextField.default, { multiLine: true, id: "tf", className: cn.stringField, defaultValue: props.value, onChange: function onChange(e) { return props.onChange(e.target.value); } }); default: return null; } }; Configurable.propTypes = { type: _propTypes.default.string.isRequired, value: _propTypes.default.any.isRequired, onChange: _propTypes.default.func.isRequired };