unveil
Version:
A React-based Reactive Presentation Framework
50 lines (37 loc) • 3.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _rxjs = require('rxjs');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = _react2.default.createClass({
displayName: 'KeyControls',
propTypes: {
navigator: _react2.default.PropTypes.object.isRequired
},
mappings: {
37: 'left',
38: 'up',
39: 'right',
40: 'down'
},
getInitialState: function getInitialState() {
return { key: 'none' };
},
componentDidMount: function componentDidMount() {
var _this = this;
_rxjs.Observable.fromEvent(document, 'keyup').pluck('keyCode').map(function (code) {
return _this.mappings[code];
}).filter(function (motion) {
return motion !== undefined;
}).do(function (key) {
this.setState({ key: key });
}.bind(this)).subscribe(this.props.navigator.next);
},
render: function render() {
return _react2.default.createElement('div', null);
}
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0tleUNvbnRyb2xzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O2tCQUllLGdCQUFNLFdBQU4sQ0FBa0I7OztBQUUvQixhQUFXO0FBQ1QsZUFBVyxnQkFBTSxTQUFOLENBQWdCLE1BQWhCLENBQXVCLFVBQXZCO0dBRGI7O0FBSUEsWUFBVTtBQUNSLFFBQUksTUFBSjtBQUNBLFFBQUksSUFBSjtBQUNBLFFBQUksT0FBSjtBQUNBLFFBQUksTUFBSjtHQUpGOztBQU9BLG1CQUFpQjtXQUFPLEVBQUUsS0FBSyxNQUFMO0dBQVQ7O0FBRWpCLHFCQUFtQiw2QkFBWTs7O0FBQzdCLHFCQUFXLFNBQVgsQ0FBcUIsUUFBckIsRUFBK0IsT0FBL0IsRUFDRyxLQURILENBQ1MsU0FEVCxFQUVHLEdBRkgsQ0FFUSxVQUFDLElBQUQ7YUFBVSxNQUFLLFFBQUwsQ0FBYyxJQUFkO0tBQVYsQ0FGUixDQUdHLE1BSEgsQ0FHVyxVQUFDLE1BQUQ7YUFBWSxXQUFXLFNBQVg7S0FBWixDQUhYLENBSUcsRUFKSCxDQUlPLFVBQVUsR0FBVixFQUFlO0FBQ2xCLFdBQUssUUFBTCxDQUFjLEVBQUMsUUFBRCxFQUFkLEVBRGtCO0tBQWYsQ0FFSCxJQUZHLENBRUUsSUFGRixDQUpQLEVBT0csU0FQSCxDQU9hLEtBQUssS0FBTCxDQUFXLFNBQVgsQ0FBcUIsSUFBckIsQ0FQYixDQUQ2QjtHQUFaOztBQVduQixVQUFRLGtCQUFZO0FBQ2xCLFdBQVEsMENBQVIsQ0FEa0I7R0FBWjs7Q0ExQksiLCJmaWxlIjoiS2V5Q29udHJvbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBkZWZhdWx0IFJlYWN0LmNyZWF0ZUNsYXNzKHtcblxuICBwcm9wVHlwZXM6IHtcbiAgICBuYXZpZ2F0b3I6IFJlYWN0LlByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxuICB9LFxuXG4gIG1hcHBpbmdzOiB7XG4gICAgMzc6ICdsZWZ0JyxcbiAgICAzODogJ3VwJyxcbiAgICAzOTogJ3JpZ2h0JyxcbiAgICA0MDogJ2Rvd24nXG4gIH0sXG5cbiAgZ2V0SW5pdGlhbFN0YXRlOiAoKSA9PiAoeyBrZXk6ICdub25lJyB9KSxcblxuICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24gKCkge1xuICAgIE9ic2VydmFibGUuZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5dXAnKVxuICAgICAgLnBsdWNrKCdrZXlDb2RlJylcbiAgICAgIC5tYXAoIChjb2RlKSA9PiB0aGlzLm1hcHBpbmdzW2NvZGVdIClcbiAgICAgIC5maWx0ZXIoIChtb3Rpb24pID0+IG1vdGlvbiAhPT0gdW5kZWZpbmVkIClcbiAgICAgIC5kbyggZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtrZXl9KTtcbiAgICAgIH0uYmluZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5wcm9wcy5uYXZpZ2F0b3IubmV4dCk7XG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICg8ZGl2PjwvZGl2Pik7XG4gIH1cblxufSk7XG4iXX0=