feeles-ide
Version:
The hackable and serializable IDE to make learning material
223 lines (181 loc) • 7.25 kB
JavaScript
"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
};