tandem-front-end
Version:
Visual editor for web components
63 lines • 2.59 kB
JavaScript
;
var __assign = (this && this.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
t[p[i]] = s[p[i]];
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var ReactDOM = require("react-dom");
var recompose_1 = require("recompose");
exports.withInputHandlers = function () {
return recompose_1.compose(recompose_1.withHandlers({
onKeyDown: function (_a) {
var onChange = _a.onChange, onChangeComplete = _a.onChangeComplete;
return function (event) {
var nativeEvent = event.nativeEvent;
setImmediate(function () {
var key = nativeEvent.key, value = nativeEvent.target.value;
if (onChange) {
onChange(value || undefined);
}
if (key === "Enter" && onChangeComplete) {
onChangeComplete(value || "");
}
});
};
},
onBlur: function (_a) {
var onChangeComplete = _a.onChangeComplete;
return function (event) {
if (onChangeComplete) {
onChangeComplete(event.target.value);
}
};
}
}), recompose_1.lifecycle({
componentDidUpdate: function (props) {
if (props.value !== this.props.value) {
var input = ReactDOM.findDOMNode(this);
if (document.activeElement !== input) {
input.value = this.props.value == null ? "" : this.props.value;
}
}
}
}));
};
exports.default = recompose_1.compose(recompose_1.pure, exports.withInputHandlers(), function (Base) { return function (_a) {
var value = _a.value, onChange = _a.onChange, rest = __rest(_a, ["value", "onChange"]);
return React.createElement(Base, __assign({}, rest, { defaultValue: value }));
}; });
//# sourceMappingURL=controller.js.map